From 5e80c41538b9d9b414bd45039311694a780b8061 Mon Sep 17 00:00:00 2001 From: Kilian Hofmann Date: Sun, 4 Sep 2022 22:15:36 +0200 Subject: [PATCH] Platform openSSL --- openSSL/lin32/include/openssl/aes.h | 92 + openSSL/lin32/include/openssl/asn1.h | 886 ++++ openSSL/lin32/include/openssl/asn1_mac.h | 10 + openSSL/lin32/include/openssl/asn1err.h | 256 + openSSL/lin32/include/openssl/asn1t.h | 945 ++++ openSSL/lin32/include/openssl/async.h | 76 + openSSL/lin32/include/openssl/asyncerr.h | 42 + openSSL/lin32/include/openssl/bio.h | 801 +++ openSSL/lin32/include/openssl/bioerr.h | 124 + openSSL/lin32/include/openssl/blowfish.h | 61 + openSSL/lin32/include/openssl/bn.h | 539 ++ openSSL/lin32/include/openssl/bnerr.h | 100 + openSSL/lin32/include/openssl/buffer.h | 58 + openSSL/lin32/include/openssl/buffererr.h | 34 + openSSL/lin32/include/openssl/camellia.h | 83 + openSSL/lin32/include/openssl/cast.h | 53 + openSSL/lin32/include/openssl/cmac.h | 41 + openSSL/lin32/include/openssl/cms.h | 339 ++ openSSL/lin32/include/openssl/cmserr.h | 202 + openSSL/lin32/include/openssl/comp.h | 53 + openSSL/lin32/include/openssl/comperr.h | 44 + openSSL/lin32/include/openssl/conf.h | 168 + openSSL/lin32/include/openssl/conf_api.h | 40 + openSSL/lin32/include/openssl/conferr.h | 76 + openSSL/lin32/include/openssl/crypto.h | 445 ++ openSSL/lin32/include/openssl/cryptoerr.h | 57 + openSSL/lin32/include/openssl/ct.h | 474 ++ openSSL/lin32/include/openssl/cterr.h | 80 + openSSL/lin32/include/openssl/des.h | 174 + openSSL/lin32/include/openssl/dh.h | 340 ++ openSSL/lin32/include/openssl/dherr.h | 88 + openSSL/lin32/include/openssl/dsa.h | 244 + openSSL/lin32/include/openssl/dsaerr.h | 72 + openSSL/lin32/include/openssl/dtls1.h | 55 + openSSL/lin32/include/openssl/e_os2.h | 301 ++ openSSL/lin32/include/openssl/ebcdic.h | 33 + openSSL/lin32/include/openssl/ec.h | 1484 ++++++ openSSL/lin32/include/openssl/ecdh.h | 10 + openSSL/lin32/include/openssl/ecdsa.h | 10 + openSSL/lin32/include/openssl/ecerr.h | 276 + openSSL/lin32/include/openssl/engine.h | 752 +++ openSSL/lin32/include/openssl/engineerr.h | 111 + openSSL/lin32/include/openssl/err.h | 274 + openSSL/lin32/include/openssl/evp.h | 1666 ++++++ openSSL/lin32/include/openssl/evperr.h | 204 + openSSL/lin32/include/openssl/hmac.h | 51 + openSSL/lin32/include/openssl/idea.h | 64 + openSSL/lin32/include/openssl/kdf.h | 97 + openSSL/lin32/include/openssl/kdferr.h | 55 + openSSL/lin32/include/openssl/lhash.h | 241 + openSSL/lin32/include/openssl/md2.h | 44 + openSSL/lin32/include/openssl/md4.h | 51 + openSSL/lin32/include/openssl/md5.h | 50 + openSSL/lin32/include/openssl/mdc2.h | 42 + openSSL/lin32/include/openssl/modes.h | 208 + openSSL/lin32/include/openssl/obj_mac.h | 5198 +++++++++++++++++++ openSSL/lin32/include/openssl/objects.h | 175 + openSSL/lin32/include/openssl/objectserr.h | 42 + openSSL/lin32/include/openssl/ocsp.h | 352 ++ openSSL/lin32/include/openssl/ocsperr.h | 78 + openSSL/lin32/include/openssl/opensslconf.h | 197 + openSSL/lin32/include/openssl/opensslv.h | 101 + openSSL/lin32/include/openssl/ossl_typ.h | 197 + openSSL/lin32/include/openssl/pem.h | 378 ++ openSSL/lin32/include/openssl/pem2.h | 13 + openSSL/lin32/include/openssl/pemerr.h | 105 + openSSL/lin32/include/openssl/pkcs12.h | 223 + openSSL/lin32/include/openssl/pkcs12err.h | 81 + openSSL/lin32/include/openssl/pkcs7.h | 319 ++ openSSL/lin32/include/openssl/pkcs7err.h | 103 + openSSL/lin32/include/openssl/rand.h | 77 + openSSL/lin32/include/openssl/rand_drbg.h | 130 + openSSL/lin32/include/openssl/randerr.h | 94 + openSSL/lin32/include/openssl/rc2.h | 51 + openSSL/lin32/include/openssl/rc4.h | 36 + openSSL/lin32/include/openssl/rc5.h | 63 + openSSL/lin32/include/openssl/ripemd.h | 47 + openSSL/lin32/include/openssl/rsa.h | 513 ++ openSSL/lin32/include/openssl/rsaerr.h | 167 + openSSL/lin32/include/openssl/safestack.h | 207 + openSSL/lin32/include/openssl/seed.h | 96 + openSSL/lin32/include/openssl/sha.h | 119 + openSSL/lin32/include/openssl/srp.h | 135 + openSSL/lin32/include/openssl/srtp.h | 50 + openSSL/lin32/include/openssl/ssl.h | 2448 +++++++++ openSSL/lin32/include/openssl/ssl2.h | 24 + openSSL/lin32/include/openssl/ssl3.h | 342 ++ openSSL/lin32/include/openssl/sslerr.h | 776 +++ openSSL/lin32/include/openssl/stack.h | 83 + openSSL/lin32/include/openssl/store.h | 266 + openSSL/lin32/include/openssl/storeerr.h | 91 + openSSL/lin32/include/openssl/symhacks.h | 37 + openSSL/lin32/include/openssl/tls1.h | 1237 +++++ openSSL/lin32/include/openssl/ts.h | 559 ++ openSSL/lin32/include/openssl/tserr.h | 132 + openSSL/lin32/include/openssl/txt_db.h | 57 + openSSL/lin32/include/openssl/ui.h | 368 ++ openSSL/lin32/include/openssl/uierr.h | 65 + openSSL/lin32/include/openssl/whrlpool.h | 48 + openSSL/lin32/include/openssl/x509.h | 1050 ++++ openSSL/lin32/include/openssl/x509_vfy.h | 632 +++ openSSL/lin32/include/openssl/x509err.h | 129 + openSSL/lin32/include/openssl/x509v3.h | 938 ++++ openSSL/lin32/include/openssl/x509v3err.h | 164 + openSSL/lin32/libcrypto.so.1.1 | Bin 0 -> 3328356 bytes openSSL/lin32/libssl.so.1.1 | Bin 0 -> 727104 bytes openSSL/lin64/include/openssl/aes.h | 92 + openSSL/lin64/include/openssl/asn1.h | 886 ++++ openSSL/lin64/include/openssl/asn1_mac.h | 10 + openSSL/lin64/include/openssl/asn1err.h | 256 + openSSL/lin64/include/openssl/asn1t.h | 945 ++++ openSSL/lin64/include/openssl/async.h | 76 + openSSL/lin64/include/openssl/asyncerr.h | 42 + openSSL/lin64/include/openssl/bio.h | 801 +++ openSSL/lin64/include/openssl/bioerr.h | 124 + openSSL/lin64/include/openssl/blowfish.h | 61 + openSSL/lin64/include/openssl/bn.h | 539 ++ openSSL/lin64/include/openssl/bnerr.h | 100 + openSSL/lin64/include/openssl/buffer.h | 58 + openSSL/lin64/include/openssl/buffererr.h | 34 + openSSL/lin64/include/openssl/camellia.h | 83 + openSSL/lin64/include/openssl/cast.h | 53 + openSSL/lin64/include/openssl/cmac.h | 41 + openSSL/lin64/include/openssl/cms.h | 339 ++ openSSL/lin64/include/openssl/cmserr.h | 202 + openSSL/lin64/include/openssl/comp.h | 53 + openSSL/lin64/include/openssl/comperr.h | 44 + openSSL/lin64/include/openssl/conf.h | 168 + openSSL/lin64/include/openssl/conf_api.h | 40 + openSSL/lin64/include/openssl/conferr.h | 76 + openSSL/lin64/include/openssl/crypto.h | 445 ++ openSSL/lin64/include/openssl/cryptoerr.h | 57 + openSSL/lin64/include/openssl/ct.h | 474 ++ openSSL/lin64/include/openssl/cterr.h | 80 + openSSL/lin64/include/openssl/des.h | 174 + openSSL/lin64/include/openssl/dh.h | 340 ++ openSSL/lin64/include/openssl/dherr.h | 88 + openSSL/lin64/include/openssl/dsa.h | 244 + openSSL/lin64/include/openssl/dsaerr.h | 72 + openSSL/lin64/include/openssl/dtls1.h | 55 + openSSL/lin64/include/openssl/e_os2.h | 301 ++ openSSL/lin64/include/openssl/ebcdic.h | 33 + openSSL/lin64/include/openssl/ec.h | 1484 ++++++ openSSL/lin64/include/openssl/ecdh.h | 10 + openSSL/lin64/include/openssl/ecdsa.h | 10 + openSSL/lin64/include/openssl/ecerr.h | 276 + openSSL/lin64/include/openssl/engine.h | 752 +++ openSSL/lin64/include/openssl/engineerr.h | 111 + openSSL/lin64/include/openssl/err.h | 274 + openSSL/lin64/include/openssl/evp.h | 1666 ++++++ openSSL/lin64/include/openssl/evperr.h | 204 + openSSL/lin64/include/openssl/hmac.h | 51 + openSSL/lin64/include/openssl/idea.h | 64 + openSSL/lin64/include/openssl/kdf.h | 97 + openSSL/lin64/include/openssl/kdferr.h | 55 + openSSL/lin64/include/openssl/lhash.h | 241 + openSSL/lin64/include/openssl/md2.h | 44 + openSSL/lin64/include/openssl/md4.h | 51 + openSSL/lin64/include/openssl/md5.h | 50 + openSSL/lin64/include/openssl/mdc2.h | 42 + openSSL/lin64/include/openssl/modes.h | 208 + openSSL/lin64/include/openssl/obj_mac.h | 5198 +++++++++++++++++++ openSSL/lin64/include/openssl/objects.h | 175 + openSSL/lin64/include/openssl/objectserr.h | 42 + openSSL/lin64/include/openssl/ocsp.h | 352 ++ openSSL/lin64/include/openssl/ocsperr.h | 78 + openSSL/lin64/include/openssl/opensslconf.h | 197 + openSSL/lin64/include/openssl/opensslv.h | 101 + openSSL/lin64/include/openssl/ossl_typ.h | 197 + openSSL/lin64/include/openssl/pem.h | 378 ++ openSSL/lin64/include/openssl/pem2.h | 13 + openSSL/lin64/include/openssl/pemerr.h | 105 + openSSL/lin64/include/openssl/pkcs12.h | 223 + openSSL/lin64/include/openssl/pkcs12err.h | 81 + openSSL/lin64/include/openssl/pkcs7.h | 319 ++ openSSL/lin64/include/openssl/pkcs7err.h | 103 + openSSL/lin64/include/openssl/rand.h | 77 + openSSL/lin64/include/openssl/rand_drbg.h | 130 + openSSL/lin64/include/openssl/randerr.h | 94 + openSSL/lin64/include/openssl/rc2.h | 51 + openSSL/lin64/include/openssl/rc4.h | 36 + openSSL/lin64/include/openssl/rc5.h | 63 + openSSL/lin64/include/openssl/ripemd.h | 47 + openSSL/lin64/include/openssl/rsa.h | 513 ++ openSSL/lin64/include/openssl/rsaerr.h | 167 + openSSL/lin64/include/openssl/safestack.h | 207 + openSSL/lin64/include/openssl/seed.h | 96 + openSSL/lin64/include/openssl/sha.h | 119 + openSSL/lin64/include/openssl/srp.h | 135 + openSSL/lin64/include/openssl/srtp.h | 50 + openSSL/lin64/include/openssl/ssl.h | 2448 +++++++++ openSSL/lin64/include/openssl/ssl2.h | 24 + openSSL/lin64/include/openssl/ssl3.h | 342 ++ openSSL/lin64/include/openssl/sslerr.h | 776 +++ openSSL/lin64/include/openssl/stack.h | 83 + openSSL/lin64/include/openssl/store.h | 266 + openSSL/lin64/include/openssl/storeerr.h | 91 + openSSL/lin64/include/openssl/symhacks.h | 37 + openSSL/lin64/include/openssl/tls1.h | 1237 +++++ openSSL/lin64/include/openssl/ts.h | 559 ++ openSSL/lin64/include/openssl/tserr.h | 132 + openSSL/lin64/include/openssl/txt_db.h | 57 + openSSL/lin64/include/openssl/ui.h | 368 ++ openSSL/lin64/include/openssl/uierr.h | 65 + openSSL/lin64/include/openssl/whrlpool.h | 48 + openSSL/lin64/include/openssl/x509.h | 1050 ++++ openSSL/lin64/include/openssl/x509_vfy.h | 632 +++ openSSL/lin64/include/openssl/x509err.h | 129 + openSSL/lin64/include/openssl/x509v3.h | 938 ++++ openSSL/lin64/include/openssl/x509v3err.h | 164 + openSSL/lin64/libcrypto.so.1.1 | Bin 0 -> 3394496 bytes openSSL/lin64/libssl.so.1.1 | Bin 0 -> 706672 bytes openSSL/win64/include/openssl/aes.h | 92 + openSSL/win64/include/openssl/asn1.h | 886 ++++ openSSL/win64/include/openssl/asn1_mac.h | 10 + openSSL/win64/include/openssl/asn1err.h | 256 + openSSL/win64/include/openssl/asn1t.h | 945 ++++ openSSL/win64/include/openssl/async.h | 76 + openSSL/win64/include/openssl/asyncerr.h | 42 + openSSL/win64/include/openssl/bio.h | 801 +++ openSSL/win64/include/openssl/bioerr.h | 124 + openSSL/win64/include/openssl/blowfish.h | 61 + openSSL/win64/include/openssl/bn.h | 539 ++ openSSL/win64/include/openssl/bnerr.h | 100 + openSSL/win64/include/openssl/buffer.h | 58 + openSSL/win64/include/openssl/buffererr.h | 34 + openSSL/win64/include/openssl/camellia.h | 83 + openSSL/win64/include/openssl/cast.h | 53 + openSSL/win64/include/openssl/cmac.h | 41 + openSSL/win64/include/openssl/cms.h | 339 ++ openSSL/win64/include/openssl/cmserr.h | 202 + openSSL/win64/include/openssl/comp.h | 53 + openSSL/win64/include/openssl/comperr.h | 44 + openSSL/win64/include/openssl/conf.h | 168 + openSSL/win64/include/openssl/conf_api.h | 40 + openSSL/win64/include/openssl/conferr.h | 76 + openSSL/win64/include/openssl/crypto.h | 445 ++ openSSL/win64/include/openssl/cryptoerr.h | 57 + openSSL/win64/include/openssl/ct.h | 474 ++ openSSL/win64/include/openssl/cterr.h | 80 + openSSL/win64/include/openssl/des.h | 174 + openSSL/win64/include/openssl/dh.h | 340 ++ openSSL/win64/include/openssl/dherr.h | 88 + openSSL/win64/include/openssl/dsa.h | 244 + openSSL/win64/include/openssl/dsaerr.h | 72 + openSSL/win64/include/openssl/dtls1.h | 55 + openSSL/win64/include/openssl/e_os2.h | 301 ++ openSSL/win64/include/openssl/ebcdic.h | 33 + openSSL/win64/include/openssl/ec.h | 1484 ++++++ openSSL/win64/include/openssl/ecdh.h | 10 + openSSL/win64/include/openssl/ecdsa.h | 10 + openSSL/win64/include/openssl/ecerr.h | 276 + openSSL/win64/include/openssl/engine.h | 752 +++ openSSL/win64/include/openssl/engineerr.h | 111 + openSSL/win64/include/openssl/err.h | 274 + openSSL/win64/include/openssl/evp.h | 1666 ++++++ openSSL/win64/include/openssl/evperr.h | 204 + openSSL/win64/include/openssl/hmac.h | 51 + openSSL/win64/include/openssl/idea.h | 64 + openSSL/win64/include/openssl/kdf.h | 97 + openSSL/win64/include/openssl/kdferr.h | 55 + openSSL/win64/include/openssl/lhash.h | 241 + openSSL/win64/include/openssl/md2.h | 44 + openSSL/win64/include/openssl/md4.h | 51 + openSSL/win64/include/openssl/md5.h | 50 + openSSL/win64/include/openssl/mdc2.h | 42 + openSSL/win64/include/openssl/modes.h | 208 + openSSL/win64/include/openssl/obj_mac.h | 5198 +++++++++++++++++++ openSSL/win64/include/openssl/objects.h | 175 + openSSL/win64/include/openssl/objectserr.h | 42 + openSSL/win64/include/openssl/ocsp.h | 352 ++ openSSL/win64/include/openssl/ocsperr.h | 78 + openSSL/win64/include/openssl/opensslconf.h | 203 + openSSL/win64/include/openssl/opensslv.h | 101 + openSSL/win64/include/openssl/ossl_typ.h | 197 + openSSL/win64/include/openssl/pem.h | 378 ++ openSSL/win64/include/openssl/pem2.h | 13 + openSSL/win64/include/openssl/pemerr.h | 105 + openSSL/win64/include/openssl/pkcs12.h | 223 + openSSL/win64/include/openssl/pkcs12err.h | 81 + openSSL/win64/include/openssl/pkcs7.h | 319 ++ openSSL/win64/include/openssl/pkcs7err.h | 103 + openSSL/win64/include/openssl/rand.h | 77 + openSSL/win64/include/openssl/rand_drbg.h | 130 + openSSL/win64/include/openssl/randerr.h | 94 + openSSL/win64/include/openssl/rc2.h | 51 + openSSL/win64/include/openssl/rc4.h | 36 + openSSL/win64/include/openssl/rc5.h | 63 + openSSL/win64/include/openssl/ripemd.h | 47 + openSSL/win64/include/openssl/rsa.h | 513 ++ openSSL/win64/include/openssl/rsaerr.h | 167 + openSSL/win64/include/openssl/safestack.h | 207 + openSSL/win64/include/openssl/seed.h | 96 + openSSL/win64/include/openssl/sha.h | 119 + openSSL/win64/include/openssl/srp.h | 135 + openSSL/win64/include/openssl/srtp.h | 50 + openSSL/win64/include/openssl/ssl.h | 2448 +++++++++ openSSL/win64/include/openssl/ssl2.h | 24 + openSSL/win64/include/openssl/ssl3.h | 342 ++ openSSL/win64/include/openssl/sslerr.h | 776 +++ openSSL/win64/include/openssl/stack.h | 83 + openSSL/win64/include/openssl/store.h | 266 + openSSL/win64/include/openssl/storeerr.h | 91 + openSSL/win64/include/openssl/symhacks.h | 37 + openSSL/win64/include/openssl/tls1.h | 1237 +++++ openSSL/win64/include/openssl/ts.h | 559 ++ openSSL/win64/include/openssl/tserr.h | 132 + openSSL/win64/include/openssl/txt_db.h | 57 + openSSL/win64/include/openssl/ui.h | 368 ++ openSSL/win64/include/openssl/uierr.h | 65 + openSSL/win64/include/openssl/whrlpool.h | 48 + openSSL/win64/include/openssl/x509.h | 1050 ++++ openSSL/win64/include/openssl/x509_vfy.h | 632 +++ openSSL/win64/include/openssl/x509err.h | 129 + openSSL/win64/include/openssl/x509v3.h | 938 ++++ openSSL/win64/include/openssl/x509v3err.h | 164 + openSSL/win64/libcrypto-1_1-x64.dll | Bin 0 -> 2835456 bytes openSSL/win64/libssl-1_1-x64.dll | Bin 0 -> 616960 bytes 318 files changed, 95913 insertions(+) create mode 100644 openSSL/lin32/include/openssl/aes.h create mode 100644 openSSL/lin32/include/openssl/asn1.h create mode 100644 openSSL/lin32/include/openssl/asn1_mac.h create mode 100644 openSSL/lin32/include/openssl/asn1err.h create mode 100644 openSSL/lin32/include/openssl/asn1t.h create mode 100644 openSSL/lin32/include/openssl/async.h create mode 100644 openSSL/lin32/include/openssl/asyncerr.h create mode 100644 openSSL/lin32/include/openssl/bio.h create mode 100644 openSSL/lin32/include/openssl/bioerr.h create mode 100644 openSSL/lin32/include/openssl/blowfish.h create mode 100644 openSSL/lin32/include/openssl/bn.h create mode 100644 openSSL/lin32/include/openssl/bnerr.h create mode 100644 openSSL/lin32/include/openssl/buffer.h create mode 100644 openSSL/lin32/include/openssl/buffererr.h create mode 100644 openSSL/lin32/include/openssl/camellia.h create mode 100644 openSSL/lin32/include/openssl/cast.h create mode 100644 openSSL/lin32/include/openssl/cmac.h create mode 100644 openSSL/lin32/include/openssl/cms.h create mode 100644 openSSL/lin32/include/openssl/cmserr.h create mode 100644 openSSL/lin32/include/openssl/comp.h create mode 100644 openSSL/lin32/include/openssl/comperr.h create mode 100644 openSSL/lin32/include/openssl/conf.h create mode 100644 openSSL/lin32/include/openssl/conf_api.h create mode 100644 openSSL/lin32/include/openssl/conferr.h create mode 100644 openSSL/lin32/include/openssl/crypto.h create mode 100644 openSSL/lin32/include/openssl/cryptoerr.h create mode 100644 openSSL/lin32/include/openssl/ct.h create mode 100644 openSSL/lin32/include/openssl/cterr.h create mode 100644 openSSL/lin32/include/openssl/des.h create mode 100644 openSSL/lin32/include/openssl/dh.h create mode 100644 openSSL/lin32/include/openssl/dherr.h create mode 100644 openSSL/lin32/include/openssl/dsa.h create mode 100644 openSSL/lin32/include/openssl/dsaerr.h create mode 100644 openSSL/lin32/include/openssl/dtls1.h create mode 100644 openSSL/lin32/include/openssl/e_os2.h create mode 100644 openSSL/lin32/include/openssl/ebcdic.h create mode 100644 openSSL/lin32/include/openssl/ec.h create mode 100644 openSSL/lin32/include/openssl/ecdh.h create mode 100644 openSSL/lin32/include/openssl/ecdsa.h create mode 100644 openSSL/lin32/include/openssl/ecerr.h create mode 100644 openSSL/lin32/include/openssl/engine.h create mode 100644 openSSL/lin32/include/openssl/engineerr.h create mode 100644 openSSL/lin32/include/openssl/err.h create mode 100644 openSSL/lin32/include/openssl/evp.h create mode 100644 openSSL/lin32/include/openssl/evperr.h create mode 100644 openSSL/lin32/include/openssl/hmac.h create mode 100644 openSSL/lin32/include/openssl/idea.h create mode 100644 openSSL/lin32/include/openssl/kdf.h create mode 100644 openSSL/lin32/include/openssl/kdferr.h create mode 100644 openSSL/lin32/include/openssl/lhash.h create mode 100644 openSSL/lin32/include/openssl/md2.h create mode 100644 openSSL/lin32/include/openssl/md4.h create mode 100644 openSSL/lin32/include/openssl/md5.h create mode 100644 openSSL/lin32/include/openssl/mdc2.h create mode 100644 openSSL/lin32/include/openssl/modes.h create mode 100644 openSSL/lin32/include/openssl/obj_mac.h create mode 100644 openSSL/lin32/include/openssl/objects.h create mode 100644 openSSL/lin32/include/openssl/objectserr.h create mode 100644 openSSL/lin32/include/openssl/ocsp.h create mode 100644 openSSL/lin32/include/openssl/ocsperr.h create mode 100644 openSSL/lin32/include/openssl/opensslconf.h create mode 100644 openSSL/lin32/include/openssl/opensslv.h create mode 100644 openSSL/lin32/include/openssl/ossl_typ.h create mode 100644 openSSL/lin32/include/openssl/pem.h create mode 100644 openSSL/lin32/include/openssl/pem2.h create mode 100644 openSSL/lin32/include/openssl/pemerr.h create mode 100644 openSSL/lin32/include/openssl/pkcs12.h create mode 100644 openSSL/lin32/include/openssl/pkcs12err.h create mode 100644 openSSL/lin32/include/openssl/pkcs7.h create mode 100644 openSSL/lin32/include/openssl/pkcs7err.h create mode 100644 openSSL/lin32/include/openssl/rand.h create mode 100644 openSSL/lin32/include/openssl/rand_drbg.h create mode 100644 openSSL/lin32/include/openssl/randerr.h create mode 100644 openSSL/lin32/include/openssl/rc2.h create mode 100644 openSSL/lin32/include/openssl/rc4.h create mode 100644 openSSL/lin32/include/openssl/rc5.h create mode 100644 openSSL/lin32/include/openssl/ripemd.h create mode 100644 openSSL/lin32/include/openssl/rsa.h create mode 100644 openSSL/lin32/include/openssl/rsaerr.h create mode 100644 openSSL/lin32/include/openssl/safestack.h create mode 100644 openSSL/lin32/include/openssl/seed.h create mode 100644 openSSL/lin32/include/openssl/sha.h create mode 100644 openSSL/lin32/include/openssl/srp.h create mode 100644 openSSL/lin32/include/openssl/srtp.h create mode 100644 openSSL/lin32/include/openssl/ssl.h create mode 100644 openSSL/lin32/include/openssl/ssl2.h create mode 100644 openSSL/lin32/include/openssl/ssl3.h create mode 100644 openSSL/lin32/include/openssl/sslerr.h create mode 100644 openSSL/lin32/include/openssl/stack.h create mode 100644 openSSL/lin32/include/openssl/store.h create mode 100644 openSSL/lin32/include/openssl/storeerr.h create mode 100644 openSSL/lin32/include/openssl/symhacks.h create mode 100644 openSSL/lin32/include/openssl/tls1.h create mode 100644 openSSL/lin32/include/openssl/ts.h create mode 100644 openSSL/lin32/include/openssl/tserr.h create mode 100644 openSSL/lin32/include/openssl/txt_db.h create mode 100644 openSSL/lin32/include/openssl/ui.h create mode 100644 openSSL/lin32/include/openssl/uierr.h create mode 100644 openSSL/lin32/include/openssl/whrlpool.h create mode 100644 openSSL/lin32/include/openssl/x509.h create mode 100644 openSSL/lin32/include/openssl/x509_vfy.h create mode 100644 openSSL/lin32/include/openssl/x509err.h create mode 100644 openSSL/lin32/include/openssl/x509v3.h create mode 100644 openSSL/lin32/include/openssl/x509v3err.h create mode 100755 openSSL/lin32/libcrypto.so.1.1 create mode 100755 openSSL/lin32/libssl.so.1.1 create mode 100644 openSSL/lin64/include/openssl/aes.h create mode 100644 openSSL/lin64/include/openssl/asn1.h create mode 100644 openSSL/lin64/include/openssl/asn1_mac.h create mode 100644 openSSL/lin64/include/openssl/asn1err.h create mode 100644 openSSL/lin64/include/openssl/asn1t.h create mode 100644 openSSL/lin64/include/openssl/async.h create mode 100644 openSSL/lin64/include/openssl/asyncerr.h create mode 100644 openSSL/lin64/include/openssl/bio.h create mode 100644 openSSL/lin64/include/openssl/bioerr.h create mode 100644 openSSL/lin64/include/openssl/blowfish.h create mode 100644 openSSL/lin64/include/openssl/bn.h create mode 100644 openSSL/lin64/include/openssl/bnerr.h create mode 100644 openSSL/lin64/include/openssl/buffer.h create mode 100644 openSSL/lin64/include/openssl/buffererr.h create mode 100644 openSSL/lin64/include/openssl/camellia.h create mode 100644 openSSL/lin64/include/openssl/cast.h create mode 100644 openSSL/lin64/include/openssl/cmac.h create mode 100644 openSSL/lin64/include/openssl/cms.h create mode 100644 openSSL/lin64/include/openssl/cmserr.h create mode 100644 openSSL/lin64/include/openssl/comp.h create mode 100644 openSSL/lin64/include/openssl/comperr.h create mode 100644 openSSL/lin64/include/openssl/conf.h create mode 100644 openSSL/lin64/include/openssl/conf_api.h create mode 100644 openSSL/lin64/include/openssl/conferr.h create mode 100644 openSSL/lin64/include/openssl/crypto.h create mode 100644 openSSL/lin64/include/openssl/cryptoerr.h create mode 100644 openSSL/lin64/include/openssl/ct.h create mode 100644 openSSL/lin64/include/openssl/cterr.h create mode 100644 openSSL/lin64/include/openssl/des.h create mode 100644 openSSL/lin64/include/openssl/dh.h create mode 100644 openSSL/lin64/include/openssl/dherr.h create mode 100644 openSSL/lin64/include/openssl/dsa.h create mode 100644 openSSL/lin64/include/openssl/dsaerr.h create mode 100644 openSSL/lin64/include/openssl/dtls1.h create mode 100644 openSSL/lin64/include/openssl/e_os2.h create mode 100644 openSSL/lin64/include/openssl/ebcdic.h create mode 100644 openSSL/lin64/include/openssl/ec.h create mode 100644 openSSL/lin64/include/openssl/ecdh.h create mode 100644 openSSL/lin64/include/openssl/ecdsa.h create mode 100644 openSSL/lin64/include/openssl/ecerr.h create mode 100644 openSSL/lin64/include/openssl/engine.h create mode 100644 openSSL/lin64/include/openssl/engineerr.h create mode 100644 openSSL/lin64/include/openssl/err.h create mode 100644 openSSL/lin64/include/openssl/evp.h create mode 100644 openSSL/lin64/include/openssl/evperr.h create mode 100644 openSSL/lin64/include/openssl/hmac.h create mode 100644 openSSL/lin64/include/openssl/idea.h create mode 100644 openSSL/lin64/include/openssl/kdf.h create mode 100644 openSSL/lin64/include/openssl/kdferr.h create mode 100644 openSSL/lin64/include/openssl/lhash.h create mode 100644 openSSL/lin64/include/openssl/md2.h create mode 100644 openSSL/lin64/include/openssl/md4.h create mode 100644 openSSL/lin64/include/openssl/md5.h create mode 100644 openSSL/lin64/include/openssl/mdc2.h create mode 100644 openSSL/lin64/include/openssl/modes.h create mode 100644 openSSL/lin64/include/openssl/obj_mac.h create mode 100644 openSSL/lin64/include/openssl/objects.h create mode 100644 openSSL/lin64/include/openssl/objectserr.h create mode 100644 openSSL/lin64/include/openssl/ocsp.h create mode 100644 openSSL/lin64/include/openssl/ocsperr.h create mode 100644 openSSL/lin64/include/openssl/opensslconf.h create mode 100644 openSSL/lin64/include/openssl/opensslv.h create mode 100644 openSSL/lin64/include/openssl/ossl_typ.h create mode 100644 openSSL/lin64/include/openssl/pem.h create mode 100644 openSSL/lin64/include/openssl/pem2.h create mode 100644 openSSL/lin64/include/openssl/pemerr.h create mode 100644 openSSL/lin64/include/openssl/pkcs12.h create mode 100644 openSSL/lin64/include/openssl/pkcs12err.h create mode 100644 openSSL/lin64/include/openssl/pkcs7.h create mode 100644 openSSL/lin64/include/openssl/pkcs7err.h create mode 100644 openSSL/lin64/include/openssl/rand.h create mode 100644 openSSL/lin64/include/openssl/rand_drbg.h create mode 100644 openSSL/lin64/include/openssl/randerr.h create mode 100644 openSSL/lin64/include/openssl/rc2.h create mode 100644 openSSL/lin64/include/openssl/rc4.h create mode 100644 openSSL/lin64/include/openssl/rc5.h create mode 100644 openSSL/lin64/include/openssl/ripemd.h create mode 100644 openSSL/lin64/include/openssl/rsa.h create mode 100644 openSSL/lin64/include/openssl/rsaerr.h create mode 100644 openSSL/lin64/include/openssl/safestack.h create mode 100644 openSSL/lin64/include/openssl/seed.h create mode 100644 openSSL/lin64/include/openssl/sha.h create mode 100644 openSSL/lin64/include/openssl/srp.h create mode 100644 openSSL/lin64/include/openssl/srtp.h create mode 100644 openSSL/lin64/include/openssl/ssl.h create mode 100644 openSSL/lin64/include/openssl/ssl2.h create mode 100644 openSSL/lin64/include/openssl/ssl3.h create mode 100644 openSSL/lin64/include/openssl/sslerr.h create mode 100644 openSSL/lin64/include/openssl/stack.h create mode 100644 openSSL/lin64/include/openssl/store.h create mode 100644 openSSL/lin64/include/openssl/storeerr.h create mode 100644 openSSL/lin64/include/openssl/symhacks.h create mode 100644 openSSL/lin64/include/openssl/tls1.h create mode 100644 openSSL/lin64/include/openssl/ts.h create mode 100644 openSSL/lin64/include/openssl/tserr.h create mode 100644 openSSL/lin64/include/openssl/txt_db.h create mode 100644 openSSL/lin64/include/openssl/ui.h create mode 100644 openSSL/lin64/include/openssl/uierr.h create mode 100644 openSSL/lin64/include/openssl/whrlpool.h create mode 100644 openSSL/lin64/include/openssl/x509.h create mode 100644 openSSL/lin64/include/openssl/x509_vfy.h create mode 100644 openSSL/lin64/include/openssl/x509err.h create mode 100644 openSSL/lin64/include/openssl/x509v3.h create mode 100644 openSSL/lin64/include/openssl/x509v3err.h create mode 100755 openSSL/lin64/libcrypto.so.1.1 create mode 100755 openSSL/lin64/libssl.so.1.1 create mode 100644 openSSL/win64/include/openssl/aes.h create mode 100644 openSSL/win64/include/openssl/asn1.h create mode 100644 openSSL/win64/include/openssl/asn1_mac.h create mode 100644 openSSL/win64/include/openssl/asn1err.h create mode 100644 openSSL/win64/include/openssl/asn1t.h create mode 100644 openSSL/win64/include/openssl/async.h create mode 100644 openSSL/win64/include/openssl/asyncerr.h create mode 100644 openSSL/win64/include/openssl/bio.h create mode 100644 openSSL/win64/include/openssl/bioerr.h create mode 100644 openSSL/win64/include/openssl/blowfish.h create mode 100644 openSSL/win64/include/openssl/bn.h create mode 100644 openSSL/win64/include/openssl/bnerr.h create mode 100644 openSSL/win64/include/openssl/buffer.h create mode 100644 openSSL/win64/include/openssl/buffererr.h create mode 100644 openSSL/win64/include/openssl/camellia.h create mode 100644 openSSL/win64/include/openssl/cast.h create mode 100644 openSSL/win64/include/openssl/cmac.h create mode 100644 openSSL/win64/include/openssl/cms.h create mode 100644 openSSL/win64/include/openssl/cmserr.h create mode 100644 openSSL/win64/include/openssl/comp.h create mode 100644 openSSL/win64/include/openssl/comperr.h create mode 100644 openSSL/win64/include/openssl/conf.h create mode 100644 openSSL/win64/include/openssl/conf_api.h create mode 100644 openSSL/win64/include/openssl/conferr.h create mode 100644 openSSL/win64/include/openssl/crypto.h create mode 100644 openSSL/win64/include/openssl/cryptoerr.h create mode 100644 openSSL/win64/include/openssl/ct.h create mode 100644 openSSL/win64/include/openssl/cterr.h create mode 100644 openSSL/win64/include/openssl/des.h create mode 100644 openSSL/win64/include/openssl/dh.h create mode 100644 openSSL/win64/include/openssl/dherr.h create mode 100644 openSSL/win64/include/openssl/dsa.h create mode 100644 openSSL/win64/include/openssl/dsaerr.h create mode 100644 openSSL/win64/include/openssl/dtls1.h create mode 100644 openSSL/win64/include/openssl/e_os2.h create mode 100644 openSSL/win64/include/openssl/ebcdic.h create mode 100644 openSSL/win64/include/openssl/ec.h create mode 100644 openSSL/win64/include/openssl/ecdh.h create mode 100644 openSSL/win64/include/openssl/ecdsa.h create mode 100644 openSSL/win64/include/openssl/ecerr.h create mode 100644 openSSL/win64/include/openssl/engine.h create mode 100644 openSSL/win64/include/openssl/engineerr.h create mode 100644 openSSL/win64/include/openssl/err.h create mode 100644 openSSL/win64/include/openssl/evp.h create mode 100644 openSSL/win64/include/openssl/evperr.h create mode 100644 openSSL/win64/include/openssl/hmac.h create mode 100644 openSSL/win64/include/openssl/idea.h create mode 100644 openSSL/win64/include/openssl/kdf.h create mode 100644 openSSL/win64/include/openssl/kdferr.h create mode 100644 openSSL/win64/include/openssl/lhash.h create mode 100644 openSSL/win64/include/openssl/md2.h create mode 100644 openSSL/win64/include/openssl/md4.h create mode 100644 openSSL/win64/include/openssl/md5.h create mode 100644 openSSL/win64/include/openssl/mdc2.h create mode 100644 openSSL/win64/include/openssl/modes.h create mode 100644 openSSL/win64/include/openssl/obj_mac.h create mode 100644 openSSL/win64/include/openssl/objects.h create mode 100644 openSSL/win64/include/openssl/objectserr.h create mode 100644 openSSL/win64/include/openssl/ocsp.h create mode 100644 openSSL/win64/include/openssl/ocsperr.h create mode 100644 openSSL/win64/include/openssl/opensslconf.h create mode 100644 openSSL/win64/include/openssl/opensslv.h create mode 100644 openSSL/win64/include/openssl/ossl_typ.h create mode 100644 openSSL/win64/include/openssl/pem.h create mode 100644 openSSL/win64/include/openssl/pem2.h create mode 100644 openSSL/win64/include/openssl/pemerr.h create mode 100644 openSSL/win64/include/openssl/pkcs12.h create mode 100644 openSSL/win64/include/openssl/pkcs12err.h create mode 100644 openSSL/win64/include/openssl/pkcs7.h create mode 100644 openSSL/win64/include/openssl/pkcs7err.h create mode 100644 openSSL/win64/include/openssl/rand.h create mode 100644 openSSL/win64/include/openssl/rand_drbg.h create mode 100644 openSSL/win64/include/openssl/randerr.h create mode 100644 openSSL/win64/include/openssl/rc2.h create mode 100644 openSSL/win64/include/openssl/rc4.h create mode 100644 openSSL/win64/include/openssl/rc5.h create mode 100644 openSSL/win64/include/openssl/ripemd.h create mode 100644 openSSL/win64/include/openssl/rsa.h create mode 100644 openSSL/win64/include/openssl/rsaerr.h create mode 100644 openSSL/win64/include/openssl/safestack.h create mode 100644 openSSL/win64/include/openssl/seed.h create mode 100644 openSSL/win64/include/openssl/sha.h create mode 100644 openSSL/win64/include/openssl/srp.h create mode 100644 openSSL/win64/include/openssl/srtp.h create mode 100644 openSSL/win64/include/openssl/ssl.h create mode 100644 openSSL/win64/include/openssl/ssl2.h create mode 100644 openSSL/win64/include/openssl/ssl3.h create mode 100644 openSSL/win64/include/openssl/sslerr.h create mode 100644 openSSL/win64/include/openssl/stack.h create mode 100644 openSSL/win64/include/openssl/store.h create mode 100644 openSSL/win64/include/openssl/storeerr.h create mode 100644 openSSL/win64/include/openssl/symhacks.h create mode 100644 openSSL/win64/include/openssl/tls1.h create mode 100644 openSSL/win64/include/openssl/ts.h create mode 100644 openSSL/win64/include/openssl/tserr.h create mode 100644 openSSL/win64/include/openssl/txt_db.h create mode 100644 openSSL/win64/include/openssl/ui.h create mode 100644 openSSL/win64/include/openssl/uierr.h create mode 100644 openSSL/win64/include/openssl/whrlpool.h create mode 100644 openSSL/win64/include/openssl/x509.h create mode 100644 openSSL/win64/include/openssl/x509_vfy.h create mode 100644 openSSL/win64/include/openssl/x509err.h create mode 100644 openSSL/win64/include/openssl/x509v3.h create mode 100644 openSSL/win64/include/openssl/x509v3err.h create mode 100755 openSSL/win64/libcrypto-1_1-x64.dll create mode 100755 openSSL/win64/libssl-1_1-x64.dll diff --git a/openSSL/lin32/include/openssl/aes.h b/openSSL/lin32/include/openssl/aes.h new file mode 100644 index 0000000..245c552 --- /dev/null +++ b/openSSL/lin32/include/openssl/aes.h @@ -0,0 +1,92 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_AES_H +# define HEADER_AES_H + +# include + +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define AES_ENCRYPT 1 +# define AES_DECRYPT 0 + +/* + * Because array size can't be a const in C, the following two are macros. + * Both sizes are in bytes. + */ +# define AES_MAXNR 14 +# define AES_BLOCK_SIZE 16 + +/* This should be a hidden type, but EVP requires that the size be known */ +struct aes_key_st { +# ifdef AES_LONG + unsigned long rd_key[4 * (AES_MAXNR + 1)]; +# else + unsigned int rd_key[4 * (AES_MAXNR + 1)]; +# endif + int rounds; +}; +typedef struct aes_key_st AES_KEY; + +const char *AES_options(void); + +int AES_set_encrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); +int AES_set_decrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); + +void AES_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); +void AES_decrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); + +void AES_ecb_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key, const int enc); +void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, const int enc); +void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num, const int enc); +void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num, const int enc); +void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num, const int enc); +void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num); +/* NB: the IV is _two_ blocks long */ +void AES_ige_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, const int enc); +/* NB: the IV is _four_ blocks long */ +void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + const AES_KEY *key2, const unsigned char *ivec, + const int enc); + +int AES_wrap_key(AES_KEY *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, unsigned int inlen); +int AES_unwrap_key(AES_KEY *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, unsigned int inlen); + + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/asn1.h b/openSSL/lin32/include/openssl/asn1.h new file mode 100644 index 0000000..9522eec --- /dev/null +++ b/openSSL/lin32/include/openssl/asn1.h @@ -0,0 +1,886 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1_H +# define HEADER_ASN1_H + +# include +# include +# include +# include +# include +# include +# include + +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define V_ASN1_UNIVERSAL 0x00 +# define V_ASN1_APPLICATION 0x40 +# define V_ASN1_CONTEXT_SPECIFIC 0x80 +# define V_ASN1_PRIVATE 0xc0 + +# define V_ASN1_CONSTRUCTED 0x20 +# define V_ASN1_PRIMITIVE_TAG 0x1f +# define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG + +# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ +# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ +# define V_ASN1_ANY -4/* used in ASN1 template code */ + +# define V_ASN1_UNDEF -1 +/* ASN.1 tag values */ +# define V_ASN1_EOC 0 +# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_INTEGER 2 +# define V_ASN1_BIT_STRING 3 +# define V_ASN1_OCTET_STRING 4 +# define V_ASN1_NULL 5 +# define V_ASN1_OBJECT 6 +# define V_ASN1_OBJECT_DESCRIPTOR 7 +# define V_ASN1_EXTERNAL 8 +# define V_ASN1_REAL 9 +# define V_ASN1_ENUMERATED 10 +# define V_ASN1_UTF8STRING 12 +# define V_ASN1_SEQUENCE 16 +# define V_ASN1_SET 17 +# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_PRINTABLESTRING 19 +# define V_ASN1_T61STRING 20 +# define V_ASN1_TELETEXSTRING 20/* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_IA5STRING 22 +# define V_ASN1_UTCTIME 23 +# define V_ASN1_GENERALIZEDTIME 24 /**/ +# define V_ASN1_GRAPHICSTRING 25 /**/ +# define V_ASN1_ISO64STRING 26 /**/ +# define V_ASN1_VISIBLESTRING 26/* alias */ +# define V_ASN1_GENERALSTRING 27 /**/ +# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_BMPSTRING 30 + +/* + * NB the constants below are used internally by ASN1_INTEGER + * and ASN1_ENUMERATED to indicate the sign. They are *not* on + * the wire tag values. + */ + +# define V_ASN1_NEG 0x100 +# define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) +# define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) + +/* For use with d2i_ASN1_type_bytes() */ +# define B_ASN1_NUMERICSTRING 0x0001 +# define B_ASN1_PRINTABLESTRING 0x0002 +# define B_ASN1_T61STRING 0x0004 +# define B_ASN1_TELETEXSTRING 0x0004 +# define B_ASN1_VIDEOTEXSTRING 0x0008 +# define B_ASN1_IA5STRING 0x0010 +# define B_ASN1_GRAPHICSTRING 0x0020 +# define B_ASN1_ISO64STRING 0x0040 +# define B_ASN1_VISIBLESTRING 0x0040 +# define B_ASN1_GENERALSTRING 0x0080 +# define B_ASN1_UNIVERSALSTRING 0x0100 +# define B_ASN1_OCTET_STRING 0x0200 +# define B_ASN1_BIT_STRING 0x0400 +# define B_ASN1_BMPSTRING 0x0800 +# define B_ASN1_UNKNOWN 0x1000 +# define B_ASN1_UTF8STRING 0x2000 +# define B_ASN1_UTCTIME 0x4000 +# define B_ASN1_GENERALIZEDTIME 0x8000 +# define B_ASN1_SEQUENCE 0x10000 +/* For use with ASN1_mbstring_copy() */ +# define MBSTRING_FLAG 0x1000 +# define MBSTRING_UTF8 (MBSTRING_FLAG) +# define MBSTRING_ASC (MBSTRING_FLAG|1) +# define MBSTRING_BMP (MBSTRING_FLAG|2) +# define MBSTRING_UNIV (MBSTRING_FLAG|4) +# define SMIME_OLDMIME 0x400 +# define SMIME_CRLFEOL 0x800 +# define SMIME_STREAM 0x1000 + struct X509_algor_st; +DEFINE_STACK_OF(X509_ALGOR) + +# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +/* + * This indicates that the ASN1_STRING is not a real value but just a place + * holder for the location where indefinite length constructed data should be + * inserted in the memory buffer + */ +# define ASN1_STRING_FLAG_NDEF 0x010 + +/* + * This flag is used by the CMS code to indicate that a string is not + * complete and is a place holder for content when it had all been accessed. + * The flag will be reset when content has been written to it. + */ + +# define ASN1_STRING_FLAG_CONT 0x020 +/* + * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING + * type. + */ +# define ASN1_STRING_FLAG_MSTRING 0x040 +/* String is embedded and only content should be freed */ +# define ASN1_STRING_FLAG_EMBED 0x080 +/* String should be parsed in RFC 5280's time format */ +# define ASN1_STRING_FLAG_X509_TIME 0x100 +/* This is the base type that holds just about everything :-) */ +struct asn1_string_st { + int length; + int type; + unsigned char *data; + /* + * The value of the following field depends on the type being held. It + * is mostly being used for BIT_STRING so if the input data has a + * non-zero 'unused bits' value, it will be handled correctly + */ + long flags; +}; + +/* + * ASN1_ENCODING structure: this is used to save the received encoding of an + * ASN1 type. This is useful to get round problems with invalid encodings + * which can break signatures. + */ + +typedef struct ASN1_ENCODING_st { + unsigned char *enc; /* DER encoding */ + long len; /* Length of encoding */ + int modified; /* set to 1 if 'enc' is invalid */ +} ASN1_ENCODING; + +/* Used with ASN1 LONG type: if a long is set to this it is omitted */ +# define ASN1_LONG_UNDEF 0x7fffffffL + +# define STABLE_FLAGS_MALLOC 0x01 +/* + * A zero passed to ASN1_STRING_TABLE_new_add for the flags is interpreted + * as "don't change" and STABLE_FLAGS_MALLOC is always set. By setting + * STABLE_FLAGS_MALLOC only we can clear the existing value. Use the alias + * STABLE_FLAGS_CLEAR to reflect this. + */ +# define STABLE_FLAGS_CLEAR STABLE_FLAGS_MALLOC +# define STABLE_NO_MASK 0x02 +# define DIRSTRING_TYPE \ + (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING) +# define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING) + +typedef struct asn1_string_table_st { + int nid; + long minsize; + long maxsize; + unsigned long mask; + unsigned long flags; +} ASN1_STRING_TABLE; + +DEFINE_STACK_OF(ASN1_STRING_TABLE) + +/* size limits: this stuff is taken straight from RFC2459 */ + +# define ub_name 32768 +# define ub_common_name 64 +# define ub_locality_name 128 +# define ub_state_name 128 +# define ub_organization_name 64 +# define ub_organization_unit_name 64 +# define ub_title 64 +# define ub_email_address 128 + +/* + * Declarations for template structures: for full definitions see asn1t.h + */ +typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE; +typedef struct ASN1_TLC_st ASN1_TLC; +/* This is just an opaque pointer */ +typedef struct ASN1_VALUE_st ASN1_VALUE; + +/* Declare ASN1 functions: the implement macro in in asn1t.h */ + +# define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) + +# define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(itname) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(const type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(name) + +# define DECLARE_ASN1_NDEF_FUNCTION(name) \ + int i2d_##name##_NDEF(name *a, unsigned char **out); + +# define DECLARE_ASN1_FUNCTIONS_const(name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS(name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + type *name##_new(void); \ + void name##_free(type *a); + +# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname) + +# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ + int fname##_print_ctx(BIO *out, stname *x, int indent, \ + const ASN1_PCTX *pctx); + +# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) +# define I2D_OF(type) int (*)(type *,unsigned char **) +# define I2D_OF_const(type) int (*)(const type *,unsigned char **) + +# define CHECKED_D2I_OF(type, d2i) \ + ((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0))) +# define CHECKED_I2D_OF(type, i2d) \ + ((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0))) +# define CHECKED_NEW_OF(type, xnew) \ + ((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0))) +# define CHECKED_PTR_OF(type, p) \ + ((void*) (1 ? p : (type*)0)) +# define CHECKED_PPTR_OF(type, p) \ + ((void**) (1 ? p : (type**)0)) + +# define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long) +# define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **) +# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) + +TYPEDEF_D2I2D_OF(void); + +/*- + * The following macros and typedefs allow an ASN1_ITEM + * to be embedded in a structure and referenced. Since + * the ASN1_ITEM pointers need to be globally accessible + * (possibly from shared libraries) they may exist in + * different forms. On platforms that support it the + * ASN1_ITEM structure itself will be globally exported. + * Other platforms will export a function that returns + * an ASN1_ITEM pointer. + * + * To handle both cases transparently the macros below + * should be used instead of hard coding an ASN1_ITEM + * pointer in a structure. + * + * The structure will look like this: + * + * typedef struct SOMETHING_st { + * ... + * ASN1_ITEM_EXP *iptr; + * ... + * } SOMETHING; + * + * It would be initialised as e.g.: + * + * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...}; + * + * and the actual pointer extracted with: + * + * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr); + * + * Finally an ASN1_ITEM pointer can be extracted from an + * appropriate reference with: ASN1_ITEM_rptr(X509). This + * would be used when a function takes an ASN1_ITEM * argument. + * + */ + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM ASN1_ITEM_EXP; + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (&(iptr##_it)) + +# define ASN1_ITEM_rptr(ref) (&(ref##_it)) + +# define DECLARE_ASN1_ITEM(name) \ + OPENSSL_EXTERN const ASN1_ITEM name##_it; + +# else + +/* + * Platforms that can't easily handle shared global variables are declared as + * functions returning ASN1_ITEM pointers. + */ + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM *ASN1_ITEM_EXP (void); + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr()) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (iptr##_it) + +# define ASN1_ITEM_rptr(ref) (ref##_it()) + +# define DECLARE_ASN1_ITEM(name) \ + const ASN1_ITEM * name##_it(void); + +# endif + +/* Parameters used by ASN1_STRING_print_ex() */ + +/* + * These determine which characters to escape: RFC2253 special characters, + * control characters and MSB set characters + */ + +# define ASN1_STRFLGS_ESC_2253 1 +# define ASN1_STRFLGS_ESC_CTRL 2 +# define ASN1_STRFLGS_ESC_MSB 4 + +/* + * This flag determines how we do escaping: normally RC2253 backslash only, + * set this to use backslash and quote. + */ + +# define ASN1_STRFLGS_ESC_QUOTE 8 + +/* These three flags are internal use only. */ + +/* Character is a valid PrintableString character */ +# define CHARTYPE_PRINTABLESTRING 0x10 +/* Character needs escaping if it is the first character */ +# define CHARTYPE_FIRST_ESC_2253 0x20 +/* Character needs escaping if it is the last character */ +# define CHARTYPE_LAST_ESC_2253 0x40 + +/* + * NB the internal flags are safely reused below by flags handled at the top + * level. + */ + +/* + * If this is set we convert all character strings to UTF8 first + */ + +# define ASN1_STRFLGS_UTF8_CONVERT 0x10 + +/* + * If this is set we don't attempt to interpret content: just assume all + * strings are 1 byte per character. This will produce some pretty odd + * looking output! + */ + +# define ASN1_STRFLGS_IGNORE_TYPE 0x20 + +/* If this is set we include the string type in the output */ +# define ASN1_STRFLGS_SHOW_TYPE 0x40 + +/* + * This determines which strings to display and which to 'dump' (hex dump of + * content octets or DER encoding). We can only dump non character strings or + * everything. If we don't dump 'unknown' they are interpreted as character + * strings with 1 octet per character and are subject to the usual escaping + * options. + */ + +# define ASN1_STRFLGS_DUMP_ALL 0x80 +# define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 + +/* + * These determine what 'dumping' does, we can dump the content octets or the + * DER encoding: both use the RFC2253 #XXXXX notation. + */ + +# define ASN1_STRFLGS_DUMP_DER 0x200 + +/* + * This flag specifies that RC2254 escaping shall be performed. + */ +#define ASN1_STRFLGS_ESC_2254 0x400 + +/* + * All the string flags consistent with RFC2253, escaping control characters + * isn't essential in RFC2253 but it is advisable anyway. + */ + +# define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \ + ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + ASN1_STRFLGS_UTF8_CONVERT | \ + ASN1_STRFLGS_DUMP_UNKNOWN | \ + ASN1_STRFLGS_DUMP_DER) + +DEFINE_STACK_OF(ASN1_INTEGER) + +DEFINE_STACK_OF(ASN1_GENERALSTRING) + +DEFINE_STACK_OF(ASN1_UTF8STRING) + +typedef struct asn1_type_st { + int type; + union { + char *ptr; + ASN1_BOOLEAN boolean; + ASN1_STRING *asn1_string; + ASN1_OBJECT *object; + ASN1_INTEGER *integer; + ASN1_ENUMERATED *enumerated; + ASN1_BIT_STRING *bit_string; + ASN1_OCTET_STRING *octet_string; + ASN1_PRINTABLESTRING *printablestring; + ASN1_T61STRING *t61string; + ASN1_IA5STRING *ia5string; + ASN1_GENERALSTRING *generalstring; + ASN1_BMPSTRING *bmpstring; + ASN1_UNIVERSALSTRING *universalstring; + ASN1_UTCTIME *utctime; + ASN1_GENERALIZEDTIME *generalizedtime; + ASN1_VISIBLESTRING *visiblestring; + ASN1_UTF8STRING *utf8string; + /* + * set and sequence are left complete and still contain the set or + * sequence bytes + */ + ASN1_STRING *set; + ASN1_STRING *sequence; + ASN1_VALUE *asn1_value; + } value; +} ASN1_TYPE; + +DEFINE_STACK_OF(ASN1_TYPE) + +typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SET_ANY) + +/* This is used to contain a list of bit names */ +typedef struct BIT_STRING_BITNAME_st { + int bitnum; + const char *lname; + const char *sname; +} BIT_STRING_BITNAME; + +# define B_ASN1_TIME \ + B_ASN1_UTCTIME | \ + B_ASN1_GENERALIZEDTIME + +# define B_ASN1_PRINTABLE \ + B_ASN1_NUMERICSTRING| \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_T61STRING| \ + B_ASN1_IA5STRING| \ + B_ASN1_BIT_STRING| \ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING|\ + B_ASN1_SEQUENCE|\ + B_ASN1_UNKNOWN + +# define B_ASN1_DIRECTORYSTRING \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_TELETEXSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_UTF8STRING + +# define B_ASN1_DISPLAYTEXT \ + B_ASN1_IA5STRING| \ + B_ASN1_VISIBLESTRING| \ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING + +DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) + +int ASN1_TYPE_get(const ASN1_TYPE *a); +void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); +int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value); +int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b); + +ASN1_TYPE *ASN1_TYPE_pack_sequence(const ASN1_ITEM *it, void *s, ASN1_TYPE **t); +void *ASN1_TYPE_unpack_sequence(const ASN1_ITEM *it, const ASN1_TYPE *t); + +ASN1_OBJECT *ASN1_OBJECT_new(void); +void ASN1_OBJECT_free(ASN1_OBJECT *a); +int i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp); +ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, + long length); + +DECLARE_ASN1_ITEM(ASN1_OBJECT) + +DEFINE_STACK_OF(ASN1_OBJECT) + +ASN1_STRING *ASN1_STRING_new(void); +void ASN1_STRING_free(ASN1_STRING *a); +void ASN1_STRING_clear_free(ASN1_STRING *a); +int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); +ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a); +ASN1_STRING *ASN1_STRING_type_new(int type); +int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); + /* + * Since this is used to store all sorts of things, via macros, for now, + * make its data void * + */ +int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); +void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); +int ASN1_STRING_length(const ASN1_STRING *x); +void ASN1_STRING_length_set(ASN1_STRING *x, int n); +int ASN1_STRING_type(const ASN1_STRING *x); +DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x)) +const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x); + +DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING) +int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length); +int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); +int ASN1_BIT_STRING_get_bit(const ASN1_BIT_STRING *a, int n); +int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *a, + const unsigned char *flags, int flags_len); + +int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, + BIT_STRING_BITNAME *tbl, int indent); +int ASN1_BIT_STRING_num_asc(const char *name, BIT_STRING_BITNAME *tbl); +int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value, + BIT_STRING_BITNAME *tbl); + +DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) +ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x); +int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y); + +DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED) + +int ASN1_UTCTIME_check(const ASN1_UTCTIME *a); +ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); +ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); +int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); + +int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, + time_t t); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, + time_t t, int offset_day, + long offset_sec); +int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str); + +int ASN1_TIME_diff(int *pday, int *psec, + const ASN1_TIME *from, const ASN1_TIME *to); + +DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING) +ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a); +int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, + const ASN1_OCTET_STRING *b); +int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, + int len); + +DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_NULL) +DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING) + +int UTF8_getc(const unsigned char *str, int len, unsigned long *val); +int UTF8_putc(unsigned char *str, int len, unsigned long value); + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE) + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING) +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT) +DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_TIME) + +DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF) + +ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); +ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_TIME_check(const ASN1_TIME *t); +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(const ASN1_TIME *t, + ASN1_GENERALIZEDTIME **out); +int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); +int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str); +int ASN1_TIME_to_tm(const ASN1_TIME *s, struct tm *tm); +int ASN1_TIME_normalize(ASN1_TIME *s); +int ASN1_TIME_cmp_time_t(const ASN1_TIME *s, time_t t); +int ASN1_TIME_compare(const ASN1_TIME *a, const ASN1_TIME *b); + +int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a); +int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); +int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a); +int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); +int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a); +int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); +int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type); +int i2t_ASN1_OBJECT(char *buf, int buf_len, const ASN1_OBJECT *a); + +int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); +ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len, + const char *sn, const char *ln); + +int ASN1_INTEGER_get_int64(int64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_int64(ASN1_INTEGER *a, int64_t r); +int ASN1_INTEGER_get_uint64(uint64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_uint64(ASN1_INTEGER *a, uint64_t r); + +int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); +long ASN1_INTEGER_get(const ASN1_INTEGER *a); +ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); +BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); + +int ASN1_ENUMERATED_get_int64(int64_t *pr, const ASN1_ENUMERATED *a); +int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *a, int64_t r); + + +int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); +long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a); +ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai); +BIGNUM *ASN1_ENUMERATED_to_BN(const ASN1_ENUMERATED *ai, BIGNUM *bn); + +/* General */ +/* given a string, return the correct type, max is the maximum length */ +int ASN1_PRINTABLE_type(const unsigned char *s, int max); + +unsigned long ASN1_tag2bit(int tag); + +/* SPECIALS */ +int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, + int *pclass, long omax); +int ASN1_check_infinite_end(unsigned char **p, long len); +int ASN1_const_check_infinite_end(const unsigned char **p, long len); +void ASN1_put_object(unsigned char **pp, int constructed, int length, + int tag, int xclass); +int ASN1_put_eoc(unsigned char **pp); +int ASN1_object_size(int constructed, int length, int tag); + +/* Used to implement other functions */ +void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x); + +# define ASN1_dup_of(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_dup_of_const(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(const type, x))) + +void *ASN1_item_dup(const ASN1_ITEM *it, void *x); + +/* ASN1 alloc/free macros for when a type is only used internally */ + +# define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type)) +# define M_ASN1_free_of(x, type) \ + ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type)) + +# ifndef OPENSSL_NO_STDIO +void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x); + +# define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); +int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x); + +# define ASN1_i2d_fp_of(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_fp_of_const(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x); +int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags); +# endif + +int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in); + +void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x); + +# define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); +int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x); + +# define ASN1_i2d_bio_of(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_bio_of_const(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); +int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a); +int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a); +int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a); +int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v); +int ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str, unsigned long flags); +int ASN1_buf_print(BIO *bp, const unsigned char *buf, size_t buflen, int off); +int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, + unsigned char *buf, int off); +int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent); +int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, + int dump); +const char *ASN1_tag2str(int tag); + +/* Used to load and write Netscape format cert */ + +int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); + +int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); +int ASN1_TYPE_get_octetstring(const ASN1_TYPE *a, unsigned char *data, int max_len); +int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, + unsigned char *data, int len); +int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, + unsigned char *data, int max_len); + +void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); + +ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, + ASN1_OCTET_STRING **oct); + +void ASN1_STRING_set_default_mask(unsigned long mask); +int ASN1_STRING_set_default_mask_asc(const char *p); +unsigned long ASN1_STRING_get_default_mask(void); +int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask); +int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask, + long minsize, long maxsize); + +ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, + const unsigned char *in, int inlen, + int inform, int nid); +ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); +int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); +void ASN1_STRING_TABLE_cleanup(void); + +/* ASN1 template functions */ + +/* Old API compatible functions */ +ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); +void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); +ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it); +int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); +int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out, + const ASN1_ITEM *it); + +void ASN1_add_oid_module(void); +void ASN1_add_stable_module(void); + +ASN1_TYPE *ASN1_generate_nconf(const char *str, CONF *nconf); +ASN1_TYPE *ASN1_generate_v3(const char *str, X509V3_CTX *cnf); +int ASN1_str2mask(const char *str, unsigned long *pmask); + +/* ASN1 Print flags */ + +/* Indicate missing OPTIONAL fields */ +# define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001 +/* Mark start and end of SEQUENCE */ +# define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002 +/* Mark start and end of SEQUENCE/SET OF */ +# define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004 +/* Show the ASN1 type of primitives */ +# define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008 +/* Don't show ASN1 type of ANY */ +# define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010 +/* Don't show ASN1 type of MSTRINGs */ +# define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020 +/* Don't show field names in SEQUENCE */ +# define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040 +/* Show structure names of each SEQUENCE field */ +# define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080 +/* Don't show structure name even at top level */ +# define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100 + +int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent, + const ASN1_ITEM *it, const ASN1_PCTX *pctx); +ASN1_PCTX *ASN1_PCTX_new(void); +void ASN1_PCTX_free(ASN1_PCTX *p); +unsigned long ASN1_PCTX_get_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_nm_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_cert_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_oid_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_str_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags); + +ASN1_SCTX *ASN1_SCTX_new(int (*scan_cb) (ASN1_SCTX *ctx)); +void ASN1_SCTX_free(ASN1_SCTX *p); +const ASN1_ITEM *ASN1_SCTX_get_item(ASN1_SCTX *p); +const ASN1_TEMPLATE *ASN1_SCTX_get_template(ASN1_SCTX *p); +unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p); +void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data); +void *ASN1_SCTX_get_app_data(ASN1_SCTX *p); + +const BIO_METHOD *BIO_f_asn1(void); + +BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it); + +int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const ASN1_ITEM *it); +int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const char *hdr, const ASN1_ITEM *it); +int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, + int ctype_nid, int econt_nid, + STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it); +ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); +int SMIME_crlf_copy(BIO *in, BIO *out, int flags); +int SMIME_text(BIO *in, BIO *out); + +const ASN1_ITEM *ASN1_ITEM_lookup(const char *name); +const ASN1_ITEM *ASN1_ITEM_get(size_t i); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/asn1_mac.h b/openSSL/lin32/include/openssl/asn1_mac.h new file mode 100644 index 0000000..7ac1782 --- /dev/null +++ b/openSSL/lin32/include/openssl/asn1_mac.h @@ -0,0 +1,10 @@ +/* + * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#error "This file is obsolete; please update your software." diff --git a/openSSL/lin32/include/openssl/asn1err.h b/openSSL/lin32/include/openssl/asn1err.h new file mode 100644 index 0000000..e1ad1fe --- /dev/null +++ b/openSSL/lin32/include/openssl/asn1err.h @@ -0,0 +1,256 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1ERR_H +# define HEADER_ASN1ERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ASN1_strings(void); + +/* + * ASN1 function codes. + */ +# define ASN1_F_A2D_ASN1_OBJECT 100 +# define ASN1_F_A2I_ASN1_INTEGER 102 +# define ASN1_F_A2I_ASN1_STRING 103 +# define ASN1_F_APPEND_EXP 176 +# define ASN1_F_ASN1_BIO_INIT 113 +# define ASN1_F_ASN1_BIT_STRING_SET_BIT 183 +# define ASN1_F_ASN1_CB 177 +# define ASN1_F_ASN1_CHECK_TLEN 104 +# define ASN1_F_ASN1_COLLECT 106 +# define ASN1_F_ASN1_D2I_EX_PRIMITIVE 108 +# define ASN1_F_ASN1_D2I_FP 109 +# define ASN1_F_ASN1_D2I_READ_BIO 107 +# define ASN1_F_ASN1_DIGEST 184 +# define ASN1_F_ASN1_DO_ADB 110 +# define ASN1_F_ASN1_DO_LOCK 233 +# define ASN1_F_ASN1_DUP 111 +# define ASN1_F_ASN1_ENC_SAVE 115 +# define ASN1_F_ASN1_EX_C2I 204 +# define ASN1_F_ASN1_FIND_END 190 +# define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 216 +# define ASN1_F_ASN1_GENERATE_V3 178 +# define ASN1_F_ASN1_GET_INT64 224 +# define ASN1_F_ASN1_GET_OBJECT 114 +# define ASN1_F_ASN1_GET_UINT64 225 +# define ASN1_F_ASN1_I2D_BIO 116 +# define ASN1_F_ASN1_I2D_FP 117 +# define ASN1_F_ASN1_ITEM_D2I_FP 206 +# define ASN1_F_ASN1_ITEM_DUP 191 +# define ASN1_F_ASN1_ITEM_EMBED_D2I 120 +# define ASN1_F_ASN1_ITEM_EMBED_NEW 121 +# define ASN1_F_ASN1_ITEM_EX_I2D 144 +# define ASN1_F_ASN1_ITEM_FLAGS_I2D 118 +# define ASN1_F_ASN1_ITEM_I2D_BIO 192 +# define ASN1_F_ASN1_ITEM_I2D_FP 193 +# define ASN1_F_ASN1_ITEM_PACK 198 +# define ASN1_F_ASN1_ITEM_SIGN 195 +# define ASN1_F_ASN1_ITEM_SIGN_CTX 220 +# define ASN1_F_ASN1_ITEM_UNPACK 199 +# define ASN1_F_ASN1_ITEM_VERIFY 197 +# define ASN1_F_ASN1_MBSTRING_NCOPY 122 +# define ASN1_F_ASN1_OBJECT_NEW 123 +# define ASN1_F_ASN1_OUTPUT_DATA 214 +# define ASN1_F_ASN1_PCTX_NEW 205 +# define ASN1_F_ASN1_PRIMITIVE_NEW 119 +# define ASN1_F_ASN1_SCTX_NEW 221 +# define ASN1_F_ASN1_SIGN 128 +# define ASN1_F_ASN1_STR2TYPE 179 +# define ASN1_F_ASN1_STRING_GET_INT64 227 +# define ASN1_F_ASN1_STRING_GET_UINT64 230 +# define ASN1_F_ASN1_STRING_SET 186 +# define ASN1_F_ASN1_STRING_TABLE_ADD 129 +# define ASN1_F_ASN1_STRING_TO_BN 228 +# define ASN1_F_ASN1_STRING_TYPE_NEW 130 +# define ASN1_F_ASN1_TEMPLATE_EX_D2I 132 +# define ASN1_F_ASN1_TEMPLATE_NEW 133 +# define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131 +# define ASN1_F_ASN1_TIME_ADJ 217 +# define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134 +# define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135 +# define ASN1_F_ASN1_UTCTIME_ADJ 218 +# define ASN1_F_ASN1_VERIFY 137 +# define ASN1_F_B64_READ_ASN1 209 +# define ASN1_F_B64_WRITE_ASN1 210 +# define ASN1_F_BIO_NEW_NDEF 208 +# define ASN1_F_BITSTR_CB 180 +# define ASN1_F_BN_TO_ASN1_STRING 229 +# define ASN1_F_C2I_ASN1_BIT_STRING 189 +# define ASN1_F_C2I_ASN1_INTEGER 194 +# define ASN1_F_C2I_ASN1_OBJECT 196 +# define ASN1_F_C2I_IBUF 226 +# define ASN1_F_C2I_UINT64_INT 101 +# define ASN1_F_COLLECT_DATA 140 +# define ASN1_F_D2I_ASN1_OBJECT 147 +# define ASN1_F_D2I_ASN1_UINTEGER 150 +# define ASN1_F_D2I_AUTOPRIVATEKEY 207 +# define ASN1_F_D2I_PRIVATEKEY 154 +# define ASN1_F_D2I_PUBLICKEY 155 +# define ASN1_F_DO_BUF 142 +# define ASN1_F_DO_CREATE 124 +# define ASN1_F_DO_DUMP 125 +# define ASN1_F_DO_TCREATE 222 +# define ASN1_F_I2A_ASN1_OBJECT 126 +# define ASN1_F_I2D_ASN1_BIO_STREAM 211 +# define ASN1_F_I2D_ASN1_OBJECT 143 +# define ASN1_F_I2D_DSA_PUBKEY 161 +# define ASN1_F_I2D_EC_PUBKEY 181 +# define ASN1_F_I2D_PRIVATEKEY 163 +# define ASN1_F_I2D_PUBLICKEY 164 +# define ASN1_F_I2D_RSA_PUBKEY 165 +# define ASN1_F_LONG_C2I 166 +# define ASN1_F_NDEF_PREFIX 127 +# define ASN1_F_NDEF_SUFFIX 136 +# define ASN1_F_OID_MODULE_INIT 174 +# define ASN1_F_PARSE_TAGGING 182 +# define ASN1_F_PKCS5_PBE2_SET_IV 167 +# define ASN1_F_PKCS5_PBE2_SET_SCRYPT 231 +# define ASN1_F_PKCS5_PBE_SET 202 +# define ASN1_F_PKCS5_PBE_SET0_ALGOR 215 +# define ASN1_F_PKCS5_PBKDF2_SET 219 +# define ASN1_F_PKCS5_SCRYPT_SET 232 +# define ASN1_F_SMIME_READ_ASN1 212 +# define ASN1_F_SMIME_TEXT 213 +# define ASN1_F_STABLE_GET 138 +# define ASN1_F_STBL_MODULE_INIT 223 +# define ASN1_F_UINT32_C2I 105 +# define ASN1_F_UINT32_NEW 139 +# define ASN1_F_UINT64_C2I 112 +# define ASN1_F_UINT64_NEW 141 +# define ASN1_F_X509_CRL_ADD0_REVOKED 169 +# define ASN1_F_X509_INFO_NEW 170 +# define ASN1_F_X509_NAME_ENCODE 203 +# define ASN1_F_X509_NAME_EX_D2I 158 +# define ASN1_F_X509_NAME_EX_NEW 171 +# define ASN1_F_X509_PKEY_NEW 173 + +/* + * ASN1 reason codes. + */ +# define ASN1_R_ADDING_OBJECT 171 +# define ASN1_R_ASN1_PARSE_ERROR 203 +# define ASN1_R_ASN1_SIG_PARSE_ERROR 204 +# define ASN1_R_AUX_ERROR 100 +# define ASN1_R_BAD_OBJECT_HEADER 102 +# define ASN1_R_BAD_TEMPLATE 230 +# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214 +# define ASN1_R_BN_LIB 105 +# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106 +# define ASN1_R_BUFFER_TOO_SMALL 107 +# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108 +# define ASN1_R_CONTEXT_NOT_INITIALISED 217 +# define ASN1_R_DATA_IS_WRONG 109 +# define ASN1_R_DECODE_ERROR 110 +# define ASN1_R_DEPTH_EXCEEDED 174 +# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198 +# define ASN1_R_ENCODE_ERROR 112 +# define ASN1_R_ERROR_GETTING_TIME 173 +# define ASN1_R_ERROR_LOADING_SECTION 172 +# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114 +# define ASN1_R_EXPECTING_AN_INTEGER 115 +# define ASN1_R_EXPECTING_AN_OBJECT 116 +# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119 +# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120 +# define ASN1_R_FIELD_MISSING 121 +# define ASN1_R_FIRST_NUM_TOO_LARGE 122 +# define ASN1_R_HEADER_TOO_LONG 123 +# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175 +# define ASN1_R_ILLEGAL_BOOLEAN 176 +# define ASN1_R_ILLEGAL_CHARACTERS 124 +# define ASN1_R_ILLEGAL_FORMAT 177 +# define ASN1_R_ILLEGAL_HEX 178 +# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179 +# define ASN1_R_ILLEGAL_INTEGER 180 +# define ASN1_R_ILLEGAL_NEGATIVE_VALUE 226 +# define ASN1_R_ILLEGAL_NESTED_TAGGING 181 +# define ASN1_R_ILLEGAL_NULL 125 +# define ASN1_R_ILLEGAL_NULL_VALUE 182 +# define ASN1_R_ILLEGAL_OBJECT 183 +# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126 +# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170 +# define ASN1_R_ILLEGAL_PADDING 221 +# define ASN1_R_ILLEGAL_TAGGED_ANY 127 +# define ASN1_R_ILLEGAL_TIME_VALUE 184 +# define ASN1_R_ILLEGAL_ZERO_CONTENT 222 +# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185 +# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128 +# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220 +# define ASN1_R_INVALID_BMPSTRING_LENGTH 129 +# define ASN1_R_INVALID_DIGIT 130 +# define ASN1_R_INVALID_MIME_TYPE 205 +# define ASN1_R_INVALID_MODIFIER 186 +# define ASN1_R_INVALID_NUMBER 187 +# define ASN1_R_INVALID_OBJECT_ENCODING 216 +# define ASN1_R_INVALID_SCRYPT_PARAMETERS 227 +# define ASN1_R_INVALID_SEPARATOR 131 +# define ASN1_R_INVALID_STRING_TABLE_VALUE 218 +# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133 +# define ASN1_R_INVALID_UTF8STRING 134 +# define ASN1_R_INVALID_VALUE 219 +# define ASN1_R_LIST_ERROR 188 +# define ASN1_R_MIME_NO_CONTENT_TYPE 206 +# define ASN1_R_MIME_PARSE_ERROR 207 +# define ASN1_R_MIME_SIG_PARSE_ERROR 208 +# define ASN1_R_MISSING_EOC 137 +# define ASN1_R_MISSING_SECOND_NUMBER 138 +# define ASN1_R_MISSING_VALUE 189 +# define ASN1_R_MSTRING_NOT_UNIVERSAL 139 +# define ASN1_R_MSTRING_WRONG_TAG 140 +# define ASN1_R_NESTED_ASN1_STRING 197 +# define ASN1_R_NESTED_TOO_DEEP 201 +# define ASN1_R_NON_HEX_CHARACTERS 141 +# define ASN1_R_NOT_ASCII_FORMAT 190 +# define ASN1_R_NOT_ENOUGH_DATA 142 +# define ASN1_R_NO_CONTENT_TYPE 209 +# define ASN1_R_NO_MATCHING_CHOICE_TYPE 143 +# define ASN1_R_NO_MULTIPART_BODY_FAILURE 210 +# define ASN1_R_NO_MULTIPART_BOUNDARY 211 +# define ASN1_R_NO_SIG_CONTENT_TYPE 212 +# define ASN1_R_NULL_IS_WRONG_LENGTH 144 +# define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191 +# define ASN1_R_ODD_NUMBER_OF_CHARS 145 +# define ASN1_R_SECOND_NUMBER_TOO_LARGE 147 +# define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148 +# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149 +# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192 +# define ASN1_R_SHORT_LINE 150 +# define ASN1_R_SIG_INVALID_MIME_TYPE 213 +# define ASN1_R_STREAMING_NOT_SUPPORTED 202 +# define ASN1_R_STRING_TOO_LONG 151 +# define ASN1_R_STRING_TOO_SHORT 152 +# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154 +# define ASN1_R_TIME_NOT_ASCII_FORMAT 193 +# define ASN1_R_TOO_LARGE 223 +# define ASN1_R_TOO_LONG 155 +# define ASN1_R_TOO_SMALL 224 +# define ASN1_R_TYPE_NOT_CONSTRUCTED 156 +# define ASN1_R_TYPE_NOT_PRIMITIVE 195 +# define ASN1_R_UNEXPECTED_EOC 159 +# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215 +# define ASN1_R_UNKNOWN_FORMAT 160 +# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161 +# define ASN1_R_UNKNOWN_OBJECT_TYPE 162 +# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163 +# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199 +# define ASN1_R_UNKNOWN_TAG 194 +# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164 +# define ASN1_R_UNSUPPORTED_CIPHER 228 +# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167 +# define ASN1_R_UNSUPPORTED_TYPE 196 +# define ASN1_R_WRONG_INTEGER_TYPE 225 +# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +# define ASN1_R_WRONG_TAG 168 + +#endif diff --git a/openSSL/lin32/include/openssl/asn1t.h b/openSSL/lin32/include/openssl/asn1t.h new file mode 100644 index 0000000..a450ba0 --- /dev/null +++ b/openSSL/lin32/include/openssl/asn1t.h @@ -0,0 +1,945 @@ +/* + * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1T_H +# define HEADER_ASN1T_H + +# include +# include +# include + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +/* ASN1 template defines, structures and functions */ + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */ +# define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)(iptr)) + +/* Macros for start and end of ASN1_ITEM definition */ + +# define ASN1_ITEM_start(itname) \ + const ASN1_ITEM itname##_it = { + +# define static_ASN1_ITEM_start(itname) \ + static const ASN1_ITEM itname##_it = { + +# define ASN1_ITEM_end(itname) \ + }; + +# else + +/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */ +# define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)((iptr)())) + +/* Macros for start and end of ASN1_ITEM definition */ + +# define ASN1_ITEM_start(itname) \ + const ASN1_ITEM * itname##_it(void) \ + { \ + static const ASN1_ITEM local_it = { + +# define static_ASN1_ITEM_start(itname) \ + static ASN1_ITEM_start(itname) + +# define ASN1_ITEM_end(itname) \ + }; \ + return &local_it; \ + } + +# endif + +/* Macros to aid ASN1 template writing */ + +# define ASN1_ITEM_TEMPLATE(tname) \ + static const ASN1_TEMPLATE tname##_item_tt + +# define ASN1_ITEM_TEMPLATE_END(tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_PRIMITIVE,\ + -1,\ + &tname##_item_tt,\ + 0,\ + NULL,\ + 0,\ + #tname \ + ASN1_ITEM_end(tname) +# define static_ASN1_ITEM_TEMPLATE_END(tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_PRIMITIVE,\ + -1,\ + &tname##_item_tt,\ + 0,\ + NULL,\ + 0,\ + #tname \ + ASN1_ITEM_end(tname) + +/* This is a ASN1 type which just embeds a template */ + +/*- + * This pair helps declare a SEQUENCE. We can do: + * + * ASN1_SEQUENCE(stname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END(stname) + * + * This will produce an ASN1_ITEM called stname_it + * for a structure called stname. + * + * If you want the same structure but a different + * name then use: + * + * ASN1_SEQUENCE(itname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END_name(stname, itname) + * + * This will create an item called itname_it using + * a structure called stname. + */ + +# define ASN1_SEQUENCE(tname) \ + static const ASN1_TEMPLATE tname##_seq_tt[] + +# define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname) + +# define static_ASN1_SEQUENCE_END(stname) static_ASN1_SEQUENCE_END_name(stname, stname) + +# define ASN1_SEQUENCE_END_name(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #tname \ + ASN1_ITEM_end(tname) + +# define static_ASN1_SEQUENCE_END_name(stname, tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_NDEF_SEQUENCE(tname) \ + ASN1_SEQUENCE(tname) + +# define ASN1_NDEF_SEQUENCE_cb(tname, cb) \ + ASN1_SEQUENCE_cb(tname, cb) + +# define ASN1_SEQUENCE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_BROKEN_SEQUENCE(tname) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_BROKEN, 0, 0, 0, 0}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_SEQUENCE_ref(tname, cb) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), offsetof(tname, lock), cb, 0}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_SEQUENCE_enc(tname, enc, cb) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc)}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_NDEF_SEQUENCE_END(tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(tname),\ + #tname \ + ASN1_ITEM_end(tname) +# define static_ASN1_NDEF_SEQUENCE_END(tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(tname),\ + #tname \ + ASN1_ITEM_end(tname) + +# define ASN1_BROKEN_SEQUENCE_END(stname) ASN1_SEQUENCE_END_ref(stname, stname) +# define static_ASN1_BROKEN_SEQUENCE_END(stname) \ + static_ASN1_SEQUENCE_END_ref(stname, stname) + +# define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) + +# define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) +# define static_ASN1_SEQUENCE_END_cb(stname, tname) static_ASN1_SEQUENCE_END_ref(stname, tname) + +# define ASN1_SEQUENCE_END_ref(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #tname \ + ASN1_ITEM_end(tname) +# define static_ASN1_SEQUENCE_END_ref(stname, tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +/*- + * This pair helps declare a CHOICE type. We can do: + * + * ASN1_CHOICE(chname) = { + * ... CHOICE options ... + * ASN1_CHOICE_END(chname) + * + * This will produce an ASN1_ITEM called chname_it + * for a structure called chname. The structure + * definition must look like this: + * typedef struct { + * int type; + * union { + * ASN1_SOMETHING *opt1; + * ASN1_SOMEOTHER *opt2; + * } value; + * } chname; + * + * the name of the selector must be 'type'. + * to use an alternative selector name use the + * ASN1_CHOICE_END_selector() version. + */ + +# define ASN1_CHOICE(tname) \ + static const ASN1_TEMPLATE tname##_ch_tt[] + +# define ASN1_CHOICE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \ + ASN1_CHOICE(tname) + +# define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname) + +# define static_ASN1_CHOICE_END(stname) static_ASN1_CHOICE_END_name(stname, stname) + +# define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type) + +# define static_ASN1_CHOICE_END_name(stname, tname) static_ASN1_CHOICE_END_selector(stname, tname, type) + +# define ASN1_CHOICE_END_selector(stname, tname, selname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE,\ + offsetof(stname,selname) ,\ + tname##_ch_tt,\ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define static_ASN1_CHOICE_END_selector(stname, tname, selname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE,\ + offsetof(stname,selname) ,\ + tname##_ch_tt,\ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_CHOICE_END_cb(stname, tname, selname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE,\ + offsetof(stname,selname) ,\ + tname##_ch_tt,\ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +/* This helps with the template wrapper form of ASN1_ITEM */ + +# define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type) { \ + (flags), (tag), 0,\ + #name, ASN1_ITEM_ref(type) } + +/* These help with SEQUENCE or CHOICE components */ + +/* used to declare other types */ + +# define ASN1_EX_TYPE(flags, tag, stname, field, type) { \ + (flags), (tag), offsetof(stname, field),\ + #field, ASN1_ITEM_ref(type) } + +/* implicit and explicit helper macros */ + +# define ASN1_IMP_EX(stname, field, type, tag, ex) \ + ASN1_EX_TYPE(ASN1_TFLG_IMPLICIT | (ex), tag, stname, field, type) + +# define ASN1_EXP_EX(stname, field, type, tag, ex) \ + ASN1_EX_TYPE(ASN1_TFLG_EXPLICIT | (ex), tag, stname, field, type) + +/* Any defined by macros: the field used is in the table itself */ + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION +# define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) } +# define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) } +# else +# define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, tblname##_adb } +# define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, tblname##_adb } +# endif +/* Plain simple type */ +# define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0,0, stname, field, type) +/* Embedded simple type */ +# define ASN1_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_EMBED,0, stname, field, type) + +/* OPTIONAL simple type */ +# define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type) +# define ASN1_OPT_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED, 0, stname, field, type) + +/* IMPLICIT tagged simple type */ +# define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0) +# define ASN1_IMP_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_EMBED) + +/* IMPLICIT tagged OPTIONAL simple type */ +# define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) +# define ASN1_IMP_OPT_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED) + +/* Same as above but EXPLICIT */ + +# define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0) +# define ASN1_EXP_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_EMBED) +# define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) +# define ASN1_EXP_OPT_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED) + +/* SEQUENCE OF type */ +# define ASN1_SEQUENCE_OF(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, stname, field, type) + +/* OPTIONAL SEQUENCE OF */ +# define ASN1_SEQUENCE_OF_OPT(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type) + +/* Same as above but for SET OF */ + +# define ASN1_SET_OF(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SET_OF, 0, stname, field, type) + +# define ASN1_SET_OF_OPT(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type) + +/* Finally compound types of SEQUENCE, SET, IMPLICIT, EXPLICIT and OPTIONAL */ + +# define ASN1_IMP_SET_OF(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF) + +# define ASN1_EXP_SET_OF(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF) + +# define ASN1_IMP_SET_OF_OPT(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL) + +# define ASN1_EXP_SET_OF_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL) + +# define ASN1_IMP_SEQUENCE_OF(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF) + +# define ASN1_IMP_SEQUENCE_OF_OPT(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL) + +# define ASN1_EXP_SEQUENCE_OF(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF) + +# define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL) + +/* EXPLICIT using indefinite length constructed form */ +# define ASN1_NDEF_EXP(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF) + +/* EXPLICIT OPTIONAL using indefinite length constructed form */ +# define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_NDEF) + +/* Macros for the ASN1_ADB structure */ + +# define ASN1_ADB(name) \ + static const ASN1_ADB_TABLE name##_adbtbl[] + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +# define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \ + ;\ + static const ASN1_ADB name##_adb = {\ + flags,\ + offsetof(name, field),\ + adb_cb,\ + name##_adbtbl,\ + sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\ + def,\ + none\ + } + +# else + +# define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \ + ;\ + static const ASN1_ITEM *name##_adb(void) \ + { \ + static const ASN1_ADB internal_adb = \ + {\ + flags,\ + offsetof(name, field),\ + adb_cb,\ + name##_adbtbl,\ + sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\ + def,\ + none\ + }; \ + return (const ASN1_ITEM *) &internal_adb; \ + } \ + void dummy_function(void) + +# endif + +# define ADB_ENTRY(val, template) {val, template} + +# define ASN1_ADB_TEMPLATE(name) \ + static const ASN1_TEMPLATE name##_tt + +/* + * This is the ASN1 template structure that defines a wrapper round the + * actual type. It determines the actual position of the field in the value + * structure, various flags such as OPTIONAL and the field name. + */ + +struct ASN1_TEMPLATE_st { + unsigned long flags; /* Various flags */ + long tag; /* tag, not used if no tagging */ + unsigned long offset; /* Offset of this field in structure */ + const char *field_name; /* Field name */ + ASN1_ITEM_EXP *item; /* Relevant ASN1_ITEM or ASN1_ADB */ +}; + +/* Macro to extract ASN1_ITEM and ASN1_ADB pointer from ASN1_TEMPLATE */ + +# define ASN1_TEMPLATE_item(t) (t->item_ptr) +# define ASN1_TEMPLATE_adb(t) (t->item_ptr) + +typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE; +typedef struct ASN1_ADB_st ASN1_ADB; + +struct ASN1_ADB_st { + unsigned long flags; /* Various flags */ + unsigned long offset; /* Offset of selector field */ + int (*adb_cb)(long *psel); /* Application callback */ + const ASN1_ADB_TABLE *tbl; /* Table of possible types */ + long tblcount; /* Number of entries in tbl */ + const ASN1_TEMPLATE *default_tt; /* Type to use if no match */ + const ASN1_TEMPLATE *null_tt; /* Type to use if selector is NULL */ +}; + +struct ASN1_ADB_TABLE_st { + long value; /* NID for an object or value for an int */ + const ASN1_TEMPLATE tt; /* item for this value */ +}; + +/* template flags */ + +/* Field is optional */ +# define ASN1_TFLG_OPTIONAL (0x1) + +/* Field is a SET OF */ +# define ASN1_TFLG_SET_OF (0x1 << 1) + +/* Field is a SEQUENCE OF */ +# define ASN1_TFLG_SEQUENCE_OF (0x2 << 1) + +/* + * Special case: this refers to a SET OF that will be sorted into DER order + * when encoded *and* the corresponding STACK will be modified to match the + * new order. + */ +# define ASN1_TFLG_SET_ORDER (0x3 << 1) + +/* Mask for SET OF or SEQUENCE OF */ +# define ASN1_TFLG_SK_MASK (0x3 << 1) + +/* + * These flags mean the tag should be taken from the tag field. If EXPLICIT + * then the underlying type is used for the inner tag. + */ + +/* IMPLICIT tagging */ +# define ASN1_TFLG_IMPTAG (0x1 << 3) + +/* EXPLICIT tagging, inner tag from underlying type */ +# define ASN1_TFLG_EXPTAG (0x2 << 3) + +# define ASN1_TFLG_TAG_MASK (0x3 << 3) + +/* context specific IMPLICIT */ +# define ASN1_TFLG_IMPLICIT (ASN1_TFLG_IMPTAG|ASN1_TFLG_CONTEXT) + +/* context specific EXPLICIT */ +# define ASN1_TFLG_EXPLICIT (ASN1_TFLG_EXPTAG|ASN1_TFLG_CONTEXT) + +/* + * If tagging is in force these determine the type of tag to use. Otherwise + * the tag is determined by the underlying type. These values reflect the + * actual octet format. + */ + +/* Universal tag */ +# define ASN1_TFLG_UNIVERSAL (0x0<<6) +/* Application tag */ +# define ASN1_TFLG_APPLICATION (0x1<<6) +/* Context specific tag */ +# define ASN1_TFLG_CONTEXT (0x2<<6) +/* Private tag */ +# define ASN1_TFLG_PRIVATE (0x3<<6) + +# define ASN1_TFLG_TAG_CLASS (0x3<<6) + +/* + * These are for ANY DEFINED BY type. In this case the 'item' field points to + * an ASN1_ADB structure which contains a table of values to decode the + * relevant type + */ + +# define ASN1_TFLG_ADB_MASK (0x3<<8) + +# define ASN1_TFLG_ADB_OID (0x1<<8) + +# define ASN1_TFLG_ADB_INT (0x1<<9) + +/* + * This flag when present in a SEQUENCE OF, SET OF or EXPLICIT causes + * indefinite length constructed encoding to be used if required. + */ + +# define ASN1_TFLG_NDEF (0x1<<11) + +/* Field is embedded and not a pointer */ +# define ASN1_TFLG_EMBED (0x1 << 12) + +/* This is the actual ASN1 item itself */ + +struct ASN1_ITEM_st { + char itype; /* The item type, primitive, SEQUENCE, CHOICE + * or extern */ + long utype; /* underlying type */ + const ASN1_TEMPLATE *templates; /* If SEQUENCE or CHOICE this contains + * the contents */ + long tcount; /* Number of templates if SEQUENCE or CHOICE */ + const void *funcs; /* functions that handle this type */ + long size; /* Structure size (usually) */ + const char *sname; /* Structure name */ +}; + +/*- + * These are values for the itype field and + * determine how the type is interpreted. + * + * For PRIMITIVE types the underlying type + * determines the behaviour if items is NULL. + * + * Otherwise templates must contain a single + * template and the type is treated in the + * same way as the type specified in the template. + * + * For SEQUENCE types the templates field points + * to the members, the size field is the + * structure size. + * + * For CHOICE types the templates field points + * to each possible member (typically a union) + * and the 'size' field is the offset of the + * selector. + * + * The 'funcs' field is used for application + * specific functions. + * + * The EXTERN type uses a new style d2i/i2d. + * The new style should be used where possible + * because it avoids things like the d2i IMPLICIT + * hack. + * + * MSTRING is a multiple string type, it is used + * for a CHOICE of character strings where the + * actual strings all occupy an ASN1_STRING + * structure. In this case the 'utype' field + * has a special meaning, it is used as a mask + * of acceptable types using the B_ASN1 constants. + * + * NDEF_SEQUENCE is the same as SEQUENCE except + * that it will use indefinite length constructed + * encoding if requested. + * + */ + +# define ASN1_ITYPE_PRIMITIVE 0x0 + +# define ASN1_ITYPE_SEQUENCE 0x1 + +# define ASN1_ITYPE_CHOICE 0x2 + +# define ASN1_ITYPE_EXTERN 0x4 + +# define ASN1_ITYPE_MSTRING 0x5 + +# define ASN1_ITYPE_NDEF_SEQUENCE 0x6 + +/* + * Cache for ASN1 tag and length, so we don't keep re-reading it for things + * like CHOICE + */ + +struct ASN1_TLC_st { + char valid; /* Values below are valid */ + int ret; /* return value */ + long plen; /* length */ + int ptag; /* class value */ + int pclass; /* class value */ + int hdrlen; /* header length */ +}; + +/* Typedefs for ASN1 function pointers */ +typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx); + +typedef int ASN1_ex_i2d(ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); +typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it); +typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it); + +typedef int ASN1_ex_print_func(BIO *out, ASN1_VALUE **pval, + int indent, const char *fname, + const ASN1_PCTX *pctx); + +typedef int ASN1_primitive_i2c(ASN1_VALUE **pval, unsigned char *cont, + int *putype, const ASN1_ITEM *it); +typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont, + int len, int utype, char *free_cont, + const ASN1_ITEM *it); +typedef int ASN1_primitive_print(BIO *out, ASN1_VALUE **pval, + const ASN1_ITEM *it, int indent, + const ASN1_PCTX *pctx); + +typedef struct ASN1_EXTERN_FUNCS_st { + void *app_data; + ASN1_ex_new_func *asn1_ex_new; + ASN1_ex_free_func *asn1_ex_free; + ASN1_ex_free_func *asn1_ex_clear; + ASN1_ex_d2i *asn1_ex_d2i; + ASN1_ex_i2d *asn1_ex_i2d; + ASN1_ex_print_func *asn1_ex_print; +} ASN1_EXTERN_FUNCS; + +typedef struct ASN1_PRIMITIVE_FUNCS_st { + void *app_data; + unsigned long flags; + ASN1_ex_new_func *prim_new; + ASN1_ex_free_func *prim_free; + ASN1_ex_free_func *prim_clear; + ASN1_primitive_c2i *prim_c2i; + ASN1_primitive_i2c *prim_i2c; + ASN1_primitive_print *prim_print; +} ASN1_PRIMITIVE_FUNCS; + +/* + * This is the ASN1_AUX structure: it handles various miscellaneous + * requirements. For example the use of reference counts and an informational + * callback. The "informational callback" is called at various points during + * the ASN1 encoding and decoding. It can be used to provide minor + * customisation of the structures used. This is most useful where the + * supplied routines *almost* do the right thing but need some extra help at + * a few points. If the callback returns zero then it is assumed a fatal + * error has occurred and the main operation should be abandoned. If major + * changes in the default behaviour are required then an external type is + * more appropriate. + */ + +typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it, + void *exarg); + +typedef struct ASN1_AUX_st { + void *app_data; + int flags; + int ref_offset; /* Offset of reference value */ + int ref_lock; /* Lock type to use */ + ASN1_aux_cb *asn1_cb; + int enc_offset; /* Offset of ASN1_ENCODING structure */ +} ASN1_AUX; + +/* For print related callbacks exarg points to this structure */ +typedef struct ASN1_PRINT_ARG_st { + BIO *out; + int indent; + const ASN1_PCTX *pctx; +} ASN1_PRINT_ARG; + +/* For streaming related callbacks exarg points to this structure */ +typedef struct ASN1_STREAM_ARG_st { + /* BIO to stream through */ + BIO *out; + /* BIO with filters appended */ + BIO *ndef_bio; + /* Streaming I/O boundary */ + unsigned char **boundary; +} ASN1_STREAM_ARG; + +/* Flags in ASN1_AUX */ + +/* Use a reference count */ +# define ASN1_AFLG_REFCOUNT 1 +/* Save the encoding of structure (useful for signatures) */ +# define ASN1_AFLG_ENCODING 2 +/* The Sequence length is invalid */ +# define ASN1_AFLG_BROKEN 4 + +/* operation values for asn1_cb */ + +# define ASN1_OP_NEW_PRE 0 +# define ASN1_OP_NEW_POST 1 +# define ASN1_OP_FREE_PRE 2 +# define ASN1_OP_FREE_POST 3 +# define ASN1_OP_D2I_PRE 4 +# define ASN1_OP_D2I_POST 5 +# define ASN1_OP_I2D_PRE 6 +# define ASN1_OP_I2D_POST 7 +# define ASN1_OP_PRINT_PRE 8 +# define ASN1_OP_PRINT_POST 9 +# define ASN1_OP_STREAM_PRE 10 +# define ASN1_OP_STREAM_POST 11 +# define ASN1_OP_DETACHED_PRE 12 +# define ASN1_OP_DETACHED_POST 13 + +/* Macro to implement a primitive type */ +# define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0) +# define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \ + ASN1_ITEM_start(itname) \ + ASN1_ITYPE_PRIMITIVE, V_##vname, NULL, 0, NULL, ex, #itname \ + ASN1_ITEM_end(itname) + +/* Macro to implement a multi string type */ +# define IMPLEMENT_ASN1_MSTRING(itname, mask) \ + ASN1_ITEM_start(itname) \ + ASN1_ITYPE_MSTRING, mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname \ + ASN1_ITEM_end(itname) + +# define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \ + ASN1_ITEM_start(sname) \ + ASN1_ITYPE_EXTERN, \ + tag, \ + NULL, \ + 0, \ + &fptrs, \ + 0, \ + #sname \ + ASN1_ITEM_end(sname) + +/* Macro to implement standard functions in terms of ASN1_ITEM structures */ + +# define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname) + +# define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, itname) + +# define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \ + IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname) + +# define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname) + +# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname) + +# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \ + pre stname *fname##_new(void) \ + { \ + return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \ + } \ + pre void fname##_free(stname *a) \ + { \ + ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \ + } + +# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \ + stname *fname##_new(void) \ + { \ + return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \ + } \ + void fname##_free(stname *a) \ + { \ + ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \ + } + +# define IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) + +# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \ + stname *d2i_##fname(stname **a, const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\ + } \ + int i2d_##fname(stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ + } + +# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \ + int i2d_##stname##_NDEF(stname *a, unsigned char **out) \ + { \ + return ASN1_item_ndef_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname));\ + } + +# define IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(stname) \ + static stname *d2i_##stname(stname **a, \ + const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, \ + ASN1_ITEM_rptr(stname)); \ + } \ + static int i2d_##stname(stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((ASN1_VALUE *)a, out, \ + ASN1_ITEM_rptr(stname)); \ + } + +/* + * This includes evil casts to remove const: they will go away when full ASN1 + * constification is done. + */ +# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ + stname *d2i_##fname(stname **a, const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\ + } \ + int i2d_##fname(const stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ + } + +# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \ + stname * stname##_dup(stname *x) \ + { \ + return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \ + } + +# define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \ + IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname) + +# define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \ + int fname##_print_ctx(BIO *out, stname *x, int indent, \ + const ASN1_PCTX *pctx) \ + { \ + return ASN1_item_print(out, (ASN1_VALUE *)x, indent, \ + ASN1_ITEM_rptr(itname), pctx); \ + } + +# define IMPLEMENT_ASN1_FUNCTIONS_const(name) \ + IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name) + +# define IMPLEMENT_ASN1_FUNCTIONS_const_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) + +/* external definitions for primitive types */ + +DECLARE_ASN1_ITEM(ASN1_BOOLEAN) +DECLARE_ASN1_ITEM(ASN1_TBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_FBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_SEQUENCE) +DECLARE_ASN1_ITEM(CBIGNUM) +DECLARE_ASN1_ITEM(BIGNUM) +DECLARE_ASN1_ITEM(INT32) +DECLARE_ASN1_ITEM(ZINT32) +DECLARE_ASN1_ITEM(UINT32) +DECLARE_ASN1_ITEM(ZUINT32) +DECLARE_ASN1_ITEM(INT64) +DECLARE_ASN1_ITEM(ZINT64) +DECLARE_ASN1_ITEM(UINT64) +DECLARE_ASN1_ITEM(ZUINT64) + +# if OPENSSL_API_COMPAT < 0x10200000L +/* + * LONG and ZLONG are strongly discouraged for use as stored data, as the + * underlying C type (long) differs in size depending on the architecture. + * They are designed with 32-bit longs in mind. + */ +DECLARE_ASN1_ITEM(LONG) +DECLARE_ASN1_ITEM(ZLONG) +# endif + +DEFINE_STACK_OF(ASN1_VALUE) + +/* Functions used internally by the ASN1 code */ + +int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it); +void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it); + +int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx); + +int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin32/include/openssl/async.h b/openSSL/lin32/include/openssl/async.h new file mode 100644 index 0000000..7052b89 --- /dev/null +++ b/openSSL/lin32/include/openssl/async.h @@ -0,0 +1,76 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifndef HEADER_ASYNC_H +# define HEADER_ASYNC_H + +#if defined(_WIN32) +# if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include to use this */ +#define OSSL_ASYNC_FD HANDLE +#define OSSL_BAD_ASYNC_FD INVALID_HANDLE_VALUE +# endif +#else +#define OSSL_ASYNC_FD int +#define OSSL_BAD_ASYNC_FD -1 +#endif +# include + + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct async_job_st ASYNC_JOB; +typedef struct async_wait_ctx_st ASYNC_WAIT_CTX; + +#define ASYNC_ERR 0 +#define ASYNC_NO_JOBS 1 +#define ASYNC_PAUSE 2 +#define ASYNC_FINISH 3 + +int ASYNC_init_thread(size_t max_size, size_t init_size); +void ASYNC_cleanup_thread(void); + +#ifdef OSSL_ASYNC_FD +ASYNC_WAIT_CTX *ASYNC_WAIT_CTX_new(void); +void ASYNC_WAIT_CTX_free(ASYNC_WAIT_CTX *ctx); +int ASYNC_WAIT_CTX_set_wait_fd(ASYNC_WAIT_CTX *ctx, const void *key, + OSSL_ASYNC_FD fd, + void *custom_data, + void (*cleanup)(ASYNC_WAIT_CTX *, const void *, + OSSL_ASYNC_FD, void *)); +int ASYNC_WAIT_CTX_get_fd(ASYNC_WAIT_CTX *ctx, const void *key, + OSSL_ASYNC_FD *fd, void **custom_data); +int ASYNC_WAIT_CTX_get_all_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *fd, + size_t *numfds); +int ASYNC_WAIT_CTX_get_changed_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key); +#endif + +int ASYNC_is_capable(void); + +int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret, + int (*func)(void *), void *args, size_t size); +int ASYNC_pause_job(void); + +ASYNC_JOB *ASYNC_get_current_job(void); +ASYNC_WAIT_CTX *ASYNC_get_wait_ctx(ASYNC_JOB *job); +void ASYNC_block_pause(void); +void ASYNC_unblock_pause(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/asyncerr.h b/openSSL/lin32/include/openssl/asyncerr.h new file mode 100644 index 0000000..91afbbb --- /dev/null +++ b/openSSL/lin32/include/openssl/asyncerr.h @@ -0,0 +1,42 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASYNCERR_H +# define HEADER_ASYNCERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ASYNC_strings(void); + +/* + * ASYNC function codes. + */ +# define ASYNC_F_ASYNC_CTX_NEW 100 +# define ASYNC_F_ASYNC_INIT_THREAD 101 +# define ASYNC_F_ASYNC_JOB_NEW 102 +# define ASYNC_F_ASYNC_PAUSE_JOB 103 +# define ASYNC_F_ASYNC_START_FUNC 104 +# define ASYNC_F_ASYNC_START_JOB 105 +# define ASYNC_F_ASYNC_WAIT_CTX_SET_WAIT_FD 106 + +/* + * ASYNC reason codes. + */ +# define ASYNC_R_FAILED_TO_SET_POOL 101 +# define ASYNC_R_FAILED_TO_SWAP_CONTEXT 102 +# define ASYNC_R_INIT_FAILED 105 +# define ASYNC_R_INVALID_POOL_SIZE 103 + +#endif diff --git a/openSSL/lin32/include/openssl/bio.h b/openSSL/lin32/include/openssl/bio.h new file mode 100644 index 0000000..ae559a5 --- /dev/null +++ b/openSSL/lin32/include/openssl/bio.h @@ -0,0 +1,801 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BIO_H +# define HEADER_BIO_H + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* There are the classes of BIOs */ +# define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */ +# define BIO_TYPE_FILTER 0x0200 +# define BIO_TYPE_SOURCE_SINK 0x0400 + +/* These are the 'types' of BIOs */ +# define BIO_TYPE_NONE 0 +# define BIO_TYPE_MEM ( 1|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_FILE ( 2|BIO_TYPE_SOURCE_SINK) + +# define BIO_TYPE_FD ( 4|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_SOCKET ( 5|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_NULL ( 6|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_SSL ( 7|BIO_TYPE_FILTER) +# define BIO_TYPE_MD ( 8|BIO_TYPE_FILTER) +# define BIO_TYPE_BUFFER ( 9|BIO_TYPE_FILTER) +# define BIO_TYPE_CIPHER (10|BIO_TYPE_FILTER) +# define BIO_TYPE_BASE64 (11|BIO_TYPE_FILTER) +# define BIO_TYPE_CONNECT (12|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_ACCEPT (13|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) + +# define BIO_TYPE_NBIO_TEST (16|BIO_TYPE_FILTER)/* server proxy BIO */ +# define BIO_TYPE_NULL_FILTER (17|BIO_TYPE_FILTER) +# define BIO_TYPE_BIO (19|BIO_TYPE_SOURCE_SINK)/* half a BIO pair */ +# define BIO_TYPE_LINEBUFFER (20|BIO_TYPE_FILTER) +# define BIO_TYPE_DGRAM (21|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_ASN1 (22|BIO_TYPE_FILTER) +# define BIO_TYPE_COMP (23|BIO_TYPE_FILTER) +# ifndef OPENSSL_NO_SCTP +# define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# endif + +#define BIO_TYPE_START 128 + +/* + * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. + * BIO_set_fp(in,stdin,BIO_NOCLOSE); + */ +# define BIO_NOCLOSE 0x00 +# define BIO_CLOSE 0x01 + +/* + * These are used in the following macros and are passed to BIO_ctrl() + */ +# define BIO_CTRL_RESET 1/* opt - rewind/zero etc */ +# define BIO_CTRL_EOF 2/* opt - are we at the eof */ +# define BIO_CTRL_INFO 3/* opt - extra tit-bits */ +# define BIO_CTRL_SET 4/* man - set the 'IO' type */ +# define BIO_CTRL_GET 5/* man - get the 'IO' type */ +# define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */ +# define BIO_CTRL_POP 7/* opt - internal, used to signify change */ +# define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */ +# define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */ +# define BIO_CTRL_PENDING 10/* opt - is their more data buffered */ +# define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */ +# define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */ +# define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */ +# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */ +# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */ + +# define BIO_CTRL_PEEK 29/* BIO_f_buffer special */ +# define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */ + +/* dgram BIO stuff */ +# define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */ +# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected + * socket to be passed in */ +# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */ +# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */ + +# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation tiemd out */ + +/* #ifdef IP_MTU_DISCOVER */ +# define BIO_CTRL_DGRAM_MTU_DISCOVER 39/* set DF bit on egress packets */ +/* #endif */ + +# define BIO_CTRL_DGRAM_QUERY_MTU 40/* as kernel for current MTU */ +# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47 +# define BIO_CTRL_DGRAM_GET_MTU 41/* get cached value for MTU */ +# define BIO_CTRL_DGRAM_SET_MTU 42/* set cached value for MTU. + * want to use this if asking + * the kernel fails */ + +# define BIO_CTRL_DGRAM_MTU_EXCEEDED 43/* check whether the MTU was + * exceed in the previous write + * operation */ + +# define BIO_CTRL_DGRAM_GET_PEER 46 +# define BIO_CTRL_DGRAM_SET_PEER 44/* Destination for the data */ + +# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45/* Next DTLS handshake timeout + * to adjust socket timeouts */ +# define BIO_CTRL_DGRAM_SET_DONT_FRAG 48 + +# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49 + +/* Deliberately outside of OPENSSL_NO_SCTP - used in bss_dgram.c */ +# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 +# ifndef OPENSSL_NO_SCTP +/* SCTP stuff */ +# define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51 +# define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52 +# define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53 +# define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60 +# define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61 +# define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62 +# define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63 +# define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64 +# define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65 +# define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70 +# endif + +# define BIO_CTRL_DGRAM_SET_PEEK_MODE 71 + +/* modifiers */ +# define BIO_FP_READ 0x02 +# define BIO_FP_WRITE 0x04 +# define BIO_FP_APPEND 0x08 +# define BIO_FP_TEXT 0x10 + +# define BIO_FLAGS_READ 0x01 +# define BIO_FLAGS_WRITE 0x02 +# define BIO_FLAGS_IO_SPECIAL 0x04 +# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL) +# define BIO_FLAGS_SHOULD_RETRY 0x08 +# ifndef BIO_FLAGS_UPLINK +/* + * "UPLINK" flag denotes file descriptors provided by application. It + * defaults to 0, as most platforms don't require UPLINK interface. + */ +# define BIO_FLAGS_UPLINK 0 +# endif + +# define BIO_FLAGS_BASE64_NO_NL 0x100 + +/* + * This is used with memory BIOs: + * BIO_FLAGS_MEM_RDONLY means we shouldn't free up or change the data in any way; + * BIO_FLAGS_NONCLEAR_RST means we shouldn't clear data on reset. + */ +# define BIO_FLAGS_MEM_RDONLY 0x200 +# define BIO_FLAGS_NONCLEAR_RST 0x400 +# define BIO_FLAGS_IN_EOF 0x800 + +typedef union bio_addr_st BIO_ADDR; +typedef struct bio_addrinfo_st BIO_ADDRINFO; + +int BIO_get_new_index(void); +void BIO_set_flags(BIO *b, int flags); +int BIO_test_flags(const BIO *b, int flags); +void BIO_clear_flags(BIO *b, int flags); + +# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0)) +# define BIO_set_retry_special(b) \ + BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_read(b) \ + BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_write(b) \ + BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY)) + +/* These are normally used internally in BIOs */ +# define BIO_clear_retry_flags(b) \ + BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_get_retry_flags(b) \ + BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) + +/* These should be used by the application to tell why we should retry */ +# define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ) +# define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE) +# define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL) +# define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS) +# define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY) + +/* + * The next three are used in conjunction with the BIO_should_io_special() + * condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int + * *reason); will walk the BIO stack and return the 'reason' for the special + * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return + * the code. + */ +/* + * Returned from the SSL bio when the certificate retrieval code had an error + */ +# define BIO_RR_SSL_X509_LOOKUP 0x01 +/* Returned from the connect BIO when a connect would have blocked */ +# define BIO_RR_CONNECT 0x02 +/* Returned from the accept BIO when an accept would have blocked */ +# define BIO_RR_ACCEPT 0x03 + +/* These are passed by the BIO callback */ +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 + +/* + * The callback is called before and after the underling operation, The + * BIO_CB_RETURN flag indicates if it is after the call + */ +# define BIO_CB_RETURN 0x80 +# define BIO_CB_return(a) ((a)|BIO_CB_RETURN) +# define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN)) +# define BIO_cb_post(a) ((a)&BIO_CB_RETURN) + +typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, + long argl, long ret); +typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp, + size_t len, int argi, + long argl, int ret, size_t *processed); +BIO_callback_fn BIO_get_callback(const BIO *b); +void BIO_set_callback(BIO *b, BIO_callback_fn callback); + +BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b); +void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); + +char *BIO_get_callback_arg(const BIO *b); +void BIO_set_callback_arg(BIO *b, char *arg); + +typedef struct bio_method_st BIO_METHOD; + +const char *BIO_method_name(const BIO *b); +int BIO_method_type(const BIO *b); + +typedef int BIO_info_cb(BIO *, int, int); +typedef BIO_info_cb bio_info_cb; /* backward compatibility */ + +DEFINE_STACK_OF(BIO) + +/* Prefix and suffix callback in ASN1 BIO */ +typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, + void *parg); + +# ifndef OPENSSL_NO_SCTP +/* SCTP parameter structs */ +struct bio_dgram_sctp_sndinfo { + uint16_t snd_sid; + uint16_t snd_flags; + uint32_t snd_ppid; + uint32_t snd_context; +}; + +struct bio_dgram_sctp_rcvinfo { + uint16_t rcv_sid; + uint16_t rcv_ssn; + uint16_t rcv_flags; + uint32_t rcv_ppid; + uint32_t rcv_tsn; + uint32_t rcv_cumtsn; + uint32_t rcv_context; +}; + +struct bio_dgram_sctp_prinfo { + uint16_t pr_policy; + uint32_t pr_value; +}; +# endif + +/* + * #define BIO_CONN_get_param_hostname BIO_ctrl + */ + +# define BIO_C_SET_CONNECT 100 +# define BIO_C_DO_STATE_MACHINE 101 +# define BIO_C_SET_NBIO 102 +/* # define BIO_C_SET_PROXY_PARAM 103 */ +# define BIO_C_SET_FD 104 +# define BIO_C_GET_FD 105 +# define BIO_C_SET_FILE_PTR 106 +# define BIO_C_GET_FILE_PTR 107 +# define BIO_C_SET_FILENAME 108 +# define BIO_C_SET_SSL 109 +# define BIO_C_GET_SSL 110 +# define BIO_C_SET_MD 111 +# define BIO_C_GET_MD 112 +# define BIO_C_GET_CIPHER_STATUS 113 +# define BIO_C_SET_BUF_MEM 114 +# define BIO_C_GET_BUF_MEM_PTR 115 +# define BIO_C_GET_BUFF_NUM_LINES 116 +# define BIO_C_SET_BUFF_SIZE 117 +# define BIO_C_SET_ACCEPT 118 +# define BIO_C_SSL_MODE 119 +# define BIO_C_GET_MD_CTX 120 +/* # define BIO_C_GET_PROXY_PARAM 121 */ +# define BIO_C_SET_BUFF_READ_DATA 122/* data to read first */ +# define BIO_C_GET_CONNECT 123 +# define BIO_C_GET_ACCEPT 124 +# define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125 +# define BIO_C_GET_SSL_NUM_RENEGOTIATES 126 +# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127 +# define BIO_C_FILE_SEEK 128 +# define BIO_C_GET_CIPHER_CTX 129 +# define BIO_C_SET_BUF_MEM_EOF_RETURN 130/* return end of input + * value */ +# define BIO_C_SET_BIND_MODE 131 +# define BIO_C_GET_BIND_MODE 132 +# define BIO_C_FILE_TELL 133 +# define BIO_C_GET_SOCKS 134 +# define BIO_C_SET_SOCKS 135 + +# define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */ +# define BIO_C_GET_WRITE_BUF_SIZE 137 +# define BIO_C_MAKE_BIO_PAIR 138 +# define BIO_C_DESTROY_BIO_PAIR 139 +# define BIO_C_GET_WRITE_GUARANTEE 140 +# define BIO_C_GET_READ_REQUEST 141 +# define BIO_C_SHUTDOWN_WR 142 +# define BIO_C_NREAD0 143 +# define BIO_C_NREAD 144 +# define BIO_C_NWRITE0 145 +# define BIO_C_NWRITE 146 +# define BIO_C_RESET_READ_REQUEST 147 +# define BIO_C_SET_MD_CTX 148 + +# define BIO_C_SET_PREFIX 149 +# define BIO_C_GET_PREFIX 150 +# define BIO_C_SET_SUFFIX 151 +# define BIO_C_GET_SUFFIX 152 + +# define BIO_C_SET_EX_ARG 153 +# define BIO_C_GET_EX_ARG 154 + +# define BIO_C_SET_CONNECT_MODE 155 + +# define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) +# define BIO_get_app_data(s) BIO_get_ex_data(s,0) + +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) + +# ifndef OPENSSL_NO_SOCK +/* IP families we support, for BIO_s_connect() and BIO_s_accept() */ +/* Note: the underlying operating system may not support some of them */ +# define BIO_FAMILY_IPV4 4 +# define BIO_FAMILY_IPV6 6 +# define BIO_FAMILY_IPANY 256 + +/* BIO_s_connect() */ +# define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0, \ + (char *)(name)) +# define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1, \ + (char *)(port)) +# define BIO_set_conn_address(b,addr) BIO_ctrl(b,BIO_C_SET_CONNECT,2, \ + (char *)(addr)) +# define BIO_set_conn_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_CONNECT,3,f) +# define BIO_get_conn_hostname(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0)) +# define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) +# define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) +# define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) + +/* BIO_s_accept() */ +# define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ + (char *)(name)) +# define BIO_set_accept_port(b,port) BIO_ctrl(b,BIO_C_SET_ACCEPT,1, \ + (char *)(port)) +# define BIO_get_accept_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0)) +# define BIO_get_accept_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,1)) +# define BIO_get_peer_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,2)) +# define BIO_get_peer_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,3)) +/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */ +# define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(n)?(void *)"a":NULL) +# define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,3, \ + (char *)(bio)) +# define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) +# define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) + +/* Aliases kept for backward compatibility */ +# define BIO_BIND_NORMAL 0 +# define BIO_BIND_REUSEADDR BIO_SOCK_REUSEADDR +# define BIO_BIND_REUSEADDR_IF_UNUSED BIO_SOCK_REUSEADDR +# define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL) +# define BIO_get_bind_mode(b) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL) + +/* BIO_s_accept() and BIO_s_connect() */ +# define BIO_do_connect(b) BIO_do_handshake(b) +# define BIO_do_accept(b) BIO_do_handshake(b) +# endif /* OPENSSL_NO_SOCK */ + +# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) + +/* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */ +# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) +# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)(c)) + +/* BIO_s_file() */ +# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)(fp)) +# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)(fpp)) + +/* BIO_s_fd() and BIO_s_file() */ +# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL) +# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL) + +/* + * name is cast to lose const, but might be better to route through a + * function so we can do it safely + */ +# ifdef CONST_STRICT +/* + * If you are wondering why this isn't defined, its because CONST_STRICT is + * purely a compile-time kludge to allow const to be checked. + */ +int BIO_read_filename(BIO *b, const char *name); +# else +# define BIO_read_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ,(char *)(name)) +# endif +# define BIO_write_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_WRITE,name) +# define BIO_append_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_APPEND,name) +# define BIO_rw_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name) + +/* + * WARNING WARNING, this ups the reference count on the read bio of the SSL + * structure. This is because the ssl read BIO is now pointed to by the + * next_bio field in the bio. So when you free the BIO, make sure you are + * doing a BIO_free_all() to catch the underlying BIO. + */ +# define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)(ssl)) +# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)(sslp)) +# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL) +# define BIO_set_ssl_renegotiate_bytes(b,num) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL) +# define BIO_get_num_renegotiates(b) \ + BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL) +# define BIO_set_ssl_renegotiate_timeout(b,seconds) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL) + +/* defined in evp.h */ +/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)(md)) */ + +# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)(pp)) +# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)(bm)) +# define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0, \ + (char *)(pp)) +# define BIO_set_mem_eof_return(b,v) \ + BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL) + +/* For the BIO_f_buffer() type */ +# define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL) +# define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL) +# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0) +# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1) +# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf) + +/* Don't use the next one unless you know what you are doing :-) */ +# define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret)) + +# define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL) +# define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL) +# define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL) +# define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL) +# define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) +# define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL) +/* ...pending macros have inappropriate return type */ +size_t BIO_ctrl_pending(BIO *b); +size_t BIO_ctrl_wpending(BIO *b); +# define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL) +# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \ + cbp) +# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb) + +/* For the BIO_f_buffer() type */ +# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL) +# define BIO_buffer_peek(b,s,l) BIO_ctrl(b,BIO_CTRL_PEEK,(l),(s)) + +/* For BIO_s_bio() */ +# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL) +# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL) +# define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2) +# define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL) +# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL) +/* macros with inappropriate type -- but ...pending macros use int too: */ +# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL) +# define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL) +size_t BIO_ctrl_get_write_guarantee(BIO *b); +size_t BIO_ctrl_get_read_request(BIO *b); +int BIO_ctrl_reset_read_request(BIO *b); + +/* ctrl macros for dgram */ +# define BIO_ctrl_dgram_connect(b,peer) \ + (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)(peer)) +# define BIO_ctrl_set_connected(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, 0, (char *)(peer)) +# define BIO_dgram_recv_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) +# define BIO_dgram_send_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) +# define BIO_dgram_get_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) +# define BIO_dgram_set_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) + +#define BIO_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_BIO, l, p, newf, dupf, freef) +int BIO_set_ex_data(BIO *bio, int idx, void *data); +void *BIO_get_ex_data(BIO *bio, int idx); +uint64_t BIO_number_read(BIO *bio); +uint64_t BIO_number_written(BIO *bio); + +/* For BIO_f_asn1() */ +int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix, + asn1_ps_func *prefix_free); +int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix, + asn1_ps_func **pprefix_free); +int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix, + asn1_ps_func *suffix_free); +int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, + asn1_ps_func **psuffix_free); + +const BIO_METHOD *BIO_s_file(void); +BIO *BIO_new_file(const char *filename, const char *mode); +# ifndef OPENSSL_NO_STDIO +BIO *BIO_new_fp(FILE *stream, int close_flag); +# endif +BIO *BIO_new(const BIO_METHOD *type); +int BIO_free(BIO *a); +void BIO_set_data(BIO *a, void *ptr); +void *BIO_get_data(BIO *a); +void BIO_set_init(BIO *a, int init); +int BIO_get_init(BIO *a); +void BIO_set_shutdown(BIO *a, int shut); +int BIO_get_shutdown(BIO *a); +void BIO_vfree(BIO *a); +int BIO_up_ref(BIO *a); +int BIO_read(BIO *b, void *data, int dlen); +int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +int BIO_gets(BIO *bp, char *buf, int size); +int BIO_write(BIO *b, const void *data, int dlen); +int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +int BIO_puts(BIO *bp, const char *buf); +int BIO_indent(BIO *b, int indent, int max); +long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); +long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp); +void *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); +long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); +BIO *BIO_push(BIO *b, BIO *append); +BIO *BIO_pop(BIO *b); +void BIO_free_all(BIO *a); +BIO *BIO_find_type(BIO *b, int bio_type); +BIO *BIO_next(BIO *b); +void BIO_set_next(BIO *b, BIO *next); +BIO *BIO_get_retry_BIO(BIO *bio, int *reason); +int BIO_get_retry_reason(BIO *bio); +void BIO_set_retry_reason(BIO *bio, int reason); +BIO *BIO_dup_chain(BIO *in); + +int BIO_nread0(BIO *bio, char **buf); +int BIO_nread(BIO *bio, char **buf, int num); +int BIO_nwrite0(BIO *bio, char **buf); +int BIO_nwrite(BIO *bio, char **buf, int num); + +long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, + long argl, long ret); + +const BIO_METHOD *BIO_s_mem(void); +const BIO_METHOD *BIO_s_secmem(void); +BIO *BIO_new_mem_buf(const void *buf, int len); +# ifndef OPENSSL_NO_SOCK +const BIO_METHOD *BIO_s_socket(void); +const BIO_METHOD *BIO_s_connect(void); +const BIO_METHOD *BIO_s_accept(void); +# endif +const BIO_METHOD *BIO_s_fd(void); +const BIO_METHOD *BIO_s_log(void); +const BIO_METHOD *BIO_s_bio(void); +const BIO_METHOD *BIO_s_null(void); +const BIO_METHOD *BIO_f_null(void); +const BIO_METHOD *BIO_f_buffer(void); +const BIO_METHOD *BIO_f_linebuffer(void); +const BIO_METHOD *BIO_f_nbio_test(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_datagram(void); +int BIO_dgram_non_fatal_error(int error); +BIO *BIO_new_dgram(int fd, int close_flag); +# ifndef OPENSSL_NO_SCTP +const BIO_METHOD *BIO_s_datagram_sctp(void); +BIO *BIO_new_dgram_sctp(int fd, int close_flag); +int BIO_dgram_is_sctp(BIO *bio); +int BIO_dgram_sctp_notification_cb(BIO *b, + void (*handle_notifications) (BIO *bio, + void *context, + void *buf), + void *context); +int BIO_dgram_sctp_wait_for_dry(BIO *b); +int BIO_dgram_sctp_msg_waiting(BIO *b); +# endif +# endif + +# ifndef OPENSSL_NO_SOCK +int BIO_sock_should_retry(int i); +int BIO_sock_non_fatal_error(int error); +# endif + +int BIO_fd_should_retry(int i); +int BIO_fd_non_fatal_error(int error); +int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len); +int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len, int indent); +int BIO_dump(BIO *b, const char *bytes, int len); +int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent); +# ifndef OPENSSL_NO_STDIO +int BIO_dump_fp(FILE *fp, const char *s, int len); +int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent); +# endif +int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data, + int datalen); + +# ifndef OPENSSL_NO_SOCK +BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, + const void *where, size_t wherelen, unsigned short port); +void BIO_ADDR_free(BIO_ADDR *); +void BIO_ADDR_clear(BIO_ADDR *ap); +int BIO_ADDR_family(const BIO_ADDR *ap); +int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l); +unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap); +char *BIO_ADDR_hostname_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_service_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_path_string(const BIO_ADDR *ap); + +const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai); +const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai); +void BIO_ADDRINFO_free(BIO_ADDRINFO *bai); + +enum BIO_hostserv_priorities { + BIO_PARSE_PRIO_HOST, BIO_PARSE_PRIO_SERV +}; +int BIO_parse_hostserv(const char *hostserv, char **host, char **service, + enum BIO_hostserv_priorities hostserv_prio); +enum BIO_lookup_type { + BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER +}; +int BIO_lookup(const char *host, const char *service, + enum BIO_lookup_type lookup_type, + int family, int socktype, BIO_ADDRINFO **res); +int BIO_lookup_ex(const char *host, const char *service, + int lookup_type, int family, int socktype, int protocol, + BIO_ADDRINFO **res); +int BIO_sock_error(int sock); +int BIO_socket_ioctl(int fd, long type, void *arg); +int BIO_socket_nbio(int fd, int mode); +int BIO_sock_init(void); +# if OPENSSL_API_COMPAT < 0x10100000L +# define BIO_sock_cleanup() while(0) continue +# endif +int BIO_set_tcp_ndelay(int sock, int turn_on); + +DEPRECATEDIN_1_1_0(struct hostent *BIO_gethostbyname(const char *name)) +DEPRECATEDIN_1_1_0(int BIO_get_port(const char *str, unsigned short *port_ptr)) +DEPRECATEDIN_1_1_0(int BIO_get_host_ip(const char *str, unsigned char *ip)) +DEPRECATEDIN_1_1_0(int BIO_get_accept_socket(char *host_port, int mode)) +DEPRECATEDIN_1_1_0(int BIO_accept(int sock, char **ip_port)) + +union BIO_sock_info_u { + BIO_ADDR *addr; +}; +enum BIO_sock_info_type { + BIO_SOCK_INFO_ADDRESS +}; +int BIO_sock_info(int sock, + enum BIO_sock_info_type type, union BIO_sock_info_u *info); + +# define BIO_SOCK_REUSEADDR 0x01 +# define BIO_SOCK_V6_ONLY 0x02 +# define BIO_SOCK_KEEPALIVE 0x04 +# define BIO_SOCK_NONBLOCK 0x08 +# define BIO_SOCK_NODELAY 0x10 + +int BIO_socket(int domain, int socktype, int protocol, int options); +int BIO_connect(int sock, const BIO_ADDR *addr, int options); +int BIO_bind(int sock, const BIO_ADDR *addr, int options); +int BIO_listen(int sock, const BIO_ADDR *addr, int options); +int BIO_accept_ex(int accept_sock, BIO_ADDR *addr, int options); +int BIO_closesocket(int sock); + +BIO *BIO_new_socket(int sock, int close_flag); +BIO *BIO_new_connect(const char *host_port); +BIO *BIO_new_accept(const char *host_port); +# endif /* OPENSSL_NO_SOCK*/ + +BIO *BIO_new_fd(int fd, int close_flag); + +int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +/* + * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. + * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default + * value. + */ + +void BIO_copy_next_retry(BIO *b); + +/* + * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); + */ + +# define ossl_bio__attr__(x) +# if defined(__GNUC__) && defined(__STDC_VERSION__) \ + && !defined(__APPLE__) + /* + * Because we support the 'z' modifier, which made its appearance in C99, + * we can't use __attribute__ with pre C99 dialects. + */ +# if __STDC_VERSION__ >= 199901L +# undef ossl_bio__attr__ +# define ossl_bio__attr__ __attribute__ +# if __GNUC__*10 + __GNUC_MINOR__ >= 44 +# define ossl_bio__printf__ __gnu_printf__ +# else +# define ossl_bio__printf__ __printf__ +# endif +# endif +# endif +int BIO_printf(BIO *bio, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 3))); +int BIO_vprintf(BIO *bio, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 0))); +int BIO_snprintf(char *buf, size_t n, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 4))); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); +# undef ossl_bio__attr__ +# undef ossl_bio__printf__ + + +BIO_METHOD *BIO_meth_new(int type, const char *name); +void BIO_meth_free(BIO_METHOD *biom); +int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); +int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, + size_t *); +int BIO_meth_set_write(BIO_METHOD *biom, + int (*write) (BIO *, const char *, int)); +int BIO_meth_set_write_ex(BIO_METHOD *biom, + int (*bwrite) (BIO *, const char *, size_t, size_t *)); +int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_read(BIO_METHOD *biom, + int (*read) (BIO *, char *, int)); +int BIO_meth_set_read_ex(BIO_METHOD *biom, + int (*bread) (BIO *, char *, size_t, size_t *)); +int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts) (BIO *, const char *)); +int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*gets) (BIO *, char *, int)); +long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); +int BIO_meth_set_ctrl(BIO_METHOD *biom, + long (*ctrl) (BIO *, int, long, void *)); +int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); +int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); +long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) + (BIO *, int, BIO_info_cb *); +int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, + long (*callback_ctrl) (BIO *, int, + BIO_info_cb *)); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/bioerr.h b/openSSL/lin32/include/openssl/bioerr.h new file mode 100644 index 0000000..46e2c96 --- /dev/null +++ b/openSSL/lin32/include/openssl/bioerr.h @@ -0,0 +1,124 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BIOERR_H +# define HEADER_BIOERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BIO_strings(void); + +/* + * BIO function codes. + */ +# define BIO_F_ACPT_STATE 100 +# define BIO_F_ADDRINFO_WRAP 148 +# define BIO_F_ADDR_STRINGS 134 +# define BIO_F_BIO_ACCEPT 101 +# define BIO_F_BIO_ACCEPT_EX 137 +# define BIO_F_BIO_ACCEPT_NEW 152 +# define BIO_F_BIO_ADDR_NEW 144 +# define BIO_F_BIO_BIND 147 +# define BIO_F_BIO_CALLBACK_CTRL 131 +# define BIO_F_BIO_CONNECT 138 +# define BIO_F_BIO_CONNECT_NEW 153 +# define BIO_F_BIO_CTRL 103 +# define BIO_F_BIO_GETS 104 +# define BIO_F_BIO_GET_HOST_IP 106 +# define BIO_F_BIO_GET_NEW_INDEX 102 +# define BIO_F_BIO_GET_PORT 107 +# define BIO_F_BIO_LISTEN 139 +# define BIO_F_BIO_LOOKUP 135 +# define BIO_F_BIO_LOOKUP_EX 143 +# define BIO_F_BIO_MAKE_PAIR 121 +# define BIO_F_BIO_METH_NEW 146 +# define BIO_F_BIO_NEW 108 +# define BIO_F_BIO_NEW_DGRAM_SCTP 145 +# define BIO_F_BIO_NEW_FILE 109 +# define BIO_F_BIO_NEW_MEM_BUF 126 +# define BIO_F_BIO_NREAD 123 +# define BIO_F_BIO_NREAD0 124 +# define BIO_F_BIO_NWRITE 125 +# define BIO_F_BIO_NWRITE0 122 +# define BIO_F_BIO_PARSE_HOSTSERV 136 +# define BIO_F_BIO_PUTS 110 +# define BIO_F_BIO_READ 111 +# define BIO_F_BIO_READ_EX 105 +# define BIO_F_BIO_READ_INTERN 120 +# define BIO_F_BIO_SOCKET 140 +# define BIO_F_BIO_SOCKET_NBIO 142 +# define BIO_F_BIO_SOCK_INFO 141 +# define BIO_F_BIO_SOCK_INIT 112 +# define BIO_F_BIO_WRITE 113 +# define BIO_F_BIO_WRITE_EX 119 +# define BIO_F_BIO_WRITE_INTERN 128 +# define BIO_F_BUFFER_CTRL 114 +# define BIO_F_CONN_CTRL 127 +# define BIO_F_CONN_STATE 115 +# define BIO_F_DGRAM_SCTP_NEW 149 +# define BIO_F_DGRAM_SCTP_READ 132 +# define BIO_F_DGRAM_SCTP_WRITE 133 +# define BIO_F_DOAPR_OUTCH 150 +# define BIO_F_FILE_CTRL 116 +# define BIO_F_FILE_READ 130 +# define BIO_F_LINEBUFFER_CTRL 129 +# define BIO_F_LINEBUFFER_NEW 151 +# define BIO_F_MEM_WRITE 117 +# define BIO_F_NBIOF_NEW 154 +# define BIO_F_SLG_WRITE 155 +# define BIO_F_SSL_NEW 118 + +/* + * BIO reason codes. + */ +# define BIO_R_ACCEPT_ERROR 100 +# define BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET 141 +# define BIO_R_AMBIGUOUS_HOST_OR_SERVICE 129 +# define BIO_R_BAD_FOPEN_MODE 101 +# define BIO_R_BROKEN_PIPE 124 +# define BIO_R_CONNECT_ERROR 103 +# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107 +# define BIO_R_GETSOCKNAME_ERROR 132 +# define BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS 133 +# define BIO_R_GETTING_SOCKTYPE 134 +# define BIO_R_INVALID_ARGUMENT 125 +# define BIO_R_INVALID_SOCKET 135 +# define BIO_R_IN_USE 123 +# define BIO_R_LENGTH_TOO_LONG 102 +# define BIO_R_LISTEN_V6_ONLY 136 +# define BIO_R_LOOKUP_RETURNED_NOTHING 142 +# define BIO_R_MALFORMED_HOST_OR_SERVICE 130 +# define BIO_R_NBIO_CONNECT_ERROR 110 +# define BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED 143 +# define BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED 144 +# define BIO_R_NO_PORT_DEFINED 113 +# define BIO_R_NO_SUCH_FILE 128 +# define BIO_R_NULL_PARAMETER 115 +# define BIO_R_UNABLE_TO_BIND_SOCKET 117 +# define BIO_R_UNABLE_TO_CREATE_SOCKET 118 +# define BIO_R_UNABLE_TO_KEEPALIVE 137 +# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 +# define BIO_R_UNABLE_TO_NODELAY 138 +# define BIO_R_UNABLE_TO_REUSEADDR 139 +# define BIO_R_UNAVAILABLE_IP_FAMILY 145 +# define BIO_R_UNINITIALIZED 120 +# define BIO_R_UNKNOWN_INFO_TYPE 140 +# define BIO_R_UNSUPPORTED_IP_FAMILY 146 +# define BIO_R_UNSUPPORTED_METHOD 121 +# define BIO_R_UNSUPPORTED_PROTOCOL_FAMILY 131 +# define BIO_R_WRITE_TO_READ_ONLY_BIO 126 +# define BIO_R_WSASTARTUP 122 + +#endif diff --git a/openSSL/lin32/include/openssl/blowfish.h b/openSSL/lin32/include/openssl/blowfish.h new file mode 100644 index 0000000..cd3e460 --- /dev/null +++ b/openSSL/lin32/include/openssl/blowfish.h @@ -0,0 +1,61 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BLOWFISH_H +# define HEADER_BLOWFISH_H + +# include + +# ifndef OPENSSL_NO_BF +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define BF_ENCRYPT 1 +# define BF_DECRYPT 0 + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! BF_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define BF_LONG unsigned int + +# define BF_ROUNDS 16 +# define BF_BLOCK 8 + +typedef struct bf_key_st { + BF_LONG P[BF_ROUNDS + 2]; + BF_LONG S[4 * 256]; +} BF_KEY; + +void BF_set_key(BF_KEY *key, int len, const unsigned char *data); + +void BF_encrypt(BF_LONG *data, const BF_KEY *key); +void BF_decrypt(BF_LONG *data, const BF_KEY *key); + +void BF_ecb_encrypt(const unsigned char *in, unsigned char *out, + const BF_KEY *key, int enc); +void BF_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, + const BF_KEY *schedule, unsigned char *ivec, int enc); +void BF_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const BF_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void BF_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const BF_KEY *schedule, + unsigned char *ivec, int *num); +const char *BF_options(void); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/bn.h b/openSSL/lin32/include/openssl/bn.h new file mode 100644 index 0000000..d877660 --- /dev/null +++ b/openSSL/lin32/include/openssl/bn.h @@ -0,0 +1,539 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BN_H +# define HEADER_BN_H + +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * 64-bit processor with LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT_LONG +# define BN_ULONG unsigned long +# define BN_BYTES 8 +# endif + +/* + * 64-bit processor other than LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT +# define BN_ULONG unsigned long long +# define BN_BYTES 8 +# endif + +# ifdef THIRTY_TWO_BIT +# define BN_ULONG unsigned int +# define BN_BYTES 4 +# endif + +# define BN_BITS2 (BN_BYTES * 8) +# define BN_BITS (BN_BITS2 * 2) +# define BN_TBIT ((BN_ULONG)1 << (BN_BITS2 - 1)) + +# define BN_FLG_MALLOCED 0x01 +# define BN_FLG_STATIC_DATA 0x02 + +/* + * avoid leaking exponent information through timing, + * BN_mod_exp_mont() will call BN_mod_exp_mont_consttime, + * BN_div() will call BN_div_no_branch, + * BN_mod_inverse() will call bn_mod_inverse_no_branch. + */ +# define BN_FLG_CONSTTIME 0x04 +# define BN_FLG_SECURE 0x08 + +# if OPENSSL_API_COMPAT < 0x00908000L +/* deprecated name for the flag */ +# define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME +# define BN_FLG_FREE 0x8000 /* used for debugging */ +# endif + +void BN_set_flags(BIGNUM *b, int n); +int BN_get_flags(const BIGNUM *b, int n); + +/* Values for |top| in BN_rand() */ +#define BN_RAND_TOP_ANY -1 +#define BN_RAND_TOP_ONE 0 +#define BN_RAND_TOP_TWO 1 + +/* Values for |bottom| in BN_rand() */ +#define BN_RAND_BOTTOM_ANY 0 +#define BN_RAND_BOTTOM_ODD 1 + +/* + * get a clone of a BIGNUM with changed flags, for *temporary* use only (the + * two BIGNUMs cannot be used in parallel!). Also only for *read only* use. The + * value |dest| should be a newly allocated BIGNUM obtained via BN_new() that + * has not been otherwise initialised or used. + */ +void BN_with_flags(BIGNUM *dest, const BIGNUM *b, int flags); + +/* Wrapper function to make using BN_GENCB easier */ +int BN_GENCB_call(BN_GENCB *cb, int a, int b); + +BN_GENCB *BN_GENCB_new(void); +void BN_GENCB_free(BN_GENCB *cb); + +/* Populate a BN_GENCB structure with an "old"-style callback */ +void BN_GENCB_set_old(BN_GENCB *gencb, void (*callback) (int, int, void *), + void *cb_arg); + +/* Populate a BN_GENCB structure with a "new"-style callback */ +void BN_GENCB_set(BN_GENCB *gencb, int (*callback) (int, int, BN_GENCB *), + void *cb_arg); + +void *BN_GENCB_get_arg(BN_GENCB *cb); + +# define BN_prime_checks 0 /* default: select number of iterations based + * on the size of the number */ + +/* + * BN_prime_checks_for_size() returns the number of Miller-Rabin iterations + * that will be done for checking that a random number is probably prime. The + * error rate for accepting a composite number as prime depends on the size of + * the prime |b|. The error rates used are for calculating an RSA key with 2 primes, + * and so the level is what you would expect for a key of double the size of the + * prime. + * + * This table is generated using the algorithm of FIPS PUB 186-4 + * Digital Signature Standard (DSS), section F.1, page 117. + * (https://dx.doi.org/10.6028/NIST.FIPS.186-4) + * + * The following magma script was used to generate the output: + * securitybits:=125; + * k:=1024; + * for t:=1 to 65 do + * for M:=3 to Floor(2*Sqrt(k-1)-1) do + * S:=0; + * // Sum over m + * for m:=3 to M do + * s:=0; + * // Sum over j + * for j:=2 to m do + * s+:=(RealField(32)!2)^-(j+(k-1)/j); + * end for; + * S+:=2^(m-(m-1)*t)*s; + * end for; + * A:=2^(k-2-M*t); + * B:=8*(Pi(RealField(32))^2-6)/3*2^(k-2)*S; + * pkt:=2.00743*Log(2)*k*2^-k*(A+B); + * seclevel:=Floor(-Log(2,pkt)); + * if seclevel ge securitybits then + * printf "k: %5o, security: %o bits (t: %o, M: %o)\n",k,seclevel,t,M; + * break; + * end if; + * end for; + * if seclevel ge securitybits then break; end if; + * end for; + * + * It can be run online at: + * http://magma.maths.usyd.edu.au/calc + * + * And will output: + * k: 1024, security: 129 bits (t: 6, M: 23) + * + * k is the number of bits of the prime, securitybits is the level we want to + * reach. + * + * prime length | RSA key size | # MR tests | security level + * -------------+--------------|------------+--------------- + * (b) >= 6394 | >= 12788 | 3 | 256 bit + * (b) >= 3747 | >= 7494 | 3 | 192 bit + * (b) >= 1345 | >= 2690 | 4 | 128 bit + * (b) >= 1080 | >= 2160 | 5 | 128 bit + * (b) >= 852 | >= 1704 | 5 | 112 bit + * (b) >= 476 | >= 952 | 5 | 80 bit + * (b) >= 400 | >= 800 | 6 | 80 bit + * (b) >= 347 | >= 694 | 7 | 80 bit + * (b) >= 308 | >= 616 | 8 | 80 bit + * (b) >= 55 | >= 110 | 27 | 64 bit + * (b) >= 6 | >= 12 | 34 | 64 bit + */ + +# define BN_prime_checks_for_size(b) ((b) >= 3747 ? 3 : \ + (b) >= 1345 ? 4 : \ + (b) >= 476 ? 5 : \ + (b) >= 400 ? 6 : \ + (b) >= 347 ? 7 : \ + (b) >= 308 ? 8 : \ + (b) >= 55 ? 27 : \ + /* b >= 6 */ 34) + +# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8) + +int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w); +int BN_is_zero(const BIGNUM *a); +int BN_is_one(const BIGNUM *a); +int BN_is_word(const BIGNUM *a, const BN_ULONG w); +int BN_is_odd(const BIGNUM *a); + +# define BN_one(a) (BN_set_word((a),1)) + +void BN_zero_ex(BIGNUM *a); + +# if OPENSSL_API_COMPAT >= 0x00908000L +# define BN_zero(a) BN_zero_ex(a) +# else +# define BN_zero(a) (BN_set_word((a),0)) +# endif + +const BIGNUM *BN_value_one(void); +char *BN_options(void); +BN_CTX *BN_CTX_new(void); +BN_CTX *BN_CTX_secure_new(void); +void BN_CTX_free(BN_CTX *c); +void BN_CTX_start(BN_CTX *ctx); +BIGNUM *BN_CTX_get(BN_CTX *ctx); +void BN_CTX_end(BN_CTX *ctx); +int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_priv_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_num_bits(const BIGNUM *a); +int BN_num_bits_word(BN_ULONG l); +int BN_security_bits(int L, int N); +BIGNUM *BN_new(void); +BIGNUM *BN_secure_new(void); +void BN_clear_free(BIGNUM *a); +BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); +void BN_swap(BIGNUM *a, BIGNUM *b); +BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2bin(const BIGNUM *a, unsigned char *to); +int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2mpi(const BIGNUM *a, unsigned char *to); +int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); +/** BN_set_negative sets sign of a BIGNUM + * \param b pointer to the BIGNUM object + * \param n 0 if the BIGNUM b should be positive and a value != 0 otherwise + */ +void BN_set_negative(BIGNUM *b, int n); +/** BN_is_negative returns 1 if the BIGNUM is negative + * \param b pointer to the BIGNUM object + * \return 1 if a < 0 and 0 otherwise + */ +int BN_is_negative(const BIGNUM *b); + +int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, + BN_CTX *ctx); +# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx)) +int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); +int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m); +int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m); + +BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w); +BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w); +int BN_mul_word(BIGNUM *a, BN_ULONG w); +int BN_add_word(BIGNUM *a, BN_ULONG w); +int BN_sub_word(BIGNUM *a, BN_ULONG w); +int BN_set_word(BIGNUM *a, BN_ULONG w); +BN_ULONG BN_get_word(const BIGNUM *a); + +int BN_cmp(const BIGNUM *a, const BIGNUM *b); +void BN_free(BIGNUM *a); +int BN_is_bit_set(const BIGNUM *a, int n); +int BN_lshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_lshift1(BIGNUM *r, const BIGNUM *a); +int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *in_mont); +int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1, + const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m, + BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); + +int BN_mask_bits(BIGNUM *a, int n); +# ifndef OPENSSL_NO_STDIO +int BN_print_fp(FILE *fp, const BIGNUM *a); +# endif +int BN_print(BIO *bio, const BIGNUM *a); +int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx); +int BN_rshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_rshift1(BIGNUM *r, const BIGNUM *a); +void BN_clear(BIGNUM *a); +BIGNUM *BN_dup(const BIGNUM *a); +int BN_ucmp(const BIGNUM *a, const BIGNUM *b); +int BN_set_bit(BIGNUM *a, int n); +int BN_clear_bit(BIGNUM *a, int n); +char *BN_bn2hex(const BIGNUM *a); +char *BN_bn2dec(const BIGNUM *a); +int BN_hex2bn(BIGNUM **a, const char *str); +int BN_dec2bn(BIGNUM **a, const char *str); +int BN_asc2bn(BIGNUM **a, const char *str); +int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns + * -2 for + * error */ +BIGNUM *BN_mod_inverse(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); +BIGNUM *BN_mod_sqrt(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); + +void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords); + +/* Deprecated versions */ +DEPRECATEDIN_0_9_8(BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe, + const BIGNUM *add, + const BIGNUM *rem, + void (*callback) (int, int, + void *), + void *cb_arg)) +DEPRECATEDIN_0_9_8(int + BN_is_prime(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg)) +DEPRECATEDIN_0_9_8(int + BN_is_prime_fasttest(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg, + int do_trial_division)) + +/* Newer versions */ +int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, + const BIGNUM *rem, BN_GENCB *cb); +int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb); +int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, + int do_trial_division, BN_GENCB *cb); + +int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx); + +int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, + const BIGNUM *Xp, const BIGNUM *Xp1, + const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx, + BN_GENCB *cb); +int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1, + BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e, + BN_CTX *ctx, BN_GENCB *cb); + +BN_MONT_CTX *BN_MONT_CTX_new(void); +int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + BN_MONT_CTX *mont, BN_CTX *ctx); +int BN_to_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, + BN_CTX *ctx); +int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, + BN_CTX *ctx); +void BN_MONT_CTX_free(BN_MONT_CTX *mont); +int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx); +BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from); +BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_RWLOCK *lock, + const BIGNUM *mod, BN_CTX *ctx); + +/* BN_BLINDING flags */ +# define BN_BLINDING_NO_UPDATE 0x00000001 +# define BN_BLINDING_NO_RECREATE 0x00000002 + +BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod); +void BN_BLINDING_free(BN_BLINDING *b); +int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *); +int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, + BN_CTX *); + +int BN_BLINDING_is_current_thread(BN_BLINDING *b); +void BN_BLINDING_set_current_thread(BN_BLINDING *b); +int BN_BLINDING_lock(BN_BLINDING *b); +int BN_BLINDING_unlock(BN_BLINDING *b); + +unsigned long BN_BLINDING_get_flags(const BN_BLINDING *); +void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long); +BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b, + const BIGNUM *e, BIGNUM *m, BN_CTX *ctx, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx), + BN_MONT_CTX *m_ctx); + +DEPRECATEDIN_0_9_8(void BN_set_params(int mul, int high, int low, int mont)) +DEPRECATEDIN_0_9_8(int BN_get_params(int which)) /* 0, mul, 1 high, 2 low, 3 + * mont */ + +BN_RECP_CTX *BN_RECP_CTX_new(void); +void BN_RECP_CTX_free(BN_RECP_CTX *recp); +int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx); +int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y, + BN_RECP_CTX *recp, BN_CTX *ctx); +int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, + BN_RECP_CTX *recp, BN_CTX *ctx); + +# ifndef OPENSSL_NO_EC2M + +/* + * Functions for arithmetic over binary polynomials represented by BIGNUMs. + * The BIGNUM::neg property of BIGNUMs representing binary polynomials is + * ignored. Note that input arguments are not const so that their bit arrays + * can be expanded to the appropriate size if needed. + */ + +/* + * r = a + b + */ +int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +# define BN_GF2m_sub(r, a, b) BN_GF2m_add(r, a, b) +/* + * r=a mod p + */ +int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +# define BN_GF2m_cmp(a, b) BN_ucmp((a), (b)) +/*- + * Some functions allow for representation of the irreducible polynomials + * as an unsigned int[], say p. The irreducible f(t) is then of the form: + * t^p[0] + t^p[1] + ... + t^p[k] + * where m = p[0] > p[1] > ... > p[k] = 0. + */ +/* r = a mod p */ +int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], + BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[], + BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max); +int BN_GF2m_arr2poly(const int p[], BIGNUM *a); + +# endif + +/* + * faster mod functions for the 'NIST primes' 0 <= a < p^2 + */ +int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +const BIGNUM *BN_get0_nist_prime_192(void); +const BIGNUM *BN_get0_nist_prime_224(void); +const BIGNUM *BN_get0_nist_prime_256(void); +const BIGNUM *BN_get0_nist_prime_384(void); +const BIGNUM *BN_get0_nist_prime_521(void); + +int (*BN_nist_mod_func(const BIGNUM *p)) (BIGNUM *r, const BIGNUM *a, + const BIGNUM *field, BN_CTX *ctx); + +int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range, + const BIGNUM *priv, const unsigned char *message, + size_t message_len, BN_CTX *ctx); + +/* Primes from RFC 2409 */ +BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn); +BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn); + +/* Primes from RFC 3526 */ +BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_4096(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_6144(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_8192(BIGNUM *bn); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define get_rfc2409_prime_768 BN_get_rfc2409_prime_768 +# define get_rfc2409_prime_1024 BN_get_rfc2409_prime_1024 +# define get_rfc3526_prime_1536 BN_get_rfc3526_prime_1536 +# define get_rfc3526_prime_2048 BN_get_rfc3526_prime_2048 +# define get_rfc3526_prime_3072 BN_get_rfc3526_prime_3072 +# define get_rfc3526_prime_4096 BN_get_rfc3526_prime_4096 +# define get_rfc3526_prime_6144 BN_get_rfc3526_prime_6144 +# define get_rfc3526_prime_8192 BN_get_rfc3526_prime_8192 +# endif + +int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/bnerr.h b/openSSL/lin32/include/openssl/bnerr.h new file mode 100644 index 0000000..9f3c7cf --- /dev/null +++ b/openSSL/lin32/include/openssl/bnerr.h @@ -0,0 +1,100 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BNERR_H +# define HEADER_BNERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BN_strings(void); + +/* + * BN function codes. + */ +# define BN_F_BNRAND 127 +# define BN_F_BNRAND_RANGE 138 +# define BN_F_BN_BLINDING_CONVERT_EX 100 +# define BN_F_BN_BLINDING_CREATE_PARAM 128 +# define BN_F_BN_BLINDING_INVERT_EX 101 +# define BN_F_BN_BLINDING_NEW 102 +# define BN_F_BN_BLINDING_UPDATE 103 +# define BN_F_BN_BN2DEC 104 +# define BN_F_BN_BN2HEX 105 +# define BN_F_BN_COMPUTE_WNAF 142 +# define BN_F_BN_CTX_GET 116 +# define BN_F_BN_CTX_NEW 106 +# define BN_F_BN_CTX_START 129 +# define BN_F_BN_DIV 107 +# define BN_F_BN_DIV_RECP 130 +# define BN_F_BN_EXP 123 +# define BN_F_BN_EXPAND_INTERNAL 120 +# define BN_F_BN_GENCB_NEW 143 +# define BN_F_BN_GENERATE_DSA_NONCE 140 +# define BN_F_BN_GENERATE_PRIME_EX 141 +# define BN_F_BN_GF2M_MOD 131 +# define BN_F_BN_GF2M_MOD_EXP 132 +# define BN_F_BN_GF2M_MOD_MUL 133 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD 134 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 135 +# define BN_F_BN_GF2M_MOD_SQR 136 +# define BN_F_BN_GF2M_MOD_SQRT 137 +# define BN_F_BN_LSHIFT 145 +# define BN_F_BN_MOD_EXP2_MONT 118 +# define BN_F_BN_MOD_EXP_MONT 109 +# define BN_F_BN_MOD_EXP_MONT_CONSTTIME 124 +# define BN_F_BN_MOD_EXP_MONT_WORD 117 +# define BN_F_BN_MOD_EXP_RECP 125 +# define BN_F_BN_MOD_EXP_SIMPLE 126 +# define BN_F_BN_MOD_INVERSE 110 +# define BN_F_BN_MOD_INVERSE_NO_BRANCH 139 +# define BN_F_BN_MOD_LSHIFT_QUICK 119 +# define BN_F_BN_MOD_SQRT 121 +# define BN_F_BN_MONT_CTX_NEW 149 +# define BN_F_BN_MPI2BN 112 +# define BN_F_BN_NEW 113 +# define BN_F_BN_POOL_GET 147 +# define BN_F_BN_RAND 114 +# define BN_F_BN_RAND_RANGE 122 +# define BN_F_BN_RECP_CTX_NEW 150 +# define BN_F_BN_RSHIFT 146 +# define BN_F_BN_SET_WORDS 144 +# define BN_F_BN_STACK_PUSH 148 +# define BN_F_BN_USUB 115 + +/* + * BN reason codes. + */ +# define BN_R_ARG2_LT_ARG3 100 +# define BN_R_BAD_RECIPROCAL 101 +# define BN_R_BIGNUM_TOO_LONG 114 +# define BN_R_BITS_TOO_SMALL 118 +# define BN_R_CALLED_WITH_EVEN_MODULUS 102 +# define BN_R_DIV_BY_ZERO 103 +# define BN_R_ENCODING_ERROR 104 +# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 +# define BN_R_INPUT_NOT_REDUCED 110 +# define BN_R_INVALID_LENGTH 106 +# define BN_R_INVALID_RANGE 115 +# define BN_R_INVALID_SHIFT 119 +# define BN_R_NOT_A_SQUARE 111 +# define BN_R_NOT_INITIALIZED 107 +# define BN_R_NO_INVERSE 108 +# define BN_R_NO_SOLUTION 116 +# define BN_R_PRIVATE_KEY_TOO_LARGE 117 +# define BN_R_P_IS_NOT_PRIME 112 +# define BN_R_TOO_MANY_ITERATIONS 113 +# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 + +#endif diff --git a/openSSL/lin32/include/openssl/buffer.h b/openSSL/lin32/include/openssl/buffer.h new file mode 100644 index 0000000..d276576 --- /dev/null +++ b/openSSL/lin32/include/openssl/buffer.h @@ -0,0 +1,58 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BUFFER_H +# define HEADER_BUFFER_H + +# include +# ifndef HEADER_CRYPTO_H +# include +# endif +# include + + +#ifdef __cplusplus +extern "C" { +#endif + +# include +# include + +/* + * These names are outdated as of OpenSSL 1.1; a future release + * will move them to be deprecated. + */ +# define BUF_strdup(s) OPENSSL_strdup(s) +# define BUF_strndup(s, size) OPENSSL_strndup(s, size) +# define BUF_memdup(data, size) OPENSSL_memdup(data, size) +# define BUF_strlcpy(dst, src, size) OPENSSL_strlcpy(dst, src, size) +# define BUF_strlcat(dst, src, size) OPENSSL_strlcat(dst, src, size) +# define BUF_strnlen(str, maxlen) OPENSSL_strnlen(str, maxlen) + +struct buf_mem_st { + size_t length; /* current number of bytes */ + char *data; + size_t max; /* size of buffer */ + unsigned long flags; +}; + +# define BUF_MEM_FLAG_SECURE 0x01 + +BUF_MEM *BUF_MEM_new(void); +BUF_MEM *BUF_MEM_new_ex(unsigned long flags); +void BUF_MEM_free(BUF_MEM *a); +size_t BUF_MEM_grow(BUF_MEM *str, size_t len); +size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len); +void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/buffererr.h b/openSSL/lin32/include/openssl/buffererr.h new file mode 100644 index 0000000..04f6ff7 --- /dev/null +++ b/openSSL/lin32/include/openssl/buffererr.h @@ -0,0 +1,34 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BUFERR_H +# define HEADER_BUFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BUF_strings(void); + +/* + * BUF function codes. + */ +# define BUF_F_BUF_MEM_GROW 100 +# define BUF_F_BUF_MEM_GROW_CLEAN 105 +# define BUF_F_BUF_MEM_NEW 101 + +/* + * BUF reason codes. + */ + +#endif diff --git a/openSSL/lin32/include/openssl/camellia.h b/openSSL/lin32/include/openssl/camellia.h new file mode 100644 index 0000000..151f3c1 --- /dev/null +++ b/openSSL/lin32/include/openssl/camellia.h @@ -0,0 +1,83 @@ +/* + * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CAMELLIA_H +# define HEADER_CAMELLIA_H + +# include + +# ifndef OPENSSL_NO_CAMELLIA +# include +#ifdef __cplusplus +extern "C" { +#endif + +# define CAMELLIA_ENCRYPT 1 +# define CAMELLIA_DECRYPT 0 + +/* + * Because array size can't be a const in C, the following two are macros. + * Both sizes are in bytes. + */ + +/* This should be a hidden type, but EVP requires that the size be known */ + +# define CAMELLIA_BLOCK_SIZE 16 +# define CAMELLIA_TABLE_BYTE_LEN 272 +# define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / 4) + +typedef unsigned int KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN]; /* to match + * with WORD */ + +struct camellia_key_st { + union { + double d; /* ensures 64-bit align */ + KEY_TABLE_TYPE rd_key; + } u; + int grand_rounds; +}; +typedef struct camellia_key_st CAMELLIA_KEY; + +int Camellia_set_key(const unsigned char *userKey, const int bits, + CAMELLIA_KEY *key); + +void Camellia_encrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key); +void Camellia_decrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key); + +void Camellia_ecb_encrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key, const int enc); +void Camellia_cbc_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, const int enc); +void Camellia_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num, const int enc); +void Camellia_cfb1_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num, const int enc); +void Camellia_cfb8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num, const int enc); +void Camellia_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num); +void Camellia_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char ivec[CAMELLIA_BLOCK_SIZE], + unsigned char ecount_buf[CAMELLIA_BLOCK_SIZE], + unsigned int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/cast.h b/openSSL/lin32/include/openssl/cast.h new file mode 100644 index 0000000..2cc89ae --- /dev/null +++ b/openSSL/lin32/include/openssl/cast.h @@ -0,0 +1,53 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CAST_H +# define HEADER_CAST_H + +# include + +# ifndef OPENSSL_NO_CAST +# ifdef __cplusplus +extern "C" { +# endif + +# define CAST_ENCRYPT 1 +# define CAST_DECRYPT 0 + +# define CAST_LONG unsigned int + +# define CAST_BLOCK 8 +# define CAST_KEY_LENGTH 16 + +typedef struct cast_key_st { + CAST_LONG data[32]; + int short_key; /* Use reduced rounds for short key */ +} CAST_KEY; + +void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data); +void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out, + const CAST_KEY *key, int enc); +void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key); +void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key); +void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *ks, unsigned char *iv, + int enc); +void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *schedule, + unsigned char *ivec, int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/cmac.h b/openSSL/lin32/include/openssl/cmac.h new file mode 100644 index 0000000..3535a9a --- /dev/null +++ b/openSSL/lin32/include/openssl/cmac.h @@ -0,0 +1,41 @@ +/* + * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMAC_H +# define HEADER_CMAC_H + +# ifndef OPENSSL_NO_CMAC + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +/* Opaque */ +typedef struct CMAC_CTX_st CMAC_CTX; + +CMAC_CTX *CMAC_CTX_new(void); +void CMAC_CTX_cleanup(CMAC_CTX *ctx); +void CMAC_CTX_free(CMAC_CTX *ctx); +EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx); +int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in); + +int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen, + const EVP_CIPHER *cipher, ENGINE *impl); +int CMAC_Update(CMAC_CTX *ctx, const void *data, size_t dlen); +int CMAC_Final(CMAC_CTX *ctx, unsigned char *out, size_t *poutlen); +int CMAC_resume(CMAC_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +# endif +#endif diff --git a/openSSL/lin32/include/openssl/cms.h b/openSSL/lin32/include/openssl/cms.h new file mode 100644 index 0000000..c762796 --- /dev/null +++ b/openSSL/lin32/include/openssl/cms.h @@ -0,0 +1,339 @@ +/* + * Copyright 2008-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMS_H +# define HEADER_CMS_H + +# include + +# ifndef OPENSSL_NO_CMS +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct CMS_ContentInfo_st CMS_ContentInfo; +typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_CertificateChoices CMS_CertificateChoices; +typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; +typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; +typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest; +typedef struct CMS_Receipt_st CMS_Receipt; +typedef struct CMS_RecipientEncryptedKey_st CMS_RecipientEncryptedKey; +typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute; + +DEFINE_STACK_OF(CMS_SignerInfo) +DEFINE_STACK_OF(CMS_RecipientEncryptedKey) +DEFINE_STACK_OF(CMS_RecipientInfo) +DEFINE_STACK_OF(CMS_RevocationInfoChoice) +DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) +DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) +DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) + +# define CMS_SIGNERINFO_ISSUER_SERIAL 0 +# define CMS_SIGNERINFO_KEYIDENTIFIER 1 + +# define CMS_RECIPINFO_NONE -1 +# define CMS_RECIPINFO_TRANS 0 +# define CMS_RECIPINFO_AGREE 1 +# define CMS_RECIPINFO_KEK 2 +# define CMS_RECIPINFO_PASS 3 +# define CMS_RECIPINFO_OTHER 4 + +/* S/MIME related flags */ + +# define CMS_TEXT 0x1 +# define CMS_NOCERTS 0x2 +# define CMS_NO_CONTENT_VERIFY 0x4 +# define CMS_NO_ATTR_VERIFY 0x8 +# define CMS_NOSIGS \ + (CMS_NO_CONTENT_VERIFY|CMS_NO_ATTR_VERIFY) +# define CMS_NOINTERN 0x10 +# define CMS_NO_SIGNER_CERT_VERIFY 0x20 +# define CMS_NOVERIFY 0x20 +# define CMS_DETACHED 0x40 +# define CMS_BINARY 0x80 +# define CMS_NOATTR 0x100 +# define CMS_NOSMIMECAP 0x200 +# define CMS_NOOLDMIMETYPE 0x400 +# define CMS_CRLFEOL 0x800 +# define CMS_STREAM 0x1000 +# define CMS_NOCRL 0x2000 +# define CMS_PARTIAL 0x4000 +# define CMS_REUSE_DIGEST 0x8000 +# define CMS_USE_KEYID 0x10000 +# define CMS_DEBUG_DECRYPT 0x20000 +# define CMS_KEY_PARAM 0x40000 +# define CMS_ASCIICRLF 0x80000 + +const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); + +BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont); +int CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio); + +ASN1_OCTET_STRING **CMS_get0_content(CMS_ContentInfo *cms); +int CMS_is_detached(CMS_ContentInfo *cms); +int CMS_set_detached(CMS_ContentInfo *cms, int detached); + +# ifdef HEADER_PEM_H +DECLARE_PEM_rw_const(CMS, CMS_ContentInfo) +# endif +int CMS_stream(unsigned char ***boundary, CMS_ContentInfo *cms); +CMS_ContentInfo *d2i_CMS_bio(BIO *bp, CMS_ContentInfo **cms); +int i2d_CMS_bio(BIO *bp, CMS_ContentInfo *cms); + +BIO *BIO_new_CMS(BIO *out, CMS_ContentInfo *cms); +int i2d_CMS_bio_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, int flags); +int PEM_write_bio_CMS_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, + int flags); +CMS_ContentInfo *SMIME_read_CMS(BIO *bio, BIO **bcont); +int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); + +int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, + unsigned int flags); + +CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, BIO *data, + unsigned int flags); + +CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, + X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, unsigned int flags); + +int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); +CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); + +int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, + unsigned int flags); +CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, + unsigned int flags); + +int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, + const unsigned char *key, size_t keylen, + BIO *dcont, BIO *out, unsigned int flags); + +CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, + const unsigned char *key, + size_t keylen, unsigned int flags); + +int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, + const unsigned char *key, size_t keylen); + +int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs, + X509_STORE *store, BIO *dcont, BIO *out, unsigned int flags); + +int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms, + STACK_OF(X509) *certs, + X509_STORE *store, unsigned int flags); + +STACK_OF(X509) *CMS_get0_signers(CMS_ContentInfo *cms); + +CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, unsigned int flags); + +int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, + BIO *dcont, BIO *out, unsigned int flags); + +int CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert); +int CMS_decrypt_set1_key(CMS_ContentInfo *cms, + unsigned char *key, size_t keylen, + const unsigned char *id, size_t idlen); +int CMS_decrypt_set1_password(CMS_ContentInfo *cms, + unsigned char *pass, ossl_ssize_t passlen); + +STACK_OF(CMS_RecipientInfo) *CMS_get0_RecipientInfos(CMS_ContentInfo *cms); +int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); +EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); +CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); +CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, + X509 *recip, unsigned int flags); +int CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey); +int CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert); +int CMS_RecipientInfo_ktri_get0_algs(CMS_RecipientInfo *ri, + EVP_PKEY **pk, X509 **recip, + X509_ALGOR **palg); +int CMS_RecipientInfo_ktri_get0_signer_id(CMS_RecipientInfo *ri, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, + ASN1_INTEGER **sno); + +CMS_RecipientInfo *CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid, + unsigned char *key, size_t keylen, + unsigned char *id, size_t idlen, + ASN1_GENERALIZEDTIME *date, + ASN1_OBJECT *otherTypeId, + ASN1_TYPE *otherType); + +int CMS_RecipientInfo_kekri_get0_id(CMS_RecipientInfo *ri, + X509_ALGOR **palg, + ASN1_OCTET_STRING **pid, + ASN1_GENERALIZEDTIME **pdate, + ASN1_OBJECT **potherid, + ASN1_TYPE **pothertype); + +int CMS_RecipientInfo_set0_key(CMS_RecipientInfo *ri, + unsigned char *key, size_t keylen); + +int CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo *ri, + const unsigned char *id, size_t idlen); + +int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri, + unsigned char *pass, + ossl_ssize_t passlen); + +CMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms, + int iter, int wrap_nid, + int pbe_nid, + unsigned char *pass, + ossl_ssize_t passlen, + const EVP_CIPHER *kekciph); + +int CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri); +int CMS_RecipientInfo_encrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri); + +int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out, + unsigned int flags); +CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags); + +int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid); +const ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms); + +CMS_CertificateChoices *CMS_add0_CertificateChoices(CMS_ContentInfo *cms); +int CMS_add0_cert(CMS_ContentInfo *cms, X509 *cert); +int CMS_add1_cert(CMS_ContentInfo *cms, X509 *cert); +STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms); + +CMS_RevocationInfoChoice *CMS_add0_RevocationInfoChoice(CMS_ContentInfo *cms); +int CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl); +int CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl); +STACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms); + +int CMS_SignedData_init(CMS_ContentInfo *cms); +CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms, + X509 *signer, EVP_PKEY *pk, const EVP_MD *md, + unsigned int flags); +EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si); +EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si); +STACK_OF(CMS_SignerInfo) *CMS_get0_SignerInfos(CMS_ContentInfo *cms); + +void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer); +int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert); +int CMS_set1_signers_certs(CMS_ContentInfo *cms, STACK_OF(X509) *certs, + unsigned int flags); +void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk, + X509 **signer, X509_ALGOR **pdig, + X509_ALGOR **psig); +ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); +int CMS_SignerInfo_sign(CMS_SignerInfo *si); +int CMS_SignerInfo_verify(CMS_SignerInfo *si); +int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); + +int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); +int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, + int algnid, int keysize); +int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap); + +int CMS_signed_get_attr_count(const CMS_SignerInfo *si); +int CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_signed_get0_data_by_OBJ(CMS_SignerInfo *si, const ASN1_OBJECT *oid, + int lastpos, int type); + +int CMS_unsigned_get_attr_count(const CMS_SignerInfo *si); +int CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid, + int lastpos, int type); + +int CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr); +CMS_ReceiptRequest *CMS_ReceiptRequest_create0(unsigned char *id, int idlen, + int allorfirst, + STACK_OF(GENERAL_NAMES) + *receiptList, STACK_OF(GENERAL_NAMES) + *receiptsTo); +int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); +void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, + ASN1_STRING **pcid, + int *pallorfirst, + STACK_OF(GENERAL_NAMES) **plist, + STACK_OF(GENERAL_NAMES) **prto); +int CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri, + X509_ALGOR **palg, + ASN1_OCTET_STRING **pukm); +STACK_OF(CMS_RecipientEncryptedKey) +*CMS_RecipientInfo_kari_get0_reks(CMS_RecipientInfo *ri); + +int CMS_RecipientInfo_kari_get0_orig_id(CMS_RecipientInfo *ri, + X509_ALGOR **pubalg, + ASN1_BIT_STRING **pubkey, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, + ASN1_INTEGER **sno); + +int CMS_RecipientInfo_kari_orig_id_cmp(CMS_RecipientInfo *ri, X509 *cert); + +int CMS_RecipientEncryptedKey_get0_id(CMS_RecipientEncryptedKey *rek, + ASN1_OCTET_STRING **keyid, + ASN1_GENERALIZEDTIME **tm, + CMS_OtherKeyAttribute **other, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_RecipientEncryptedKey_cert_cmp(CMS_RecipientEncryptedKey *rek, + X509 *cert); +int CMS_RecipientInfo_kari_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk); +EVP_CIPHER_CTX *CMS_RecipientInfo_kari_get0_ctx(CMS_RecipientInfo *ri); +int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms, + CMS_RecipientInfo *ri, + CMS_RecipientEncryptedKey *rek); + +int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg, + ASN1_OCTET_STRING *ukm, int keylen); + +/* Backward compatibility for spelling errors. */ +# define CMS_R_UNKNOWN_DIGEST_ALGORITM CMS_R_UNKNOWN_DIGEST_ALGORITHM +# define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE \ + CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin32/include/openssl/cmserr.h b/openSSL/lin32/include/openssl/cmserr.h new file mode 100644 index 0000000..7dbc13d --- /dev/null +++ b/openSSL/lin32/include/openssl/cmserr.h @@ -0,0 +1,202 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMSERR_H +# define HEADER_CMSERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_CMS + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CMS_strings(void); + +/* + * CMS function codes. + */ +# define CMS_F_CHECK_CONTENT 99 +# define CMS_F_CMS_ADD0_CERT 164 +# define CMS_F_CMS_ADD0_RECIPIENT_KEY 100 +# define CMS_F_CMS_ADD0_RECIPIENT_PASSWORD 165 +# define CMS_F_CMS_ADD1_RECEIPTREQUEST 158 +# define CMS_F_CMS_ADD1_RECIPIENT_CERT 101 +# define CMS_F_CMS_ADD1_SIGNER 102 +# define CMS_F_CMS_ADD1_SIGNINGTIME 103 +# define CMS_F_CMS_COMPRESS 104 +# define CMS_F_CMS_COMPRESSEDDATA_CREATE 105 +# define CMS_F_CMS_COMPRESSEDDATA_INIT_BIO 106 +# define CMS_F_CMS_COPY_CONTENT 107 +# define CMS_F_CMS_COPY_MESSAGEDIGEST 108 +# define CMS_F_CMS_DATA 109 +# define CMS_F_CMS_DATAFINAL 110 +# define CMS_F_CMS_DATAINIT 111 +# define CMS_F_CMS_DECRYPT 112 +# define CMS_F_CMS_DECRYPT_SET1_KEY 113 +# define CMS_F_CMS_DECRYPT_SET1_PASSWORD 166 +# define CMS_F_CMS_DECRYPT_SET1_PKEY 114 +# define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX 115 +# define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO 116 +# define CMS_F_CMS_DIGESTEDDATA_DO_FINAL 117 +# define CMS_F_CMS_DIGEST_VERIFY 118 +# define CMS_F_CMS_ENCODE_RECEIPT 161 +# define CMS_F_CMS_ENCRYPT 119 +# define CMS_F_CMS_ENCRYPTEDCONTENT_INIT 179 +# define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO 120 +# define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT 121 +# define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT 122 +# define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY 123 +# define CMS_F_CMS_ENVELOPEDDATA_CREATE 124 +# define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO 125 +# define CMS_F_CMS_ENVELOPED_DATA_INIT 126 +# define CMS_F_CMS_ENV_ASN1_CTRL 171 +# define CMS_F_CMS_FINAL 127 +# define CMS_F_CMS_GET0_CERTIFICATE_CHOICES 128 +# define CMS_F_CMS_GET0_CONTENT 129 +# define CMS_F_CMS_GET0_ECONTENT_TYPE 130 +# define CMS_F_CMS_GET0_ENVELOPED 131 +# define CMS_F_CMS_GET0_REVOCATION_CHOICES 132 +# define CMS_F_CMS_GET0_SIGNED 133 +# define CMS_F_CMS_MSGSIGDIGEST_ADD1 162 +# define CMS_F_CMS_RECEIPTREQUEST_CREATE0 159 +# define CMS_F_CMS_RECEIPT_VERIFY 160 +# define CMS_F_CMS_RECIPIENTINFO_DECRYPT 134 +# define CMS_F_CMS_RECIPIENTINFO_ENCRYPT 169 +# define CMS_F_CMS_RECIPIENTINFO_KARI_ENCRYPT 178 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ALG 175 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ORIG_ID 173 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_REKS 172 +# define CMS_F_CMS_RECIPIENTINFO_KARI_ORIG_ID_CMP 174 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT 135 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT 136 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID 137 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP 138 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP 139 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT 140 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT 141 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS 142 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID 143 +# define CMS_F_CMS_RECIPIENTINFO_PWRI_CRYPT 167 +# define CMS_F_CMS_RECIPIENTINFO_SET0_KEY 144 +# define CMS_F_CMS_RECIPIENTINFO_SET0_PASSWORD 168 +# define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY 145 +# define CMS_F_CMS_SD_ASN1_CTRL 170 +# define CMS_F_CMS_SET1_IAS 176 +# define CMS_F_CMS_SET1_KEYID 177 +# define CMS_F_CMS_SET1_SIGNERIDENTIFIER 146 +# define CMS_F_CMS_SET_DETACHED 147 +# define CMS_F_CMS_SIGN 148 +# define CMS_F_CMS_SIGNED_DATA_INIT 149 +# define CMS_F_CMS_SIGNERINFO_CONTENT_SIGN 150 +# define CMS_F_CMS_SIGNERINFO_SIGN 151 +# define CMS_F_CMS_SIGNERINFO_VERIFY 152 +# define CMS_F_CMS_SIGNERINFO_VERIFY_CERT 153 +# define CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT 154 +# define CMS_F_CMS_SIGN_RECEIPT 163 +# define CMS_F_CMS_SI_CHECK_ATTRIBUTES 183 +# define CMS_F_CMS_STREAM 155 +# define CMS_F_CMS_UNCOMPRESS 156 +# define CMS_F_CMS_VERIFY 157 +# define CMS_F_KEK_UNWRAP_KEY 180 + +/* + * CMS reason codes. + */ +# define CMS_R_ADD_SIGNER_ERROR 99 +# define CMS_R_ATTRIBUTE_ERROR 161 +# define CMS_R_CERTIFICATE_ALREADY_PRESENT 175 +# define CMS_R_CERTIFICATE_HAS_NO_KEYID 160 +# define CMS_R_CERTIFICATE_VERIFY_ERROR 100 +# define CMS_R_CIPHER_INITIALISATION_ERROR 101 +# define CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR 102 +# define CMS_R_CMS_DATAFINAL_ERROR 103 +# define CMS_R_CMS_LIB 104 +# define CMS_R_CONTENTIDENTIFIER_MISMATCH 170 +# define CMS_R_CONTENT_NOT_FOUND 105 +# define CMS_R_CONTENT_TYPE_MISMATCH 171 +# define CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA 106 +# define CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA 107 +# define CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA 108 +# define CMS_R_CONTENT_VERIFY_ERROR 109 +# define CMS_R_CTRL_ERROR 110 +# define CMS_R_CTRL_FAILURE 111 +# define CMS_R_DECRYPT_ERROR 112 +# define CMS_R_ERROR_GETTING_PUBLIC_KEY 113 +# define CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE 114 +# define CMS_R_ERROR_SETTING_KEY 115 +# define CMS_R_ERROR_SETTING_RECIPIENTINFO 116 +# define CMS_R_INVALID_ENCRYPTED_KEY_LENGTH 117 +# define CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER 176 +# define CMS_R_INVALID_KEY_LENGTH 118 +# define CMS_R_MD_BIO_INIT_ERROR 119 +# define CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH 120 +# define CMS_R_MESSAGEDIGEST_WRONG_LENGTH 121 +# define CMS_R_MSGSIGDIGEST_ERROR 172 +# define CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE 162 +# define CMS_R_MSGSIGDIGEST_WRONG_LENGTH 163 +# define CMS_R_NEED_ONE_SIGNER 164 +# define CMS_R_NOT_A_SIGNED_RECEIPT 165 +# define CMS_R_NOT_ENCRYPTED_DATA 122 +# define CMS_R_NOT_KEK 123 +# define CMS_R_NOT_KEY_AGREEMENT 181 +# define CMS_R_NOT_KEY_TRANSPORT 124 +# define CMS_R_NOT_PWRI 177 +# define CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 125 +# define CMS_R_NO_CIPHER 126 +# define CMS_R_NO_CONTENT 127 +# define CMS_R_NO_CONTENT_TYPE 173 +# define CMS_R_NO_DEFAULT_DIGEST 128 +# define CMS_R_NO_DIGEST_SET 129 +# define CMS_R_NO_KEY 130 +# define CMS_R_NO_KEY_OR_CERT 174 +# define CMS_R_NO_MATCHING_DIGEST 131 +# define CMS_R_NO_MATCHING_RECIPIENT 132 +# define CMS_R_NO_MATCHING_SIGNATURE 166 +# define CMS_R_NO_MSGSIGDIGEST 167 +# define CMS_R_NO_PASSWORD 178 +# define CMS_R_NO_PRIVATE_KEY 133 +# define CMS_R_NO_PUBLIC_KEY 134 +# define CMS_R_NO_RECEIPT_REQUEST 168 +# define CMS_R_NO_SIGNERS 135 +# define CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 136 +# define CMS_R_RECEIPT_DECODE_ERROR 169 +# define CMS_R_RECIPIENT_ERROR 137 +# define CMS_R_SIGNER_CERTIFICATE_NOT_FOUND 138 +# define CMS_R_SIGNFINAL_ERROR 139 +# define CMS_R_SMIME_TEXT_ERROR 140 +# define CMS_R_STORE_INIT_ERROR 141 +# define CMS_R_TYPE_NOT_COMPRESSED_DATA 142 +# define CMS_R_TYPE_NOT_DATA 143 +# define CMS_R_TYPE_NOT_DIGESTED_DATA 144 +# define CMS_R_TYPE_NOT_ENCRYPTED_DATA 145 +# define CMS_R_TYPE_NOT_ENVELOPED_DATA 146 +# define CMS_R_UNABLE_TO_FINALIZE_CONTEXT 147 +# define CMS_R_UNKNOWN_CIPHER 148 +# define CMS_R_UNKNOWN_DIGEST_ALGORITHM 149 +# define CMS_R_UNKNOWN_ID 150 +# define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM 151 +# define CMS_R_UNSUPPORTED_CONTENT_TYPE 152 +# define CMS_R_UNSUPPORTED_KEK_ALGORITHM 153 +# define CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM 179 +# define CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE 155 +# define CMS_R_UNSUPPORTED_RECIPIENT_TYPE 154 +# define CMS_R_UNSUPPORTED_TYPE 156 +# define CMS_R_UNWRAP_ERROR 157 +# define CMS_R_UNWRAP_FAILURE 180 +# define CMS_R_VERIFICATION_FAILURE 158 +# define CMS_R_WRAP_ERROR 159 + +# endif +#endif diff --git a/openSSL/lin32/include/openssl/comp.h b/openSSL/lin32/include/openssl/comp.h new file mode 100644 index 0000000..d814d3c --- /dev/null +++ b/openSSL/lin32/include/openssl/comp.h @@ -0,0 +1,53 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_COMP_H +# define HEADER_COMP_H + +# include + +# ifndef OPENSSL_NO_COMP +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); + +#if OPENSSL_API_COMPAT < 0x10100000L +#define COMP_zlib_cleanup() while(0) continue +#endif + +# ifdef HEADER_BIO_H +# ifdef ZLIB +const BIO_METHOD *BIO_f_zlib(void); +# endif +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin32/include/openssl/comperr.h b/openSSL/lin32/include/openssl/comperr.h new file mode 100644 index 0000000..90231e9 --- /dev/null +++ b/openSSL/lin32/include/openssl/comperr.h @@ -0,0 +1,44 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_COMPERR_H +# define HEADER_COMPERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_COMP + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_COMP_strings(void); + +/* + * COMP function codes. + */ +# define COMP_F_BIO_ZLIB_FLUSH 99 +# define COMP_F_BIO_ZLIB_NEW 100 +# define COMP_F_BIO_ZLIB_READ 101 +# define COMP_F_BIO_ZLIB_WRITE 102 +# define COMP_F_COMP_CTX_NEW 103 + +/* + * COMP reason codes. + */ +# define COMP_R_ZLIB_DEFLATE_ERROR 99 +# define COMP_R_ZLIB_INFLATE_ERROR 100 +# define COMP_R_ZLIB_NOT_SUPPORTED 101 + +# endif +#endif diff --git a/openSSL/lin32/include/openssl/conf.h b/openSSL/lin32/include/openssl/conf.h new file mode 100644 index 0000000..7336cd2 --- /dev/null +++ b/openSSL/lin32/include/openssl/conf.h @@ -0,0 +1,168 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CONF_H +# define HEADER_CONF_H + +# include +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char *section; + char *name; + char *value; +} CONF_VALUE; + +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_LHASH_OF(CONF_VALUE); + +struct conf_st; +struct conf_method_st; +typedef struct conf_method_st CONF_METHOD; + +struct conf_method_st { + const char *name; + CONF *(*create) (CONF_METHOD *meth); + int (*init) (CONF *conf); + int (*destroy) (CONF *conf); + int (*destroy_data) (CONF *conf); + int (*load_bio) (CONF *conf, BIO *bp, long *eline); + int (*dump) (const CONF *conf, BIO *bp); + int (*is_number) (const CONF *conf, char c); + int (*to_int) (const CONF *conf, char c); + int (*load) (CONF *conf, const char *name, long *eline); +}; + +/* Module definitions */ + +typedef struct conf_imodule_st CONF_IMODULE; +typedef struct conf_module_st CONF_MODULE; + +DEFINE_STACK_OF(CONF_MODULE) +DEFINE_STACK_OF(CONF_IMODULE) + +/* DSO module function typedefs */ +typedef int conf_init_func (CONF_IMODULE *md, const CONF *cnf); +typedef void conf_finish_func (CONF_IMODULE *md); + +# define CONF_MFLAGS_IGNORE_ERRORS 0x1 +# define CONF_MFLAGS_IGNORE_RETURN_CODES 0x2 +# define CONF_MFLAGS_SILENT 0x4 +# define CONF_MFLAGS_NO_DSO 0x8 +# define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10 +# define CONF_MFLAGS_DEFAULT_SECTION 0x20 + +int CONF_set_default_method(CONF_METHOD *meth); +void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash); +LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file, + long *eline); +# ifndef OPENSSL_NO_STDIO +LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp, + long *eline); +# endif +LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp, + long *eline); +STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf, + const char *section); +char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf, const char *group, + const char *name); +long CONF_get_number(LHASH_OF(CONF_VALUE) *conf, const char *group, + const char *name); +void CONF_free(LHASH_OF(CONF_VALUE) *conf); +#ifndef OPENSSL_NO_STDIO +int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out); +#endif +int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out); + +DEPRECATEDIN_1_1_0(void OPENSSL_config(const char *config_name)) + +#if OPENSSL_API_COMPAT < 0x10100000L +# define OPENSSL_no_config() \ + OPENSSL_init_crypto(OPENSSL_INIT_NO_LOAD_CONFIG, NULL) +#endif + +/* + * New conf code. The semantics are different from the functions above. If + * that wasn't the case, the above functions would have been replaced + */ + +struct conf_st { + CONF_METHOD *meth; + void *meth_data; + LHASH_OF(CONF_VALUE) *data; +}; + +CONF *NCONF_new(CONF_METHOD *meth); +CONF_METHOD *NCONF_default(void); +CONF_METHOD *NCONF_WIN32(void); +void NCONF_free(CONF *conf); +void NCONF_free_data(CONF *conf); + +int NCONF_load(CONF *conf, const char *file, long *eline); +# ifndef OPENSSL_NO_STDIO +int NCONF_load_fp(CONF *conf, FILE *fp, long *eline); +# endif +int NCONF_load_bio(CONF *conf, BIO *bp, long *eline); +STACK_OF(CONF_VALUE) *NCONF_get_section(const CONF *conf, + const char *section); +char *NCONF_get_string(const CONF *conf, const char *group, const char *name); +int NCONF_get_number_e(const CONF *conf, const char *group, const char *name, + long *result); +#ifndef OPENSSL_NO_STDIO +int NCONF_dump_fp(const CONF *conf, FILE *out); +#endif +int NCONF_dump_bio(const CONF *conf, BIO *out); + +#define NCONF_get_number(c,g,n,r) NCONF_get_number_e(c,g,n,r) + +/* Module functions */ + +int CONF_modules_load(const CONF *cnf, const char *appname, + unsigned long flags); +int CONF_modules_load_file(const char *filename, const char *appname, + unsigned long flags); +void CONF_modules_unload(int all); +void CONF_modules_finish(void); +#if OPENSSL_API_COMPAT < 0x10100000L +# define CONF_modules_free() while(0) continue +#endif +int CONF_module_add(const char *name, conf_init_func *ifunc, + conf_finish_func *ffunc); + +const char *CONF_imodule_get_name(const CONF_IMODULE *md); +const char *CONF_imodule_get_value(const CONF_IMODULE *md); +void *CONF_imodule_get_usr_data(const CONF_IMODULE *md); +void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data); +CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md); +unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md); +void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags); +void *CONF_module_get_usr_data(CONF_MODULE *pmod); +void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data); + +char *CONF_get1_default_config_file(void); + +int CONF_parse_list(const char *list, int sep, int nospc, + int (*list_cb) (const char *elem, int len, void *usr), + void *arg); + +void OPENSSL_load_builtin_modules(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/conf_api.h b/openSSL/lin32/include/openssl/conf_api.h new file mode 100644 index 0000000..a0275ad --- /dev/null +++ b/openSSL/lin32/include/openssl/conf_api.h @@ -0,0 +1,40 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CONF_API_H +# define HEADER_CONF_API_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Up until OpenSSL 0.9.5a, this was new_section */ +CONF_VALUE *_CONF_new_section(CONF *conf, const char *section); +/* Up until OpenSSL 0.9.5a, this was get_section */ +CONF_VALUE *_CONF_get_section(const CONF *conf, const char *section); +/* Up until OpenSSL 0.9.5a, this was CONF_get_section */ +STACK_OF(CONF_VALUE) *_CONF_get_section_values(const CONF *conf, + const char *section); + +int _CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value); +char *_CONF_get_string(const CONF *conf, const char *section, + const char *name); +long _CONF_get_number(const CONF *conf, const char *section, + const char *name); + +int _CONF_new_data(CONF *conf); +void _CONF_free_data(CONF *conf); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin32/include/openssl/conferr.h b/openSSL/lin32/include/openssl/conferr.h new file mode 100644 index 0000000..32b9229 --- /dev/null +++ b/openSSL/lin32/include/openssl/conferr.h @@ -0,0 +1,76 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CONFERR_H +# define HEADER_CONFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CONF_strings(void); + +/* + * CONF function codes. + */ +# define CONF_F_CONF_DUMP_FP 104 +# define CONF_F_CONF_LOAD 100 +# define CONF_F_CONF_LOAD_FP 103 +# define CONF_F_CONF_PARSE_LIST 119 +# define CONF_F_DEF_LOAD 120 +# define CONF_F_DEF_LOAD_BIO 121 +# define CONF_F_GET_NEXT_FILE 107 +# define CONF_F_MODULE_ADD 122 +# define CONF_F_MODULE_INIT 115 +# define CONF_F_MODULE_LOAD_DSO 117 +# define CONF_F_MODULE_RUN 118 +# define CONF_F_NCONF_DUMP_BIO 105 +# define CONF_F_NCONF_DUMP_FP 106 +# define CONF_F_NCONF_GET_NUMBER_E 112 +# define CONF_F_NCONF_GET_SECTION 108 +# define CONF_F_NCONF_GET_STRING 109 +# define CONF_F_NCONF_LOAD 113 +# define CONF_F_NCONF_LOAD_BIO 110 +# define CONF_F_NCONF_LOAD_FP 114 +# define CONF_F_NCONF_NEW 111 +# define CONF_F_PROCESS_INCLUDE 116 +# define CONF_F_SSL_MODULE_INIT 123 +# define CONF_F_STR_COPY 101 + +/* + * CONF reason codes. + */ +# define CONF_R_ERROR_LOADING_DSO 110 +# define CONF_R_LIST_CANNOT_BE_NULL 115 +# define CONF_R_MISSING_CLOSE_SQUARE_BRACKET 100 +# define CONF_R_MISSING_EQUAL_SIGN 101 +# define CONF_R_MISSING_INIT_FUNCTION 112 +# define CONF_R_MODULE_INITIALIZATION_ERROR 109 +# define CONF_R_NO_CLOSE_BRACE 102 +# define CONF_R_NO_CONF 105 +# define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106 +# define CONF_R_NO_SECTION 107 +# define CONF_R_NO_SUCH_FILE 114 +# define CONF_R_NO_VALUE 108 +# define CONF_R_NUMBER_TOO_LARGE 121 +# define CONF_R_RECURSIVE_DIRECTORY_INCLUDE 111 +# define CONF_R_SSL_COMMAND_SECTION_EMPTY 117 +# define CONF_R_SSL_COMMAND_SECTION_NOT_FOUND 118 +# define CONF_R_SSL_SECTION_EMPTY 119 +# define CONF_R_SSL_SECTION_NOT_FOUND 120 +# define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103 +# define CONF_R_UNKNOWN_MODULE_NAME 113 +# define CONF_R_VARIABLE_EXPANSION_TOO_LONG 116 +# define CONF_R_VARIABLE_HAS_NO_VALUE 104 + +#endif diff --git a/openSSL/lin32/include/openssl/crypto.h b/openSSL/lin32/include/openssl/crypto.h new file mode 100644 index 0000000..7d0b526 --- /dev/null +++ b/openSSL/lin32/include/openssl/crypto.h @@ -0,0 +1,445 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CRYPTO_H +# define HEADER_CRYPTO_H + +# include +# include + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif + +# include +# include +# include +# include +# include + +# ifdef CHARSET_EBCDIC +# include +# endif + +/* + * Resolve problems on some operating systems with symbol names that clash + * one way or another + */ +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSLeay OpenSSL_version_num +# define SSLeay_version OpenSSL_version +# define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER +# define SSLEAY_VERSION OPENSSL_VERSION +# define SSLEAY_CFLAGS OPENSSL_CFLAGS +# define SSLEAY_BUILT_ON OPENSSL_BUILT_ON +# define SSLEAY_PLATFORM OPENSSL_PLATFORM +# define SSLEAY_DIR OPENSSL_DIR + +/* + * Old type for allocating dynamic locks. No longer used. Use the new thread + * API instead. + */ +typedef struct { + int dummy; +} CRYPTO_dynlock; + +# endif /* OPENSSL_API_COMPAT */ + +typedef void CRYPTO_RWLOCK; + +CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); +int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock); +int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock); +int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); +void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); + +int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); + +/* + * The following can be used to detect memory leaks in the library. If + * used, it turns on malloc checking + */ +# define CRYPTO_MEM_CHECK_OFF 0x0 /* Control only */ +# define CRYPTO_MEM_CHECK_ON 0x1 /* Control and mode bit */ +# define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ +# define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ + +struct crypto_ex_data_st { + STACK_OF(void) *sk; +}; +DEFINE_STACK_OF(void) + +/* + * Per class, we have a STACK of function pointers. + */ +# define CRYPTO_EX_INDEX_SSL 0 +# define CRYPTO_EX_INDEX_SSL_CTX 1 +# define CRYPTO_EX_INDEX_SSL_SESSION 2 +# define CRYPTO_EX_INDEX_X509 3 +# define CRYPTO_EX_INDEX_X509_STORE 4 +# define CRYPTO_EX_INDEX_X509_STORE_CTX 5 +# define CRYPTO_EX_INDEX_DH 6 +# define CRYPTO_EX_INDEX_DSA 7 +# define CRYPTO_EX_INDEX_EC_KEY 8 +# define CRYPTO_EX_INDEX_RSA 9 +# define CRYPTO_EX_INDEX_ENGINE 10 +# define CRYPTO_EX_INDEX_UI 11 +# define CRYPTO_EX_INDEX_BIO 12 +# define CRYPTO_EX_INDEX_APP 13 +# define CRYPTO_EX_INDEX_UI_METHOD 14 +# define CRYPTO_EX_INDEX_DRBG 15 +# define CRYPTO_EX_INDEX__COUNT 16 + +/* No longer needed, so this is a no-op */ +#define OPENSSL_malloc_init() while(0) continue + +int CRYPTO_mem_ctrl(int mode); + +# define OPENSSL_malloc(num) \ + CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_zalloc(num) \ + CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_realloc(addr, num) \ + CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_realloc(addr, old_num, num) \ + CRYPTO_clear_realloc(addr, old_num, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_free(addr, num) \ + CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_free(addr) \ + CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_memdup(str, s) \ + CRYPTO_memdup((str), s, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strdup(str) \ + CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strndup(str, n) \ + CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_malloc(num) \ + CRYPTO_secure_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_zalloc(num) \ + CRYPTO_secure_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_free(addr) \ + CRYPTO_secure_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_clear_free(addr, num) \ + CRYPTO_secure_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_actual_size(ptr) \ + CRYPTO_secure_actual_size(ptr) + +size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); +size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); +size_t OPENSSL_strnlen(const char *str, size_t maxlen); +char *OPENSSL_buf2hexstr(const unsigned char *buffer, long len); +unsigned char *OPENSSL_hexstr2buf(const char *str, long *len); +int OPENSSL_hexchar2int(unsigned char c); + +# define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U<<(sizeof(int)*8-1))-1)/sizeof(type)) + +unsigned long OpenSSL_version_num(void); +const char *OpenSSL_version(int type); +# define OPENSSL_VERSION 0 +# define OPENSSL_CFLAGS 1 +# define OPENSSL_BUILT_ON 2 +# define OPENSSL_PLATFORM 3 +# define OPENSSL_DIR 4 +# define OPENSSL_ENGINES_DIR 5 + +int OPENSSL_issetugid(void); + +typedef void CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp); +__owur int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, + CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); +/* No longer use an index. */ +int CRYPTO_free_ex_index(int class_index, int idx); + +/* + * Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a + * given class (invokes whatever per-class callbacks are applicable) + */ +int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); +int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, + const CRYPTO_EX_DATA *from); + +void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); + +/* + * Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular + * index (relative to the class type involved) + */ +int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); +void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx); + +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * This function cleans up all "ex_data" state. It mustn't be called under + * potential race-conditions. + */ +# define CRYPTO_cleanup_all_ex_data() while(0) continue + +/* + * The old locking functions have been removed completely without compatibility + * macros. This is because the old functions either could not properly report + * errors, or the returned error values were not clearly documented. + * Replacing the locking functions with no-ops would cause race condition + * issues in the affected applications. It is far better for them to fail at + * compile time. + * On the other hand, the locking callbacks are no longer used. Consequently, + * the callback management functions can be safely replaced with no-op macros. + */ +# define CRYPTO_num_locks() (1) +# define CRYPTO_set_locking_callback(func) +# define CRYPTO_get_locking_callback() (NULL) +# define CRYPTO_set_add_lock_callback(func) +# define CRYPTO_get_add_lock_callback() (NULL) + +/* + * These defines where used in combination with the old locking callbacks, + * they are not called anymore, but old code that's not called might still + * use them. + */ +# define CRYPTO_LOCK 1 +# define CRYPTO_UNLOCK 2 +# define CRYPTO_READ 4 +# define CRYPTO_WRITE 8 + +/* This structure is no longer used */ +typedef struct crypto_threadid_st { + int dummy; +} CRYPTO_THREADID; +/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */ +# define CRYPTO_THREADID_set_numeric(id, val) +# define CRYPTO_THREADID_set_pointer(id, ptr) +# define CRYPTO_THREADID_set_callback(threadid_func) (0) +# define CRYPTO_THREADID_get_callback() (NULL) +# define CRYPTO_THREADID_current(id) +# define CRYPTO_THREADID_cmp(a, b) (-1) +# define CRYPTO_THREADID_cpy(dest, src) +# define CRYPTO_THREADID_hash(id) (0UL) + +# if OPENSSL_API_COMPAT < 0x10000000L +# define CRYPTO_set_id_callback(func) +# define CRYPTO_get_id_callback() (NULL) +# define CRYPTO_thread_id() (0UL) +# endif /* OPENSSL_API_COMPAT < 0x10000000L */ + +# define CRYPTO_set_dynlock_create_callback(dyn_create_function) +# define CRYPTO_set_dynlock_lock_callback(dyn_lock_function) +# define CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function) +# define CRYPTO_get_dynlock_create_callback() (NULL) +# define CRYPTO_get_dynlock_lock_callback() (NULL) +# define CRYPTO_get_dynlock_destroy_callback() (NULL) +# endif /* OPENSSL_API_COMPAT < 0x10100000L */ + +int CRYPTO_set_mem_functions( + void *(*m) (size_t, const char *, int), + void *(*r) (void *, size_t, const char *, int), + void (*f) (void *, const char *, int)); +int CRYPTO_set_mem_debug(int flag); +void CRYPTO_get_mem_functions( + void *(**m) (size_t, const char *, int), + void *(**r) (void *, size_t, const char *, int), + void (**f) (void *, const char *, int)); + +void *CRYPTO_malloc(size_t num, const char *file, int line); +void *CRYPTO_zalloc(size_t num, const char *file, int line); +void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +char *CRYPTO_strdup(const char *str, const char *file, int line); +char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +void CRYPTO_free(void *ptr, const char *file, int line); +void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); +void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); +void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, + const char *file, int line); + +int CRYPTO_secure_malloc_init(size_t sz, int minsize); +int CRYPTO_secure_malloc_done(void); +void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +void CRYPTO_secure_free(void *ptr, const char *file, int line); +void CRYPTO_secure_clear_free(void *ptr, size_t num, + const char *file, int line); +int CRYPTO_secure_allocated(const void *ptr); +int CRYPTO_secure_malloc_initialized(void); +size_t CRYPTO_secure_actual_size(void *ptr); +size_t CRYPTO_secure_used(void); + +void OPENSSL_cleanse(void *ptr, size_t len); + +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_mem_debug_push(info) \ + CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_mem_debug_pop() \ + CRYPTO_mem_debug_pop() +int CRYPTO_mem_debug_push(const char *info, const char *file, int line); +int CRYPTO_mem_debug_pop(void); +void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); + +/*- + * Debugging functions (enabled by CRYPTO_set_mem_debug(1)) + * The flag argument has the following significance: + * 0: called before the actual memory allocation has taken place + * 1: called after the actual memory allocation has taken place + */ +void CRYPTO_mem_debug_malloc(void *addr, size_t num, int flag, + const char *file, int line); +void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, size_t num, int flag, + const char *file, int line); +void CRYPTO_mem_debug_free(void *addr, int flag, + const char *file, int line); + +int CRYPTO_mem_leaks_cb(int (*cb) (const char *str, size_t len, void *u), + void *u); +# ifndef OPENSSL_NO_STDIO +int CRYPTO_mem_leaks_fp(FILE *); +# endif +int CRYPTO_mem_leaks(BIO *bio); +# endif + +/* die if we have to */ +ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line); +# if OPENSSL_API_COMPAT < 0x10100000L +# define OpenSSLDie(f,l,a) OPENSSL_die((a),(f),(l)) +# endif +# define OPENSSL_assert(e) \ + (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1)) + +int OPENSSL_isservice(void); + +int FIPS_mode(void); +int FIPS_mode_set(int r); + +void OPENSSL_init(void); +# ifdef OPENSSL_SYS_UNIX +void OPENSSL_fork_prepare(void); +void OPENSSL_fork_parent(void); +void OPENSSL_fork_child(void); +# endif + +struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result); +int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec); +int OPENSSL_gmtime_diff(int *pday, int *psec, + const struct tm *from, const struct tm *to); + +/* + * CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal. + * It takes an amount of time dependent on |len|, but independent of the + * contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements + * into a defined order as the return value when a != b is undefined, other + * than to be non-zero. + */ +int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len); + +/* Standard initialisation options */ +# define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L +# define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L +# define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L +# define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L +# define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0x00000010L +# define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0x00000020L +# define OPENSSL_INIT_LOAD_CONFIG 0x00000040L +# define OPENSSL_INIT_NO_LOAD_CONFIG 0x00000080L +# define OPENSSL_INIT_ASYNC 0x00000100L +# define OPENSSL_INIT_ENGINE_RDRAND 0x00000200L +# define OPENSSL_INIT_ENGINE_DYNAMIC 0x00000400L +# define OPENSSL_INIT_ENGINE_OPENSSL 0x00000800L +# define OPENSSL_INIT_ENGINE_CRYPTODEV 0x00001000L +# define OPENSSL_INIT_ENGINE_CAPI 0x00002000L +# define OPENSSL_INIT_ENGINE_PADLOCK 0x00004000L +# define OPENSSL_INIT_ENGINE_AFALG 0x00008000L +/* OPENSSL_INIT_ZLIB 0x00010000L */ +# define OPENSSL_INIT_ATFORK 0x00020000L +/* OPENSSL_INIT_BASE_ONLY 0x00040000L */ +# define OPENSSL_INIT_NO_ATEXIT 0x00080000L +/* OPENSSL_INIT flag range 0xfff00000 reserved for OPENSSL_init_ssl() */ +/* Max OPENSSL_INIT flag value is 0x80000000 */ + +/* openssl and dasync not counted as builtin */ +# define OPENSSL_INIT_ENGINE_ALL_BUILTIN \ + (OPENSSL_INIT_ENGINE_RDRAND | OPENSSL_INIT_ENGINE_DYNAMIC \ + | OPENSSL_INIT_ENGINE_CRYPTODEV | OPENSSL_INIT_ENGINE_CAPI | \ + OPENSSL_INIT_ENGINE_PADLOCK) + + +/* Library initialisation functions */ +void OPENSSL_cleanup(void); +int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); +int OPENSSL_atexit(void (*handler)(void)); +void OPENSSL_thread_stop(void); + +/* Low-level control of initialization */ +OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void); +# ifndef OPENSSL_NO_STDIO +int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings, + const char *config_filename); +void OPENSSL_INIT_set_config_file_flags(OPENSSL_INIT_SETTINGS *settings, + unsigned long flags); +int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings, + const char *config_appname); +# endif +void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings); + +# if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG) +# if defined(_WIN32) +# if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include in order to use this */ +typedef DWORD CRYPTO_THREAD_LOCAL; +typedef DWORD CRYPTO_THREAD_ID; + +typedef LONG CRYPTO_ONCE; +# define CRYPTO_ONCE_STATIC_INIT 0 +# endif +# else +# include +typedef pthread_once_t CRYPTO_ONCE; +typedef pthread_key_t CRYPTO_THREAD_LOCAL; +typedef pthread_t CRYPTO_THREAD_ID; + +# define CRYPTO_ONCE_STATIC_INIT PTHREAD_ONCE_INIT +# endif +# endif + +# if !defined(CRYPTO_ONCE_STATIC_INIT) +typedef unsigned int CRYPTO_ONCE; +typedef unsigned int CRYPTO_THREAD_LOCAL; +typedef unsigned int CRYPTO_THREAD_ID; +# define CRYPTO_ONCE_STATIC_INIT 0 +# endif + +int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void (*init)(void)); + +int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *)); +void *CRYPTO_THREAD_get_local(CRYPTO_THREAD_LOCAL *key); +int CRYPTO_THREAD_set_local(CRYPTO_THREAD_LOCAL *key, void *val); +int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key); + +CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void); +int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/cryptoerr.h b/openSSL/lin32/include/openssl/cryptoerr.h new file mode 100644 index 0000000..3db5a4e --- /dev/null +++ b/openSSL/lin32/include/openssl/cryptoerr.h @@ -0,0 +1,57 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CRYPTOERR_H +# define HEADER_CRYPTOERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CRYPTO_strings(void); + +/* + * CRYPTO function codes. + */ +# define CRYPTO_F_CMAC_CTX_NEW 120 +# define CRYPTO_F_CRYPTO_DUP_EX_DATA 110 +# define CRYPTO_F_CRYPTO_FREE_EX_DATA 111 +# define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100 +# define CRYPTO_F_CRYPTO_MEMDUP 115 +# define CRYPTO_F_CRYPTO_NEW_EX_DATA 112 +# define CRYPTO_F_CRYPTO_OCB128_COPY_CTX 121 +# define CRYPTO_F_CRYPTO_OCB128_INIT 122 +# define CRYPTO_F_CRYPTO_SET_EX_DATA 102 +# define CRYPTO_F_FIPS_MODE_SET 109 +# define CRYPTO_F_GET_AND_LOCK 113 +# define CRYPTO_F_OPENSSL_ATEXIT 114 +# define CRYPTO_F_OPENSSL_BUF2HEXSTR 117 +# define CRYPTO_F_OPENSSL_FOPEN 119 +# define CRYPTO_F_OPENSSL_HEXSTR2BUF 118 +# define CRYPTO_F_OPENSSL_INIT_CRYPTO 116 +# define CRYPTO_F_OPENSSL_LH_NEW 126 +# define CRYPTO_F_OPENSSL_SK_DEEP_COPY 127 +# define CRYPTO_F_OPENSSL_SK_DUP 128 +# define CRYPTO_F_PKEY_HMAC_INIT 123 +# define CRYPTO_F_PKEY_POLY1305_INIT 124 +# define CRYPTO_F_PKEY_SIPHASH_INIT 125 +# define CRYPTO_F_SK_RESERVE 129 + +/* + * CRYPTO reason codes. + */ +# define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED 101 +# define CRYPTO_R_ILLEGAL_HEX_DIGIT 102 +# define CRYPTO_R_ODD_NUMBER_OF_DIGITS 103 + +#endif diff --git a/openSSL/lin32/include/openssl/ct.h b/openSSL/lin32/include/openssl/ct.h new file mode 100644 index 0000000..ebdba34 --- /dev/null +++ b/openSSL/lin32/include/openssl/ct.h @@ -0,0 +1,474 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CT_H +# define HEADER_CT_H + +# include + +# ifndef OPENSSL_NO_CT +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + +/* Minimum RSA key size, from RFC6962 */ +# define SCT_MIN_RSA_BITS 2048 + +/* All hashes are SHA256 in v1 of Certificate Transparency */ +# define CT_V1_HASHLEN SHA256_DIGEST_LENGTH + +typedef enum { + CT_LOG_ENTRY_TYPE_NOT_SET = -1, + CT_LOG_ENTRY_TYPE_X509 = 0, + CT_LOG_ENTRY_TYPE_PRECERT = 1 +} ct_log_entry_type_t; + +typedef enum { + SCT_VERSION_NOT_SET = -1, + SCT_VERSION_V1 = 0 +} sct_version_t; + +typedef enum { + SCT_SOURCE_UNKNOWN, + SCT_SOURCE_TLS_EXTENSION, + SCT_SOURCE_X509V3_EXTENSION, + SCT_SOURCE_OCSP_STAPLED_RESPONSE +} sct_source_t; + +typedef enum { + SCT_VALIDATION_STATUS_NOT_SET, + SCT_VALIDATION_STATUS_UNKNOWN_LOG, + SCT_VALIDATION_STATUS_VALID, + SCT_VALIDATION_STATUS_INVALID, + SCT_VALIDATION_STATUS_UNVERIFIED, + SCT_VALIDATION_STATUS_UNKNOWN_VERSION +} sct_validation_status_t; + +DEFINE_STACK_OF(SCT) +DEFINE_STACK_OF(CTLOG) + +/****************************************** + * CT policy evaluation context functions * + ******************************************/ + +/* + * Creates a new, empty policy evaluation context. + * The caller is responsible for calling CT_POLICY_EVAL_CTX_free when finished + * with the CT_POLICY_EVAL_CTX. + */ +CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new(void); + +/* Deletes a policy evaluation context and anything it owns. */ +void CT_POLICY_EVAL_CTX_free(CT_POLICY_EVAL_CTX *ctx); + +/* Gets the peer certificate that the SCTs are for */ +X509* CT_POLICY_EVAL_CTX_get0_cert(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the certificate associated with the received SCTs. + * Increments the reference count of cert. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert); + +/* Gets the issuer of the aforementioned certificate */ +X509* CT_POLICY_EVAL_CTX_get0_issuer(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the issuer of the certificate associated with the received SCTs. + * Increments the reference count of issuer. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer); + +/* Gets the CT logs that are trusted sources of SCTs */ +const CTLOG_STORE *CT_POLICY_EVAL_CTX_get0_log_store(const CT_POLICY_EVAL_CTX *ctx); + +/* Sets the log store that is in use. It must outlive the CT_POLICY_EVAL_CTX. */ +void CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE(CT_POLICY_EVAL_CTX *ctx, + CTLOG_STORE *log_store); + +/* + * Gets the time, in milliseconds since the Unix epoch, that will be used as the + * current time when checking whether an SCT was issued in the future. + * Such SCTs will fail validation, as required by RFC6962. + */ +uint64_t CT_POLICY_EVAL_CTX_get_time(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the time to evaluate SCTs against, in milliseconds since the Unix epoch. + * If an SCT's timestamp is after this time, it will be interpreted as having + * been issued in the future. RFC6962 states that "TLS clients MUST reject SCTs + * whose timestamp is in the future", so an SCT will not validate in this case. + */ +void CT_POLICY_EVAL_CTX_set_time(CT_POLICY_EVAL_CTX *ctx, uint64_t time_in_ms); + +/***************** + * SCT functions * + *****************/ + +/* + * Creates a new, blank SCT. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new(void); + +/* + * Creates a new SCT from some base64-encoded strings. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new_from_base64(unsigned char version, + const char *logid_base64, + ct_log_entry_type_t entry_type, + uint64_t timestamp, + const char *extensions_base64, + const char *signature_base64); + +/* + * Frees the SCT and the underlying data structures. + */ +void SCT_free(SCT *sct); + +/* + * Free a stack of SCTs, and the underlying SCTs themselves. + * Intended to be compatible with X509V3_EXT_FREE. + */ +void SCT_LIST_free(STACK_OF(SCT) *a); + +/* + * Returns the version of the SCT. + */ +sct_version_t SCT_get_version(const SCT *sct); + +/* + * Set the version of an SCT. + * Returns 1 on success, 0 if the version is unrecognized. + */ +__owur int SCT_set_version(SCT *sct, sct_version_t version); + +/* + * Returns the log entry type of the SCT. + */ +ct_log_entry_type_t SCT_get_log_entry_type(const SCT *sct); + +/* + * Set the log entry type of an SCT. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_log_entry_type(SCT *sct, ct_log_entry_type_t entry_type); + +/* + * Gets the ID of the log that an SCT came from. + * Ownership of the log ID remains with the SCT. + * Returns the length of the log ID. + */ +size_t SCT_get0_log_id(const SCT *sct, unsigned char **log_id); + +/* + * Set the log ID of an SCT to point directly to the *log_id specified. + * The SCT takes ownership of the specified pointer. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set0_log_id(SCT *sct, unsigned char *log_id, size_t log_id_len); + +/* + * Set the log ID of an SCT. + * This makes a copy of the log_id. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_log_id(SCT *sct, const unsigned char *log_id, + size_t log_id_len); + +/* + * Returns the timestamp for the SCT (epoch time in milliseconds). + */ +uint64_t SCT_get_timestamp(const SCT *sct); + +/* + * Set the timestamp of an SCT (epoch time in milliseconds). + */ +void SCT_set_timestamp(SCT *sct, uint64_t timestamp); + +/* + * Return the NID for the signature used by the SCT. + * For CT v1, this will be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256 (or NID_undef if incorrect/unset). + */ +int SCT_get_signature_nid(const SCT *sct); + +/* + * Set the signature type of an SCT + * For CT v1, this should be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_signature_nid(SCT *sct, int nid); + +/* + * Set *ext to point to the extension data for the SCT. ext must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_extensions(const SCT *sct, unsigned char **ext); + +/* + * Set the extensions of an SCT to point directly to the *ext specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_extensions(SCT *sct, unsigned char *ext, size_t ext_len); + +/* + * Set the extensions of an SCT. + * This takes a copy of the ext. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_extensions(SCT *sct, const unsigned char *ext, + size_t ext_len); + +/* + * Set *sig to point to the signature for the SCT. sig must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_signature(const SCT *sct, unsigned char **sig); + +/* + * Set the signature of an SCT to point directly to the *sig specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_signature(SCT *sct, unsigned char *sig, size_t sig_len); + +/* + * Set the signature of an SCT to be a copy of the *sig specified. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_signature(SCT *sct, const unsigned char *sig, + size_t sig_len); + +/* + * The origin of this SCT, e.g. TLS extension, OCSP response, etc. + */ +sct_source_t SCT_get_source(const SCT *sct); + +/* + * Set the origin of this SCT, e.g. TLS extension, OCSP response, etc. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_source(SCT *sct, sct_source_t source); + +/* + * Returns a text string describing the validation status of |sct|. + */ +const char *SCT_validation_status_string(const SCT *sct); + +/* + * Pretty-prints an |sct| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * If |logs| is not NULL, it will be used to lookup the CT log that the SCT came + * from, so that the log name can be printed. + */ +void SCT_print(const SCT *sct, BIO *out, int indent, const CTLOG_STORE *logs); + +/* + * Pretty-prints an |sct_list| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * SCTs will be delimited by |separator|. + * If |logs| is not NULL, it will be used to lookup the CT log that each SCT + * came from, so that the log names can be printed. + */ +void SCT_LIST_print(const STACK_OF(SCT) *sct_list, BIO *out, int indent, + const char *separator, const CTLOG_STORE *logs); + +/* + * Gets the last result of validating this SCT. + * If it has not been validated yet, returns SCT_VALIDATION_STATUS_NOT_SET. + */ +sct_validation_status_t SCT_get_validation_status(const SCT *sct); + +/* + * Validates the given SCT with the provided context. + * Sets the "validation_status" field of the SCT. + * Returns 1 if the SCT is valid and the signature verifies. + * Returns 0 if the SCT is invalid or could not be verified. + * Returns -1 if an error occurs. + */ +__owur int SCT_validate(SCT *sct, const CT_POLICY_EVAL_CTX *ctx); + +/* + * Validates the given list of SCTs with the provided context. + * Sets the "validation_status" field of each SCT. + * Returns 1 if there are no invalid SCTs and all signatures verify. + * Returns 0 if at least one SCT is invalid or could not be verified. + * Returns a negative integer if an error occurs. + */ +__owur int SCT_LIST_validate(const STACK_OF(SCT) *scts, + CT_POLICY_EVAL_CTX *ctx); + + +/********************************* + * SCT parsing and serialisation * + *********************************/ + +/* + * Serialize (to TLS format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just return the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2o_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Convert TLS format SCT list to a stack of SCTs. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *o2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + size_t len); + +/* + * Serialize (to DER format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just returns the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2d_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Parses an SCT list in DER format and returns it. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *d2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + long len); + +/* + * Serialize (to TLS format) an |sct| and write it to |out|. + * If |out| is null, no SCT will be output but the length will still be returned. + * If |out| points to a null pointer, a string will be allocated to hold the + * TLS-format SCT. It is the responsibility of the caller to free it. + * If |out| points to an allocated string, the TLS-format SCT will be written + * to it. + * The length of the SCT in TLS format will be returned. + */ +__owur int i2o_SCT(const SCT *sct, unsigned char **out); + +/* + * Parses an SCT in TLS format and returns it. + * If |psct| is not null, it will end up pointing to the parsed SCT. If it + * already points to a non-null pointer, the pointer will be free'd. + * |in| should be a pointer to a string containing the TLS-format SCT. + * |in| will be advanced to the end of the SCT if parsing succeeds. + * |len| should be the length of the SCT in |in|. + * Returns NULL if an error occurs. + * If the SCT is an unsupported version, only the SCT's 'sct' and 'sct_len' + * fields will be populated (with |in| and |len| respectively). + */ +SCT *o2i_SCT(SCT **psct, const unsigned char **in, size_t len); + +/******************** + * CT log functions * + ********************/ + +/* + * Creates a new CT log instance with the given |public_key| and |name|. + * Takes ownership of |public_key| but copies |name|. + * Returns NULL if malloc fails or if |public_key| cannot be converted to DER. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name); + +/* + * Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER + * in |pkey_base64|. The |name| is a string to help users identify this log. + * Returns 1 on success, 0 on failure. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +int CTLOG_new_from_base64(CTLOG ** ct_log, + const char *pkey_base64, const char *name); + +/* + * Deletes a CT log instance and its fields. + */ +void CTLOG_free(CTLOG *log); + +/* Gets the name of the CT log */ +const char *CTLOG_get0_name(const CTLOG *log); +/* Gets the ID of the CT log */ +void CTLOG_get0_log_id(const CTLOG *log, const uint8_t **log_id, + size_t *log_id_len); +/* Gets the public key of the CT log */ +EVP_PKEY *CTLOG_get0_public_key(const CTLOG *log); + +/************************** + * CT log store functions * + **************************/ + +/* + * Creates a new CT log store. + * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. + */ +CTLOG_STORE *CTLOG_STORE_new(void); + +/* + * Deletes a CT log store and all of the CT log instances held within. + */ +void CTLOG_STORE_free(CTLOG_STORE *store); + +/* + * Finds a CT log in the store based on its log ID. + * Returns the CT log, or NULL if no match is found. + */ +const CTLOG *CTLOG_STORE_get0_log_by_id(const CTLOG_STORE *store, + const uint8_t *log_id, + size_t log_id_len); + +/* + * Loads a CT log list into a |store| from a |file|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_file(CTLOG_STORE *store, const char *file); + +/* + * Loads the default CT log list into a |store|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_default_file(CTLOG_STORE *store); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin32/include/openssl/cterr.h b/openSSL/lin32/include/openssl/cterr.h new file mode 100644 index 0000000..feb7bc5 --- /dev/null +++ b/openSSL/lin32/include/openssl/cterr.h @@ -0,0 +1,80 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CTERR_H +# define HEADER_CTERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_CT + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CT_strings(void); + +/* + * CT function codes. + */ +# define CT_F_CTLOG_NEW 117 +# define CT_F_CTLOG_NEW_FROM_BASE64 118 +# define CT_F_CTLOG_NEW_FROM_CONF 119 +# define CT_F_CTLOG_STORE_LOAD_CTX_NEW 122 +# define CT_F_CTLOG_STORE_LOAD_FILE 123 +# define CT_F_CTLOG_STORE_LOAD_LOG 130 +# define CT_F_CTLOG_STORE_NEW 131 +# define CT_F_CT_BASE64_DECODE 124 +# define CT_F_CT_POLICY_EVAL_CTX_NEW 133 +# define CT_F_CT_V1_LOG_ID_FROM_PKEY 125 +# define CT_F_I2O_SCT 107 +# define CT_F_I2O_SCT_LIST 108 +# define CT_F_I2O_SCT_SIGNATURE 109 +# define CT_F_O2I_SCT 110 +# define CT_F_O2I_SCT_LIST 111 +# define CT_F_O2I_SCT_SIGNATURE 112 +# define CT_F_SCT_CTX_NEW 126 +# define CT_F_SCT_CTX_VERIFY 128 +# define CT_F_SCT_NEW 100 +# define CT_F_SCT_NEW_FROM_BASE64 127 +# define CT_F_SCT_SET0_LOG_ID 101 +# define CT_F_SCT_SET1_EXTENSIONS 114 +# define CT_F_SCT_SET1_LOG_ID 115 +# define CT_F_SCT_SET1_SIGNATURE 116 +# define CT_F_SCT_SET_LOG_ENTRY_TYPE 102 +# define CT_F_SCT_SET_SIGNATURE_NID 103 +# define CT_F_SCT_SET_VERSION 104 + +/* + * CT reason codes. + */ +# define CT_R_BASE64_DECODE_ERROR 108 +# define CT_R_INVALID_LOG_ID_LENGTH 100 +# define CT_R_LOG_CONF_INVALID 109 +# define CT_R_LOG_CONF_INVALID_KEY 110 +# define CT_R_LOG_CONF_MISSING_DESCRIPTION 111 +# define CT_R_LOG_CONF_MISSING_KEY 112 +# define CT_R_LOG_KEY_INVALID 113 +# define CT_R_SCT_FUTURE_TIMESTAMP 116 +# define CT_R_SCT_INVALID 104 +# define CT_R_SCT_INVALID_SIGNATURE 107 +# define CT_R_SCT_LIST_INVALID 105 +# define CT_R_SCT_LOG_ID_MISMATCH 114 +# define CT_R_SCT_NOT_SET 106 +# define CT_R_SCT_UNSUPPORTED_VERSION 115 +# define CT_R_UNRECOGNIZED_SIGNATURE_NID 101 +# define CT_R_UNSUPPORTED_ENTRY_TYPE 102 +# define CT_R_UNSUPPORTED_VERSION 103 + +# endif +#endif diff --git a/openSSL/lin32/include/openssl/des.h b/openSSL/lin32/include/openssl/des.h new file mode 100644 index 0000000..be4abbd --- /dev/null +++ b/openSSL/lin32/include/openssl/des.h @@ -0,0 +1,174 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DES_H +# define HEADER_DES_H + +# include + +# ifndef OPENSSL_NO_DES +# ifdef __cplusplus +extern "C" { +# endif +# include + +typedef unsigned int DES_LONG; + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +typedef unsigned char DES_cblock[8]; +typedef /* const */ unsigned char const_DES_cblock[8]; +/* + * With "const", gcc 2.8.1 on Solaris thinks that DES_cblock * and + * const_DES_cblock * are incompatible pointer types. + */ + +typedef struct DES_ks { + union { + DES_cblock cblock; + /* + * make sure things are correct size on machines with 8 byte longs + */ + DES_LONG deslong[2]; + } ks[16]; +} DES_key_schedule; + +# define DES_KEY_SZ (sizeof(DES_cblock)) +# define DES_SCHEDULE_SZ (sizeof(DES_key_schedule)) + +# define DES_ENCRYPT 1 +# define DES_DECRYPT 0 + +# define DES_CBC_MODE 0 +# define DES_PCBC_MODE 1 + +# define DES_ecb2_encrypt(i,o,k1,k2,e) \ + DES_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e)) + +# define DES_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \ + DES_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e)) + +# define DES_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \ + DES_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e)) + +# define DES_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \ + DES_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n)) + +OPENSSL_DECLARE_GLOBAL(int, DES_check_key); /* defaults to false */ +# define DES_check_key OPENSSL_GLOBAL_REF(DES_check_key) + +const char *DES_options(void); +void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output, + DES_key_schedule *ks1, DES_key_schedule *ks2, + DES_key_schedule *ks3, int enc); +DES_LONG DES_cbc_cksum(const unsigned char *input, DES_cblock *output, + long length, DES_key_schedule *schedule, + const_DES_cblock *ivec); +/* DES_cbc_encrypt does not update the IV! Use DES_ncbc_encrypt instead. */ +void DES_cbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_ncbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_xcbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, const_DES_cblock *inw, + const_DES_cblock *outw, int enc); +void DES_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output, + DES_key_schedule *ks, int enc); + +/* + * This is the DES encryption function that gets called by just about every + * other DES routine in the library. You should not use this function except + * to implement 'modes' of DES. I say this because the functions that call + * this routine do the conversion from 'char *' to long, and this needs to be + * done to make sure 'non-aligned' memory access do not occur. The + * characters are loaded 'little endian'. Data is a pointer to 2 unsigned + * long's and ks is the DES_key_schedule to use. enc, is non zero specifies + * encryption, zero if decryption. + */ +void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc); + +/* + * This functions is the same as DES_encrypt1() except that the DES initial + * permutation (IP) and final permutation (FP) have been left out. As for + * DES_encrypt1(), you should not use this function. It is used by the + * routines in the library that implement triple DES. IP() DES_encrypt2() + * DES_encrypt2() DES_encrypt2() FP() is the same as DES_encrypt1() + * DES_encrypt1() DES_encrypt1() except faster :-). + */ +void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc); + +void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3); +void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3); +void DES_ede3_cbc_encrypt(const unsigned char *input, unsigned char *output, + long length, + DES_key_schedule *ks1, DES_key_schedule *ks2, + DES_key_schedule *ks3, DES_cblock *ivec, int enc); +void DES_ede3_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3, + DES_cblock *ivec, int *num, int enc); +void DES_ede3_cfb_encrypt(const unsigned char *in, unsigned char *out, + int numbits, long length, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3, + DES_cblock *ivec, int enc); +void DES_ede3_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3, + DES_cblock *ivec, int *num); +char *DES_fcrypt(const char *buf, const char *salt, char *ret); +char *DES_crypt(const char *buf, const char *salt); +void DES_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits, + long length, DES_key_schedule *schedule, + DES_cblock *ivec); +void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +DES_LONG DES_quad_cksum(const unsigned char *input, DES_cblock output[], + long length, int out_count, DES_cblock *seed); +int DES_random_key(DES_cblock *ret); +void DES_set_odd_parity(DES_cblock *key); +int DES_check_key_parity(const_DES_cblock *key); +int DES_is_weak_key(const_DES_cblock *key); +/* + * DES_set_key (= set_key = DES_key_sched = key_sched) calls + * DES_set_key_checked if global variable DES_check_key is set, + * DES_set_key_unchecked otherwise. + */ +int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule); +int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule); +int DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule); +void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule); +void DES_string_to_key(const char *str, DES_cblock *key); +void DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2); +void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int *num, int enc); +void DES_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int *num); + +# define DES_fixup_key_parity DES_set_odd_parity + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/dh.h b/openSSL/lin32/include/openssl/dh.h new file mode 100644 index 0000000..3527540 --- /dev/null +++ b/openSSL/lin32/include/openssl/dh.h @@ -0,0 +1,340 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DH_H +# define HEADER_DH_H + +# include + +# ifndef OPENSSL_NO_DH +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_DH_MAX_MODULUS_BITS +# define OPENSSL_DH_MAX_MODULUS_BITS 10000 +# endif + +# define OPENSSL_DH_FIPS_MIN_MODULUS_BITS 1024 + +# define DH_FLAG_CACHE_MONT_P 0x01 + +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DH_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +/* + * If this flag is set the DH method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define DH_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define DH_FLAG_NON_FIPS_ALLOW 0x0400 + +/* Already defined in ossl_typ.h */ +/* typedef struct dh_st DH; */ +/* typedef struct dh_method DH_METHOD; */ + +DECLARE_ASN1_ITEM(DHparams) + +# define DH_GENERATOR_2 2 +/* #define DH_GENERATOR_3 3 */ +# define DH_GENERATOR_5 5 + +/* DH_check error codes */ +# define DH_CHECK_P_NOT_PRIME 0x01 +# define DH_CHECK_P_NOT_SAFE_PRIME 0x02 +# define DH_UNABLE_TO_CHECK_GENERATOR 0x04 +# define DH_NOT_SUITABLE_GENERATOR 0x08 +# define DH_CHECK_Q_NOT_PRIME 0x10 +# define DH_CHECK_INVALID_Q_VALUE 0x20 +# define DH_CHECK_INVALID_J_VALUE 0x40 + +/* DH_check_pub_key error codes */ +# define DH_CHECK_PUBKEY_TOO_SMALL 0x01 +# define DH_CHECK_PUBKEY_TOO_LARGE 0x02 +# define DH_CHECK_PUBKEY_INVALID 0x04 + +/* + * primes p where (p-1)/2 is prime too are called "safe"; we define this for + * backward compatibility: + */ +# define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME + +# define d2i_DHparams_fp(fp,x) \ + (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHparams, \ + (fp), \ + (unsigned char **)(x)) +# define i2d_DHparams_fp(fp,x) \ + ASN1_i2d_fp(i2d_DHparams,(fp), (unsigned char *)(x)) +# define d2i_DHparams_bio(bp,x) \ + ASN1_d2i_bio_of(DH, DH_new, d2i_DHparams, bp, x) +# define i2d_DHparams_bio(bp,x) \ + ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x) + +# define d2i_DHxparams_fp(fp,x) \ + (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHxparams, \ + (fp), \ + (unsigned char **)(x)) +# define i2d_DHxparams_fp(fp,x) \ + ASN1_i2d_fp(i2d_DHxparams,(fp), (unsigned char *)(x)) +# define d2i_DHxparams_bio(bp,x) \ + ASN1_d2i_bio_of(DH, DH_new, d2i_DHxparams, bp, x) +# define i2d_DHxparams_bio(bp,x) \ + ASN1_i2d_bio_of_const(DH, i2d_DHxparams, bp, x) + +DH *DHparams_dup(DH *); + +const DH_METHOD *DH_OpenSSL(void); + +void DH_set_default_method(const DH_METHOD *meth); +const DH_METHOD *DH_get_default_method(void); +int DH_set_method(DH *dh, const DH_METHOD *meth); +DH *DH_new_method(ENGINE *engine); + +DH *DH_new(void); +void DH_free(DH *dh); +int DH_up_ref(DH *dh); +int DH_bits(const DH *dh); +int DH_size(const DH *dh); +int DH_security_bits(const DH *dh); +#define DH_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DH, l, p, newf, dupf, freef) +int DH_set_ex_data(DH *d, int idx, void *arg); +void *DH_get_ex_data(DH *d, int idx); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(DH *DH_generate_parameters(int prime_len, int generator, + void (*callback) (int, int, + void *), + void *cb_arg)) + +/* New version */ +int DH_generate_parameters_ex(DH *dh, int prime_len, int generator, + BN_GENCB *cb); + +int DH_check_params_ex(const DH *dh); +int DH_check_ex(const DH *dh); +int DH_check_pub_key_ex(const DH *dh, const BIGNUM *pub_key); +int DH_check_params(const DH *dh, int *ret); +int DH_check(const DH *dh, int *codes); +int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes); +int DH_generate_key(DH *dh); +int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh); +DH *d2i_DHparams(DH **a, const unsigned char **pp, long length); +int i2d_DHparams(const DH *a, unsigned char **pp); +DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length); +int i2d_DHxparams(const DH *a, unsigned char **pp); +# ifndef OPENSSL_NO_STDIO +int DHparams_print_fp(FILE *fp, const DH *x); +# endif +int DHparams_print(BIO *bp, const DH *x); + +/* RFC 5114 parameters */ +DH *DH_get_1024_160(void); +DH *DH_get_2048_224(void); +DH *DH_get_2048_256(void); + +/* Named parameters, currently RFC7919 */ +DH *DH_new_by_nid(int nid); +int DH_get_nid(const DH *dh); + +# ifndef OPENSSL_NO_CMS +/* RFC2631 KDF */ +int DH_KDF_X9_42(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + ASN1_OBJECT *key_oid, + const unsigned char *ukm, size_t ukmlen, const EVP_MD *md); +# endif + +void DH_get0_pqg(const DH *dh, + const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); +int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g); +void DH_get0_key(const DH *dh, + const BIGNUM **pub_key, const BIGNUM **priv_key); +int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key); +const BIGNUM *DH_get0_p(const DH *dh); +const BIGNUM *DH_get0_q(const DH *dh); +const BIGNUM *DH_get0_g(const DH *dh); +const BIGNUM *DH_get0_priv_key(const DH *dh); +const BIGNUM *DH_get0_pub_key(const DH *dh); +void DH_clear_flags(DH *dh, int flags); +int DH_test_flags(const DH *dh, int flags); +void DH_set_flags(DH *dh, int flags); +ENGINE *DH_get0_engine(DH *d); +long DH_get_length(const DH *dh); +int DH_set_length(DH *dh, long length); + +DH_METHOD *DH_meth_new(const char *name, int flags); +void DH_meth_free(DH_METHOD *dhm); +DH_METHOD *DH_meth_dup(const DH_METHOD *dhm); +const char *DH_meth_get0_name(const DH_METHOD *dhm); +int DH_meth_set1_name(DH_METHOD *dhm, const char *name); +int DH_meth_get_flags(const DH_METHOD *dhm); +int DH_meth_set_flags(DH_METHOD *dhm, int flags); +void *DH_meth_get0_app_data(const DH_METHOD *dhm); +int DH_meth_set0_app_data(DH_METHOD *dhm, void *app_data); +int (*DH_meth_get_generate_key(const DH_METHOD *dhm)) (DH *); +int DH_meth_set_generate_key(DH_METHOD *dhm, int (*generate_key) (DH *)); +int (*DH_meth_get_compute_key(const DH_METHOD *dhm)) + (unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_meth_set_compute_key(DH_METHOD *dhm, + int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh)); +int (*DH_meth_get_bn_mod_exp(const DH_METHOD *dhm)) + (const DH *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + BN_CTX *, BN_MONT_CTX *); +int DH_meth_set_bn_mod_exp(DH_METHOD *dhm, + int (*bn_mod_exp) (const DH *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, BN_CTX *, BN_MONT_CTX *)); +int (*DH_meth_get_init(const DH_METHOD *dhm))(DH *); +int DH_meth_set_init(DH_METHOD *dhm, int (*init)(DH *)); +int (*DH_meth_get_finish(const DH_METHOD *dhm)) (DH *); +int DH_meth_set_finish(DH_METHOD *dhm, int (*finish) (DH *)); +int (*DH_meth_get_generate_params(const DH_METHOD *dhm)) + (DH *, int, int, BN_GENCB *); +int DH_meth_set_generate_params(DH_METHOD *dhm, + int (*generate_params) (DH *, int, int, BN_GENCB *)); + + +# define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_subprime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_type(ctx, typ) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_TYPE, typ, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_generator(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dhx_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, \ + EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_DH_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_dh_pad(ctx, pad) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_PAD, pad, NULL) + +# define EVP_PKEY_CTX_set_dh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set0_dh_kdf_oid(ctx, oid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OID, 0, (void *)(oid)) + +# define EVP_PKEY_CTX_get0_dh_kdf_oid(ctx, poid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OID, 0, (void *)(poid)) + +# define EVP_PKEY_CTX_set_dh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_dh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_dh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN, 0, (void *)(plen)) + +# define EVP_PKEY_CTX_set0_dh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_UKM, plen, (void *)(p)) + +# define EVP_PKEY_CTX_get0_dh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_UKM, 0, (void *)(p)) + +# define EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DH_RFC5114 (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_DH_PARAMGEN_TYPE (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_DH_KDF_TYPE (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 13) +# define EVP_PKEY_CTRL_GET_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 14) +# define EVP_PKEY_CTRL_DH_NID (EVP_PKEY_ALG_CTRL + 15) +# define EVP_PKEY_CTRL_DH_PAD (EVP_PKEY_ALG_CTRL + 16) + +/* KDF types */ +# define EVP_PKEY_DH_KDF_NONE 1 +# ifndef OPENSSL_NO_CMS +# define EVP_PKEY_DH_KDF_X9_42 2 +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin32/include/openssl/dherr.h b/openSSL/lin32/include/openssl/dherr.h new file mode 100644 index 0000000..916b3be --- /dev/null +++ b/openSSL/lin32/include/openssl/dherr.h @@ -0,0 +1,88 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DHERR_H +# define HEADER_DHERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_DH + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_DH_strings(void); + +/* + * DH function codes. + */ +# define DH_F_COMPUTE_KEY 102 +# define DH_F_DHPARAMS_PRINT_FP 101 +# define DH_F_DH_BUILTIN_GENPARAMS 106 +# define DH_F_DH_CHECK_EX 121 +# define DH_F_DH_CHECK_PARAMS_EX 122 +# define DH_F_DH_CHECK_PUB_KEY_EX 123 +# define DH_F_DH_CMS_DECRYPT 114 +# define DH_F_DH_CMS_SET_PEERKEY 115 +# define DH_F_DH_CMS_SET_SHARED_INFO 116 +# define DH_F_DH_METH_DUP 117 +# define DH_F_DH_METH_NEW 118 +# define DH_F_DH_METH_SET1_NAME 119 +# define DH_F_DH_NEW_BY_NID 104 +# define DH_F_DH_NEW_METHOD 105 +# define DH_F_DH_PARAM_DECODE 107 +# define DH_F_DH_PKEY_PUBLIC_CHECK 124 +# define DH_F_DH_PRIV_DECODE 110 +# define DH_F_DH_PRIV_ENCODE 111 +# define DH_F_DH_PUB_DECODE 108 +# define DH_F_DH_PUB_ENCODE 109 +# define DH_F_DO_DH_PRINT 100 +# define DH_F_GENERATE_KEY 103 +# define DH_F_PKEY_DH_CTRL_STR 120 +# define DH_F_PKEY_DH_DERIVE 112 +# define DH_F_PKEY_DH_INIT 125 +# define DH_F_PKEY_DH_KEYGEN 113 + +/* + * DH reason codes. + */ +# define DH_R_BAD_GENERATOR 101 +# define DH_R_BN_DECODE_ERROR 109 +# define DH_R_BN_ERROR 106 +# define DH_R_CHECK_INVALID_J_VALUE 115 +# define DH_R_CHECK_INVALID_Q_VALUE 116 +# define DH_R_CHECK_PUBKEY_INVALID 122 +# define DH_R_CHECK_PUBKEY_TOO_LARGE 123 +# define DH_R_CHECK_PUBKEY_TOO_SMALL 124 +# define DH_R_CHECK_P_NOT_PRIME 117 +# define DH_R_CHECK_P_NOT_SAFE_PRIME 118 +# define DH_R_CHECK_Q_NOT_PRIME 119 +# define DH_R_DECODE_ERROR 104 +# define DH_R_INVALID_PARAMETER_NAME 110 +# define DH_R_INVALID_PARAMETER_NID 114 +# define DH_R_INVALID_PUBKEY 102 +# define DH_R_KDF_PARAMETER_ERROR 112 +# define DH_R_KEYS_NOT_SET 108 +# define DH_R_MISSING_PUBKEY 125 +# define DH_R_MODULUS_TOO_LARGE 103 +# define DH_R_NOT_SUITABLE_GENERATOR 120 +# define DH_R_NO_PARAMETERS_SET 107 +# define DH_R_NO_PRIVATE_VALUE 100 +# define DH_R_PARAMETER_ENCODING_ERROR 105 +# define DH_R_PEER_KEY_ERROR 111 +# define DH_R_SHARED_INFO_ERROR 113 +# define DH_R_UNABLE_TO_CHECK_GENERATOR 121 + +# endif +#endif diff --git a/openSSL/lin32/include/openssl/dsa.h b/openSSL/lin32/include/openssl/dsa.h new file mode 100644 index 0000000..6d8a18a --- /dev/null +++ b/openSSL/lin32/include/openssl/dsa.h @@ -0,0 +1,244 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DSA_H +# define HEADER_DSA_H + +# include + +# ifndef OPENSSL_NO_DSA +# ifdef __cplusplus +extern "C" { +# endif +# include +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include + +# ifndef OPENSSL_DSA_MAX_MODULUS_BITS +# define OPENSSL_DSA_MAX_MODULUS_BITS 10000 +# endif + +# define OPENSSL_DSA_FIPS_MIN_MODULUS_BITS 1024 + +# define DSA_FLAG_CACHE_MONT_P 0x01 +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DSA_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +/* + * If this flag is set the DSA method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define DSA_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define DSA_FLAG_NON_FIPS_ALLOW 0x0400 +# define DSA_FLAG_FIPS_CHECKED 0x0800 + +/* Already defined in ossl_typ.h */ +/* typedef struct dsa_st DSA; */ +/* typedef struct dsa_method DSA_METHOD; */ + +typedef struct DSA_SIG_st DSA_SIG; + +# define d2i_DSAparams_fp(fp,x) (DSA *)ASN1_d2i_fp((char *(*)())DSA_new, \ + (char *(*)())d2i_DSAparams,(fp),(unsigned char **)(x)) +# define i2d_DSAparams_fp(fp,x) ASN1_i2d_fp(i2d_DSAparams,(fp), \ + (unsigned char *)(x)) +# define d2i_DSAparams_bio(bp,x) ASN1_d2i_bio_of(DSA,DSA_new,d2i_DSAparams,bp,x) +# define i2d_DSAparams_bio(bp,x) ASN1_i2d_bio_of_const(DSA,i2d_DSAparams,bp,x) + +DSA *DSAparams_dup(DSA *x); +DSA_SIG *DSA_SIG_new(void); +void DSA_SIG_free(DSA_SIG *a); +int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp); +DSA_SIG *d2i_DSA_SIG(DSA_SIG **v, const unsigned char **pp, long length); +void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); +int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); +int DSA_do_verify(const unsigned char *dgst, int dgst_len, + DSA_SIG *sig, DSA *dsa); + +const DSA_METHOD *DSA_OpenSSL(void); + +void DSA_set_default_method(const DSA_METHOD *); +const DSA_METHOD *DSA_get_default_method(void); +int DSA_set_method(DSA *dsa, const DSA_METHOD *); +const DSA_METHOD *DSA_get_method(DSA *d); + +DSA *DSA_new(void); +DSA *DSA_new_method(ENGINE *engine); +void DSA_free(DSA *r); +/* "up" the DSA object's reference count */ +int DSA_up_ref(DSA *r); +int DSA_size(const DSA *); +int DSA_bits(const DSA *d); +int DSA_security_bits(const DSA *d); + /* next 4 return -1 on error */ +DEPRECATEDIN_1_2_0(int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)) +int DSA_sign(int type, const unsigned char *dgst, int dlen, + unsigned char *sig, unsigned int *siglen, DSA *dsa); +int DSA_verify(int type, const unsigned char *dgst, int dgst_len, + const unsigned char *sigbuf, int siglen, DSA *dsa); +#define DSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DSA, l, p, newf, dupf, freef) +int DSA_set_ex_data(DSA *d, int idx, void *arg); +void *DSA_get_ex_data(DSA *d, int idx); + +DSA *d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length); +DSA *d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length); +DSA *d2i_DSAparams(DSA **a, const unsigned char **pp, long length); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(DSA *DSA_generate_parameters(int bits, + unsigned char *seed, + int seed_len, + int *counter_ret, + unsigned long *h_ret, void + (*callback) (int, int, + void *), + void *cb_arg)) + +/* New version */ +int DSA_generate_parameters_ex(DSA *dsa, int bits, + const unsigned char *seed, int seed_len, + int *counter_ret, unsigned long *h_ret, + BN_GENCB *cb); + +int DSA_generate_key(DSA *a); +int i2d_DSAPublicKey(const DSA *a, unsigned char **pp); +int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp); +int i2d_DSAparams(const DSA *a, unsigned char **pp); + +int DSAparams_print(BIO *bp, const DSA *x); +int DSA_print(BIO *bp, const DSA *x, int off); +# ifndef OPENSSL_NO_STDIO +int DSAparams_print_fp(FILE *fp, const DSA *x); +int DSA_print_fp(FILE *bp, const DSA *x, int off); +# endif + +# define DSS_prime_checks 64 +/* + * Primality test according to FIPS PUB 186-4, Appendix C.3. Since we only + * have one value here we set the number of checks to 64 which is the 128 bit + * security level that is the highest level and valid for creating a 3072 bit + * DSA key. + */ +# define DSA_is_prime(n, callback, cb_arg) \ + BN_is_prime(n, DSS_prime_checks, callback, NULL, cb_arg) + +# ifndef OPENSSL_NO_DH +/* + * Convert DSA structure (key or just parameters) into DH structure (be + * careful to avoid small subgroup attacks when using this!) + */ +DH *DSA_dup_DH(const DSA *r); +# endif + +# define EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx, nbits) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_BITS, nbits, NULL) +# define EVP_PKEY_CTX_set_dsa_paramgen_q_bits(ctx, qbits) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS, qbits, NULL) +# define EVP_PKEY_CTX_set_dsa_paramgen_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTRL_DSA_PARAMGEN_BITS (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_MD (EVP_PKEY_ALG_CTRL + 3) + +void DSA_get0_pqg(const DSA *d, + const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); +int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g); +void DSA_get0_key(const DSA *d, + const BIGNUM **pub_key, const BIGNUM **priv_key); +int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key); +const BIGNUM *DSA_get0_p(const DSA *d); +const BIGNUM *DSA_get0_q(const DSA *d); +const BIGNUM *DSA_get0_g(const DSA *d); +const BIGNUM *DSA_get0_pub_key(const DSA *d); +const BIGNUM *DSA_get0_priv_key(const DSA *d); +void DSA_clear_flags(DSA *d, int flags); +int DSA_test_flags(const DSA *d, int flags); +void DSA_set_flags(DSA *d, int flags); +ENGINE *DSA_get0_engine(DSA *d); + +DSA_METHOD *DSA_meth_new(const char *name, int flags); +void DSA_meth_free(DSA_METHOD *dsam); +DSA_METHOD *DSA_meth_dup(const DSA_METHOD *dsam); +const char *DSA_meth_get0_name(const DSA_METHOD *dsam); +int DSA_meth_set1_name(DSA_METHOD *dsam, const char *name); +int DSA_meth_get_flags(const DSA_METHOD *dsam); +int DSA_meth_set_flags(DSA_METHOD *dsam, int flags); +void *DSA_meth_get0_app_data(const DSA_METHOD *dsam); +int DSA_meth_set0_app_data(DSA_METHOD *dsam, void *app_data); +DSA_SIG *(*DSA_meth_get_sign(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA *); +int DSA_meth_set_sign(DSA_METHOD *dsam, + DSA_SIG *(*sign) (const unsigned char *, int, DSA *)); +int (*DSA_meth_get_sign_setup(const DSA_METHOD *dsam)) + (DSA *, BN_CTX *, BIGNUM **, BIGNUM **); +int DSA_meth_set_sign_setup(DSA_METHOD *dsam, + int (*sign_setup) (DSA *, BN_CTX *, BIGNUM **, BIGNUM **)); +int (*DSA_meth_get_verify(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA_SIG *, DSA *); +int DSA_meth_set_verify(DSA_METHOD *dsam, + int (*verify) (const unsigned char *, int, DSA_SIG *, DSA *)); +int (*DSA_meth_get_mod_exp(const DSA_METHOD *dsam)) + (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *); +int DSA_meth_set_mod_exp(DSA_METHOD *dsam, + int (*mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *, + BN_MONT_CTX *)); +int (*DSA_meth_get_bn_mod_exp(const DSA_METHOD *dsam)) + (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + BN_CTX *, BN_MONT_CTX *); +int DSA_meth_set_bn_mod_exp(DSA_METHOD *dsam, + int (*bn_mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, BN_CTX *, BN_MONT_CTX *)); +int (*DSA_meth_get_init(const DSA_METHOD *dsam))(DSA *); +int DSA_meth_set_init(DSA_METHOD *dsam, int (*init)(DSA *)); +int (*DSA_meth_get_finish(const DSA_METHOD *dsam)) (DSA *); +int DSA_meth_set_finish(DSA_METHOD *dsam, int (*finish) (DSA *)); +int (*DSA_meth_get_paramgen(const DSA_METHOD *dsam)) + (DSA *, int, const unsigned char *, int, int *, unsigned long *, + BN_GENCB *); +int DSA_meth_set_paramgen(DSA_METHOD *dsam, + int (*paramgen) (DSA *, int, const unsigned char *, int, int *, + unsigned long *, BN_GENCB *)); +int (*DSA_meth_get_keygen(const DSA_METHOD *dsam)) (DSA *); +int DSA_meth_set_keygen(DSA_METHOD *dsam, int (*keygen) (DSA *)); + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin32/include/openssl/dsaerr.h b/openSSL/lin32/include/openssl/dsaerr.h new file mode 100644 index 0000000..495a1ac --- /dev/null +++ b/openSSL/lin32/include/openssl/dsaerr.h @@ -0,0 +1,72 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DSAERR_H +# define HEADER_DSAERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_DSA + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_DSA_strings(void); + +/* + * DSA function codes. + */ +# define DSA_F_DSAPARAMS_PRINT 100 +# define DSA_F_DSAPARAMS_PRINT_FP 101 +# define DSA_F_DSA_BUILTIN_PARAMGEN 125 +# define DSA_F_DSA_BUILTIN_PARAMGEN2 126 +# define DSA_F_DSA_DO_SIGN 112 +# define DSA_F_DSA_DO_VERIFY 113 +# define DSA_F_DSA_METH_DUP 127 +# define DSA_F_DSA_METH_NEW 128 +# define DSA_F_DSA_METH_SET1_NAME 129 +# define DSA_F_DSA_NEW_METHOD 103 +# define DSA_F_DSA_PARAM_DECODE 119 +# define DSA_F_DSA_PRINT_FP 105 +# define DSA_F_DSA_PRIV_DECODE 115 +# define DSA_F_DSA_PRIV_ENCODE 116 +# define DSA_F_DSA_PUB_DECODE 117 +# define DSA_F_DSA_PUB_ENCODE 118 +# define DSA_F_DSA_SIGN 106 +# define DSA_F_DSA_SIGN_SETUP 107 +# define DSA_F_DSA_SIG_NEW 102 +# define DSA_F_OLD_DSA_PRIV_DECODE 122 +# define DSA_F_PKEY_DSA_CTRL 120 +# define DSA_F_PKEY_DSA_CTRL_STR 104 +# define DSA_F_PKEY_DSA_KEYGEN 121 + +/* + * DSA reason codes. + */ +# define DSA_R_BAD_Q_VALUE 102 +# define DSA_R_BN_DECODE_ERROR 108 +# define DSA_R_BN_ERROR 109 +# define DSA_R_DECODE_ERROR 104 +# define DSA_R_INVALID_DIGEST_TYPE 106 +# define DSA_R_INVALID_PARAMETERS 112 +# define DSA_R_MISSING_PARAMETERS 101 +# define DSA_R_MISSING_PRIVATE_KEY 111 +# define DSA_R_MODULUS_TOO_LARGE 103 +# define DSA_R_NO_PARAMETERS_SET 107 +# define DSA_R_PARAMETER_ENCODING_ERROR 105 +# define DSA_R_Q_NOT_PRIME 113 +# define DSA_R_SEED_LEN_SMALL 110 + +# endif +#endif diff --git a/openSSL/lin32/include/openssl/dtls1.h b/openSSL/lin32/include/openssl/dtls1.h new file mode 100644 index 0000000..d55ca9c --- /dev/null +++ b/openSSL/lin32/include/openssl/dtls1.h @@ -0,0 +1,55 @@ +/* + * Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DTLS1_H +# define HEADER_DTLS1_H + +#ifdef __cplusplus +extern "C" { +#endif + +# define DTLS1_VERSION 0xFEFF +# define DTLS1_2_VERSION 0xFEFD +# define DTLS_MIN_VERSION DTLS1_VERSION +# define DTLS_MAX_VERSION DTLS1_2_VERSION +# define DTLS1_VERSION_MAJOR 0xFE + +# define DTLS1_BAD_VER 0x0100 + +/* Special value for method supporting multiple versions */ +# define DTLS_ANY_VERSION 0x1FFFF + +/* lengths of messages */ +/* + * Actually the max cookie length in DTLS is 255. But we can't change this now + * due to compatibility concerns. + */ +# define DTLS1_COOKIE_LENGTH 256 + +# define DTLS1_RT_HEADER_LENGTH 13 + +# define DTLS1_HM_HEADER_LENGTH 12 + +# define DTLS1_HM_BAD_FRAGMENT -2 +# define DTLS1_HM_FRAGMENT_RETRY -3 + +# define DTLS1_CCS_HEADER_LENGTH 1 + +# define DTLS1_AL_HEADER_LENGTH 2 + +/* Timeout multipliers */ +# define DTLS1_TMO_READ_COUNT 2 +# define DTLS1_TMO_WRITE_COUNT 2 + +# define DTLS1_TMO_ALERT_COUNT 12 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin32/include/openssl/e_os2.h b/openSSL/lin32/include/openssl/e_os2.h new file mode 100644 index 0000000..5c88e51 --- /dev/null +++ b/openSSL/lin32/include/openssl/e_os2.h @@ -0,0 +1,301 @@ +/* + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_E_OS2_H +# define HEADER_E_OS2_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * Detect operating systems. This probably needs completing. + * The result is that at least one OPENSSL_SYS_os macro should be defined. + * However, if none is defined, Unix is assumed. + **/ + +# define OPENSSL_SYS_UNIX + +/* --------------------- Microsoft operating systems ---------------------- */ + +/* + * Note that MSDOS actually denotes 32-bit environments running on top of + * MS-DOS, such as DJGPP one. + */ +# if defined(OPENSSL_SYS_MSDOS) +# undef OPENSSL_SYS_UNIX +# endif + +/* + * For 32 bit environment, there seems to be the CygWin environment and then + * all the others that try to do the same thing Microsoft does... + */ +/* + * UEFI lives here because it might be built with a Microsoft toolchain and + * we need to avoid the false positive match on Windows. + */ +# if defined(OPENSSL_SYS_UEFI) +# undef OPENSSL_SYS_UNIX +# elif defined(OPENSSL_SYS_UWIN) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32_UWIN +# else +# if defined(__CYGWIN__) || defined(OPENSSL_SYS_CYGWIN) +# define OPENSSL_SYS_WIN32_CYGWIN +# else +# if defined(_WIN32) || defined(OPENSSL_SYS_WIN32) +# undef OPENSSL_SYS_UNIX +# if !defined(OPENSSL_SYS_WIN32) +# define OPENSSL_SYS_WIN32 +# endif +# endif +# if defined(_WIN64) || defined(OPENSSL_SYS_WIN64) +# undef OPENSSL_SYS_UNIX +# if !defined(OPENSSL_SYS_WIN64) +# define OPENSSL_SYS_WIN64 +# endif +# endif +# if defined(OPENSSL_SYS_WINNT) +# undef OPENSSL_SYS_UNIX +# endif +# if defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# endif +# endif +# endif + +/* Anything that tries to look like Microsoft is "Windows" */ +# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN64) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_SYS_MSDOS +# define OPENSSL_SYS_MSDOS +# endif +# endif + +/* + * DLL settings. This part is a bit tough, because it's up to the + * application implementor how he or she will link the application, so it + * requires some macro to be used. + */ +# ifdef OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_OPT_WINDLL +# if defined(_WINDLL) /* This is used when building OpenSSL to + * indicate that DLL linkage should be used */ +# define OPENSSL_OPT_WINDLL +# endif +# endif +# endif + +/* ------------------------------- OpenVMS -------------------------------- */ +# if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYS_VMS) +# if !defined(OPENSSL_SYS_VMS) +# undef OPENSSL_SYS_UNIX +# endif +# define OPENSSL_SYS_VMS +# if defined(__DECC) +# define OPENSSL_SYS_VMS_DECC +# elif defined(__DECCXX) +# define OPENSSL_SYS_VMS_DECC +# define OPENSSL_SYS_VMS_DECCXX +# else +# define OPENSSL_SYS_VMS_NODECC +# endif +# endif + +/* -------------------------------- Unix ---------------------------------- */ +# ifdef OPENSSL_SYS_UNIX +# if defined(linux) || defined(__linux__) && !defined(OPENSSL_SYS_LINUX) +# define OPENSSL_SYS_LINUX +# endif +# if defined(_AIX) && !defined(OPENSSL_SYS_AIX) +# define OPENSSL_SYS_AIX +# endif +# endif + +/* -------------------------------- VOS ----------------------------------- */ +# if defined(__VOS__) && !defined(OPENSSL_SYS_VOS) +# define OPENSSL_SYS_VOS +# ifdef __HPPA__ +# define OPENSSL_SYS_VOS_HPPA +# endif +# ifdef __IA32__ +# define OPENSSL_SYS_VOS_IA32 +# endif +# endif + +/** + * That's it for OS-specific stuff + *****************************************************************************/ + +/* Specials for I/O an exit */ +# ifdef OPENSSL_SYS_MSDOS +# define OPENSSL_UNISTD_IO +# define OPENSSL_DECLARE_EXIT extern void exit(int); +# else +# define OPENSSL_UNISTD_IO OPENSSL_UNISTD +# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */ +# endif + +/*- + * OPENSSL_EXTERN is normally used to declare a symbol with possible extra + * attributes to handle its presence in a shared library. + * OPENSSL_EXPORT is used to define a symbol with extra possible attributes + * to make it visible in a shared library. + * Care needs to be taken when a header file is used both to declare and + * define symbols. Basically, for any library that exports some global + * variables, the following code must be present in the header file that + * declares them, before OPENSSL_EXTERN is used: + * + * #ifdef SOME_BUILD_FLAG_MACRO + * # undef OPENSSL_EXTERN + * # define OPENSSL_EXTERN OPENSSL_EXPORT + * #endif + * + * The default is to have OPENSSL_EXPORT and OPENSSL_EXTERN + * have some generally sensible values. + */ + +# if defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) +# define OPENSSL_EXPORT extern __declspec(dllexport) +# define OPENSSL_EXTERN extern __declspec(dllimport) +# else +# define OPENSSL_EXPORT extern +# define OPENSSL_EXTERN extern +# endif + +/*- + * Macros to allow global variables to be reached through function calls when + * required (if a shared library version requires it, for example. + * The way it's done allows definitions like this: + * + * // in foobar.c + * OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0) + * // in foobar.h + * OPENSSL_DECLARE_GLOBAL(int,foobar); + * #define foobar OPENSSL_GLOBAL_REF(foobar) + */ +# ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) \ + type *_shadow_##name(void) \ + { static type _hide_##name=value; return &_hide_##name; } +# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void) +# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name())) +# else +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) type _shadow_##name=value; +# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name +# define OPENSSL_GLOBAL_REF(name) _shadow_##name +# endif + +# ifdef _WIN32 +# ifdef _WIN64 +# define ossl_ssize_t __int64 +# define OSSL_SSIZE_MAX _I64_MAX +# else +# define ossl_ssize_t int +# define OSSL_SSIZE_MAX INT_MAX +# endif +# endif + +# if defined(OPENSSL_SYS_UEFI) && !defined(ossl_ssize_t) +# define ossl_ssize_t INTN +# define OSSL_SSIZE_MAX MAX_INTN +# endif + +# ifndef ossl_ssize_t +# define ossl_ssize_t ssize_t +# if defined(SSIZE_MAX) +# define OSSL_SSIZE_MAX SSIZE_MAX +# elif defined(_POSIX_SSIZE_MAX) +# define OSSL_SSIZE_MAX _POSIX_SSIZE_MAX +# else +# define OSSL_SSIZE_MAX ((ssize_t)(SIZE_MAX>>1)) +# endif +# endif + +# ifdef DEBUG_UNUSED +# define __owur __attribute__((__warn_unused_result__)) +# else +# define __owur +# endif + +/* Standard integer types */ +# if defined(OPENSSL_SYS_UEFI) +typedef INT8 int8_t; +typedef UINT8 uint8_t; +typedef INT16 int16_t; +typedef UINT16 uint16_t; +typedef INT32 int32_t; +typedef UINT32 uint32_t; +typedef INT64 int64_t; +typedef UINT64 uint64_t; +# elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + defined(__osf__) || defined(__sgi) || defined(__hpux) || \ + defined(OPENSSL_SYS_VMS) || defined (__OpenBSD__) +# include +# elif defined(_MSC_VER) && _MSC_VER<1600 +/* + * minimally required typdefs for systems not supporting inttypes.h or + * stdint.h: currently just older VC++ + */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; +typedef unsigned short uint16_t; +typedef int int32_t; +typedef unsigned int uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +# else +# include +# endif + +/* ossl_inline: portable inline definition usable in public headers */ +# if !defined(inline) && !defined(__cplusplus) +# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L + /* just use inline */ +# define ossl_inline inline +# elif defined(__GNUC__) && __GNUC__>=2 +# define ossl_inline __inline__ +# elif defined(_MSC_VER) + /* + * Visual Studio: inline is available in C++ only, however + * __inline is available for C, see + * http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx + */ +# define ossl_inline __inline +# else +# define ossl_inline +# endif +# else +# define ossl_inline inline +# endif + +# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && \ + !defined(__cplusplus) +# define ossl_noreturn _Noreturn +# elif defined(__GNUC__) && __GNUC__ >= 2 +# define ossl_noreturn __attribute__((noreturn)) +# else +# define ossl_noreturn +# endif + +/* ossl_unused: portable unused attribute for use in public headers */ +# if defined(__GNUC__) +# define ossl_unused __attribute__((unused)) +# else +# define ossl_unused +# endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin32/include/openssl/ebcdic.h b/openSSL/lin32/include/openssl/ebcdic.h new file mode 100644 index 0000000..aa01285 --- /dev/null +++ b/openSSL/lin32/include/openssl/ebcdic.h @@ -0,0 +1,33 @@ +/* + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EBCDIC_H +# define HEADER_EBCDIC_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Avoid name clashes with other applications */ +# define os_toascii _openssl_os_toascii +# define os_toebcdic _openssl_os_toebcdic +# define ebcdic2ascii _openssl_ebcdic2ascii +# define ascii2ebcdic _openssl_ascii2ebcdic + +extern const unsigned char os_toascii[256]; +extern const unsigned char os_toebcdic[256]; +void *ebcdic2ascii(void *dest, const void *srce, size_t count); +void *ascii2ebcdic(void *dest, const void *srce, size_t count); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin32/include/openssl/ec.h b/openSSL/lin32/include/openssl/ec.h new file mode 100644 index 0000000..24baf53 --- /dev/null +++ b/openSSL/lin32/include/openssl/ec.h @@ -0,0 +1,1484 @@ +/* + * Copyright 2002-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EC_H +# define HEADER_EC_H + +# include + +# ifndef OPENSSL_NO_EC +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_ECC_MAX_FIELD_BITS +# define OPENSSL_ECC_MAX_FIELD_BITS 661 +# endif + +/** Enum for the point conversion form as defined in X9.62 (ECDSA) + * for the encoding of a elliptic curve point (x,y) */ +typedef enum { + /** the point is encoded as z||x, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_COMPRESSED = 2, + /** the point is encoded as z||x||y, where z is the octet 0x04 */ + POINT_CONVERSION_UNCOMPRESSED = 4, + /** the point is encoded as z||x||y, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_HYBRID = 6 +} point_conversion_form_t; + +typedef struct ec_method_st EC_METHOD; +typedef struct ec_group_st EC_GROUP; +typedef struct ec_point_st EC_POINT; +typedef struct ecpk_parameters_st ECPKPARAMETERS; +typedef struct ec_parameters_st ECPARAMETERS; + +/********************************************************************/ +/* EC_METHODs for curves over GF(p) */ +/********************************************************************/ + +/** Returns the basic GFp ec methods which provides the basis for the + * optimized methods. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_simple_method(void); + +/** Returns GFp methods using montgomery multiplication. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_mont_method(void); + +/** Returns GFp methods using optimized methods for NIST recommended curves + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nist_method(void); + +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +/** Returns 64-bit optimized methods for nistp224 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp224_method(void); + +/** Returns 64-bit optimized methods for nistp256 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp256_method(void); + +/** Returns 64-bit optimized methods for nistp521 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp521_method(void); +# endif + +# ifndef OPENSSL_NO_EC2M +/********************************************************************/ +/* EC_METHOD for curves over GF(2^m) */ +/********************************************************************/ + +/** Returns the basic GF2m ec method + * \return EC_METHOD object + */ +const EC_METHOD *EC_GF2m_simple_method(void); + +# endif + +/********************************************************************/ +/* EC_GROUP functions */ +/********************************************************************/ + +/** Creates a new EC_GROUP object + * \param meth EC_METHOD to use + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); + +/** Frees a EC_GROUP object + * \param group EC_GROUP object to be freed. + */ +void EC_GROUP_free(EC_GROUP *group); + +/** Clears and frees a EC_GROUP object + * \param group EC_GROUP object to be cleared and freed. + */ +void EC_GROUP_clear_free(EC_GROUP *group); + +/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. + * \param dst destination EC_GROUP object + * \param src source EC_GROUP object + * \return 1 on success and 0 if an error occurred. + */ +int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); + +/** Creates a new EC_GROUP object and copies the copies the content + * form src to the newly created EC_KEY object + * \param src source EC_GROUP object + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); + +/** Returns the EC_METHOD of the EC_GROUP object. + * \param group EC_GROUP object + * \return EC_METHOD used in this EC_GROUP object. + */ +const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); + +/** Returns the field type of the EC_METHOD. + * \param meth EC_METHOD object + * \return NID of the underlying field type OID. + */ +int EC_METHOD_get_field_type(const EC_METHOD *meth); + +/** Sets the generator and its order/cofactor of a EC_GROUP object. + * \param group EC_GROUP object + * \param generator EC_POINT object with the generator. + * \param order the order of the group generated by the generator. + * \param cofactor the index of the sub-group generated by the generator + * in the group of all points on the elliptic curve. + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, + const BIGNUM *order, const BIGNUM *cofactor); + +/** Returns the generator of a EC_GROUP object. + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). + */ +const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); + +/** Returns the montgomery data for order(Generator) + * \param group EC_GROUP object + * \return the currently used montgomery data (possibly NULL). +*/ +BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); + +/** Gets the order of a EC_GROUP + * \param group EC_GROUP object + * \param order BIGNUM to which the order is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); + +/** Gets the order of an EC_GROUP + * \param group EC_GROUP object + * \return the group order + */ +const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group); + +/** Gets the number of bits of the order of an EC_GROUP + * \param group EC_GROUP object + * \return number of bits of group order. + */ +int EC_GROUP_order_bits(const EC_GROUP *group); + +/** Gets the cofactor of a EC_GROUP + * \param group EC_GROUP object + * \param cofactor BIGNUM to which the cofactor is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, + BN_CTX *ctx); + +/** Gets the cofactor of an EC_GROUP + * \param group EC_GROUP object + * \return the group cofactor + */ +const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group); + +/** Sets the name of a EC_GROUP object + * \param group EC_GROUP object + * \param nid NID of the curve name OID + */ +void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); + +/** Returns the curve name of a EC_GROUP object + * \param group EC_GROUP object + * \return NID of the curve name OID or 0 if not set. + */ +int EC_GROUP_get_curve_name(const EC_GROUP *group); + +void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); +int EC_GROUP_get_asn1_flag(const EC_GROUP *group); + +void EC_GROUP_set_point_conversion_form(EC_GROUP *group, + point_conversion_form_t form); +point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); + +unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); +size_t EC_GROUP_get_seed_len(const EC_GROUP *); +size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); + +/** Sets the parameters of a ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameters of the ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +/** Sets the parameters of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, + const BIGNUM *a, const BIGNUM *b, + BN_CTX *ctx)) + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx)) + +# ifndef OPENSSL_NO_EC2M +/** Sets the parameter of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, + const BIGNUM *a, const BIGNUM *b, + BN_CTX *ctx)) + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx)) +# endif +/** Returns the number of bits needed to represent a field element + * \param group EC_GROUP object + * \return number of bits needed to represent a field element + */ +int EC_GROUP_get_degree(const EC_GROUP *group); + +/** Checks whether the parameter in the EC_GROUP define a valid ec group + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if group is a valid ec group and 0 otherwise + */ +int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); + +/** Checks whether the discriminant of the elliptic curve is zero or not + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if the discriminant is not zero and 0 otherwise + */ +int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); + +/** Compares two EC_GROUP objects + * \param a first EC_GROUP object + * \param b second EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 0 if the groups are equal, 1 if not, or -1 on error + */ +int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); + +/* + * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after + * choosing an appropriate EC_METHOD + */ + +/** Creates a new EC_GROUP object with the specified parameters defined + * over GFp (defined by the equation y^2 = x^3 + a*x + b) + * \param p BIGNUM with the prime number + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# ifndef OPENSSL_NO_EC2M +/** Creates a new EC_GROUP object with the specified parameters defined + * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b) + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# endif + +/** Creates a EC_GROUP object with a curve specified by a NID + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name(int nid); + +/** Creates a new EC_GROUP object from an ECPARAMETERS object + * \param params pointer to the ECPARAMETERS object + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params); + +/** Creates an ECPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPARAMETERS object or NULL + * \return pointer to the new ECPARAMETERS object or NULL + * if an error occurred. + */ +ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, + ECPARAMETERS *params); + +/** Creates a new EC_GROUP object from an ECPKPARAMETERS object + * \param params pointer to an existing ECPKPARAMETERS object, or NULL + * \return newly created EC_GROUP object with specified curve, or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params); + +/** Creates an ECPKPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPKPARAMETERS object or NULL + * \return pointer to the new ECPKPARAMETERS object or NULL + * if an error occurred. + */ +ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group, + ECPKPARAMETERS *params); + +/********************************************************************/ +/* handling of internal curves */ +/********************************************************************/ + +typedef struct { + int nid; + const char *comment; +} EC_builtin_curve; + +/* + * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all + * available curves or zero if a error occurred. In case r is not zero, + * nitems EC_builtin_curve structures are filled with the data of the first + * nitems internal groups + */ +size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); + +const char *EC_curve_nid2nist(int nid); +int EC_curve_nist2nid(const char *name); + +/********************************************************************/ +/* EC_POINT functions */ +/********************************************************************/ + +/** Creates a new EC_POINT object for the specified EC_GROUP + * \param group EC_GROUP the underlying EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_new(const EC_GROUP *group); + +/** Frees a EC_POINT object + * \param point EC_POINT object to be freed + */ +void EC_POINT_free(EC_POINT *point); + +/** Clears and frees a EC_POINT object + * \param point EC_POINT object to be cleared and freed + */ +void EC_POINT_clear_free(EC_POINT *point); + +/** Copies EC_POINT object + * \param dst destination EC_POINT object + * \param src source EC_POINT object + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); + +/** Creates a new EC_POINT object and copies the content of the supplied + * EC_POINT + * \param src source EC_POINT object + * \param group underlying the EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); + +/** Returns the EC_METHOD used in EC_POINT object + * \param point EC_POINT object + * \return the EC_METHOD used + */ +const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); + +/** Sets a point to infinity (neutral element) + * \param group underlying EC_GROUP object + * \param point EC_POINT to set to infinity + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); + +/** Sets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param z BIGNUM with the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, const BIGNUM *x, + const BIGNUM *y, const BIGNUM *z, + BN_CTX *ctx); + +/** Gets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param z BIGNUM for the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BIGNUM *z, + BN_CTX *ctx); + +/** Sets the affine coordinates of an EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + const BIGNUM *y, + BN_CTX *ctx)) + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, + BIGNUM *x, + BIGNUM *y, + BN_CTX *ctx)) + +/** Sets the x9.62 compressed coordinates of a EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, + BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + int y_bit, + BN_CTX *ctx)) +# ifndef OPENSSL_NO_EC2M +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + const BIGNUM *y, + BN_CTX *ctx)) + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, + const EC_POINT *p, + BIGNUM *x, + BIGNUM *y, + BN_CTX *ctx)) + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + int y_bit, + BN_CTX *ctx)) +# endif +/** Encodes a EC_POINT object to a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param form point conversion form + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, + point_conversion_form_t form, + unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Decodes a EC_POINT from a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, + const unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Encodes an EC_POINT object to an allocated octet string + * \param group underlying EC_GROUP object + * \param point EC_POINT object + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2buf(const EC_GROUP *group, const EC_POINT *point, + point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/* other interfaces to point2oct/oct2point: */ +BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BIGNUM *, BN_CTX *); +EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, + EC_POINT *, BN_CTX *); +char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BN_CTX *); +EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, + EC_POINT *, BN_CTX *); + +/********************************************************************/ +/* functions for doing EC_POINT arithmetic */ +/********************************************************************/ + +/** Computes the sum of two EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = a + b) + * \param a EC_POINT object with the first summand + * \param b EC_POINT object with the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + const EC_POINT *b, BN_CTX *ctx); + +/** Computes the double of a EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = 2 * a) + * \param a EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + BN_CTX *ctx); + +/** Computes the inverse of a EC_POINT + * \param group underlying EC_GROUP object + * \param a EC_POINT object to be inverted (it's used for the result as well) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); + +/** Checks whether the point is the neutral element of the group + * \param group the underlying EC_GROUP object + * \param p EC_POINT object + * \return 1 if the point is the neutral element and 0 otherwise + */ +int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); + +/** Checks whether the point is on the curve + * \param group underlying EC_GROUP object + * \param point EC_POINT object to check + * \param ctx BN_CTX object (optional) + * \return 1 if the point is on the curve, 0 if not, or -1 on error + */ +int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, + BN_CTX *ctx); + +/** Compares two EC_POINTs + * \param group underlying EC_GROUP object + * \param a first EC_POINT object + * \param b second EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 if the points are not equal, 0 if they are, or -1 on error + */ +int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, + BN_CTX *ctx); + +int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); +int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, + EC_POINT *points[], BN_CTX *ctx); + +/** Computes r = generator * n + sum_{i=0}^{num-1} p[i] * m[i] + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param num number further summands + * \param p array of size num of EC_POINT objects + * \param m array of size num of BIGNUM objects + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + size_t num, const EC_POINT *p[], const BIGNUM *m[], + BN_CTX *ctx); + +/** Computes r = generator * n + q * m + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param q EC_POINT object with the first factor of the second summand + * \param m BIGNUM with the second factor of the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); + +/** Stores multiples of generator for faster point multiplication + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); + +/** Reports whether a precomputation has been done + * \param group EC_GROUP object + * \return 1 if a pre-computation has been done and 0 otherwise + */ +int EC_GROUP_have_precompute_mult(const EC_GROUP *group); + +/********************************************************************/ +/* ASN1 stuff */ +/********************************************************************/ + +DECLARE_ASN1_ITEM(ECPKPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPKPARAMETERS) +DECLARE_ASN1_ITEM(ECPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPARAMETERS) + +/* + * EC_GROUP_get_basis_type() returns the NID of the basis type used to + * represent the field elements + */ +int EC_GROUP_get_basis_type(const EC_GROUP *); +# ifndef OPENSSL_NO_EC2M +int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); +int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, + unsigned int *k2, unsigned int *k3); +# endif + +# define OPENSSL_EC_EXPLICIT_CURVE 0x000 +# define OPENSSL_EC_NAMED_CURVE 0x001 + +EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); +int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); + +# define d2i_ECPKParameters_bio(bp,x) \ + ASN1_d2i_bio_of(EC_GROUP, NULL, d2i_ECPKParameters, bp, x) +# define i2d_ECPKParameters_bio(bp,x) \ + ASN1_i2d_bio_of_const(EC_GROUP, i2d_ECPKParameters, bp, x) +# define d2i_ECPKParameters_fp(fp,x) \ + (EC_GROUP *)ASN1_d2i_fp(NULL, (d2i_of_void *)d2i_ECPKParameters, (fp), \ + (void **)(x)) +# define i2d_ECPKParameters_fp(fp,x) \ + ASN1_i2d_fp((i2d_of_void *)i2d_ECPKParameters, (fp), (void *)(x)) + +int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); +# ifndef OPENSSL_NO_STDIO +int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); +# endif + +/********************************************************************/ +/* EC_KEY functions */ +/********************************************************************/ + +/* some values for the encoding_flag */ +# define EC_PKEY_NO_PARAMETERS 0x001 +# define EC_PKEY_NO_PUBKEY 0x002 + +/* some values for the flags field */ +# define EC_FLAG_NON_FIPS_ALLOW 0x1 +# define EC_FLAG_FIPS_CHECKED 0x2 +# define EC_FLAG_COFACTOR_ECDH 0x1000 + +/** Creates a new EC_KEY object. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new(void); + +int EC_KEY_get_flags(const EC_KEY *key); + +void EC_KEY_set_flags(EC_KEY *key, int flags); + +void EC_KEY_clear_flags(EC_KEY *key, int flags); + +int EC_KEY_decoded_from_explicit_params(const EC_KEY *key); + +/** Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new_by_curve_name(int nid); + +/** Frees a EC_KEY object. + * \param key EC_KEY object to be freed. + */ +void EC_KEY_free(EC_KEY *key); + +/** Copies a EC_KEY object. + * \param dst destination EC_KEY object + * \param src src EC_KEY object + * \return dst or NULL if an error occurred. + */ +EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); + +/** Creates a new EC_KEY object and copies the content from src to it. + * \param src the source EC_KEY object + * \return newly created EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_dup(const EC_KEY *src); + +/** Increases the internal reference count of a EC_KEY object. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_up_ref(EC_KEY *key); + +/** Returns the ENGINE object of a EC_KEY object + * \param eckey EC_KEY object + * \return the ENGINE object (possibly NULL). + */ +ENGINE *EC_KEY_get0_engine(const EC_KEY *eckey); + +/** Returns the EC_GROUP object of a EC_KEY object + * \param key EC_KEY object + * \return the EC_GROUP object (possibly NULL). + */ +const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); + +/** Sets the EC_GROUP of a EC_KEY object. + * \param key EC_KEY object + * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY + * object will use an own copy of the EC_GROUP). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); + +/** Returns the private key of a EC_KEY object. + * \param key EC_KEY object + * \return a BIGNUM with the private key (possibly NULL). + */ +const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); + +/** Sets the private key of a EC_KEY object. + * \param key EC_KEY object + * \param prv BIGNUM with the private key (note: the EC_KEY object + * will use an own copy of the BIGNUM). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); + +/** Returns the public key of a EC_KEY object. + * \param key the EC_KEY object + * \return a EC_POINT object with the public key (possibly NULL) + */ +const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); + +/** Sets the public key of a EC_KEY object. + * \param key EC_KEY object + * \param pub EC_POINT object with the public key (note: the EC_KEY object + * will use an own copy of the EC_POINT object). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + +unsigned EC_KEY_get_enc_flags(const EC_KEY *key); +void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); +point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); + +#define EC_KEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EC_KEY, l, p, newf, dupf, freef) +int EC_KEY_set_ex_data(EC_KEY *key, int idx, void *arg); +void *EC_KEY_get_ex_data(const EC_KEY *key, int idx); + +/* wrapper functions for the underlying EC_GROUP object */ +void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); + +/** Creates a table of pre-computed multiples of the generator to + * accelerate further EC_KEY operations. + * \param key EC_KEY object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); + +/** Creates a new ec private (and optional a new public) key. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_generate_key(EC_KEY *key); + +/** Verifies that a private and/or public key is valid. + * \param key the EC_KEY object + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_check_key(const EC_KEY *key); + +/** Indicates if an EC_KEY can be used for signing. + * \param eckey the EC_KEY object + * \return 1 if can can sign and 0 otherwise. + */ +int EC_KEY_can_sign(const EC_KEY *eckey); + +/** Sets a public key from affine coordinates performing + * necessary NIST PKV tests. + * \param key the EC_KEY object + * \param x public key x coordinate + * \param y public key y coordinate + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, + BIGNUM *y); + +/** Encodes an EC_KEY public key to an allocated octet string + * \param key key to encode + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_KEY_key2buf(const EC_KEY *key, point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/** Decodes a EC_KEY public key from a octet string + * \param key key to decode + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ + +int EC_KEY_oct2key(EC_KEY *key, const unsigned char *buf, size_t len, + BN_CTX *ctx); + +/** Decodes an EC_KEY private key from an octet string + * \param key key to decode + * \param buf memory buffer with the encoded private key + * \param len length of the encoded key + * \return 1 on success and 0 if an error occurred + */ + +int EC_KEY_oct2priv(EC_KEY *key, const unsigned char *buf, size_t len); + +/** Encodes a EC_KEY private key to an octet string + * \param key key to encode + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ + +size_t EC_KEY_priv2oct(const EC_KEY *key, unsigned char *buf, size_t len); + +/** Encodes an EC_KEY private key to an allocated octet string + * \param eckey key to encode + * \param pbuf returns pointer to allocated buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_KEY_priv2buf(const EC_KEY *eckey, unsigned char **pbuf); + +/********************************************************************/ +/* de- and encoding functions for SEC1 ECPrivateKey */ +/********************************************************************/ + +/** Decodes a private key from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded private key + * \param len length of the DER encoded private key + * \return the decoded private key or NULL if an error occurred. + */ +EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a private key object and stores the result in a buffer. + * \param key the EC_KEY object to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC parameters */ +/********************************************************************/ + +/** Decodes ec parameter from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded ec parameters + * \param len length of the DER encoded ec parameters + * \return a EC_KEY object with the decoded parameters or NULL if an error + * occurred. + */ +EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes ec parameter and stores the result in a buffer. + * \param key the EC_KEY object with ec parameters to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECParameters(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC public key */ +/* (octet string, not DER -- hence 'o2i' and 'i2o') */ +/********************************************************************/ + +/** Decodes a ec public key from a octet string. + * \param key a pointer to a EC_KEY object which should be used + * \param in memory buffer with the encoded public key + * \param len length of the encoded public key + * \return EC_KEY object with decoded public key or NULL if an error + * occurred. + */ +EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a ec public key in an octet string. + * \param key the EC_KEY object with the public key + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred + */ +int i2o_ECPublicKey(const EC_KEY *key, unsigned char **out); + +/** Prints out the ec parameters on human readable form. + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print(BIO *bp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); + +# ifndef OPENSSL_NO_STDIO +/** Prints out the ec parameters on human readable form. + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print_fp(FILE *fp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); + +# endif + +const EC_KEY_METHOD *EC_KEY_OpenSSL(void); +const EC_KEY_METHOD *EC_KEY_get_default_method(void); +void EC_KEY_set_default_method(const EC_KEY_METHOD *meth); +const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); +int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); +EC_KEY *EC_KEY_new_method(ENGINE *engine); + +/** The old name for ecdh_KDF_X9_63 + * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +int ECDH_KDF_X9_62(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + const unsigned char *sinfo, size_t sinfolen, + const EVP_MD *md); + +int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, + const EC_KEY *ecdh, + void *(*KDF) (const void *in, size_t inlen, + void *out, size_t *outlen)); + +typedef struct ECDSA_SIG_st ECDSA_SIG; + +/** Allocates and initialize a ECDSA_SIG structure + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_SIG_new(void); + +/** frees a ECDSA_SIG structure + * \param sig pointer to the ECDSA_SIG structure + */ +void ECDSA_SIG_free(ECDSA_SIG *sig); + +/** DER encode content of ECDSA_SIG object (note: this function modifies *pp + * (*pp += length of the DER encoded signature)). + * \param sig pointer to the ECDSA_SIG object + * \param pp pointer to a unsigned char pointer for the output or NULL + * \return the length of the DER encoded ECDSA_SIG object or a negative value + * on error + */ +int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp); + +/** Decodes a DER encoded ECDSA signature (note: this function changes *pp + * (*pp += len)). + * \param sig pointer to ECDSA_SIG pointer (may be NULL) + * \param pp memory buffer with the DER encoded signature + * \param len length of the buffer + * \return pointer to the decoded ECDSA_SIG structure (or NULL) + */ +ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len); + +/** Accessor for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param pr pointer to BIGNUM pointer for r (may be NULL) + * \param ps pointer to BIGNUM pointer for s (may be NULL) + */ +void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); + +/** Accessor for r field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_r(const ECDSA_SIG *sig); + +/** Accessor for s field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_s(const ECDSA_SIG *sig); + +/** Setter for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param r pointer to BIGNUM for r (may be NULL) + * \param s pointer to BIGNUM for s (may be NULL) + */ +int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +/** Computes the ECDSA signature of the given hash value using + * the supplied private key and returns the created signature. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len, + EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dgstlen, + const BIGNUM *kinv, const BIGNUM *rp, + EC_KEY *eckey); + +/** Verifies that the supplied signature is a valid ECDSA + * signature of the supplied hash value using the supplied public key. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param sig ECDSA_SIG structure + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, + const ECDSA_SIG *sig, EC_KEY *eckey); + +/** Precompute parts of the signing operation + * \param eckey EC_KEY object containing a private EC key + * \param ctx BN_CTX object (optional) + * \param kinv BIGNUM pointer for the inverse of k + * \param rp BIGNUM pointer for x coordinate of k * generator + * \return 1 on success and 0 otherwise + */ +int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, BIGNUM **rp); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig memory for the DER encoded created signature + * \param siglen pointer to the length of the returned signature + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen, + unsigned char *sig, unsigned int *siglen, EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig buffer to hold the DER encoded signature + * \param siglen pointer to the length of the returned signature + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen, + unsigned char *sig, unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey); + +/** Verifies that the given signature is valid ECDSA signature + * of the supplied hash value using the specified public key. + * \param type this parameter is ignored + * \param dgst pointer to the hash value + * \param dgstlen length of the hash value + * \param sig pointer to the DER encoded signature + * \param siglen length of the DER encoded signature + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen, + const unsigned char *sig, int siglen, EC_KEY *eckey); + +/** Returns the maximum length of the DER encoded signature + * \param eckey EC_KEY object + * \return numbers of bytes required for the DER encoded signature + */ +int ECDSA_size(const EC_KEY *eckey); + +/********************************************************************/ +/* EC_KEY_METHOD constructors, destructors, writers and accessors */ +/********************************************************************/ + +EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth); +void EC_KEY_METHOD_free(EC_KEY_METHOD *meth); +void EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth, + int (*init)(EC_KEY *key), + void (*finish)(EC_KEY *key), + int (*copy)(EC_KEY *dest, const EC_KEY *src), + int (*set_group)(EC_KEY *key, const EC_GROUP *grp), + int (*set_private)(EC_KEY *key, + const BIGNUM *priv_key), + int (*set_public)(EC_KEY *key, + const EC_POINT *pub_key)); + +void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth, + int (*keygen)(EC_KEY *key)); + +void EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth, + int (*ckey)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +void EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth, + int (*sign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (*sign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(*sign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +void EC_KEY_METHOD_set_verify(EC_KEY_METHOD *meth, + int (*verify)(int type, const unsigned + char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (*verify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); + +void EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth, + int (**pinit)(EC_KEY *key), + void (**pfinish)(EC_KEY *key), + int (**pcopy)(EC_KEY *dest, const EC_KEY *src), + int (**pset_group)(EC_KEY *key, + const EC_GROUP *grp), + int (**pset_private)(EC_KEY *key, + const BIGNUM *priv_key), + int (**pset_public)(EC_KEY *key, + const EC_POINT *pub_key)); + +void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth, + int (**pkeygen)(EC_KEY *key)); + +void EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth, + int (**pck)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +void EC_KEY_METHOD_get_sign(const EC_KEY_METHOD *meth, + int (**psign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(**psign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +void EC_KEY_METHOD_get_verify(const EC_KEY_METHOD *meth, + int (**pverify)(int type, const unsigned + char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (**pverify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); + +# define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x) + +# ifndef __cplusplus +# if defined(__SUNPRO_C) +# if __SUNPRO_C >= 0x520 +# pragma error_messages (default,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) +# endif +# endif +# endif + +# define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_ec_param_enc(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAM_ENC, flag, NULL) + +# define EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, flag, NULL) + +# define EVP_PKEY_CTX_get_ecdh_cofactor_mode(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_ecdh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_ecdh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN, 0, \ + (void *)(plen)) + +# define EVP_PKEY_CTX_set0_ecdh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_UKM, plen, (void *)(p)) + +# define EVP_PKEY_CTX_get0_ecdh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_UKM, 0, (void *)(p)) + +/* SM2 will skip the operation check so no need to pass operation here */ +# define EVP_PKEY_CTX_set1_id(ctx, id, id_len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_SET1_ID, (int)id_len, (void*)(id)) + +# define EVP_PKEY_CTX_get1_id(ctx, id) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_GET1_ID, 0, (void*)(id)) + +# define EVP_PKEY_CTX_get1_id_len(ctx, id_len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_GET1_ID_LEN, 0, (void*)(id_len)) + +# define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_SET1_ID (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET1_ID (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_GET1_ID_LEN (EVP_PKEY_ALG_CTRL + 13) +/* KDF types */ +# define EVP_PKEY_ECDH_KDF_NONE 1 +# define EVP_PKEY_ECDH_KDF_X9_63 2 +/** The old name for EVP_PKEY_ECDH_KDF_X9_63 + * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +# define EVP_PKEY_ECDH_KDF_X9_62 EVP_PKEY_ECDH_KDF_X9_63 + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin32/include/openssl/ecdh.h b/openSSL/lin32/include/openssl/ecdh.h new file mode 100644 index 0000000..681f3d5 --- /dev/null +++ b/openSSL/lin32/include/openssl/ecdh.h @@ -0,0 +1,10 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include diff --git a/openSSL/lin32/include/openssl/ecdsa.h b/openSSL/lin32/include/openssl/ecdsa.h new file mode 100644 index 0000000..681f3d5 --- /dev/null +++ b/openSSL/lin32/include/openssl/ecdsa.h @@ -0,0 +1,10 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include diff --git a/openSSL/lin32/include/openssl/ecerr.h b/openSSL/lin32/include/openssl/ecerr.h new file mode 100644 index 0000000..5173811 --- /dev/null +++ b/openSSL/lin32/include/openssl/ecerr.h @@ -0,0 +1,276 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ECERR_H +# define HEADER_ECERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_EC + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_EC_strings(void); + +/* + * EC function codes. + */ +# define EC_F_BN_TO_FELEM 224 +# define EC_F_D2I_ECPARAMETERS 144 +# define EC_F_D2I_ECPKPARAMETERS 145 +# define EC_F_D2I_ECPRIVATEKEY 146 +# define EC_F_DO_EC_KEY_PRINT 221 +# define EC_F_ECDH_CMS_DECRYPT 238 +# define EC_F_ECDH_CMS_SET_SHARED_INFO 239 +# define EC_F_ECDH_COMPUTE_KEY 246 +# define EC_F_ECDH_SIMPLE_COMPUTE_KEY 257 +# define EC_F_ECDSA_DO_SIGN_EX 251 +# define EC_F_ECDSA_DO_VERIFY 252 +# define EC_F_ECDSA_SIGN_EX 254 +# define EC_F_ECDSA_SIGN_SETUP 248 +# define EC_F_ECDSA_SIG_NEW 265 +# define EC_F_ECDSA_VERIFY 253 +# define EC_F_ECD_ITEM_VERIFY 270 +# define EC_F_ECKEY_PARAM2TYPE 223 +# define EC_F_ECKEY_PARAM_DECODE 212 +# define EC_F_ECKEY_PRIV_DECODE 213 +# define EC_F_ECKEY_PRIV_ENCODE 214 +# define EC_F_ECKEY_PUB_DECODE 215 +# define EC_F_ECKEY_PUB_ENCODE 216 +# define EC_F_ECKEY_TYPE2PARAM 220 +# define EC_F_ECPARAMETERS_PRINT 147 +# define EC_F_ECPARAMETERS_PRINT_FP 148 +# define EC_F_ECPKPARAMETERS_PRINT 149 +# define EC_F_ECPKPARAMETERS_PRINT_FP 150 +# define EC_F_ECP_NISTZ256_GET_AFFINE 240 +# define EC_F_ECP_NISTZ256_INV_MOD_ORD 275 +# define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 243 +# define EC_F_ECP_NISTZ256_POINTS_MUL 241 +# define EC_F_ECP_NISTZ256_PRE_COMP_NEW 244 +# define EC_F_ECP_NISTZ256_WINDOWED_MUL 242 +# define EC_F_ECX_KEY_OP 266 +# define EC_F_ECX_PRIV_ENCODE 267 +# define EC_F_ECX_PUB_ENCODE 268 +# define EC_F_EC_ASN1_GROUP2CURVE 153 +# define EC_F_EC_ASN1_GROUP2FIELDID 154 +# define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 +# define EC_F_EC_GF2M_SIMPLE_FIELD_INV 296 +# define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159 +# define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 +# define EC_F_EC_GF2M_SIMPLE_LADDER_POST 285 +# define EC_F_EC_GF2M_SIMPLE_LADDER_PRE 288 +# define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160 +# define EC_F_EC_GF2M_SIMPLE_POINT2OCT 161 +# define EC_F_EC_GF2M_SIMPLE_POINTS_MUL 289 +# define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 162 +# define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 163 +# define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164 +# define EC_F_EC_GFP_MONT_FIELD_DECODE 133 +# define EC_F_EC_GFP_MONT_FIELD_ENCODE 134 +# define EC_F_EC_GFP_MONT_FIELD_INV 297 +# define EC_F_EC_GFP_MONT_FIELD_MUL 131 +# define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209 +# define EC_F_EC_GFP_MONT_FIELD_SQR 132 +# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 189 +# define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 225 +# define EC_F_EC_GFP_NISTP224_POINTS_MUL 228 +# define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 226 +# define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 230 +# define EC_F_EC_GFP_NISTP256_POINTS_MUL 231 +# define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 232 +# define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 233 +# define EC_F_EC_GFP_NISTP521_POINTS_MUL 234 +# define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 235 +# define EC_F_EC_GFP_NIST_FIELD_MUL 200 +# define EC_F_EC_GFP_NIST_FIELD_SQR 201 +# define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202 +# define EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES 287 +# define EC_F_EC_GFP_SIMPLE_FIELD_INV 298 +# define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166 +# define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102 +# define EC_F_EC_GFP_SIMPLE_OCT2POINT 103 +# define EC_F_EC_GFP_SIMPLE_POINT2OCT 104 +# define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 137 +# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 167 +# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 168 +# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 169 +# define EC_F_EC_GROUP_CHECK 170 +# define EC_F_EC_GROUP_CHECK_DISCRIMINANT 171 +# define EC_F_EC_GROUP_COPY 106 +# define EC_F_EC_GROUP_GET_CURVE 291 +# define EC_F_EC_GROUP_GET_CURVE_GF2M 172 +# define EC_F_EC_GROUP_GET_CURVE_GFP 130 +# define EC_F_EC_GROUP_GET_DEGREE 173 +# define EC_F_EC_GROUP_GET_ECPARAMETERS 261 +# define EC_F_EC_GROUP_GET_ECPKPARAMETERS 262 +# define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 193 +# define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 194 +# define EC_F_EC_GROUP_NEW 108 +# define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 174 +# define EC_F_EC_GROUP_NEW_FROM_DATA 175 +# define EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS 263 +# define EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS 264 +# define EC_F_EC_GROUP_SET_CURVE 292 +# define EC_F_EC_GROUP_SET_CURVE_GF2M 176 +# define EC_F_EC_GROUP_SET_CURVE_GFP 109 +# define EC_F_EC_GROUP_SET_GENERATOR 111 +# define EC_F_EC_GROUP_SET_SEED 286 +# define EC_F_EC_KEY_CHECK_KEY 177 +# define EC_F_EC_KEY_COPY 178 +# define EC_F_EC_KEY_GENERATE_KEY 179 +# define EC_F_EC_KEY_NEW 182 +# define EC_F_EC_KEY_NEW_METHOD 245 +# define EC_F_EC_KEY_OCT2PRIV 255 +# define EC_F_EC_KEY_PRINT 180 +# define EC_F_EC_KEY_PRINT_FP 181 +# define EC_F_EC_KEY_PRIV2BUF 279 +# define EC_F_EC_KEY_PRIV2OCT 256 +# define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 229 +# define EC_F_EC_KEY_SIMPLE_CHECK_KEY 258 +# define EC_F_EC_KEY_SIMPLE_OCT2PRIV 259 +# define EC_F_EC_KEY_SIMPLE_PRIV2OCT 260 +# define EC_F_EC_PKEY_CHECK 273 +# define EC_F_EC_PKEY_PARAM_CHECK 274 +# define EC_F_EC_POINTS_MAKE_AFFINE 136 +# define EC_F_EC_POINTS_MUL 290 +# define EC_F_EC_POINT_ADD 112 +# define EC_F_EC_POINT_BN2POINT 280 +# define EC_F_EC_POINT_CMP 113 +# define EC_F_EC_POINT_COPY 114 +# define EC_F_EC_POINT_DBL 115 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES 293 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 183 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 116 +# define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 117 +# define EC_F_EC_POINT_INVERT 210 +# define EC_F_EC_POINT_IS_AT_INFINITY 118 +# define EC_F_EC_POINT_IS_ON_CURVE 119 +# define EC_F_EC_POINT_MAKE_AFFINE 120 +# define EC_F_EC_POINT_NEW 121 +# define EC_F_EC_POINT_OCT2POINT 122 +# define EC_F_EC_POINT_POINT2BUF 281 +# define EC_F_EC_POINT_POINT2OCT 123 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES 294 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 185 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 124 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES 295 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 186 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 125 +# define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 126 +# define EC_F_EC_POINT_SET_TO_INFINITY 127 +# define EC_F_EC_PRE_COMP_NEW 196 +# define EC_F_EC_SCALAR_MUL_LADDER 284 +# define EC_F_EC_WNAF_MUL 187 +# define EC_F_EC_WNAF_PRECOMPUTE_MULT 188 +# define EC_F_I2D_ECPARAMETERS 190 +# define EC_F_I2D_ECPKPARAMETERS 191 +# define EC_F_I2D_ECPRIVATEKEY 192 +# define EC_F_I2O_ECPUBLICKEY 151 +# define EC_F_NISTP224_PRE_COMP_NEW 227 +# define EC_F_NISTP256_PRE_COMP_NEW 236 +# define EC_F_NISTP521_PRE_COMP_NEW 237 +# define EC_F_O2I_ECPUBLICKEY 152 +# define EC_F_OLD_EC_PRIV_DECODE 222 +# define EC_F_OSSL_ECDH_COMPUTE_KEY 247 +# define EC_F_OSSL_ECDSA_SIGN_SIG 249 +# define EC_F_OSSL_ECDSA_VERIFY_SIG 250 +# define EC_F_PKEY_ECD_CTRL 271 +# define EC_F_PKEY_ECD_DIGESTSIGN 272 +# define EC_F_PKEY_ECD_DIGESTSIGN25519 276 +# define EC_F_PKEY_ECD_DIGESTSIGN448 277 +# define EC_F_PKEY_ECX_DERIVE 269 +# define EC_F_PKEY_EC_CTRL 197 +# define EC_F_PKEY_EC_CTRL_STR 198 +# define EC_F_PKEY_EC_DERIVE 217 +# define EC_F_PKEY_EC_INIT 282 +# define EC_F_PKEY_EC_KDF_DERIVE 283 +# define EC_F_PKEY_EC_KEYGEN 199 +# define EC_F_PKEY_EC_PARAMGEN 219 +# define EC_F_PKEY_EC_SIGN 218 +# define EC_F_VALIDATE_ECX_DERIVE 278 + +/* + * EC reason codes. + */ +# define EC_R_ASN1_ERROR 115 +# define EC_R_BAD_SIGNATURE 156 +# define EC_R_BIGNUM_OUT_OF_RANGE 144 +# define EC_R_BUFFER_TOO_SMALL 100 +# define EC_R_CANNOT_INVERT 165 +# define EC_R_COORDINATES_OUT_OF_RANGE 146 +# define EC_R_CURVE_DOES_NOT_SUPPORT_ECDH 160 +# define EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING 159 +# define EC_R_D2I_ECPKPARAMETERS_FAILURE 117 +# define EC_R_DECODE_ERROR 142 +# define EC_R_DISCRIMINANT_IS_ZERO 118 +# define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119 +# define EC_R_FIELD_TOO_LARGE 143 +# define EC_R_GF2M_NOT_SUPPORTED 147 +# define EC_R_GROUP2PKPARAMETERS_FAILURE 120 +# define EC_R_I2D_ECPKPARAMETERS_FAILURE 121 +# define EC_R_INCOMPATIBLE_OBJECTS 101 +# define EC_R_INVALID_ARGUMENT 112 +# define EC_R_INVALID_COMPRESSED_POINT 110 +# define EC_R_INVALID_COMPRESSION_BIT 109 +# define EC_R_INVALID_CURVE 141 +# define EC_R_INVALID_DIGEST 151 +# define EC_R_INVALID_DIGEST_TYPE 138 +# define EC_R_INVALID_ENCODING 102 +# define EC_R_INVALID_FIELD 103 +# define EC_R_INVALID_FORM 104 +# define EC_R_INVALID_GROUP_ORDER 122 +# define EC_R_INVALID_KEY 116 +# define EC_R_INVALID_OUTPUT_LENGTH 161 +# define EC_R_INVALID_PEER_KEY 133 +# define EC_R_INVALID_PENTANOMIAL_BASIS 132 +# define EC_R_INVALID_PRIVATE_KEY 123 +# define EC_R_INVALID_TRINOMIAL_BASIS 137 +# define EC_R_KDF_PARAMETER_ERROR 148 +# define EC_R_KEYS_NOT_SET 140 +# define EC_R_LADDER_POST_FAILURE 136 +# define EC_R_LADDER_PRE_FAILURE 153 +# define EC_R_LADDER_STEP_FAILURE 162 +# define EC_R_MISSING_OID 167 +# define EC_R_MISSING_PARAMETERS 124 +# define EC_R_MISSING_PRIVATE_KEY 125 +# define EC_R_NEED_NEW_SETUP_VALUES 157 +# define EC_R_NOT_A_NIST_PRIME 135 +# define EC_R_NOT_IMPLEMENTED 126 +# define EC_R_NOT_INITIALIZED 111 +# define EC_R_NO_PARAMETERS_SET 139 +# define EC_R_NO_PRIVATE_VALUE 154 +# define EC_R_OPERATION_NOT_SUPPORTED 152 +# define EC_R_PASSED_NULL_PARAMETER 134 +# define EC_R_PEER_KEY_ERROR 149 +# define EC_R_PKPARAMETERS2GROUP_FAILURE 127 +# define EC_R_POINT_ARITHMETIC_FAILURE 155 +# define EC_R_POINT_AT_INFINITY 106 +# define EC_R_POINT_COORDINATES_BLIND_FAILURE 163 +# define EC_R_POINT_IS_NOT_ON_CURVE 107 +# define EC_R_RANDOM_NUMBER_GENERATION_FAILED 158 +# define EC_R_SHARED_INFO_ERROR 150 +# define EC_R_SLOT_FULL 108 +# define EC_R_UNDEFINED_GENERATOR 113 +# define EC_R_UNDEFINED_ORDER 128 +# define EC_R_UNKNOWN_COFACTOR 164 +# define EC_R_UNKNOWN_GROUP 129 +# define EC_R_UNKNOWN_ORDER 114 +# define EC_R_UNSUPPORTED_FIELD 131 +# define EC_R_WRONG_CURVE_PARAMETERS 145 +# define EC_R_WRONG_ORDER 130 + +# endif +#endif diff --git a/openSSL/lin32/include/openssl/engine.h b/openSSL/lin32/include/openssl/engine.h new file mode 100644 index 0000000..d707eae --- /dev/null +++ b/openSSL/lin32/include/openssl/engine.h @@ -0,0 +1,752 @@ +/* + * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENGINE_H +# define HEADER_ENGINE_H + +# include + +# ifndef OPENSSL_NO_ENGINE +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# include +# include +# include +# include +# include +# endif +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* + * These flags are used to control combinations of algorithm (methods) by + * bitwise "OR"ing. + */ +# define ENGINE_METHOD_RSA (unsigned int)0x0001 +# define ENGINE_METHOD_DSA (unsigned int)0x0002 +# define ENGINE_METHOD_DH (unsigned int)0x0004 +# define ENGINE_METHOD_RAND (unsigned int)0x0008 +# define ENGINE_METHOD_CIPHERS (unsigned int)0x0040 +# define ENGINE_METHOD_DIGESTS (unsigned int)0x0080 +# define ENGINE_METHOD_PKEY_METHS (unsigned int)0x0200 +# define ENGINE_METHOD_PKEY_ASN1_METHS (unsigned int)0x0400 +# define ENGINE_METHOD_EC (unsigned int)0x0800 +/* Obvious all-or-nothing cases. */ +# define ENGINE_METHOD_ALL (unsigned int)0xFFFF +# define ENGINE_METHOD_NONE (unsigned int)0x0000 + +/* + * This(ese) flag(s) controls behaviour of the ENGINE_TABLE mechanism used + * internally to control registration of ENGINE implementations, and can be + * set by ENGINE_set_table_flags(). The "NOINIT" flag prevents attempts to + * initialise registered ENGINEs if they are not already initialised. + */ +# define ENGINE_TABLE_FLAG_NOINIT (unsigned int)0x0001 + +/* ENGINE flags that can be set by ENGINE_set_flags(). */ +/* Not used */ +/* #define ENGINE_FLAGS_MALLOCED 0x0001 */ + +/* + * This flag is for ENGINEs that wish to handle the various 'CMD'-related + * control commands on their own. Without this flag, ENGINE_ctrl() handles + * these control commands on behalf of the ENGINE using their "cmd_defns" + * data. + */ +# define ENGINE_FLAGS_MANUAL_CMD_CTRL (int)0x0002 + +/* + * This flag is for ENGINEs who return new duplicate structures when found + * via "ENGINE_by_id()". When an ENGINE must store state (eg. if + * ENGINE_ctrl() commands are called in sequence as part of some stateful + * process like key-generation setup and execution), it can set this flag - + * then each attempt to obtain the ENGINE will result in it being copied into + * a new structure. Normally, ENGINEs don't declare this flag so + * ENGINE_by_id() just increments the existing ENGINE's structural reference + * count. + */ +# define ENGINE_FLAGS_BY_ID_COPY (int)0x0004 + +/* + * This flag if for an ENGINE that does not want its methods registered as + * part of ENGINE_register_all_complete() for example if the methods are not + * usable as default methods. + */ + +# define ENGINE_FLAGS_NO_REGISTER_ALL (int)0x0008 + +/* + * ENGINEs can support their own command types, and these flags are used in + * ENGINE_CTRL_GET_CMD_FLAGS to indicate to the caller what kind of input + * each command expects. Currently only numeric and string input is + * supported. If a control command supports none of the _NUMERIC, _STRING, or + * _NO_INPUT options, then it is regarded as an "internal" control command - + * and not for use in config setting situations. As such, they're not + * available to the ENGINE_ctrl_cmd_string() function, only raw ENGINE_ctrl() + * access. Changes to this list of 'command types' should be reflected + * carefully in ENGINE_cmd_is_executable() and ENGINE_ctrl_cmd_string(). + */ + +/* accepts a 'long' input value (3rd parameter to ENGINE_ctrl) */ +# define ENGINE_CMD_FLAG_NUMERIC (unsigned int)0x0001 +/* + * accepts string input (cast from 'void*' to 'const char *', 4th parameter + * to ENGINE_ctrl) + */ +# define ENGINE_CMD_FLAG_STRING (unsigned int)0x0002 +/* + * Indicates that the control command takes *no* input. Ie. the control + * command is unparameterised. + */ +# define ENGINE_CMD_FLAG_NO_INPUT (unsigned int)0x0004 +/* + * Indicates that the control command is internal. This control command won't + * be shown in any output, and is only usable through the ENGINE_ctrl_cmd() + * function. + */ +# define ENGINE_CMD_FLAG_INTERNAL (unsigned int)0x0008 + +/* + * NB: These 3 control commands are deprecated and should not be used. + * ENGINEs relying on these commands should compile conditional support for + * compatibility (eg. if these symbols are defined) but should also migrate + * the same functionality to their own ENGINE-specific control functions that + * can be "discovered" by calling applications. The fact these control + * commands wouldn't be "executable" (ie. usable by text-based config) + * doesn't change the fact that application code can find and use them + * without requiring per-ENGINE hacking. + */ + +/* + * These flags are used to tell the ctrl function what should be done. All + * command numbers are shared between all engines, even if some don't make + * sense to some engines. In such a case, they do nothing but return the + * error ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED. + */ +# define ENGINE_CTRL_SET_LOGSTREAM 1 +# define ENGINE_CTRL_SET_PASSWORD_CALLBACK 2 +# define ENGINE_CTRL_HUP 3/* Close and reinitialise + * any handles/connections + * etc. */ +# define ENGINE_CTRL_SET_USER_INTERFACE 4/* Alternative to callback */ +# define ENGINE_CTRL_SET_CALLBACK_DATA 5/* User-specific data, used + * when calling the password + * callback and the user + * interface */ +# define ENGINE_CTRL_LOAD_CONFIGURATION 6/* Load a configuration, + * given a string that + * represents a file name + * or so */ +# define ENGINE_CTRL_LOAD_SECTION 7/* Load data from a given + * section in the already + * loaded configuration */ + +/* + * These control commands allow an application to deal with an arbitrary + * engine in a dynamic way. Warn: Negative return values indicate errors FOR + * THESE COMMANDS because zero is used to indicate 'end-of-list'. Other + * commands, including ENGINE-specific command types, return zero for an + * error. An ENGINE can choose to implement these ctrl functions, and can + * internally manage things however it chooses - it does so by setting the + * ENGINE_FLAGS_MANUAL_CMD_CTRL flag (using ENGINE_set_flags()). Otherwise + * the ENGINE_ctrl() code handles this on the ENGINE's behalf using the + * cmd_defns data (set using ENGINE_set_cmd_defns()). This means an ENGINE's + * ctrl() handler need only implement its own commands - the above "meta" + * commands will be taken care of. + */ + +/* + * Returns non-zero if the supplied ENGINE has a ctrl() handler. If "not", + * then all the remaining control commands will return failure, so it is + * worth checking this first if the caller is trying to "discover" the + * engine's capabilities and doesn't want errors generated unnecessarily. + */ +# define ENGINE_CTRL_HAS_CTRL_FUNCTION 10 +/* + * Returns a positive command number for the first command supported by the + * engine. Returns zero if no ctrl commands are supported. + */ +# define ENGINE_CTRL_GET_FIRST_CMD_TYPE 11 +/* + * The 'long' argument specifies a command implemented by the engine, and the + * return value is the next command supported, or zero if there are no more. + */ +# define ENGINE_CTRL_GET_NEXT_CMD_TYPE 12 +/* + * The 'void*' argument is a command name (cast from 'const char *'), and the + * return value is the command that corresponds to it. + */ +# define ENGINE_CTRL_GET_CMD_FROM_NAME 13 +/* + * The next two allow a command to be converted into its corresponding string + * form. In each case, the 'long' argument supplies the command. In the + * NAME_LEN case, the return value is the length of the command name (not + * counting a trailing EOL). In the NAME case, the 'void*' argument must be a + * string buffer large enough, and it will be populated with the name of the + * command (WITH a trailing EOL). + */ +# define ENGINE_CTRL_GET_NAME_LEN_FROM_CMD 14 +# define ENGINE_CTRL_GET_NAME_FROM_CMD 15 +/* The next two are similar but give a "short description" of a command. */ +# define ENGINE_CTRL_GET_DESC_LEN_FROM_CMD 16 +# define ENGINE_CTRL_GET_DESC_FROM_CMD 17 +/* + * With this command, the return value is the OR'd combination of + * ENGINE_CMD_FLAG_*** values that indicate what kind of input a given + * engine-specific ctrl command expects. + */ +# define ENGINE_CTRL_GET_CMD_FLAGS 18 + +/* + * ENGINE implementations should start the numbering of their own control + * commands from this value. (ie. ENGINE_CMD_BASE, ENGINE_CMD_BASE + 1, etc). + */ +# define ENGINE_CMD_BASE 200 + +/* + * NB: These 2 nCipher "chil" control commands are deprecated, and their + * functionality is now available through ENGINE-specific control commands + * (exposed through the above-mentioned 'CMD'-handling). Code using these 2 + * commands should be migrated to the more general command handling before + * these are removed. + */ + +/* Flags specific to the nCipher "chil" engine */ +# define ENGINE_CTRL_CHIL_SET_FORKCHECK 100 + /* + * Depending on the value of the (long)i argument, this sets or + * unsets the SimpleForkCheck flag in the CHIL API to enable or + * disable checking and workarounds for applications that fork(). + */ +# define ENGINE_CTRL_CHIL_NO_LOCKING 101 + /* + * This prevents the initialisation function from providing mutex + * callbacks to the nCipher library. + */ + +/* + * If an ENGINE supports its own specific control commands and wishes the + * framework to handle the above 'ENGINE_CMD_***'-manipulation commands on + * its behalf, it should supply a null-terminated array of ENGINE_CMD_DEFN + * entries to ENGINE_set_cmd_defns(). It should also implement a ctrl() + * handler that supports the stated commands (ie. the "cmd_num" entries as + * described by the array). NB: The array must be ordered in increasing order + * of cmd_num. "null-terminated" means that the last ENGINE_CMD_DEFN element + * has cmd_num set to zero and/or cmd_name set to NULL. + */ +typedef struct ENGINE_CMD_DEFN_st { + unsigned int cmd_num; /* The command number */ + const char *cmd_name; /* The command name itself */ + const char *cmd_desc; /* A short description of the command */ + unsigned int cmd_flags; /* The input the command expects */ +} ENGINE_CMD_DEFN; + +/* Generic function pointer */ +typedef int (*ENGINE_GEN_FUNC_PTR) (void); +/* Generic function pointer taking no arguments */ +typedef int (*ENGINE_GEN_INT_FUNC_PTR) (ENGINE *); +/* Specific control function pointer */ +typedef int (*ENGINE_CTRL_FUNC_PTR) (ENGINE *, int, long, void *, + void (*f) (void)); +/* Generic load_key function pointer */ +typedef EVP_PKEY *(*ENGINE_LOAD_KEY_PTR)(ENGINE *, const char *, + UI_METHOD *ui_method, + void *callback_data); +typedef int (*ENGINE_SSL_CLIENT_CERT_PTR) (ENGINE *, SSL *ssl, + STACK_OF(X509_NAME) *ca_dn, + X509 **pcert, EVP_PKEY **pkey, + STACK_OF(X509) **pother, + UI_METHOD *ui_method, + void *callback_data); +/*- + * These callback types are for an ENGINE's handler for cipher and digest logic. + * These handlers have these prototypes; + * int foo(ENGINE *e, const EVP_CIPHER **cipher, const int **nids, int nid); + * int foo(ENGINE *e, const EVP_MD **digest, const int **nids, int nid); + * Looking at how to implement these handlers in the case of cipher support, if + * the framework wants the EVP_CIPHER for 'nid', it will call; + * foo(e, &p_evp_cipher, NULL, nid); (return zero for failure) + * If the framework wants a list of supported 'nid's, it will call; + * foo(e, NULL, &p_nids, 0); (returns number of 'nids' or -1 for error) + */ +/* + * Returns to a pointer to the array of supported cipher 'nid's. If the + * second parameter is non-NULL it is set to the size of the returned array. + */ +typedef int (*ENGINE_CIPHERS_PTR) (ENGINE *, const EVP_CIPHER **, + const int **, int); +typedef int (*ENGINE_DIGESTS_PTR) (ENGINE *, const EVP_MD **, const int **, + int); +typedef int (*ENGINE_PKEY_METHS_PTR) (ENGINE *, EVP_PKEY_METHOD **, + const int **, int); +typedef int (*ENGINE_PKEY_ASN1_METHS_PTR) (ENGINE *, EVP_PKEY_ASN1_METHOD **, + const int **, int); +/* + * STRUCTURE functions ... all of these functions deal with pointers to + * ENGINE structures where the pointers have a "structural reference". This + * means that their reference is to allowed access to the structure but it + * does not imply that the structure is functional. To simply increment or + * decrement the structural reference count, use ENGINE_by_id and + * ENGINE_free. NB: This is not required when iterating using ENGINE_get_next + * as it will automatically decrement the structural reference count of the + * "current" ENGINE and increment the structural reference count of the + * ENGINE it returns (unless it is NULL). + */ + +/* Get the first/last "ENGINE" type available. */ +ENGINE *ENGINE_get_first(void); +ENGINE *ENGINE_get_last(void); +/* Iterate to the next/previous "ENGINE" type (NULL = end of the list). */ +ENGINE *ENGINE_get_next(ENGINE *e); +ENGINE *ENGINE_get_prev(ENGINE *e); +/* Add another "ENGINE" type into the array. */ +int ENGINE_add(ENGINE *e); +/* Remove an existing "ENGINE" type from the array. */ +int ENGINE_remove(ENGINE *e); +/* Retrieve an engine from the list by its unique "id" value. */ +ENGINE *ENGINE_by_id(const char *id); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define ENGINE_load_openssl() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_OPENSSL, NULL) +# define ENGINE_load_dynamic() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_DYNAMIC, NULL) +# ifndef OPENSSL_NO_STATIC_ENGINE +# define ENGINE_load_padlock() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_PADLOCK, NULL) +# define ENGINE_load_capi() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_CAPI, NULL) +# define ENGINE_load_afalg() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_AFALG, NULL) +# endif +# define ENGINE_load_cryptodev() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_CRYPTODEV, NULL) +# define ENGINE_load_rdrand() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_RDRAND, NULL) +#endif +void ENGINE_load_builtin_engines(void); + +/* + * Get and set global flags (ENGINE_TABLE_FLAG_***) for the implementation + * "registry" handling. + */ +unsigned int ENGINE_get_table_flags(void); +void ENGINE_set_table_flags(unsigned int flags); + +/*- Manage registration of ENGINEs per "table". For each type, there are 3 + * functions; + * ENGINE_register_***(e) - registers the implementation from 'e' (if it has one) + * ENGINE_unregister_***(e) - unregister the implementation from 'e' + * ENGINE_register_all_***() - call ENGINE_register_***() for each 'e' in the list + * Cleanup is automatically registered from each table when required. + */ + +int ENGINE_register_RSA(ENGINE *e); +void ENGINE_unregister_RSA(ENGINE *e); +void ENGINE_register_all_RSA(void); + +int ENGINE_register_DSA(ENGINE *e); +void ENGINE_unregister_DSA(ENGINE *e); +void ENGINE_register_all_DSA(void); + +int ENGINE_register_EC(ENGINE *e); +void ENGINE_unregister_EC(ENGINE *e); +void ENGINE_register_all_EC(void); + +int ENGINE_register_DH(ENGINE *e); +void ENGINE_unregister_DH(ENGINE *e); +void ENGINE_register_all_DH(void); + +int ENGINE_register_RAND(ENGINE *e); +void ENGINE_unregister_RAND(ENGINE *e); +void ENGINE_register_all_RAND(void); + +int ENGINE_register_ciphers(ENGINE *e); +void ENGINE_unregister_ciphers(ENGINE *e); +void ENGINE_register_all_ciphers(void); + +int ENGINE_register_digests(ENGINE *e); +void ENGINE_unregister_digests(ENGINE *e); +void ENGINE_register_all_digests(void); + +int ENGINE_register_pkey_meths(ENGINE *e); +void ENGINE_unregister_pkey_meths(ENGINE *e); +void ENGINE_register_all_pkey_meths(void); + +int ENGINE_register_pkey_asn1_meths(ENGINE *e); +void ENGINE_unregister_pkey_asn1_meths(ENGINE *e); +void ENGINE_register_all_pkey_asn1_meths(void); + +/* + * These functions register all support from the above categories. Note, use + * of these functions can result in static linkage of code your application + * may not need. If you only need a subset of functionality, consider using + * more selective initialisation. + */ +int ENGINE_register_complete(ENGINE *e); +int ENGINE_register_all_complete(void); + +/* + * Send parameterised control commands to the engine. The possibilities to + * send down an integer, a pointer to data or a function pointer are + * provided. Any of the parameters may or may not be NULL, depending on the + * command number. In actuality, this function only requires a structural + * (rather than functional) reference to an engine, but many control commands + * may require the engine be functional. The caller should be aware of trying + * commands that require an operational ENGINE, and only use functional + * references in such situations. + */ +int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void)); + +/* + * This function tests if an ENGINE-specific command is usable as a + * "setting". Eg. in an application's config file that gets processed through + * ENGINE_ctrl_cmd_string(). If this returns zero, it is not available to + * ENGINE_ctrl_cmd_string(), only ENGINE_ctrl(). + */ +int ENGINE_cmd_is_executable(ENGINE *e, int cmd); + +/* + * This function works like ENGINE_ctrl() with the exception of taking a + * command name instead of a command number, and can handle optional + * commands. See the comment on ENGINE_ctrl_cmd_string() for an explanation + * on how to use the cmd_name and cmd_optional. + */ +int ENGINE_ctrl_cmd(ENGINE *e, const char *cmd_name, + long i, void *p, void (*f) (void), int cmd_optional); + +/* + * This function passes a command-name and argument to an ENGINE. The + * cmd_name is converted to a command number and the control command is + * called using 'arg' as an argument (unless the ENGINE doesn't support such + * a command, in which case no control command is called). The command is + * checked for input flags, and if necessary the argument will be converted + * to a numeric value. If cmd_optional is non-zero, then if the ENGINE + * doesn't support the given cmd_name the return value will be success + * anyway. This function is intended for applications to use so that users + * (or config files) can supply engine-specific config data to the ENGINE at + * run-time to control behaviour of specific engines. As such, it shouldn't + * be used for calling ENGINE_ctrl() functions that return data, deal with + * binary data, or that are otherwise supposed to be used directly through + * ENGINE_ctrl() in application code. Any "return" data from an ENGINE_ctrl() + * operation in this function will be lost - the return value is interpreted + * as failure if the return value is zero, success otherwise, and this + * function returns a boolean value as a result. In other words, vendors of + * 'ENGINE'-enabled devices should write ENGINE implementations with + * parameterisations that work in this scheme, so that compliant ENGINE-based + * applications can work consistently with the same configuration for the + * same ENGINE-enabled devices, across applications. + */ +int ENGINE_ctrl_cmd_string(ENGINE *e, const char *cmd_name, const char *arg, + int cmd_optional); + +/* + * These functions are useful for manufacturing new ENGINE structures. They + * don't address reference counting at all - one uses them to populate an + * ENGINE structure with personalised implementations of things prior to + * using it directly or adding it to the builtin ENGINE list in OpenSSL. + * These are also here so that the ENGINE structure doesn't have to be + * exposed and break binary compatibility! + */ +ENGINE *ENGINE_new(void); +int ENGINE_free(ENGINE *e); +int ENGINE_up_ref(ENGINE *e); +int ENGINE_set_id(ENGINE *e, const char *id); +int ENGINE_set_name(ENGINE *e, const char *name); +int ENGINE_set_RSA(ENGINE *e, const RSA_METHOD *rsa_meth); +int ENGINE_set_DSA(ENGINE *e, const DSA_METHOD *dsa_meth); +int ENGINE_set_EC(ENGINE *e, const EC_KEY_METHOD *ecdsa_meth); +int ENGINE_set_DH(ENGINE *e, const DH_METHOD *dh_meth); +int ENGINE_set_RAND(ENGINE *e, const RAND_METHOD *rand_meth); +int ENGINE_set_destroy_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR destroy_f); +int ENGINE_set_init_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR init_f); +int ENGINE_set_finish_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR finish_f); +int ENGINE_set_ctrl_function(ENGINE *e, ENGINE_CTRL_FUNC_PTR ctrl_f); +int ENGINE_set_load_privkey_function(ENGINE *e, + ENGINE_LOAD_KEY_PTR loadpriv_f); +int ENGINE_set_load_pubkey_function(ENGINE *e, ENGINE_LOAD_KEY_PTR loadpub_f); +int ENGINE_set_load_ssl_client_cert_function(ENGINE *e, + ENGINE_SSL_CLIENT_CERT_PTR + loadssl_f); +int ENGINE_set_ciphers(ENGINE *e, ENGINE_CIPHERS_PTR f); +int ENGINE_set_digests(ENGINE *e, ENGINE_DIGESTS_PTR f); +int ENGINE_set_pkey_meths(ENGINE *e, ENGINE_PKEY_METHS_PTR f); +int ENGINE_set_pkey_asn1_meths(ENGINE *e, ENGINE_PKEY_ASN1_METHS_PTR f); +int ENGINE_set_flags(ENGINE *e, int flags); +int ENGINE_set_cmd_defns(ENGINE *e, const ENGINE_CMD_DEFN *defns); +/* These functions allow control over any per-structure ENGINE data. */ +#define ENGINE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_ENGINE, l, p, newf, dupf, freef) +int ENGINE_set_ex_data(ENGINE *e, int idx, void *arg); +void *ENGINE_get_ex_data(const ENGINE *e, int idx); + +#if OPENSSL_API_COMPAT < 0x10100000L +/* + * This function previously cleaned up anything that needs it. Auto-deinit will + * now take care of it so it is no longer required to call this function. + */ +# define ENGINE_cleanup() while(0) continue +#endif + +/* + * These return values from within the ENGINE structure. These can be useful + * with functional references as well as structural references - it depends + * which you obtained. Using the result for functional purposes if you only + * obtained a structural reference may be problematic! + */ +const char *ENGINE_get_id(const ENGINE *e); +const char *ENGINE_get_name(const ENGINE *e); +const RSA_METHOD *ENGINE_get_RSA(const ENGINE *e); +const DSA_METHOD *ENGINE_get_DSA(const ENGINE *e); +const EC_KEY_METHOD *ENGINE_get_EC(const ENGINE *e); +const DH_METHOD *ENGINE_get_DH(const ENGINE *e); +const RAND_METHOD *ENGINE_get_RAND(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_destroy_function(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_init_function(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_finish_function(const ENGINE *e); +ENGINE_CTRL_FUNC_PTR ENGINE_get_ctrl_function(const ENGINE *e); +ENGINE_LOAD_KEY_PTR ENGINE_get_load_privkey_function(const ENGINE *e); +ENGINE_LOAD_KEY_PTR ENGINE_get_load_pubkey_function(const ENGINE *e); +ENGINE_SSL_CLIENT_CERT_PTR ENGINE_get_ssl_client_cert_function(const ENGINE + *e); +ENGINE_CIPHERS_PTR ENGINE_get_ciphers(const ENGINE *e); +ENGINE_DIGESTS_PTR ENGINE_get_digests(const ENGINE *e); +ENGINE_PKEY_METHS_PTR ENGINE_get_pkey_meths(const ENGINE *e); +ENGINE_PKEY_ASN1_METHS_PTR ENGINE_get_pkey_asn1_meths(const ENGINE *e); +const EVP_CIPHER *ENGINE_get_cipher(ENGINE *e, int nid); +const EVP_MD *ENGINE_get_digest(ENGINE *e, int nid); +const EVP_PKEY_METHOD *ENGINE_get_pkey_meth(ENGINE *e, int nid); +const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth(ENGINE *e, int nid); +const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth_str(ENGINE *e, + const char *str, + int len); +const EVP_PKEY_ASN1_METHOD *ENGINE_pkey_asn1_find_str(ENGINE **pe, + const char *str, + int len); +const ENGINE_CMD_DEFN *ENGINE_get_cmd_defns(const ENGINE *e); +int ENGINE_get_flags(const ENGINE *e); + +/* + * FUNCTIONAL functions. These functions deal with ENGINE structures that + * have (or will) be initialised for use. Broadly speaking, the structural + * functions are useful for iterating the list of available engine types, + * creating new engine types, and other "list" operations. These functions + * actually deal with ENGINEs that are to be used. As such these functions + * can fail (if applicable) when particular engines are unavailable - eg. if + * a hardware accelerator is not attached or not functioning correctly. Each + * ENGINE has 2 reference counts; structural and functional. Every time a + * functional reference is obtained or released, a corresponding structural + * reference is automatically obtained or released too. + */ + +/* + * Initialise a engine type for use (or up its reference count if it's + * already in use). This will fail if the engine is not currently operational + * and cannot initialise. + */ +int ENGINE_init(ENGINE *e); +/* + * Free a functional reference to a engine type. This does not require a + * corresponding call to ENGINE_free as it also releases a structural + * reference. + */ +int ENGINE_finish(ENGINE *e); + +/* + * The following functions handle keys that are stored in some secondary + * location, handled by the engine. The storage may be on a card or + * whatever. + */ +EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id, + UI_METHOD *ui_method, void *callback_data); +EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id, + UI_METHOD *ui_method, void *callback_data); +int ENGINE_load_ssl_client_cert(ENGINE *e, SSL *s, + STACK_OF(X509_NAME) *ca_dn, X509 **pcert, + EVP_PKEY **ppkey, STACK_OF(X509) **pother, + UI_METHOD *ui_method, void *callback_data); + +/* + * This returns a pointer for the current ENGINE structure that is (by + * default) performing any RSA operations. The value returned is an + * incremented reference, so it should be free'd (ENGINE_finish) before it is + * discarded. + */ +ENGINE *ENGINE_get_default_RSA(void); +/* Same for the other "methods" */ +ENGINE *ENGINE_get_default_DSA(void); +ENGINE *ENGINE_get_default_EC(void); +ENGINE *ENGINE_get_default_DH(void); +ENGINE *ENGINE_get_default_RAND(void); +/* + * These functions can be used to get a functional reference to perform + * ciphering or digesting corresponding to "nid". + */ +ENGINE *ENGINE_get_cipher_engine(int nid); +ENGINE *ENGINE_get_digest_engine(int nid); +ENGINE *ENGINE_get_pkey_meth_engine(int nid); +ENGINE *ENGINE_get_pkey_asn1_meth_engine(int nid); + +/* + * This sets a new default ENGINE structure for performing RSA operations. If + * the result is non-zero (success) then the ENGINE structure will have had + * its reference count up'd so the caller should still free their own + * reference 'e'. + */ +int ENGINE_set_default_RSA(ENGINE *e); +int ENGINE_set_default_string(ENGINE *e, const char *def_list); +/* Same for the other "methods" */ +int ENGINE_set_default_DSA(ENGINE *e); +int ENGINE_set_default_EC(ENGINE *e); +int ENGINE_set_default_DH(ENGINE *e); +int ENGINE_set_default_RAND(ENGINE *e); +int ENGINE_set_default_ciphers(ENGINE *e); +int ENGINE_set_default_digests(ENGINE *e); +int ENGINE_set_default_pkey_meths(ENGINE *e); +int ENGINE_set_default_pkey_asn1_meths(ENGINE *e); + +/* + * The combination "set" - the flags are bitwise "OR"d from the + * ENGINE_METHOD_*** defines above. As with the "ENGINE_register_complete()" + * function, this function can result in unnecessary static linkage. If your + * application requires only specific functionality, consider using more + * selective functions. + */ +int ENGINE_set_default(ENGINE *e, unsigned int flags); + +void ENGINE_add_conf_module(void); + +/* Deprecated functions ... */ +/* int ENGINE_clear_defaults(void); */ + +/**************************/ +/* DYNAMIC ENGINE SUPPORT */ +/**************************/ + +/* Binary/behaviour compatibility levels */ +# define OSSL_DYNAMIC_VERSION (unsigned long)0x00030000 +/* + * Binary versions older than this are too old for us (whether we're a loader + * or a loadee) + */ +# define OSSL_DYNAMIC_OLDEST (unsigned long)0x00030000 + +/* + * When compiling an ENGINE entirely as an external shared library, loadable + * by the "dynamic" ENGINE, these types are needed. The 'dynamic_fns' + * structure type provides the calling application's (or library's) error + * functionality and memory management function pointers to the loaded + * library. These should be used/set in the loaded library code so that the + * loading application's 'state' will be used/changed in all operations. The + * 'static_state' pointer allows the loaded library to know if it shares the + * same static data as the calling application (or library), and thus whether + * these callbacks need to be set or not. + */ +typedef void *(*dyn_MEM_malloc_fn) (size_t, const char *, int); +typedef void *(*dyn_MEM_realloc_fn) (void *, size_t, const char *, int); +typedef void (*dyn_MEM_free_fn) (void *, const char *, int); +typedef struct st_dynamic_MEM_fns { + dyn_MEM_malloc_fn malloc_fn; + dyn_MEM_realloc_fn realloc_fn; + dyn_MEM_free_fn free_fn; +} dynamic_MEM_fns; +/* + * FIXME: Perhaps the memory and locking code (crypto.h) should declare and + * use these types so we (and any other dependent code) can simplify a bit?? + */ +/* The top-level structure */ +typedef struct st_dynamic_fns { + void *static_state; + dynamic_MEM_fns mem_fns; +} dynamic_fns; + +/* + * The version checking function should be of this prototype. NB: The + * ossl_version value passed in is the OSSL_DYNAMIC_VERSION of the loading + * code. If this function returns zero, it indicates a (potential) version + * incompatibility and the loaded library doesn't believe it can proceed. + * Otherwise, the returned value is the (latest) version supported by the + * loading library. The loader may still decide that the loaded code's + * version is unsatisfactory and could veto the load. The function is + * expected to be implemented with the symbol name "v_check", and a default + * implementation can be fully instantiated with + * IMPLEMENT_DYNAMIC_CHECK_FN(). + */ +typedef unsigned long (*dynamic_v_check_fn) (unsigned long ossl_version); +# define IMPLEMENT_DYNAMIC_CHECK_FN() \ + OPENSSL_EXPORT unsigned long v_check(unsigned long v); \ + OPENSSL_EXPORT unsigned long v_check(unsigned long v) { \ + if (v >= OSSL_DYNAMIC_OLDEST) return OSSL_DYNAMIC_VERSION; \ + return 0; } + +/* + * This function is passed the ENGINE structure to initialise with its own + * function and command settings. It should not adjust the structural or + * functional reference counts. If this function returns zero, (a) the load + * will be aborted, (b) the previous ENGINE state will be memcpy'd back onto + * the structure, and (c) the shared library will be unloaded. So + * implementations should do their own internal cleanup in failure + * circumstances otherwise they could leak. The 'id' parameter, if non-NULL, + * represents the ENGINE id that the loader is looking for. If this is NULL, + * the shared library can choose to return failure or to initialise a + * 'default' ENGINE. If non-NULL, the shared library must initialise only an + * ENGINE matching the passed 'id'. The function is expected to be + * implemented with the symbol name "bind_engine". A standard implementation + * can be instantiated with IMPLEMENT_DYNAMIC_BIND_FN(fn) where the parameter + * 'fn' is a callback function that populates the ENGINE structure and + * returns an int value (zero for failure). 'fn' should have prototype; + * [static] int fn(ENGINE *e, const char *id); + */ +typedef int (*dynamic_bind_engine) (ENGINE *e, const char *id, + const dynamic_fns *fns); +# define IMPLEMENT_DYNAMIC_BIND_FN(fn) \ + OPENSSL_EXPORT \ + int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns); \ + OPENSSL_EXPORT \ + int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns) { \ + if (ENGINE_get_static_state() == fns->static_state) goto skip_cbs; \ + CRYPTO_set_mem_functions(fns->mem_fns.malloc_fn, \ + fns->mem_fns.realloc_fn, \ + fns->mem_fns.free_fn); \ + OPENSSL_init_crypto(OPENSSL_INIT_NO_ATEXIT, NULL); \ + skip_cbs: \ + if (!fn(e, id)) return 0; \ + return 1; } + +/* + * If the loading application (or library) and the loaded ENGINE library + * share the same static data (eg. they're both dynamically linked to the + * same libcrypto.so) we need a way to avoid trying to set system callbacks - + * this would fail, and for the same reason that it's unnecessary to try. If + * the loaded ENGINE has (or gets from through the loader) its own copy of + * the libcrypto static data, we will need to set the callbacks. The easiest + * way to detect this is to have a function that returns a pointer to some + * static data and let the loading application and loaded ENGINE compare + * their respective values. + */ +void *ENGINE_get_static_state(void); + +# if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) +DEPRECATEDIN_1_1_0(void ENGINE_setup_bsd_cryptodev(void)) +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin32/include/openssl/engineerr.h b/openSSL/lin32/include/openssl/engineerr.h new file mode 100644 index 0000000..05e84bd --- /dev/null +++ b/openSSL/lin32/include/openssl/engineerr.h @@ -0,0 +1,111 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENGINEERR_H +# define HEADER_ENGINEERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_ENGINE + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ENGINE_strings(void); + +/* + * ENGINE function codes. + */ +# define ENGINE_F_DIGEST_UPDATE 198 +# define ENGINE_F_DYNAMIC_CTRL 180 +# define ENGINE_F_DYNAMIC_GET_DATA_CTX 181 +# define ENGINE_F_DYNAMIC_LOAD 182 +# define ENGINE_F_DYNAMIC_SET_DATA_CTX 183 +# define ENGINE_F_ENGINE_ADD 105 +# define ENGINE_F_ENGINE_BY_ID 106 +# define ENGINE_F_ENGINE_CMD_IS_EXECUTABLE 170 +# define ENGINE_F_ENGINE_CTRL 142 +# define ENGINE_F_ENGINE_CTRL_CMD 178 +# define ENGINE_F_ENGINE_CTRL_CMD_STRING 171 +# define ENGINE_F_ENGINE_FINISH 107 +# define ENGINE_F_ENGINE_GET_CIPHER 185 +# define ENGINE_F_ENGINE_GET_DIGEST 186 +# define ENGINE_F_ENGINE_GET_FIRST 195 +# define ENGINE_F_ENGINE_GET_LAST 196 +# define ENGINE_F_ENGINE_GET_NEXT 115 +# define ENGINE_F_ENGINE_GET_PKEY_ASN1_METH 193 +# define ENGINE_F_ENGINE_GET_PKEY_METH 192 +# define ENGINE_F_ENGINE_GET_PREV 116 +# define ENGINE_F_ENGINE_INIT 119 +# define ENGINE_F_ENGINE_LIST_ADD 120 +# define ENGINE_F_ENGINE_LIST_REMOVE 121 +# define ENGINE_F_ENGINE_LOAD_PRIVATE_KEY 150 +# define ENGINE_F_ENGINE_LOAD_PUBLIC_KEY 151 +# define ENGINE_F_ENGINE_LOAD_SSL_CLIENT_CERT 194 +# define ENGINE_F_ENGINE_NEW 122 +# define ENGINE_F_ENGINE_PKEY_ASN1_FIND_STR 197 +# define ENGINE_F_ENGINE_REMOVE 123 +# define ENGINE_F_ENGINE_SET_DEFAULT_STRING 189 +# define ENGINE_F_ENGINE_SET_ID 129 +# define ENGINE_F_ENGINE_SET_NAME 130 +# define ENGINE_F_ENGINE_TABLE_REGISTER 184 +# define ENGINE_F_ENGINE_UNLOCKED_FINISH 191 +# define ENGINE_F_ENGINE_UP_REF 190 +# define ENGINE_F_INT_CLEANUP_ITEM 199 +# define ENGINE_F_INT_CTRL_HELPER 172 +# define ENGINE_F_INT_ENGINE_CONFIGURE 188 +# define ENGINE_F_INT_ENGINE_MODULE_INIT 187 +# define ENGINE_F_OSSL_HMAC_INIT 200 + +/* + * ENGINE reason codes. + */ +# define ENGINE_R_ALREADY_LOADED 100 +# define ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER 133 +# define ENGINE_R_CMD_NOT_EXECUTABLE 134 +# define ENGINE_R_COMMAND_TAKES_INPUT 135 +# define ENGINE_R_COMMAND_TAKES_NO_INPUT 136 +# define ENGINE_R_CONFLICTING_ENGINE_ID 103 +# define ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED 119 +# define ENGINE_R_DSO_FAILURE 104 +# define ENGINE_R_DSO_NOT_FOUND 132 +# define ENGINE_R_ENGINES_SECTION_ERROR 148 +# define ENGINE_R_ENGINE_CONFIGURATION_ERROR 102 +# define ENGINE_R_ENGINE_IS_NOT_IN_LIST 105 +# define ENGINE_R_ENGINE_SECTION_ERROR 149 +# define ENGINE_R_FAILED_LOADING_PRIVATE_KEY 128 +# define ENGINE_R_FAILED_LOADING_PUBLIC_KEY 129 +# define ENGINE_R_FINISH_FAILED 106 +# define ENGINE_R_ID_OR_NAME_MISSING 108 +# define ENGINE_R_INIT_FAILED 109 +# define ENGINE_R_INTERNAL_LIST_ERROR 110 +# define ENGINE_R_INVALID_ARGUMENT 143 +# define ENGINE_R_INVALID_CMD_NAME 137 +# define ENGINE_R_INVALID_CMD_NUMBER 138 +# define ENGINE_R_INVALID_INIT_VALUE 151 +# define ENGINE_R_INVALID_STRING 150 +# define ENGINE_R_NOT_INITIALISED 117 +# define ENGINE_R_NOT_LOADED 112 +# define ENGINE_R_NO_CONTROL_FUNCTION 120 +# define ENGINE_R_NO_INDEX 144 +# define ENGINE_R_NO_LOAD_FUNCTION 125 +# define ENGINE_R_NO_REFERENCE 130 +# define ENGINE_R_NO_SUCH_ENGINE 116 +# define ENGINE_R_UNIMPLEMENTED_CIPHER 146 +# define ENGINE_R_UNIMPLEMENTED_DIGEST 147 +# define ENGINE_R_UNIMPLEMENTED_PUBLIC_KEY_METHOD 101 +# define ENGINE_R_VERSION_INCOMPATIBILITY 145 + +# endif +#endif diff --git a/openSSL/lin32/include/openssl/err.h b/openSSL/lin32/include/openssl/err.h new file mode 100644 index 0000000..b49f881 --- /dev/null +++ b/openSSL/lin32/include/openssl/err.h @@ -0,0 +1,274 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ERR_H +# define HEADER_ERR_H + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# include +# endif + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef OPENSSL_NO_ERR +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,d,e) +# else +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,NULL,0) +# endif + +# include + +# define ERR_TXT_MALLOCED 0x01 +# define ERR_TXT_STRING 0x02 + +# define ERR_FLAG_MARK 0x01 +# define ERR_FLAG_CLEAR 0x02 + +# define ERR_NUM_ERRORS 16 +typedef struct err_state_st { + int err_flags[ERR_NUM_ERRORS]; + unsigned long err_buffer[ERR_NUM_ERRORS]; + char *err_data[ERR_NUM_ERRORS]; + int err_data_flags[ERR_NUM_ERRORS]; + const char *err_file[ERR_NUM_ERRORS]; + int err_line[ERR_NUM_ERRORS]; + int top, bottom; +} ERR_STATE; + +/* library */ +# define ERR_LIB_NONE 1 +# define ERR_LIB_SYS 2 +# define ERR_LIB_BN 3 +# define ERR_LIB_RSA 4 +# define ERR_LIB_DH 5 +# define ERR_LIB_EVP 6 +# define ERR_LIB_BUF 7 +# define ERR_LIB_OBJ 8 +# define ERR_LIB_PEM 9 +# define ERR_LIB_DSA 10 +# define ERR_LIB_X509 11 +/* #define ERR_LIB_METH 12 */ +# define ERR_LIB_ASN1 13 +# define ERR_LIB_CONF 14 +# define ERR_LIB_CRYPTO 15 +# define ERR_LIB_EC 16 +# define ERR_LIB_SSL 20 +/* #define ERR_LIB_SSL23 21 */ +/* #define ERR_LIB_SSL2 22 */ +/* #define ERR_LIB_SSL3 23 */ +/* #define ERR_LIB_RSAREF 30 */ +/* #define ERR_LIB_PROXY 31 */ +# define ERR_LIB_BIO 32 +# define ERR_LIB_PKCS7 33 +# define ERR_LIB_X509V3 34 +# define ERR_LIB_PKCS12 35 +# define ERR_LIB_RAND 36 +# define ERR_LIB_DSO 37 +# define ERR_LIB_ENGINE 38 +# define ERR_LIB_OCSP 39 +# define ERR_LIB_UI 40 +# define ERR_LIB_COMP 41 +# define ERR_LIB_ECDSA 42 +# define ERR_LIB_ECDH 43 +# define ERR_LIB_OSSL_STORE 44 +# define ERR_LIB_FIPS 45 +# define ERR_LIB_CMS 46 +# define ERR_LIB_TS 47 +# define ERR_LIB_HMAC 48 +/* # define ERR_LIB_JPAKE 49 */ +# define ERR_LIB_CT 50 +# define ERR_LIB_ASYNC 51 +# define ERR_LIB_KDF 52 +# define ERR_LIB_SM2 53 + +# define ERR_LIB_USER 128 + +# define SYSerr(f,r) ERR_PUT_error(ERR_LIB_SYS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BNerr(f,r) ERR_PUT_error(ERR_LIB_BN,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define RSAerr(f,r) ERR_PUT_error(ERR_LIB_RSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DHerr(f,r) ERR_PUT_error(ERR_LIB_DH,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define EVPerr(f,r) ERR_PUT_error(ERR_LIB_EVP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BUFerr(f,r) ERR_PUT_error(ERR_LIB_BUF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OBJerr(f,r) ERR_PUT_error(ERR_LIB_OBJ,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PEMerr(f,r) ERR_PUT_error(ERR_LIB_PEM,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DSAerr(f,r) ERR_PUT_error(ERR_LIB_DSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define X509err(f,r) ERR_PUT_error(ERR_LIB_X509,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ASN1err(f,r) ERR_PUT_error(ERR_LIB_ASN1,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CONFerr(f,r) ERR_PUT_error(ERR_LIB_CONF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CRYPTOerr(f,r) ERR_PUT_error(ERR_LIB_CRYPTO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECerr(f,r) ERR_PUT_error(ERR_LIB_EC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define SSLerr(f,r) ERR_PUT_error(ERR_LIB_SSL,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BIOerr(f,r) ERR_PUT_error(ERR_LIB_BIO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PKCS7err(f,r) ERR_PUT_error(ERR_LIB_PKCS7,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define X509V3err(f,r) ERR_PUT_error(ERR_LIB_X509V3,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PKCS12err(f,r) ERR_PUT_error(ERR_LIB_PKCS12,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define RANDerr(f,r) ERR_PUT_error(ERR_LIB_RAND,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DSOerr(f,r) ERR_PUT_error(ERR_LIB_DSO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ENGINEerr(f,r) ERR_PUT_error(ERR_LIB_ENGINE,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OCSPerr(f,r) ERR_PUT_error(ERR_LIB_OCSP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define UIerr(f,r) ERR_PUT_error(ERR_LIB_UI,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define COMPerr(f,r) ERR_PUT_error(ERR_LIB_COMP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECDSAerr(f,r) ERR_PUT_error(ERR_LIB_ECDSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECDHerr(f,r) ERR_PUT_error(ERR_LIB_ECDH,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OSSL_STOREerr(f,r) ERR_PUT_error(ERR_LIB_OSSL_STORE,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define FIPSerr(f,r) ERR_PUT_error(ERR_LIB_FIPS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CMSerr(f,r) ERR_PUT_error(ERR_LIB_CMS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define TSerr(f,r) ERR_PUT_error(ERR_LIB_TS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define HMACerr(f,r) ERR_PUT_error(ERR_LIB_HMAC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CTerr(f,r) ERR_PUT_error(ERR_LIB_CT,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ASYNCerr(f,r) ERR_PUT_error(ERR_LIB_ASYNC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define KDFerr(f,r) ERR_PUT_error(ERR_LIB_KDF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define SM2err(f,r) ERR_PUT_error(ERR_LIB_SM2,(f),(r),OPENSSL_FILE,OPENSSL_LINE) + +# define ERR_PACK(l,f,r) ( \ + (((unsigned int)(l) & 0x0FF) << 24L) | \ + (((unsigned int)(f) & 0xFFF) << 12L) | \ + (((unsigned int)(r) & 0xFFF) ) ) +# define ERR_GET_LIB(l) (int)(((l) >> 24L) & 0x0FFL) +# define ERR_GET_FUNC(l) (int)(((l) >> 12L) & 0xFFFL) +# define ERR_GET_REASON(l) (int)( (l) & 0xFFFL) +# define ERR_FATAL_ERROR(l) (int)( (l) & ERR_R_FATAL) + +/* OS functions */ +# define SYS_F_FOPEN 1 +# define SYS_F_CONNECT 2 +# define SYS_F_GETSERVBYNAME 3 +# define SYS_F_SOCKET 4 +# define SYS_F_IOCTLSOCKET 5 +# define SYS_F_BIND 6 +# define SYS_F_LISTEN 7 +# define SYS_F_ACCEPT 8 +# define SYS_F_WSASTARTUP 9/* Winsock stuff */ +# define SYS_F_OPENDIR 10 +# define SYS_F_FREAD 11 +# define SYS_F_GETADDRINFO 12 +# define SYS_F_GETNAMEINFO 13 +# define SYS_F_SETSOCKOPT 14 +# define SYS_F_GETSOCKOPT 15 +# define SYS_F_GETSOCKNAME 16 +# define SYS_F_GETHOSTBYNAME 17 +# define SYS_F_FFLUSH 18 +# define SYS_F_OPEN 19 +# define SYS_F_CLOSE 20 +# define SYS_F_IOCTL 21 +# define SYS_F_STAT 22 +# define SYS_F_FCNTL 23 +# define SYS_F_FSTAT 24 + +/* reasons */ +# define ERR_R_SYS_LIB ERR_LIB_SYS/* 2 */ +# define ERR_R_BN_LIB ERR_LIB_BN/* 3 */ +# define ERR_R_RSA_LIB ERR_LIB_RSA/* 4 */ +# define ERR_R_DH_LIB ERR_LIB_DH/* 5 */ +# define ERR_R_EVP_LIB ERR_LIB_EVP/* 6 */ +# define ERR_R_BUF_LIB ERR_LIB_BUF/* 7 */ +# define ERR_R_OBJ_LIB ERR_LIB_OBJ/* 8 */ +# define ERR_R_PEM_LIB ERR_LIB_PEM/* 9 */ +# define ERR_R_DSA_LIB ERR_LIB_DSA/* 10 */ +# define ERR_R_X509_LIB ERR_LIB_X509/* 11 */ +# define ERR_R_ASN1_LIB ERR_LIB_ASN1/* 13 */ +# define ERR_R_EC_LIB ERR_LIB_EC/* 16 */ +# define ERR_R_BIO_LIB ERR_LIB_BIO/* 32 */ +# define ERR_R_PKCS7_LIB ERR_LIB_PKCS7/* 33 */ +# define ERR_R_X509V3_LIB ERR_LIB_X509V3/* 34 */ +# define ERR_R_ENGINE_LIB ERR_LIB_ENGINE/* 38 */ +# define ERR_R_UI_LIB ERR_LIB_UI/* 40 */ +# define ERR_R_ECDSA_LIB ERR_LIB_ECDSA/* 42 */ +# define ERR_R_OSSL_STORE_LIB ERR_LIB_OSSL_STORE/* 44 */ + +# define ERR_R_NESTED_ASN1_ERROR 58 +# define ERR_R_MISSING_ASN1_EOS 63 + +/* fatal error */ +# define ERR_R_FATAL 64 +# define ERR_R_MALLOC_FAILURE (1|ERR_R_FATAL) +# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (2|ERR_R_FATAL) +# define ERR_R_PASSED_NULL_PARAMETER (3|ERR_R_FATAL) +# define ERR_R_INTERNAL_ERROR (4|ERR_R_FATAL) +# define ERR_R_DISABLED (5|ERR_R_FATAL) +# define ERR_R_INIT_FAIL (6|ERR_R_FATAL) +# define ERR_R_PASSED_INVALID_ARGUMENT (7) +# define ERR_R_OPERATION_FAIL (8|ERR_R_FATAL) + +/* + * 99 is the maximum possible ERR_R_... code, higher values are reserved for + * the individual libraries + */ + +typedef struct ERR_string_data_st { + unsigned long error; + const char *string; +} ERR_STRING_DATA; + +DEFINE_LHASH_OF(ERR_STRING_DATA); + +void ERR_put_error(int lib, int func, int reason, const char *file, int line); +void ERR_set_error_data(char *data, int flags); + +unsigned long ERR_get_error(void); +unsigned long ERR_get_error_line(const char **file, int *line); +unsigned long ERR_get_error_line_data(const char **file, int *line, + const char **data, int *flags); +unsigned long ERR_peek_error(void); +unsigned long ERR_peek_error_line(const char **file, int *line); +unsigned long ERR_peek_error_line_data(const char **file, int *line, + const char **data, int *flags); +unsigned long ERR_peek_last_error(void); +unsigned long ERR_peek_last_error_line(const char **file, int *line); +unsigned long ERR_peek_last_error_line_data(const char **file, int *line, + const char **data, int *flags); +void ERR_clear_error(void); +char *ERR_error_string(unsigned long e, char *buf); +void ERR_error_string_n(unsigned long e, char *buf, size_t len); +const char *ERR_lib_error_string(unsigned long e); +const char *ERR_func_error_string(unsigned long e); +const char *ERR_reason_error_string(unsigned long e); +void ERR_print_errors_cb(int (*cb) (const char *str, size_t len, void *u), + void *u); +# ifndef OPENSSL_NO_STDIO +void ERR_print_errors_fp(FILE *fp); +# endif +void ERR_print_errors(BIO *bp); +void ERR_add_error_data(int num, ...); +void ERR_add_error_vdata(int num, va_list args); +int ERR_load_strings(int lib, ERR_STRING_DATA *str); +int ERR_load_strings_const(const ERR_STRING_DATA *str); +int ERR_unload_strings(int lib, ERR_STRING_DATA *str); +int ERR_load_ERR_strings(void); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define ERR_load_crypto_strings() \ + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +# define ERR_free_strings() while(0) continue +#endif + +DEPRECATEDIN_1_1_0(void ERR_remove_thread_state(void *)) +DEPRECATEDIN_1_0_0(void ERR_remove_state(unsigned long pid)) +ERR_STATE *ERR_get_state(void); + +int ERR_get_next_error_library(void); + +int ERR_set_mark(void); +int ERR_pop_to_mark(void); +int ERR_clear_last_mark(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin32/include/openssl/evp.h b/openSSL/lin32/include/openssl/evp.h new file mode 100644 index 0000000..a411f3f --- /dev/null +++ b/openSSL/lin32/include/openssl/evp.h @@ -0,0 +1,1666 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENVELOPE_H +# define HEADER_ENVELOPE_H + +# include +# include +# include +# include +# include + +# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ +# define EVP_MAX_KEY_LENGTH 64 +# define EVP_MAX_IV_LENGTH 16 +# define EVP_MAX_BLOCK_LENGTH 32 + +# define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +# define PKCS5_DEFAULT_ITER 2048 + +# include + +# define EVP_PK_RSA 0x0001 +# define EVP_PK_DSA 0x0002 +# define EVP_PK_DH 0x0004 +# define EVP_PK_EC 0x0008 +# define EVP_PKT_SIGN 0x0010 +# define EVP_PKT_ENC 0x0020 +# define EVP_PKT_EXCH 0x0040 +# define EVP_PKS_RSA 0x0100 +# define EVP_PKS_DSA 0x0200 +# define EVP_PKS_EC 0x0400 + +# define EVP_PKEY_NONE NID_undef +# define EVP_PKEY_RSA NID_rsaEncryption +# define EVP_PKEY_RSA2 NID_rsa +# define EVP_PKEY_RSA_PSS NID_rsassaPss +# define EVP_PKEY_DSA NID_dsa +# define EVP_PKEY_DSA1 NID_dsa_2 +# define EVP_PKEY_DSA2 NID_dsaWithSHA +# define EVP_PKEY_DSA3 NID_dsaWithSHA1 +# define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 +# define EVP_PKEY_DH NID_dhKeyAgreement +# define EVP_PKEY_DHX NID_dhpublicnumber +# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey +# define EVP_PKEY_SM2 NID_sm2 +# define EVP_PKEY_HMAC NID_hmac +# define EVP_PKEY_CMAC NID_cmac +# define EVP_PKEY_SCRYPT NID_id_scrypt +# define EVP_PKEY_TLS1_PRF NID_tls1_prf +# define EVP_PKEY_HKDF NID_hkdf +# define EVP_PKEY_POLY1305 NID_poly1305 +# define EVP_PKEY_SIPHASH NID_siphash +# define EVP_PKEY_X25519 NID_X25519 +# define EVP_PKEY_ED25519 NID_ED25519 +# define EVP_PKEY_X448 NID_X448 +# define EVP_PKEY_ED448 NID_ED448 + +#ifdef __cplusplus +extern "C" { +#endif + +# define EVP_PKEY_MO_SIGN 0x0001 +# define EVP_PKEY_MO_VERIFY 0x0002 +# define EVP_PKEY_MO_ENCRYPT 0x0004 +# define EVP_PKEY_MO_DECRYPT 0x0008 + +# ifndef EVP_MD +EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type); +EVP_MD *EVP_MD_meth_dup(const EVP_MD *md); +void EVP_MD_meth_free(EVP_MD *md); + +int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize); +int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize); +int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize); +int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags); +int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx)); +int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx, + const void *data, + size_t count)); +int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx, + unsigned char *md)); +int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to, + const EVP_MD_CTX *from)); +int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx)); +int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2)); + +int EVP_MD_meth_get_input_blocksize(const EVP_MD *md); +int EVP_MD_meth_get_result_size(const EVP_MD *md); +int EVP_MD_meth_get_app_datasize(const EVP_MD *md); +unsigned long EVP_MD_meth_get_flags(const EVP_MD *md); +int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx); +int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx, + const void *data, + size_t count); +int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx, + unsigned char *md); +int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to, + const EVP_MD_CTX *from); +int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx); +int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2); + +/* digest can only handle a single block */ +# define EVP_MD_FLAG_ONESHOT 0x0001 + +/* digest is extensible-output function, XOF */ +# define EVP_MD_FLAG_XOF 0x0002 + +/* DigestAlgorithmIdentifier flags... */ + +# define EVP_MD_FLAG_DIGALGID_MASK 0x0018 + +/* NULL or absent parameter accepted. Use NULL */ + +# define EVP_MD_FLAG_DIGALGID_NULL 0x0000 + +/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ + +# define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 + +/* Custom handling via ctrl */ + +# define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 + +/* Note if suitable for use in FIPS mode */ +# define EVP_MD_FLAG_FIPS 0x0400 + +/* Digest ctrls */ + +# define EVP_MD_CTRL_DIGALGID 0x1 +# define EVP_MD_CTRL_MICALG 0x2 +# define EVP_MD_CTRL_XOF_LEN 0x3 + +/* Minimum Algorithm specific ctrl value */ + +# define EVP_MD_CTRL_ALG_CTRL 0x1000 + +# endif /* !EVP_MD */ + +/* values for EVP_MD_CTX flags */ + +# define EVP_MD_CTX_FLAG_ONESHOT 0x0001/* digest update will be + * called once only */ +# define EVP_MD_CTX_FLAG_CLEANED 0x0002/* context has already been + * cleaned */ +# define EVP_MD_CTX_FLAG_REUSE 0x0004/* Don't free up ctx->md_data + * in EVP_MD_CTX_reset */ +/* + * FIPS and pad options are ignored in 1.0.0, definitions are here so we + * don't accidentally reuse the values for other purposes. + */ + +# define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008/* Allow use of non FIPS + * digest in FIPS mode */ + +/* + * The following PAD options are also currently ignored in 1.0.0, digest + * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() + * instead. + */ +# define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */ +# define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */ +# define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */ +# define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */ + +# define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */ +/* + * Some functions such as EVP_DigestSign only finalise copies of internal + * contexts so additional data can be included after the finalisation call. + * This is inefficient if this functionality is not required: it is disabled + * if the following flag is set. + */ +# define EVP_MD_CTX_FLAG_FINALISE 0x0200 +/* NOTE: 0x0400 is reserved for internal usage */ + +EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); +EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); +void EVP_CIPHER_meth_free(EVP_CIPHER *cipher); + +int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len); +int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags); +int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size); +int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher, + int (*init) (EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc)); +int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher, + int (*do_cipher) (EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl)); +int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, + int (*cleanup) (EVP_CIPHER_CTX *)); +int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, + int (*set_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, + int (*get_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, + int (*ctrl) (EVP_CIPHER_CTX *, int type, + int arg, void *ptr)); + +int (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc); +int (*EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl); +int (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *); +int (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +int (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + int type, int arg, + void *ptr); + +/* Values for cipher flags */ + +/* Modes for ciphers */ + +# define EVP_CIPH_STREAM_CIPHER 0x0 +# define EVP_CIPH_ECB_MODE 0x1 +# define EVP_CIPH_CBC_MODE 0x2 +# define EVP_CIPH_CFB_MODE 0x3 +# define EVP_CIPH_OFB_MODE 0x4 +# define EVP_CIPH_CTR_MODE 0x5 +# define EVP_CIPH_GCM_MODE 0x6 +# define EVP_CIPH_CCM_MODE 0x7 +# define EVP_CIPH_XTS_MODE 0x10001 +# define EVP_CIPH_WRAP_MODE 0x10002 +# define EVP_CIPH_OCB_MODE 0x10003 +# define EVP_CIPH_MODE 0xF0007 +/* Set if variable length cipher */ +# define EVP_CIPH_VARIABLE_LENGTH 0x8 +/* Set if the iv handling should be done by the cipher itself */ +# define EVP_CIPH_CUSTOM_IV 0x10 +/* Set if the cipher's init() function should be called if key is NULL */ +# define EVP_CIPH_ALWAYS_CALL_INIT 0x20 +/* Call ctrl() to init cipher parameters */ +# define EVP_CIPH_CTRL_INIT 0x40 +/* Don't use standard key length function */ +# define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 +/* Don't use standard block padding */ +# define EVP_CIPH_NO_PADDING 0x100 +/* cipher handles random key generation */ +# define EVP_CIPH_RAND_KEY 0x200 +/* cipher has its own additional copying logic */ +# define EVP_CIPH_CUSTOM_COPY 0x400 +/* Don't use standard iv length function */ +# define EVP_CIPH_CUSTOM_IV_LENGTH 0x800 +/* Allow use default ASN1 get/set iv */ +# define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 +/* Buffer length in bits not bytes: CFB1 mode only */ +# define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 +/* Note if suitable for use in FIPS mode */ +# define EVP_CIPH_FLAG_FIPS 0x4000 +/* Allow non FIPS cipher in FIPS mode */ +# define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x8000 +/* + * Cipher handles any and all padding logic as well as finalisation. + */ +# define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 +# define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 +# define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 +/* Cipher can handle pipeline operations */ +# define EVP_CIPH_FLAG_PIPELINE 0X800000 + +/* + * Cipher context flag to indicate we can handle wrap mode: if allowed in + * older applications it could overflow buffers. + */ + +# define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 + +/* ctrl() values */ + +# define EVP_CTRL_INIT 0x0 +# define EVP_CTRL_SET_KEY_LENGTH 0x1 +# define EVP_CTRL_GET_RC2_KEY_BITS 0x2 +# define EVP_CTRL_SET_RC2_KEY_BITS 0x3 +# define EVP_CTRL_GET_RC5_ROUNDS 0x4 +# define EVP_CTRL_SET_RC5_ROUNDS 0x5 +# define EVP_CTRL_RAND_KEY 0x6 +# define EVP_CTRL_PBE_PRF_NID 0x7 +# define EVP_CTRL_COPY 0x8 +# define EVP_CTRL_AEAD_SET_IVLEN 0x9 +# define EVP_CTRL_AEAD_GET_TAG 0x10 +# define EVP_CTRL_AEAD_SET_TAG 0x11 +# define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 +# define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +# define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +# define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +# define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +# define EVP_CTRL_GCM_IV_GEN 0x13 +# define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +# define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +# define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +# define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +# define EVP_CTRL_CCM_SET_L 0x14 +# define EVP_CTRL_CCM_SET_MSGLEN 0x15 +/* + * AEAD cipher deduces payload length and returns number of bytes required to + * store MAC and eventual padding. Subsequent call to EVP_Cipher even + * appends/verifies MAC. + */ +# define EVP_CTRL_AEAD_TLS1_AAD 0x16 +/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ +# define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 +/* Set the GCM invocation field, decrypt only */ +# define EVP_CTRL_GCM_SET_IV_INV 0x18 + +# define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 +# define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a +# define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b +# define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c + +# define EVP_CTRL_SSL3_MASTER_SECRET 0x1d + +/* EVP_CTRL_SET_SBOX takes the char * specifying S-boxes */ +# define EVP_CTRL_SET_SBOX 0x1e +/* + * EVP_CTRL_SBOX_USED takes a 'size_t' and 'char *', pointing at a + * pre-allocated buffer with specified size + */ +# define EVP_CTRL_SBOX_USED 0x1f +/* EVP_CTRL_KEY_MESH takes 'size_t' number of bytes to mesh the key after, + * 0 switches meshing off + */ +# define EVP_CTRL_KEY_MESH 0x20 +/* EVP_CTRL_BLOCK_PADDING_MODE takes the padding mode */ +# define EVP_CTRL_BLOCK_PADDING_MODE 0x21 + +/* Set the output buffers to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS 0x22 +/* Set the input buffers to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_INPUT_BUFS 0x23 +/* Set the input buffer lengths to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_INPUT_LENS 0x24 + +# define EVP_CTRL_GET_IVLEN 0x25 + +/* Padding modes */ +#define EVP_PADDING_PKCS7 1 +#define EVP_PADDING_ISO7816_4 2 +#define EVP_PADDING_ANSI923 3 +#define EVP_PADDING_ISO10126 4 +#define EVP_PADDING_ZERO 5 + +/* RFC 5246 defines additional data to be 13 bytes in length */ +# define EVP_AEAD_TLS1_AAD_LEN 13 + +typedef struct { + unsigned char *out; + const unsigned char *inp; + size_t len; + unsigned int interleave; +} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; + +/* GCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_GCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 +/* Length of tag for TLS */ +# define EVP_GCM_TLS_TAG_LEN 16 + +/* CCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_CCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_CCM_TLS_EXPLICIT_IV_LEN 8 +/* Total length of CCM IV length for TLS */ +# define EVP_CCM_TLS_IV_LEN 12 +/* Length of tag for TLS */ +# define EVP_CCM_TLS_TAG_LEN 16 +/* Length of CCM8 tag for TLS */ +# define EVP_CCM8_TLS_TAG_LEN 8 + +/* Length of tag for TLS */ +# define EVP_CHACHAPOLY_TLS_TAG_LEN 16 + +typedef struct evp_cipher_info_st { + const EVP_CIPHER *cipher; + unsigned char iv[EVP_MAX_IV_LENGTH]; +} EVP_CIPHER_INFO; + + +/* Password based encryption function */ +typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de); + +# ifndef OPENSSL_NO_RSA +# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ + (char *)(rsa)) +# endif + +# ifndef OPENSSL_NO_DSA +# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ + (char *)(dsa)) +# endif + +# ifndef OPENSSL_NO_DH +# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ + (char *)(dh)) +# endif + +# ifndef OPENSSL_NO_EC +# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\ + (char *)(eckey)) +# endif +# ifndef OPENSSL_NO_SIPHASH +# define EVP_PKEY_assign_SIPHASH(pkey,shkey) EVP_PKEY_assign((pkey),EVP_PKEY_SIPHASH,\ + (char *)(shkey)) +# endif + +# ifndef OPENSSL_NO_POLY1305 +# define EVP_PKEY_assign_POLY1305(pkey,polykey) EVP_PKEY_assign((pkey),EVP_PKEY_POLY1305,\ + (char *)(polykey)) +# endif + +/* Add some extra combinations */ +# define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) +# define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) +# define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) +# define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) + +int EVP_MD_type(const EVP_MD *md); +# define EVP_MD_nid(e) EVP_MD_type(e) +# define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) +int EVP_MD_pkey_type(const EVP_MD *md); +int EVP_MD_size(const EVP_MD *md); +int EVP_MD_block_size(const EVP_MD *md); +unsigned long EVP_MD_flags(const EVP_MD *md); + +const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); +int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, + const void *data, size_t count); +void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, + int (*update) (EVP_MD_CTX *ctx, + const void *data, size_t count)); +# define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e)) +EVP_PKEY_CTX *EVP_MD_CTX_pkey_ctx(const EVP_MD_CTX *ctx); +void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); +void *EVP_MD_CTX_md_data(const EVP_MD_CTX *ctx); + +int EVP_CIPHER_nid(const EVP_CIPHER *cipher); +# define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e)) +int EVP_CIPHER_block_size(const EVP_CIPHER *cipher); +int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher); +int EVP_CIPHER_key_length(const EVP_CIPHER *cipher); +int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher); +unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher); +# define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE) + +const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_encrypting(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); +const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx); +const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx); +unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx); +unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_num(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num); +int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); +void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); +void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx); +void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data); +# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) +# if OPENSSL_API_COMPAT < 0x10100000L +# define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(c)) +# endif +# define EVP_CIPHER_CTX_mode(c) EVP_CIPHER_mode(EVP_CIPHER_CTX_cipher(c)) + +# define EVP_ENCODE_LENGTH(l) ((((l)+2)/3*4)+((l)/48+1)*2+80) +# define EVP_DECODE_LENGTH(l) (((l)+3)/4*3+80) + +# define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_SignInit(a,b) EVP_DigestInit(a,b) +# define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_VerifyInit(a,b) EVP_DigestInit(a,b) +# define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) +# define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) +# define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) + +# ifdef CONST_STRICT +void BIO_set_md(BIO *, const EVP_MD *md); +# else +# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)(md)) +# endif +# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)(mdp)) +# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0, \ + (char *)(mdcp)) +# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0, \ + (char *)(mdcp)) +# define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL) +# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0, \ + (char *)(c_pp)) + +/*__owur*/ int EVP_Cipher(EVP_CIPHER_CTX *c, + unsigned char *out, + const unsigned char *in, unsigned int inl); + +# define EVP_add_cipher_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_add_digest_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_delete_cipher_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS); +# define EVP_delete_digest_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS); + +int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2); +EVP_MD_CTX *EVP_MD_CTX_new(void); +int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); +void EVP_MD_CTX_free(EVP_MD_CTX *ctx); +# define EVP_MD_CTX_create() EVP_MD_CTX_new() +# define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx)) +# define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx)) +__owur int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); +void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); +void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); +int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); +__owur int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, + ENGINE *impl); +__owur int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, + size_t cnt); +__owur int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_Digest(const void *data, size_t count, + unsigned char *md, unsigned int *size, + const EVP_MD *type, ENGINE *impl); + +__owur int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); +__owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); +__owur int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *md, + size_t len); + +int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); +int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, + const char *prompt, int verify); +void EVP_set_pw_prompt(const char *prompt); +char *EVP_get_pw_prompt(void); + +__owur int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, + const unsigned char *salt, + const unsigned char *data, int datal, int count, + unsigned char *key, unsigned char *iv); + +void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); +void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); +int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); + +__owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +/*__owur*/ int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +/*__owur*/ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +/*__owur*/ int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); +/*__owur*/ int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); + +__owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +/*__owur*/ int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +/*__owur*/ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +/*__owur*/ int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc); +/*__owur*/ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv, int enc); +__owur int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +__owur int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey); + +__owur int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); + +__owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, + size_t siglen, const unsigned char *tbs, + size_t tbslen); + +/*__owur*/ int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen); + +__owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen); + +# ifndef OPENSSL_NO_RSA +__owur int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + const unsigned char *ek, int ekl, + const unsigned char *iv, EVP_PKEY *priv); +__owur int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +__owur int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + unsigned char **ek, int *ekl, unsigned char *iv, + EVP_PKEY **pubk, int npubk); +__owur int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); +# endif + +EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void); +void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx); +int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, EVP_ENCODE_CTX *sctx); +int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); +void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); +int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); +int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned + char *out, int *outl); +int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define EVP_CIPHER_CTX_init(c) EVP_CIPHER_CTX_reset(c) +# define EVP_CIPHER_CTX_cleanup(c) EVP_CIPHER_CTX_reset(c) +# endif +EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); +int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *c); +int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); +int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); +int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); +int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); + +const BIO_METHOD *BIO_f_md(void); +const BIO_METHOD *BIO_f_base64(void); +const BIO_METHOD *BIO_f_cipher(void); +const BIO_METHOD *BIO_f_reliable(void); +__owur int BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, + const unsigned char *i, int enc); + +const EVP_MD *EVP_md_null(void); +# ifndef OPENSSL_NO_MD2 +const EVP_MD *EVP_md2(void); +# endif +# ifndef OPENSSL_NO_MD4 +const EVP_MD *EVP_md4(void); +# endif +# ifndef OPENSSL_NO_MD5 +const EVP_MD *EVP_md5(void); +const EVP_MD *EVP_md5_sha1(void); +# endif +# ifndef OPENSSL_NO_BLAKE2 +const EVP_MD *EVP_blake2b512(void); +const EVP_MD *EVP_blake2s256(void); +# endif +const EVP_MD *EVP_sha1(void); +const EVP_MD *EVP_sha224(void); +const EVP_MD *EVP_sha256(void); +const EVP_MD *EVP_sha384(void); +const EVP_MD *EVP_sha512(void); +const EVP_MD *EVP_sha512_224(void); +const EVP_MD *EVP_sha512_256(void); +const EVP_MD *EVP_sha3_224(void); +const EVP_MD *EVP_sha3_256(void); +const EVP_MD *EVP_sha3_384(void); +const EVP_MD *EVP_sha3_512(void); +const EVP_MD *EVP_shake128(void); +const EVP_MD *EVP_shake256(void); +# ifndef OPENSSL_NO_MDC2 +const EVP_MD *EVP_mdc2(void); +# endif +# ifndef OPENSSL_NO_RMD160 +const EVP_MD *EVP_ripemd160(void); +# endif +# ifndef OPENSSL_NO_WHIRLPOOL +const EVP_MD *EVP_whirlpool(void); +# endif +# ifndef OPENSSL_NO_SM3 +const EVP_MD *EVP_sm3(void); +# endif +const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ +# ifndef OPENSSL_NO_DES +const EVP_CIPHER *EVP_des_ecb(void); +const EVP_CIPHER *EVP_des_ede(void); +const EVP_CIPHER *EVP_des_ede3(void); +const EVP_CIPHER *EVP_des_ede_ecb(void); +const EVP_CIPHER *EVP_des_ede3_ecb(void); +const EVP_CIPHER *EVP_des_cfb64(void); +# define EVP_des_cfb EVP_des_cfb64 +const EVP_CIPHER *EVP_des_cfb1(void); +const EVP_CIPHER *EVP_des_cfb8(void); +const EVP_CIPHER *EVP_des_ede_cfb64(void); +# define EVP_des_ede_cfb EVP_des_ede_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb64(void); +# define EVP_des_ede3_cfb EVP_des_ede3_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb1(void); +const EVP_CIPHER *EVP_des_ede3_cfb8(void); +const EVP_CIPHER *EVP_des_ofb(void); +const EVP_CIPHER *EVP_des_ede_ofb(void); +const EVP_CIPHER *EVP_des_ede3_ofb(void); +const EVP_CIPHER *EVP_des_cbc(void); +const EVP_CIPHER *EVP_des_ede_cbc(void); +const EVP_CIPHER *EVP_des_ede3_cbc(void); +const EVP_CIPHER *EVP_desx_cbc(void); +const EVP_CIPHER *EVP_des_ede3_wrap(void); +/* + * This should now be supported through the dev_crypto ENGINE. But also, why + * are rc4 and md5 declarations made here inside a "NO_DES" precompiler + * branch? + */ +# endif +# ifndef OPENSSL_NO_RC4 +const EVP_CIPHER *EVP_rc4(void); +const EVP_CIPHER *EVP_rc4_40(void); +# ifndef OPENSSL_NO_MD5 +const EVP_CIPHER *EVP_rc4_hmac_md5(void); +# endif +# endif +# ifndef OPENSSL_NO_IDEA +const EVP_CIPHER *EVP_idea_ecb(void); +const EVP_CIPHER *EVP_idea_cfb64(void); +# define EVP_idea_cfb EVP_idea_cfb64 +const EVP_CIPHER *EVP_idea_ofb(void); +const EVP_CIPHER *EVP_idea_cbc(void); +# endif +# ifndef OPENSSL_NO_RC2 +const EVP_CIPHER *EVP_rc2_ecb(void); +const EVP_CIPHER *EVP_rc2_cbc(void); +const EVP_CIPHER *EVP_rc2_40_cbc(void); +const EVP_CIPHER *EVP_rc2_64_cbc(void); +const EVP_CIPHER *EVP_rc2_cfb64(void); +# define EVP_rc2_cfb EVP_rc2_cfb64 +const EVP_CIPHER *EVP_rc2_ofb(void); +# endif +# ifndef OPENSSL_NO_BF +const EVP_CIPHER *EVP_bf_ecb(void); +const EVP_CIPHER *EVP_bf_cbc(void); +const EVP_CIPHER *EVP_bf_cfb64(void); +# define EVP_bf_cfb EVP_bf_cfb64 +const EVP_CIPHER *EVP_bf_ofb(void); +# endif +# ifndef OPENSSL_NO_CAST +const EVP_CIPHER *EVP_cast5_ecb(void); +const EVP_CIPHER *EVP_cast5_cbc(void); +const EVP_CIPHER *EVP_cast5_cfb64(void); +# define EVP_cast5_cfb EVP_cast5_cfb64 +const EVP_CIPHER *EVP_cast5_ofb(void); +# endif +# ifndef OPENSSL_NO_RC5 +const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); +const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); +const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); +# define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 +const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); +# endif +const EVP_CIPHER *EVP_aes_128_ecb(void); +const EVP_CIPHER *EVP_aes_128_cbc(void); +const EVP_CIPHER *EVP_aes_128_cfb1(void); +const EVP_CIPHER *EVP_aes_128_cfb8(void); +const EVP_CIPHER *EVP_aes_128_cfb128(void); +# define EVP_aes_128_cfb EVP_aes_128_cfb128 +const EVP_CIPHER *EVP_aes_128_ofb(void); +const EVP_CIPHER *EVP_aes_128_ctr(void); +const EVP_CIPHER *EVP_aes_128_ccm(void); +const EVP_CIPHER *EVP_aes_128_gcm(void); +const EVP_CIPHER *EVP_aes_128_xts(void); +const EVP_CIPHER *EVP_aes_128_wrap(void); +const EVP_CIPHER *EVP_aes_128_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_128_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_192_ecb(void); +const EVP_CIPHER *EVP_aes_192_cbc(void); +const EVP_CIPHER *EVP_aes_192_cfb1(void); +const EVP_CIPHER *EVP_aes_192_cfb8(void); +const EVP_CIPHER *EVP_aes_192_cfb128(void); +# define EVP_aes_192_cfb EVP_aes_192_cfb128 +const EVP_CIPHER *EVP_aes_192_ofb(void); +const EVP_CIPHER *EVP_aes_192_ctr(void); +const EVP_CIPHER *EVP_aes_192_ccm(void); +const EVP_CIPHER *EVP_aes_192_gcm(void); +const EVP_CIPHER *EVP_aes_192_wrap(void); +const EVP_CIPHER *EVP_aes_192_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_192_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_256_ecb(void); +const EVP_CIPHER *EVP_aes_256_cbc(void); +const EVP_CIPHER *EVP_aes_256_cfb1(void); +const EVP_CIPHER *EVP_aes_256_cfb8(void); +const EVP_CIPHER *EVP_aes_256_cfb128(void); +# define EVP_aes_256_cfb EVP_aes_256_cfb128 +const EVP_CIPHER *EVP_aes_256_ofb(void); +const EVP_CIPHER *EVP_aes_256_ctr(void); +const EVP_CIPHER *EVP_aes_256_ccm(void); +const EVP_CIPHER *EVP_aes_256_gcm(void); +const EVP_CIPHER *EVP_aes_256_xts(void); +const EVP_CIPHER *EVP_aes_256_wrap(void); +const EVP_CIPHER *EVP_aes_256_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_256_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); +# ifndef OPENSSL_NO_ARIA +const EVP_CIPHER *EVP_aria_128_ecb(void); +const EVP_CIPHER *EVP_aria_128_cbc(void); +const EVP_CIPHER *EVP_aria_128_cfb1(void); +const EVP_CIPHER *EVP_aria_128_cfb8(void); +const EVP_CIPHER *EVP_aria_128_cfb128(void); +# define EVP_aria_128_cfb EVP_aria_128_cfb128 +const EVP_CIPHER *EVP_aria_128_ctr(void); +const EVP_CIPHER *EVP_aria_128_ofb(void); +const EVP_CIPHER *EVP_aria_128_gcm(void); +const EVP_CIPHER *EVP_aria_128_ccm(void); +const EVP_CIPHER *EVP_aria_192_ecb(void); +const EVP_CIPHER *EVP_aria_192_cbc(void); +const EVP_CIPHER *EVP_aria_192_cfb1(void); +const EVP_CIPHER *EVP_aria_192_cfb8(void); +const EVP_CIPHER *EVP_aria_192_cfb128(void); +# define EVP_aria_192_cfb EVP_aria_192_cfb128 +const EVP_CIPHER *EVP_aria_192_ctr(void); +const EVP_CIPHER *EVP_aria_192_ofb(void); +const EVP_CIPHER *EVP_aria_192_gcm(void); +const EVP_CIPHER *EVP_aria_192_ccm(void); +const EVP_CIPHER *EVP_aria_256_ecb(void); +const EVP_CIPHER *EVP_aria_256_cbc(void); +const EVP_CIPHER *EVP_aria_256_cfb1(void); +const EVP_CIPHER *EVP_aria_256_cfb8(void); +const EVP_CIPHER *EVP_aria_256_cfb128(void); +# define EVP_aria_256_cfb EVP_aria_256_cfb128 +const EVP_CIPHER *EVP_aria_256_ctr(void); +const EVP_CIPHER *EVP_aria_256_ofb(void); +const EVP_CIPHER *EVP_aria_256_gcm(void); +const EVP_CIPHER *EVP_aria_256_ccm(void); +# endif +# ifndef OPENSSL_NO_CAMELLIA +const EVP_CIPHER *EVP_camellia_128_ecb(void); +const EVP_CIPHER *EVP_camellia_128_cbc(void); +const EVP_CIPHER *EVP_camellia_128_cfb1(void); +const EVP_CIPHER *EVP_camellia_128_cfb8(void); +const EVP_CIPHER *EVP_camellia_128_cfb128(void); +# define EVP_camellia_128_cfb EVP_camellia_128_cfb128 +const EVP_CIPHER *EVP_camellia_128_ofb(void); +const EVP_CIPHER *EVP_camellia_128_ctr(void); +const EVP_CIPHER *EVP_camellia_192_ecb(void); +const EVP_CIPHER *EVP_camellia_192_cbc(void); +const EVP_CIPHER *EVP_camellia_192_cfb1(void); +const EVP_CIPHER *EVP_camellia_192_cfb8(void); +const EVP_CIPHER *EVP_camellia_192_cfb128(void); +# define EVP_camellia_192_cfb EVP_camellia_192_cfb128 +const EVP_CIPHER *EVP_camellia_192_ofb(void); +const EVP_CIPHER *EVP_camellia_192_ctr(void); +const EVP_CIPHER *EVP_camellia_256_ecb(void); +const EVP_CIPHER *EVP_camellia_256_cbc(void); +const EVP_CIPHER *EVP_camellia_256_cfb1(void); +const EVP_CIPHER *EVP_camellia_256_cfb8(void); +const EVP_CIPHER *EVP_camellia_256_cfb128(void); +# define EVP_camellia_256_cfb EVP_camellia_256_cfb128 +const EVP_CIPHER *EVP_camellia_256_ofb(void); +const EVP_CIPHER *EVP_camellia_256_ctr(void); +# endif +# ifndef OPENSSL_NO_CHACHA +const EVP_CIPHER *EVP_chacha20(void); +# ifndef OPENSSL_NO_POLY1305 +const EVP_CIPHER *EVP_chacha20_poly1305(void); +# endif +# endif + +# ifndef OPENSSL_NO_SEED +const EVP_CIPHER *EVP_seed_ecb(void); +const EVP_CIPHER *EVP_seed_cbc(void); +const EVP_CIPHER *EVP_seed_cfb128(void); +# define EVP_seed_cfb EVP_seed_cfb128 +const EVP_CIPHER *EVP_seed_ofb(void); +# endif + +# ifndef OPENSSL_NO_SM4 +const EVP_CIPHER *EVP_sm4_ecb(void); +const EVP_CIPHER *EVP_sm4_cbc(void); +const EVP_CIPHER *EVP_sm4_cfb128(void); +# define EVP_sm4_cfb EVP_sm4_cfb128 +const EVP_CIPHER *EVP_sm4_ofb(void); +const EVP_CIPHER *EVP_sm4_ctr(void); +# endif + +# if OPENSSL_API_COMPAT < 0x10100000L +# define OPENSSL_add_all_algorithms_conf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS \ + | OPENSSL_INIT_LOAD_CONFIG, NULL) +# define OPENSSL_add_all_algorithms_noconf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +# ifdef OPENSSL_LOAD_CONF +# define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_conf() +# else +# define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_noconf() +# endif + +# define OpenSSL_add_all_ciphers() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL) +# define OpenSSL_add_all_digests() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +# define EVP_cleanup() while(0) continue +# endif + +int EVP_add_cipher(const EVP_CIPHER *cipher); +int EVP_add_digest(const EVP_MD *digest); + +const EVP_CIPHER *EVP_get_cipherbyname(const char *name); +const EVP_MD *EVP_get_digestbyname(const char *name); + +void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_sorted(void (*fn) + (const EVP_CIPHER *ciph, const char *from, + const char *to, void *x), void *arg); + +void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_MD_do_all_sorted(void (*fn) + (const EVP_MD *ciph, const char *from, + const char *to, void *x), void *arg); + +int EVP_PKEY_decrypt_old(unsigned char *dec_key, + const unsigned char *enc_key, int enc_key_len, + EVP_PKEY *private_key); +int EVP_PKEY_encrypt_old(unsigned char *enc_key, + const unsigned char *key, int key_len, + EVP_PKEY *pub_key); +int EVP_PKEY_type(int type); +int EVP_PKEY_id(const EVP_PKEY *pkey); +int EVP_PKEY_base_id(const EVP_PKEY *pkey); +int EVP_PKEY_bits(const EVP_PKEY *pkey); +int EVP_PKEY_security_bits(const EVP_PKEY *pkey); +int EVP_PKEY_size(const EVP_PKEY *pkey); +int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); +int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); +int EVP_PKEY_set_alias_type(EVP_PKEY *pkey, int type); +# ifndef OPENSSL_NO_ENGINE +int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e); +ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey); +# endif +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +void *EVP_PKEY_get0(const EVP_PKEY *pkey); +const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); +# ifndef OPENSSL_NO_POLY1305 +const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len); +# endif +# ifndef OPENSSL_NO_SIPHASH +const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len); +# endif + +# ifndef OPENSSL_NO_RSA +struct rsa_st; +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +struct rsa_st *EVP_PKEY_get0_RSA(EVP_PKEY *pkey); +struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DSA +struct dsa_st; +int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); +struct dsa_st *EVP_PKEY_get0_DSA(EVP_PKEY *pkey); +struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DH +struct dh_st; +int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); +struct dh_st *EVP_PKEY_get0_DH(EVP_PKEY *pkey); +struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_EC +struct ec_key_st; +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); +struct ec_key_st *EVP_PKEY_get0_EC_KEY(EVP_PKEY *pkey); +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +# endif + +EVP_PKEY *EVP_PKEY_new(void); +int EVP_PKEY_up_ref(EVP_PKEY *pkey); +void EVP_PKEY_free(EVP_PKEY *pkey); + +EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp); + +EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp); + +int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); +int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); +int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); +int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); + +int EVP_PKEY_set1_tls_encodedpoint(EVP_PKEY *pkey, + const unsigned char *pt, size_t ptlen); +size_t EVP_PKEY_get1_tls_encodedpoint(EVP_PKEY *pkey, unsigned char **ppt); + +int EVP_CIPHER_type(const EVP_CIPHER *ctx); + +/* calls methods */ +int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* These are used by EVP_CIPHER methods */ +int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* PKCS5 password based encryption */ +int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + int keylen, unsigned char *out); +int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + const EVP_MD *digest, int keylen, unsigned char *out); +int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); + +#ifndef OPENSSL_NO_SCRYPT +int EVP_PBE_scrypt(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen); + +int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de); +#endif + +void PKCS5_PBE_add(void); + +int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); + +/* PBE type */ + +/* Can appear as the outermost AlgorithmIdentifier */ +# define EVP_PBE_TYPE_OUTER 0x0 +/* Is an PRF type OID */ +# define EVP_PBE_TYPE_PRF 0x1 +/* Is a PKCS#5 v2.0 KDF */ +# define EVP_PBE_TYPE_KDF 0x2 + +int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, + int md_nid, EVP_PBE_KEYGEN *keygen); +int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, + EVP_PBE_KEYGEN *keygen); +int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen); +void EVP_PBE_cleanup(void); +int EVP_PBE_get(int *ptype, int *ppbe_nid, size_t num); + +# define ASN1_PKEY_ALIAS 0x1 +# define ASN1_PKEY_DYNAMIC 0x2 +# define ASN1_PKEY_SIGPARAM_NULL 0x4 + +# define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 +# define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 +# define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 +# define ASN1_PKEY_CTRL_CMS_SIGN 0x5 +# define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 +# define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 + +# define ASN1_PKEY_CTRL_SET1_TLS_ENCPT 0x9 +# define ASN1_PKEY_CTRL_GET1_TLS_ENCPT 0xa + +int EVP_PKEY_asn1_get_count(void); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, + const char *str, int len); +int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); +int EVP_PKEY_asn1_add_alias(int to, int from); +int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, + int *ppkey_flags, const char **pinfo, + const char **ppem_str, + const EVP_PKEY_ASN1_METHOD *ameth); + +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(const EVP_PKEY *pkey); +EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, + const char *pem_str, + const char *info); +void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, + const EVP_PKEY_ASN1_METHOD *src); +void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); +void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, + int (*pub_decode) (EVP_PKEY *pk, + X509_PUBKEY *pub), + int (*pub_encode) (X509_PUBKEY *pub, + const EVP_PKEY *pk), + int (*pub_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*pub_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx), + int (*pkey_size) (const EVP_PKEY *pk), + int (*pkey_bits) (const EVP_PKEY *pk)); +void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, + int (*priv_decode) (EVP_PKEY *pk, + const PKCS8_PRIV_KEY_INFO + *p8inf), + int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8, + const EVP_PKEY *pk), + int (*priv_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); +void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, + int (*param_decode) (EVP_PKEY *pkey, + const unsigned char **pder, + int derlen), + int (*param_encode) (const EVP_PKEY *pkey, + unsigned char **pder), + int (*param_missing) (const EVP_PKEY *pk), + int (*param_copy) (EVP_PKEY *to, + const EVP_PKEY *from), + int (*param_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*param_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); + +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, + void (*pkey_free) (EVP_PKEY *pkey)); +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_ctrl) (EVP_PKEY *pkey, int op, + long arg1, void *arg2)); +void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth, + int (*item_verify) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *a, + ASN1_BIT_STRING *sig, + EVP_PKEY *pkey), + int (*item_sign) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *alg1, + X509_ALGOR *alg2, + ASN1_BIT_STRING *sig)); + +void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD *ameth, + int (*siginf_set) (X509_SIG_INFO *siginf, + const X509_ALGOR *alg, + const ASN1_STRING *sig)); + +void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_pub_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_param_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_priv_key) (EVP_PKEY *pk, + const unsigned char + *priv, + size_t len)); +void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_pub_key) (EVP_PKEY *pk, + const unsigned char *pub, + size_t len)); +void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_priv_key) (const EVP_PKEY *pk, + unsigned char *priv, + size_t *len)); +void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_pub_key) (const EVP_PKEY *pk, + unsigned char *pub, + size_t *len)); + +void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_security_bits) (const EVP_PKEY + *pk)); + +# define EVP_PKEY_OP_UNDEFINED 0 +# define EVP_PKEY_OP_PARAMGEN (1<<1) +# define EVP_PKEY_OP_KEYGEN (1<<2) +# define EVP_PKEY_OP_SIGN (1<<3) +# define EVP_PKEY_OP_VERIFY (1<<4) +# define EVP_PKEY_OP_VERIFYRECOVER (1<<5) +# define EVP_PKEY_OP_SIGNCTX (1<<6) +# define EVP_PKEY_OP_VERIFYCTX (1<<7) +# define EVP_PKEY_OP_ENCRYPT (1<<8) +# define EVP_PKEY_OP_DECRYPT (1<<9) +# define EVP_PKEY_OP_DERIVE (1<<10) + +# define EVP_PKEY_OP_TYPE_SIG \ + (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \ + | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) + +# define EVP_PKEY_OP_TYPE_CRYPT \ + (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) + +# define EVP_PKEY_OP_TYPE_NOGEN \ + (EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT | EVP_PKEY_OP_DERIVE) + +# define EVP_PKEY_OP_TYPE_GEN \ + (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) + +# define EVP_PKEY_CTX_set_signature_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_signature_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_GET_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_mac_key(ctx, key, len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_SET_MAC_KEY, len, (void *)(key)) + +# define EVP_PKEY_CTRL_MD 1 +# define EVP_PKEY_CTRL_PEER_KEY 2 + +# define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 +# define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 + +# define EVP_PKEY_CTRL_PKCS7_SIGN 5 + +# define EVP_PKEY_CTRL_SET_MAC_KEY 6 + +# define EVP_PKEY_CTRL_DIGESTINIT 7 + +/* Used by GOST key encryption in TLS */ +# define EVP_PKEY_CTRL_SET_IV 8 + +# define EVP_PKEY_CTRL_CMS_ENCRYPT 9 +# define EVP_PKEY_CTRL_CMS_DECRYPT 10 +# define EVP_PKEY_CTRL_CMS_SIGN 11 + +# define EVP_PKEY_CTRL_CIPHER 12 + +# define EVP_PKEY_CTRL_GET_MD 13 + +# define EVP_PKEY_CTRL_SET_DIGEST_SIZE 14 + +# define EVP_PKEY_ALG_CTRL 0x1000 + +# define EVP_PKEY_FLAG_AUTOARGLEN 2 +/* + * Method handles all operations: don't assume any digest related defaults. + */ +# define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 + +const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); +EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); +void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, + const EVP_PKEY_METHOD *meth); +void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src); +void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); +int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); +int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth); +size_t EVP_PKEY_meth_get_count(void); +const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx); + +EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, int p1, void *p2); +int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, + const char *value); +int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, uint64_t value); + +int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); +int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); + +int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md); + +int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); + +EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, + const unsigned char *key, int keylen); +EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e, + const unsigned char *priv, + size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e, + const unsigned char *pub, + size_t len); +int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv, + size_t *len); +int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub, + size_t *len); + +EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, + size_t len, const EVP_CIPHER *cipher); + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx); +EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); + +EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, + const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, + unsigned char *rout, size_t *routlen, + const unsigned char *sig, size_t siglen); +int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); +int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); + +int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); +int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); + +typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); +EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); + +void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, + int (*copy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, + void (*cleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, + int (*paramgen_init) (EVP_PKEY_CTX *ctx), + int (*paramgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, + int (*keygen_init) (EVP_PKEY_CTX *ctx), + int (*keygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, + int (*sign_init) (EVP_PKEY_CTX *ctx), + int (*sign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, + int (*verify_init) (EVP_PKEY_CTX *ctx), + int (*verify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, + int (*verify_recover_init) (EVP_PKEY_CTX + *ctx), + int (*verify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, + int (*signctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*signctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, + int (*verifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*verifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, + int (*encrypt_init) (EVP_PKEY_CTX *ctx), + int (*encryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, + int (*decrypt_init) (EVP_PKEY_CTX *ctx), + int (*decrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, + int (*derive_init) (EVP_PKEY_CTX *ctx), + int (*derive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, + int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (*ctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + +void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD *pmeth, + int (*digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD *pmeth, + int (*digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD *pmeth, + int (*digest_custom) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD *pmeth, + int (**pinit) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_copy(const EVP_PKEY_METHOD *pmeth, + int (**pcopy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_get_cleanup(const EVP_PKEY_METHOD *pmeth, + void (**pcleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_paramgen(const EVP_PKEY_METHOD *pmeth, + int (**pparamgen_init) (EVP_PKEY_CTX *ctx), + int (**pparamgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_keygen(const EVP_PKEY_METHOD *pmeth, + int (**pkeygen_init) (EVP_PKEY_CTX *ctx), + int (**pkeygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_sign(const EVP_PKEY_METHOD *pmeth, + int (**psign_init) (EVP_PKEY_CTX *ctx), + int (**psign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify(const EVP_PKEY_METHOD *pmeth, + int (**pverify_init) (EVP_PKEY_CTX *ctx), + int (**pverify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify_recover(const EVP_PKEY_METHOD *pmeth, + int (**pverify_recover_init) (EVP_PKEY_CTX + *ctx), + int (**pverify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_signctx(const EVP_PKEY_METHOD *pmeth, + int (**psignctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**psignctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_verifyctx(const EVP_PKEY_METHOD *pmeth, + int (**pverifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**pverifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_encrypt(const EVP_PKEY_METHOD *pmeth, + int (**pencrypt_init) (EVP_PKEY_CTX *ctx), + int (**pencryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_decrypt(const EVP_PKEY_METHOD *pmeth, + int (**pdecrypt_init) (EVP_PKEY_CTX *ctx), + int (**pdecrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_derive(const EVP_PKEY_METHOD *pmeth, + int (**pderive_init) (EVP_PKEY_CTX *ctx), + int (**pderive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_get_ctrl(const EVP_PKEY_METHOD *pmeth, + int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (**pctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + +void EVP_PKEY_meth_get_digestsign(EVP_PKEY_METHOD *pmeth, + int (**digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_digestverify(EVP_PKEY_METHOD *pmeth, + int (**digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_digest_custom(EVP_PKEY_METHOD *pmeth, + int (**pdigest_custom) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx)); +void EVP_add_alg_module(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/evperr.h b/openSSL/lin32/include/openssl/evperr.h new file mode 100644 index 0000000..b4ea90a --- /dev/null +++ b/openSSL/lin32/include/openssl/evperr.h @@ -0,0 +1,204 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EVPERR_H +# define HEADER_EVPERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_EVP_strings(void); + +/* + * EVP function codes. + */ +# define EVP_F_AESNI_INIT_KEY 165 +# define EVP_F_AESNI_XTS_INIT_KEY 207 +# define EVP_F_AES_GCM_CTRL 196 +# define EVP_F_AES_INIT_KEY 133 +# define EVP_F_AES_OCB_CIPHER 169 +# define EVP_F_AES_T4_INIT_KEY 178 +# define EVP_F_AES_T4_XTS_INIT_KEY 208 +# define EVP_F_AES_WRAP_CIPHER 170 +# define EVP_F_AES_XTS_INIT_KEY 209 +# define EVP_F_ALG_MODULE_INIT 177 +# define EVP_F_ARIA_CCM_INIT_KEY 175 +# define EVP_F_ARIA_GCM_CTRL 197 +# define EVP_F_ARIA_GCM_INIT_KEY 176 +# define EVP_F_ARIA_INIT_KEY 185 +# define EVP_F_B64_NEW 198 +# define EVP_F_CAMELLIA_INIT_KEY 159 +# define EVP_F_CHACHA20_POLY1305_CTRL 182 +# define EVP_F_CMLL_T4_INIT_KEY 179 +# define EVP_F_DES_EDE3_WRAP_CIPHER 171 +# define EVP_F_DO_SIGVER_INIT 161 +# define EVP_F_ENC_NEW 199 +# define EVP_F_EVP_CIPHERINIT_EX 123 +# define EVP_F_EVP_CIPHER_ASN1_TO_PARAM 204 +# define EVP_F_EVP_CIPHER_CTX_COPY 163 +# define EVP_F_EVP_CIPHER_CTX_CTRL 124 +# define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 +# define EVP_F_EVP_CIPHER_PARAM_TO_ASN1 205 +# define EVP_F_EVP_DECRYPTFINAL_EX 101 +# define EVP_F_EVP_DECRYPTUPDATE 166 +# define EVP_F_EVP_DIGESTFINALXOF 174 +# define EVP_F_EVP_DIGESTINIT_EX 128 +# define EVP_F_EVP_ENCRYPTDECRYPTUPDATE 219 +# define EVP_F_EVP_ENCRYPTFINAL_EX 127 +# define EVP_F_EVP_ENCRYPTUPDATE 167 +# define EVP_F_EVP_MD_CTX_COPY_EX 110 +# define EVP_F_EVP_MD_SIZE 162 +# define EVP_F_EVP_OPENINIT 102 +# define EVP_F_EVP_PBE_ALG_ADD 115 +# define EVP_F_EVP_PBE_ALG_ADD_TYPE 160 +# define EVP_F_EVP_PBE_CIPHERINIT 116 +# define EVP_F_EVP_PBE_SCRYPT 181 +# define EVP_F_EVP_PKCS82PKEY 111 +# define EVP_F_EVP_PKEY2PKCS8 113 +# define EVP_F_EVP_PKEY_ASN1_ADD0 188 +# define EVP_F_EVP_PKEY_CHECK 186 +# define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 +# define EVP_F_EVP_PKEY_CTX_CTRL 137 +# define EVP_F_EVP_PKEY_CTX_CTRL_STR 150 +# define EVP_F_EVP_PKEY_CTX_DUP 156 +# define EVP_F_EVP_PKEY_CTX_MD 168 +# define EVP_F_EVP_PKEY_DECRYPT 104 +# define EVP_F_EVP_PKEY_DECRYPT_INIT 138 +# define EVP_F_EVP_PKEY_DECRYPT_OLD 151 +# define EVP_F_EVP_PKEY_DERIVE 153 +# define EVP_F_EVP_PKEY_DERIVE_INIT 154 +# define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155 +# define EVP_F_EVP_PKEY_ENCRYPT 105 +# define EVP_F_EVP_PKEY_ENCRYPT_INIT 139 +# define EVP_F_EVP_PKEY_ENCRYPT_OLD 152 +# define EVP_F_EVP_PKEY_GET0_DH 119 +# define EVP_F_EVP_PKEY_GET0_DSA 120 +# define EVP_F_EVP_PKEY_GET0_EC_KEY 131 +# define EVP_F_EVP_PKEY_GET0_HMAC 183 +# define EVP_F_EVP_PKEY_GET0_POLY1305 184 +# define EVP_F_EVP_PKEY_GET0_RSA 121 +# define EVP_F_EVP_PKEY_GET0_SIPHASH 172 +# define EVP_F_EVP_PKEY_GET_RAW_PRIVATE_KEY 202 +# define EVP_F_EVP_PKEY_GET_RAW_PUBLIC_KEY 203 +# define EVP_F_EVP_PKEY_KEYGEN 146 +# define EVP_F_EVP_PKEY_KEYGEN_INIT 147 +# define EVP_F_EVP_PKEY_METH_ADD0 194 +# define EVP_F_EVP_PKEY_METH_NEW 195 +# define EVP_F_EVP_PKEY_NEW 106 +# define EVP_F_EVP_PKEY_NEW_CMAC_KEY 193 +# define EVP_F_EVP_PKEY_NEW_RAW_PRIVATE_KEY 191 +# define EVP_F_EVP_PKEY_NEW_RAW_PUBLIC_KEY 192 +# define EVP_F_EVP_PKEY_PARAMGEN 148 +# define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 +# define EVP_F_EVP_PKEY_PARAM_CHECK 189 +# define EVP_F_EVP_PKEY_PUBLIC_CHECK 190 +# define EVP_F_EVP_PKEY_SET1_ENGINE 187 +# define EVP_F_EVP_PKEY_SET_ALIAS_TYPE 206 +# define EVP_F_EVP_PKEY_SIGN 140 +# define EVP_F_EVP_PKEY_SIGN_INIT 141 +# define EVP_F_EVP_PKEY_VERIFY 142 +# define EVP_F_EVP_PKEY_VERIFY_INIT 143 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER 144 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145 +# define EVP_F_EVP_SIGNFINAL 107 +# define EVP_F_EVP_VERIFYFINAL 108 +# define EVP_F_INT_CTX_NEW 157 +# define EVP_F_OK_NEW 200 +# define EVP_F_PKCS5_PBE_KEYIVGEN 117 +# define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 +# define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164 +# define EVP_F_PKCS5_V2_SCRYPT_KEYIVGEN 180 +# define EVP_F_PKEY_SET_TYPE 158 +# define EVP_F_RC2_MAGIC_TO_METH 109 +# define EVP_F_RC5_CTRL 125 +# define EVP_F_R_32_12_16_INIT_KEY 242 +# define EVP_F_S390X_AES_GCM_CTRL 201 +# define EVP_F_UPDATE 173 + +/* + * EVP reason codes. + */ +# define EVP_R_AES_KEY_SETUP_FAILED 143 +# define EVP_R_ARIA_KEY_SETUP_FAILED 176 +# define EVP_R_BAD_DECRYPT 100 +# define EVP_R_BAD_KEY_LENGTH 195 +# define EVP_R_BUFFER_TOO_SMALL 155 +# define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 +# define EVP_R_CIPHER_PARAMETER_ERROR 122 +# define EVP_R_COMMAND_NOT_SUPPORTED 147 +# define EVP_R_COPY_ERROR 173 +# define EVP_R_CTRL_NOT_IMPLEMENTED 132 +# define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 +# define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 +# define EVP_R_DECODE_ERROR 114 +# define EVP_R_DIFFERENT_KEY_TYPES 101 +# define EVP_R_DIFFERENT_PARAMETERS 153 +# define EVP_R_ERROR_LOADING_SECTION 165 +# define EVP_R_ERROR_SETTING_FIPS_MODE 166 +# define EVP_R_EXPECTING_AN_HMAC_KEY 174 +# define EVP_R_EXPECTING_AN_RSA_KEY 127 +# define EVP_R_EXPECTING_A_DH_KEY 128 +# define EVP_R_EXPECTING_A_DSA_KEY 129 +# define EVP_R_EXPECTING_A_EC_KEY 142 +# define EVP_R_EXPECTING_A_POLY1305_KEY 164 +# define EVP_R_EXPECTING_A_SIPHASH_KEY 175 +# define EVP_R_FIPS_MODE_NOT_SUPPORTED 167 +# define EVP_R_GET_RAW_KEY_FAILED 182 +# define EVP_R_ILLEGAL_SCRYPT_PARAMETERS 171 +# define EVP_R_INITIALIZATION_ERROR 134 +# define EVP_R_INPUT_NOT_INITIALIZED 111 +# define EVP_R_INVALID_DIGEST 152 +# define EVP_R_INVALID_FIPS_MODE 168 +# define EVP_R_INVALID_IV_LENGTH 194 +# define EVP_R_INVALID_KEY 163 +# define EVP_R_INVALID_KEY_LENGTH 130 +# define EVP_R_INVALID_OPERATION 148 +# define EVP_R_KEYGEN_FAILURE 120 +# define EVP_R_KEY_SETUP_FAILED 180 +# define EVP_R_MEMORY_LIMIT_EXCEEDED 172 +# define EVP_R_MESSAGE_DIGEST_IS_NULL 159 +# define EVP_R_METHOD_NOT_SUPPORTED 144 +# define EVP_R_MISSING_PARAMETERS 103 +# define EVP_R_NOT_XOF_OR_INVALID_LENGTH 178 +# define EVP_R_NO_CIPHER_SET 131 +# define EVP_R_NO_DEFAULT_DIGEST 158 +# define EVP_R_NO_DIGEST_SET 139 +# define EVP_R_NO_KEY_SET 154 +# define EVP_R_NO_OPERATION_SET 149 +# define EVP_R_ONLY_ONESHOT_SUPPORTED 177 +# define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +# define EVP_R_OPERATON_NOT_INITIALIZED 151 +# define EVP_R_OUTPUT_WOULD_OVERFLOW 184 +# define EVP_R_PARTIALLY_OVERLAPPING 162 +# define EVP_R_PBKDF2_ERROR 181 +# define EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED 179 +# define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 +# define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 +# define EVP_R_PUBLIC_KEY_NOT_RSA 106 +# define EVP_R_UNKNOWN_CIPHER 160 +# define EVP_R_UNKNOWN_DIGEST 161 +# define EVP_R_UNKNOWN_OPTION 169 +# define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +# define EVP_R_UNSUPPORTED_ALGORITHM 156 +# define EVP_R_UNSUPPORTED_CIPHER 107 +# define EVP_R_UNSUPPORTED_KEYLENGTH 123 +# define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 +# define EVP_R_UNSUPPORTED_KEY_SIZE 108 +# define EVP_R_UNSUPPORTED_NUMBER_OF_ROUNDS 135 +# define EVP_R_UNSUPPORTED_PRF 125 +# define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 +# define EVP_R_UNSUPPORTED_SALT_TYPE 126 +# define EVP_R_WRAP_MODE_NOT_ALLOWED 170 +# define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 +# define EVP_R_XTS_DUPLICATED_KEYS 183 + +#endif diff --git a/openSSL/lin32/include/openssl/hmac.h b/openSSL/lin32/include/openssl/hmac.h new file mode 100644 index 0000000..458efc1 --- /dev/null +++ b/openSSL/lin32/include/openssl/hmac.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_HMAC_H +# define HEADER_HMAC_H + +# include + +# include + +# if OPENSSL_API_COMPAT < 0x10200000L +# define HMAC_MAX_MD_CBLOCK 128 /* Deprecated */ +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +size_t HMAC_size(const HMAC_CTX *e); +HMAC_CTX *HMAC_CTX_new(void); +int HMAC_CTX_reset(HMAC_CTX *ctx); +void HMAC_CTX_free(HMAC_CTX *ctx); + +DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md)) + +/*__owur*/ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md, ENGINE *impl); +/*__owur*/ int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, + size_t len); +/*__owur*/ int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, + unsigned int *len); +unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, + const unsigned char *d, size_t n, unsigned char *md, + unsigned int *md_len); +__owur int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); + +void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); +const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin32/include/openssl/idea.h b/openSSL/lin32/include/openssl/idea.h new file mode 100644 index 0000000..4334f3e --- /dev/null +++ b/openSSL/lin32/include/openssl/idea.h @@ -0,0 +1,64 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_IDEA_H +# define HEADER_IDEA_H + +# include + +# ifndef OPENSSL_NO_IDEA +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned int IDEA_INT; + +# define IDEA_ENCRYPT 1 +# define IDEA_DECRYPT 0 + +# define IDEA_BLOCK 8 +# define IDEA_KEY_LENGTH 16 + +typedef struct idea_key_st { + IDEA_INT data[9][6]; +} IDEA_KEY_SCHEDULE; + +const char *IDEA_options(void); +void IDEA_ecb_encrypt(const unsigned char *in, unsigned char *out, + IDEA_KEY_SCHEDULE *ks); +void IDEA_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks); +void IDEA_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk); +void IDEA_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int enc); +void IDEA_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int *num, int enc); +void IDEA_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int *num); +void IDEA_encrypt(unsigned long *in, IDEA_KEY_SCHEDULE *ks); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define idea_options IDEA_options +# define idea_ecb_encrypt IDEA_ecb_encrypt +# define idea_set_encrypt_key IDEA_set_encrypt_key +# define idea_set_decrypt_key IDEA_set_decrypt_key +# define idea_cbc_encrypt IDEA_cbc_encrypt +# define idea_cfb64_encrypt IDEA_cfb64_encrypt +# define idea_ofb64_encrypt IDEA_ofb64_encrypt +# define idea_encrypt IDEA_encrypt +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/kdf.h b/openSSL/lin32/include/openssl/kdf.h new file mode 100644 index 0000000..5abd4c3 --- /dev/null +++ b/openSSL/lin32/include/openssl/kdf.h @@ -0,0 +1,97 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_KDF_H +# define HEADER_KDF_H + +# include +#ifdef __cplusplus +extern "C" { +#endif + +# define EVP_PKEY_CTRL_TLS_MD (EVP_PKEY_ALG_CTRL) +# define EVP_PKEY_CTRL_TLS_SECRET (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_TLS_SEED (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_HKDF_MD (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_HKDF_SALT (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_HKDF_KEY (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_HKDF_INFO (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_HKDF_MODE (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_PASS (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_SCRYPT_SALT (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_SCRYPT_N (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_SCRYPT_R (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_SCRYPT_P (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES (EVP_PKEY_ALG_CTRL + 13) + +# define EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND 0 +# define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY 1 +# define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY 2 + +# define EVP_PKEY_CTX_set_tls1_prf_md(pctx, md) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set1_tls1_prf_secret(pctx, sec, seclen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_SECRET, seclen, (void *)(sec)) + +# define EVP_PKEY_CTX_add1_tls1_prf_seed(pctx, seed, seedlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_SEED, seedlen, (void *)(seed)) + +# define EVP_PKEY_CTX_set_hkdf_md(pctx, md) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set1_hkdf_salt(pctx, salt, saltlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_SALT, saltlen, (void *)(salt)) + +# define EVP_PKEY_CTX_set1_hkdf_key(pctx, key, keylen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_KEY, keylen, (void *)(key)) + +# define EVP_PKEY_CTX_add1_hkdf_info(pctx, info, infolen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_INFO, infolen, (void *)(info)) + +# define EVP_PKEY_CTX_hkdf_mode(pctx, mode) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_MODE, mode, NULL) + +# define EVP_PKEY_CTX_set1_pbe_pass(pctx, pass, passlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_PASS, passlen, (void *)(pass)) + +# define EVP_PKEY_CTX_set1_scrypt_salt(pctx, salt, saltlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_SALT, saltlen, (void *)(salt)) + +# define EVP_PKEY_CTX_set_scrypt_N(pctx, n) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_N, n) + +# define EVP_PKEY_CTX_set_scrypt_r(pctx, r) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_R, r) + +# define EVP_PKEY_CTX_set_scrypt_p(pctx, p) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_P, p) + +# define EVP_PKEY_CTX_set_scrypt_maxmem_bytes(pctx, maxmem_bytes) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES, maxmem_bytes) + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/kdferr.h b/openSSL/lin32/include/openssl/kdferr.h new file mode 100644 index 0000000..3f51bd0 --- /dev/null +++ b/openSSL/lin32/include/openssl/kdferr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_KDFERR_H +# define HEADER_KDFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_KDF_strings(void); + +/* + * KDF function codes. + */ +# define KDF_F_PKEY_HKDF_CTRL_STR 103 +# define KDF_F_PKEY_HKDF_DERIVE 102 +# define KDF_F_PKEY_HKDF_INIT 108 +# define KDF_F_PKEY_SCRYPT_CTRL_STR 104 +# define KDF_F_PKEY_SCRYPT_CTRL_UINT64 105 +# define KDF_F_PKEY_SCRYPT_DERIVE 109 +# define KDF_F_PKEY_SCRYPT_INIT 106 +# define KDF_F_PKEY_SCRYPT_SET_MEMBUF 107 +# define KDF_F_PKEY_TLS1_PRF_CTRL_STR 100 +# define KDF_F_PKEY_TLS1_PRF_DERIVE 101 +# define KDF_F_PKEY_TLS1_PRF_INIT 110 +# define KDF_F_TLS1_PRF_ALG 111 + +/* + * KDF reason codes. + */ +# define KDF_R_INVALID_DIGEST 100 +# define KDF_R_MISSING_ITERATION_COUNT 109 +# define KDF_R_MISSING_KEY 104 +# define KDF_R_MISSING_MESSAGE_DIGEST 105 +# define KDF_R_MISSING_PARAMETER 101 +# define KDF_R_MISSING_PASS 110 +# define KDF_R_MISSING_SALT 111 +# define KDF_R_MISSING_SECRET 107 +# define KDF_R_MISSING_SEED 106 +# define KDF_R_UNKNOWN_PARAMETER_TYPE 103 +# define KDF_R_VALUE_ERROR 108 +# define KDF_R_VALUE_MISSING 102 + +#endif diff --git a/openSSL/lin32/include/openssl/lhash.h b/openSSL/lin32/include/openssl/lhash.h new file mode 100644 index 0000000..2e42d72 --- /dev/null +++ b/openSSL/lin32/include/openssl/lhash.h @@ -0,0 +1,241 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Header for dynamic hash table routines Author - Eric Young + */ + +#ifndef HEADER_LHASH_H +# define HEADER_LHASH_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct lhash_node_st OPENSSL_LH_NODE; +typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef struct lhash_st OPENSSL_LHASH; + +/* + * Macros for declaring and implementing type-safe wrappers for LHASH + * callbacks. This way, callbacks can be provided to LHASH structures without + * function pointer casting and the macro-defined callbacks provide + * per-variable casting before deferring to the underlying type-specific + * callbacks. NB: It is possible to place a "static" in front of both the + * DECLARE and IMPLEMENT macros if the functions are strictly internal. + */ + +/* First: "hash" functions */ +# define DECLARE_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *); +# define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *arg) { \ + const o_type *a = arg; \ + return name##_hash(a); } +# define LHASH_HASH_FN(name) name##_LHASH_HASH + +/* Second: "compare" functions */ +# define DECLARE_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *, const void *); +# define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *arg1, const void *arg2) { \ + const o_type *a = arg1; \ + const o_type *b = arg2; \ + return name##_cmp(a,b); } +# define LHASH_COMP_FN(name) name##_LHASH_COMP + +/* Fourth: "doall_arg" functions */ +# define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *, void *); +# define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) { \ + o_type *a = arg1; \ + a_type *b = arg2; \ + name##_doall_arg(a, b); } +# define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG + + +# define LH_LOAD_MULT 256 + +int OPENSSL_LH_error(OPENSSL_LHASH *lh); +OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +void OPENSSL_LH_free(OPENSSL_LHASH *lh); +void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); +void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); +void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); +void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +unsigned long OPENSSL_LH_strhash(const char *c); +unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); +unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); +void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); + +# ifndef OPENSSL_NO_STDIO +void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define _LHASH OPENSSL_LHASH +# define LHASH_NODE OPENSSL_LH_NODE +# define lh_error OPENSSL_LH_error +# define lh_new OPENSSL_LH_new +# define lh_free OPENSSL_LH_free +# define lh_insert OPENSSL_LH_insert +# define lh_delete OPENSSL_LH_delete +# define lh_retrieve OPENSSL_LH_retrieve +# define lh_doall OPENSSL_LH_doall +# define lh_doall_arg OPENSSL_LH_doall_arg +# define lh_strhash OPENSSL_LH_strhash +# define lh_num_items OPENSSL_LH_num_items +# ifndef OPENSSL_NO_STDIO +# define lh_stats OPENSSL_LH_stats +# define lh_node_stats OPENSSL_LH_node_stats +# define lh_node_usage_stats OPENSSL_LH_node_usage_stats +# endif +# define lh_stats_bio OPENSSL_LH_stats_bio +# define lh_node_stats_bio OPENSSL_LH_node_stats_bio +# define lh_node_usage_stats_bio OPENSSL_LH_node_usage_stats_bio +# endif + +/* Type checking... */ + +# define LHASH_OF(type) struct lhash_st_##type + +# define DEFINE_LHASH_OF(type) \ + LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ + { \ + return (LHASH_OF(type) *) \ + OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + } \ + static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + { \ + return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + { \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + } \ + static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ + void (*doall)(type *)) \ + { \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + } \ + LHASH_OF(type) + +#define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ + int_implement_lhash_doall(type, argtype, const type) + +#define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \ + int_implement_lhash_doall(type, argtype, type) + +#define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ + void (*fn)(cbargtype *, argtype *), \ + argtype *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + } \ + LHASH_OF(type) + +DEFINE_LHASH_OF(OPENSSL_STRING); +# ifdef _MSC_VER +/* + * push and pop this warning: + * warning C4090: 'function': different 'const' qualifiers + */ +# pragma warning (push) +# pragma warning (disable: 4090) +# endif + +DEFINE_LHASH_OF(OPENSSL_CSTRING); + +# ifdef _MSC_VER +# pragma warning (pop) +# endif + +/* + * If called without higher optimization (min. -xO3) the Oracle Developer + * Studio compiler generates code for the defined (static inline) functions + * above. + * This would later lead to the linker complaining about missing symbols when + * this header file is included but the resulting object is not linked against + * the Crypto library (openssl#6912). + */ +# ifdef __SUNPRO_C +# pragma weak OPENSSL_LH_new +# pragma weak OPENSSL_LH_free +# pragma weak OPENSSL_LH_insert +# pragma weak OPENSSL_LH_delete +# pragma weak OPENSSL_LH_retrieve +# pragma weak OPENSSL_LH_error +# pragma weak OPENSSL_LH_num_items +# pragma weak OPENSSL_LH_node_stats_bio +# pragma weak OPENSSL_LH_node_usage_stats_bio +# pragma weak OPENSSL_LH_stats_bio +# pragma weak OPENSSL_LH_get_down_load +# pragma weak OPENSSL_LH_set_down_load +# pragma weak OPENSSL_LH_doall +# pragma weak OPENSSL_LH_doall_arg +# endif /* __SUNPRO_C */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin32/include/openssl/md2.h b/openSSL/lin32/include/openssl/md2.h new file mode 100644 index 0000000..7faf8e3 --- /dev/null +++ b/openSSL/lin32/include/openssl/md2.h @@ -0,0 +1,44 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD2_H +# define HEADER_MD2_H + +# include + +# ifndef OPENSSL_NO_MD2 +# include +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned char MD2_INT; + +# define MD2_DIGEST_LENGTH 16 +# define MD2_BLOCK 16 + +typedef struct MD2state_st { + unsigned int num; + unsigned char data[MD2_BLOCK]; + MD2_INT cksm[MD2_BLOCK]; + MD2_INT state[MD2_BLOCK]; +} MD2_CTX; + +const char *MD2_options(void); +int MD2_Init(MD2_CTX *c); +int MD2_Update(MD2_CTX *c, const unsigned char *data, size_t len); +int MD2_Final(unsigned char *md, MD2_CTX *c); +unsigned char *MD2(const unsigned char *d, size_t n, unsigned char *md); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/md4.h b/openSSL/lin32/include/openssl/md4.h new file mode 100644 index 0000000..940e29d --- /dev/null +++ b/openSSL/lin32/include/openssl/md4.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD4_H +# define HEADER_MD4_H + +# include + +# ifndef OPENSSL_NO_MD4 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD4_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define MD4_LONG unsigned int + +# define MD4_CBLOCK 64 +# define MD4_LBLOCK (MD4_CBLOCK/4) +# define MD4_DIGEST_LENGTH 16 + +typedef struct MD4state_st { + MD4_LONG A, B, C, D; + MD4_LONG Nl, Nh; + MD4_LONG data[MD4_LBLOCK]; + unsigned int num; +} MD4_CTX; + +int MD4_Init(MD4_CTX *c); +int MD4_Update(MD4_CTX *c, const void *data, size_t len); +int MD4_Final(unsigned char *md, MD4_CTX *c); +unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md); +void MD4_Transform(MD4_CTX *c, const unsigned char *b); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/md5.h b/openSSL/lin32/include/openssl/md5.h new file mode 100644 index 0000000..2deb772 --- /dev/null +++ b/openSSL/lin32/include/openssl/md5.h @@ -0,0 +1,50 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD5_H +# define HEADER_MD5_H + +# include + +# ifndef OPENSSL_NO_MD5 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD5_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define MD5_LONG unsigned int + +# define MD5_CBLOCK 64 +# define MD5_LBLOCK (MD5_CBLOCK/4) +# define MD5_DIGEST_LENGTH 16 + +typedef struct MD5state_st { + MD5_LONG A, B, C, D; + MD5_LONG Nl, Nh; + MD5_LONG data[MD5_LBLOCK]; + unsigned int num; +} MD5_CTX; + +int MD5_Init(MD5_CTX *c); +int MD5_Update(MD5_CTX *c, const void *data, size_t len); +int MD5_Final(unsigned char *md, MD5_CTX *c); +unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md); +void MD5_Transform(MD5_CTX *c, const unsigned char *b); +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/mdc2.h b/openSSL/lin32/include/openssl/mdc2.h new file mode 100644 index 0000000..aabd2bf --- /dev/null +++ b/openSSL/lin32/include/openssl/mdc2.h @@ -0,0 +1,42 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MDC2_H +# define HEADER_MDC2_H + +# include + +#ifndef OPENSSL_NO_MDC2 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define MDC2_BLOCK 8 +# define MDC2_DIGEST_LENGTH 16 + +typedef struct mdc2_ctx_st { + unsigned int num; + unsigned char data[MDC2_BLOCK]; + DES_cblock h, hh; + int pad_type; /* either 1 or 2, default 1 */ +} MDC2_CTX; + +int MDC2_Init(MDC2_CTX *c); +int MDC2_Update(MDC2_CTX *c, const unsigned char *data, size_t len); +int MDC2_Final(unsigned char *md, MDC2_CTX *c); +unsigned char *MDC2(const unsigned char *d, size_t n, unsigned char *md); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/modes.h b/openSSL/lin32/include/openssl/modes.h new file mode 100644 index 0000000..d544f98 --- /dev/null +++ b/openSSL/lin32/include/openssl/modes.h @@ -0,0 +1,208 @@ +/* + * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MODES_H +# define HEADER_MODES_H + +# include + +# ifdef __cplusplus +extern "C" { +# endif +typedef void (*block128_f) (const unsigned char in[16], + unsigned char out[16], const void *key); + +typedef void (*cbc128_f) (const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int enc); + +typedef void (*ctr128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16]); + +typedef void (*ccm128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16], + unsigned char cmac[16]); + +void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); +void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); + +void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], unsigned int *num, + block128_f block); + +void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], + unsigned int *num, ctr128_f ctr); + +void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + block128_f block); + +void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out, + size_t bits, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); + +size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +typedef struct gcm128_context GCM128_CONTEXT; + +GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block); +void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block); +void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv, + size_t len); +int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx); + +typedef struct ccm128_context CCM128_CONTEXT; + +void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx, + unsigned int M, unsigned int L, void *key, + block128_f block); +int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce, + size_t nlen, size_t mlen); +void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad, + size_t alen); +int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len); + +typedef struct xts128_context XTS128_CONTEXT; + +int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, + const unsigned char iv[16], + const unsigned char *inp, unsigned char *out, + size_t len, int enc); + +size_t CRYPTO_128_wrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); + +size_t CRYPTO_128_unwrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); +size_t CRYPTO_128_wrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); +size_t CRYPTO_128_unwrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); + +# ifndef OPENSSL_NO_OCB +typedef struct ocb128_context OCB128_CONTEXT; + +typedef void (*ocb128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + size_t start_block_num, + unsigned char offset_i[16], + const unsigned char L_[][16], + unsigned char checksum[16]); + +OCB128_CONTEXT *CRYPTO_ocb128_new(void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_init(OCB128_CONTEXT *ctx, void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_copy_ctx(OCB128_CONTEXT *dest, OCB128_CONTEXT *src, + void *keyenc, void *keydec); +int CRYPTO_ocb128_setiv(OCB128_CONTEXT *ctx, const unsigned char *iv, + size_t len, size_t taglen); +int CRYPTO_ocb128_aad(OCB128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_ocb128_encrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_decrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_finish(OCB128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +int CRYPTO_ocb128_tag(OCB128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_ocb128_cleanup(OCB128_CONTEXT *ctx); +# endif /* OPENSSL_NO_OCB */ + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/obj_mac.h b/openSSL/lin32/include/openssl/obj_mac.h new file mode 100644 index 0000000..53516a0 --- /dev/null +++ b/openSSL/lin32/include/openssl/obj_mac.h @@ -0,0 +1,5198 @@ +/* + * WARNING: do not edit! + * Generated by crypto/objects/objects.pl + * + * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define SN_undef "UNDEF" +#define LN_undef "undefined" +#define NID_undef 0 +#define OBJ_undef 0L + +#define SN_itu_t "ITU-T" +#define LN_itu_t "itu-t" +#define NID_itu_t 645 +#define OBJ_itu_t 0L + +#define NID_ccitt 404 +#define OBJ_ccitt OBJ_itu_t + +#define SN_iso "ISO" +#define LN_iso "iso" +#define NID_iso 181 +#define OBJ_iso 1L + +#define SN_joint_iso_itu_t "JOINT-ISO-ITU-T" +#define LN_joint_iso_itu_t "joint-iso-itu-t" +#define NID_joint_iso_itu_t 646 +#define OBJ_joint_iso_itu_t 2L + +#define NID_joint_iso_ccitt 393 +#define OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t + +#define SN_member_body "member-body" +#define LN_member_body "ISO Member Body" +#define NID_member_body 182 +#define OBJ_member_body OBJ_iso,2L + +#define SN_identified_organization "identified-organization" +#define NID_identified_organization 676 +#define OBJ_identified_organization OBJ_iso,3L + +#define SN_hmac_md5 "HMAC-MD5" +#define LN_hmac_md5 "hmac-md5" +#define NID_hmac_md5 780 +#define OBJ_hmac_md5 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,1L + +#define SN_hmac_sha1 "HMAC-SHA1" +#define LN_hmac_sha1 "hmac-sha1" +#define NID_hmac_sha1 781 +#define OBJ_hmac_sha1 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,2L + +#define SN_x509ExtAdmission "x509ExtAdmission" +#define LN_x509ExtAdmission "Professional Information or basis for Admission" +#define NID_x509ExtAdmission 1093 +#define OBJ_x509ExtAdmission OBJ_identified_organization,36L,8L,3L,3L + +#define SN_certicom_arc "certicom-arc" +#define NID_certicom_arc 677 +#define OBJ_certicom_arc OBJ_identified_organization,132L + +#define SN_ieee "ieee" +#define NID_ieee 1170 +#define OBJ_ieee OBJ_identified_organization,111L + +#define SN_ieee_siswg "ieee-siswg" +#define LN_ieee_siswg "IEEE Security in Storage Working Group" +#define NID_ieee_siswg 1171 +#define OBJ_ieee_siswg OBJ_ieee,2L,1619L + +#define SN_international_organizations "international-organizations" +#define LN_international_organizations "International Organizations" +#define NID_international_organizations 647 +#define OBJ_international_organizations OBJ_joint_iso_itu_t,23L + +#define SN_wap "wap" +#define NID_wap 678 +#define OBJ_wap OBJ_international_organizations,43L + +#define SN_wap_wsg "wap-wsg" +#define NID_wap_wsg 679 +#define OBJ_wap_wsg OBJ_wap,1L + +#define SN_selected_attribute_types "selected-attribute-types" +#define LN_selected_attribute_types "Selected Attribute Types" +#define NID_selected_attribute_types 394 +#define OBJ_selected_attribute_types OBJ_joint_iso_itu_t,5L,1L,5L + +#define SN_clearance "clearance" +#define NID_clearance 395 +#define OBJ_clearance OBJ_selected_attribute_types,55L + +#define SN_ISO_US "ISO-US" +#define LN_ISO_US "ISO US Member Body" +#define NID_ISO_US 183 +#define OBJ_ISO_US OBJ_member_body,840L + +#define SN_X9_57 "X9-57" +#define LN_X9_57 "X9.57" +#define NID_X9_57 184 +#define OBJ_X9_57 OBJ_ISO_US,10040L + +#define SN_X9cm "X9cm" +#define LN_X9cm "X9.57 CM ?" +#define NID_X9cm 185 +#define OBJ_X9cm OBJ_X9_57,4L + +#define SN_ISO_CN "ISO-CN" +#define LN_ISO_CN "ISO CN Member Body" +#define NID_ISO_CN 1140 +#define OBJ_ISO_CN OBJ_member_body,156L + +#define SN_oscca "oscca" +#define NID_oscca 1141 +#define OBJ_oscca OBJ_ISO_CN,10197L + +#define SN_sm_scheme "sm-scheme" +#define NID_sm_scheme 1142 +#define OBJ_sm_scheme OBJ_oscca,1L + +#define SN_dsa "DSA" +#define LN_dsa "dsaEncryption" +#define NID_dsa 116 +#define OBJ_dsa OBJ_X9cm,1L + +#define SN_dsaWithSHA1 "DSA-SHA1" +#define LN_dsaWithSHA1 "dsaWithSHA1" +#define NID_dsaWithSHA1 113 +#define OBJ_dsaWithSHA1 OBJ_X9cm,3L + +#define SN_ansi_X9_62 "ansi-X9-62" +#define LN_ansi_X9_62 "ANSI X9.62" +#define NID_ansi_X9_62 405 +#define OBJ_ansi_X9_62 OBJ_ISO_US,10045L + +#define OBJ_X9_62_id_fieldType OBJ_ansi_X9_62,1L + +#define SN_X9_62_prime_field "prime-field" +#define NID_X9_62_prime_field 406 +#define OBJ_X9_62_prime_field OBJ_X9_62_id_fieldType,1L + +#define SN_X9_62_characteristic_two_field "characteristic-two-field" +#define NID_X9_62_characteristic_two_field 407 +#define OBJ_X9_62_characteristic_two_field OBJ_X9_62_id_fieldType,2L + +#define SN_X9_62_id_characteristic_two_basis "id-characteristic-two-basis" +#define NID_X9_62_id_characteristic_two_basis 680 +#define OBJ_X9_62_id_characteristic_two_basis OBJ_X9_62_characteristic_two_field,3L + +#define SN_X9_62_onBasis "onBasis" +#define NID_X9_62_onBasis 681 +#define OBJ_X9_62_onBasis OBJ_X9_62_id_characteristic_two_basis,1L + +#define SN_X9_62_tpBasis "tpBasis" +#define NID_X9_62_tpBasis 682 +#define OBJ_X9_62_tpBasis OBJ_X9_62_id_characteristic_two_basis,2L + +#define SN_X9_62_ppBasis "ppBasis" +#define NID_X9_62_ppBasis 683 +#define OBJ_X9_62_ppBasis OBJ_X9_62_id_characteristic_two_basis,3L + +#define OBJ_X9_62_id_publicKeyType OBJ_ansi_X9_62,2L + +#define SN_X9_62_id_ecPublicKey "id-ecPublicKey" +#define NID_X9_62_id_ecPublicKey 408 +#define OBJ_X9_62_id_ecPublicKey OBJ_X9_62_id_publicKeyType,1L + +#define OBJ_X9_62_ellipticCurve OBJ_ansi_X9_62,3L + +#define OBJ_X9_62_c_TwoCurve OBJ_X9_62_ellipticCurve,0L + +#define SN_X9_62_c2pnb163v1 "c2pnb163v1" +#define NID_X9_62_c2pnb163v1 684 +#define OBJ_X9_62_c2pnb163v1 OBJ_X9_62_c_TwoCurve,1L + +#define SN_X9_62_c2pnb163v2 "c2pnb163v2" +#define NID_X9_62_c2pnb163v2 685 +#define OBJ_X9_62_c2pnb163v2 OBJ_X9_62_c_TwoCurve,2L + +#define SN_X9_62_c2pnb163v3 "c2pnb163v3" +#define NID_X9_62_c2pnb163v3 686 +#define OBJ_X9_62_c2pnb163v3 OBJ_X9_62_c_TwoCurve,3L + +#define SN_X9_62_c2pnb176v1 "c2pnb176v1" +#define NID_X9_62_c2pnb176v1 687 +#define OBJ_X9_62_c2pnb176v1 OBJ_X9_62_c_TwoCurve,4L + +#define SN_X9_62_c2tnb191v1 "c2tnb191v1" +#define NID_X9_62_c2tnb191v1 688 +#define OBJ_X9_62_c2tnb191v1 OBJ_X9_62_c_TwoCurve,5L + +#define SN_X9_62_c2tnb191v2 "c2tnb191v2" +#define NID_X9_62_c2tnb191v2 689 +#define OBJ_X9_62_c2tnb191v2 OBJ_X9_62_c_TwoCurve,6L + +#define SN_X9_62_c2tnb191v3 "c2tnb191v3" +#define NID_X9_62_c2tnb191v3 690 +#define OBJ_X9_62_c2tnb191v3 OBJ_X9_62_c_TwoCurve,7L + +#define SN_X9_62_c2onb191v4 "c2onb191v4" +#define NID_X9_62_c2onb191v4 691 +#define OBJ_X9_62_c2onb191v4 OBJ_X9_62_c_TwoCurve,8L + +#define SN_X9_62_c2onb191v5 "c2onb191v5" +#define NID_X9_62_c2onb191v5 692 +#define OBJ_X9_62_c2onb191v5 OBJ_X9_62_c_TwoCurve,9L + +#define SN_X9_62_c2pnb208w1 "c2pnb208w1" +#define NID_X9_62_c2pnb208w1 693 +#define OBJ_X9_62_c2pnb208w1 OBJ_X9_62_c_TwoCurve,10L + +#define SN_X9_62_c2tnb239v1 "c2tnb239v1" +#define NID_X9_62_c2tnb239v1 694 +#define OBJ_X9_62_c2tnb239v1 OBJ_X9_62_c_TwoCurve,11L + +#define SN_X9_62_c2tnb239v2 "c2tnb239v2" +#define NID_X9_62_c2tnb239v2 695 +#define OBJ_X9_62_c2tnb239v2 OBJ_X9_62_c_TwoCurve,12L + +#define SN_X9_62_c2tnb239v3 "c2tnb239v3" +#define NID_X9_62_c2tnb239v3 696 +#define OBJ_X9_62_c2tnb239v3 OBJ_X9_62_c_TwoCurve,13L + +#define SN_X9_62_c2onb239v4 "c2onb239v4" +#define NID_X9_62_c2onb239v4 697 +#define OBJ_X9_62_c2onb239v4 OBJ_X9_62_c_TwoCurve,14L + +#define SN_X9_62_c2onb239v5 "c2onb239v5" +#define NID_X9_62_c2onb239v5 698 +#define OBJ_X9_62_c2onb239v5 OBJ_X9_62_c_TwoCurve,15L + +#define SN_X9_62_c2pnb272w1 "c2pnb272w1" +#define NID_X9_62_c2pnb272w1 699 +#define OBJ_X9_62_c2pnb272w1 OBJ_X9_62_c_TwoCurve,16L + +#define SN_X9_62_c2pnb304w1 "c2pnb304w1" +#define NID_X9_62_c2pnb304w1 700 +#define OBJ_X9_62_c2pnb304w1 OBJ_X9_62_c_TwoCurve,17L + +#define SN_X9_62_c2tnb359v1 "c2tnb359v1" +#define NID_X9_62_c2tnb359v1 701 +#define OBJ_X9_62_c2tnb359v1 OBJ_X9_62_c_TwoCurve,18L + +#define SN_X9_62_c2pnb368w1 "c2pnb368w1" +#define NID_X9_62_c2pnb368w1 702 +#define OBJ_X9_62_c2pnb368w1 OBJ_X9_62_c_TwoCurve,19L + +#define SN_X9_62_c2tnb431r1 "c2tnb431r1" +#define NID_X9_62_c2tnb431r1 703 +#define OBJ_X9_62_c2tnb431r1 OBJ_X9_62_c_TwoCurve,20L + +#define OBJ_X9_62_primeCurve OBJ_X9_62_ellipticCurve,1L + +#define SN_X9_62_prime192v1 "prime192v1" +#define NID_X9_62_prime192v1 409 +#define OBJ_X9_62_prime192v1 OBJ_X9_62_primeCurve,1L + +#define SN_X9_62_prime192v2 "prime192v2" +#define NID_X9_62_prime192v2 410 +#define OBJ_X9_62_prime192v2 OBJ_X9_62_primeCurve,2L + +#define SN_X9_62_prime192v3 "prime192v3" +#define NID_X9_62_prime192v3 411 +#define OBJ_X9_62_prime192v3 OBJ_X9_62_primeCurve,3L + +#define SN_X9_62_prime239v1 "prime239v1" +#define NID_X9_62_prime239v1 412 +#define OBJ_X9_62_prime239v1 OBJ_X9_62_primeCurve,4L + +#define SN_X9_62_prime239v2 "prime239v2" +#define NID_X9_62_prime239v2 413 +#define OBJ_X9_62_prime239v2 OBJ_X9_62_primeCurve,5L + +#define SN_X9_62_prime239v3 "prime239v3" +#define NID_X9_62_prime239v3 414 +#define OBJ_X9_62_prime239v3 OBJ_X9_62_primeCurve,6L + +#define SN_X9_62_prime256v1 "prime256v1" +#define NID_X9_62_prime256v1 415 +#define OBJ_X9_62_prime256v1 OBJ_X9_62_primeCurve,7L + +#define OBJ_X9_62_id_ecSigType OBJ_ansi_X9_62,4L + +#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1" +#define NID_ecdsa_with_SHA1 416 +#define OBJ_ecdsa_with_SHA1 OBJ_X9_62_id_ecSigType,1L + +#define SN_ecdsa_with_Recommended "ecdsa-with-Recommended" +#define NID_ecdsa_with_Recommended 791 +#define OBJ_ecdsa_with_Recommended OBJ_X9_62_id_ecSigType,2L + +#define SN_ecdsa_with_Specified "ecdsa-with-Specified" +#define NID_ecdsa_with_Specified 792 +#define OBJ_ecdsa_with_Specified OBJ_X9_62_id_ecSigType,3L + +#define SN_ecdsa_with_SHA224 "ecdsa-with-SHA224" +#define NID_ecdsa_with_SHA224 793 +#define OBJ_ecdsa_with_SHA224 OBJ_ecdsa_with_Specified,1L + +#define SN_ecdsa_with_SHA256 "ecdsa-with-SHA256" +#define NID_ecdsa_with_SHA256 794 +#define OBJ_ecdsa_with_SHA256 OBJ_ecdsa_with_Specified,2L + +#define SN_ecdsa_with_SHA384 "ecdsa-with-SHA384" +#define NID_ecdsa_with_SHA384 795 +#define OBJ_ecdsa_with_SHA384 OBJ_ecdsa_with_Specified,3L + +#define SN_ecdsa_with_SHA512 "ecdsa-with-SHA512" +#define NID_ecdsa_with_SHA512 796 +#define OBJ_ecdsa_with_SHA512 OBJ_ecdsa_with_Specified,4L + +#define OBJ_secg_ellipticCurve OBJ_certicom_arc,0L + +#define SN_secp112r1 "secp112r1" +#define NID_secp112r1 704 +#define OBJ_secp112r1 OBJ_secg_ellipticCurve,6L + +#define SN_secp112r2 "secp112r2" +#define NID_secp112r2 705 +#define OBJ_secp112r2 OBJ_secg_ellipticCurve,7L + +#define SN_secp128r1 "secp128r1" +#define NID_secp128r1 706 +#define OBJ_secp128r1 OBJ_secg_ellipticCurve,28L + +#define SN_secp128r2 "secp128r2" +#define NID_secp128r2 707 +#define OBJ_secp128r2 OBJ_secg_ellipticCurve,29L + +#define SN_secp160k1 "secp160k1" +#define NID_secp160k1 708 +#define OBJ_secp160k1 OBJ_secg_ellipticCurve,9L + +#define SN_secp160r1 "secp160r1" +#define NID_secp160r1 709 +#define OBJ_secp160r1 OBJ_secg_ellipticCurve,8L + +#define SN_secp160r2 "secp160r2" +#define NID_secp160r2 710 +#define OBJ_secp160r2 OBJ_secg_ellipticCurve,30L + +#define SN_secp192k1 "secp192k1" +#define NID_secp192k1 711 +#define OBJ_secp192k1 OBJ_secg_ellipticCurve,31L + +#define SN_secp224k1 "secp224k1" +#define NID_secp224k1 712 +#define OBJ_secp224k1 OBJ_secg_ellipticCurve,32L + +#define SN_secp224r1 "secp224r1" +#define NID_secp224r1 713 +#define OBJ_secp224r1 OBJ_secg_ellipticCurve,33L + +#define SN_secp256k1 "secp256k1" +#define NID_secp256k1 714 +#define OBJ_secp256k1 OBJ_secg_ellipticCurve,10L + +#define SN_secp384r1 "secp384r1" +#define NID_secp384r1 715 +#define OBJ_secp384r1 OBJ_secg_ellipticCurve,34L + +#define SN_secp521r1 "secp521r1" +#define NID_secp521r1 716 +#define OBJ_secp521r1 OBJ_secg_ellipticCurve,35L + +#define SN_sect113r1 "sect113r1" +#define NID_sect113r1 717 +#define OBJ_sect113r1 OBJ_secg_ellipticCurve,4L + +#define SN_sect113r2 "sect113r2" +#define NID_sect113r2 718 +#define OBJ_sect113r2 OBJ_secg_ellipticCurve,5L + +#define SN_sect131r1 "sect131r1" +#define NID_sect131r1 719 +#define OBJ_sect131r1 OBJ_secg_ellipticCurve,22L + +#define SN_sect131r2 "sect131r2" +#define NID_sect131r2 720 +#define OBJ_sect131r2 OBJ_secg_ellipticCurve,23L + +#define SN_sect163k1 "sect163k1" +#define NID_sect163k1 721 +#define OBJ_sect163k1 OBJ_secg_ellipticCurve,1L + +#define SN_sect163r1 "sect163r1" +#define NID_sect163r1 722 +#define OBJ_sect163r1 OBJ_secg_ellipticCurve,2L + +#define SN_sect163r2 "sect163r2" +#define NID_sect163r2 723 +#define OBJ_sect163r2 OBJ_secg_ellipticCurve,15L + +#define SN_sect193r1 "sect193r1" +#define NID_sect193r1 724 +#define OBJ_sect193r1 OBJ_secg_ellipticCurve,24L + +#define SN_sect193r2 "sect193r2" +#define NID_sect193r2 725 +#define OBJ_sect193r2 OBJ_secg_ellipticCurve,25L + +#define SN_sect233k1 "sect233k1" +#define NID_sect233k1 726 +#define OBJ_sect233k1 OBJ_secg_ellipticCurve,26L + +#define SN_sect233r1 "sect233r1" +#define NID_sect233r1 727 +#define OBJ_sect233r1 OBJ_secg_ellipticCurve,27L + +#define SN_sect239k1 "sect239k1" +#define NID_sect239k1 728 +#define OBJ_sect239k1 OBJ_secg_ellipticCurve,3L + +#define SN_sect283k1 "sect283k1" +#define NID_sect283k1 729 +#define OBJ_sect283k1 OBJ_secg_ellipticCurve,16L + +#define SN_sect283r1 "sect283r1" +#define NID_sect283r1 730 +#define OBJ_sect283r1 OBJ_secg_ellipticCurve,17L + +#define SN_sect409k1 "sect409k1" +#define NID_sect409k1 731 +#define OBJ_sect409k1 OBJ_secg_ellipticCurve,36L + +#define SN_sect409r1 "sect409r1" +#define NID_sect409r1 732 +#define OBJ_sect409r1 OBJ_secg_ellipticCurve,37L + +#define SN_sect571k1 "sect571k1" +#define NID_sect571k1 733 +#define OBJ_sect571k1 OBJ_secg_ellipticCurve,38L + +#define SN_sect571r1 "sect571r1" +#define NID_sect571r1 734 +#define OBJ_sect571r1 OBJ_secg_ellipticCurve,39L + +#define OBJ_wap_wsg_idm_ecid OBJ_wap_wsg,4L + +#define SN_wap_wsg_idm_ecid_wtls1 "wap-wsg-idm-ecid-wtls1" +#define NID_wap_wsg_idm_ecid_wtls1 735 +#define OBJ_wap_wsg_idm_ecid_wtls1 OBJ_wap_wsg_idm_ecid,1L + +#define SN_wap_wsg_idm_ecid_wtls3 "wap-wsg-idm-ecid-wtls3" +#define NID_wap_wsg_idm_ecid_wtls3 736 +#define OBJ_wap_wsg_idm_ecid_wtls3 OBJ_wap_wsg_idm_ecid,3L + +#define SN_wap_wsg_idm_ecid_wtls4 "wap-wsg-idm-ecid-wtls4" +#define NID_wap_wsg_idm_ecid_wtls4 737 +#define OBJ_wap_wsg_idm_ecid_wtls4 OBJ_wap_wsg_idm_ecid,4L + +#define SN_wap_wsg_idm_ecid_wtls5 "wap-wsg-idm-ecid-wtls5" +#define NID_wap_wsg_idm_ecid_wtls5 738 +#define OBJ_wap_wsg_idm_ecid_wtls5 OBJ_wap_wsg_idm_ecid,5L + +#define SN_wap_wsg_idm_ecid_wtls6 "wap-wsg-idm-ecid-wtls6" +#define NID_wap_wsg_idm_ecid_wtls6 739 +#define OBJ_wap_wsg_idm_ecid_wtls6 OBJ_wap_wsg_idm_ecid,6L + +#define SN_wap_wsg_idm_ecid_wtls7 "wap-wsg-idm-ecid-wtls7" +#define NID_wap_wsg_idm_ecid_wtls7 740 +#define OBJ_wap_wsg_idm_ecid_wtls7 OBJ_wap_wsg_idm_ecid,7L + +#define SN_wap_wsg_idm_ecid_wtls8 "wap-wsg-idm-ecid-wtls8" +#define NID_wap_wsg_idm_ecid_wtls8 741 +#define OBJ_wap_wsg_idm_ecid_wtls8 OBJ_wap_wsg_idm_ecid,8L + +#define SN_wap_wsg_idm_ecid_wtls9 "wap-wsg-idm-ecid-wtls9" +#define NID_wap_wsg_idm_ecid_wtls9 742 +#define OBJ_wap_wsg_idm_ecid_wtls9 OBJ_wap_wsg_idm_ecid,9L + +#define SN_wap_wsg_idm_ecid_wtls10 "wap-wsg-idm-ecid-wtls10" +#define NID_wap_wsg_idm_ecid_wtls10 743 +#define OBJ_wap_wsg_idm_ecid_wtls10 OBJ_wap_wsg_idm_ecid,10L + +#define SN_wap_wsg_idm_ecid_wtls11 "wap-wsg-idm-ecid-wtls11" +#define NID_wap_wsg_idm_ecid_wtls11 744 +#define OBJ_wap_wsg_idm_ecid_wtls11 OBJ_wap_wsg_idm_ecid,11L + +#define SN_wap_wsg_idm_ecid_wtls12 "wap-wsg-idm-ecid-wtls12" +#define NID_wap_wsg_idm_ecid_wtls12 745 +#define OBJ_wap_wsg_idm_ecid_wtls12 OBJ_wap_wsg_idm_ecid,12L + +#define SN_cast5_cbc "CAST5-CBC" +#define LN_cast5_cbc "cast5-cbc" +#define NID_cast5_cbc 108 +#define OBJ_cast5_cbc OBJ_ISO_US,113533L,7L,66L,10L + +#define SN_cast5_ecb "CAST5-ECB" +#define LN_cast5_ecb "cast5-ecb" +#define NID_cast5_ecb 109 + +#define SN_cast5_cfb64 "CAST5-CFB" +#define LN_cast5_cfb64 "cast5-cfb" +#define NID_cast5_cfb64 110 + +#define SN_cast5_ofb64 "CAST5-OFB" +#define LN_cast5_ofb64 "cast5-ofb" +#define NID_cast5_ofb64 111 + +#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" +#define NID_pbeWithMD5AndCast5_CBC 112 +#define OBJ_pbeWithMD5AndCast5_CBC OBJ_ISO_US,113533L,7L,66L,12L + +#define SN_id_PasswordBasedMAC "id-PasswordBasedMAC" +#define LN_id_PasswordBasedMAC "password based MAC" +#define NID_id_PasswordBasedMAC 782 +#define OBJ_id_PasswordBasedMAC OBJ_ISO_US,113533L,7L,66L,13L + +#define SN_id_DHBasedMac "id-DHBasedMac" +#define LN_id_DHBasedMac "Diffie-Hellman based MAC" +#define NID_id_DHBasedMac 783 +#define OBJ_id_DHBasedMac OBJ_ISO_US,113533L,7L,66L,30L + +#define SN_rsadsi "rsadsi" +#define LN_rsadsi "RSA Data Security, Inc." +#define NID_rsadsi 1 +#define OBJ_rsadsi OBJ_ISO_US,113549L + +#define SN_pkcs "pkcs" +#define LN_pkcs "RSA Data Security, Inc. PKCS" +#define NID_pkcs 2 +#define OBJ_pkcs OBJ_rsadsi,1L + +#define SN_pkcs1 "pkcs1" +#define NID_pkcs1 186 +#define OBJ_pkcs1 OBJ_pkcs,1L + +#define LN_rsaEncryption "rsaEncryption" +#define NID_rsaEncryption 6 +#define OBJ_rsaEncryption OBJ_pkcs1,1L + +#define SN_md2WithRSAEncryption "RSA-MD2" +#define LN_md2WithRSAEncryption "md2WithRSAEncryption" +#define NID_md2WithRSAEncryption 7 +#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L + +#define SN_md4WithRSAEncryption "RSA-MD4" +#define LN_md4WithRSAEncryption "md4WithRSAEncryption" +#define NID_md4WithRSAEncryption 396 +#define OBJ_md4WithRSAEncryption OBJ_pkcs1,3L + +#define SN_md5WithRSAEncryption "RSA-MD5" +#define LN_md5WithRSAEncryption "md5WithRSAEncryption" +#define NID_md5WithRSAEncryption 8 +#define OBJ_md5WithRSAEncryption OBJ_pkcs1,4L + +#define SN_sha1WithRSAEncryption "RSA-SHA1" +#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" +#define NID_sha1WithRSAEncryption 65 +#define OBJ_sha1WithRSAEncryption OBJ_pkcs1,5L + +#define SN_rsaesOaep "RSAES-OAEP" +#define LN_rsaesOaep "rsaesOaep" +#define NID_rsaesOaep 919 +#define OBJ_rsaesOaep OBJ_pkcs1,7L + +#define SN_mgf1 "MGF1" +#define LN_mgf1 "mgf1" +#define NID_mgf1 911 +#define OBJ_mgf1 OBJ_pkcs1,8L + +#define SN_pSpecified "PSPECIFIED" +#define LN_pSpecified "pSpecified" +#define NID_pSpecified 935 +#define OBJ_pSpecified OBJ_pkcs1,9L + +#define SN_rsassaPss "RSASSA-PSS" +#define LN_rsassaPss "rsassaPss" +#define NID_rsassaPss 912 +#define OBJ_rsassaPss OBJ_pkcs1,10L + +#define SN_sha256WithRSAEncryption "RSA-SHA256" +#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption" +#define NID_sha256WithRSAEncryption 668 +#define OBJ_sha256WithRSAEncryption OBJ_pkcs1,11L + +#define SN_sha384WithRSAEncryption "RSA-SHA384" +#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption" +#define NID_sha384WithRSAEncryption 669 +#define OBJ_sha384WithRSAEncryption OBJ_pkcs1,12L + +#define SN_sha512WithRSAEncryption "RSA-SHA512" +#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption" +#define NID_sha512WithRSAEncryption 670 +#define OBJ_sha512WithRSAEncryption OBJ_pkcs1,13L + +#define SN_sha224WithRSAEncryption "RSA-SHA224" +#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption" +#define NID_sha224WithRSAEncryption 671 +#define OBJ_sha224WithRSAEncryption OBJ_pkcs1,14L + +#define SN_sha512_224WithRSAEncryption "RSA-SHA512/224" +#define LN_sha512_224WithRSAEncryption "sha512-224WithRSAEncryption" +#define NID_sha512_224WithRSAEncryption 1145 +#define OBJ_sha512_224WithRSAEncryption OBJ_pkcs1,15L + +#define SN_sha512_256WithRSAEncryption "RSA-SHA512/256" +#define LN_sha512_256WithRSAEncryption "sha512-256WithRSAEncryption" +#define NID_sha512_256WithRSAEncryption 1146 +#define OBJ_sha512_256WithRSAEncryption OBJ_pkcs1,16L + +#define SN_pkcs3 "pkcs3" +#define NID_pkcs3 27 +#define OBJ_pkcs3 OBJ_pkcs,3L + +#define LN_dhKeyAgreement "dhKeyAgreement" +#define NID_dhKeyAgreement 28 +#define OBJ_dhKeyAgreement OBJ_pkcs3,1L + +#define SN_pkcs5 "pkcs5" +#define NID_pkcs5 187 +#define OBJ_pkcs5 OBJ_pkcs,5L + +#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" +#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" +#define NID_pbeWithMD2AndDES_CBC 9 +#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs5,1L + +#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" +#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" +#define NID_pbeWithMD5AndDES_CBC 10 +#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs5,3L + +#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" +#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" +#define NID_pbeWithMD2AndRC2_CBC 168 +#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs5,4L + +#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" +#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" +#define NID_pbeWithMD5AndRC2_CBC 169 +#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs5,6L + +#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" +#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" +#define NID_pbeWithSHA1AndDES_CBC 170 +#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs5,10L + +#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" +#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" +#define NID_pbeWithSHA1AndRC2_CBC 68 +#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs5,11L + +#define LN_id_pbkdf2 "PBKDF2" +#define NID_id_pbkdf2 69 +#define OBJ_id_pbkdf2 OBJ_pkcs5,12L + +#define LN_pbes2 "PBES2" +#define NID_pbes2 161 +#define OBJ_pbes2 OBJ_pkcs5,13L + +#define LN_pbmac1 "PBMAC1" +#define NID_pbmac1 162 +#define OBJ_pbmac1 OBJ_pkcs5,14L + +#define SN_pkcs7 "pkcs7" +#define NID_pkcs7 20 +#define OBJ_pkcs7 OBJ_pkcs,7L + +#define LN_pkcs7_data "pkcs7-data" +#define NID_pkcs7_data 21 +#define OBJ_pkcs7_data OBJ_pkcs7,1L + +#define LN_pkcs7_signed "pkcs7-signedData" +#define NID_pkcs7_signed 22 +#define OBJ_pkcs7_signed OBJ_pkcs7,2L + +#define LN_pkcs7_enveloped "pkcs7-envelopedData" +#define NID_pkcs7_enveloped 23 +#define OBJ_pkcs7_enveloped OBJ_pkcs7,3L + +#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" +#define NID_pkcs7_signedAndEnveloped 24 +#define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L + +#define LN_pkcs7_digest "pkcs7-digestData" +#define NID_pkcs7_digest 25 +#define OBJ_pkcs7_digest OBJ_pkcs7,5L + +#define LN_pkcs7_encrypted "pkcs7-encryptedData" +#define NID_pkcs7_encrypted 26 +#define OBJ_pkcs7_encrypted OBJ_pkcs7,6L + +#define SN_pkcs9 "pkcs9" +#define NID_pkcs9 47 +#define OBJ_pkcs9 OBJ_pkcs,9L + +#define LN_pkcs9_emailAddress "emailAddress" +#define NID_pkcs9_emailAddress 48 +#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L + +#define LN_pkcs9_unstructuredName "unstructuredName" +#define NID_pkcs9_unstructuredName 49 +#define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L + +#define LN_pkcs9_contentType "contentType" +#define NID_pkcs9_contentType 50 +#define OBJ_pkcs9_contentType OBJ_pkcs9,3L + +#define LN_pkcs9_messageDigest "messageDigest" +#define NID_pkcs9_messageDigest 51 +#define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L + +#define LN_pkcs9_signingTime "signingTime" +#define NID_pkcs9_signingTime 52 +#define OBJ_pkcs9_signingTime OBJ_pkcs9,5L + +#define LN_pkcs9_countersignature "countersignature" +#define NID_pkcs9_countersignature 53 +#define OBJ_pkcs9_countersignature OBJ_pkcs9,6L + +#define LN_pkcs9_challengePassword "challengePassword" +#define NID_pkcs9_challengePassword 54 +#define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L + +#define LN_pkcs9_unstructuredAddress "unstructuredAddress" +#define NID_pkcs9_unstructuredAddress 55 +#define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L + +#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" +#define NID_pkcs9_extCertAttributes 56 +#define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L + +#define SN_ext_req "extReq" +#define LN_ext_req "Extension Request" +#define NID_ext_req 172 +#define OBJ_ext_req OBJ_pkcs9,14L + +#define SN_SMIMECapabilities "SMIME-CAPS" +#define LN_SMIMECapabilities "S/MIME Capabilities" +#define NID_SMIMECapabilities 167 +#define OBJ_SMIMECapabilities OBJ_pkcs9,15L + +#define SN_SMIME "SMIME" +#define LN_SMIME "S/MIME" +#define NID_SMIME 188 +#define OBJ_SMIME OBJ_pkcs9,16L + +#define SN_id_smime_mod "id-smime-mod" +#define NID_id_smime_mod 189 +#define OBJ_id_smime_mod OBJ_SMIME,0L + +#define SN_id_smime_ct "id-smime-ct" +#define NID_id_smime_ct 190 +#define OBJ_id_smime_ct OBJ_SMIME,1L + +#define SN_id_smime_aa "id-smime-aa" +#define NID_id_smime_aa 191 +#define OBJ_id_smime_aa OBJ_SMIME,2L + +#define SN_id_smime_alg "id-smime-alg" +#define NID_id_smime_alg 192 +#define OBJ_id_smime_alg OBJ_SMIME,3L + +#define SN_id_smime_cd "id-smime-cd" +#define NID_id_smime_cd 193 +#define OBJ_id_smime_cd OBJ_SMIME,4L + +#define SN_id_smime_spq "id-smime-spq" +#define NID_id_smime_spq 194 +#define OBJ_id_smime_spq OBJ_SMIME,5L + +#define SN_id_smime_cti "id-smime-cti" +#define NID_id_smime_cti 195 +#define OBJ_id_smime_cti OBJ_SMIME,6L + +#define SN_id_smime_mod_cms "id-smime-mod-cms" +#define NID_id_smime_mod_cms 196 +#define OBJ_id_smime_mod_cms OBJ_id_smime_mod,1L + +#define SN_id_smime_mod_ess "id-smime-mod-ess" +#define NID_id_smime_mod_ess 197 +#define OBJ_id_smime_mod_ess OBJ_id_smime_mod,2L + +#define SN_id_smime_mod_oid "id-smime-mod-oid" +#define NID_id_smime_mod_oid 198 +#define OBJ_id_smime_mod_oid OBJ_id_smime_mod,3L + +#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3" +#define NID_id_smime_mod_msg_v3 199 +#define OBJ_id_smime_mod_msg_v3 OBJ_id_smime_mod,4L + +#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88" +#define NID_id_smime_mod_ets_eSignature_88 200 +#define OBJ_id_smime_mod_ets_eSignature_88 OBJ_id_smime_mod,5L + +#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97" +#define NID_id_smime_mod_ets_eSignature_97 201 +#define OBJ_id_smime_mod_ets_eSignature_97 OBJ_id_smime_mod,6L + +#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88" +#define NID_id_smime_mod_ets_eSigPolicy_88 202 +#define OBJ_id_smime_mod_ets_eSigPolicy_88 OBJ_id_smime_mod,7L + +#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97" +#define NID_id_smime_mod_ets_eSigPolicy_97 203 +#define OBJ_id_smime_mod_ets_eSigPolicy_97 OBJ_id_smime_mod,8L + +#define SN_id_smime_ct_receipt "id-smime-ct-receipt" +#define NID_id_smime_ct_receipt 204 +#define OBJ_id_smime_ct_receipt OBJ_id_smime_ct,1L + +#define SN_id_smime_ct_authData "id-smime-ct-authData" +#define NID_id_smime_ct_authData 205 +#define OBJ_id_smime_ct_authData OBJ_id_smime_ct,2L + +#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert" +#define NID_id_smime_ct_publishCert 206 +#define OBJ_id_smime_ct_publishCert OBJ_id_smime_ct,3L + +#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo" +#define NID_id_smime_ct_TSTInfo 207 +#define OBJ_id_smime_ct_TSTInfo OBJ_id_smime_ct,4L + +#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo" +#define NID_id_smime_ct_TDTInfo 208 +#define OBJ_id_smime_ct_TDTInfo OBJ_id_smime_ct,5L + +#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo" +#define NID_id_smime_ct_contentInfo 209 +#define OBJ_id_smime_ct_contentInfo OBJ_id_smime_ct,6L + +#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData" +#define NID_id_smime_ct_DVCSRequestData 210 +#define OBJ_id_smime_ct_DVCSRequestData OBJ_id_smime_ct,7L + +#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData" +#define NID_id_smime_ct_DVCSResponseData 211 +#define OBJ_id_smime_ct_DVCSResponseData OBJ_id_smime_ct,8L + +#define SN_id_smime_ct_compressedData "id-smime-ct-compressedData" +#define NID_id_smime_ct_compressedData 786 +#define OBJ_id_smime_ct_compressedData OBJ_id_smime_ct,9L + +#define SN_id_smime_ct_contentCollection "id-smime-ct-contentCollection" +#define NID_id_smime_ct_contentCollection 1058 +#define OBJ_id_smime_ct_contentCollection OBJ_id_smime_ct,19L + +#define SN_id_smime_ct_authEnvelopedData "id-smime-ct-authEnvelopedData" +#define NID_id_smime_ct_authEnvelopedData 1059 +#define OBJ_id_smime_ct_authEnvelopedData OBJ_id_smime_ct,23L + +#define SN_id_ct_asciiTextWithCRLF "id-ct-asciiTextWithCRLF" +#define NID_id_ct_asciiTextWithCRLF 787 +#define OBJ_id_ct_asciiTextWithCRLF OBJ_id_smime_ct,27L + +#define SN_id_ct_xml "id-ct-xml" +#define NID_id_ct_xml 1060 +#define OBJ_id_ct_xml OBJ_id_smime_ct,28L + +#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" +#define NID_id_smime_aa_receiptRequest 212 +#define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L + +#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel" +#define NID_id_smime_aa_securityLabel 213 +#define OBJ_id_smime_aa_securityLabel OBJ_id_smime_aa,2L + +#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory" +#define NID_id_smime_aa_mlExpandHistory 214 +#define OBJ_id_smime_aa_mlExpandHistory OBJ_id_smime_aa,3L + +#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint" +#define NID_id_smime_aa_contentHint 215 +#define OBJ_id_smime_aa_contentHint OBJ_id_smime_aa,4L + +#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest" +#define NID_id_smime_aa_msgSigDigest 216 +#define OBJ_id_smime_aa_msgSigDigest OBJ_id_smime_aa,5L + +#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType" +#define NID_id_smime_aa_encapContentType 217 +#define OBJ_id_smime_aa_encapContentType OBJ_id_smime_aa,6L + +#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier" +#define NID_id_smime_aa_contentIdentifier 218 +#define OBJ_id_smime_aa_contentIdentifier OBJ_id_smime_aa,7L + +#define SN_id_smime_aa_macValue "id-smime-aa-macValue" +#define NID_id_smime_aa_macValue 219 +#define OBJ_id_smime_aa_macValue OBJ_id_smime_aa,8L + +#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels" +#define NID_id_smime_aa_equivalentLabels 220 +#define OBJ_id_smime_aa_equivalentLabels OBJ_id_smime_aa,9L + +#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference" +#define NID_id_smime_aa_contentReference 221 +#define OBJ_id_smime_aa_contentReference OBJ_id_smime_aa,10L + +#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref" +#define NID_id_smime_aa_encrypKeyPref 222 +#define OBJ_id_smime_aa_encrypKeyPref OBJ_id_smime_aa,11L + +#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate" +#define NID_id_smime_aa_signingCertificate 223 +#define OBJ_id_smime_aa_signingCertificate OBJ_id_smime_aa,12L + +#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts" +#define NID_id_smime_aa_smimeEncryptCerts 224 +#define OBJ_id_smime_aa_smimeEncryptCerts OBJ_id_smime_aa,13L + +#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken" +#define NID_id_smime_aa_timeStampToken 225 +#define OBJ_id_smime_aa_timeStampToken OBJ_id_smime_aa,14L + +#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId" +#define NID_id_smime_aa_ets_sigPolicyId 226 +#define OBJ_id_smime_aa_ets_sigPolicyId OBJ_id_smime_aa,15L + +#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType" +#define NID_id_smime_aa_ets_commitmentType 227 +#define OBJ_id_smime_aa_ets_commitmentType OBJ_id_smime_aa,16L + +#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation" +#define NID_id_smime_aa_ets_signerLocation 228 +#define OBJ_id_smime_aa_ets_signerLocation OBJ_id_smime_aa,17L + +#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr" +#define NID_id_smime_aa_ets_signerAttr 229 +#define OBJ_id_smime_aa_ets_signerAttr OBJ_id_smime_aa,18L + +#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert" +#define NID_id_smime_aa_ets_otherSigCert 230 +#define OBJ_id_smime_aa_ets_otherSigCert OBJ_id_smime_aa,19L + +#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp" +#define NID_id_smime_aa_ets_contentTimestamp 231 +#define OBJ_id_smime_aa_ets_contentTimestamp OBJ_id_smime_aa,20L + +#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs" +#define NID_id_smime_aa_ets_CertificateRefs 232 +#define OBJ_id_smime_aa_ets_CertificateRefs OBJ_id_smime_aa,21L + +#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs" +#define NID_id_smime_aa_ets_RevocationRefs 233 +#define OBJ_id_smime_aa_ets_RevocationRefs OBJ_id_smime_aa,22L + +#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues" +#define NID_id_smime_aa_ets_certValues 234 +#define OBJ_id_smime_aa_ets_certValues OBJ_id_smime_aa,23L + +#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues" +#define NID_id_smime_aa_ets_revocationValues 235 +#define OBJ_id_smime_aa_ets_revocationValues OBJ_id_smime_aa,24L + +#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp" +#define NID_id_smime_aa_ets_escTimeStamp 236 +#define OBJ_id_smime_aa_ets_escTimeStamp OBJ_id_smime_aa,25L + +#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp" +#define NID_id_smime_aa_ets_certCRLTimestamp 237 +#define OBJ_id_smime_aa_ets_certCRLTimestamp OBJ_id_smime_aa,26L + +#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp" +#define NID_id_smime_aa_ets_archiveTimeStamp 238 +#define OBJ_id_smime_aa_ets_archiveTimeStamp OBJ_id_smime_aa,27L + +#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType" +#define NID_id_smime_aa_signatureType 239 +#define OBJ_id_smime_aa_signatureType OBJ_id_smime_aa,28L + +#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc" +#define NID_id_smime_aa_dvcs_dvc 240 +#define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L + +#define SN_id_smime_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" +#define NID_id_smime_aa_signingCertificateV2 1086 +#define OBJ_id_smime_aa_signingCertificateV2 OBJ_id_smime_aa,47L + +#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" +#define NID_id_smime_alg_ESDHwith3DES 241 +#define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L + +#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2" +#define NID_id_smime_alg_ESDHwithRC2 242 +#define OBJ_id_smime_alg_ESDHwithRC2 OBJ_id_smime_alg,2L + +#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap" +#define NID_id_smime_alg_3DESwrap 243 +#define OBJ_id_smime_alg_3DESwrap OBJ_id_smime_alg,3L + +#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap" +#define NID_id_smime_alg_RC2wrap 244 +#define OBJ_id_smime_alg_RC2wrap OBJ_id_smime_alg,4L + +#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH" +#define NID_id_smime_alg_ESDH 245 +#define OBJ_id_smime_alg_ESDH OBJ_id_smime_alg,5L + +#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap" +#define NID_id_smime_alg_CMS3DESwrap 246 +#define OBJ_id_smime_alg_CMS3DESwrap OBJ_id_smime_alg,6L + +#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap" +#define NID_id_smime_alg_CMSRC2wrap 247 +#define OBJ_id_smime_alg_CMSRC2wrap OBJ_id_smime_alg,7L + +#define SN_id_alg_PWRI_KEK "id-alg-PWRI-KEK" +#define NID_id_alg_PWRI_KEK 893 +#define OBJ_id_alg_PWRI_KEK OBJ_id_smime_alg,9L + +#define SN_id_smime_cd_ldap "id-smime-cd-ldap" +#define NID_id_smime_cd_ldap 248 +#define OBJ_id_smime_cd_ldap OBJ_id_smime_cd,1L + +#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri" +#define NID_id_smime_spq_ets_sqt_uri 249 +#define OBJ_id_smime_spq_ets_sqt_uri OBJ_id_smime_spq,1L + +#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice" +#define NID_id_smime_spq_ets_sqt_unotice 250 +#define OBJ_id_smime_spq_ets_sqt_unotice OBJ_id_smime_spq,2L + +#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin" +#define NID_id_smime_cti_ets_proofOfOrigin 251 +#define OBJ_id_smime_cti_ets_proofOfOrigin OBJ_id_smime_cti,1L + +#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt" +#define NID_id_smime_cti_ets_proofOfReceipt 252 +#define OBJ_id_smime_cti_ets_proofOfReceipt OBJ_id_smime_cti,2L + +#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery" +#define NID_id_smime_cti_ets_proofOfDelivery 253 +#define OBJ_id_smime_cti_ets_proofOfDelivery OBJ_id_smime_cti,3L + +#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender" +#define NID_id_smime_cti_ets_proofOfSender 254 +#define OBJ_id_smime_cti_ets_proofOfSender OBJ_id_smime_cti,4L + +#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval" +#define NID_id_smime_cti_ets_proofOfApproval 255 +#define OBJ_id_smime_cti_ets_proofOfApproval OBJ_id_smime_cti,5L + +#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation" +#define NID_id_smime_cti_ets_proofOfCreation 256 +#define OBJ_id_smime_cti_ets_proofOfCreation OBJ_id_smime_cti,6L + +#define LN_friendlyName "friendlyName" +#define NID_friendlyName 156 +#define OBJ_friendlyName OBJ_pkcs9,20L + +#define LN_localKeyID "localKeyID" +#define NID_localKeyID 157 +#define OBJ_localKeyID OBJ_pkcs9,21L + +#define SN_ms_csp_name "CSPName" +#define LN_ms_csp_name "Microsoft CSP Name" +#define NID_ms_csp_name 417 +#define OBJ_ms_csp_name 1L,3L,6L,1L,4L,1L,311L,17L,1L + +#define SN_LocalKeySet "LocalKeySet" +#define LN_LocalKeySet "Microsoft Local Key set" +#define NID_LocalKeySet 856 +#define OBJ_LocalKeySet 1L,3L,6L,1L,4L,1L,311L,17L,2L + +#define OBJ_certTypes OBJ_pkcs9,22L + +#define LN_x509Certificate "x509Certificate" +#define NID_x509Certificate 158 +#define OBJ_x509Certificate OBJ_certTypes,1L + +#define LN_sdsiCertificate "sdsiCertificate" +#define NID_sdsiCertificate 159 +#define OBJ_sdsiCertificate OBJ_certTypes,2L + +#define OBJ_crlTypes OBJ_pkcs9,23L + +#define LN_x509Crl "x509Crl" +#define NID_x509Crl 160 +#define OBJ_x509Crl OBJ_crlTypes,1L + +#define OBJ_pkcs12 OBJ_pkcs,12L + +#define OBJ_pkcs12_pbeids OBJ_pkcs12,1L + +#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" +#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" +#define NID_pbe_WithSHA1And128BitRC4 144 +#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids,1L + +#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" +#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" +#define NID_pbe_WithSHA1And40BitRC4 145 +#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids,2L + +#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" +#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 +#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids,3L + +#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" +#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 +#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids,4L + +#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" +#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" +#define NID_pbe_WithSHA1And128BitRC2_CBC 148 +#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids,5L + +#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" +#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" +#define NID_pbe_WithSHA1And40BitRC2_CBC 149 +#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids,6L + +#define OBJ_pkcs12_Version1 OBJ_pkcs12,10L + +#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1,1L + +#define LN_keyBag "keyBag" +#define NID_keyBag 150 +#define OBJ_keyBag OBJ_pkcs12_BagIds,1L + +#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" +#define NID_pkcs8ShroudedKeyBag 151 +#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds,2L + +#define LN_certBag "certBag" +#define NID_certBag 152 +#define OBJ_certBag OBJ_pkcs12_BagIds,3L + +#define LN_crlBag "crlBag" +#define NID_crlBag 153 +#define OBJ_crlBag OBJ_pkcs12_BagIds,4L + +#define LN_secretBag "secretBag" +#define NID_secretBag 154 +#define OBJ_secretBag OBJ_pkcs12_BagIds,5L + +#define LN_safeContentsBag "safeContentsBag" +#define NID_safeContentsBag 155 +#define OBJ_safeContentsBag OBJ_pkcs12_BagIds,6L + +#define SN_md2 "MD2" +#define LN_md2 "md2" +#define NID_md2 3 +#define OBJ_md2 OBJ_rsadsi,2L,2L + +#define SN_md4 "MD4" +#define LN_md4 "md4" +#define NID_md4 257 +#define OBJ_md4 OBJ_rsadsi,2L,4L + +#define SN_md5 "MD5" +#define LN_md5 "md5" +#define NID_md5 4 +#define OBJ_md5 OBJ_rsadsi,2L,5L + +#define SN_md5_sha1 "MD5-SHA1" +#define LN_md5_sha1 "md5-sha1" +#define NID_md5_sha1 114 + +#define LN_hmacWithMD5 "hmacWithMD5" +#define NID_hmacWithMD5 797 +#define OBJ_hmacWithMD5 OBJ_rsadsi,2L,6L + +#define LN_hmacWithSHA1 "hmacWithSHA1" +#define NID_hmacWithSHA1 163 +#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L + +#define SN_sm2 "SM2" +#define LN_sm2 "sm2" +#define NID_sm2 1172 +#define OBJ_sm2 OBJ_sm_scheme,301L + +#define SN_sm3 "SM3" +#define LN_sm3 "sm3" +#define NID_sm3 1143 +#define OBJ_sm3 OBJ_sm_scheme,401L + +#define SN_sm3WithRSAEncryption "RSA-SM3" +#define LN_sm3WithRSAEncryption "sm3WithRSAEncryption" +#define NID_sm3WithRSAEncryption 1144 +#define OBJ_sm3WithRSAEncryption OBJ_sm_scheme,504L + +#define LN_hmacWithSHA224 "hmacWithSHA224" +#define NID_hmacWithSHA224 798 +#define OBJ_hmacWithSHA224 OBJ_rsadsi,2L,8L + +#define LN_hmacWithSHA256 "hmacWithSHA256" +#define NID_hmacWithSHA256 799 +#define OBJ_hmacWithSHA256 OBJ_rsadsi,2L,9L + +#define LN_hmacWithSHA384 "hmacWithSHA384" +#define NID_hmacWithSHA384 800 +#define OBJ_hmacWithSHA384 OBJ_rsadsi,2L,10L + +#define LN_hmacWithSHA512 "hmacWithSHA512" +#define NID_hmacWithSHA512 801 +#define OBJ_hmacWithSHA512 OBJ_rsadsi,2L,11L + +#define LN_hmacWithSHA512_224 "hmacWithSHA512-224" +#define NID_hmacWithSHA512_224 1193 +#define OBJ_hmacWithSHA512_224 OBJ_rsadsi,2L,12L + +#define LN_hmacWithSHA512_256 "hmacWithSHA512-256" +#define NID_hmacWithSHA512_256 1194 +#define OBJ_hmacWithSHA512_256 OBJ_rsadsi,2L,13L + +#define SN_rc2_cbc "RC2-CBC" +#define LN_rc2_cbc "rc2-cbc" +#define NID_rc2_cbc 37 +#define OBJ_rc2_cbc OBJ_rsadsi,3L,2L + +#define SN_rc2_ecb "RC2-ECB" +#define LN_rc2_ecb "rc2-ecb" +#define NID_rc2_ecb 38 + +#define SN_rc2_cfb64 "RC2-CFB" +#define LN_rc2_cfb64 "rc2-cfb" +#define NID_rc2_cfb64 39 + +#define SN_rc2_ofb64 "RC2-OFB" +#define LN_rc2_ofb64 "rc2-ofb" +#define NID_rc2_ofb64 40 + +#define SN_rc2_40_cbc "RC2-40-CBC" +#define LN_rc2_40_cbc "rc2-40-cbc" +#define NID_rc2_40_cbc 98 + +#define SN_rc2_64_cbc "RC2-64-CBC" +#define LN_rc2_64_cbc "rc2-64-cbc" +#define NID_rc2_64_cbc 166 + +#define SN_rc4 "RC4" +#define LN_rc4 "rc4" +#define NID_rc4 5 +#define OBJ_rc4 OBJ_rsadsi,3L,4L + +#define SN_rc4_40 "RC4-40" +#define LN_rc4_40 "rc4-40" +#define NID_rc4_40 97 + +#define SN_des_ede3_cbc "DES-EDE3-CBC" +#define LN_des_ede3_cbc "des-ede3-cbc" +#define NID_des_ede3_cbc 44 +#define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L + +#define SN_rc5_cbc "RC5-CBC" +#define LN_rc5_cbc "rc5-cbc" +#define NID_rc5_cbc 120 +#define OBJ_rc5_cbc OBJ_rsadsi,3L,8L + +#define SN_rc5_ecb "RC5-ECB" +#define LN_rc5_ecb "rc5-ecb" +#define NID_rc5_ecb 121 + +#define SN_rc5_cfb64 "RC5-CFB" +#define LN_rc5_cfb64 "rc5-cfb" +#define NID_rc5_cfb64 122 + +#define SN_rc5_ofb64 "RC5-OFB" +#define LN_rc5_ofb64 "rc5-ofb" +#define NID_rc5_ofb64 123 + +#define SN_ms_ext_req "msExtReq" +#define LN_ms_ext_req "Microsoft Extension Request" +#define NID_ms_ext_req 171 +#define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L + +#define SN_ms_code_ind "msCodeInd" +#define LN_ms_code_ind "Microsoft Individual Code Signing" +#define NID_ms_code_ind 134 +#define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L + +#define SN_ms_code_com "msCodeCom" +#define LN_ms_code_com "Microsoft Commercial Code Signing" +#define NID_ms_code_com 135 +#define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L + +#define SN_ms_ctl_sign "msCTLSign" +#define LN_ms_ctl_sign "Microsoft Trust List Signing" +#define NID_ms_ctl_sign 136 +#define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L + +#define SN_ms_sgc "msSGC" +#define LN_ms_sgc "Microsoft Server Gated Crypto" +#define NID_ms_sgc 137 +#define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L + +#define SN_ms_efs "msEFS" +#define LN_ms_efs "Microsoft Encrypted File System" +#define NID_ms_efs 138 +#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L + +#define SN_ms_smartcard_login "msSmartcardLogin" +#define LN_ms_smartcard_login "Microsoft Smartcard Login" +#define NID_ms_smartcard_login 648 +#define OBJ_ms_smartcard_login 1L,3L,6L,1L,4L,1L,311L,20L,2L,2L + +#define SN_ms_upn "msUPN" +#define LN_ms_upn "Microsoft User Principal Name" +#define NID_ms_upn 649 +#define OBJ_ms_upn 1L,3L,6L,1L,4L,1L,311L,20L,2L,3L + +#define SN_idea_cbc "IDEA-CBC" +#define LN_idea_cbc "idea-cbc" +#define NID_idea_cbc 34 +#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L + +#define SN_idea_ecb "IDEA-ECB" +#define LN_idea_ecb "idea-ecb" +#define NID_idea_ecb 36 + +#define SN_idea_cfb64 "IDEA-CFB" +#define LN_idea_cfb64 "idea-cfb" +#define NID_idea_cfb64 35 + +#define SN_idea_ofb64 "IDEA-OFB" +#define LN_idea_ofb64 "idea-ofb" +#define NID_idea_ofb64 46 + +#define SN_bf_cbc "BF-CBC" +#define LN_bf_cbc "bf-cbc" +#define NID_bf_cbc 91 +#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L + +#define SN_bf_ecb "BF-ECB" +#define LN_bf_ecb "bf-ecb" +#define NID_bf_ecb 92 + +#define SN_bf_cfb64 "BF-CFB" +#define LN_bf_cfb64 "bf-cfb" +#define NID_bf_cfb64 93 + +#define SN_bf_ofb64 "BF-OFB" +#define LN_bf_ofb64 "bf-ofb" +#define NID_bf_ofb64 94 + +#define SN_id_pkix "PKIX" +#define NID_id_pkix 127 +#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L + +#define SN_id_pkix_mod "id-pkix-mod" +#define NID_id_pkix_mod 258 +#define OBJ_id_pkix_mod OBJ_id_pkix,0L + +#define SN_id_pe "id-pe" +#define NID_id_pe 175 +#define OBJ_id_pe OBJ_id_pkix,1L + +#define SN_id_qt "id-qt" +#define NID_id_qt 259 +#define OBJ_id_qt OBJ_id_pkix,2L + +#define SN_id_kp "id-kp" +#define NID_id_kp 128 +#define OBJ_id_kp OBJ_id_pkix,3L + +#define SN_id_it "id-it" +#define NID_id_it 260 +#define OBJ_id_it OBJ_id_pkix,4L + +#define SN_id_pkip "id-pkip" +#define NID_id_pkip 261 +#define OBJ_id_pkip OBJ_id_pkix,5L + +#define SN_id_alg "id-alg" +#define NID_id_alg 262 +#define OBJ_id_alg OBJ_id_pkix,6L + +#define SN_id_cmc "id-cmc" +#define NID_id_cmc 263 +#define OBJ_id_cmc OBJ_id_pkix,7L + +#define SN_id_on "id-on" +#define NID_id_on 264 +#define OBJ_id_on OBJ_id_pkix,8L + +#define SN_id_pda "id-pda" +#define NID_id_pda 265 +#define OBJ_id_pda OBJ_id_pkix,9L + +#define SN_id_aca "id-aca" +#define NID_id_aca 266 +#define OBJ_id_aca OBJ_id_pkix,10L + +#define SN_id_qcs "id-qcs" +#define NID_id_qcs 267 +#define OBJ_id_qcs OBJ_id_pkix,11L + +#define SN_id_cct "id-cct" +#define NID_id_cct 268 +#define OBJ_id_cct OBJ_id_pkix,12L + +#define SN_id_ppl "id-ppl" +#define NID_id_ppl 662 +#define OBJ_id_ppl OBJ_id_pkix,21L + +#define SN_id_ad "id-ad" +#define NID_id_ad 176 +#define OBJ_id_ad OBJ_id_pkix,48L + +#define SN_id_pkix1_explicit_88 "id-pkix1-explicit-88" +#define NID_id_pkix1_explicit_88 269 +#define OBJ_id_pkix1_explicit_88 OBJ_id_pkix_mod,1L + +#define SN_id_pkix1_implicit_88 "id-pkix1-implicit-88" +#define NID_id_pkix1_implicit_88 270 +#define OBJ_id_pkix1_implicit_88 OBJ_id_pkix_mod,2L + +#define SN_id_pkix1_explicit_93 "id-pkix1-explicit-93" +#define NID_id_pkix1_explicit_93 271 +#define OBJ_id_pkix1_explicit_93 OBJ_id_pkix_mod,3L + +#define SN_id_pkix1_implicit_93 "id-pkix1-implicit-93" +#define NID_id_pkix1_implicit_93 272 +#define OBJ_id_pkix1_implicit_93 OBJ_id_pkix_mod,4L + +#define SN_id_mod_crmf "id-mod-crmf" +#define NID_id_mod_crmf 273 +#define OBJ_id_mod_crmf OBJ_id_pkix_mod,5L + +#define SN_id_mod_cmc "id-mod-cmc" +#define NID_id_mod_cmc 274 +#define OBJ_id_mod_cmc OBJ_id_pkix_mod,6L + +#define SN_id_mod_kea_profile_88 "id-mod-kea-profile-88" +#define NID_id_mod_kea_profile_88 275 +#define OBJ_id_mod_kea_profile_88 OBJ_id_pkix_mod,7L + +#define SN_id_mod_kea_profile_93 "id-mod-kea-profile-93" +#define NID_id_mod_kea_profile_93 276 +#define OBJ_id_mod_kea_profile_93 OBJ_id_pkix_mod,8L + +#define SN_id_mod_cmp "id-mod-cmp" +#define NID_id_mod_cmp 277 +#define OBJ_id_mod_cmp OBJ_id_pkix_mod,9L + +#define SN_id_mod_qualified_cert_88 "id-mod-qualified-cert-88" +#define NID_id_mod_qualified_cert_88 278 +#define OBJ_id_mod_qualified_cert_88 OBJ_id_pkix_mod,10L + +#define SN_id_mod_qualified_cert_93 "id-mod-qualified-cert-93" +#define NID_id_mod_qualified_cert_93 279 +#define OBJ_id_mod_qualified_cert_93 OBJ_id_pkix_mod,11L + +#define SN_id_mod_attribute_cert "id-mod-attribute-cert" +#define NID_id_mod_attribute_cert 280 +#define OBJ_id_mod_attribute_cert OBJ_id_pkix_mod,12L + +#define SN_id_mod_timestamp_protocol "id-mod-timestamp-protocol" +#define NID_id_mod_timestamp_protocol 281 +#define OBJ_id_mod_timestamp_protocol OBJ_id_pkix_mod,13L + +#define SN_id_mod_ocsp "id-mod-ocsp" +#define NID_id_mod_ocsp 282 +#define OBJ_id_mod_ocsp OBJ_id_pkix_mod,14L + +#define SN_id_mod_dvcs "id-mod-dvcs" +#define NID_id_mod_dvcs 283 +#define OBJ_id_mod_dvcs OBJ_id_pkix_mod,15L + +#define SN_id_mod_cmp2000 "id-mod-cmp2000" +#define NID_id_mod_cmp2000 284 +#define OBJ_id_mod_cmp2000 OBJ_id_pkix_mod,16L + +#define SN_info_access "authorityInfoAccess" +#define LN_info_access "Authority Information Access" +#define NID_info_access 177 +#define OBJ_info_access OBJ_id_pe,1L + +#define SN_biometricInfo "biometricInfo" +#define LN_biometricInfo "Biometric Info" +#define NID_biometricInfo 285 +#define OBJ_biometricInfo OBJ_id_pe,2L + +#define SN_qcStatements "qcStatements" +#define NID_qcStatements 286 +#define OBJ_qcStatements OBJ_id_pe,3L + +#define SN_ac_auditEntity "ac-auditEntity" +#define NID_ac_auditEntity 287 +#define OBJ_ac_auditEntity OBJ_id_pe,4L + +#define SN_ac_targeting "ac-targeting" +#define NID_ac_targeting 288 +#define OBJ_ac_targeting OBJ_id_pe,5L + +#define SN_aaControls "aaControls" +#define NID_aaControls 289 +#define OBJ_aaControls OBJ_id_pe,6L + +#define SN_sbgp_ipAddrBlock "sbgp-ipAddrBlock" +#define NID_sbgp_ipAddrBlock 290 +#define OBJ_sbgp_ipAddrBlock OBJ_id_pe,7L + +#define SN_sbgp_autonomousSysNum "sbgp-autonomousSysNum" +#define NID_sbgp_autonomousSysNum 291 +#define OBJ_sbgp_autonomousSysNum OBJ_id_pe,8L + +#define SN_sbgp_routerIdentifier "sbgp-routerIdentifier" +#define NID_sbgp_routerIdentifier 292 +#define OBJ_sbgp_routerIdentifier OBJ_id_pe,9L + +#define SN_ac_proxying "ac-proxying" +#define NID_ac_proxying 397 +#define OBJ_ac_proxying OBJ_id_pe,10L + +#define SN_sinfo_access "subjectInfoAccess" +#define LN_sinfo_access "Subject Information Access" +#define NID_sinfo_access 398 +#define OBJ_sinfo_access OBJ_id_pe,11L + +#define SN_proxyCertInfo "proxyCertInfo" +#define LN_proxyCertInfo "Proxy Certificate Information" +#define NID_proxyCertInfo 663 +#define OBJ_proxyCertInfo OBJ_id_pe,14L + +#define SN_tlsfeature "tlsfeature" +#define LN_tlsfeature "TLS Feature" +#define NID_tlsfeature 1020 +#define OBJ_tlsfeature OBJ_id_pe,24L + +#define SN_id_qt_cps "id-qt-cps" +#define LN_id_qt_cps "Policy Qualifier CPS" +#define NID_id_qt_cps 164 +#define OBJ_id_qt_cps OBJ_id_qt,1L + +#define SN_id_qt_unotice "id-qt-unotice" +#define LN_id_qt_unotice "Policy Qualifier User Notice" +#define NID_id_qt_unotice 165 +#define OBJ_id_qt_unotice OBJ_id_qt,2L + +#define SN_textNotice "textNotice" +#define NID_textNotice 293 +#define OBJ_textNotice OBJ_id_qt,3L + +#define SN_server_auth "serverAuth" +#define LN_server_auth "TLS Web Server Authentication" +#define NID_server_auth 129 +#define OBJ_server_auth OBJ_id_kp,1L + +#define SN_client_auth "clientAuth" +#define LN_client_auth "TLS Web Client Authentication" +#define NID_client_auth 130 +#define OBJ_client_auth OBJ_id_kp,2L + +#define SN_code_sign "codeSigning" +#define LN_code_sign "Code Signing" +#define NID_code_sign 131 +#define OBJ_code_sign OBJ_id_kp,3L + +#define SN_email_protect "emailProtection" +#define LN_email_protect "E-mail Protection" +#define NID_email_protect 132 +#define OBJ_email_protect OBJ_id_kp,4L + +#define SN_ipsecEndSystem "ipsecEndSystem" +#define LN_ipsecEndSystem "IPSec End System" +#define NID_ipsecEndSystem 294 +#define OBJ_ipsecEndSystem OBJ_id_kp,5L + +#define SN_ipsecTunnel "ipsecTunnel" +#define LN_ipsecTunnel "IPSec Tunnel" +#define NID_ipsecTunnel 295 +#define OBJ_ipsecTunnel OBJ_id_kp,6L + +#define SN_ipsecUser "ipsecUser" +#define LN_ipsecUser "IPSec User" +#define NID_ipsecUser 296 +#define OBJ_ipsecUser OBJ_id_kp,7L + +#define SN_time_stamp "timeStamping" +#define LN_time_stamp "Time Stamping" +#define NID_time_stamp 133 +#define OBJ_time_stamp OBJ_id_kp,8L + +#define SN_OCSP_sign "OCSPSigning" +#define LN_OCSP_sign "OCSP Signing" +#define NID_OCSP_sign 180 +#define OBJ_OCSP_sign OBJ_id_kp,9L + +#define SN_dvcs "DVCS" +#define LN_dvcs "dvcs" +#define NID_dvcs 297 +#define OBJ_dvcs OBJ_id_kp,10L + +#define SN_ipsec_IKE "ipsecIKE" +#define LN_ipsec_IKE "ipsec Internet Key Exchange" +#define NID_ipsec_IKE 1022 +#define OBJ_ipsec_IKE OBJ_id_kp,17L + +#define SN_capwapAC "capwapAC" +#define LN_capwapAC "Ctrl/provision WAP Access" +#define NID_capwapAC 1023 +#define OBJ_capwapAC OBJ_id_kp,18L + +#define SN_capwapWTP "capwapWTP" +#define LN_capwapWTP "Ctrl/Provision WAP Termination" +#define NID_capwapWTP 1024 +#define OBJ_capwapWTP OBJ_id_kp,19L + +#define SN_sshClient "secureShellClient" +#define LN_sshClient "SSH Client" +#define NID_sshClient 1025 +#define OBJ_sshClient OBJ_id_kp,21L + +#define SN_sshServer "secureShellServer" +#define LN_sshServer "SSH Server" +#define NID_sshServer 1026 +#define OBJ_sshServer OBJ_id_kp,22L + +#define SN_sendRouter "sendRouter" +#define LN_sendRouter "Send Router" +#define NID_sendRouter 1027 +#define OBJ_sendRouter OBJ_id_kp,23L + +#define SN_sendProxiedRouter "sendProxiedRouter" +#define LN_sendProxiedRouter "Send Proxied Router" +#define NID_sendProxiedRouter 1028 +#define OBJ_sendProxiedRouter OBJ_id_kp,24L + +#define SN_sendOwner "sendOwner" +#define LN_sendOwner "Send Owner" +#define NID_sendOwner 1029 +#define OBJ_sendOwner OBJ_id_kp,25L + +#define SN_sendProxiedOwner "sendProxiedOwner" +#define LN_sendProxiedOwner "Send Proxied Owner" +#define NID_sendProxiedOwner 1030 +#define OBJ_sendProxiedOwner OBJ_id_kp,26L + +#define SN_cmcCA "cmcCA" +#define LN_cmcCA "CMC Certificate Authority" +#define NID_cmcCA 1131 +#define OBJ_cmcCA OBJ_id_kp,27L + +#define SN_cmcRA "cmcRA" +#define LN_cmcRA "CMC Registration Authority" +#define NID_cmcRA 1132 +#define OBJ_cmcRA OBJ_id_kp,28L + +#define SN_id_it_caProtEncCert "id-it-caProtEncCert" +#define NID_id_it_caProtEncCert 298 +#define OBJ_id_it_caProtEncCert OBJ_id_it,1L + +#define SN_id_it_signKeyPairTypes "id-it-signKeyPairTypes" +#define NID_id_it_signKeyPairTypes 299 +#define OBJ_id_it_signKeyPairTypes OBJ_id_it,2L + +#define SN_id_it_encKeyPairTypes "id-it-encKeyPairTypes" +#define NID_id_it_encKeyPairTypes 300 +#define OBJ_id_it_encKeyPairTypes OBJ_id_it,3L + +#define SN_id_it_preferredSymmAlg "id-it-preferredSymmAlg" +#define NID_id_it_preferredSymmAlg 301 +#define OBJ_id_it_preferredSymmAlg OBJ_id_it,4L + +#define SN_id_it_caKeyUpdateInfo "id-it-caKeyUpdateInfo" +#define NID_id_it_caKeyUpdateInfo 302 +#define OBJ_id_it_caKeyUpdateInfo OBJ_id_it,5L + +#define SN_id_it_currentCRL "id-it-currentCRL" +#define NID_id_it_currentCRL 303 +#define OBJ_id_it_currentCRL OBJ_id_it,6L + +#define SN_id_it_unsupportedOIDs "id-it-unsupportedOIDs" +#define NID_id_it_unsupportedOIDs 304 +#define OBJ_id_it_unsupportedOIDs OBJ_id_it,7L + +#define SN_id_it_subscriptionRequest "id-it-subscriptionRequest" +#define NID_id_it_subscriptionRequest 305 +#define OBJ_id_it_subscriptionRequest OBJ_id_it,8L + +#define SN_id_it_subscriptionResponse "id-it-subscriptionResponse" +#define NID_id_it_subscriptionResponse 306 +#define OBJ_id_it_subscriptionResponse OBJ_id_it,9L + +#define SN_id_it_keyPairParamReq "id-it-keyPairParamReq" +#define NID_id_it_keyPairParamReq 307 +#define OBJ_id_it_keyPairParamReq OBJ_id_it,10L + +#define SN_id_it_keyPairParamRep "id-it-keyPairParamRep" +#define NID_id_it_keyPairParamRep 308 +#define OBJ_id_it_keyPairParamRep OBJ_id_it,11L + +#define SN_id_it_revPassphrase "id-it-revPassphrase" +#define NID_id_it_revPassphrase 309 +#define OBJ_id_it_revPassphrase OBJ_id_it,12L + +#define SN_id_it_implicitConfirm "id-it-implicitConfirm" +#define NID_id_it_implicitConfirm 310 +#define OBJ_id_it_implicitConfirm OBJ_id_it,13L + +#define SN_id_it_confirmWaitTime "id-it-confirmWaitTime" +#define NID_id_it_confirmWaitTime 311 +#define OBJ_id_it_confirmWaitTime OBJ_id_it,14L + +#define SN_id_it_origPKIMessage "id-it-origPKIMessage" +#define NID_id_it_origPKIMessage 312 +#define OBJ_id_it_origPKIMessage OBJ_id_it,15L + +#define SN_id_it_suppLangTags "id-it-suppLangTags" +#define NID_id_it_suppLangTags 784 +#define OBJ_id_it_suppLangTags OBJ_id_it,16L + +#define SN_id_regCtrl "id-regCtrl" +#define NID_id_regCtrl 313 +#define OBJ_id_regCtrl OBJ_id_pkip,1L + +#define SN_id_regInfo "id-regInfo" +#define NID_id_regInfo 314 +#define OBJ_id_regInfo OBJ_id_pkip,2L + +#define SN_id_regCtrl_regToken "id-regCtrl-regToken" +#define NID_id_regCtrl_regToken 315 +#define OBJ_id_regCtrl_regToken OBJ_id_regCtrl,1L + +#define SN_id_regCtrl_authenticator "id-regCtrl-authenticator" +#define NID_id_regCtrl_authenticator 316 +#define OBJ_id_regCtrl_authenticator OBJ_id_regCtrl,2L + +#define SN_id_regCtrl_pkiPublicationInfo "id-regCtrl-pkiPublicationInfo" +#define NID_id_regCtrl_pkiPublicationInfo 317 +#define OBJ_id_regCtrl_pkiPublicationInfo OBJ_id_regCtrl,3L + +#define SN_id_regCtrl_pkiArchiveOptions "id-regCtrl-pkiArchiveOptions" +#define NID_id_regCtrl_pkiArchiveOptions 318 +#define OBJ_id_regCtrl_pkiArchiveOptions OBJ_id_regCtrl,4L + +#define SN_id_regCtrl_oldCertID "id-regCtrl-oldCertID" +#define NID_id_regCtrl_oldCertID 319 +#define OBJ_id_regCtrl_oldCertID OBJ_id_regCtrl,5L + +#define SN_id_regCtrl_protocolEncrKey "id-regCtrl-protocolEncrKey" +#define NID_id_regCtrl_protocolEncrKey 320 +#define OBJ_id_regCtrl_protocolEncrKey OBJ_id_regCtrl,6L + +#define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" +#define NID_id_regInfo_utf8Pairs 321 +#define OBJ_id_regInfo_utf8Pairs OBJ_id_regInfo,1L + +#define SN_id_regInfo_certReq "id-regInfo-certReq" +#define NID_id_regInfo_certReq 322 +#define OBJ_id_regInfo_certReq OBJ_id_regInfo,2L + +#define SN_id_alg_des40 "id-alg-des40" +#define NID_id_alg_des40 323 +#define OBJ_id_alg_des40 OBJ_id_alg,1L + +#define SN_id_alg_noSignature "id-alg-noSignature" +#define NID_id_alg_noSignature 324 +#define OBJ_id_alg_noSignature OBJ_id_alg,2L + +#define SN_id_alg_dh_sig_hmac_sha1 "id-alg-dh-sig-hmac-sha1" +#define NID_id_alg_dh_sig_hmac_sha1 325 +#define OBJ_id_alg_dh_sig_hmac_sha1 OBJ_id_alg,3L + +#define SN_id_alg_dh_pop "id-alg-dh-pop" +#define NID_id_alg_dh_pop 326 +#define OBJ_id_alg_dh_pop OBJ_id_alg,4L + +#define SN_id_cmc_statusInfo "id-cmc-statusInfo" +#define NID_id_cmc_statusInfo 327 +#define OBJ_id_cmc_statusInfo OBJ_id_cmc,1L + +#define SN_id_cmc_identification "id-cmc-identification" +#define NID_id_cmc_identification 328 +#define OBJ_id_cmc_identification OBJ_id_cmc,2L + +#define SN_id_cmc_identityProof "id-cmc-identityProof" +#define NID_id_cmc_identityProof 329 +#define OBJ_id_cmc_identityProof OBJ_id_cmc,3L + +#define SN_id_cmc_dataReturn "id-cmc-dataReturn" +#define NID_id_cmc_dataReturn 330 +#define OBJ_id_cmc_dataReturn OBJ_id_cmc,4L + +#define SN_id_cmc_transactionId "id-cmc-transactionId" +#define NID_id_cmc_transactionId 331 +#define OBJ_id_cmc_transactionId OBJ_id_cmc,5L + +#define SN_id_cmc_senderNonce "id-cmc-senderNonce" +#define NID_id_cmc_senderNonce 332 +#define OBJ_id_cmc_senderNonce OBJ_id_cmc,6L + +#define SN_id_cmc_recipientNonce "id-cmc-recipientNonce" +#define NID_id_cmc_recipientNonce 333 +#define OBJ_id_cmc_recipientNonce OBJ_id_cmc,7L + +#define SN_id_cmc_addExtensions "id-cmc-addExtensions" +#define NID_id_cmc_addExtensions 334 +#define OBJ_id_cmc_addExtensions OBJ_id_cmc,8L + +#define SN_id_cmc_encryptedPOP "id-cmc-encryptedPOP" +#define NID_id_cmc_encryptedPOP 335 +#define OBJ_id_cmc_encryptedPOP OBJ_id_cmc,9L + +#define SN_id_cmc_decryptedPOP "id-cmc-decryptedPOP" +#define NID_id_cmc_decryptedPOP 336 +#define OBJ_id_cmc_decryptedPOP OBJ_id_cmc,10L + +#define SN_id_cmc_lraPOPWitness "id-cmc-lraPOPWitness" +#define NID_id_cmc_lraPOPWitness 337 +#define OBJ_id_cmc_lraPOPWitness OBJ_id_cmc,11L + +#define SN_id_cmc_getCert "id-cmc-getCert" +#define NID_id_cmc_getCert 338 +#define OBJ_id_cmc_getCert OBJ_id_cmc,15L + +#define SN_id_cmc_getCRL "id-cmc-getCRL" +#define NID_id_cmc_getCRL 339 +#define OBJ_id_cmc_getCRL OBJ_id_cmc,16L + +#define SN_id_cmc_revokeRequest "id-cmc-revokeRequest" +#define NID_id_cmc_revokeRequest 340 +#define OBJ_id_cmc_revokeRequest OBJ_id_cmc,17L + +#define SN_id_cmc_regInfo "id-cmc-regInfo" +#define NID_id_cmc_regInfo 341 +#define OBJ_id_cmc_regInfo OBJ_id_cmc,18L + +#define SN_id_cmc_responseInfo "id-cmc-responseInfo" +#define NID_id_cmc_responseInfo 342 +#define OBJ_id_cmc_responseInfo OBJ_id_cmc,19L + +#define SN_id_cmc_queryPending "id-cmc-queryPending" +#define NID_id_cmc_queryPending 343 +#define OBJ_id_cmc_queryPending OBJ_id_cmc,21L + +#define SN_id_cmc_popLinkRandom "id-cmc-popLinkRandom" +#define NID_id_cmc_popLinkRandom 344 +#define OBJ_id_cmc_popLinkRandom OBJ_id_cmc,22L + +#define SN_id_cmc_popLinkWitness "id-cmc-popLinkWitness" +#define NID_id_cmc_popLinkWitness 345 +#define OBJ_id_cmc_popLinkWitness OBJ_id_cmc,23L + +#define SN_id_cmc_confirmCertAcceptance "id-cmc-confirmCertAcceptance" +#define NID_id_cmc_confirmCertAcceptance 346 +#define OBJ_id_cmc_confirmCertAcceptance OBJ_id_cmc,24L + +#define SN_id_on_personalData "id-on-personalData" +#define NID_id_on_personalData 347 +#define OBJ_id_on_personalData OBJ_id_on,1L + +#define SN_id_on_permanentIdentifier "id-on-permanentIdentifier" +#define LN_id_on_permanentIdentifier "Permanent Identifier" +#define NID_id_on_permanentIdentifier 858 +#define OBJ_id_on_permanentIdentifier OBJ_id_on,3L + +#define SN_id_pda_dateOfBirth "id-pda-dateOfBirth" +#define NID_id_pda_dateOfBirth 348 +#define OBJ_id_pda_dateOfBirth OBJ_id_pda,1L + +#define SN_id_pda_placeOfBirth "id-pda-placeOfBirth" +#define NID_id_pda_placeOfBirth 349 +#define OBJ_id_pda_placeOfBirth OBJ_id_pda,2L + +#define SN_id_pda_gender "id-pda-gender" +#define NID_id_pda_gender 351 +#define OBJ_id_pda_gender OBJ_id_pda,3L + +#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship" +#define NID_id_pda_countryOfCitizenship 352 +#define OBJ_id_pda_countryOfCitizenship OBJ_id_pda,4L + +#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence" +#define NID_id_pda_countryOfResidence 353 +#define OBJ_id_pda_countryOfResidence OBJ_id_pda,5L + +#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo" +#define NID_id_aca_authenticationInfo 354 +#define OBJ_id_aca_authenticationInfo OBJ_id_aca,1L + +#define SN_id_aca_accessIdentity "id-aca-accessIdentity" +#define NID_id_aca_accessIdentity 355 +#define OBJ_id_aca_accessIdentity OBJ_id_aca,2L + +#define SN_id_aca_chargingIdentity "id-aca-chargingIdentity" +#define NID_id_aca_chargingIdentity 356 +#define OBJ_id_aca_chargingIdentity OBJ_id_aca,3L + +#define SN_id_aca_group "id-aca-group" +#define NID_id_aca_group 357 +#define OBJ_id_aca_group OBJ_id_aca,4L + +#define SN_id_aca_role "id-aca-role" +#define NID_id_aca_role 358 +#define OBJ_id_aca_role OBJ_id_aca,5L + +#define SN_id_aca_encAttrs "id-aca-encAttrs" +#define NID_id_aca_encAttrs 399 +#define OBJ_id_aca_encAttrs OBJ_id_aca,6L + +#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1" +#define NID_id_qcs_pkixQCSyntax_v1 359 +#define OBJ_id_qcs_pkixQCSyntax_v1 OBJ_id_qcs,1L + +#define SN_id_cct_crs "id-cct-crs" +#define NID_id_cct_crs 360 +#define OBJ_id_cct_crs OBJ_id_cct,1L + +#define SN_id_cct_PKIData "id-cct-PKIData" +#define NID_id_cct_PKIData 361 +#define OBJ_id_cct_PKIData OBJ_id_cct,2L + +#define SN_id_cct_PKIResponse "id-cct-PKIResponse" +#define NID_id_cct_PKIResponse 362 +#define OBJ_id_cct_PKIResponse OBJ_id_cct,3L + +#define SN_id_ppl_anyLanguage "id-ppl-anyLanguage" +#define LN_id_ppl_anyLanguage "Any language" +#define NID_id_ppl_anyLanguage 664 +#define OBJ_id_ppl_anyLanguage OBJ_id_ppl,0L + +#define SN_id_ppl_inheritAll "id-ppl-inheritAll" +#define LN_id_ppl_inheritAll "Inherit all" +#define NID_id_ppl_inheritAll 665 +#define OBJ_id_ppl_inheritAll OBJ_id_ppl,1L + +#define SN_Independent "id-ppl-independent" +#define LN_Independent "Independent" +#define NID_Independent 667 +#define OBJ_Independent OBJ_id_ppl,2L + +#define SN_ad_OCSP "OCSP" +#define LN_ad_OCSP "OCSP" +#define NID_ad_OCSP 178 +#define OBJ_ad_OCSP OBJ_id_ad,1L + +#define SN_ad_ca_issuers "caIssuers" +#define LN_ad_ca_issuers "CA Issuers" +#define NID_ad_ca_issuers 179 +#define OBJ_ad_ca_issuers OBJ_id_ad,2L + +#define SN_ad_timeStamping "ad_timestamping" +#define LN_ad_timeStamping "AD Time Stamping" +#define NID_ad_timeStamping 363 +#define OBJ_ad_timeStamping OBJ_id_ad,3L + +#define SN_ad_dvcs "AD_DVCS" +#define LN_ad_dvcs "ad dvcs" +#define NID_ad_dvcs 364 +#define OBJ_ad_dvcs OBJ_id_ad,4L + +#define SN_caRepository "caRepository" +#define LN_caRepository "CA Repository" +#define NID_caRepository 785 +#define OBJ_caRepository OBJ_id_ad,5L + +#define OBJ_id_pkix_OCSP OBJ_ad_OCSP + +#define SN_id_pkix_OCSP_basic "basicOCSPResponse" +#define LN_id_pkix_OCSP_basic "Basic OCSP Response" +#define NID_id_pkix_OCSP_basic 365 +#define OBJ_id_pkix_OCSP_basic OBJ_id_pkix_OCSP,1L + +#define SN_id_pkix_OCSP_Nonce "Nonce" +#define LN_id_pkix_OCSP_Nonce "OCSP Nonce" +#define NID_id_pkix_OCSP_Nonce 366 +#define OBJ_id_pkix_OCSP_Nonce OBJ_id_pkix_OCSP,2L + +#define SN_id_pkix_OCSP_CrlID "CrlID" +#define LN_id_pkix_OCSP_CrlID "OCSP CRL ID" +#define NID_id_pkix_OCSP_CrlID 367 +#define OBJ_id_pkix_OCSP_CrlID OBJ_id_pkix_OCSP,3L + +#define SN_id_pkix_OCSP_acceptableResponses "acceptableResponses" +#define LN_id_pkix_OCSP_acceptableResponses "Acceptable OCSP Responses" +#define NID_id_pkix_OCSP_acceptableResponses 368 +#define OBJ_id_pkix_OCSP_acceptableResponses OBJ_id_pkix_OCSP,4L + +#define SN_id_pkix_OCSP_noCheck "noCheck" +#define LN_id_pkix_OCSP_noCheck "OCSP No Check" +#define NID_id_pkix_OCSP_noCheck 369 +#define OBJ_id_pkix_OCSP_noCheck OBJ_id_pkix_OCSP,5L + +#define SN_id_pkix_OCSP_archiveCutoff "archiveCutoff" +#define LN_id_pkix_OCSP_archiveCutoff "OCSP Archive Cutoff" +#define NID_id_pkix_OCSP_archiveCutoff 370 +#define OBJ_id_pkix_OCSP_archiveCutoff OBJ_id_pkix_OCSP,6L + +#define SN_id_pkix_OCSP_serviceLocator "serviceLocator" +#define LN_id_pkix_OCSP_serviceLocator "OCSP Service Locator" +#define NID_id_pkix_OCSP_serviceLocator 371 +#define OBJ_id_pkix_OCSP_serviceLocator OBJ_id_pkix_OCSP,7L + +#define SN_id_pkix_OCSP_extendedStatus "extendedStatus" +#define LN_id_pkix_OCSP_extendedStatus "Extended OCSP Status" +#define NID_id_pkix_OCSP_extendedStatus 372 +#define OBJ_id_pkix_OCSP_extendedStatus OBJ_id_pkix_OCSP,8L + +#define SN_id_pkix_OCSP_valid "valid" +#define NID_id_pkix_OCSP_valid 373 +#define OBJ_id_pkix_OCSP_valid OBJ_id_pkix_OCSP,9L + +#define SN_id_pkix_OCSP_path "path" +#define NID_id_pkix_OCSP_path 374 +#define OBJ_id_pkix_OCSP_path OBJ_id_pkix_OCSP,10L + +#define SN_id_pkix_OCSP_trustRoot "trustRoot" +#define LN_id_pkix_OCSP_trustRoot "Trust Root" +#define NID_id_pkix_OCSP_trustRoot 375 +#define OBJ_id_pkix_OCSP_trustRoot OBJ_id_pkix_OCSP,11L + +#define SN_algorithm "algorithm" +#define LN_algorithm "algorithm" +#define NID_algorithm 376 +#define OBJ_algorithm 1L,3L,14L,3L,2L + +#define SN_md5WithRSA "RSA-NP-MD5" +#define LN_md5WithRSA "md5WithRSA" +#define NID_md5WithRSA 104 +#define OBJ_md5WithRSA OBJ_algorithm,3L + +#define SN_des_ecb "DES-ECB" +#define LN_des_ecb "des-ecb" +#define NID_des_ecb 29 +#define OBJ_des_ecb OBJ_algorithm,6L + +#define SN_des_cbc "DES-CBC" +#define LN_des_cbc "des-cbc" +#define NID_des_cbc 31 +#define OBJ_des_cbc OBJ_algorithm,7L + +#define SN_des_ofb64 "DES-OFB" +#define LN_des_ofb64 "des-ofb" +#define NID_des_ofb64 45 +#define OBJ_des_ofb64 OBJ_algorithm,8L + +#define SN_des_cfb64 "DES-CFB" +#define LN_des_cfb64 "des-cfb" +#define NID_des_cfb64 30 +#define OBJ_des_cfb64 OBJ_algorithm,9L + +#define SN_rsaSignature "rsaSignature" +#define NID_rsaSignature 377 +#define OBJ_rsaSignature OBJ_algorithm,11L + +#define SN_dsa_2 "DSA-old" +#define LN_dsa_2 "dsaEncryption-old" +#define NID_dsa_2 67 +#define OBJ_dsa_2 OBJ_algorithm,12L + +#define SN_dsaWithSHA "DSA-SHA" +#define LN_dsaWithSHA "dsaWithSHA" +#define NID_dsaWithSHA 66 +#define OBJ_dsaWithSHA OBJ_algorithm,13L + +#define SN_shaWithRSAEncryption "RSA-SHA" +#define LN_shaWithRSAEncryption "shaWithRSAEncryption" +#define NID_shaWithRSAEncryption 42 +#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L + +#define SN_des_ede_ecb "DES-EDE" +#define LN_des_ede_ecb "des-ede" +#define NID_des_ede_ecb 32 +#define OBJ_des_ede_ecb OBJ_algorithm,17L + +#define SN_des_ede3_ecb "DES-EDE3" +#define LN_des_ede3_ecb "des-ede3" +#define NID_des_ede3_ecb 33 + +#define SN_des_ede_cbc "DES-EDE-CBC" +#define LN_des_ede_cbc "des-ede-cbc" +#define NID_des_ede_cbc 43 + +#define SN_des_ede_cfb64 "DES-EDE-CFB" +#define LN_des_ede_cfb64 "des-ede-cfb" +#define NID_des_ede_cfb64 60 + +#define SN_des_ede3_cfb64 "DES-EDE3-CFB" +#define LN_des_ede3_cfb64 "des-ede3-cfb" +#define NID_des_ede3_cfb64 61 + +#define SN_des_ede_ofb64 "DES-EDE-OFB" +#define LN_des_ede_ofb64 "des-ede-ofb" +#define NID_des_ede_ofb64 62 + +#define SN_des_ede3_ofb64 "DES-EDE3-OFB" +#define LN_des_ede3_ofb64 "des-ede3-ofb" +#define NID_des_ede3_ofb64 63 + +#define SN_desx_cbc "DESX-CBC" +#define LN_desx_cbc "desx-cbc" +#define NID_desx_cbc 80 + +#define SN_sha "SHA" +#define LN_sha "sha" +#define NID_sha 41 +#define OBJ_sha OBJ_algorithm,18L + +#define SN_sha1 "SHA1" +#define LN_sha1 "sha1" +#define NID_sha1 64 +#define OBJ_sha1 OBJ_algorithm,26L + +#define SN_dsaWithSHA1_2 "DSA-SHA1-old" +#define LN_dsaWithSHA1_2 "dsaWithSHA1-old" +#define NID_dsaWithSHA1_2 70 +#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L + +#define SN_sha1WithRSA "RSA-SHA1-2" +#define LN_sha1WithRSA "sha1WithRSA" +#define NID_sha1WithRSA 115 +#define OBJ_sha1WithRSA OBJ_algorithm,29L + +#define SN_ripemd160 "RIPEMD160" +#define LN_ripemd160 "ripemd160" +#define NID_ripemd160 117 +#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L + +#define SN_ripemd160WithRSA "RSA-RIPEMD160" +#define LN_ripemd160WithRSA "ripemd160WithRSA" +#define NID_ripemd160WithRSA 119 +#define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L + +#define SN_blake2b512 "BLAKE2b512" +#define LN_blake2b512 "blake2b512" +#define NID_blake2b512 1056 +#define OBJ_blake2b512 1L,3L,6L,1L,4L,1L,1722L,12L,2L,1L,16L + +#define SN_blake2s256 "BLAKE2s256" +#define LN_blake2s256 "blake2s256" +#define NID_blake2s256 1057 +#define OBJ_blake2s256 1L,3L,6L,1L,4L,1L,1722L,12L,2L,2L,8L + +#define SN_sxnet "SXNetID" +#define LN_sxnet "Strong Extranet ID" +#define NID_sxnet 143 +#define OBJ_sxnet 1L,3L,101L,1L,4L,1L + +#define SN_X500 "X500" +#define LN_X500 "directory services (X.500)" +#define NID_X500 11 +#define OBJ_X500 2L,5L + +#define SN_X509 "X509" +#define NID_X509 12 +#define OBJ_X509 OBJ_X500,4L + +#define SN_commonName "CN" +#define LN_commonName "commonName" +#define NID_commonName 13 +#define OBJ_commonName OBJ_X509,3L + +#define SN_surname "SN" +#define LN_surname "surname" +#define NID_surname 100 +#define OBJ_surname OBJ_X509,4L + +#define LN_serialNumber "serialNumber" +#define NID_serialNumber 105 +#define OBJ_serialNumber OBJ_X509,5L + +#define SN_countryName "C" +#define LN_countryName "countryName" +#define NID_countryName 14 +#define OBJ_countryName OBJ_X509,6L + +#define SN_localityName "L" +#define LN_localityName "localityName" +#define NID_localityName 15 +#define OBJ_localityName OBJ_X509,7L + +#define SN_stateOrProvinceName "ST" +#define LN_stateOrProvinceName "stateOrProvinceName" +#define NID_stateOrProvinceName 16 +#define OBJ_stateOrProvinceName OBJ_X509,8L + +#define SN_streetAddress "street" +#define LN_streetAddress "streetAddress" +#define NID_streetAddress 660 +#define OBJ_streetAddress OBJ_X509,9L + +#define SN_organizationName "O" +#define LN_organizationName "organizationName" +#define NID_organizationName 17 +#define OBJ_organizationName OBJ_X509,10L + +#define SN_organizationalUnitName "OU" +#define LN_organizationalUnitName "organizationalUnitName" +#define NID_organizationalUnitName 18 +#define OBJ_organizationalUnitName OBJ_X509,11L + +#define SN_title "title" +#define LN_title "title" +#define NID_title 106 +#define OBJ_title OBJ_X509,12L + +#define LN_description "description" +#define NID_description 107 +#define OBJ_description OBJ_X509,13L + +#define LN_searchGuide "searchGuide" +#define NID_searchGuide 859 +#define OBJ_searchGuide OBJ_X509,14L + +#define LN_businessCategory "businessCategory" +#define NID_businessCategory 860 +#define OBJ_businessCategory OBJ_X509,15L + +#define LN_postalAddress "postalAddress" +#define NID_postalAddress 861 +#define OBJ_postalAddress OBJ_X509,16L + +#define LN_postalCode "postalCode" +#define NID_postalCode 661 +#define OBJ_postalCode OBJ_X509,17L + +#define LN_postOfficeBox "postOfficeBox" +#define NID_postOfficeBox 862 +#define OBJ_postOfficeBox OBJ_X509,18L + +#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName" +#define NID_physicalDeliveryOfficeName 863 +#define OBJ_physicalDeliveryOfficeName OBJ_X509,19L + +#define LN_telephoneNumber "telephoneNumber" +#define NID_telephoneNumber 864 +#define OBJ_telephoneNumber OBJ_X509,20L + +#define LN_telexNumber "telexNumber" +#define NID_telexNumber 865 +#define OBJ_telexNumber OBJ_X509,21L + +#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier" +#define NID_teletexTerminalIdentifier 866 +#define OBJ_teletexTerminalIdentifier OBJ_X509,22L + +#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber" +#define NID_facsimileTelephoneNumber 867 +#define OBJ_facsimileTelephoneNumber OBJ_X509,23L + +#define LN_x121Address "x121Address" +#define NID_x121Address 868 +#define OBJ_x121Address OBJ_X509,24L + +#define LN_internationaliSDNNumber "internationaliSDNNumber" +#define NID_internationaliSDNNumber 869 +#define OBJ_internationaliSDNNumber OBJ_X509,25L + +#define LN_registeredAddress "registeredAddress" +#define NID_registeredAddress 870 +#define OBJ_registeredAddress OBJ_X509,26L + +#define LN_destinationIndicator "destinationIndicator" +#define NID_destinationIndicator 871 +#define OBJ_destinationIndicator OBJ_X509,27L + +#define LN_preferredDeliveryMethod "preferredDeliveryMethod" +#define NID_preferredDeliveryMethod 872 +#define OBJ_preferredDeliveryMethod OBJ_X509,28L + +#define LN_presentationAddress "presentationAddress" +#define NID_presentationAddress 873 +#define OBJ_presentationAddress OBJ_X509,29L + +#define LN_supportedApplicationContext "supportedApplicationContext" +#define NID_supportedApplicationContext 874 +#define OBJ_supportedApplicationContext OBJ_X509,30L + +#define SN_member "member" +#define NID_member 875 +#define OBJ_member OBJ_X509,31L + +#define SN_owner "owner" +#define NID_owner 876 +#define OBJ_owner OBJ_X509,32L + +#define LN_roleOccupant "roleOccupant" +#define NID_roleOccupant 877 +#define OBJ_roleOccupant OBJ_X509,33L + +#define SN_seeAlso "seeAlso" +#define NID_seeAlso 878 +#define OBJ_seeAlso OBJ_X509,34L + +#define LN_userPassword "userPassword" +#define NID_userPassword 879 +#define OBJ_userPassword OBJ_X509,35L + +#define LN_userCertificate "userCertificate" +#define NID_userCertificate 880 +#define OBJ_userCertificate OBJ_X509,36L + +#define LN_cACertificate "cACertificate" +#define NID_cACertificate 881 +#define OBJ_cACertificate OBJ_X509,37L + +#define LN_authorityRevocationList "authorityRevocationList" +#define NID_authorityRevocationList 882 +#define OBJ_authorityRevocationList OBJ_X509,38L + +#define LN_certificateRevocationList "certificateRevocationList" +#define NID_certificateRevocationList 883 +#define OBJ_certificateRevocationList OBJ_X509,39L + +#define LN_crossCertificatePair "crossCertificatePair" +#define NID_crossCertificatePair 884 +#define OBJ_crossCertificatePair OBJ_X509,40L + +#define SN_name "name" +#define LN_name "name" +#define NID_name 173 +#define OBJ_name OBJ_X509,41L + +#define SN_givenName "GN" +#define LN_givenName "givenName" +#define NID_givenName 99 +#define OBJ_givenName OBJ_X509,42L + +#define SN_initials "initials" +#define LN_initials "initials" +#define NID_initials 101 +#define OBJ_initials OBJ_X509,43L + +#define LN_generationQualifier "generationQualifier" +#define NID_generationQualifier 509 +#define OBJ_generationQualifier OBJ_X509,44L + +#define LN_x500UniqueIdentifier "x500UniqueIdentifier" +#define NID_x500UniqueIdentifier 503 +#define OBJ_x500UniqueIdentifier OBJ_X509,45L + +#define SN_dnQualifier "dnQualifier" +#define LN_dnQualifier "dnQualifier" +#define NID_dnQualifier 174 +#define OBJ_dnQualifier OBJ_X509,46L + +#define LN_enhancedSearchGuide "enhancedSearchGuide" +#define NID_enhancedSearchGuide 885 +#define OBJ_enhancedSearchGuide OBJ_X509,47L + +#define LN_protocolInformation "protocolInformation" +#define NID_protocolInformation 886 +#define OBJ_protocolInformation OBJ_X509,48L + +#define LN_distinguishedName "distinguishedName" +#define NID_distinguishedName 887 +#define OBJ_distinguishedName OBJ_X509,49L + +#define LN_uniqueMember "uniqueMember" +#define NID_uniqueMember 888 +#define OBJ_uniqueMember OBJ_X509,50L + +#define LN_houseIdentifier "houseIdentifier" +#define NID_houseIdentifier 889 +#define OBJ_houseIdentifier OBJ_X509,51L + +#define LN_supportedAlgorithms "supportedAlgorithms" +#define NID_supportedAlgorithms 890 +#define OBJ_supportedAlgorithms OBJ_X509,52L + +#define LN_deltaRevocationList "deltaRevocationList" +#define NID_deltaRevocationList 891 +#define OBJ_deltaRevocationList OBJ_X509,53L + +#define SN_dmdName "dmdName" +#define NID_dmdName 892 +#define OBJ_dmdName OBJ_X509,54L + +#define LN_pseudonym "pseudonym" +#define NID_pseudonym 510 +#define OBJ_pseudonym OBJ_X509,65L + +#define SN_role "role" +#define LN_role "role" +#define NID_role 400 +#define OBJ_role OBJ_X509,72L + +#define LN_organizationIdentifier "organizationIdentifier" +#define NID_organizationIdentifier 1089 +#define OBJ_organizationIdentifier OBJ_X509,97L + +#define SN_countryCode3c "c3" +#define LN_countryCode3c "countryCode3c" +#define NID_countryCode3c 1090 +#define OBJ_countryCode3c OBJ_X509,98L + +#define SN_countryCode3n "n3" +#define LN_countryCode3n "countryCode3n" +#define NID_countryCode3n 1091 +#define OBJ_countryCode3n OBJ_X509,99L + +#define LN_dnsName "dnsName" +#define NID_dnsName 1092 +#define OBJ_dnsName OBJ_X509,100L + +#define SN_X500algorithms "X500algorithms" +#define LN_X500algorithms "directory services - algorithms" +#define NID_X500algorithms 378 +#define OBJ_X500algorithms OBJ_X500,8L + +#define SN_rsa "RSA" +#define LN_rsa "rsa" +#define NID_rsa 19 +#define OBJ_rsa OBJ_X500algorithms,1L,1L + +#define SN_mdc2WithRSA "RSA-MDC2" +#define LN_mdc2WithRSA "mdc2WithRSA" +#define NID_mdc2WithRSA 96 +#define OBJ_mdc2WithRSA OBJ_X500algorithms,3L,100L + +#define SN_mdc2 "MDC2" +#define LN_mdc2 "mdc2" +#define NID_mdc2 95 +#define OBJ_mdc2 OBJ_X500algorithms,3L,101L + +#define SN_id_ce "id-ce" +#define NID_id_ce 81 +#define OBJ_id_ce OBJ_X500,29L + +#define SN_subject_directory_attributes "subjectDirectoryAttributes" +#define LN_subject_directory_attributes "X509v3 Subject Directory Attributes" +#define NID_subject_directory_attributes 769 +#define OBJ_subject_directory_attributes OBJ_id_ce,9L + +#define SN_subject_key_identifier "subjectKeyIdentifier" +#define LN_subject_key_identifier "X509v3 Subject Key Identifier" +#define NID_subject_key_identifier 82 +#define OBJ_subject_key_identifier OBJ_id_ce,14L + +#define SN_key_usage "keyUsage" +#define LN_key_usage "X509v3 Key Usage" +#define NID_key_usage 83 +#define OBJ_key_usage OBJ_id_ce,15L + +#define SN_private_key_usage_period "privateKeyUsagePeriod" +#define LN_private_key_usage_period "X509v3 Private Key Usage Period" +#define NID_private_key_usage_period 84 +#define OBJ_private_key_usage_period OBJ_id_ce,16L + +#define SN_subject_alt_name "subjectAltName" +#define LN_subject_alt_name "X509v3 Subject Alternative Name" +#define NID_subject_alt_name 85 +#define OBJ_subject_alt_name OBJ_id_ce,17L + +#define SN_issuer_alt_name "issuerAltName" +#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" +#define NID_issuer_alt_name 86 +#define OBJ_issuer_alt_name OBJ_id_ce,18L + +#define SN_basic_constraints "basicConstraints" +#define LN_basic_constraints "X509v3 Basic Constraints" +#define NID_basic_constraints 87 +#define OBJ_basic_constraints OBJ_id_ce,19L + +#define SN_crl_number "crlNumber" +#define LN_crl_number "X509v3 CRL Number" +#define NID_crl_number 88 +#define OBJ_crl_number OBJ_id_ce,20L + +#define SN_crl_reason "CRLReason" +#define LN_crl_reason "X509v3 CRL Reason Code" +#define NID_crl_reason 141 +#define OBJ_crl_reason OBJ_id_ce,21L + +#define SN_invalidity_date "invalidityDate" +#define LN_invalidity_date "Invalidity Date" +#define NID_invalidity_date 142 +#define OBJ_invalidity_date OBJ_id_ce,24L + +#define SN_delta_crl "deltaCRL" +#define LN_delta_crl "X509v3 Delta CRL Indicator" +#define NID_delta_crl 140 +#define OBJ_delta_crl OBJ_id_ce,27L + +#define SN_issuing_distribution_point "issuingDistributionPoint" +#define LN_issuing_distribution_point "X509v3 Issuing Distribution Point" +#define NID_issuing_distribution_point 770 +#define OBJ_issuing_distribution_point OBJ_id_ce,28L + +#define SN_certificate_issuer "certificateIssuer" +#define LN_certificate_issuer "X509v3 Certificate Issuer" +#define NID_certificate_issuer 771 +#define OBJ_certificate_issuer OBJ_id_ce,29L + +#define SN_name_constraints "nameConstraints" +#define LN_name_constraints "X509v3 Name Constraints" +#define NID_name_constraints 666 +#define OBJ_name_constraints OBJ_id_ce,30L + +#define SN_crl_distribution_points "crlDistributionPoints" +#define LN_crl_distribution_points "X509v3 CRL Distribution Points" +#define NID_crl_distribution_points 103 +#define OBJ_crl_distribution_points OBJ_id_ce,31L + +#define SN_certificate_policies "certificatePolicies" +#define LN_certificate_policies "X509v3 Certificate Policies" +#define NID_certificate_policies 89 +#define OBJ_certificate_policies OBJ_id_ce,32L + +#define SN_any_policy "anyPolicy" +#define LN_any_policy "X509v3 Any Policy" +#define NID_any_policy 746 +#define OBJ_any_policy OBJ_certificate_policies,0L + +#define SN_policy_mappings "policyMappings" +#define LN_policy_mappings "X509v3 Policy Mappings" +#define NID_policy_mappings 747 +#define OBJ_policy_mappings OBJ_id_ce,33L + +#define SN_authority_key_identifier "authorityKeyIdentifier" +#define LN_authority_key_identifier "X509v3 Authority Key Identifier" +#define NID_authority_key_identifier 90 +#define OBJ_authority_key_identifier OBJ_id_ce,35L + +#define SN_policy_constraints "policyConstraints" +#define LN_policy_constraints "X509v3 Policy Constraints" +#define NID_policy_constraints 401 +#define OBJ_policy_constraints OBJ_id_ce,36L + +#define SN_ext_key_usage "extendedKeyUsage" +#define LN_ext_key_usage "X509v3 Extended Key Usage" +#define NID_ext_key_usage 126 +#define OBJ_ext_key_usage OBJ_id_ce,37L + +#define SN_freshest_crl "freshestCRL" +#define LN_freshest_crl "X509v3 Freshest CRL" +#define NID_freshest_crl 857 +#define OBJ_freshest_crl OBJ_id_ce,46L + +#define SN_inhibit_any_policy "inhibitAnyPolicy" +#define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" +#define NID_inhibit_any_policy 748 +#define OBJ_inhibit_any_policy OBJ_id_ce,54L + +#define SN_target_information "targetInformation" +#define LN_target_information "X509v3 AC Targeting" +#define NID_target_information 402 +#define OBJ_target_information OBJ_id_ce,55L + +#define SN_no_rev_avail "noRevAvail" +#define LN_no_rev_avail "X509v3 No Revocation Available" +#define NID_no_rev_avail 403 +#define OBJ_no_rev_avail OBJ_id_ce,56L + +#define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" +#define LN_anyExtendedKeyUsage "Any Extended Key Usage" +#define NID_anyExtendedKeyUsage 910 +#define OBJ_anyExtendedKeyUsage OBJ_ext_key_usage,0L + +#define SN_netscape "Netscape" +#define LN_netscape "Netscape Communications Corp." +#define NID_netscape 57 +#define OBJ_netscape 2L,16L,840L,1L,113730L + +#define SN_netscape_cert_extension "nsCertExt" +#define LN_netscape_cert_extension "Netscape Certificate Extension" +#define NID_netscape_cert_extension 58 +#define OBJ_netscape_cert_extension OBJ_netscape,1L + +#define SN_netscape_data_type "nsDataType" +#define LN_netscape_data_type "Netscape Data Type" +#define NID_netscape_data_type 59 +#define OBJ_netscape_data_type OBJ_netscape,2L + +#define SN_netscape_cert_type "nsCertType" +#define LN_netscape_cert_type "Netscape Cert Type" +#define NID_netscape_cert_type 71 +#define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L + +#define SN_netscape_base_url "nsBaseUrl" +#define LN_netscape_base_url "Netscape Base Url" +#define NID_netscape_base_url 72 +#define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L + +#define SN_netscape_revocation_url "nsRevocationUrl" +#define LN_netscape_revocation_url "Netscape Revocation Url" +#define NID_netscape_revocation_url 73 +#define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L + +#define SN_netscape_ca_revocation_url "nsCaRevocationUrl" +#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" +#define NID_netscape_ca_revocation_url 74 +#define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L + +#define SN_netscape_renewal_url "nsRenewalUrl" +#define LN_netscape_renewal_url "Netscape Renewal Url" +#define NID_netscape_renewal_url 75 +#define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L + +#define SN_netscape_ca_policy_url "nsCaPolicyUrl" +#define LN_netscape_ca_policy_url "Netscape CA Policy Url" +#define NID_netscape_ca_policy_url 76 +#define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L + +#define SN_netscape_ssl_server_name "nsSslServerName" +#define LN_netscape_ssl_server_name "Netscape SSL Server Name" +#define NID_netscape_ssl_server_name 77 +#define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L + +#define SN_netscape_comment "nsComment" +#define LN_netscape_comment "Netscape Comment" +#define NID_netscape_comment 78 +#define OBJ_netscape_comment OBJ_netscape_cert_extension,13L + +#define SN_netscape_cert_sequence "nsCertSequence" +#define LN_netscape_cert_sequence "Netscape Certificate Sequence" +#define NID_netscape_cert_sequence 79 +#define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L + +#define SN_ns_sgc "nsSGC" +#define LN_ns_sgc "Netscape Server Gated Crypto" +#define NID_ns_sgc 139 +#define OBJ_ns_sgc OBJ_netscape,4L,1L + +#define SN_org "ORG" +#define LN_org "org" +#define NID_org 379 +#define OBJ_org OBJ_iso,3L + +#define SN_dod "DOD" +#define LN_dod "dod" +#define NID_dod 380 +#define OBJ_dod OBJ_org,6L + +#define SN_iana "IANA" +#define LN_iana "iana" +#define NID_iana 381 +#define OBJ_iana OBJ_dod,1L + +#define OBJ_internet OBJ_iana + +#define SN_Directory "directory" +#define LN_Directory "Directory" +#define NID_Directory 382 +#define OBJ_Directory OBJ_internet,1L + +#define SN_Management "mgmt" +#define LN_Management "Management" +#define NID_Management 383 +#define OBJ_Management OBJ_internet,2L + +#define SN_Experimental "experimental" +#define LN_Experimental "Experimental" +#define NID_Experimental 384 +#define OBJ_Experimental OBJ_internet,3L + +#define SN_Private "private" +#define LN_Private "Private" +#define NID_Private 385 +#define OBJ_Private OBJ_internet,4L + +#define SN_Security "security" +#define LN_Security "Security" +#define NID_Security 386 +#define OBJ_Security OBJ_internet,5L + +#define SN_SNMPv2 "snmpv2" +#define LN_SNMPv2 "SNMPv2" +#define NID_SNMPv2 387 +#define OBJ_SNMPv2 OBJ_internet,6L + +#define LN_Mail "Mail" +#define NID_Mail 388 +#define OBJ_Mail OBJ_internet,7L + +#define SN_Enterprises "enterprises" +#define LN_Enterprises "Enterprises" +#define NID_Enterprises 389 +#define OBJ_Enterprises OBJ_Private,1L + +#define SN_dcObject "dcobject" +#define LN_dcObject "dcObject" +#define NID_dcObject 390 +#define OBJ_dcObject OBJ_Enterprises,1466L,344L + +#define SN_mime_mhs "mime-mhs" +#define LN_mime_mhs "MIME MHS" +#define NID_mime_mhs 504 +#define OBJ_mime_mhs OBJ_Mail,1L + +#define SN_mime_mhs_headings "mime-mhs-headings" +#define LN_mime_mhs_headings "mime-mhs-headings" +#define NID_mime_mhs_headings 505 +#define OBJ_mime_mhs_headings OBJ_mime_mhs,1L + +#define SN_mime_mhs_bodies "mime-mhs-bodies" +#define LN_mime_mhs_bodies "mime-mhs-bodies" +#define NID_mime_mhs_bodies 506 +#define OBJ_mime_mhs_bodies OBJ_mime_mhs,2L + +#define SN_id_hex_partial_message "id-hex-partial-message" +#define LN_id_hex_partial_message "id-hex-partial-message" +#define NID_id_hex_partial_message 507 +#define OBJ_id_hex_partial_message OBJ_mime_mhs_headings,1L + +#define SN_id_hex_multipart_message "id-hex-multipart-message" +#define LN_id_hex_multipart_message "id-hex-multipart-message" +#define NID_id_hex_multipart_message 508 +#define OBJ_id_hex_multipart_message OBJ_mime_mhs_headings,2L + +#define SN_zlib_compression "ZLIB" +#define LN_zlib_compression "zlib compression" +#define NID_zlib_compression 125 +#define OBJ_zlib_compression OBJ_id_smime_alg,8L + +#define OBJ_csor 2L,16L,840L,1L,101L,3L + +#define OBJ_nistAlgorithms OBJ_csor,4L + +#define OBJ_aes OBJ_nistAlgorithms,1L + +#define SN_aes_128_ecb "AES-128-ECB" +#define LN_aes_128_ecb "aes-128-ecb" +#define NID_aes_128_ecb 418 +#define OBJ_aes_128_ecb OBJ_aes,1L + +#define SN_aes_128_cbc "AES-128-CBC" +#define LN_aes_128_cbc "aes-128-cbc" +#define NID_aes_128_cbc 419 +#define OBJ_aes_128_cbc OBJ_aes,2L + +#define SN_aes_128_ofb128 "AES-128-OFB" +#define LN_aes_128_ofb128 "aes-128-ofb" +#define NID_aes_128_ofb128 420 +#define OBJ_aes_128_ofb128 OBJ_aes,3L + +#define SN_aes_128_cfb128 "AES-128-CFB" +#define LN_aes_128_cfb128 "aes-128-cfb" +#define NID_aes_128_cfb128 421 +#define OBJ_aes_128_cfb128 OBJ_aes,4L + +#define SN_id_aes128_wrap "id-aes128-wrap" +#define NID_id_aes128_wrap 788 +#define OBJ_id_aes128_wrap OBJ_aes,5L + +#define SN_aes_128_gcm "id-aes128-GCM" +#define LN_aes_128_gcm "aes-128-gcm" +#define NID_aes_128_gcm 895 +#define OBJ_aes_128_gcm OBJ_aes,6L + +#define SN_aes_128_ccm "id-aes128-CCM" +#define LN_aes_128_ccm "aes-128-ccm" +#define NID_aes_128_ccm 896 +#define OBJ_aes_128_ccm OBJ_aes,7L + +#define SN_id_aes128_wrap_pad "id-aes128-wrap-pad" +#define NID_id_aes128_wrap_pad 897 +#define OBJ_id_aes128_wrap_pad OBJ_aes,8L + +#define SN_aes_192_ecb "AES-192-ECB" +#define LN_aes_192_ecb "aes-192-ecb" +#define NID_aes_192_ecb 422 +#define OBJ_aes_192_ecb OBJ_aes,21L + +#define SN_aes_192_cbc "AES-192-CBC" +#define LN_aes_192_cbc "aes-192-cbc" +#define NID_aes_192_cbc 423 +#define OBJ_aes_192_cbc OBJ_aes,22L + +#define SN_aes_192_ofb128 "AES-192-OFB" +#define LN_aes_192_ofb128 "aes-192-ofb" +#define NID_aes_192_ofb128 424 +#define OBJ_aes_192_ofb128 OBJ_aes,23L + +#define SN_aes_192_cfb128 "AES-192-CFB" +#define LN_aes_192_cfb128 "aes-192-cfb" +#define NID_aes_192_cfb128 425 +#define OBJ_aes_192_cfb128 OBJ_aes,24L + +#define SN_id_aes192_wrap "id-aes192-wrap" +#define NID_id_aes192_wrap 789 +#define OBJ_id_aes192_wrap OBJ_aes,25L + +#define SN_aes_192_gcm "id-aes192-GCM" +#define LN_aes_192_gcm "aes-192-gcm" +#define NID_aes_192_gcm 898 +#define OBJ_aes_192_gcm OBJ_aes,26L + +#define SN_aes_192_ccm "id-aes192-CCM" +#define LN_aes_192_ccm "aes-192-ccm" +#define NID_aes_192_ccm 899 +#define OBJ_aes_192_ccm OBJ_aes,27L + +#define SN_id_aes192_wrap_pad "id-aes192-wrap-pad" +#define NID_id_aes192_wrap_pad 900 +#define OBJ_id_aes192_wrap_pad OBJ_aes,28L + +#define SN_aes_256_ecb "AES-256-ECB" +#define LN_aes_256_ecb "aes-256-ecb" +#define NID_aes_256_ecb 426 +#define OBJ_aes_256_ecb OBJ_aes,41L + +#define SN_aes_256_cbc "AES-256-CBC" +#define LN_aes_256_cbc "aes-256-cbc" +#define NID_aes_256_cbc 427 +#define OBJ_aes_256_cbc OBJ_aes,42L + +#define SN_aes_256_ofb128 "AES-256-OFB" +#define LN_aes_256_ofb128 "aes-256-ofb" +#define NID_aes_256_ofb128 428 +#define OBJ_aes_256_ofb128 OBJ_aes,43L + +#define SN_aes_256_cfb128 "AES-256-CFB" +#define LN_aes_256_cfb128 "aes-256-cfb" +#define NID_aes_256_cfb128 429 +#define OBJ_aes_256_cfb128 OBJ_aes,44L + +#define SN_id_aes256_wrap "id-aes256-wrap" +#define NID_id_aes256_wrap 790 +#define OBJ_id_aes256_wrap OBJ_aes,45L + +#define SN_aes_256_gcm "id-aes256-GCM" +#define LN_aes_256_gcm "aes-256-gcm" +#define NID_aes_256_gcm 901 +#define OBJ_aes_256_gcm OBJ_aes,46L + +#define SN_aes_256_ccm "id-aes256-CCM" +#define LN_aes_256_ccm "aes-256-ccm" +#define NID_aes_256_ccm 902 +#define OBJ_aes_256_ccm OBJ_aes,47L + +#define SN_id_aes256_wrap_pad "id-aes256-wrap-pad" +#define NID_id_aes256_wrap_pad 903 +#define OBJ_id_aes256_wrap_pad OBJ_aes,48L + +#define SN_aes_128_xts "AES-128-XTS" +#define LN_aes_128_xts "aes-128-xts" +#define NID_aes_128_xts 913 +#define OBJ_aes_128_xts OBJ_ieee_siswg,0L,1L,1L + +#define SN_aes_256_xts "AES-256-XTS" +#define LN_aes_256_xts "aes-256-xts" +#define NID_aes_256_xts 914 +#define OBJ_aes_256_xts OBJ_ieee_siswg,0L,1L,2L + +#define SN_aes_128_cfb1 "AES-128-CFB1" +#define LN_aes_128_cfb1 "aes-128-cfb1" +#define NID_aes_128_cfb1 650 + +#define SN_aes_192_cfb1 "AES-192-CFB1" +#define LN_aes_192_cfb1 "aes-192-cfb1" +#define NID_aes_192_cfb1 651 + +#define SN_aes_256_cfb1 "AES-256-CFB1" +#define LN_aes_256_cfb1 "aes-256-cfb1" +#define NID_aes_256_cfb1 652 + +#define SN_aes_128_cfb8 "AES-128-CFB8" +#define LN_aes_128_cfb8 "aes-128-cfb8" +#define NID_aes_128_cfb8 653 + +#define SN_aes_192_cfb8 "AES-192-CFB8" +#define LN_aes_192_cfb8 "aes-192-cfb8" +#define NID_aes_192_cfb8 654 + +#define SN_aes_256_cfb8 "AES-256-CFB8" +#define LN_aes_256_cfb8 "aes-256-cfb8" +#define NID_aes_256_cfb8 655 + +#define SN_aes_128_ctr "AES-128-CTR" +#define LN_aes_128_ctr "aes-128-ctr" +#define NID_aes_128_ctr 904 + +#define SN_aes_192_ctr "AES-192-CTR" +#define LN_aes_192_ctr "aes-192-ctr" +#define NID_aes_192_ctr 905 + +#define SN_aes_256_ctr "AES-256-CTR" +#define LN_aes_256_ctr "aes-256-ctr" +#define NID_aes_256_ctr 906 + +#define SN_aes_128_ocb "AES-128-OCB" +#define LN_aes_128_ocb "aes-128-ocb" +#define NID_aes_128_ocb 958 + +#define SN_aes_192_ocb "AES-192-OCB" +#define LN_aes_192_ocb "aes-192-ocb" +#define NID_aes_192_ocb 959 + +#define SN_aes_256_ocb "AES-256-OCB" +#define LN_aes_256_ocb "aes-256-ocb" +#define NID_aes_256_ocb 960 + +#define SN_des_cfb1 "DES-CFB1" +#define LN_des_cfb1 "des-cfb1" +#define NID_des_cfb1 656 + +#define SN_des_cfb8 "DES-CFB8" +#define LN_des_cfb8 "des-cfb8" +#define NID_des_cfb8 657 + +#define SN_des_ede3_cfb1 "DES-EDE3-CFB1" +#define LN_des_ede3_cfb1 "des-ede3-cfb1" +#define NID_des_ede3_cfb1 658 + +#define SN_des_ede3_cfb8 "DES-EDE3-CFB8" +#define LN_des_ede3_cfb8 "des-ede3-cfb8" +#define NID_des_ede3_cfb8 659 + +#define OBJ_nist_hashalgs OBJ_nistAlgorithms,2L + +#define SN_sha256 "SHA256" +#define LN_sha256 "sha256" +#define NID_sha256 672 +#define OBJ_sha256 OBJ_nist_hashalgs,1L + +#define SN_sha384 "SHA384" +#define LN_sha384 "sha384" +#define NID_sha384 673 +#define OBJ_sha384 OBJ_nist_hashalgs,2L + +#define SN_sha512 "SHA512" +#define LN_sha512 "sha512" +#define NID_sha512 674 +#define OBJ_sha512 OBJ_nist_hashalgs,3L + +#define SN_sha224 "SHA224" +#define LN_sha224 "sha224" +#define NID_sha224 675 +#define OBJ_sha224 OBJ_nist_hashalgs,4L + +#define SN_sha512_224 "SHA512-224" +#define LN_sha512_224 "sha512-224" +#define NID_sha512_224 1094 +#define OBJ_sha512_224 OBJ_nist_hashalgs,5L + +#define SN_sha512_256 "SHA512-256" +#define LN_sha512_256 "sha512-256" +#define NID_sha512_256 1095 +#define OBJ_sha512_256 OBJ_nist_hashalgs,6L + +#define SN_sha3_224 "SHA3-224" +#define LN_sha3_224 "sha3-224" +#define NID_sha3_224 1096 +#define OBJ_sha3_224 OBJ_nist_hashalgs,7L + +#define SN_sha3_256 "SHA3-256" +#define LN_sha3_256 "sha3-256" +#define NID_sha3_256 1097 +#define OBJ_sha3_256 OBJ_nist_hashalgs,8L + +#define SN_sha3_384 "SHA3-384" +#define LN_sha3_384 "sha3-384" +#define NID_sha3_384 1098 +#define OBJ_sha3_384 OBJ_nist_hashalgs,9L + +#define SN_sha3_512 "SHA3-512" +#define LN_sha3_512 "sha3-512" +#define NID_sha3_512 1099 +#define OBJ_sha3_512 OBJ_nist_hashalgs,10L + +#define SN_shake128 "SHAKE128" +#define LN_shake128 "shake128" +#define NID_shake128 1100 +#define OBJ_shake128 OBJ_nist_hashalgs,11L + +#define SN_shake256 "SHAKE256" +#define LN_shake256 "shake256" +#define NID_shake256 1101 +#define OBJ_shake256 OBJ_nist_hashalgs,12L + +#define SN_hmac_sha3_224 "id-hmacWithSHA3-224" +#define LN_hmac_sha3_224 "hmac-sha3-224" +#define NID_hmac_sha3_224 1102 +#define OBJ_hmac_sha3_224 OBJ_nist_hashalgs,13L + +#define SN_hmac_sha3_256 "id-hmacWithSHA3-256" +#define LN_hmac_sha3_256 "hmac-sha3-256" +#define NID_hmac_sha3_256 1103 +#define OBJ_hmac_sha3_256 OBJ_nist_hashalgs,14L + +#define SN_hmac_sha3_384 "id-hmacWithSHA3-384" +#define LN_hmac_sha3_384 "hmac-sha3-384" +#define NID_hmac_sha3_384 1104 +#define OBJ_hmac_sha3_384 OBJ_nist_hashalgs,15L + +#define SN_hmac_sha3_512 "id-hmacWithSHA3-512" +#define LN_hmac_sha3_512 "hmac-sha3-512" +#define NID_hmac_sha3_512 1105 +#define OBJ_hmac_sha3_512 OBJ_nist_hashalgs,16L + +#define OBJ_dsa_with_sha2 OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA224 "dsa_with_SHA224" +#define NID_dsa_with_SHA224 802 +#define OBJ_dsa_with_SHA224 OBJ_dsa_with_sha2,1L + +#define SN_dsa_with_SHA256 "dsa_with_SHA256" +#define NID_dsa_with_SHA256 803 +#define OBJ_dsa_with_SHA256 OBJ_dsa_with_sha2,2L + +#define OBJ_sigAlgs OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA384 "id-dsa-with-sha384" +#define LN_dsa_with_SHA384 "dsa_with_SHA384" +#define NID_dsa_with_SHA384 1106 +#define OBJ_dsa_with_SHA384 OBJ_sigAlgs,3L + +#define SN_dsa_with_SHA512 "id-dsa-with-sha512" +#define LN_dsa_with_SHA512 "dsa_with_SHA512" +#define NID_dsa_with_SHA512 1107 +#define OBJ_dsa_with_SHA512 OBJ_sigAlgs,4L + +#define SN_dsa_with_SHA3_224 "id-dsa-with-sha3-224" +#define LN_dsa_with_SHA3_224 "dsa_with_SHA3-224" +#define NID_dsa_with_SHA3_224 1108 +#define OBJ_dsa_with_SHA3_224 OBJ_sigAlgs,5L + +#define SN_dsa_with_SHA3_256 "id-dsa-with-sha3-256" +#define LN_dsa_with_SHA3_256 "dsa_with_SHA3-256" +#define NID_dsa_with_SHA3_256 1109 +#define OBJ_dsa_with_SHA3_256 OBJ_sigAlgs,6L + +#define SN_dsa_with_SHA3_384 "id-dsa-with-sha3-384" +#define LN_dsa_with_SHA3_384 "dsa_with_SHA3-384" +#define NID_dsa_with_SHA3_384 1110 +#define OBJ_dsa_with_SHA3_384 OBJ_sigAlgs,7L + +#define SN_dsa_with_SHA3_512 "id-dsa-with-sha3-512" +#define LN_dsa_with_SHA3_512 "dsa_with_SHA3-512" +#define NID_dsa_with_SHA3_512 1111 +#define OBJ_dsa_with_SHA3_512 OBJ_sigAlgs,8L + +#define SN_ecdsa_with_SHA3_224 "id-ecdsa-with-sha3-224" +#define LN_ecdsa_with_SHA3_224 "ecdsa_with_SHA3-224" +#define NID_ecdsa_with_SHA3_224 1112 +#define OBJ_ecdsa_with_SHA3_224 OBJ_sigAlgs,9L + +#define SN_ecdsa_with_SHA3_256 "id-ecdsa-with-sha3-256" +#define LN_ecdsa_with_SHA3_256 "ecdsa_with_SHA3-256" +#define NID_ecdsa_with_SHA3_256 1113 +#define OBJ_ecdsa_with_SHA3_256 OBJ_sigAlgs,10L + +#define SN_ecdsa_with_SHA3_384 "id-ecdsa-with-sha3-384" +#define LN_ecdsa_with_SHA3_384 "ecdsa_with_SHA3-384" +#define NID_ecdsa_with_SHA3_384 1114 +#define OBJ_ecdsa_with_SHA3_384 OBJ_sigAlgs,11L + +#define SN_ecdsa_with_SHA3_512 "id-ecdsa-with-sha3-512" +#define LN_ecdsa_with_SHA3_512 "ecdsa_with_SHA3-512" +#define NID_ecdsa_with_SHA3_512 1115 +#define OBJ_ecdsa_with_SHA3_512 OBJ_sigAlgs,12L + +#define SN_RSA_SHA3_224 "id-rsassa-pkcs1-v1_5-with-sha3-224" +#define LN_RSA_SHA3_224 "RSA-SHA3-224" +#define NID_RSA_SHA3_224 1116 +#define OBJ_RSA_SHA3_224 OBJ_sigAlgs,13L + +#define SN_RSA_SHA3_256 "id-rsassa-pkcs1-v1_5-with-sha3-256" +#define LN_RSA_SHA3_256 "RSA-SHA3-256" +#define NID_RSA_SHA3_256 1117 +#define OBJ_RSA_SHA3_256 OBJ_sigAlgs,14L + +#define SN_RSA_SHA3_384 "id-rsassa-pkcs1-v1_5-with-sha3-384" +#define LN_RSA_SHA3_384 "RSA-SHA3-384" +#define NID_RSA_SHA3_384 1118 +#define OBJ_RSA_SHA3_384 OBJ_sigAlgs,15L + +#define SN_RSA_SHA3_512 "id-rsassa-pkcs1-v1_5-with-sha3-512" +#define LN_RSA_SHA3_512 "RSA-SHA3-512" +#define NID_RSA_SHA3_512 1119 +#define OBJ_RSA_SHA3_512 OBJ_sigAlgs,16L + +#define SN_hold_instruction_code "holdInstructionCode" +#define LN_hold_instruction_code "Hold Instruction Code" +#define NID_hold_instruction_code 430 +#define OBJ_hold_instruction_code OBJ_id_ce,23L + +#define OBJ_holdInstruction OBJ_X9_57,2L + +#define SN_hold_instruction_none "holdInstructionNone" +#define LN_hold_instruction_none "Hold Instruction None" +#define NID_hold_instruction_none 431 +#define OBJ_hold_instruction_none OBJ_holdInstruction,1L + +#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer" +#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer" +#define NID_hold_instruction_call_issuer 432 +#define OBJ_hold_instruction_call_issuer OBJ_holdInstruction,2L + +#define SN_hold_instruction_reject "holdInstructionReject" +#define LN_hold_instruction_reject "Hold Instruction Reject" +#define NID_hold_instruction_reject 433 +#define OBJ_hold_instruction_reject OBJ_holdInstruction,3L + +#define SN_data "data" +#define NID_data 434 +#define OBJ_data OBJ_itu_t,9L + +#define SN_pss "pss" +#define NID_pss 435 +#define OBJ_pss OBJ_data,2342L + +#define SN_ucl "ucl" +#define NID_ucl 436 +#define OBJ_ucl OBJ_pss,19200300L + +#define SN_pilot "pilot" +#define NID_pilot 437 +#define OBJ_pilot OBJ_ucl,100L + +#define LN_pilotAttributeType "pilotAttributeType" +#define NID_pilotAttributeType 438 +#define OBJ_pilotAttributeType OBJ_pilot,1L + +#define LN_pilotAttributeSyntax "pilotAttributeSyntax" +#define NID_pilotAttributeSyntax 439 +#define OBJ_pilotAttributeSyntax OBJ_pilot,3L + +#define LN_pilotObjectClass "pilotObjectClass" +#define NID_pilotObjectClass 440 +#define OBJ_pilotObjectClass OBJ_pilot,4L + +#define LN_pilotGroups "pilotGroups" +#define NID_pilotGroups 441 +#define OBJ_pilotGroups OBJ_pilot,10L + +#define LN_iA5StringSyntax "iA5StringSyntax" +#define NID_iA5StringSyntax 442 +#define OBJ_iA5StringSyntax OBJ_pilotAttributeSyntax,4L + +#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax" +#define NID_caseIgnoreIA5StringSyntax 443 +#define OBJ_caseIgnoreIA5StringSyntax OBJ_pilotAttributeSyntax,5L + +#define LN_pilotObject "pilotObject" +#define NID_pilotObject 444 +#define OBJ_pilotObject OBJ_pilotObjectClass,3L + +#define LN_pilotPerson "pilotPerson" +#define NID_pilotPerson 445 +#define OBJ_pilotPerson OBJ_pilotObjectClass,4L + +#define SN_account "account" +#define NID_account 446 +#define OBJ_account OBJ_pilotObjectClass,5L + +#define SN_document "document" +#define NID_document 447 +#define OBJ_document OBJ_pilotObjectClass,6L + +#define SN_room "room" +#define NID_room 448 +#define OBJ_room OBJ_pilotObjectClass,7L + +#define LN_documentSeries "documentSeries" +#define NID_documentSeries 449 +#define OBJ_documentSeries OBJ_pilotObjectClass,9L + +#define SN_Domain "domain" +#define LN_Domain "Domain" +#define NID_Domain 392 +#define OBJ_Domain OBJ_pilotObjectClass,13L + +#define LN_rFC822localPart "rFC822localPart" +#define NID_rFC822localPart 450 +#define OBJ_rFC822localPart OBJ_pilotObjectClass,14L + +#define LN_dNSDomain "dNSDomain" +#define NID_dNSDomain 451 +#define OBJ_dNSDomain OBJ_pilotObjectClass,15L + +#define LN_domainRelatedObject "domainRelatedObject" +#define NID_domainRelatedObject 452 +#define OBJ_domainRelatedObject OBJ_pilotObjectClass,17L + +#define LN_friendlyCountry "friendlyCountry" +#define NID_friendlyCountry 453 +#define OBJ_friendlyCountry OBJ_pilotObjectClass,18L + +#define LN_simpleSecurityObject "simpleSecurityObject" +#define NID_simpleSecurityObject 454 +#define OBJ_simpleSecurityObject OBJ_pilotObjectClass,19L + +#define LN_pilotOrganization "pilotOrganization" +#define NID_pilotOrganization 455 +#define OBJ_pilotOrganization OBJ_pilotObjectClass,20L + +#define LN_pilotDSA "pilotDSA" +#define NID_pilotDSA 456 +#define OBJ_pilotDSA OBJ_pilotObjectClass,21L + +#define LN_qualityLabelledData "qualityLabelledData" +#define NID_qualityLabelledData 457 +#define OBJ_qualityLabelledData OBJ_pilotObjectClass,22L + +#define SN_userId "UID" +#define LN_userId "userId" +#define NID_userId 458 +#define OBJ_userId OBJ_pilotAttributeType,1L + +#define LN_textEncodedORAddress "textEncodedORAddress" +#define NID_textEncodedORAddress 459 +#define OBJ_textEncodedORAddress OBJ_pilotAttributeType,2L + +#define SN_rfc822Mailbox "mail" +#define LN_rfc822Mailbox "rfc822Mailbox" +#define NID_rfc822Mailbox 460 +#define OBJ_rfc822Mailbox OBJ_pilotAttributeType,3L + +#define SN_info "info" +#define NID_info 461 +#define OBJ_info OBJ_pilotAttributeType,4L + +#define LN_favouriteDrink "favouriteDrink" +#define NID_favouriteDrink 462 +#define OBJ_favouriteDrink OBJ_pilotAttributeType,5L + +#define LN_roomNumber "roomNumber" +#define NID_roomNumber 463 +#define OBJ_roomNumber OBJ_pilotAttributeType,6L + +#define SN_photo "photo" +#define NID_photo 464 +#define OBJ_photo OBJ_pilotAttributeType,7L + +#define LN_userClass "userClass" +#define NID_userClass 465 +#define OBJ_userClass OBJ_pilotAttributeType,8L + +#define SN_host "host" +#define NID_host 466 +#define OBJ_host OBJ_pilotAttributeType,9L + +#define SN_manager "manager" +#define NID_manager 467 +#define OBJ_manager OBJ_pilotAttributeType,10L + +#define LN_documentIdentifier "documentIdentifier" +#define NID_documentIdentifier 468 +#define OBJ_documentIdentifier OBJ_pilotAttributeType,11L + +#define LN_documentTitle "documentTitle" +#define NID_documentTitle 469 +#define OBJ_documentTitle OBJ_pilotAttributeType,12L + +#define LN_documentVersion "documentVersion" +#define NID_documentVersion 470 +#define OBJ_documentVersion OBJ_pilotAttributeType,13L + +#define LN_documentAuthor "documentAuthor" +#define NID_documentAuthor 471 +#define OBJ_documentAuthor OBJ_pilotAttributeType,14L + +#define LN_documentLocation "documentLocation" +#define NID_documentLocation 472 +#define OBJ_documentLocation OBJ_pilotAttributeType,15L + +#define LN_homeTelephoneNumber "homeTelephoneNumber" +#define NID_homeTelephoneNumber 473 +#define OBJ_homeTelephoneNumber OBJ_pilotAttributeType,20L + +#define SN_secretary "secretary" +#define NID_secretary 474 +#define OBJ_secretary OBJ_pilotAttributeType,21L + +#define LN_otherMailbox "otherMailbox" +#define NID_otherMailbox 475 +#define OBJ_otherMailbox OBJ_pilotAttributeType,22L + +#define LN_lastModifiedTime "lastModifiedTime" +#define NID_lastModifiedTime 476 +#define OBJ_lastModifiedTime OBJ_pilotAttributeType,23L + +#define LN_lastModifiedBy "lastModifiedBy" +#define NID_lastModifiedBy 477 +#define OBJ_lastModifiedBy OBJ_pilotAttributeType,24L + +#define SN_domainComponent "DC" +#define LN_domainComponent "domainComponent" +#define NID_domainComponent 391 +#define OBJ_domainComponent OBJ_pilotAttributeType,25L + +#define LN_aRecord "aRecord" +#define NID_aRecord 478 +#define OBJ_aRecord OBJ_pilotAttributeType,26L + +#define LN_pilotAttributeType27 "pilotAttributeType27" +#define NID_pilotAttributeType27 479 +#define OBJ_pilotAttributeType27 OBJ_pilotAttributeType,27L + +#define LN_mXRecord "mXRecord" +#define NID_mXRecord 480 +#define OBJ_mXRecord OBJ_pilotAttributeType,28L + +#define LN_nSRecord "nSRecord" +#define NID_nSRecord 481 +#define OBJ_nSRecord OBJ_pilotAttributeType,29L + +#define LN_sOARecord "sOARecord" +#define NID_sOARecord 482 +#define OBJ_sOARecord OBJ_pilotAttributeType,30L + +#define LN_cNAMERecord "cNAMERecord" +#define NID_cNAMERecord 483 +#define OBJ_cNAMERecord OBJ_pilotAttributeType,31L + +#define LN_associatedDomain "associatedDomain" +#define NID_associatedDomain 484 +#define OBJ_associatedDomain OBJ_pilotAttributeType,37L + +#define LN_associatedName "associatedName" +#define NID_associatedName 485 +#define OBJ_associatedName OBJ_pilotAttributeType,38L + +#define LN_homePostalAddress "homePostalAddress" +#define NID_homePostalAddress 486 +#define OBJ_homePostalAddress OBJ_pilotAttributeType,39L + +#define LN_personalTitle "personalTitle" +#define NID_personalTitle 487 +#define OBJ_personalTitle OBJ_pilotAttributeType,40L + +#define LN_mobileTelephoneNumber "mobileTelephoneNumber" +#define NID_mobileTelephoneNumber 488 +#define OBJ_mobileTelephoneNumber OBJ_pilotAttributeType,41L + +#define LN_pagerTelephoneNumber "pagerTelephoneNumber" +#define NID_pagerTelephoneNumber 489 +#define OBJ_pagerTelephoneNumber OBJ_pilotAttributeType,42L + +#define LN_friendlyCountryName "friendlyCountryName" +#define NID_friendlyCountryName 490 +#define OBJ_friendlyCountryName OBJ_pilotAttributeType,43L + +#define SN_uniqueIdentifier "uid" +#define LN_uniqueIdentifier "uniqueIdentifier" +#define NID_uniqueIdentifier 102 +#define OBJ_uniqueIdentifier OBJ_pilotAttributeType,44L + +#define LN_organizationalStatus "organizationalStatus" +#define NID_organizationalStatus 491 +#define OBJ_organizationalStatus OBJ_pilotAttributeType,45L + +#define LN_janetMailbox "janetMailbox" +#define NID_janetMailbox 492 +#define OBJ_janetMailbox OBJ_pilotAttributeType,46L + +#define LN_mailPreferenceOption "mailPreferenceOption" +#define NID_mailPreferenceOption 493 +#define OBJ_mailPreferenceOption OBJ_pilotAttributeType,47L + +#define LN_buildingName "buildingName" +#define NID_buildingName 494 +#define OBJ_buildingName OBJ_pilotAttributeType,48L + +#define LN_dSAQuality "dSAQuality" +#define NID_dSAQuality 495 +#define OBJ_dSAQuality OBJ_pilotAttributeType,49L + +#define LN_singleLevelQuality "singleLevelQuality" +#define NID_singleLevelQuality 496 +#define OBJ_singleLevelQuality OBJ_pilotAttributeType,50L + +#define LN_subtreeMinimumQuality "subtreeMinimumQuality" +#define NID_subtreeMinimumQuality 497 +#define OBJ_subtreeMinimumQuality OBJ_pilotAttributeType,51L + +#define LN_subtreeMaximumQuality "subtreeMaximumQuality" +#define NID_subtreeMaximumQuality 498 +#define OBJ_subtreeMaximumQuality OBJ_pilotAttributeType,52L + +#define LN_personalSignature "personalSignature" +#define NID_personalSignature 499 +#define OBJ_personalSignature OBJ_pilotAttributeType,53L + +#define LN_dITRedirect "dITRedirect" +#define NID_dITRedirect 500 +#define OBJ_dITRedirect OBJ_pilotAttributeType,54L + +#define SN_audio "audio" +#define NID_audio 501 +#define OBJ_audio OBJ_pilotAttributeType,55L + +#define LN_documentPublisher "documentPublisher" +#define NID_documentPublisher 502 +#define OBJ_documentPublisher OBJ_pilotAttributeType,56L + +#define SN_id_set "id-set" +#define LN_id_set "Secure Electronic Transactions" +#define NID_id_set 512 +#define OBJ_id_set OBJ_international_organizations,42L + +#define SN_set_ctype "set-ctype" +#define LN_set_ctype "content types" +#define NID_set_ctype 513 +#define OBJ_set_ctype OBJ_id_set,0L + +#define SN_set_msgExt "set-msgExt" +#define LN_set_msgExt "message extensions" +#define NID_set_msgExt 514 +#define OBJ_set_msgExt OBJ_id_set,1L + +#define SN_set_attr "set-attr" +#define NID_set_attr 515 +#define OBJ_set_attr OBJ_id_set,3L + +#define SN_set_policy "set-policy" +#define NID_set_policy 516 +#define OBJ_set_policy OBJ_id_set,5L + +#define SN_set_certExt "set-certExt" +#define LN_set_certExt "certificate extensions" +#define NID_set_certExt 517 +#define OBJ_set_certExt OBJ_id_set,7L + +#define SN_set_brand "set-brand" +#define NID_set_brand 518 +#define OBJ_set_brand OBJ_id_set,8L + +#define SN_setct_PANData "setct-PANData" +#define NID_setct_PANData 519 +#define OBJ_setct_PANData OBJ_set_ctype,0L + +#define SN_setct_PANToken "setct-PANToken" +#define NID_setct_PANToken 520 +#define OBJ_setct_PANToken OBJ_set_ctype,1L + +#define SN_setct_PANOnly "setct-PANOnly" +#define NID_setct_PANOnly 521 +#define OBJ_setct_PANOnly OBJ_set_ctype,2L + +#define SN_setct_OIData "setct-OIData" +#define NID_setct_OIData 522 +#define OBJ_setct_OIData OBJ_set_ctype,3L + +#define SN_setct_PI "setct-PI" +#define NID_setct_PI 523 +#define OBJ_setct_PI OBJ_set_ctype,4L + +#define SN_setct_PIData "setct-PIData" +#define NID_setct_PIData 524 +#define OBJ_setct_PIData OBJ_set_ctype,5L + +#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned" +#define NID_setct_PIDataUnsigned 525 +#define OBJ_setct_PIDataUnsigned OBJ_set_ctype,6L + +#define SN_setct_HODInput "setct-HODInput" +#define NID_setct_HODInput 526 +#define OBJ_setct_HODInput OBJ_set_ctype,7L + +#define SN_setct_AuthResBaggage "setct-AuthResBaggage" +#define NID_setct_AuthResBaggage 527 +#define OBJ_setct_AuthResBaggage OBJ_set_ctype,8L + +#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage" +#define NID_setct_AuthRevReqBaggage 528 +#define OBJ_setct_AuthRevReqBaggage OBJ_set_ctype,9L + +#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage" +#define NID_setct_AuthRevResBaggage 529 +#define OBJ_setct_AuthRevResBaggage OBJ_set_ctype,10L + +#define SN_setct_CapTokenSeq "setct-CapTokenSeq" +#define NID_setct_CapTokenSeq 530 +#define OBJ_setct_CapTokenSeq OBJ_set_ctype,11L + +#define SN_setct_PInitResData "setct-PInitResData" +#define NID_setct_PInitResData 531 +#define OBJ_setct_PInitResData OBJ_set_ctype,12L + +#define SN_setct_PI_TBS "setct-PI-TBS" +#define NID_setct_PI_TBS 532 +#define OBJ_setct_PI_TBS OBJ_set_ctype,13L + +#define SN_setct_PResData "setct-PResData" +#define NID_setct_PResData 533 +#define OBJ_setct_PResData OBJ_set_ctype,14L + +#define SN_setct_AuthReqTBS "setct-AuthReqTBS" +#define NID_setct_AuthReqTBS 534 +#define OBJ_setct_AuthReqTBS OBJ_set_ctype,16L + +#define SN_setct_AuthResTBS "setct-AuthResTBS" +#define NID_setct_AuthResTBS 535 +#define OBJ_setct_AuthResTBS OBJ_set_ctype,17L + +#define SN_setct_AuthResTBSX "setct-AuthResTBSX" +#define NID_setct_AuthResTBSX 536 +#define OBJ_setct_AuthResTBSX OBJ_set_ctype,18L + +#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS" +#define NID_setct_AuthTokenTBS 537 +#define OBJ_setct_AuthTokenTBS OBJ_set_ctype,19L + +#define SN_setct_CapTokenData "setct-CapTokenData" +#define NID_setct_CapTokenData 538 +#define OBJ_setct_CapTokenData OBJ_set_ctype,20L + +#define SN_setct_CapTokenTBS "setct-CapTokenTBS" +#define NID_setct_CapTokenTBS 539 +#define OBJ_setct_CapTokenTBS OBJ_set_ctype,21L + +#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg" +#define NID_setct_AcqCardCodeMsg 540 +#define OBJ_setct_AcqCardCodeMsg OBJ_set_ctype,22L + +#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS" +#define NID_setct_AuthRevReqTBS 541 +#define OBJ_setct_AuthRevReqTBS OBJ_set_ctype,23L + +#define SN_setct_AuthRevResData "setct-AuthRevResData" +#define NID_setct_AuthRevResData 542 +#define OBJ_setct_AuthRevResData OBJ_set_ctype,24L + +#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS" +#define NID_setct_AuthRevResTBS 543 +#define OBJ_setct_AuthRevResTBS OBJ_set_ctype,25L + +#define SN_setct_CapReqTBS "setct-CapReqTBS" +#define NID_setct_CapReqTBS 544 +#define OBJ_setct_CapReqTBS OBJ_set_ctype,26L + +#define SN_setct_CapReqTBSX "setct-CapReqTBSX" +#define NID_setct_CapReqTBSX 545 +#define OBJ_setct_CapReqTBSX OBJ_set_ctype,27L + +#define SN_setct_CapResData "setct-CapResData" +#define NID_setct_CapResData 546 +#define OBJ_setct_CapResData OBJ_set_ctype,28L + +#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS" +#define NID_setct_CapRevReqTBS 547 +#define OBJ_setct_CapRevReqTBS OBJ_set_ctype,29L + +#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX" +#define NID_setct_CapRevReqTBSX 548 +#define OBJ_setct_CapRevReqTBSX OBJ_set_ctype,30L + +#define SN_setct_CapRevResData "setct-CapRevResData" +#define NID_setct_CapRevResData 549 +#define OBJ_setct_CapRevResData OBJ_set_ctype,31L + +#define SN_setct_CredReqTBS "setct-CredReqTBS" +#define NID_setct_CredReqTBS 550 +#define OBJ_setct_CredReqTBS OBJ_set_ctype,32L + +#define SN_setct_CredReqTBSX "setct-CredReqTBSX" +#define NID_setct_CredReqTBSX 551 +#define OBJ_setct_CredReqTBSX OBJ_set_ctype,33L + +#define SN_setct_CredResData "setct-CredResData" +#define NID_setct_CredResData 552 +#define OBJ_setct_CredResData OBJ_set_ctype,34L + +#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS" +#define NID_setct_CredRevReqTBS 553 +#define OBJ_setct_CredRevReqTBS OBJ_set_ctype,35L + +#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX" +#define NID_setct_CredRevReqTBSX 554 +#define OBJ_setct_CredRevReqTBSX OBJ_set_ctype,36L + +#define SN_setct_CredRevResData "setct-CredRevResData" +#define NID_setct_CredRevResData 555 +#define OBJ_setct_CredRevResData OBJ_set_ctype,37L + +#define SN_setct_PCertReqData "setct-PCertReqData" +#define NID_setct_PCertReqData 556 +#define OBJ_setct_PCertReqData OBJ_set_ctype,38L + +#define SN_setct_PCertResTBS "setct-PCertResTBS" +#define NID_setct_PCertResTBS 557 +#define OBJ_setct_PCertResTBS OBJ_set_ctype,39L + +#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData" +#define NID_setct_BatchAdminReqData 558 +#define OBJ_setct_BatchAdminReqData OBJ_set_ctype,40L + +#define SN_setct_BatchAdminResData "setct-BatchAdminResData" +#define NID_setct_BatchAdminResData 559 +#define OBJ_setct_BatchAdminResData OBJ_set_ctype,41L + +#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS" +#define NID_setct_CardCInitResTBS 560 +#define OBJ_setct_CardCInitResTBS OBJ_set_ctype,42L + +#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS" +#define NID_setct_MeAqCInitResTBS 561 +#define OBJ_setct_MeAqCInitResTBS OBJ_set_ctype,43L + +#define SN_setct_RegFormResTBS "setct-RegFormResTBS" +#define NID_setct_RegFormResTBS 562 +#define OBJ_setct_RegFormResTBS OBJ_set_ctype,44L + +#define SN_setct_CertReqData "setct-CertReqData" +#define NID_setct_CertReqData 563 +#define OBJ_setct_CertReqData OBJ_set_ctype,45L + +#define SN_setct_CertReqTBS "setct-CertReqTBS" +#define NID_setct_CertReqTBS 564 +#define OBJ_setct_CertReqTBS OBJ_set_ctype,46L + +#define SN_setct_CertResData "setct-CertResData" +#define NID_setct_CertResData 565 +#define OBJ_setct_CertResData OBJ_set_ctype,47L + +#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS" +#define NID_setct_CertInqReqTBS 566 +#define OBJ_setct_CertInqReqTBS OBJ_set_ctype,48L + +#define SN_setct_ErrorTBS "setct-ErrorTBS" +#define NID_setct_ErrorTBS 567 +#define OBJ_setct_ErrorTBS OBJ_set_ctype,49L + +#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE" +#define NID_setct_PIDualSignedTBE 568 +#define OBJ_setct_PIDualSignedTBE OBJ_set_ctype,50L + +#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE" +#define NID_setct_PIUnsignedTBE 569 +#define OBJ_setct_PIUnsignedTBE OBJ_set_ctype,51L + +#define SN_setct_AuthReqTBE "setct-AuthReqTBE" +#define NID_setct_AuthReqTBE 570 +#define OBJ_setct_AuthReqTBE OBJ_set_ctype,52L + +#define SN_setct_AuthResTBE "setct-AuthResTBE" +#define NID_setct_AuthResTBE 571 +#define OBJ_setct_AuthResTBE OBJ_set_ctype,53L + +#define SN_setct_AuthResTBEX "setct-AuthResTBEX" +#define NID_setct_AuthResTBEX 572 +#define OBJ_setct_AuthResTBEX OBJ_set_ctype,54L + +#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE" +#define NID_setct_AuthTokenTBE 573 +#define OBJ_setct_AuthTokenTBE OBJ_set_ctype,55L + +#define SN_setct_CapTokenTBE "setct-CapTokenTBE" +#define NID_setct_CapTokenTBE 574 +#define OBJ_setct_CapTokenTBE OBJ_set_ctype,56L + +#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX" +#define NID_setct_CapTokenTBEX 575 +#define OBJ_setct_CapTokenTBEX OBJ_set_ctype,57L + +#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE" +#define NID_setct_AcqCardCodeMsgTBE 576 +#define OBJ_setct_AcqCardCodeMsgTBE OBJ_set_ctype,58L + +#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE" +#define NID_setct_AuthRevReqTBE 577 +#define OBJ_setct_AuthRevReqTBE OBJ_set_ctype,59L + +#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE" +#define NID_setct_AuthRevResTBE 578 +#define OBJ_setct_AuthRevResTBE OBJ_set_ctype,60L + +#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB" +#define NID_setct_AuthRevResTBEB 579 +#define OBJ_setct_AuthRevResTBEB OBJ_set_ctype,61L + +#define SN_setct_CapReqTBE "setct-CapReqTBE" +#define NID_setct_CapReqTBE 580 +#define OBJ_setct_CapReqTBE OBJ_set_ctype,62L + +#define SN_setct_CapReqTBEX "setct-CapReqTBEX" +#define NID_setct_CapReqTBEX 581 +#define OBJ_setct_CapReqTBEX OBJ_set_ctype,63L + +#define SN_setct_CapResTBE "setct-CapResTBE" +#define NID_setct_CapResTBE 582 +#define OBJ_setct_CapResTBE OBJ_set_ctype,64L + +#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE" +#define NID_setct_CapRevReqTBE 583 +#define OBJ_setct_CapRevReqTBE OBJ_set_ctype,65L + +#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX" +#define NID_setct_CapRevReqTBEX 584 +#define OBJ_setct_CapRevReqTBEX OBJ_set_ctype,66L + +#define SN_setct_CapRevResTBE "setct-CapRevResTBE" +#define NID_setct_CapRevResTBE 585 +#define OBJ_setct_CapRevResTBE OBJ_set_ctype,67L + +#define SN_setct_CredReqTBE "setct-CredReqTBE" +#define NID_setct_CredReqTBE 586 +#define OBJ_setct_CredReqTBE OBJ_set_ctype,68L + +#define SN_setct_CredReqTBEX "setct-CredReqTBEX" +#define NID_setct_CredReqTBEX 587 +#define OBJ_setct_CredReqTBEX OBJ_set_ctype,69L + +#define SN_setct_CredResTBE "setct-CredResTBE" +#define NID_setct_CredResTBE 588 +#define OBJ_setct_CredResTBE OBJ_set_ctype,70L + +#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE" +#define NID_setct_CredRevReqTBE 589 +#define OBJ_setct_CredRevReqTBE OBJ_set_ctype,71L + +#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX" +#define NID_setct_CredRevReqTBEX 590 +#define OBJ_setct_CredRevReqTBEX OBJ_set_ctype,72L + +#define SN_setct_CredRevResTBE "setct-CredRevResTBE" +#define NID_setct_CredRevResTBE 591 +#define OBJ_setct_CredRevResTBE OBJ_set_ctype,73L + +#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE" +#define NID_setct_BatchAdminReqTBE 592 +#define OBJ_setct_BatchAdminReqTBE OBJ_set_ctype,74L + +#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE" +#define NID_setct_BatchAdminResTBE 593 +#define OBJ_setct_BatchAdminResTBE OBJ_set_ctype,75L + +#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE" +#define NID_setct_RegFormReqTBE 594 +#define OBJ_setct_RegFormReqTBE OBJ_set_ctype,76L + +#define SN_setct_CertReqTBE "setct-CertReqTBE" +#define NID_setct_CertReqTBE 595 +#define OBJ_setct_CertReqTBE OBJ_set_ctype,77L + +#define SN_setct_CertReqTBEX "setct-CertReqTBEX" +#define NID_setct_CertReqTBEX 596 +#define OBJ_setct_CertReqTBEX OBJ_set_ctype,78L + +#define SN_setct_CertResTBE "setct-CertResTBE" +#define NID_setct_CertResTBE 597 +#define OBJ_setct_CertResTBE OBJ_set_ctype,79L + +#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS" +#define NID_setct_CRLNotificationTBS 598 +#define OBJ_setct_CRLNotificationTBS OBJ_set_ctype,80L + +#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS" +#define NID_setct_CRLNotificationResTBS 599 +#define OBJ_setct_CRLNotificationResTBS OBJ_set_ctype,81L + +#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS" +#define NID_setct_BCIDistributionTBS 600 +#define OBJ_setct_BCIDistributionTBS OBJ_set_ctype,82L + +#define SN_setext_genCrypt "setext-genCrypt" +#define LN_setext_genCrypt "generic cryptogram" +#define NID_setext_genCrypt 601 +#define OBJ_setext_genCrypt OBJ_set_msgExt,1L + +#define SN_setext_miAuth "setext-miAuth" +#define LN_setext_miAuth "merchant initiated auth" +#define NID_setext_miAuth 602 +#define OBJ_setext_miAuth OBJ_set_msgExt,3L + +#define SN_setext_pinSecure "setext-pinSecure" +#define NID_setext_pinSecure 603 +#define OBJ_setext_pinSecure OBJ_set_msgExt,4L + +#define SN_setext_pinAny "setext-pinAny" +#define NID_setext_pinAny 604 +#define OBJ_setext_pinAny OBJ_set_msgExt,5L + +#define SN_setext_track2 "setext-track2" +#define NID_setext_track2 605 +#define OBJ_setext_track2 OBJ_set_msgExt,7L + +#define SN_setext_cv "setext-cv" +#define LN_setext_cv "additional verification" +#define NID_setext_cv 606 +#define OBJ_setext_cv OBJ_set_msgExt,8L + +#define SN_set_policy_root "set-policy-root" +#define NID_set_policy_root 607 +#define OBJ_set_policy_root OBJ_set_policy,0L + +#define SN_setCext_hashedRoot "setCext-hashedRoot" +#define NID_setCext_hashedRoot 608 +#define OBJ_setCext_hashedRoot OBJ_set_certExt,0L + +#define SN_setCext_certType "setCext-certType" +#define NID_setCext_certType 609 +#define OBJ_setCext_certType OBJ_set_certExt,1L + +#define SN_setCext_merchData "setCext-merchData" +#define NID_setCext_merchData 610 +#define OBJ_setCext_merchData OBJ_set_certExt,2L + +#define SN_setCext_cCertRequired "setCext-cCertRequired" +#define NID_setCext_cCertRequired 611 +#define OBJ_setCext_cCertRequired OBJ_set_certExt,3L + +#define SN_setCext_tunneling "setCext-tunneling" +#define NID_setCext_tunneling 612 +#define OBJ_setCext_tunneling OBJ_set_certExt,4L + +#define SN_setCext_setExt "setCext-setExt" +#define NID_setCext_setExt 613 +#define OBJ_setCext_setExt OBJ_set_certExt,5L + +#define SN_setCext_setQualf "setCext-setQualf" +#define NID_setCext_setQualf 614 +#define OBJ_setCext_setQualf OBJ_set_certExt,6L + +#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities" +#define NID_setCext_PGWYcapabilities 615 +#define OBJ_setCext_PGWYcapabilities OBJ_set_certExt,7L + +#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier" +#define NID_setCext_TokenIdentifier 616 +#define OBJ_setCext_TokenIdentifier OBJ_set_certExt,8L + +#define SN_setCext_Track2Data "setCext-Track2Data" +#define NID_setCext_Track2Data 617 +#define OBJ_setCext_Track2Data OBJ_set_certExt,9L + +#define SN_setCext_TokenType "setCext-TokenType" +#define NID_setCext_TokenType 618 +#define OBJ_setCext_TokenType OBJ_set_certExt,10L + +#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities" +#define NID_setCext_IssuerCapabilities 619 +#define OBJ_setCext_IssuerCapabilities OBJ_set_certExt,11L + +#define SN_setAttr_Cert "setAttr-Cert" +#define NID_setAttr_Cert 620 +#define OBJ_setAttr_Cert OBJ_set_attr,0L + +#define SN_setAttr_PGWYcap "setAttr-PGWYcap" +#define LN_setAttr_PGWYcap "payment gateway capabilities" +#define NID_setAttr_PGWYcap 621 +#define OBJ_setAttr_PGWYcap OBJ_set_attr,1L + +#define SN_setAttr_TokenType "setAttr-TokenType" +#define NID_setAttr_TokenType 622 +#define OBJ_setAttr_TokenType OBJ_set_attr,2L + +#define SN_setAttr_IssCap "setAttr-IssCap" +#define LN_setAttr_IssCap "issuer capabilities" +#define NID_setAttr_IssCap 623 +#define OBJ_setAttr_IssCap OBJ_set_attr,3L + +#define SN_set_rootKeyThumb "set-rootKeyThumb" +#define NID_set_rootKeyThumb 624 +#define OBJ_set_rootKeyThumb OBJ_setAttr_Cert,0L + +#define SN_set_addPolicy "set-addPolicy" +#define NID_set_addPolicy 625 +#define OBJ_set_addPolicy OBJ_setAttr_Cert,1L + +#define SN_setAttr_Token_EMV "setAttr-Token-EMV" +#define NID_setAttr_Token_EMV 626 +#define OBJ_setAttr_Token_EMV OBJ_setAttr_TokenType,1L + +#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime" +#define NID_setAttr_Token_B0Prime 627 +#define OBJ_setAttr_Token_B0Prime OBJ_setAttr_TokenType,2L + +#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM" +#define NID_setAttr_IssCap_CVM 628 +#define OBJ_setAttr_IssCap_CVM OBJ_setAttr_IssCap,3L + +#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2" +#define NID_setAttr_IssCap_T2 629 +#define OBJ_setAttr_IssCap_T2 OBJ_setAttr_IssCap,4L + +#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig" +#define NID_setAttr_IssCap_Sig 630 +#define OBJ_setAttr_IssCap_Sig OBJ_setAttr_IssCap,5L + +#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm" +#define LN_setAttr_GenCryptgrm "generate cryptogram" +#define NID_setAttr_GenCryptgrm 631 +#define OBJ_setAttr_GenCryptgrm OBJ_setAttr_IssCap_CVM,1L + +#define SN_setAttr_T2Enc "setAttr-T2Enc" +#define LN_setAttr_T2Enc "encrypted track 2" +#define NID_setAttr_T2Enc 632 +#define OBJ_setAttr_T2Enc OBJ_setAttr_IssCap_T2,1L + +#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt" +#define LN_setAttr_T2cleartxt "cleartext track 2" +#define NID_setAttr_T2cleartxt 633 +#define OBJ_setAttr_T2cleartxt OBJ_setAttr_IssCap_T2,2L + +#define SN_setAttr_TokICCsig "setAttr-TokICCsig" +#define LN_setAttr_TokICCsig "ICC or token signature" +#define NID_setAttr_TokICCsig 634 +#define OBJ_setAttr_TokICCsig OBJ_setAttr_IssCap_Sig,1L + +#define SN_setAttr_SecDevSig "setAttr-SecDevSig" +#define LN_setAttr_SecDevSig "secure device signature" +#define NID_setAttr_SecDevSig 635 +#define OBJ_setAttr_SecDevSig OBJ_setAttr_IssCap_Sig,2L + +#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA" +#define NID_set_brand_IATA_ATA 636 +#define OBJ_set_brand_IATA_ATA OBJ_set_brand,1L + +#define SN_set_brand_Diners "set-brand-Diners" +#define NID_set_brand_Diners 637 +#define OBJ_set_brand_Diners OBJ_set_brand,30L + +#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress" +#define NID_set_brand_AmericanExpress 638 +#define OBJ_set_brand_AmericanExpress OBJ_set_brand,34L + +#define SN_set_brand_JCB "set-brand-JCB" +#define NID_set_brand_JCB 639 +#define OBJ_set_brand_JCB OBJ_set_brand,35L + +#define SN_set_brand_Visa "set-brand-Visa" +#define NID_set_brand_Visa 640 +#define OBJ_set_brand_Visa OBJ_set_brand,4L + +#define SN_set_brand_MasterCard "set-brand-MasterCard" +#define NID_set_brand_MasterCard 641 +#define OBJ_set_brand_MasterCard OBJ_set_brand,5L + +#define SN_set_brand_Novus "set-brand-Novus" +#define NID_set_brand_Novus 642 +#define OBJ_set_brand_Novus OBJ_set_brand,6011L + +#define SN_des_cdmf "DES-CDMF" +#define LN_des_cdmf "des-cdmf" +#define NID_des_cdmf 643 +#define OBJ_des_cdmf OBJ_rsadsi,3L,10L + +#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET" +#define NID_rsaOAEPEncryptionSET 644 +#define OBJ_rsaOAEPEncryptionSET OBJ_rsadsi,1L,1L,6L + +#define SN_ipsec3 "Oakley-EC2N-3" +#define LN_ipsec3 "ipsec3" +#define NID_ipsec3 749 + +#define SN_ipsec4 "Oakley-EC2N-4" +#define LN_ipsec4 "ipsec4" +#define NID_ipsec4 750 + +#define SN_whirlpool "whirlpool" +#define NID_whirlpool 804 +#define OBJ_whirlpool OBJ_iso,0L,10118L,3L,0L,55L + +#define SN_cryptopro "cryptopro" +#define NID_cryptopro 805 +#define OBJ_cryptopro OBJ_member_body,643L,2L,2L + +#define SN_cryptocom "cryptocom" +#define NID_cryptocom 806 +#define OBJ_cryptocom OBJ_member_body,643L,2L,9L + +#define SN_id_tc26 "id-tc26" +#define NID_id_tc26 974 +#define OBJ_id_tc26 OBJ_member_body,643L,7L,1L + +#define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" +#define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" +#define NID_id_GostR3411_94_with_GostR3410_2001 807 +#define OBJ_id_GostR3411_94_with_GostR3410_2001 OBJ_cryptopro,3L + +#define SN_id_GostR3411_94_with_GostR3410_94 "id-GostR3411-94-with-GostR3410-94" +#define LN_id_GostR3411_94_with_GostR3410_94 "GOST R 34.11-94 with GOST R 34.10-94" +#define NID_id_GostR3411_94_with_GostR3410_94 808 +#define OBJ_id_GostR3411_94_with_GostR3410_94 OBJ_cryptopro,4L + +#define SN_id_GostR3411_94 "md_gost94" +#define LN_id_GostR3411_94 "GOST R 34.11-94" +#define NID_id_GostR3411_94 809 +#define OBJ_id_GostR3411_94 OBJ_cryptopro,9L + +#define SN_id_HMACGostR3411_94 "id-HMACGostR3411-94" +#define LN_id_HMACGostR3411_94 "HMAC GOST 34.11-94" +#define NID_id_HMACGostR3411_94 810 +#define OBJ_id_HMACGostR3411_94 OBJ_cryptopro,10L + +#define SN_id_GostR3410_2001 "gost2001" +#define LN_id_GostR3410_2001 "GOST R 34.10-2001" +#define NID_id_GostR3410_2001 811 +#define OBJ_id_GostR3410_2001 OBJ_cryptopro,19L + +#define SN_id_GostR3410_94 "gost94" +#define LN_id_GostR3410_94 "GOST R 34.10-94" +#define NID_id_GostR3410_94 812 +#define OBJ_id_GostR3410_94 OBJ_cryptopro,20L + +#define SN_id_Gost28147_89 "gost89" +#define LN_id_Gost28147_89 "GOST 28147-89" +#define NID_id_Gost28147_89 813 +#define OBJ_id_Gost28147_89 OBJ_cryptopro,21L + +#define SN_gost89_cnt "gost89-cnt" +#define NID_gost89_cnt 814 + +#define SN_gost89_cnt_12 "gost89-cnt-12" +#define NID_gost89_cnt_12 975 + +#define SN_gost89_cbc "gost89-cbc" +#define NID_gost89_cbc 1009 + +#define SN_gost89_ecb "gost89-ecb" +#define NID_gost89_ecb 1010 + +#define SN_gost89_ctr "gost89-ctr" +#define NID_gost89_ctr 1011 + +#define SN_id_Gost28147_89_MAC "gost-mac" +#define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" +#define NID_id_Gost28147_89_MAC 815 +#define OBJ_id_Gost28147_89_MAC OBJ_cryptopro,22L + +#define SN_gost_mac_12 "gost-mac-12" +#define NID_gost_mac_12 976 + +#define SN_id_GostR3411_94_prf "prf-gostr3411-94" +#define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" +#define NID_id_GostR3411_94_prf 816 +#define OBJ_id_GostR3411_94_prf OBJ_cryptopro,23L + +#define SN_id_GostR3410_2001DH "id-GostR3410-2001DH" +#define LN_id_GostR3410_2001DH "GOST R 34.10-2001 DH" +#define NID_id_GostR3410_2001DH 817 +#define OBJ_id_GostR3410_2001DH OBJ_cryptopro,98L + +#define SN_id_GostR3410_94DH "id-GostR3410-94DH" +#define LN_id_GostR3410_94DH "GOST R 34.10-94 DH" +#define NID_id_GostR3410_94DH 818 +#define OBJ_id_GostR3410_94DH OBJ_cryptopro,99L + +#define SN_id_Gost28147_89_CryptoPro_KeyMeshing "id-Gost28147-89-CryptoPro-KeyMeshing" +#define NID_id_Gost28147_89_CryptoPro_KeyMeshing 819 +#define OBJ_id_Gost28147_89_CryptoPro_KeyMeshing OBJ_cryptopro,14L,1L + +#define SN_id_Gost28147_89_None_KeyMeshing "id-Gost28147-89-None-KeyMeshing" +#define NID_id_Gost28147_89_None_KeyMeshing 820 +#define OBJ_id_Gost28147_89_None_KeyMeshing OBJ_cryptopro,14L,0L + +#define SN_id_GostR3411_94_TestParamSet "id-GostR3411-94-TestParamSet" +#define NID_id_GostR3411_94_TestParamSet 821 +#define OBJ_id_GostR3411_94_TestParamSet OBJ_cryptopro,30L,0L + +#define SN_id_GostR3411_94_CryptoProParamSet "id-GostR3411-94-CryptoProParamSet" +#define NID_id_GostR3411_94_CryptoProParamSet 822 +#define OBJ_id_GostR3411_94_CryptoProParamSet OBJ_cryptopro,30L,1L + +#define SN_id_Gost28147_89_TestParamSet "id-Gost28147-89-TestParamSet" +#define NID_id_Gost28147_89_TestParamSet 823 +#define OBJ_id_Gost28147_89_TestParamSet OBJ_cryptopro,31L,0L + +#define SN_id_Gost28147_89_CryptoPro_A_ParamSet "id-Gost28147-89-CryptoPro-A-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_A_ParamSet 824 +#define OBJ_id_Gost28147_89_CryptoPro_A_ParamSet OBJ_cryptopro,31L,1L + +#define SN_id_Gost28147_89_CryptoPro_B_ParamSet "id-Gost28147-89-CryptoPro-B-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_B_ParamSet 825 +#define OBJ_id_Gost28147_89_CryptoPro_B_ParamSet OBJ_cryptopro,31L,2L + +#define SN_id_Gost28147_89_CryptoPro_C_ParamSet "id-Gost28147-89-CryptoPro-C-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_C_ParamSet 826 +#define OBJ_id_Gost28147_89_CryptoPro_C_ParamSet OBJ_cryptopro,31L,3L + +#define SN_id_Gost28147_89_CryptoPro_D_ParamSet "id-Gost28147-89-CryptoPro-D-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_D_ParamSet 827 +#define OBJ_id_Gost28147_89_CryptoPro_D_ParamSet OBJ_cryptopro,31L,4L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 828 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet OBJ_cryptopro,31L,5L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 829 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet OBJ_cryptopro,31L,6L + +#define SN_id_Gost28147_89_CryptoPro_RIC_1_ParamSet "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 830 +#define OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet OBJ_cryptopro,31L,7L + +#define SN_id_GostR3410_94_TestParamSet "id-GostR3410-94-TestParamSet" +#define NID_id_GostR3410_94_TestParamSet 831 +#define OBJ_id_GostR3410_94_TestParamSet OBJ_cryptopro,32L,0L + +#define SN_id_GostR3410_94_CryptoPro_A_ParamSet "id-GostR3410-94-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_A_ParamSet 832 +#define OBJ_id_GostR3410_94_CryptoPro_A_ParamSet OBJ_cryptopro,32L,2L + +#define SN_id_GostR3410_94_CryptoPro_B_ParamSet "id-GostR3410-94-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_B_ParamSet 833 +#define OBJ_id_GostR3410_94_CryptoPro_B_ParamSet OBJ_cryptopro,32L,3L + +#define SN_id_GostR3410_94_CryptoPro_C_ParamSet "id-GostR3410-94-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_C_ParamSet 834 +#define OBJ_id_GostR3410_94_CryptoPro_C_ParamSet OBJ_cryptopro,32L,4L + +#define SN_id_GostR3410_94_CryptoPro_D_ParamSet "id-GostR3410-94-CryptoPro-D-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_D_ParamSet 835 +#define OBJ_id_GostR3410_94_CryptoPro_D_ParamSet OBJ_cryptopro,32L,5L + +#define SN_id_GostR3410_94_CryptoPro_XchA_ParamSet "id-GostR3410-94-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchA_ParamSet 836 +#define OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet OBJ_cryptopro,33L,1L + +#define SN_id_GostR3410_94_CryptoPro_XchB_ParamSet "id-GostR3410-94-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchB_ParamSet 837 +#define OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet OBJ_cryptopro,33L,2L + +#define SN_id_GostR3410_94_CryptoPro_XchC_ParamSet "id-GostR3410-94-CryptoPro-XchC-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchC_ParamSet 838 +#define OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet OBJ_cryptopro,33L,3L + +#define SN_id_GostR3410_2001_TestParamSet "id-GostR3410-2001-TestParamSet" +#define NID_id_GostR3410_2001_TestParamSet 839 +#define OBJ_id_GostR3410_2001_TestParamSet OBJ_cryptopro,35L,0L + +#define SN_id_GostR3410_2001_CryptoPro_A_ParamSet "id-GostR3410-2001-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_A_ParamSet 840 +#define OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet OBJ_cryptopro,35L,1L + +#define SN_id_GostR3410_2001_CryptoPro_B_ParamSet "id-GostR3410-2001-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_B_ParamSet 841 +#define OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet OBJ_cryptopro,35L,2L + +#define SN_id_GostR3410_2001_CryptoPro_C_ParamSet "id-GostR3410-2001-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_C_ParamSet 842 +#define OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet OBJ_cryptopro,35L,3L + +#define SN_id_GostR3410_2001_CryptoPro_XchA_ParamSet "id-GostR3410-2001-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet 843 +#define OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet OBJ_cryptopro,36L,0L + +#define SN_id_GostR3410_2001_CryptoPro_XchB_ParamSet "id-GostR3410-2001-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet 844 +#define OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet OBJ_cryptopro,36L,1L + +#define SN_id_GostR3410_94_a "id-GostR3410-94-a" +#define NID_id_GostR3410_94_a 845 +#define OBJ_id_GostR3410_94_a OBJ_id_GostR3410_94,1L + +#define SN_id_GostR3410_94_aBis "id-GostR3410-94-aBis" +#define NID_id_GostR3410_94_aBis 846 +#define OBJ_id_GostR3410_94_aBis OBJ_id_GostR3410_94,2L + +#define SN_id_GostR3410_94_b "id-GostR3410-94-b" +#define NID_id_GostR3410_94_b 847 +#define OBJ_id_GostR3410_94_b OBJ_id_GostR3410_94,3L + +#define SN_id_GostR3410_94_bBis "id-GostR3410-94-bBis" +#define NID_id_GostR3410_94_bBis 848 +#define OBJ_id_GostR3410_94_bBis OBJ_id_GostR3410_94,4L + +#define SN_id_Gost28147_89_cc "id-Gost28147-89-cc" +#define LN_id_Gost28147_89_cc "GOST 28147-89 Cryptocom ParamSet" +#define NID_id_Gost28147_89_cc 849 +#define OBJ_id_Gost28147_89_cc OBJ_cryptocom,1L,6L,1L + +#define SN_id_GostR3410_94_cc "gost94cc" +#define LN_id_GostR3410_94_cc "GOST 34.10-94 Cryptocom" +#define NID_id_GostR3410_94_cc 850 +#define OBJ_id_GostR3410_94_cc OBJ_cryptocom,1L,5L,3L + +#define SN_id_GostR3410_2001_cc "gost2001cc" +#define LN_id_GostR3410_2001_cc "GOST 34.10-2001 Cryptocom" +#define NID_id_GostR3410_2001_cc 851 +#define OBJ_id_GostR3410_2001_cc OBJ_cryptocom,1L,5L,4L + +#define SN_id_GostR3411_94_with_GostR3410_94_cc "id-GostR3411-94-with-GostR3410-94-cc" +#define LN_id_GostR3411_94_with_GostR3410_94_cc "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_94_cc 852 +#define OBJ_id_GostR3411_94_with_GostR3410_94_cc OBJ_cryptocom,1L,3L,3L + +#define SN_id_GostR3411_94_with_GostR3410_2001_cc "id-GostR3411-94-with-GostR3410-2001-cc" +#define LN_id_GostR3411_94_with_GostR3410_2001_cc "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_2001_cc 853 +#define OBJ_id_GostR3411_94_with_GostR3410_2001_cc OBJ_cryptocom,1L,3L,4L + +#define SN_id_GostR3410_2001_ParamSet_cc "id-GostR3410-2001-ParamSet-cc" +#define LN_id_GostR3410_2001_ParamSet_cc "GOST R 3410-2001 Parameter Set Cryptocom" +#define NID_id_GostR3410_2001_ParamSet_cc 854 +#define OBJ_id_GostR3410_2001_ParamSet_cc OBJ_cryptocom,1L,8L,1L + +#define SN_id_tc26_algorithms "id-tc26-algorithms" +#define NID_id_tc26_algorithms 977 +#define OBJ_id_tc26_algorithms OBJ_id_tc26,1L + +#define SN_id_tc26_sign "id-tc26-sign" +#define NID_id_tc26_sign 978 +#define OBJ_id_tc26_sign OBJ_id_tc26_algorithms,1L + +#define SN_id_GostR3410_2012_256 "gost2012_256" +#define LN_id_GostR3410_2012_256 "GOST R 34.10-2012 with 256 bit modulus" +#define NID_id_GostR3410_2012_256 979 +#define OBJ_id_GostR3410_2012_256 OBJ_id_tc26_sign,1L + +#define SN_id_GostR3410_2012_512 "gost2012_512" +#define LN_id_GostR3410_2012_512 "GOST R 34.10-2012 with 512 bit modulus" +#define NID_id_GostR3410_2012_512 980 +#define OBJ_id_GostR3410_2012_512 OBJ_id_tc26_sign,2L + +#define SN_id_tc26_digest "id-tc26-digest" +#define NID_id_tc26_digest 981 +#define OBJ_id_tc26_digest OBJ_id_tc26_algorithms,2L + +#define SN_id_GostR3411_2012_256 "md_gost12_256" +#define LN_id_GostR3411_2012_256 "GOST R 34.11-2012 with 256 bit hash" +#define NID_id_GostR3411_2012_256 982 +#define OBJ_id_GostR3411_2012_256 OBJ_id_tc26_digest,2L + +#define SN_id_GostR3411_2012_512 "md_gost12_512" +#define LN_id_GostR3411_2012_512 "GOST R 34.11-2012 with 512 bit hash" +#define NID_id_GostR3411_2012_512 983 +#define OBJ_id_GostR3411_2012_512 OBJ_id_tc26_digest,3L + +#define SN_id_tc26_signwithdigest "id-tc26-signwithdigest" +#define NID_id_tc26_signwithdigest 984 +#define OBJ_id_tc26_signwithdigest OBJ_id_tc26_algorithms,3L + +#define SN_id_tc26_signwithdigest_gost3410_2012_256 "id-tc26-signwithdigest-gost3410-2012-256" +#define LN_id_tc26_signwithdigest_gost3410_2012_256 "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_256 985 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_256 OBJ_id_tc26_signwithdigest,2L + +#define SN_id_tc26_signwithdigest_gost3410_2012_512 "id-tc26-signwithdigest-gost3410-2012-512" +#define LN_id_tc26_signwithdigest_gost3410_2012_512 "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_512 986 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_512 OBJ_id_tc26_signwithdigest,3L + +#define SN_id_tc26_mac "id-tc26-mac" +#define NID_id_tc26_mac 987 +#define OBJ_id_tc26_mac OBJ_id_tc26_algorithms,4L + +#define SN_id_tc26_hmac_gost_3411_2012_256 "id-tc26-hmac-gost-3411-2012-256" +#define LN_id_tc26_hmac_gost_3411_2012_256 "HMAC GOST 34.11-2012 256 bit" +#define NID_id_tc26_hmac_gost_3411_2012_256 988 +#define OBJ_id_tc26_hmac_gost_3411_2012_256 OBJ_id_tc26_mac,1L + +#define SN_id_tc26_hmac_gost_3411_2012_512 "id-tc26-hmac-gost-3411-2012-512" +#define LN_id_tc26_hmac_gost_3411_2012_512 "HMAC GOST 34.11-2012 512 bit" +#define NID_id_tc26_hmac_gost_3411_2012_512 989 +#define OBJ_id_tc26_hmac_gost_3411_2012_512 OBJ_id_tc26_mac,2L + +#define SN_id_tc26_cipher "id-tc26-cipher" +#define NID_id_tc26_cipher 990 +#define OBJ_id_tc26_cipher OBJ_id_tc26_algorithms,5L + +#define SN_id_tc26_cipher_gostr3412_2015_magma "id-tc26-cipher-gostr3412-2015-magma" +#define NID_id_tc26_cipher_gostr3412_2015_magma 1173 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma OBJ_id_tc26_cipher,1L + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm "id-tc26-cipher-gostr3412-2015-magma-ctracpkm" +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm 1174 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm OBJ_id_tc26_cipher_gostr3412_2015_magma,1L + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac "id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac" +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac 1175 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_magma,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik "id-tc26-cipher-gostr3412-2015-kuznyechik" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik 1176 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik OBJ_id_tc26_cipher,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm 1177 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac 1178 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,2L + +#define SN_id_tc26_agreement "id-tc26-agreement" +#define NID_id_tc26_agreement 991 +#define OBJ_id_tc26_agreement OBJ_id_tc26_algorithms,6L + +#define SN_id_tc26_agreement_gost_3410_2012_256 "id-tc26-agreement-gost-3410-2012-256" +#define NID_id_tc26_agreement_gost_3410_2012_256 992 +#define OBJ_id_tc26_agreement_gost_3410_2012_256 OBJ_id_tc26_agreement,1L + +#define SN_id_tc26_agreement_gost_3410_2012_512 "id-tc26-agreement-gost-3410-2012-512" +#define NID_id_tc26_agreement_gost_3410_2012_512 993 +#define OBJ_id_tc26_agreement_gost_3410_2012_512 OBJ_id_tc26_agreement,2L + +#define SN_id_tc26_wrap "id-tc26-wrap" +#define NID_id_tc26_wrap 1179 +#define OBJ_id_tc26_wrap OBJ_id_tc26_algorithms,7L + +#define SN_id_tc26_wrap_gostr3412_2015_magma "id-tc26-wrap-gostr3412-2015-magma" +#define NID_id_tc26_wrap_gostr3412_2015_magma 1180 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma OBJ_id_tc26_wrap,1L + +#define SN_id_tc26_wrap_gostr3412_2015_magma_kexp15 "id-tc26-wrap-gostr3412-2015-magma-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 1181 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_magma,1L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik "id-tc26-wrap-gostr3412-2015-kuznyechik" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik 1182 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik OBJ_id_tc26_wrap,2L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 "id-tc26-wrap-gostr3412-2015-kuznyechik-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 1183 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_constants "id-tc26-constants" +#define NID_id_tc26_constants 994 +#define OBJ_id_tc26_constants OBJ_id_tc26,2L + +#define SN_id_tc26_sign_constants "id-tc26-sign-constants" +#define NID_id_tc26_sign_constants 995 +#define OBJ_id_tc26_sign_constants OBJ_id_tc26_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_constants "id-tc26-gost-3410-2012-256-constants" +#define NID_id_tc26_gost_3410_2012_256_constants 1147 +#define OBJ_id_tc26_gost_3410_2012_256_constants OBJ_id_tc26_sign_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetA "id-tc26-gost-3410-2012-256-paramSetA" +#define LN_id_tc26_gost_3410_2012_256_paramSetA "GOST R 34.10-2012 (256 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_256_paramSetA 1148 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetA OBJ_id_tc26_gost_3410_2012_256_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetB "id-tc26-gost-3410-2012-256-paramSetB" +#define LN_id_tc26_gost_3410_2012_256_paramSetB "GOST R 34.10-2012 (256 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_256_paramSetB 1184 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetB OBJ_id_tc26_gost_3410_2012_256_constants,2L + +#define SN_id_tc26_gost_3410_2012_256_paramSetC "id-tc26-gost-3410-2012-256-paramSetC" +#define LN_id_tc26_gost_3410_2012_256_paramSetC "GOST R 34.10-2012 (256 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_256_paramSetC 1185 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetC OBJ_id_tc26_gost_3410_2012_256_constants,3L + +#define SN_id_tc26_gost_3410_2012_256_paramSetD "id-tc26-gost-3410-2012-256-paramSetD" +#define LN_id_tc26_gost_3410_2012_256_paramSetD "GOST R 34.10-2012 (256 bit) ParamSet D" +#define NID_id_tc26_gost_3410_2012_256_paramSetD 1186 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetD OBJ_id_tc26_gost_3410_2012_256_constants,4L + +#define SN_id_tc26_gost_3410_2012_512_constants "id-tc26-gost-3410-2012-512-constants" +#define NID_id_tc26_gost_3410_2012_512_constants 996 +#define OBJ_id_tc26_gost_3410_2012_512_constants OBJ_id_tc26_sign_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetTest "id-tc26-gost-3410-2012-512-paramSetTest" +#define LN_id_tc26_gost_3410_2012_512_paramSetTest "GOST R 34.10-2012 (512 bit) testing parameter set" +#define NID_id_tc26_gost_3410_2012_512_paramSetTest 997 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetTest OBJ_id_tc26_gost_3410_2012_512_constants,0L + +#define SN_id_tc26_gost_3410_2012_512_paramSetA "id-tc26-gost-3410-2012-512-paramSetA" +#define LN_id_tc26_gost_3410_2012_512_paramSetA "GOST R 34.10-2012 (512 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_512_paramSetA 998 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetA OBJ_id_tc26_gost_3410_2012_512_constants,1L + +#define SN_id_tc26_gost_3410_2012_512_paramSetB "id-tc26-gost-3410-2012-512-paramSetB" +#define LN_id_tc26_gost_3410_2012_512_paramSetB "GOST R 34.10-2012 (512 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_512_paramSetB 999 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetB OBJ_id_tc26_gost_3410_2012_512_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetC "id-tc26-gost-3410-2012-512-paramSetC" +#define LN_id_tc26_gost_3410_2012_512_paramSetC "GOST R 34.10-2012 (512 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_512_paramSetC 1149 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetC OBJ_id_tc26_gost_3410_2012_512_constants,3L + +#define SN_id_tc26_digest_constants "id-tc26-digest-constants" +#define NID_id_tc26_digest_constants 1000 +#define OBJ_id_tc26_digest_constants OBJ_id_tc26_constants,2L + +#define SN_id_tc26_cipher_constants "id-tc26-cipher-constants" +#define NID_id_tc26_cipher_constants 1001 +#define OBJ_id_tc26_cipher_constants OBJ_id_tc26_constants,5L + +#define SN_id_tc26_gost_28147_constants "id-tc26-gost-28147-constants" +#define NID_id_tc26_gost_28147_constants 1002 +#define OBJ_id_tc26_gost_28147_constants OBJ_id_tc26_cipher_constants,1L + +#define SN_id_tc26_gost_28147_param_Z "id-tc26-gost-28147-param-Z" +#define LN_id_tc26_gost_28147_param_Z "GOST 28147-89 TC26 parameter set" +#define NID_id_tc26_gost_28147_param_Z 1003 +#define OBJ_id_tc26_gost_28147_param_Z OBJ_id_tc26_gost_28147_constants,1L + +#define SN_INN "INN" +#define LN_INN "INN" +#define NID_INN 1004 +#define OBJ_INN OBJ_member_body,643L,3L,131L,1L,1L + +#define SN_OGRN "OGRN" +#define LN_OGRN "OGRN" +#define NID_OGRN 1005 +#define OBJ_OGRN OBJ_member_body,643L,100L,1L + +#define SN_SNILS "SNILS" +#define LN_SNILS "SNILS" +#define NID_SNILS 1006 +#define OBJ_SNILS OBJ_member_body,643L,100L,3L + +#define SN_subjectSignTool "subjectSignTool" +#define LN_subjectSignTool "Signing Tool of Subject" +#define NID_subjectSignTool 1007 +#define OBJ_subjectSignTool OBJ_member_body,643L,100L,111L + +#define SN_issuerSignTool "issuerSignTool" +#define LN_issuerSignTool "Signing Tool of Issuer" +#define NID_issuerSignTool 1008 +#define OBJ_issuerSignTool OBJ_member_body,643L,100L,112L + +#define SN_grasshopper_ecb "grasshopper-ecb" +#define NID_grasshopper_ecb 1012 + +#define SN_grasshopper_ctr "grasshopper-ctr" +#define NID_grasshopper_ctr 1013 + +#define SN_grasshopper_ofb "grasshopper-ofb" +#define NID_grasshopper_ofb 1014 + +#define SN_grasshopper_cbc "grasshopper-cbc" +#define NID_grasshopper_cbc 1015 + +#define SN_grasshopper_cfb "grasshopper-cfb" +#define NID_grasshopper_cfb 1016 + +#define SN_grasshopper_mac "grasshopper-mac" +#define NID_grasshopper_mac 1017 + +#define SN_magma_ecb "magma-ecb" +#define NID_magma_ecb 1187 + +#define SN_magma_ctr "magma-ctr" +#define NID_magma_ctr 1188 + +#define SN_magma_ofb "magma-ofb" +#define NID_magma_ofb 1189 + +#define SN_magma_cbc "magma-cbc" +#define NID_magma_cbc 1190 + +#define SN_magma_cfb "magma-cfb" +#define NID_magma_cfb 1191 + +#define SN_magma_mac "magma-mac" +#define NID_magma_mac 1192 + +#define SN_camellia_128_cbc "CAMELLIA-128-CBC" +#define LN_camellia_128_cbc "camellia-128-cbc" +#define NID_camellia_128_cbc 751 +#define OBJ_camellia_128_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,2L + +#define SN_camellia_192_cbc "CAMELLIA-192-CBC" +#define LN_camellia_192_cbc "camellia-192-cbc" +#define NID_camellia_192_cbc 752 +#define OBJ_camellia_192_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,3L + +#define SN_camellia_256_cbc "CAMELLIA-256-CBC" +#define LN_camellia_256_cbc "camellia-256-cbc" +#define NID_camellia_256_cbc 753 +#define OBJ_camellia_256_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,4L + +#define SN_id_camellia128_wrap "id-camellia128-wrap" +#define NID_id_camellia128_wrap 907 +#define OBJ_id_camellia128_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,2L + +#define SN_id_camellia192_wrap "id-camellia192-wrap" +#define NID_id_camellia192_wrap 908 +#define OBJ_id_camellia192_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,3L + +#define SN_id_camellia256_wrap "id-camellia256-wrap" +#define NID_id_camellia256_wrap 909 +#define OBJ_id_camellia256_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,4L + +#define OBJ_ntt_ds 0L,3L,4401L,5L + +#define OBJ_camellia OBJ_ntt_ds,3L,1L,9L + +#define SN_camellia_128_ecb "CAMELLIA-128-ECB" +#define LN_camellia_128_ecb "camellia-128-ecb" +#define NID_camellia_128_ecb 754 +#define OBJ_camellia_128_ecb OBJ_camellia,1L + +#define SN_camellia_128_ofb128 "CAMELLIA-128-OFB" +#define LN_camellia_128_ofb128 "camellia-128-ofb" +#define NID_camellia_128_ofb128 766 +#define OBJ_camellia_128_ofb128 OBJ_camellia,3L + +#define SN_camellia_128_cfb128 "CAMELLIA-128-CFB" +#define LN_camellia_128_cfb128 "camellia-128-cfb" +#define NID_camellia_128_cfb128 757 +#define OBJ_camellia_128_cfb128 OBJ_camellia,4L + +#define SN_camellia_128_gcm "CAMELLIA-128-GCM" +#define LN_camellia_128_gcm "camellia-128-gcm" +#define NID_camellia_128_gcm 961 +#define OBJ_camellia_128_gcm OBJ_camellia,6L + +#define SN_camellia_128_ccm "CAMELLIA-128-CCM" +#define LN_camellia_128_ccm "camellia-128-ccm" +#define NID_camellia_128_ccm 962 +#define OBJ_camellia_128_ccm OBJ_camellia,7L + +#define SN_camellia_128_ctr "CAMELLIA-128-CTR" +#define LN_camellia_128_ctr "camellia-128-ctr" +#define NID_camellia_128_ctr 963 +#define OBJ_camellia_128_ctr OBJ_camellia,9L + +#define SN_camellia_128_cmac "CAMELLIA-128-CMAC" +#define LN_camellia_128_cmac "camellia-128-cmac" +#define NID_camellia_128_cmac 964 +#define OBJ_camellia_128_cmac OBJ_camellia,10L + +#define SN_camellia_192_ecb "CAMELLIA-192-ECB" +#define LN_camellia_192_ecb "camellia-192-ecb" +#define NID_camellia_192_ecb 755 +#define OBJ_camellia_192_ecb OBJ_camellia,21L + +#define SN_camellia_192_ofb128 "CAMELLIA-192-OFB" +#define LN_camellia_192_ofb128 "camellia-192-ofb" +#define NID_camellia_192_ofb128 767 +#define OBJ_camellia_192_ofb128 OBJ_camellia,23L + +#define SN_camellia_192_cfb128 "CAMELLIA-192-CFB" +#define LN_camellia_192_cfb128 "camellia-192-cfb" +#define NID_camellia_192_cfb128 758 +#define OBJ_camellia_192_cfb128 OBJ_camellia,24L + +#define SN_camellia_192_gcm "CAMELLIA-192-GCM" +#define LN_camellia_192_gcm "camellia-192-gcm" +#define NID_camellia_192_gcm 965 +#define OBJ_camellia_192_gcm OBJ_camellia,26L + +#define SN_camellia_192_ccm "CAMELLIA-192-CCM" +#define LN_camellia_192_ccm "camellia-192-ccm" +#define NID_camellia_192_ccm 966 +#define OBJ_camellia_192_ccm OBJ_camellia,27L + +#define SN_camellia_192_ctr "CAMELLIA-192-CTR" +#define LN_camellia_192_ctr "camellia-192-ctr" +#define NID_camellia_192_ctr 967 +#define OBJ_camellia_192_ctr OBJ_camellia,29L + +#define SN_camellia_192_cmac "CAMELLIA-192-CMAC" +#define LN_camellia_192_cmac "camellia-192-cmac" +#define NID_camellia_192_cmac 968 +#define OBJ_camellia_192_cmac OBJ_camellia,30L + +#define SN_camellia_256_ecb "CAMELLIA-256-ECB" +#define LN_camellia_256_ecb "camellia-256-ecb" +#define NID_camellia_256_ecb 756 +#define OBJ_camellia_256_ecb OBJ_camellia,41L + +#define SN_camellia_256_ofb128 "CAMELLIA-256-OFB" +#define LN_camellia_256_ofb128 "camellia-256-ofb" +#define NID_camellia_256_ofb128 768 +#define OBJ_camellia_256_ofb128 OBJ_camellia,43L + +#define SN_camellia_256_cfb128 "CAMELLIA-256-CFB" +#define LN_camellia_256_cfb128 "camellia-256-cfb" +#define NID_camellia_256_cfb128 759 +#define OBJ_camellia_256_cfb128 OBJ_camellia,44L + +#define SN_camellia_256_gcm "CAMELLIA-256-GCM" +#define LN_camellia_256_gcm "camellia-256-gcm" +#define NID_camellia_256_gcm 969 +#define OBJ_camellia_256_gcm OBJ_camellia,46L + +#define SN_camellia_256_ccm "CAMELLIA-256-CCM" +#define LN_camellia_256_ccm "camellia-256-ccm" +#define NID_camellia_256_ccm 970 +#define OBJ_camellia_256_ccm OBJ_camellia,47L + +#define SN_camellia_256_ctr "CAMELLIA-256-CTR" +#define LN_camellia_256_ctr "camellia-256-ctr" +#define NID_camellia_256_ctr 971 +#define OBJ_camellia_256_ctr OBJ_camellia,49L + +#define SN_camellia_256_cmac "CAMELLIA-256-CMAC" +#define LN_camellia_256_cmac "camellia-256-cmac" +#define NID_camellia_256_cmac 972 +#define OBJ_camellia_256_cmac OBJ_camellia,50L + +#define SN_camellia_128_cfb1 "CAMELLIA-128-CFB1" +#define LN_camellia_128_cfb1 "camellia-128-cfb1" +#define NID_camellia_128_cfb1 760 + +#define SN_camellia_192_cfb1 "CAMELLIA-192-CFB1" +#define LN_camellia_192_cfb1 "camellia-192-cfb1" +#define NID_camellia_192_cfb1 761 + +#define SN_camellia_256_cfb1 "CAMELLIA-256-CFB1" +#define LN_camellia_256_cfb1 "camellia-256-cfb1" +#define NID_camellia_256_cfb1 762 + +#define SN_camellia_128_cfb8 "CAMELLIA-128-CFB8" +#define LN_camellia_128_cfb8 "camellia-128-cfb8" +#define NID_camellia_128_cfb8 763 + +#define SN_camellia_192_cfb8 "CAMELLIA-192-CFB8" +#define LN_camellia_192_cfb8 "camellia-192-cfb8" +#define NID_camellia_192_cfb8 764 + +#define SN_camellia_256_cfb8 "CAMELLIA-256-CFB8" +#define LN_camellia_256_cfb8 "camellia-256-cfb8" +#define NID_camellia_256_cfb8 765 + +#define OBJ_aria 1L,2L,410L,200046L,1L,1L + +#define SN_aria_128_ecb "ARIA-128-ECB" +#define LN_aria_128_ecb "aria-128-ecb" +#define NID_aria_128_ecb 1065 +#define OBJ_aria_128_ecb OBJ_aria,1L + +#define SN_aria_128_cbc "ARIA-128-CBC" +#define LN_aria_128_cbc "aria-128-cbc" +#define NID_aria_128_cbc 1066 +#define OBJ_aria_128_cbc OBJ_aria,2L + +#define SN_aria_128_cfb128 "ARIA-128-CFB" +#define LN_aria_128_cfb128 "aria-128-cfb" +#define NID_aria_128_cfb128 1067 +#define OBJ_aria_128_cfb128 OBJ_aria,3L + +#define SN_aria_128_ofb128 "ARIA-128-OFB" +#define LN_aria_128_ofb128 "aria-128-ofb" +#define NID_aria_128_ofb128 1068 +#define OBJ_aria_128_ofb128 OBJ_aria,4L + +#define SN_aria_128_ctr "ARIA-128-CTR" +#define LN_aria_128_ctr "aria-128-ctr" +#define NID_aria_128_ctr 1069 +#define OBJ_aria_128_ctr OBJ_aria,5L + +#define SN_aria_192_ecb "ARIA-192-ECB" +#define LN_aria_192_ecb "aria-192-ecb" +#define NID_aria_192_ecb 1070 +#define OBJ_aria_192_ecb OBJ_aria,6L + +#define SN_aria_192_cbc "ARIA-192-CBC" +#define LN_aria_192_cbc "aria-192-cbc" +#define NID_aria_192_cbc 1071 +#define OBJ_aria_192_cbc OBJ_aria,7L + +#define SN_aria_192_cfb128 "ARIA-192-CFB" +#define LN_aria_192_cfb128 "aria-192-cfb" +#define NID_aria_192_cfb128 1072 +#define OBJ_aria_192_cfb128 OBJ_aria,8L + +#define SN_aria_192_ofb128 "ARIA-192-OFB" +#define LN_aria_192_ofb128 "aria-192-ofb" +#define NID_aria_192_ofb128 1073 +#define OBJ_aria_192_ofb128 OBJ_aria,9L + +#define SN_aria_192_ctr "ARIA-192-CTR" +#define LN_aria_192_ctr "aria-192-ctr" +#define NID_aria_192_ctr 1074 +#define OBJ_aria_192_ctr OBJ_aria,10L + +#define SN_aria_256_ecb "ARIA-256-ECB" +#define LN_aria_256_ecb "aria-256-ecb" +#define NID_aria_256_ecb 1075 +#define OBJ_aria_256_ecb OBJ_aria,11L + +#define SN_aria_256_cbc "ARIA-256-CBC" +#define LN_aria_256_cbc "aria-256-cbc" +#define NID_aria_256_cbc 1076 +#define OBJ_aria_256_cbc OBJ_aria,12L + +#define SN_aria_256_cfb128 "ARIA-256-CFB" +#define LN_aria_256_cfb128 "aria-256-cfb" +#define NID_aria_256_cfb128 1077 +#define OBJ_aria_256_cfb128 OBJ_aria,13L + +#define SN_aria_256_ofb128 "ARIA-256-OFB" +#define LN_aria_256_ofb128 "aria-256-ofb" +#define NID_aria_256_ofb128 1078 +#define OBJ_aria_256_ofb128 OBJ_aria,14L + +#define SN_aria_256_ctr "ARIA-256-CTR" +#define LN_aria_256_ctr "aria-256-ctr" +#define NID_aria_256_ctr 1079 +#define OBJ_aria_256_ctr OBJ_aria,15L + +#define SN_aria_128_cfb1 "ARIA-128-CFB1" +#define LN_aria_128_cfb1 "aria-128-cfb1" +#define NID_aria_128_cfb1 1080 + +#define SN_aria_192_cfb1 "ARIA-192-CFB1" +#define LN_aria_192_cfb1 "aria-192-cfb1" +#define NID_aria_192_cfb1 1081 + +#define SN_aria_256_cfb1 "ARIA-256-CFB1" +#define LN_aria_256_cfb1 "aria-256-cfb1" +#define NID_aria_256_cfb1 1082 + +#define SN_aria_128_cfb8 "ARIA-128-CFB8" +#define LN_aria_128_cfb8 "aria-128-cfb8" +#define NID_aria_128_cfb8 1083 + +#define SN_aria_192_cfb8 "ARIA-192-CFB8" +#define LN_aria_192_cfb8 "aria-192-cfb8" +#define NID_aria_192_cfb8 1084 + +#define SN_aria_256_cfb8 "ARIA-256-CFB8" +#define LN_aria_256_cfb8 "aria-256-cfb8" +#define NID_aria_256_cfb8 1085 + +#define SN_aria_128_ccm "ARIA-128-CCM" +#define LN_aria_128_ccm "aria-128-ccm" +#define NID_aria_128_ccm 1120 +#define OBJ_aria_128_ccm OBJ_aria,37L + +#define SN_aria_192_ccm "ARIA-192-CCM" +#define LN_aria_192_ccm "aria-192-ccm" +#define NID_aria_192_ccm 1121 +#define OBJ_aria_192_ccm OBJ_aria,38L + +#define SN_aria_256_ccm "ARIA-256-CCM" +#define LN_aria_256_ccm "aria-256-ccm" +#define NID_aria_256_ccm 1122 +#define OBJ_aria_256_ccm OBJ_aria,39L + +#define SN_aria_128_gcm "ARIA-128-GCM" +#define LN_aria_128_gcm "aria-128-gcm" +#define NID_aria_128_gcm 1123 +#define OBJ_aria_128_gcm OBJ_aria,34L + +#define SN_aria_192_gcm "ARIA-192-GCM" +#define LN_aria_192_gcm "aria-192-gcm" +#define NID_aria_192_gcm 1124 +#define OBJ_aria_192_gcm OBJ_aria,35L + +#define SN_aria_256_gcm "ARIA-256-GCM" +#define LN_aria_256_gcm "aria-256-gcm" +#define NID_aria_256_gcm 1125 +#define OBJ_aria_256_gcm OBJ_aria,36L + +#define SN_kisa "KISA" +#define LN_kisa "kisa" +#define NID_kisa 773 +#define OBJ_kisa OBJ_member_body,410L,200004L + +#define SN_seed_ecb "SEED-ECB" +#define LN_seed_ecb "seed-ecb" +#define NID_seed_ecb 776 +#define OBJ_seed_ecb OBJ_kisa,1L,3L + +#define SN_seed_cbc "SEED-CBC" +#define LN_seed_cbc "seed-cbc" +#define NID_seed_cbc 777 +#define OBJ_seed_cbc OBJ_kisa,1L,4L + +#define SN_seed_cfb128 "SEED-CFB" +#define LN_seed_cfb128 "seed-cfb" +#define NID_seed_cfb128 779 +#define OBJ_seed_cfb128 OBJ_kisa,1L,5L + +#define SN_seed_ofb128 "SEED-OFB" +#define LN_seed_ofb128 "seed-ofb" +#define NID_seed_ofb128 778 +#define OBJ_seed_ofb128 OBJ_kisa,1L,6L + +#define SN_sm4_ecb "SM4-ECB" +#define LN_sm4_ecb "sm4-ecb" +#define NID_sm4_ecb 1133 +#define OBJ_sm4_ecb OBJ_sm_scheme,104L,1L + +#define SN_sm4_cbc "SM4-CBC" +#define LN_sm4_cbc "sm4-cbc" +#define NID_sm4_cbc 1134 +#define OBJ_sm4_cbc OBJ_sm_scheme,104L,2L + +#define SN_sm4_ofb128 "SM4-OFB" +#define LN_sm4_ofb128 "sm4-ofb" +#define NID_sm4_ofb128 1135 +#define OBJ_sm4_ofb128 OBJ_sm_scheme,104L,3L + +#define SN_sm4_cfb128 "SM4-CFB" +#define LN_sm4_cfb128 "sm4-cfb" +#define NID_sm4_cfb128 1137 +#define OBJ_sm4_cfb128 OBJ_sm_scheme,104L,4L + +#define SN_sm4_cfb1 "SM4-CFB1" +#define LN_sm4_cfb1 "sm4-cfb1" +#define NID_sm4_cfb1 1136 +#define OBJ_sm4_cfb1 OBJ_sm_scheme,104L,5L + +#define SN_sm4_cfb8 "SM4-CFB8" +#define LN_sm4_cfb8 "sm4-cfb8" +#define NID_sm4_cfb8 1138 +#define OBJ_sm4_cfb8 OBJ_sm_scheme,104L,6L + +#define SN_sm4_ctr "SM4-CTR" +#define LN_sm4_ctr "sm4-ctr" +#define NID_sm4_ctr 1139 +#define OBJ_sm4_ctr OBJ_sm_scheme,104L,7L + +#define SN_hmac "HMAC" +#define LN_hmac "hmac" +#define NID_hmac 855 + +#define SN_cmac "CMAC" +#define LN_cmac "cmac" +#define NID_cmac 894 + +#define SN_rc4_hmac_md5 "RC4-HMAC-MD5" +#define LN_rc4_hmac_md5 "rc4-hmac-md5" +#define NID_rc4_hmac_md5 915 + +#define SN_aes_128_cbc_hmac_sha1 "AES-128-CBC-HMAC-SHA1" +#define LN_aes_128_cbc_hmac_sha1 "aes-128-cbc-hmac-sha1" +#define NID_aes_128_cbc_hmac_sha1 916 + +#define SN_aes_192_cbc_hmac_sha1 "AES-192-CBC-HMAC-SHA1" +#define LN_aes_192_cbc_hmac_sha1 "aes-192-cbc-hmac-sha1" +#define NID_aes_192_cbc_hmac_sha1 917 + +#define SN_aes_256_cbc_hmac_sha1 "AES-256-CBC-HMAC-SHA1" +#define LN_aes_256_cbc_hmac_sha1 "aes-256-cbc-hmac-sha1" +#define NID_aes_256_cbc_hmac_sha1 918 + +#define SN_aes_128_cbc_hmac_sha256 "AES-128-CBC-HMAC-SHA256" +#define LN_aes_128_cbc_hmac_sha256 "aes-128-cbc-hmac-sha256" +#define NID_aes_128_cbc_hmac_sha256 948 + +#define SN_aes_192_cbc_hmac_sha256 "AES-192-CBC-HMAC-SHA256" +#define LN_aes_192_cbc_hmac_sha256 "aes-192-cbc-hmac-sha256" +#define NID_aes_192_cbc_hmac_sha256 949 + +#define SN_aes_256_cbc_hmac_sha256 "AES-256-CBC-HMAC-SHA256" +#define LN_aes_256_cbc_hmac_sha256 "aes-256-cbc-hmac-sha256" +#define NID_aes_256_cbc_hmac_sha256 950 + +#define SN_chacha20_poly1305 "ChaCha20-Poly1305" +#define LN_chacha20_poly1305 "chacha20-poly1305" +#define NID_chacha20_poly1305 1018 + +#define SN_chacha20 "ChaCha20" +#define LN_chacha20 "chacha20" +#define NID_chacha20 1019 + +#define SN_dhpublicnumber "dhpublicnumber" +#define LN_dhpublicnumber "X9.42 DH" +#define NID_dhpublicnumber 920 +#define OBJ_dhpublicnumber OBJ_ISO_US,10046L,2L,1L + +#define SN_brainpoolP160r1 "brainpoolP160r1" +#define NID_brainpoolP160r1 921 +#define OBJ_brainpoolP160r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,1L + +#define SN_brainpoolP160t1 "brainpoolP160t1" +#define NID_brainpoolP160t1 922 +#define OBJ_brainpoolP160t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,2L + +#define SN_brainpoolP192r1 "brainpoolP192r1" +#define NID_brainpoolP192r1 923 +#define OBJ_brainpoolP192r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,3L + +#define SN_brainpoolP192t1 "brainpoolP192t1" +#define NID_brainpoolP192t1 924 +#define OBJ_brainpoolP192t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,4L + +#define SN_brainpoolP224r1 "brainpoolP224r1" +#define NID_brainpoolP224r1 925 +#define OBJ_brainpoolP224r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,5L + +#define SN_brainpoolP224t1 "brainpoolP224t1" +#define NID_brainpoolP224t1 926 +#define OBJ_brainpoolP224t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,6L + +#define SN_brainpoolP256r1 "brainpoolP256r1" +#define NID_brainpoolP256r1 927 +#define OBJ_brainpoolP256r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,7L + +#define SN_brainpoolP256t1 "brainpoolP256t1" +#define NID_brainpoolP256t1 928 +#define OBJ_brainpoolP256t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,8L + +#define SN_brainpoolP320r1 "brainpoolP320r1" +#define NID_brainpoolP320r1 929 +#define OBJ_brainpoolP320r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,9L + +#define SN_brainpoolP320t1 "brainpoolP320t1" +#define NID_brainpoolP320t1 930 +#define OBJ_brainpoolP320t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,10L + +#define SN_brainpoolP384r1 "brainpoolP384r1" +#define NID_brainpoolP384r1 931 +#define OBJ_brainpoolP384r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,11L + +#define SN_brainpoolP384t1 "brainpoolP384t1" +#define NID_brainpoolP384t1 932 +#define OBJ_brainpoolP384t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,12L + +#define SN_brainpoolP512r1 "brainpoolP512r1" +#define NID_brainpoolP512r1 933 +#define OBJ_brainpoolP512r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,13L + +#define SN_brainpoolP512t1 "brainpoolP512t1" +#define NID_brainpoolP512t1 934 +#define OBJ_brainpoolP512t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,14L + +#define OBJ_x9_63_scheme 1L,3L,133L,16L,840L,63L,0L + +#define OBJ_secg_scheme OBJ_certicom_arc,1L + +#define SN_dhSinglePass_stdDH_sha1kdf_scheme "dhSinglePass-stdDH-sha1kdf-scheme" +#define NID_dhSinglePass_stdDH_sha1kdf_scheme 936 +#define OBJ_dhSinglePass_stdDH_sha1kdf_scheme OBJ_x9_63_scheme,2L + +#define SN_dhSinglePass_stdDH_sha224kdf_scheme "dhSinglePass-stdDH-sha224kdf-scheme" +#define NID_dhSinglePass_stdDH_sha224kdf_scheme 937 +#define OBJ_dhSinglePass_stdDH_sha224kdf_scheme OBJ_secg_scheme,11L,0L + +#define SN_dhSinglePass_stdDH_sha256kdf_scheme "dhSinglePass-stdDH-sha256kdf-scheme" +#define NID_dhSinglePass_stdDH_sha256kdf_scheme 938 +#define OBJ_dhSinglePass_stdDH_sha256kdf_scheme OBJ_secg_scheme,11L,1L + +#define SN_dhSinglePass_stdDH_sha384kdf_scheme "dhSinglePass-stdDH-sha384kdf-scheme" +#define NID_dhSinglePass_stdDH_sha384kdf_scheme 939 +#define OBJ_dhSinglePass_stdDH_sha384kdf_scheme OBJ_secg_scheme,11L,2L + +#define SN_dhSinglePass_stdDH_sha512kdf_scheme "dhSinglePass-stdDH-sha512kdf-scheme" +#define NID_dhSinglePass_stdDH_sha512kdf_scheme 940 +#define OBJ_dhSinglePass_stdDH_sha512kdf_scheme OBJ_secg_scheme,11L,3L + +#define SN_dhSinglePass_cofactorDH_sha1kdf_scheme "dhSinglePass-cofactorDH-sha1kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha1kdf_scheme 941 +#define OBJ_dhSinglePass_cofactorDH_sha1kdf_scheme OBJ_x9_63_scheme,3L + +#define SN_dhSinglePass_cofactorDH_sha224kdf_scheme "dhSinglePass-cofactorDH-sha224kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha224kdf_scheme 942 +#define OBJ_dhSinglePass_cofactorDH_sha224kdf_scheme OBJ_secg_scheme,14L,0L + +#define SN_dhSinglePass_cofactorDH_sha256kdf_scheme "dhSinglePass-cofactorDH-sha256kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha256kdf_scheme 943 +#define OBJ_dhSinglePass_cofactorDH_sha256kdf_scheme OBJ_secg_scheme,14L,1L + +#define SN_dhSinglePass_cofactorDH_sha384kdf_scheme "dhSinglePass-cofactorDH-sha384kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha384kdf_scheme 944 +#define OBJ_dhSinglePass_cofactorDH_sha384kdf_scheme OBJ_secg_scheme,14L,2L + +#define SN_dhSinglePass_cofactorDH_sha512kdf_scheme "dhSinglePass-cofactorDH-sha512kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha512kdf_scheme 945 +#define OBJ_dhSinglePass_cofactorDH_sha512kdf_scheme OBJ_secg_scheme,14L,3L + +#define SN_dh_std_kdf "dh-std-kdf" +#define NID_dh_std_kdf 946 + +#define SN_dh_cofactor_kdf "dh-cofactor-kdf" +#define NID_dh_cofactor_kdf 947 + +#define SN_ct_precert_scts "ct_precert_scts" +#define LN_ct_precert_scts "CT Precertificate SCTs" +#define NID_ct_precert_scts 951 +#define OBJ_ct_precert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,2L + +#define SN_ct_precert_poison "ct_precert_poison" +#define LN_ct_precert_poison "CT Precertificate Poison" +#define NID_ct_precert_poison 952 +#define OBJ_ct_precert_poison 1L,3L,6L,1L,4L,1L,11129L,2L,4L,3L + +#define SN_ct_precert_signer "ct_precert_signer" +#define LN_ct_precert_signer "CT Precertificate Signer" +#define NID_ct_precert_signer 953 +#define OBJ_ct_precert_signer 1L,3L,6L,1L,4L,1L,11129L,2L,4L,4L + +#define SN_ct_cert_scts "ct_cert_scts" +#define LN_ct_cert_scts "CT Certificate SCTs" +#define NID_ct_cert_scts 954 +#define OBJ_ct_cert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,5L + +#define SN_jurisdictionLocalityName "jurisdictionL" +#define LN_jurisdictionLocalityName "jurisdictionLocalityName" +#define NID_jurisdictionLocalityName 955 +#define OBJ_jurisdictionLocalityName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,1L + +#define SN_jurisdictionStateOrProvinceName "jurisdictionST" +#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" +#define NID_jurisdictionStateOrProvinceName 956 +#define OBJ_jurisdictionStateOrProvinceName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,2L + +#define SN_jurisdictionCountryName "jurisdictionC" +#define LN_jurisdictionCountryName "jurisdictionCountryName" +#define NID_jurisdictionCountryName 957 +#define OBJ_jurisdictionCountryName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,3L + +#define SN_id_scrypt "id-scrypt" +#define LN_id_scrypt "scrypt" +#define NID_id_scrypt 973 +#define OBJ_id_scrypt 1L,3L,6L,1L,4L,1L,11591L,4L,11L + +#define SN_tls1_prf "TLS1-PRF" +#define LN_tls1_prf "tls1-prf" +#define NID_tls1_prf 1021 + +#define SN_hkdf "HKDF" +#define LN_hkdf "hkdf" +#define NID_hkdf 1036 + +#define SN_id_pkinit "id-pkinit" +#define NID_id_pkinit 1031 +#define OBJ_id_pkinit 1L,3L,6L,1L,5L,2L,3L + +#define SN_pkInitClientAuth "pkInitClientAuth" +#define LN_pkInitClientAuth "PKINIT Client Auth" +#define NID_pkInitClientAuth 1032 +#define OBJ_pkInitClientAuth OBJ_id_pkinit,4L + +#define SN_pkInitKDC "pkInitKDC" +#define LN_pkInitKDC "Signing KDC Response" +#define NID_pkInitKDC 1033 +#define OBJ_pkInitKDC OBJ_id_pkinit,5L + +#define SN_X25519 "X25519" +#define NID_X25519 1034 +#define OBJ_X25519 1L,3L,101L,110L + +#define SN_X448 "X448" +#define NID_X448 1035 +#define OBJ_X448 1L,3L,101L,111L + +#define SN_ED25519 "ED25519" +#define NID_ED25519 1087 +#define OBJ_ED25519 1L,3L,101L,112L + +#define SN_ED448 "ED448" +#define NID_ED448 1088 +#define OBJ_ED448 1L,3L,101L,113L + +#define SN_kx_rsa "KxRSA" +#define LN_kx_rsa "kx-rsa" +#define NID_kx_rsa 1037 + +#define SN_kx_ecdhe "KxECDHE" +#define LN_kx_ecdhe "kx-ecdhe" +#define NID_kx_ecdhe 1038 + +#define SN_kx_dhe "KxDHE" +#define LN_kx_dhe "kx-dhe" +#define NID_kx_dhe 1039 + +#define SN_kx_ecdhe_psk "KxECDHE-PSK" +#define LN_kx_ecdhe_psk "kx-ecdhe-psk" +#define NID_kx_ecdhe_psk 1040 + +#define SN_kx_dhe_psk "KxDHE-PSK" +#define LN_kx_dhe_psk "kx-dhe-psk" +#define NID_kx_dhe_psk 1041 + +#define SN_kx_rsa_psk "KxRSA_PSK" +#define LN_kx_rsa_psk "kx-rsa-psk" +#define NID_kx_rsa_psk 1042 + +#define SN_kx_psk "KxPSK" +#define LN_kx_psk "kx-psk" +#define NID_kx_psk 1043 + +#define SN_kx_srp "KxSRP" +#define LN_kx_srp "kx-srp" +#define NID_kx_srp 1044 + +#define SN_kx_gost "KxGOST" +#define LN_kx_gost "kx-gost" +#define NID_kx_gost 1045 + +#define SN_kx_any "KxANY" +#define LN_kx_any "kx-any" +#define NID_kx_any 1063 + +#define SN_auth_rsa "AuthRSA" +#define LN_auth_rsa "auth-rsa" +#define NID_auth_rsa 1046 + +#define SN_auth_ecdsa "AuthECDSA" +#define LN_auth_ecdsa "auth-ecdsa" +#define NID_auth_ecdsa 1047 + +#define SN_auth_psk "AuthPSK" +#define LN_auth_psk "auth-psk" +#define NID_auth_psk 1048 + +#define SN_auth_dss "AuthDSS" +#define LN_auth_dss "auth-dss" +#define NID_auth_dss 1049 + +#define SN_auth_gost01 "AuthGOST01" +#define LN_auth_gost01 "auth-gost01" +#define NID_auth_gost01 1050 + +#define SN_auth_gost12 "AuthGOST12" +#define LN_auth_gost12 "auth-gost12" +#define NID_auth_gost12 1051 + +#define SN_auth_srp "AuthSRP" +#define LN_auth_srp "auth-srp" +#define NID_auth_srp 1052 + +#define SN_auth_null "AuthNULL" +#define LN_auth_null "auth-null" +#define NID_auth_null 1053 + +#define SN_auth_any "AuthANY" +#define LN_auth_any "auth-any" +#define NID_auth_any 1064 + +#define SN_poly1305 "Poly1305" +#define LN_poly1305 "poly1305" +#define NID_poly1305 1061 + +#define SN_siphash "SipHash" +#define LN_siphash "siphash" +#define NID_siphash 1062 + +#define SN_ffdhe2048 "ffdhe2048" +#define NID_ffdhe2048 1126 + +#define SN_ffdhe3072 "ffdhe3072" +#define NID_ffdhe3072 1127 + +#define SN_ffdhe4096 "ffdhe4096" +#define NID_ffdhe4096 1128 + +#define SN_ffdhe6144 "ffdhe6144" +#define NID_ffdhe6144 1129 + +#define SN_ffdhe8192 "ffdhe8192" +#define NID_ffdhe8192 1130 + +#define SN_ISO_UA "ISO-UA" +#define NID_ISO_UA 1150 +#define OBJ_ISO_UA OBJ_member_body,804L + +#define SN_ua_pki "ua-pki" +#define NID_ua_pki 1151 +#define OBJ_ua_pki OBJ_ISO_UA,2L,1L,1L,1L + +#define SN_dstu28147 "dstu28147" +#define LN_dstu28147 "DSTU Gost 28147-2009" +#define NID_dstu28147 1152 +#define OBJ_dstu28147 OBJ_ua_pki,1L,1L,1L + +#define SN_dstu28147_ofb "dstu28147-ofb" +#define LN_dstu28147_ofb "DSTU Gost 28147-2009 OFB mode" +#define NID_dstu28147_ofb 1153 +#define OBJ_dstu28147_ofb OBJ_dstu28147,2L + +#define SN_dstu28147_cfb "dstu28147-cfb" +#define LN_dstu28147_cfb "DSTU Gost 28147-2009 CFB mode" +#define NID_dstu28147_cfb 1154 +#define OBJ_dstu28147_cfb OBJ_dstu28147,3L + +#define SN_dstu28147_wrap "dstu28147-wrap" +#define LN_dstu28147_wrap "DSTU Gost 28147-2009 key wrap" +#define NID_dstu28147_wrap 1155 +#define OBJ_dstu28147_wrap OBJ_dstu28147,5L + +#define SN_hmacWithDstu34311 "hmacWithDstu34311" +#define LN_hmacWithDstu34311 "HMAC DSTU Gost 34311-95" +#define NID_hmacWithDstu34311 1156 +#define OBJ_hmacWithDstu34311 OBJ_ua_pki,1L,1L,2L + +#define SN_dstu34311 "dstu34311" +#define LN_dstu34311 "DSTU Gost 34311-95" +#define NID_dstu34311 1157 +#define OBJ_dstu34311 OBJ_ua_pki,1L,2L,1L + +#define SN_dstu4145le "dstu4145le" +#define LN_dstu4145le "DSTU 4145-2002 little endian" +#define NID_dstu4145le 1158 +#define OBJ_dstu4145le OBJ_ua_pki,1L,3L,1L,1L + +#define SN_dstu4145be "dstu4145be" +#define LN_dstu4145be "DSTU 4145-2002 big endian" +#define NID_dstu4145be 1159 +#define OBJ_dstu4145be OBJ_dstu4145le,1L,1L + +#define SN_uacurve0 "uacurve0" +#define LN_uacurve0 "DSTU curve 0" +#define NID_uacurve0 1160 +#define OBJ_uacurve0 OBJ_dstu4145le,2L,0L + +#define SN_uacurve1 "uacurve1" +#define LN_uacurve1 "DSTU curve 1" +#define NID_uacurve1 1161 +#define OBJ_uacurve1 OBJ_dstu4145le,2L,1L + +#define SN_uacurve2 "uacurve2" +#define LN_uacurve2 "DSTU curve 2" +#define NID_uacurve2 1162 +#define OBJ_uacurve2 OBJ_dstu4145le,2L,2L + +#define SN_uacurve3 "uacurve3" +#define LN_uacurve3 "DSTU curve 3" +#define NID_uacurve3 1163 +#define OBJ_uacurve3 OBJ_dstu4145le,2L,3L + +#define SN_uacurve4 "uacurve4" +#define LN_uacurve4 "DSTU curve 4" +#define NID_uacurve4 1164 +#define OBJ_uacurve4 OBJ_dstu4145le,2L,4L + +#define SN_uacurve5 "uacurve5" +#define LN_uacurve5 "DSTU curve 5" +#define NID_uacurve5 1165 +#define OBJ_uacurve5 OBJ_dstu4145le,2L,5L + +#define SN_uacurve6 "uacurve6" +#define LN_uacurve6 "DSTU curve 6" +#define NID_uacurve6 1166 +#define OBJ_uacurve6 OBJ_dstu4145le,2L,6L + +#define SN_uacurve7 "uacurve7" +#define LN_uacurve7 "DSTU curve 7" +#define NID_uacurve7 1167 +#define OBJ_uacurve7 OBJ_dstu4145le,2L,7L + +#define SN_uacurve8 "uacurve8" +#define LN_uacurve8 "DSTU curve 8" +#define NID_uacurve8 1168 +#define OBJ_uacurve8 OBJ_dstu4145le,2L,8L + +#define SN_uacurve9 "uacurve9" +#define LN_uacurve9 "DSTU curve 9" +#define NID_uacurve9 1169 +#define OBJ_uacurve9 OBJ_dstu4145le,2L,9L diff --git a/openSSL/lin32/include/openssl/objects.h b/openSSL/lin32/include/openssl/objects.h new file mode 100644 index 0000000..5e8b576 --- /dev/null +++ b/openSSL/lin32/include/openssl/objects.h @@ -0,0 +1,175 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OBJECTS_H +# define HEADER_OBJECTS_H + +# include +# include +# include +# include + +# define OBJ_NAME_TYPE_UNDEF 0x00 +# define OBJ_NAME_TYPE_MD_METH 0x01 +# define OBJ_NAME_TYPE_CIPHER_METH 0x02 +# define OBJ_NAME_TYPE_PKEY_METH 0x03 +# define OBJ_NAME_TYPE_COMP_METH 0x04 +# define OBJ_NAME_TYPE_NUM 0x05 + +# define OBJ_NAME_ALIAS 0x8000 + +# define OBJ_BSEARCH_VALUE_ON_NOMATCH 0x01 +# define OBJ_BSEARCH_FIRST_VALUE_ON_MATCH 0x02 + + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct obj_name_st { + int type; + int alias; + const char *name; + const char *data; +} OBJ_NAME; + +# define OBJ_create_and_add_object(a,b,c) OBJ_create(a,b,c) + +int OBJ_NAME_init(void); +int OBJ_NAME_new_index(unsigned long (*hash_func) (const char *), + int (*cmp_func) (const char *, const char *), + void (*free_func) (const char *, int, const char *)); +const char *OBJ_NAME_get(const char *name, int type); +int OBJ_NAME_add(const char *name, int type, const char *data); +int OBJ_NAME_remove(const char *name, int type); +void OBJ_NAME_cleanup(int type); /* -1 for everything */ +void OBJ_NAME_do_all(int type, void (*fn) (const OBJ_NAME *, void *arg), + void *arg); +void OBJ_NAME_do_all_sorted(int type, + void (*fn) (const OBJ_NAME *, void *arg), + void *arg); + +ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o); +ASN1_OBJECT *OBJ_nid2obj(int n); +const char *OBJ_nid2ln(int n); +const char *OBJ_nid2sn(int n); +int OBJ_obj2nid(const ASN1_OBJECT *o); +ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name); +int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name); +int OBJ_txt2nid(const char *s); +int OBJ_ln2nid(const char *s); +int OBJ_sn2nid(const char *s); +int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b); +const void *OBJ_bsearch_(const void *key, const void *base, int num, int size, + int (*cmp) (const void *, const void *)); +const void *OBJ_bsearch_ex_(const void *key, const void *base, int num, + int size, + int (*cmp) (const void *, const void *), + int flags); + +# define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *, const void *); \ + static int nm##_cmp(type1 const *, type2 const *); \ + scope type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +# define DECLARE_OBJ_BSEARCH_CMP_FN(type1, type2, cmp) \ + _DECLARE_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp) +# define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +/*- + * Unsolved problem: if a type is actually a pointer type, like + * nid_triple is, then its impossible to get a const where you need + * it. Consider: + * + * typedef int nid_triple[3]; + * const void *a_; + * const nid_triple const *a = a_; + * + * The assignment discards a const because what you really want is: + * + * const int const * const *a = a_; + * + * But if you do that, you lose the fact that a is an array of 3 ints, + * which breaks comparison functions. + * + * Thus we end up having to cast, sadly, or unpack the + * declarations. Or, as I finally did in this case, declare nid_triple + * to be a struct, which it should have been in the first place. + * + * Ben, August 2008. + * + * Also, strictly speaking not all types need be const, but handling + * the non-constness means a lot of complication, and in practice + * comparison routines do always not touch their arguments. + */ + +# define IMPLEMENT_OBJ_BSEARCH_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a,b); \ + } \ + static type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +# define IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a,b); \ + } \ + type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +# define OBJ_bsearch(type1,key,type2,base,num,cmp) \ + ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \ + num,sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \ + (void)CHECKED_PTR_OF(type2,cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN))) + +# define OBJ_bsearch_ex(type1,key,type2,base,num,cmp,flags) \ + ((type2 *)OBJ_bsearch_ex_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \ + num,sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \ + (void)type_2=CHECKED_PTR_OF(type2,cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN)),flags) + +int OBJ_new_nid(int num); +int OBJ_add_object(const ASN1_OBJECT *obj); +int OBJ_create(const char *oid, const char *sn, const char *ln); +#if OPENSSL_API_COMPAT < 0x10100000L +# define OBJ_cleanup() while(0) continue +#endif +int OBJ_create_objects(BIO *in); + +size_t OBJ_length(const ASN1_OBJECT *obj); +const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj); + +int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid); +int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid); +int OBJ_add_sigid(int signid, int dig_id, int pkey_id); +void OBJ_sigid_free(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/objectserr.h b/openSSL/lin32/include/openssl/objectserr.h new file mode 100644 index 0000000..02e166f --- /dev/null +++ b/openSSL/lin32/include/openssl/objectserr.h @@ -0,0 +1,42 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OBJERR_H +# define HEADER_OBJERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OBJ_strings(void); + +/* + * OBJ function codes. + */ +# define OBJ_F_OBJ_ADD_OBJECT 105 +# define OBJ_F_OBJ_ADD_SIGID 107 +# define OBJ_F_OBJ_CREATE 100 +# define OBJ_F_OBJ_DUP 101 +# define OBJ_F_OBJ_NAME_NEW_INDEX 106 +# define OBJ_F_OBJ_NID2LN 102 +# define OBJ_F_OBJ_NID2OBJ 103 +# define OBJ_F_OBJ_NID2SN 104 +# define OBJ_F_OBJ_TXT2OBJ 108 + +/* + * OBJ reason codes. + */ +# define OBJ_R_OID_EXISTS 102 +# define OBJ_R_UNKNOWN_NID 101 + +#endif diff --git a/openSSL/lin32/include/openssl/ocsp.h b/openSSL/lin32/include/openssl/ocsp.h new file mode 100644 index 0000000..4d759a4 --- /dev/null +++ b/openSSL/lin32/include/openssl/ocsp.h @@ -0,0 +1,352 @@ +/* + * Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OCSP_H +# define HEADER_OCSP_H + +#include + +/* + * These definitions are outside the OPENSSL_NO_OCSP guard because although for + * historical reasons they have OCSP_* names, they can actually be used + * independently of OCSP. E.g. see RFC5280 + */ +/*- + * CRLReason ::= ENUMERATED { + * unspecified (0), + * keyCompromise (1), + * cACompromise (2), + * affiliationChanged (3), + * superseded (4), + * cessationOfOperation (5), + * certificateHold (6), + * removeFromCRL (8) } + */ +# define OCSP_REVOKED_STATUS_NOSTATUS -1 +# define OCSP_REVOKED_STATUS_UNSPECIFIED 0 +# define OCSP_REVOKED_STATUS_KEYCOMPROMISE 1 +# define OCSP_REVOKED_STATUS_CACOMPROMISE 2 +# define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED 3 +# define OCSP_REVOKED_STATUS_SUPERSEDED 4 +# define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION 5 +# define OCSP_REVOKED_STATUS_CERTIFICATEHOLD 6 +# define OCSP_REVOKED_STATUS_REMOVEFROMCRL 8 + + +# ifndef OPENSSL_NO_OCSP + +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Various flags and values */ + +# define OCSP_DEFAULT_NONCE_LENGTH 16 + +# define OCSP_NOCERTS 0x1 +# define OCSP_NOINTERN 0x2 +# define OCSP_NOSIGS 0x4 +# define OCSP_NOCHAIN 0x8 +# define OCSP_NOVERIFY 0x10 +# define OCSP_NOEXPLICIT 0x20 +# define OCSP_NOCASIGN 0x40 +# define OCSP_NODELEGATED 0x80 +# define OCSP_NOCHECKS 0x100 +# define OCSP_TRUSTOTHER 0x200 +# define OCSP_RESPID_KEY 0x400 +# define OCSP_NOTIME 0x800 + +typedef struct ocsp_cert_id_st OCSP_CERTID; + +DEFINE_STACK_OF(OCSP_CERTID) + +typedef struct ocsp_one_request_st OCSP_ONEREQ; + +DEFINE_STACK_OF(OCSP_ONEREQ) + +typedef struct ocsp_req_info_st OCSP_REQINFO; +typedef struct ocsp_signature_st OCSP_SIGNATURE; +typedef struct ocsp_request_st OCSP_REQUEST; + +# define OCSP_RESPONSE_STATUS_SUCCESSFUL 0 +# define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST 1 +# define OCSP_RESPONSE_STATUS_INTERNALERROR 2 +# define OCSP_RESPONSE_STATUS_TRYLATER 3 +# define OCSP_RESPONSE_STATUS_SIGREQUIRED 5 +# define OCSP_RESPONSE_STATUS_UNAUTHORIZED 6 + +typedef struct ocsp_resp_bytes_st OCSP_RESPBYTES; + +# define V_OCSP_RESPID_NAME 0 +# define V_OCSP_RESPID_KEY 1 + +DEFINE_STACK_OF(OCSP_RESPID) + +typedef struct ocsp_revoked_info_st OCSP_REVOKEDINFO; + +# define V_OCSP_CERTSTATUS_GOOD 0 +# define V_OCSP_CERTSTATUS_REVOKED 1 +# define V_OCSP_CERTSTATUS_UNKNOWN 2 + +typedef struct ocsp_cert_status_st OCSP_CERTSTATUS; +typedef struct ocsp_single_response_st OCSP_SINGLERESP; + +DEFINE_STACK_OF(OCSP_SINGLERESP) + +typedef struct ocsp_response_data_st OCSP_RESPDATA; + +typedef struct ocsp_basic_response_st OCSP_BASICRESP; + +typedef struct ocsp_crl_id_st OCSP_CRLID; +typedef struct ocsp_service_locator_st OCSP_SERVICELOC; + +# define PEM_STRING_OCSP_REQUEST "OCSP REQUEST" +# define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE" + +# define d2i_OCSP_REQUEST_bio(bp,p) ASN1_d2i_bio_of(OCSP_REQUEST,OCSP_REQUEST_new,d2i_OCSP_REQUEST,bp,p) + +# define d2i_OCSP_RESPONSE_bio(bp,p) ASN1_d2i_bio_of(OCSP_RESPONSE,OCSP_RESPONSE_new,d2i_OCSP_RESPONSE,bp,p) + +# define PEM_read_bio_OCSP_REQUEST(bp,x,cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \ + (char *(*)())d2i_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST, \ + bp,(char **)(x),cb,NULL) + +# define PEM_read_bio_OCSP_RESPONSE(bp,x,cb) (OCSP_RESPONSE *)PEM_ASN1_read_bio(\ + (char *(*)())d2i_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE, \ + bp,(char **)(x),cb,NULL) + +# define PEM_write_bio_OCSP_REQUEST(bp,o) \ + PEM_ASN1_write_bio((int (*)())i2d_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST,\ + bp,(char *)(o), NULL,NULL,0,NULL,NULL) + +# define PEM_write_bio_OCSP_RESPONSE(bp,o) \ + PEM_ASN1_write_bio((int (*)())i2d_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE,\ + bp,(char *)(o), NULL,NULL,0,NULL,NULL) + +# define i2d_OCSP_RESPONSE_bio(bp,o) ASN1_i2d_bio_of(OCSP_RESPONSE,i2d_OCSP_RESPONSE,bp,o) + +# define i2d_OCSP_REQUEST_bio(bp,o) ASN1_i2d_bio_of(OCSP_REQUEST,i2d_OCSP_REQUEST,bp,o) + +# define ASN1_BIT_STRING_digest(data,type,md,len) \ + ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING),type,data,md,len) + +# define OCSP_CERTSTATUS_dup(cs)\ + (OCSP_CERTSTATUS*)ASN1_dup((int(*)())i2d_OCSP_CERTSTATUS,\ + (char *(*)())d2i_OCSP_CERTSTATUS,(char *)(cs)) + +OCSP_CERTID *OCSP_CERTID_dup(OCSP_CERTID *id); + +OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); +OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, OCSP_REQUEST *req, + int maxline); +int OCSP_REQ_CTX_nbio(OCSP_REQ_CTX *rctx); +int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx); +OCSP_REQ_CTX *OCSP_REQ_CTX_new(BIO *io, int maxline); +void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx); +void OCSP_set_max_response_length(OCSP_REQ_CTX *rctx, unsigned long len); +int OCSP_REQ_CTX_i2d(OCSP_REQ_CTX *rctx, const ASN1_ITEM *it, + ASN1_VALUE *val); +int OCSP_REQ_CTX_nbio_d2i(OCSP_REQ_CTX *rctx, ASN1_VALUE **pval, + const ASN1_ITEM *it); +BIO *OCSP_REQ_CTX_get0_mem_bio(OCSP_REQ_CTX *rctx); +int OCSP_REQ_CTX_http(OCSP_REQ_CTX *rctx, const char *op, const char *path); +int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req); +int OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx, + const char *name, const char *value); + +OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, const X509 *subject, + const X509 *issuer); + +OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst, + const X509_NAME *issuerName, + const ASN1_BIT_STRING *issuerKey, + const ASN1_INTEGER *serialNumber); + +OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid); + +int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len); +int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len); +int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs); +int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req); + +int OCSP_request_set1_name(OCSP_REQUEST *req, X509_NAME *nm); +int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert); + +int OCSP_request_sign(OCSP_REQUEST *req, + X509 *signer, + EVP_PKEY *key, + const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); + +int OCSP_response_status(OCSP_RESPONSE *resp); +OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp); + +const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs); +const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs); +const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_signer(OCSP_BASICRESP *bs, X509 **signer, + STACK_OF(X509) *extra_certs); + +int OCSP_resp_count(OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx); +const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(const OCSP_BASICRESP* bs); +const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_id(const OCSP_BASICRESP *bs, + const ASN1_OCTET_STRING **pid, + const X509_NAME **pname); +int OCSP_resp_get1_id(const OCSP_BASICRESP *bs, + ASN1_OCTET_STRING **pid, + X509_NAME **pname); + +int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last); +int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status, + int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, + ASN1_GENERALIZEDTIME *nextupd, long sec, long maxsec); + +int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, + X509_STORE *store, unsigned long flags); + +int OCSP_parse_url(const char *url, char **phost, char **pport, char **ppath, + int *pssl); + +int OCSP_id_issuer_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); +int OCSP_id_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); + +int OCSP_request_onereq_count(OCSP_REQUEST *req); +OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i); +OCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one); +int OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, + ASN1_OCTET_STRING **pikeyHash, + ASN1_INTEGER **pserial, OCSP_CERTID *cid); +int OCSP_request_is_signed(OCSP_REQUEST *req); +OCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp, + OCSP_CERTID *cid, + int status, int reason, + ASN1_TIME *revtime, + ASN1_TIME *thisupd, + ASN1_TIME *nextupd); +int OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert); +int OCSP_basic_sign(OCSP_BASICRESP *brsp, + X509 *signer, EVP_PKEY *key, const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_basic_sign_ctx(OCSP_BASICRESP *brsp, + X509 *signer, EVP_MD_CTX *ctx, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_RESPID_set_by_name(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_match(OCSP_RESPID *respid, X509 *cert); + +X509_EXTENSION *OCSP_crlID_new(const char *url, long *n, char *tim); + +X509_EXTENSION *OCSP_accept_responses_new(char **oids); + +X509_EXTENSION *OCSP_archive_cutoff_new(char *tim); + +X509_EXTENSION *OCSP_url_svcloc_new(X509_NAME *issuer, const char **urls); + +int OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x); +int OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos); +int OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos); +X509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc); +X509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc); +void *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit, + int *idx); +int OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc); + +int OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x); +int OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos); +int OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, const ASN1_OBJECT *obj, int lastpos); +int OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos); +X509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc); +X509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc); +void *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx); +int OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc); + +int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x); +int OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos); +int OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc); +X509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc); +void *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit, + int *idx); +int OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc); + +int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x); +int OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos); +int OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc); +X509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc); +void *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit, + int *idx); +int OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc); +const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x); + +DECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS) +DECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPID) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES) +DECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTID) +DECLARE_ASN1_FUNCTIONS(OCSP_REQUEST) +DECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE) +DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_CRLID) +DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC) + +const char *OCSP_response_status_str(long s); +const char *OCSP_cert_status_str(long s); +const char *OCSP_crl_reason_str(long s); + +int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *a, unsigned long flags); +int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags); + +int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, + X509_STORE *st, unsigned long flags); + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin32/include/openssl/ocsperr.h b/openSSL/lin32/include/openssl/ocsperr.h new file mode 100644 index 0000000..8dd9e01 --- /dev/null +++ b/openSSL/lin32/include/openssl/ocsperr.h @@ -0,0 +1,78 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OCSPERR_H +# define HEADER_OCSPERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_OCSP + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OCSP_strings(void); + +/* + * OCSP function codes. + */ +# define OCSP_F_D2I_OCSP_NONCE 102 +# define OCSP_F_OCSP_BASIC_ADD1_STATUS 103 +# define OCSP_F_OCSP_BASIC_SIGN 104 +# define OCSP_F_OCSP_BASIC_SIGN_CTX 119 +# define OCSP_F_OCSP_BASIC_VERIFY 105 +# define OCSP_F_OCSP_CERT_ID_NEW 101 +# define OCSP_F_OCSP_CHECK_DELEGATED 106 +# define OCSP_F_OCSP_CHECK_IDS 107 +# define OCSP_F_OCSP_CHECK_ISSUER 108 +# define OCSP_F_OCSP_CHECK_VALIDITY 115 +# define OCSP_F_OCSP_MATCH_ISSUERID 109 +# define OCSP_F_OCSP_PARSE_URL 114 +# define OCSP_F_OCSP_REQUEST_SIGN 110 +# define OCSP_F_OCSP_REQUEST_VERIFY 116 +# define OCSP_F_OCSP_RESPONSE_GET1_BASIC 111 +# define OCSP_F_PARSE_HTTP_LINE1 118 + +/* + * OCSP reason codes. + */ +# define OCSP_R_CERTIFICATE_VERIFY_ERROR 101 +# define OCSP_R_DIGEST_ERR 102 +# define OCSP_R_ERROR_IN_NEXTUPDATE_FIELD 122 +# define OCSP_R_ERROR_IN_THISUPDATE_FIELD 123 +# define OCSP_R_ERROR_PARSING_URL 121 +# define OCSP_R_MISSING_OCSPSIGNING_USAGE 103 +# define OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE 124 +# define OCSP_R_NOT_BASIC_RESPONSE 104 +# define OCSP_R_NO_CERTIFICATES_IN_CHAIN 105 +# define OCSP_R_NO_RESPONSE_DATA 108 +# define OCSP_R_NO_REVOKED_TIME 109 +# define OCSP_R_NO_SIGNER_KEY 130 +# define OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 110 +# define OCSP_R_REQUEST_NOT_SIGNED 128 +# define OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA 111 +# define OCSP_R_ROOT_CA_NOT_TRUSTED 112 +# define OCSP_R_SERVER_RESPONSE_ERROR 114 +# define OCSP_R_SERVER_RESPONSE_PARSE_ERROR 115 +# define OCSP_R_SIGNATURE_FAILURE 117 +# define OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND 118 +# define OCSP_R_STATUS_EXPIRED 125 +# define OCSP_R_STATUS_NOT_YET_VALID 126 +# define OCSP_R_STATUS_TOO_OLD 127 +# define OCSP_R_UNKNOWN_MESSAGE_DIGEST 119 +# define OCSP_R_UNKNOWN_NID 120 +# define OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE 129 + +# endif +#endif diff --git a/openSSL/lin32/include/openssl/opensslconf.h b/openSSL/lin32/include/openssl/opensslconf.h new file mode 100644 index 0000000..fee81c0 --- /dev/null +++ b/openSSL/lin32/include/openssl/opensslconf.h @@ -0,0 +1,197 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#endif +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +#endif +#ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +#endif +#ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_STATIC_ENGINE +# define OPENSSL_NO_STATIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#ifndef OPENSSL_FILE +# ifdef OPENSSL_NO_FILENAMES +# define OPENSSL_FILE "" +# define OPENSSL_LINE 0 +# else +# define OPENSSL_FILE __FILE__ +# define OPENSSL_LINE __LINE__ +# endif +#endif + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# define BN_LLONG +/* Only one for the following should be defined */ +# undef SIXTY_FOUR_BIT_LONG +# undef SIXTY_FOUR_BIT +# define THIRTY_TWO_BIT +#endif + +#define RC4_INT unsigned int + +#ifdef __cplusplus +} +#endif diff --git a/openSSL/lin32/include/openssl/opensslv.h b/openSSL/lin32/include/openssl/opensslv.h new file mode 100644 index 0000000..fec5f57 --- /dev/null +++ b/openSSL/lin32/include/openssl/opensslv.h @@ -0,0 +1,101 @@ +/* + * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OPENSSLV_H +# define HEADER_OPENSSLV_H + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * Numeric release version identifier: + * MNNFFPPS: major minor fix patch status + * The status nibble has one of the values 0 for development, 1 to e for betas + * 1 to 14, and f for release. The patch level is exactly that. + * For example: + * 0.9.3-dev 0x00903000 + * 0.9.3-beta1 0x00903001 + * 0.9.3-beta2-dev 0x00903002 + * 0.9.3-beta2 0x00903002 (same as ...beta2-dev) + * 0.9.3 0x0090300f + * 0.9.3a 0x0090301f + * 0.9.4 0x0090400f + * 1.2.3z 0x102031af + * + * For continuity reasons (because 0.9.5 is already out, and is coded + * 0x00905100), between 0.9.5 and 0.9.6 the coding of the patch level + * part is slightly different, by setting the highest bit. This means + * that 0.9.5a looks like this: 0x0090581f. At 0.9.6, we can start + * with 0x0090600S... + * + * (Prior to 0.9.3-dev a different scheme was used: 0.9.2b is 0x0922.) + * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for + * major minor fix final patch/beta) + */ +# define OPENSSL_VERSION_NUMBER 0x1010111fL +# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1q 5 Jul 2022" + +/*- + * The macros below are to be used for shared library (.so, .dll, ...) + * versioning. That kind of versioning works a bit differently between + * operating systems. The most usual scheme is to set a major and a minor + * number, and have the runtime loader check that the major number is equal + * to what it was at application link time, while the minor number has to + * be greater or equal to what it was at application link time. With this + * scheme, the version number is usually part of the file name, like this: + * + * libcrypto.so.0.9 + * + * Some unixen also make a softlink with the major version number only: + * + * libcrypto.so.0 + * + * On Tru64 and IRIX 6.x it works a little bit differently. There, the + * shared library version is stored in the file, and is actually a series + * of versions, separated by colons. The rightmost version present in the + * library when linking an application is stored in the application to be + * matched at run time. When the application is run, a check is done to + * see if the library version stored in the application matches any of the + * versions in the version string of the library itself. + * This version string can be constructed in any way, depending on what + * kind of matching is desired. However, to implement the same scheme as + * the one used in the other unixen, all compatible versions, from lowest + * to highest, should be part of the string. Consecutive builds would + * give the following versions strings: + * + * 3.0 + * 3.0:3.1 + * 3.0:3.1:3.2 + * 4.0 + * 4.0:4.1 + * + * Notice how version 4 is completely incompatible with version, and + * therefore give the breach you can see. + * + * There may be other schemes as well that I haven't yet discovered. + * + * So, here's the way it works here: first of all, the library version + * number doesn't need at all to match the overall OpenSSL version. + * However, it's nice and more understandable if it actually does. + * The current library version is stored in the macro SHLIB_VERSION_NUMBER, + * which is just a piece of text in the format "M.m.e" (Major, minor, edit). + * For the sake of Tru64, IRIX, and any other OS that behaves in similar ways, + * we need to keep a history of version numbers, which is done in the + * macro SHLIB_VERSION_HISTORY. The numbers are separated by colons and + * should only keep the versions that are binary compatible with the current. + */ +# define SHLIB_VERSION_HISTORY "" +# define SHLIB_VERSION_NUMBER "1.1" + + +#ifdef __cplusplus +} +#endif +#endif /* HEADER_OPENSSLV_H */ diff --git a/openSSL/lin32/include/openssl/ossl_typ.h b/openSSL/lin32/include/openssl/ossl_typ.h new file mode 100644 index 0000000..e0edfaa --- /dev/null +++ b/openSSL/lin32/include/openssl/ossl_typ.h @@ -0,0 +1,197 @@ +/* + * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OPENSSL_TYPES_H +# define HEADER_OPENSSL_TYPES_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +# ifdef NO_ASN1_TYPEDEFS +# define ASN1_INTEGER ASN1_STRING +# define ASN1_ENUMERATED ASN1_STRING +# define ASN1_BIT_STRING ASN1_STRING +# define ASN1_OCTET_STRING ASN1_STRING +# define ASN1_PRINTABLESTRING ASN1_STRING +# define ASN1_T61STRING ASN1_STRING +# define ASN1_IA5STRING ASN1_STRING +# define ASN1_UTCTIME ASN1_STRING +# define ASN1_GENERALIZEDTIME ASN1_STRING +# define ASN1_TIME ASN1_STRING +# define ASN1_GENERALSTRING ASN1_STRING +# define ASN1_UNIVERSALSTRING ASN1_STRING +# define ASN1_BMPSTRING ASN1_STRING +# define ASN1_VISIBLESTRING ASN1_STRING +# define ASN1_UTF8STRING ASN1_STRING +# define ASN1_BOOLEAN int +# define ASN1_NULL int +# else +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct asn1_string_st ASN1_ENUMERATED; +typedef struct asn1_string_st ASN1_BIT_STRING; +typedef struct asn1_string_st ASN1_OCTET_STRING; +typedef struct asn1_string_st ASN1_PRINTABLESTRING; +typedef struct asn1_string_st ASN1_T61STRING; +typedef struct asn1_string_st ASN1_IA5STRING; +typedef struct asn1_string_st ASN1_GENERALSTRING; +typedef struct asn1_string_st ASN1_UNIVERSALSTRING; +typedef struct asn1_string_st ASN1_BMPSTRING; +typedef struct asn1_string_st ASN1_UTCTIME; +typedef struct asn1_string_st ASN1_TIME; +typedef struct asn1_string_st ASN1_GENERALIZEDTIME; +typedef struct asn1_string_st ASN1_VISIBLESTRING; +typedef struct asn1_string_st ASN1_UTF8STRING; +typedef struct asn1_string_st ASN1_STRING; +typedef int ASN1_BOOLEAN; +typedef int ASN1_NULL; +# endif + +typedef struct asn1_object_st ASN1_OBJECT; + +typedef struct ASN1_ITEM_st ASN1_ITEM; +typedef struct asn1_pctx_st ASN1_PCTX; +typedef struct asn1_sctx_st ASN1_SCTX; + +# ifdef _WIN32 +# undef X509_NAME +# undef X509_EXTENSIONS +# undef PKCS7_ISSUER_AND_SERIAL +# undef PKCS7_SIGNER_INFO +# undef OCSP_REQUEST +# undef OCSP_RESPONSE +# endif + +# ifdef BIGNUM +# undef BIGNUM +# endif +struct dane_st; +typedef struct bio_st BIO; +typedef struct bignum_st BIGNUM; +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; + +typedef struct buf_mem_st BUF_MEM; + +typedef struct evp_cipher_st EVP_CIPHER; +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; +typedef struct evp_md_st EVP_MD; +typedef struct evp_md_ctx_st EVP_MD_CTX; +typedef struct evp_pkey_st EVP_PKEY; + +typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; + +typedef struct evp_pkey_method_st EVP_PKEY_METHOD; +typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; + +typedef struct evp_Encode_Ctx_st EVP_ENCODE_CTX; + +typedef struct hmac_ctx_st HMAC_CTX; + +typedef struct dh_st DH; +typedef struct dh_method DH_METHOD; + +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; + +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; +typedef struct rsa_pss_params_st RSA_PSS_PARAMS; + +typedef struct ec_key_st EC_KEY; +typedef struct ec_key_method_st EC_KEY_METHOD; + +typedef struct rand_meth_st RAND_METHOD; +typedef struct rand_drbg_st RAND_DRBG; + +typedef struct ssl_dane_st SSL_DANE; +typedef struct x509_st X509; +typedef struct X509_algor_st X509_ALGOR; +typedef struct X509_crl_st X509_CRL; +typedef struct x509_crl_method_st X509_CRL_METHOD; +typedef struct x509_revoked_st X509_REVOKED; +typedef struct X509_name_st X509_NAME; +typedef struct X509_pubkey_st X509_PUBKEY; +typedef struct x509_store_st X509_STORE; +typedef struct x509_store_ctx_st X509_STORE_CTX; + +typedef struct x509_object_st X509_OBJECT; +typedef struct x509_lookup_st X509_LOOKUP; +typedef struct x509_lookup_method_st X509_LOOKUP_METHOD; +typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM; + +typedef struct x509_sig_info_st X509_SIG_INFO; + +typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; + +typedef struct v3_ext_ctx X509V3_CTX; +typedef struct conf_st CONF; +typedef struct ossl_init_settings_st OPENSSL_INIT_SETTINGS; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct engine_st ENGINE; +typedef struct ssl_st SSL; +typedef struct ssl_ctx_st SSL_CTX; + +typedef struct comp_ctx_st COMP_CTX; +typedef struct comp_method_st COMP_METHOD; + +typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; +typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; +typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; +typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; + +typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; +typedef struct DIST_POINT_st DIST_POINT; +typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; +typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; + +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; + +typedef struct ocsp_req_ctx_st OCSP_REQ_CTX; +typedef struct ocsp_response_st OCSP_RESPONSE; +typedef struct ocsp_responder_id_st OCSP_RESPID; + +typedef struct sct_st SCT; +typedef struct sct_ctx_st SCT_CTX; +typedef struct ctlog_st CTLOG; +typedef struct ctlog_store_st CTLOG_STORE; +typedef struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX; + +typedef struct ossl_store_info_st OSSL_STORE_INFO; +typedef struct ossl_store_search_st OSSL_STORE_SEARCH; + +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && \ + defined(INTMAX_MAX) && defined(UINTMAX_MAX) +typedef intmax_t ossl_intmax_t; +typedef uintmax_t ossl_uintmax_t; +#else +/* + * Not long long, because the C-library can only be expected to provide + * strtoll(), strtoull() at the same time as intmax_t and strtoimax(), + * strtoumax(). Since we use these for parsing arguments, we need the + * conversion functions, not just the sizes. + */ +typedef long ossl_intmax_t; +typedef unsigned long ossl_uintmax_t; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* def HEADER_OPENSSL_TYPES_H */ diff --git a/openSSL/lin32/include/openssl/pem.h b/openSSL/lin32/include/openssl/pem.h new file mode 100644 index 0000000..2ef5b5d --- /dev/null +++ b/openSSL/lin32/include/openssl/pem.h @@ -0,0 +1,378 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEM_H +# define HEADER_PEM_H + +# include +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define PEM_BUFSIZE 1024 + +# define PEM_STRING_X509_OLD "X509 CERTIFICATE" +# define PEM_STRING_X509 "CERTIFICATE" +# define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +# define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +# define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +# define PEM_STRING_X509_CRL "X509 CRL" +# define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +# define PEM_STRING_PUBLIC "PUBLIC KEY" +# define PEM_STRING_RSA "RSA PRIVATE KEY" +# define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +# define PEM_STRING_DSA "DSA PRIVATE KEY" +# define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +# define PEM_STRING_PKCS7 "PKCS7" +# define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +# define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +# define PEM_STRING_PKCS8INF "PRIVATE KEY" +# define PEM_STRING_DHPARAMS "DH PARAMETERS" +# define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +# define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +# define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +# define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +# define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +# define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +# define PEM_STRING_PARAMETERS "PARAMETERS" +# define PEM_STRING_CMS "CMS" + +# define PEM_TYPE_ENCRYPTED 10 +# define PEM_TYPE_MIC_ONLY 20 +# define PEM_TYPE_MIC_CLEAR 30 +# define PEM_TYPE_CLEAR 40 + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +# ifdef OPENSSL_NO_STDIO + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +# else + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ +type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str,fp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, const type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# endif + +# define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ +type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str,bp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, const type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_read_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb(name, type, str, asn1) + +/* These are the same except they are for the declarations */ + +# if defined(OPENSSL_NO_STDIO) + +# define DECLARE_PEM_read_fp(name, type) /**/ +# define DECLARE_PEM_write_fp(name, type) /**/ +# define DECLARE_PEM_write_fp_const(name, type) /**/ +# define DECLARE_PEM_write_cb_fp(name, type) /**/ +# else + +# define DECLARE_PEM_read_fp(name, type) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x); + +# define DECLARE_PEM_write_fp_const(name, type) \ + int PEM_write_##name(FILE *fp, const type *x); + +# define DECLARE_PEM_write_cb_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# endif + +# define DECLARE_PEM_read_bio(name, type) \ + type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x); + +# define DECLARE_PEM_write_bio_const(name, type) \ + int PEM_write_bio_##name(BIO *bp, const type *x); + +# define DECLARE_PEM_write_cb_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_fp(name, type) +# define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_fp_const(name, type) +# define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_fp(name, type) +# define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_fp(name, type) +# define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write(name, type) +# define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_const(name, type) +# define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_cb(name, type) +typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata); + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +# define PEM_FLAG_SECURE 0x1 +# define PEM_FLAG_EAY_COMPATIBLE 0x2 +# define PEM_FLAG_ONLY_B64 0x4 +int PEM_read_bio_ex(BIO *bp, char **name, char **header, + unsigned char **data, long *len, unsigned int flags); +int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, void *x, + const EVP_CIPHER *enc, unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, + unsigned char *kstr, int klen, + pem_password_cb *cd, void *u); + +#ifndef OPENSSL_NO_STDIO +int PEM_read(FILE *fp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write(FILE *fp, const char *name, const char *hdr, + const unsigned char *data, long len); +void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, + void *x, const EVP_CIPHER *enc, unsigned char *kstr, + int klen, pem_password_cb *callback, void *u); +STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +#endif + +int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +int PEM_SignUpdate(EVP_MD_CTX *ctx, unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +/* The default pem_password_cb that's used internally */ +int PEM_def_callback(char *buf, int num, int rwflag, void *userdata); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, char *str); + +# include + +DECLARE_PEM_rw(X509, X509) +DECLARE_PEM_rw(X509_AUX, X509) +DECLARE_PEM_rw(X509_REQ, X509_REQ) +DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) +DECLARE_PEM_rw(X509_CRL, X509_CRL) +DECLARE_PEM_rw(PKCS7, PKCS7) +DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) +DECLARE_PEM_rw(PKCS8, X509_SIG) +DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) +# ifndef OPENSSL_NO_RSA +DECLARE_PEM_rw_cb(RSAPrivateKey, RSA) +DECLARE_PEM_rw_const(RSAPublicKey, RSA) +DECLARE_PEM_rw(RSA_PUBKEY, RSA) +# endif +# ifndef OPENSSL_NO_DSA +DECLARE_PEM_rw_cb(DSAPrivateKey, DSA) +DECLARE_PEM_rw(DSA_PUBKEY, DSA) +DECLARE_PEM_rw_const(DSAparams, DSA) +# endif +# ifndef OPENSSL_NO_EC +DECLARE_PEM_rw_const(ECPKParameters, EC_GROUP) +DECLARE_PEM_rw_cb(ECPrivateKey, EC_KEY) +DECLARE_PEM_rw(EC_PUBKEY, EC_KEY) +# endif +# ifndef OPENSSL_NO_DH +DECLARE_PEM_rw_const(DHparams, DH) +DECLARE_PEM_write_const(DHxparams, DH) +# endif +DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PrivateKey_traditional(BIO *bp, EVP_PKEY *x, + const EVP_CIPHER *enc, + unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *, + char *, int, pem_password_cb *, void *); +int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +# ifndef OPENSSL_NO_STDIO +int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); + +EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, pem_password_cb *cd, + void *u); +# endif +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x); + +# ifndef OPENSSL_NO_DSA +EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PrivateKey_bio(BIO *in); +EVP_PKEY *b2i_PublicKey_bio(BIO *in); +int i2b_PrivateKey_bio(BIO *out, EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk); +# ifndef OPENSSL_NO_RC4 +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +# endif +# endif + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/pem2.h b/openSSL/lin32/include/openssl/pem2.h new file mode 100644 index 0000000..038fe79 --- /dev/null +++ b/openSSL/lin32/include/openssl/pem2.h @@ -0,0 +1,13 @@ +/* + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEM2_H +# define HEADER_PEM2_H +# include +#endif diff --git a/openSSL/lin32/include/openssl/pemerr.h b/openSSL/lin32/include/openssl/pemerr.h new file mode 100644 index 0000000..4f7e357 --- /dev/null +++ b/openSSL/lin32/include/openssl/pemerr.h @@ -0,0 +1,105 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEMERR_H +# define HEADER_PEMERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PEM_strings(void); + +/* + * PEM function codes. + */ +# define PEM_F_B2I_DSS 127 +# define PEM_F_B2I_PVK_BIO 128 +# define PEM_F_B2I_RSA 129 +# define PEM_F_CHECK_BITLEN_DSA 130 +# define PEM_F_CHECK_BITLEN_RSA 131 +# define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120 +# define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121 +# define PEM_F_DO_B2I 132 +# define PEM_F_DO_B2I_BIO 133 +# define PEM_F_DO_BLOB_HEADER 134 +# define PEM_F_DO_I2B 146 +# define PEM_F_DO_PK8PKEY 126 +# define PEM_F_DO_PK8PKEY_FP 125 +# define PEM_F_DO_PVK_BODY 135 +# define PEM_F_DO_PVK_HEADER 136 +# define PEM_F_GET_HEADER_AND_DATA 143 +# define PEM_F_GET_NAME 144 +# define PEM_F_I2B_PVK 137 +# define PEM_F_I2B_PVK_BIO 138 +# define PEM_F_LOAD_IV 101 +# define PEM_F_PEM_ASN1_READ 102 +# define PEM_F_PEM_ASN1_READ_BIO 103 +# define PEM_F_PEM_ASN1_WRITE 104 +# define PEM_F_PEM_ASN1_WRITE_BIO 105 +# define PEM_F_PEM_DEF_CALLBACK 100 +# define PEM_F_PEM_DO_HEADER 106 +# define PEM_F_PEM_GET_EVP_CIPHER_INFO 107 +# define PEM_F_PEM_READ 108 +# define PEM_F_PEM_READ_BIO 109 +# define PEM_F_PEM_READ_BIO_DHPARAMS 141 +# define PEM_F_PEM_READ_BIO_EX 145 +# define PEM_F_PEM_READ_BIO_PARAMETERS 140 +# define PEM_F_PEM_READ_BIO_PRIVATEKEY 123 +# define PEM_F_PEM_READ_DHPARAMS 142 +# define PEM_F_PEM_READ_PRIVATEKEY 124 +# define PEM_F_PEM_SIGNFINAL 112 +# define PEM_F_PEM_WRITE 113 +# define PEM_F_PEM_WRITE_BIO 114 +# define PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL 147 +# define PEM_F_PEM_WRITE_PRIVATEKEY 139 +# define PEM_F_PEM_X509_INFO_READ 115 +# define PEM_F_PEM_X509_INFO_READ_BIO 116 +# define PEM_F_PEM_X509_INFO_WRITE_BIO 117 + +/* + * PEM reason codes. + */ +# define PEM_R_BAD_BASE64_DECODE 100 +# define PEM_R_BAD_DECRYPT 101 +# define PEM_R_BAD_END_LINE 102 +# define PEM_R_BAD_IV_CHARS 103 +# define PEM_R_BAD_MAGIC_NUMBER 116 +# define PEM_R_BAD_PASSWORD_READ 104 +# define PEM_R_BAD_VERSION_NUMBER 117 +# define PEM_R_BIO_WRITE_FAILURE 118 +# define PEM_R_CIPHER_IS_NULL 127 +# define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +# define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 +# define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +# define PEM_R_HEADER_TOO_LONG 128 +# define PEM_R_INCONSISTENT_HEADER 121 +# define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 +# define PEM_R_KEYBLOB_TOO_SHORT 123 +# define PEM_R_MISSING_DEK_IV 129 +# define PEM_R_NOT_DEK_INFO 105 +# define PEM_R_NOT_ENCRYPTED 106 +# define PEM_R_NOT_PROC_TYPE 107 +# define PEM_R_NO_START_LINE 108 +# define PEM_R_PROBLEMS_GETTING_PASSWORD 109 +# define PEM_R_PVK_DATA_TOO_SHORT 124 +# define PEM_R_PVK_TOO_SHORT 125 +# define PEM_R_READ_KEY 111 +# define PEM_R_SHORT_HEADER 112 +# define PEM_R_UNEXPECTED_DEK_IV 130 +# define PEM_R_UNSUPPORTED_CIPHER 113 +# define PEM_R_UNSUPPORTED_ENCRYPTION 114 +# define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 +# define PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE 110 + +#endif diff --git a/openSSL/lin32/include/openssl/pkcs12.h b/openSSL/lin32/include/openssl/pkcs12.h new file mode 100644 index 0000000..3f43dad --- /dev/null +++ b/openSSL/lin32/include/openssl/pkcs12.h @@ -0,0 +1,223 @@ +/* + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS12_H +# define HEADER_PKCS12_H + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define PKCS12_KEY_ID 1 +# define PKCS12_IV_ID 2 +# define PKCS12_MAC_ID 3 + +/* Default iteration count */ +# ifndef PKCS12_DEFAULT_ITER +# define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER +# endif + +# define PKCS12_MAC_KEY_LENGTH 20 + +# define PKCS12_SALT_LEN 8 + +/* It's not clear if these are actually needed... */ +# define PKCS12_key_gen PKCS12_key_gen_utf8 +# define PKCS12_add_friendlyname PKCS12_add_friendlyname_utf8 + +/* MS key usage constants */ + +# define KEY_EX 0x10 +# define KEY_SIG 0x80 + +typedef struct PKCS12_MAC_DATA_st PKCS12_MAC_DATA; + +typedef struct PKCS12_st PKCS12; + +typedef struct PKCS12_SAFEBAG_st PKCS12_SAFEBAG; + +DEFINE_STACK_OF(PKCS12_SAFEBAG) + +typedef struct pkcs12_bag_st PKCS12_BAGS; + +# define PKCS12_ERROR 0 +# define PKCS12_OK 1 + +/* Compatibility macros */ + +#if OPENSSL_API_COMPAT < 0x10100000L + +# define M_PKCS12_bag_type PKCS12_bag_type +# define M_PKCS12_cert_bag_type PKCS12_cert_bag_type +# define M_PKCS12_crl_bag_type PKCS12_cert_bag_type + +# define PKCS12_certbag2x509 PKCS12_SAFEBAG_get1_cert +# define PKCS12_certbag2scrl PKCS12_SAFEBAG_get1_crl +# define PKCS12_bag_type PKCS12_SAFEBAG_get_nid +# define PKCS12_cert_bag_type PKCS12_SAFEBAG_get_bag_nid +# define PKCS12_x5092certbag PKCS12_SAFEBAG_create_cert +# define PKCS12_x509crl2certbag PKCS12_SAFEBAG_create_crl +# define PKCS12_MAKE_KEYBAG PKCS12_SAFEBAG_create0_p8inf +# define PKCS12_MAKE_SHKEYBAG PKCS12_SAFEBAG_create_pkcs8_encrypt + +#endif + +DEPRECATEDIN_1_1_0(ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, int attr_nid)) + +ASN1_TYPE *PKCS8_get_attr(PKCS8_PRIV_KEY_INFO *p8, int attr_nid); +int PKCS12_mac_present(const PKCS12 *p12); +void PKCS12_get0_mac(const ASN1_OCTET_STRING **pmac, + const X509_ALGOR **pmacalg, + const ASN1_OCTET_STRING **psalt, + const ASN1_INTEGER **piter, + const PKCS12 *p12); + +const ASN1_TYPE *PKCS12_SAFEBAG_get0_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_type(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_nid(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); + +X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); +const STACK_OF(PKCS12_SAFEBAG) * +PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); +const PKCS8_PRIV_KEY_INFO *PKCS12_SAFEBAG_get0_p8inf(const PKCS12_SAFEBAG *bag); +const X509_SIG *PKCS12_SAFEBAG_get0_pkcs8(const PKCS12_SAFEBAG *bag); + +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_cert(X509 *x509); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_crl(X509_CRL *crl); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_p8inf(PKCS8_PRIV_KEY_INFO *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_pkcs8(X509_SIG *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf); + +PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, + int nid1, int nid2); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(const X509_SIG *p8, const char *pass, + int passlen); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen); +X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8); +X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); +PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7); +PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, + int passlen); + +int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes); +STACK_OF(PKCS7) *PKCS12_unpack_authsafes(const PKCS12 *p12); + +int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, + int namelen); +int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_utf8(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag, + const unsigned char *name, int namelen); +int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage); +ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, + int attr_nid); +char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); +const STACK_OF(X509_ATTRIBUTE) * +PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de); +void *PKCS12_item_decrypt_d2i(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf); +PKCS12 *PKCS12_init(int mode); +int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_utf8(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de); +int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *mac, unsigned int *maclen); +int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); +int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type); +int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, + int saltlen, const EVP_MD *md_type); +unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2asc(const unsigned char *uni, int unilen); +unsigned char *OPENSSL_utf82uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2utf8(const unsigned char *uni, int unilen); + +DECLARE_ASN1_FUNCTIONS(PKCS12) +DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA) +DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG) +DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS) + +DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS) +DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) + +void PKCS12_PBE_add(void); +int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, + STACK_OF(X509) **ca); +PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype); + +PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); +PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass); +int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass); +PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); + +int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12); +# ifndef OPENSSL_NO_STDIO +int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12); +# endif +PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); +# ifndef OPENSSL_NO_STDIO +PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); +# endif +int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/pkcs12err.h b/openSSL/lin32/include/openssl/pkcs12err.h new file mode 100644 index 0000000..eff5eb2 --- /dev/null +++ b/openSSL/lin32/include/openssl/pkcs12err.h @@ -0,0 +1,81 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS12ERR_H +# define HEADER_PKCS12ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PKCS12_strings(void); + +/* + * PKCS12 function codes. + */ +# define PKCS12_F_OPENSSL_ASC2UNI 121 +# define PKCS12_F_OPENSSL_UNI2ASC 124 +# define PKCS12_F_OPENSSL_UNI2UTF8 127 +# define PKCS12_F_OPENSSL_UTF82UNI 129 +# define PKCS12_F_PKCS12_CREATE 105 +# define PKCS12_F_PKCS12_GEN_MAC 107 +# define PKCS12_F_PKCS12_INIT 109 +# define PKCS12_F_PKCS12_ITEM_DECRYPT_D2I 106 +# define PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT 108 +# define PKCS12_F_PKCS12_ITEM_PACK_SAFEBAG 117 +# define PKCS12_F_PKCS12_KEY_GEN_ASC 110 +# define PKCS12_F_PKCS12_KEY_GEN_UNI 111 +# define PKCS12_F_PKCS12_KEY_GEN_UTF8 116 +# define PKCS12_F_PKCS12_NEWPASS 128 +# define PKCS12_F_PKCS12_PACK_P7DATA 114 +# define PKCS12_F_PKCS12_PACK_P7ENCDATA 115 +# define PKCS12_F_PKCS12_PARSE 118 +# define PKCS12_F_PKCS12_PBE_CRYPT 119 +# define PKCS12_F_PKCS12_PBE_KEYIVGEN 120 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE0_P8INF 112 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE0_PKCS8 113 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE_PKCS8_ENCRYPT 133 +# define PKCS12_F_PKCS12_SETUP_MAC 122 +# define PKCS12_F_PKCS12_SET_MAC 123 +# define PKCS12_F_PKCS12_UNPACK_AUTHSAFES 130 +# define PKCS12_F_PKCS12_UNPACK_P7DATA 131 +# define PKCS12_F_PKCS12_VERIFY_MAC 126 +# define PKCS12_F_PKCS8_ENCRYPT 125 +# define PKCS12_F_PKCS8_SET0_PBE 132 + +/* + * PKCS12 reason codes. + */ +# define PKCS12_R_CANT_PACK_STRUCTURE 100 +# define PKCS12_R_CONTENT_TYPE_NOT_DATA 121 +# define PKCS12_R_DECODE_ERROR 101 +# define PKCS12_R_ENCODE_ERROR 102 +# define PKCS12_R_ENCRYPT_ERROR 103 +# define PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE 120 +# define PKCS12_R_INVALID_NULL_ARGUMENT 104 +# define PKCS12_R_INVALID_NULL_PKCS12_POINTER 105 +# define PKCS12_R_IV_GEN_ERROR 106 +# define PKCS12_R_KEY_GEN_ERROR 107 +# define PKCS12_R_MAC_ABSENT 108 +# define PKCS12_R_MAC_GENERATION_ERROR 109 +# define PKCS12_R_MAC_SETUP_ERROR 110 +# define PKCS12_R_MAC_STRING_SET_ERROR 111 +# define PKCS12_R_MAC_VERIFY_FAILURE 113 +# define PKCS12_R_PARSE_ERROR 114 +# define PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR 115 +# define PKCS12_R_PKCS12_CIPHERFINAL_ERROR 116 +# define PKCS12_R_PKCS12_PBE_CRYPT_ERROR 117 +# define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118 +# define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119 + +#endif diff --git a/openSSL/lin32/include/openssl/pkcs7.h b/openSSL/lin32/include/openssl/pkcs7.h new file mode 100644 index 0000000..9b66e00 --- /dev/null +++ b/openSSL/lin32/include/openssl/pkcs7.h @@ -0,0 +1,319 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS7_H +# define HEADER_PKCS7_H + +# include +# include +# include + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +Encryption_ID DES-CBC +Digest_ID MD5 +Digest_Encryption_ID rsaEncryption +Key_Encryption_ID rsaEncryption +*/ + +typedef struct pkcs7_issuer_and_serial_st { + X509_NAME *issuer; + ASN1_INTEGER *serial; +} PKCS7_ISSUER_AND_SERIAL; + +typedef struct pkcs7_signer_info_st { + ASN1_INTEGER *version; /* version 1 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *digest_alg; + STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */ + X509_ALGOR *digest_enc_alg; + ASN1_OCTET_STRING *enc_digest; + STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */ + /* The private key to sign with */ + EVP_PKEY *pkey; +} PKCS7_SIGNER_INFO; + +DEFINE_STACK_OF(PKCS7_SIGNER_INFO) + +typedef struct pkcs7_recip_info_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *key_enc_algor; + ASN1_OCTET_STRING *enc_key; + X509 *cert; /* get the pub-key from this */ +} PKCS7_RECIP_INFO; + +DEFINE_STACK_OF(PKCS7_RECIP_INFO) + +typedef struct pkcs7_signed_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + struct pkcs7_st *contents; +} PKCS7_SIGNED; +/* + * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about + * merging the two + */ + +typedef struct pkcs7_enc_content_st { + ASN1_OBJECT *content_type; + X509_ALGOR *algorithm; + ASN1_OCTET_STRING *enc_data; /* [ 0 ] */ + const EVP_CIPHER *cipher; +} PKCS7_ENC_CONTENT; + +typedef struct pkcs7_enveloped_st { + ASN1_INTEGER *version; /* version 0 */ + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENVELOPE; + +typedef struct pkcs7_signedandenveloped_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + PKCS7_ENC_CONTENT *enc_data; + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; +} PKCS7_SIGN_ENVELOPE; + +typedef struct pkcs7_digest_st { + ASN1_INTEGER *version; /* version 0 */ + X509_ALGOR *md; /* md used */ + struct pkcs7_st *contents; + ASN1_OCTET_STRING *digest; +} PKCS7_DIGEST; + +typedef struct pkcs7_encrypted_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENCRYPT; + +typedef struct pkcs7_st { + /* + * The following is non NULL if it contains ASN1 encoding of this + * structure + */ + unsigned char *asn1; + long length; +# define PKCS7_S_HEADER 0 +# define PKCS7_S_BODY 1 +# define PKCS7_S_TAIL 2 + int state; /* used during processing */ + int detached; + ASN1_OBJECT *type; + /* content as defined by the type */ + /* + * all encryption/message digests are applied to the 'contents', leaving + * out the 'type' field. + */ + union { + char *ptr; + /* NID_pkcs7_data */ + ASN1_OCTET_STRING *data; + /* NID_pkcs7_signed */ + PKCS7_SIGNED *sign; + /* NID_pkcs7_enveloped */ + PKCS7_ENVELOPE *enveloped; + /* NID_pkcs7_signedAndEnveloped */ + PKCS7_SIGN_ENVELOPE *signed_and_enveloped; + /* NID_pkcs7_digest */ + PKCS7_DIGEST *digest; + /* NID_pkcs7_encrypted */ + PKCS7_ENCRYPT *encrypted; + /* Anything else */ + ASN1_TYPE *other; + } d; +} PKCS7; + +DEFINE_STACK_OF(PKCS7) + +# define PKCS7_OP_SET_DETACHED_SIGNATURE 1 +# define PKCS7_OP_GET_DETACHED_SIGNATURE 2 + +# define PKCS7_get_signed_attributes(si) ((si)->auth_attr) +# define PKCS7_get_attributes(si) ((si)->unauth_attr) + +# define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed) +# define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted) +# define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped) +# define PKCS7_type_is_signedAndEnveloped(a) \ + (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped) +# define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) +# define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest) + +# define PKCS7_set_detached(p,v) \ + PKCS7_ctrl(p,PKCS7_OP_SET_DETACHED_SIGNATURE,v,NULL) +# define PKCS7_get_detached(p) \ + PKCS7_ctrl(p,PKCS7_OP_GET_DETACHED_SIGNATURE,0,NULL) + +# define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7)) + +/* S/MIME related flags */ + +# define PKCS7_TEXT 0x1 +# define PKCS7_NOCERTS 0x2 +# define PKCS7_NOSIGS 0x4 +# define PKCS7_NOCHAIN 0x8 +# define PKCS7_NOINTERN 0x10 +# define PKCS7_NOVERIFY 0x20 +# define PKCS7_DETACHED 0x40 +# define PKCS7_BINARY 0x80 +# define PKCS7_NOATTR 0x100 +# define PKCS7_NOSMIMECAP 0x200 +# define PKCS7_NOOLDMIMETYPE 0x400 +# define PKCS7_CRLFEOL 0x800 +# define PKCS7_STREAM 0x1000 +# define PKCS7_NOCRL 0x2000 +# define PKCS7_PARTIAL 0x4000 +# define PKCS7_REUSE_DIGEST 0x8000 +# define PKCS7_NO_DUAL_CONTENT 0x10000 + +/* Flags: for compatibility with older code */ + +# define SMIME_TEXT PKCS7_TEXT +# define SMIME_NOCERTS PKCS7_NOCERTS +# define SMIME_NOSIGS PKCS7_NOSIGS +# define SMIME_NOCHAIN PKCS7_NOCHAIN +# define SMIME_NOINTERN PKCS7_NOINTERN +# define SMIME_NOVERIFY PKCS7_NOVERIFY +# define SMIME_DETACHED PKCS7_DETACHED +# define SMIME_BINARY PKCS7_BINARY +# define SMIME_NOATTR PKCS7_NOATTR + +/* CRLF ASCII canonicalisation */ +# define SMIME_ASCIICRLF 0x80000 + +DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) + +int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, + const EVP_MD *type, unsigned char *md, + unsigned int *len); +# ifndef OPENSSL_NO_STDIO +PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7); +int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7); +# endif +PKCS7 *PKCS7_dup(PKCS7 *p7); +PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); +int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7); +int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); +int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); + +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) +DECLARE_ASN1_FUNCTIONS(PKCS7) + +DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN) +DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY) + +DECLARE_ASN1_NDEF_FUNCTION(PKCS7) +DECLARE_ASN1_PRINT_FUNCTION(PKCS7) + +long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); + +int PKCS7_set_type(PKCS7 *p7, int type); +int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other); +int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); +int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, + const EVP_MD *dgst); +int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); +int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); +int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_content_new(PKCS7 *p7, int nid); +int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, + BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, + X509 *x509); + +BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); +int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); +BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert); + +PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, + EVP_PKEY *pkey, const EVP_MD *dgst); +X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md); +STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7); + +PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); +void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk, + X509_ALGOR **pdig, X509_ALGOR **psig); +void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc); +int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); +int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); +int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); +int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7); + +PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); +ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type, + void *data); +int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype, + void *value); +ASN1_TYPE *PKCS7_get_attribute(PKCS7_SIGNER_INFO *si, int nid); +ASN1_TYPE *PKCS7_get_signed_attribute(PKCS7_SIGNER_INFO *si, int nid); +int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); + +PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags); + +PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, + X509 *signcert, EVP_PKEY *pkey, + const EVP_MD *md, int flags); + +int PKCS7_final(PKCS7 *p7, BIO *data, int flags); +int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, + BIO *indata, BIO *out, int flags); +STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, + int flags); +PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, + int flags); +int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, + int flags); + +int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, + STACK_OF(X509_ALGOR) *cap); +STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); +int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg); + +int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid); +int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t); +int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, + const unsigned char *md, int mdlen); + +int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); +PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); + +BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/pkcs7err.h b/openSSL/lin32/include/openssl/pkcs7err.h new file mode 100644 index 0000000..02e0299 --- /dev/null +++ b/openSSL/lin32/include/openssl/pkcs7err.h @@ -0,0 +1,103 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS7ERR_H +# define HEADER_PKCS7ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PKCS7_strings(void); + +/* + * PKCS7 function codes. + */ +# define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 136 +# define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 135 +# define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 118 +# define PKCS7_F_PKCS7_ADD_CERTIFICATE 100 +# define PKCS7_F_PKCS7_ADD_CRL 101 +# define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102 +# define PKCS7_F_PKCS7_ADD_SIGNATURE 131 +# define PKCS7_F_PKCS7_ADD_SIGNER 103 +# define PKCS7_F_PKCS7_BIO_ADD_DIGEST 125 +# define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 138 +# define PKCS7_F_PKCS7_CTRL 104 +# define PKCS7_F_PKCS7_DATADECODE 112 +# define PKCS7_F_PKCS7_DATAFINAL 128 +# define PKCS7_F_PKCS7_DATAINIT 105 +# define PKCS7_F_PKCS7_DATAVERIFY 107 +# define PKCS7_F_PKCS7_DECRYPT 114 +# define PKCS7_F_PKCS7_DECRYPT_RINFO 133 +# define PKCS7_F_PKCS7_ENCODE_RINFO 132 +# define PKCS7_F_PKCS7_ENCRYPT 115 +# define PKCS7_F_PKCS7_FINAL 134 +# define PKCS7_F_PKCS7_FIND_DIGEST 127 +# define PKCS7_F_PKCS7_GET0_SIGNERS 124 +# define PKCS7_F_PKCS7_RECIP_INFO_SET 130 +# define PKCS7_F_PKCS7_SET_CIPHER 108 +# define PKCS7_F_PKCS7_SET_CONTENT 109 +# define PKCS7_F_PKCS7_SET_DIGEST 126 +# define PKCS7_F_PKCS7_SET_TYPE 110 +# define PKCS7_F_PKCS7_SIGN 116 +# define PKCS7_F_PKCS7_SIGNATUREVERIFY 113 +# define PKCS7_F_PKCS7_SIGNER_INFO_SET 129 +# define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 139 +# define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 137 +# define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 119 +# define PKCS7_F_PKCS7_VERIFY 117 + +/* + * PKCS7 reason codes. + */ +# define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117 +# define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144 +# define PKCS7_R_CIPHER_NOT_INITIALIZED 116 +# define PKCS7_R_CONTENT_AND_DATA_PRESENT 118 +# define PKCS7_R_CTRL_ERROR 152 +# define PKCS7_R_DECRYPT_ERROR 119 +# define PKCS7_R_DIGEST_FAILURE 101 +# define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149 +# define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150 +# define PKCS7_R_ERROR_ADDING_RECIPIENT 120 +# define PKCS7_R_ERROR_SETTING_CIPHER 121 +# define PKCS7_R_INVALID_NULL_POINTER 143 +# define PKCS7_R_INVALID_SIGNED_DATA_TYPE 155 +# define PKCS7_R_NO_CONTENT 122 +# define PKCS7_R_NO_DEFAULT_DIGEST 151 +# define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154 +# define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115 +# define PKCS7_R_NO_SIGNATURES_ON_DATA 123 +# define PKCS7_R_NO_SIGNERS 142 +# define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104 +# define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124 +# define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153 +# define PKCS7_R_PKCS7_DATASIGN 145 +# define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127 +# define PKCS7_R_SIGNATURE_FAILURE 105 +# define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128 +# define PKCS7_R_SIGNING_CTRL_FAILURE 147 +# define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148 +# define PKCS7_R_SMIME_TEXT_ERROR 129 +# define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106 +# define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107 +# define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108 +# define PKCS7_R_UNKNOWN_DIGEST_TYPE 109 +# define PKCS7_R_UNKNOWN_OPERATION 110 +# define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111 +# define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112 +# define PKCS7_R_WRONG_CONTENT_TYPE 113 +# define PKCS7_R_WRONG_PKCS7_TYPE 114 + +#endif diff --git a/openSSL/lin32/include/openssl/rand.h b/openSSL/lin32/include/openssl/rand.h new file mode 100644 index 0000000..38a2a27 --- /dev/null +++ b/openSSL/lin32/include/openssl/rand.h @@ -0,0 +1,77 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RAND_H +# define HEADER_RAND_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +struct rand_meth_st { + int (*seed) (const void *buf, int num); + int (*bytes) (unsigned char *buf, int num); + void (*cleanup) (void); + int (*add) (const void *buf, int num, double randomness); + int (*pseudorand) (unsigned char *buf, int num); + int (*status) (void); +}; + +int RAND_set_rand_method(const RAND_METHOD *meth); +const RAND_METHOD *RAND_get_rand_method(void); +# ifndef OPENSSL_NO_ENGINE +int RAND_set_rand_engine(ENGINE *engine); +# endif + +RAND_METHOD *RAND_OpenSSL(void); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define RAND_cleanup() while(0) continue +# endif +int RAND_bytes(unsigned char *buf, int num); +int RAND_priv_bytes(unsigned char *buf, int num); +DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num)) + +void RAND_seed(const void *buf, int num); +void RAND_keep_random_devices_open(int keep); + +# if defined(__ANDROID__) && defined(__NDK_FPABI__) +__NDK_FPABI__ /* __attribute__((pcs("aapcs"))) on ARM */ +# endif +void RAND_add(const void *buf, int num, double randomness); +int RAND_load_file(const char *file, long max_bytes); +int RAND_write_file(const char *file); +const char *RAND_file_name(char *file, size_t num); +int RAND_status(void); + +# ifndef OPENSSL_NO_EGD +int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes); +int RAND_egd(const char *path); +int RAND_egd_bytes(const char *path, int bytes); +# endif + +int RAND_poll(void); + +# if defined(_WIN32) && (defined(BASETYPES) || defined(_WINDEF_H)) +/* application has to include in order to use these */ +DEPRECATEDIN_1_1_0(void RAND_screen(void)) +DEPRECATEDIN_1_1_0(int RAND_event(UINT, WPARAM, LPARAM)) +# endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin32/include/openssl/rand_drbg.h b/openSSL/lin32/include/openssl/rand_drbg.h new file mode 100644 index 0000000..45b731b --- /dev/null +++ b/openSSL/lin32/include/openssl/rand_drbg.h @@ -0,0 +1,130 @@ +/* + * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DRBG_RAND_H +# define HEADER_DRBG_RAND_H + +# include +# include +# include + +/* + * RAND_DRBG flags + * + * Note: if new flags are added, the constant `rand_drbg_used_flags` + * in drbg_lib.c needs to be updated accordingly. + */ + +/* In CTR mode, disable derivation function ctr_df */ +# define RAND_DRBG_FLAG_CTR_NO_DF 0x1 + + +# if OPENSSL_API_COMPAT < 0x10200000L +/* This #define was replaced by an internal constant and should not be used. */ +# define RAND_DRBG_USED_FLAGS (RAND_DRBG_FLAG_CTR_NO_DF) +# endif + +/* + * Default security strength (in the sense of [NIST SP 800-90Ar1]) + * + * NIST SP 800-90Ar1 supports the strength of the DRBG being smaller than that + * of the cipher by collecting less entropy. The current DRBG implementation + * does not take RAND_DRBG_STRENGTH into account and sets the strength of the + * DRBG to that of the cipher. + * + * RAND_DRBG_STRENGTH is currently only used for the legacy RAND + * implementation. + * + * Currently supported ciphers are: NID_aes_128_ctr, NID_aes_192_ctr and + * NID_aes_256_ctr + */ +# define RAND_DRBG_STRENGTH 256 +/* Default drbg type */ +# define RAND_DRBG_TYPE NID_aes_256_ctr +/* Default drbg flags */ +# define RAND_DRBG_FLAGS 0 + + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * Object lifetime functions. + */ +RAND_DRBG *RAND_DRBG_new(int type, unsigned int flags, RAND_DRBG *parent); +RAND_DRBG *RAND_DRBG_secure_new(int type, unsigned int flags, RAND_DRBG *parent); +int RAND_DRBG_set(RAND_DRBG *drbg, int type, unsigned int flags); +int RAND_DRBG_set_defaults(int type, unsigned int flags); +int RAND_DRBG_instantiate(RAND_DRBG *drbg, + const unsigned char *pers, size_t perslen); +int RAND_DRBG_uninstantiate(RAND_DRBG *drbg); +void RAND_DRBG_free(RAND_DRBG *drbg); + +/* + * Object "use" functions. + */ +int RAND_DRBG_reseed(RAND_DRBG *drbg, + const unsigned char *adin, size_t adinlen, + int prediction_resistance); +int RAND_DRBG_generate(RAND_DRBG *drbg, unsigned char *out, size_t outlen, + int prediction_resistance, + const unsigned char *adin, size_t adinlen); +int RAND_DRBG_bytes(RAND_DRBG *drbg, unsigned char *out, size_t outlen); + +int RAND_DRBG_set_reseed_interval(RAND_DRBG *drbg, unsigned int interval); +int RAND_DRBG_set_reseed_time_interval(RAND_DRBG *drbg, time_t interval); + +int RAND_DRBG_set_reseed_defaults( + unsigned int master_reseed_interval, + unsigned int slave_reseed_interval, + time_t master_reseed_time_interval, + time_t slave_reseed_time_interval + ); + +RAND_DRBG *RAND_DRBG_get0_master(void); +RAND_DRBG *RAND_DRBG_get0_public(void); +RAND_DRBG *RAND_DRBG_get0_private(void); + +/* + * EXDATA + */ +# define RAND_DRBG_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DRBG, l, p, newf, dupf, freef) +int RAND_DRBG_set_ex_data(RAND_DRBG *drbg, int idx, void *arg); +void *RAND_DRBG_get_ex_data(const RAND_DRBG *drbg, int idx); + +/* + * Callback function typedefs + */ +typedef size_t (*RAND_DRBG_get_entropy_fn)(RAND_DRBG *drbg, + unsigned char **pout, + int entropy, size_t min_len, + size_t max_len, + int prediction_resistance); +typedef void (*RAND_DRBG_cleanup_entropy_fn)(RAND_DRBG *ctx, + unsigned char *out, size_t outlen); +typedef size_t (*RAND_DRBG_get_nonce_fn)(RAND_DRBG *drbg, unsigned char **pout, + int entropy, size_t min_len, + size_t max_len); +typedef void (*RAND_DRBG_cleanup_nonce_fn)(RAND_DRBG *drbg, + unsigned char *out, size_t outlen); + +int RAND_DRBG_set_callbacks(RAND_DRBG *drbg, + RAND_DRBG_get_entropy_fn get_entropy, + RAND_DRBG_cleanup_entropy_fn cleanup_entropy, + RAND_DRBG_get_nonce_fn get_nonce, + RAND_DRBG_cleanup_nonce_fn cleanup_nonce); + + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/randerr.h b/openSSL/lin32/include/openssl/randerr.h new file mode 100644 index 0000000..79d5790 --- /dev/null +++ b/openSSL/lin32/include/openssl/randerr.h @@ -0,0 +1,94 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RANDERR_H +# define HEADER_RANDERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_RAND_strings(void); + +/* + * RAND function codes. + */ +# define RAND_F_DATA_COLLECT_METHOD 127 +# define RAND_F_DRBG_BYTES 101 +# define RAND_F_DRBG_GET_ENTROPY 105 +# define RAND_F_DRBG_SETUP 117 +# define RAND_F_GET_ENTROPY 106 +# define RAND_F_RAND_BYTES 100 +# define RAND_F_RAND_DRBG_ENABLE_LOCKING 119 +# define RAND_F_RAND_DRBG_GENERATE 107 +# define RAND_F_RAND_DRBG_GET_ENTROPY 120 +# define RAND_F_RAND_DRBG_GET_NONCE 123 +# define RAND_F_RAND_DRBG_INSTANTIATE 108 +# define RAND_F_RAND_DRBG_NEW 109 +# define RAND_F_RAND_DRBG_RESEED 110 +# define RAND_F_RAND_DRBG_RESTART 102 +# define RAND_F_RAND_DRBG_SET 104 +# define RAND_F_RAND_DRBG_SET_DEFAULTS 121 +# define RAND_F_RAND_DRBG_UNINSTANTIATE 118 +# define RAND_F_RAND_LOAD_FILE 111 +# define RAND_F_RAND_POOL_ACQUIRE_ENTROPY 122 +# define RAND_F_RAND_POOL_ADD 103 +# define RAND_F_RAND_POOL_ADD_BEGIN 113 +# define RAND_F_RAND_POOL_ADD_END 114 +# define RAND_F_RAND_POOL_ATTACH 124 +# define RAND_F_RAND_POOL_BYTES_NEEDED 115 +# define RAND_F_RAND_POOL_GROW 125 +# define RAND_F_RAND_POOL_NEW 116 +# define RAND_F_RAND_PSEUDO_BYTES 126 +# define RAND_F_RAND_WRITE_FILE 112 + +/* + * RAND reason codes. + */ +# define RAND_R_ADDITIONAL_INPUT_TOO_LONG 102 +# define RAND_R_ALREADY_INSTANTIATED 103 +# define RAND_R_ARGUMENT_OUT_OF_RANGE 105 +# define RAND_R_CANNOT_OPEN_FILE 121 +# define RAND_R_DRBG_ALREADY_INITIALIZED 129 +# define RAND_R_DRBG_NOT_INITIALISED 104 +# define RAND_R_ENTROPY_INPUT_TOO_LONG 106 +# define RAND_R_ENTROPY_OUT_OF_RANGE 124 +# define RAND_R_ERROR_ENTROPY_POOL_WAS_IGNORED 127 +# define RAND_R_ERROR_INITIALISING_DRBG 107 +# define RAND_R_ERROR_INSTANTIATING_DRBG 108 +# define RAND_R_ERROR_RETRIEVING_ADDITIONAL_INPUT 109 +# define RAND_R_ERROR_RETRIEVING_ENTROPY 110 +# define RAND_R_ERROR_RETRIEVING_NONCE 111 +# define RAND_R_FAILED_TO_CREATE_LOCK 126 +# define RAND_R_FUNC_NOT_IMPLEMENTED 101 +# define RAND_R_FWRITE_ERROR 123 +# define RAND_R_GENERATE_ERROR 112 +# define RAND_R_INTERNAL_ERROR 113 +# define RAND_R_IN_ERROR_STATE 114 +# define RAND_R_NOT_A_REGULAR_FILE 122 +# define RAND_R_NOT_INSTANTIATED 115 +# define RAND_R_NO_DRBG_IMPLEMENTATION_SELECTED 128 +# define RAND_R_PARENT_LOCKING_NOT_ENABLED 130 +# define RAND_R_PARENT_STRENGTH_TOO_WEAK 131 +# define RAND_R_PERSONALISATION_STRING_TOO_LONG 116 +# define RAND_R_PREDICTION_RESISTANCE_NOT_SUPPORTED 133 +# define RAND_R_PRNG_NOT_SEEDED 100 +# define RAND_R_RANDOM_POOL_OVERFLOW 125 +# define RAND_R_RANDOM_POOL_UNDERFLOW 134 +# define RAND_R_REQUEST_TOO_LARGE_FOR_DRBG 117 +# define RAND_R_RESEED_ERROR 118 +# define RAND_R_SELFTEST_FAILURE 119 +# define RAND_R_TOO_LITTLE_NONCE_REQUESTED 135 +# define RAND_R_TOO_MUCH_NONCE_REQUESTED 136 +# define RAND_R_UNSUPPORTED_DRBG_FLAGS 132 +# define RAND_R_UNSUPPORTED_DRBG_TYPE 120 + +#endif diff --git a/openSSL/lin32/include/openssl/rc2.h b/openSSL/lin32/include/openssl/rc2.h new file mode 100644 index 0000000..585f9e4 --- /dev/null +++ b/openSSL/lin32/include/openssl/rc2.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC2_H +# define HEADER_RC2_H + +# include + +# ifndef OPENSSL_NO_RC2 +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned int RC2_INT; + +# define RC2_ENCRYPT 1 +# define RC2_DECRYPT 0 + +# define RC2_BLOCK 8 +# define RC2_KEY_LENGTH 16 + +typedef struct rc2_key_st { + RC2_INT data[64]; +} RC2_KEY; + +void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits); +void RC2_ecb_encrypt(const unsigned char *in, unsigned char *out, + RC2_KEY *key, int enc); +void RC2_encrypt(unsigned long *data, RC2_KEY *key); +void RC2_decrypt(unsigned long *data, RC2_KEY *key); +void RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, + RC2_KEY *ks, unsigned char *iv, int enc); +void RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC2_KEY *schedule, unsigned char *ivec, + int *num, int enc); +void RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC2_KEY *schedule, unsigned char *ivec, + int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/rc4.h b/openSSL/lin32/include/openssl/rc4.h new file mode 100644 index 0000000..86803b3 --- /dev/null +++ b/openSSL/lin32/include/openssl/rc4.h @@ -0,0 +1,36 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC4_H +# define HEADER_RC4_H + +# include + +# ifndef OPENSSL_NO_RC4 +# include +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct rc4_key_st { + RC4_INT x, y; + RC4_INT data[256]; +} RC4_KEY; + +const char *RC4_options(void); +void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data); +void RC4(RC4_KEY *key, size_t len, const unsigned char *indata, + unsigned char *outdata); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/rc5.h b/openSSL/lin32/include/openssl/rc5.h new file mode 100644 index 0000000..793f88e --- /dev/null +++ b/openSSL/lin32/include/openssl/rc5.h @@ -0,0 +1,63 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC5_H +# define HEADER_RC5_H + +# include + +# ifndef OPENSSL_NO_RC5 +# ifdef __cplusplus +extern "C" { +# endif + +# define RC5_ENCRYPT 1 +# define RC5_DECRYPT 0 + +# define RC5_32_INT unsigned int + +# define RC5_32_BLOCK 8 +# define RC5_32_KEY_LENGTH 16/* This is a default, max is 255 */ + +/* + * This are the only values supported. Tweak the code if you want more The + * most supported modes will be RC5-32/12/16 RC5-32/16/8 + */ +# define RC5_8_ROUNDS 8 +# define RC5_12_ROUNDS 12 +# define RC5_16_ROUNDS 16 + +typedef struct rc5_key_st { + /* Number of rounds */ + int rounds; + RC5_32_INT data[2 * (RC5_16_ROUNDS + 1)]; +} RC5_32_KEY; + +void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data, + int rounds); +void RC5_32_ecb_encrypt(const unsigned char *in, unsigned char *out, + RC5_32_KEY *key, int enc); +void RC5_32_encrypt(unsigned long *data, RC5_32_KEY *key); +void RC5_32_decrypt(unsigned long *data, RC5_32_KEY *key); +void RC5_32_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *ks, unsigned char *iv, + int enc); +void RC5_32_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void RC5_32_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *schedule, + unsigned char *ivec, int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/ripemd.h b/openSSL/lin32/include/openssl/ripemd.h new file mode 100644 index 0000000..c42026a --- /dev/null +++ b/openSSL/lin32/include/openssl/ripemd.h @@ -0,0 +1,47 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RIPEMD_H +# define HEADER_RIPEMD_H + +# include + +#ifndef OPENSSL_NO_RMD160 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define RIPEMD160_LONG unsigned int + +# define RIPEMD160_CBLOCK 64 +# define RIPEMD160_LBLOCK (RIPEMD160_CBLOCK/4) +# define RIPEMD160_DIGEST_LENGTH 20 + +typedef struct RIPEMD160state_st { + RIPEMD160_LONG A, B, C, D, E; + RIPEMD160_LONG Nl, Nh; + RIPEMD160_LONG data[RIPEMD160_LBLOCK]; + unsigned int num; +} RIPEMD160_CTX; + +int RIPEMD160_Init(RIPEMD160_CTX *c); +int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, size_t len); +int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); +unsigned char *RIPEMD160(const unsigned char *d, size_t n, unsigned char *md); +void RIPEMD160_Transform(RIPEMD160_CTX *c, const unsigned char *b); + +# ifdef __cplusplus +} +# endif +# endif + + +#endif diff --git a/openSSL/lin32/include/openssl/rsa.h b/openSSL/lin32/include/openssl/rsa.h new file mode 100644 index 0000000..5e76365 --- /dev/null +++ b/openSSL/lin32/include/openssl/rsa.h @@ -0,0 +1,513 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RSA_H +# define HEADER_RSA_H + +# include + +# ifndef OPENSSL_NO_RSA +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* The types RSA and RSA_METHOD are defined in ossl_typ.h */ + +# ifndef OPENSSL_RSA_MAX_MODULUS_BITS +# define OPENSSL_RSA_MAX_MODULUS_BITS 16384 +# endif + +# define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 1024 + +# ifndef OPENSSL_RSA_SMALL_MODULUS_BITS +# define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 +# endif +# ifndef OPENSSL_RSA_MAX_PUBEXP_BITS + +/* exponent limit enforced for "large" modulus only */ +# define OPENSSL_RSA_MAX_PUBEXP_BITS 64 +# endif + +# define RSA_3 0x3L +# define RSA_F4 0x10001L + +/* based on RFC 8017 appendix A.1.2 */ +# define RSA_ASN1_VERSION_DEFAULT 0 +# define RSA_ASN1_VERSION_MULTI 1 + +# define RSA_DEFAULT_PRIME_NUM 2 + +# define RSA_METHOD_FLAG_NO_CHECK 0x0001/* don't check pub/private + * match */ + +# define RSA_FLAG_CACHE_PUBLIC 0x0002 +# define RSA_FLAG_CACHE_PRIVATE 0x0004 +# define RSA_FLAG_BLINDING 0x0008 +# define RSA_FLAG_THREAD_SAFE 0x0010 +/* + * This flag means the private key operations will be handled by rsa_mod_exp + * and that they do not depend on the private key components being present: + * for example a key stored in external hardware. Without this flag + * bn_mod_exp gets called when private key components are absent. + */ +# define RSA_FLAG_EXT_PKEY 0x0020 + +/* + * new with 0.9.6j and 0.9.7b; the built-in + * RSA implementation now uses blinding by + * default (ignoring RSA_FLAG_BLINDING), + * but other engines might not need it + */ +# define RSA_FLAG_NO_BLINDING 0x0080 +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define RSA_FLAG_NO_CONSTTIME 0x0000 +# endif +# if OPENSSL_API_COMPAT < 0x00908000L +/* deprecated name for the flag*/ +/* + * new with 0.9.7h; the built-in RSA + * implementation now uses constant time + * modular exponentiation for secret exponents + * by default. This flag causes the + * faster variable sliding window method to + * be used for all exponents. + */ +# define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME +# endif + +# define EVP_PKEY_CTX_set_rsa_padding(ctx, pad) \ + RSA_pkey_ctx_ctrl(ctx, -1, EVP_PKEY_CTRL_RSA_PADDING, pad, NULL) + +# define EVP_PKEY_CTX_get_rsa_padding(ctx, ppad) \ + RSA_pkey_ctx_ctrl(ctx, -1, EVP_PKEY_CTRL_GET_RSA_PADDING, 0, ppad) + +# define EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, len) \ + RSA_pkey_ctx_ctrl(ctx, (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ + EVP_PKEY_CTRL_RSA_PSS_SALTLEN, len, NULL) +/* Salt length matches digest */ +# define RSA_PSS_SALTLEN_DIGEST -1 +/* Verify only: auto detect salt length */ +# define RSA_PSS_SALTLEN_AUTO -2 +/* Set salt length to maximum possible */ +# define RSA_PSS_SALTLEN_MAX -3 +/* Old compatible max salt length for sign only */ +# define RSA_PSS_SALTLEN_MAX_SIGN -2 + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_PSS_SALTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_rsa_pss_saltlen(ctx, plen) \ + RSA_pkey_ctx_ctrl(ctx, (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ + EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN, 0, plen) + +# define EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, bits) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_BITS, bits, NULL) + +# define EVP_PKEY_CTX_set_rsa_keygen_pubexp(ctx, pubexp) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP, 0, pubexp) + +# define EVP_PKEY_CTX_set_rsa_keygen_primes(ctx, primes) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES, primes, NULL) + +# define EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_MGF1_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_MGF1_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set_rsa_oaep_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_OAEP_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_rsa_mgf1_md(ctx, pmd) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_MGF1_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_get_rsa_oaep_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_OAEP_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set0_rsa_oaep_label(ctx, l, llen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_OAEP_LABEL, llen, (void *)(l)) + +# define EVP_PKEY_CTX_get0_rsa_oaep_label(ctx, l) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL, 0, (void *)(l)) + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, \ + EVP_PKEY_OP_KEYGEN, EVP_PKEY_CTRL_MD, \ + 0, (void *)(md)) + +# define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5) + +# define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8) + +# define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 10) + +# define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 12) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) + +# define RSA_PKCS1_PADDING 1 +# define RSA_SSLV23_PADDING 2 +# define RSA_NO_PADDING 3 +# define RSA_PKCS1_OAEP_PADDING 4 +# define RSA_X931_PADDING 5 +/* EVP_PKEY_ only */ +# define RSA_PKCS1_PSS_PADDING 6 + +# define RSA_PKCS1_PADDING_SIZE 11 + +# define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg) +# define RSA_get_app_data(s) RSA_get_ex_data(s,0) + +RSA *RSA_new(void); +RSA *RSA_new_method(ENGINE *engine); +int RSA_bits(const RSA *rsa); +int RSA_size(const RSA *rsa); +int RSA_security_bits(const RSA *rsa); + +int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); +int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); +int RSA_set0_crt_params(RSA *r,BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp); +int RSA_set0_multi_prime_params(RSA *r, BIGNUM *primes[], BIGNUM *exps[], + BIGNUM *coeffs[], int pnum); +void RSA_get0_key(const RSA *r, + const BIGNUM **n, const BIGNUM **e, const BIGNUM **d); +void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q); +int RSA_get_multi_prime_extra_count(const RSA *r); +int RSA_get0_multi_prime_factors(const RSA *r, const BIGNUM *primes[]); +void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, const BIGNUM **dmq1, + const BIGNUM **iqmp); +int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], + const BIGNUM *coeffs[]); +const BIGNUM *RSA_get0_n(const RSA *d); +const BIGNUM *RSA_get0_e(const RSA *d); +const BIGNUM *RSA_get0_d(const RSA *d); +const BIGNUM *RSA_get0_p(const RSA *d); +const BIGNUM *RSA_get0_q(const RSA *d); +const BIGNUM *RSA_get0_dmp1(const RSA *r); +const BIGNUM *RSA_get0_dmq1(const RSA *r); +const BIGNUM *RSA_get0_iqmp(const RSA *r); +const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); +void RSA_clear_flags(RSA *r, int flags); +int RSA_test_flags(const RSA *r, int flags); +void RSA_set_flags(RSA *r, int flags); +int RSA_get_version(RSA *r); +ENGINE *RSA_get0_engine(const RSA *r); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void + (*callback) (int, int, void *), + void *cb_arg)) + +/* New version */ +int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); +/* Multi-prime version */ +int RSA_generate_multi_prime_key(RSA *rsa, int bits, int primes, + BIGNUM *e, BN_GENCB *cb); + +int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, BIGNUM *q1, + BIGNUM *q2, const BIGNUM *Xp1, const BIGNUM *Xp2, + const BIGNUM *Xp, const BIGNUM *Xq1, const BIGNUM *Xq2, + const BIGNUM *Xq, const BIGNUM *e, BN_GENCB *cb); +int RSA_X931_generate_key_ex(RSA *rsa, int bits, const BIGNUM *e, + BN_GENCB *cb); + +int RSA_check_key(const RSA *); +int RSA_check_key_ex(const RSA *, BN_GENCB *cb); + /* next 4 return -1 on error */ +int RSA_public_encrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_private_encrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_public_decrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_private_decrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +void RSA_free(RSA *r); +/* "up" the RSA object's reference count */ +int RSA_up_ref(RSA *r); + +int RSA_flags(const RSA *r); + +void RSA_set_default_method(const RSA_METHOD *meth); +const RSA_METHOD *RSA_get_default_method(void); +const RSA_METHOD *RSA_null_method(void); +const RSA_METHOD *RSA_get_method(const RSA *rsa); +int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); + +/* these are the actual RSA functions */ +const RSA_METHOD *RSA_PKCS1_OpenSSL(void); + +int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey) + +struct rsa_pss_params_st { + X509_ALGOR *hashAlgorithm; + X509_ALGOR *maskGenAlgorithm; + ASN1_INTEGER *saltLength; + ASN1_INTEGER *trailerField; + /* Decoded hash algorithm from maskGenAlgorithm */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) + +typedef struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; + /* Decoded hash algorithm from maskGenFunc */ + X509_ALGOR *maskHash; +} RSA_OAEP_PARAMS; + +DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) + +# ifndef OPENSSL_NO_STDIO +int RSA_print_fp(FILE *fp, const RSA *r, int offset); +# endif + +int RSA_print(BIO *bp, const RSA *r, int offset); + +/* + * The following 2 functions sign and verify a X509_SIG ASN1 object inside + * PKCS#1 padded RSA encryption + */ +int RSA_sign(int type, const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, RSA *rsa); +int RSA_verify(int type, const unsigned char *m, unsigned int m_length, + const unsigned char *sigbuf, unsigned int siglen, RSA *rsa); + +/* + * The following 2 function sign and verify a ASN1_OCTET_STRING object inside + * PKCS#1 padded RSA encryption + */ +int RSA_sign_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + RSA *rsa); +int RSA_verify_ASN1_OCTET_STRING(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigbuf, + unsigned int siglen, RSA *rsa); + +int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); +void RSA_blinding_off(RSA *rsa); +BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); + +int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int PKCS1_MGF1(unsigned char *mask, long len, const unsigned char *seed, + long seedlen, const EVP_MD *dgst); +int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, + const unsigned char *p, int pl); +int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len, + const unsigned char *p, int pl); +int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + int num, const unsigned char *param, + int plen, const EVP_MD *md, + const EVP_MD *mgf1md); +int RSA_padding_add_SSLv23(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_SSLv23(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_padding_add_none(unsigned char *to, int tlen, const unsigned char *f, + int fl); +int RSA_padding_check_none(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_padding_add_X931(unsigned char *to, int tlen, const unsigned char *f, + int fl); +int RSA_padding_check_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_X931_hash_id(int nid); + +int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const unsigned char *EM, + int sLen); +int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, const EVP_MD *Hash, + int sLen); + +int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + const unsigned char *EM, int sLen); + +int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + int sLen); + +#define RSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, l, p, newf, dupf, freef) +int RSA_set_ex_data(RSA *r, int idx, void *arg); +void *RSA_get_ex_data(const RSA *r, int idx); + +RSA *RSAPublicKey_dup(RSA *rsa); +RSA *RSAPrivateKey_dup(RSA *rsa); + +/* + * If this flag is set the RSA method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define RSA_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define RSA_FLAG_NON_FIPS_ALLOW 0x0400 +/* + * Application has decided PRNG is good enough to generate a key: don't + * check. + */ +# define RSA_FLAG_CHECKED 0x0800 + +RSA_METHOD *RSA_meth_new(const char *name, int flags); +void RSA_meth_free(RSA_METHOD *meth); +RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); +const char *RSA_meth_get0_name(const RSA_METHOD *meth); +int RSA_meth_set1_name(RSA_METHOD *meth, const char *name); +int RSA_meth_get_flags(const RSA_METHOD *meth); +int RSA_meth_set_flags(RSA_METHOD *meth, int flags); +void *RSA_meth_get0_app_data(const RSA_METHOD *meth); +int RSA_meth_set0_app_data(RSA_METHOD *meth, void *app_data); +int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_pub_enc(RSA_METHOD *rsa, + int (*pub_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_pub_dec(RSA_METHOD *rsa, + int (*pub_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_priv_enc(RSA_METHOD *rsa, + int (*priv_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_priv_dec(RSA_METHOD *rsa, + int (*priv_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth)) + (BIGNUM *r0, const BIGNUM *i, RSA *rsa, BN_CTX *ctx); +int RSA_meth_set_mod_exp(RSA_METHOD *rsa, + int (*mod_exp) (BIGNUM *r0, const BIGNUM *i, RSA *rsa, + BN_CTX *ctx)); +int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth)) + (BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx)); +int (*RSA_meth_get_init(const RSA_METHOD *meth)) (RSA *rsa); +int RSA_meth_set_init(RSA_METHOD *rsa, int (*init) (RSA *rsa)); +int (*RSA_meth_get_finish(const RSA_METHOD *meth)) (RSA *rsa); +int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish) (RSA *rsa)); +int (*RSA_meth_get_sign(const RSA_METHOD *meth)) + (int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa); +int RSA_meth_set_sign(RSA_METHOD *rsa, + int (*sign) (int type, const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa)); +int (*RSA_meth_get_verify(const RSA_METHOD *meth)) + (int dtype, const unsigned char *m, + unsigned int m_length, const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa); +int RSA_meth_set_verify(RSA_METHOD *rsa, + int (*verify) (int dtype, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa)); +int (*RSA_meth_get_keygen(const RSA_METHOD *meth)) + (RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); +int RSA_meth_set_keygen(RSA_METHOD *rsa, + int (*keygen) (RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb)); +int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth)) + (RSA *rsa, int bits, int primes, BIGNUM *e, BN_GENCB *cb); +int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, + int (*keygen) (RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb)); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin32/include/openssl/rsaerr.h b/openSSL/lin32/include/openssl/rsaerr.h new file mode 100644 index 0000000..59b15e1 --- /dev/null +++ b/openSSL/lin32/include/openssl/rsaerr.h @@ -0,0 +1,167 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RSAERR_H +# define HEADER_RSAERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_RSA_strings(void); + +/* + * RSA function codes. + */ +# define RSA_F_CHECK_PADDING_MD 140 +# define RSA_F_ENCODE_PKCS1 146 +# define RSA_F_INT_RSA_VERIFY 145 +# define RSA_F_OLD_RSA_PRIV_DECODE 147 +# define RSA_F_PKEY_PSS_INIT 165 +# define RSA_F_PKEY_RSA_CTRL 143 +# define RSA_F_PKEY_RSA_CTRL_STR 144 +# define RSA_F_PKEY_RSA_SIGN 142 +# define RSA_F_PKEY_RSA_VERIFY 149 +# define RSA_F_PKEY_RSA_VERIFYRECOVER 141 +# define RSA_F_RSA_ALGOR_TO_MD 156 +# define RSA_F_RSA_BUILTIN_KEYGEN 129 +# define RSA_F_RSA_CHECK_KEY 123 +# define RSA_F_RSA_CHECK_KEY_EX 160 +# define RSA_F_RSA_CMS_DECRYPT 159 +# define RSA_F_RSA_CMS_VERIFY 158 +# define RSA_F_RSA_ITEM_VERIFY 148 +# define RSA_F_RSA_METH_DUP 161 +# define RSA_F_RSA_METH_NEW 162 +# define RSA_F_RSA_METH_SET1_NAME 163 +# define RSA_F_RSA_MGF1_TO_MD 157 +# define RSA_F_RSA_MULTIP_INFO_NEW 166 +# define RSA_F_RSA_NEW_METHOD 106 +# define RSA_F_RSA_NULL 124 +# define RSA_F_RSA_NULL_PRIVATE_DECRYPT 132 +# define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 133 +# define RSA_F_RSA_NULL_PUBLIC_DECRYPT 134 +# define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 135 +# define RSA_F_RSA_OSSL_PRIVATE_DECRYPT 101 +# define RSA_F_RSA_OSSL_PRIVATE_ENCRYPT 102 +# define RSA_F_RSA_OSSL_PUBLIC_DECRYPT 103 +# define RSA_F_RSA_OSSL_PUBLIC_ENCRYPT 104 +# define RSA_F_RSA_PADDING_ADD_NONE 107 +# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 121 +# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1 154 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 125 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 152 +# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 108 +# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 109 +# define RSA_F_RSA_PADDING_ADD_SSLV23 110 +# define RSA_F_RSA_PADDING_ADD_X931 127 +# define RSA_F_RSA_PADDING_CHECK_NONE 111 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 122 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1 153 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 112 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 113 +# define RSA_F_RSA_PADDING_CHECK_SSLV23 114 +# define RSA_F_RSA_PADDING_CHECK_X931 128 +# define RSA_F_RSA_PARAM_DECODE 164 +# define RSA_F_RSA_PRINT 115 +# define RSA_F_RSA_PRINT_FP 116 +# define RSA_F_RSA_PRIV_DECODE 150 +# define RSA_F_RSA_PRIV_ENCODE 138 +# define RSA_F_RSA_PSS_GET_PARAM 151 +# define RSA_F_RSA_PSS_TO_CTX 155 +# define RSA_F_RSA_PUB_DECODE 139 +# define RSA_F_RSA_SETUP_BLINDING 136 +# define RSA_F_RSA_SIGN 117 +# define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 118 +# define RSA_F_RSA_VERIFY 119 +# define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 120 +# define RSA_F_RSA_VERIFY_PKCS1_PSS_MGF1 126 +# define RSA_F_SETUP_TBUF 167 + +/* + * RSA reason codes. + */ +# define RSA_R_ALGORITHM_MISMATCH 100 +# define RSA_R_BAD_E_VALUE 101 +# define RSA_R_BAD_FIXED_HEADER_DECRYPT 102 +# define RSA_R_BAD_PAD_BYTE_COUNT 103 +# define RSA_R_BAD_SIGNATURE 104 +# define RSA_R_BLOCK_TYPE_IS_NOT_01 106 +# define RSA_R_BLOCK_TYPE_IS_NOT_02 107 +# define RSA_R_DATA_GREATER_THAN_MOD_LEN 108 +# define RSA_R_DATA_TOO_LARGE 109 +# define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110 +# define RSA_R_DATA_TOO_LARGE_FOR_MODULUS 132 +# define RSA_R_DATA_TOO_SMALL 111 +# define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE 122 +# define RSA_R_DIGEST_DOES_NOT_MATCH 158 +# define RSA_R_DIGEST_NOT_ALLOWED 145 +# define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY 112 +# define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124 +# define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125 +# define RSA_R_D_E_NOT_CONGRUENT_TO_1 123 +# define RSA_R_FIRST_OCTET_INVALID 133 +# define RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 144 +# define RSA_R_INVALID_DIGEST 157 +# define RSA_R_INVALID_DIGEST_LENGTH 143 +# define RSA_R_INVALID_HEADER 137 +# define RSA_R_INVALID_LABEL 160 +# define RSA_R_INVALID_MESSAGE_LENGTH 131 +# define RSA_R_INVALID_MGF1_MD 156 +# define RSA_R_INVALID_MULTI_PRIME_KEY 167 +# define RSA_R_INVALID_OAEP_PARAMETERS 161 +# define RSA_R_INVALID_PADDING 138 +# define RSA_R_INVALID_PADDING_MODE 141 +# define RSA_R_INVALID_PSS_PARAMETERS 149 +# define RSA_R_INVALID_PSS_SALTLEN 146 +# define RSA_R_INVALID_SALT_LENGTH 150 +# define RSA_R_INVALID_TRAILER 139 +# define RSA_R_INVALID_X931_DIGEST 142 +# define RSA_R_IQMP_NOT_INVERSE_OF_Q 126 +# define RSA_R_KEY_PRIME_NUM_INVALID 165 +# define RSA_R_KEY_SIZE_TOO_SMALL 120 +# define RSA_R_LAST_OCTET_INVALID 134 +# define RSA_R_MISSING_PRIVATE_KEY 179 +# define RSA_R_MGF1_DIGEST_NOT_ALLOWED 152 +# define RSA_R_MODULUS_TOO_LARGE 105 +# define RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R 168 +# define RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D 169 +# define RSA_R_MP_R_NOT_PRIME 170 +# define RSA_R_NO_PUBLIC_EXPONENT 140 +# define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 +# define RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES 172 +# define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 +# define RSA_R_OAEP_DECODING_ERROR 121 +# define RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 148 +# define RSA_R_PADDING_CHECK_FAILED 114 +# define RSA_R_PKCS_DECODING_ERROR 159 +# define RSA_R_PSS_SALTLEN_TOO_SMALL 164 +# define RSA_R_P_NOT_PRIME 128 +# define RSA_R_Q_NOT_PRIME 129 +# define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130 +# define RSA_R_SLEN_CHECK_FAILED 136 +# define RSA_R_SLEN_RECOVERY_FAILED 135 +# define RSA_R_SSLV3_ROLLBACK_ATTACK 115 +# define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116 +# define RSA_R_UNKNOWN_ALGORITHM_TYPE 117 +# define RSA_R_UNKNOWN_DIGEST 166 +# define RSA_R_UNKNOWN_MASK_DIGEST 151 +# define RSA_R_UNKNOWN_PADDING_TYPE 118 +# define RSA_R_UNSUPPORTED_ENCRYPTION_TYPE 162 +# define RSA_R_UNSUPPORTED_LABEL_SOURCE 163 +# define RSA_R_UNSUPPORTED_MASK_ALGORITHM 153 +# define RSA_R_UNSUPPORTED_MASK_PARAMETER 154 +# define RSA_R_UNSUPPORTED_SIGNATURE_TYPE 155 +# define RSA_R_VALUE_MISSING 147 +# define RSA_R_WRONG_SIGNATURE_LENGTH 119 + +#endif diff --git a/openSSL/lin32/include/openssl/safestack.h b/openSSL/lin32/include/openssl/safestack.h new file mode 100644 index 0000000..38b5578 --- /dev/null +++ b/openSSL/lin32/include/openssl/safestack.h @@ -0,0 +1,207 @@ +/* + * Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SAFESTACK_H +# define HEADER_SAFESTACK_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define STACK_OF(type) struct stack_st_##type + +# define SKM_DEFINE_STACK_OF(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 * const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 *a); \ + typedef t3 * (*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + { \ + return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + { \ + return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_free((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + { \ + return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ + (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + { \ + OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + { \ + return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) * sk_##t1##_dup(const STACK_OF(t1) *sk) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + sk_##t1##_copyfunc copyfunc, \ + sk_##t1##_freefunc freefunc) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, \ + (OPENSSL_sk_copyfunc)copyfunc, \ + (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + { \ + return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ + } + +# define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) +# define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) +# define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ + SKM_DEFINE_STACK_OF(t1, const t2, t2) +# define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) + +/*- + * Strings are special: normally an lhash entry will point to a single + * (somewhat) mutable object. In the case of strings: + * + * a) Instead of a single char, there is an array of chars, NUL-terminated. + * b) The string may have be immutable. + * + * So, they need their own declarations. Especially important for + * type-checking tools, such as Deputy. + * + * In practice, however, it appears to be hard to have a const + * string. For now, I'm settling for dealing with the fact it is a + * string at all. + */ +typedef char *OPENSSL_STRING; +typedef const char *OPENSSL_CSTRING; + +/*- + * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but + * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned + * above, instead of a single char each entry is a NUL-terminated array of + * chars. So, we have to implement STRING specially for STACK_OF. This is + * dealt with in the autogenerated macros below. + */ +DEFINE_SPECIAL_STACK_OF(OPENSSL_STRING, char) +DEFINE_SPECIAL_STACK_OF_CONST(OPENSSL_CSTRING, char) + +/* + * Similarly, we sometimes use a block of characters, NOT nul-terminated. + * These should also be distinguished from "normal" stacks. + */ +typedef void *OPENSSL_BLOCK; +DEFINE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void) + +/* + * If called without higher optimization (min. -xO3) the Oracle Developer + * Studio compiler generates code for the defined (static inline) functions + * above. + * This would later lead to the linker complaining about missing symbols when + * this header file is included but the resulting object is not linked against + * the Crypto library (openssl#6912). + */ +# ifdef __SUNPRO_C +# pragma weak OPENSSL_sk_num +# pragma weak OPENSSL_sk_value +# pragma weak OPENSSL_sk_new +# pragma weak OPENSSL_sk_new_null +# pragma weak OPENSSL_sk_new_reserve +# pragma weak OPENSSL_sk_reserve +# pragma weak OPENSSL_sk_free +# pragma weak OPENSSL_sk_zero +# pragma weak OPENSSL_sk_delete +# pragma weak OPENSSL_sk_delete_ptr +# pragma weak OPENSSL_sk_push +# pragma weak OPENSSL_sk_unshift +# pragma weak OPENSSL_sk_pop +# pragma weak OPENSSL_sk_shift +# pragma weak OPENSSL_sk_pop_free +# pragma weak OPENSSL_sk_insert +# pragma weak OPENSSL_sk_set +# pragma weak OPENSSL_sk_find +# pragma weak OPENSSL_sk_find_ex +# pragma weak OPENSSL_sk_sort +# pragma weak OPENSSL_sk_is_sorted +# pragma weak OPENSSL_sk_dup +# pragma weak OPENSSL_sk_deep_copy +# pragma weak OPENSSL_sk_set_cmp_func +# endif /* __SUNPRO_C */ + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/seed.h b/openSSL/lin32/include/openssl/seed.h new file mode 100644 index 0000000..de10b08 --- /dev/null +++ b/openSSL/lin32/include/openssl/seed.h @@ -0,0 +1,96 @@ +/* + * Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Neither the name of author nor the names of its contributors may + * be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef HEADER_SEED_H +# define HEADER_SEED_H + +# include + +# ifndef OPENSSL_NO_SEED +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* look whether we need 'long' to get 32 bits */ +# ifdef AES_LONG +# ifndef SEED_LONG +# define SEED_LONG 1 +# endif +# endif + +# include + +# define SEED_BLOCK_SIZE 16 +# define SEED_KEY_LENGTH 16 + +typedef struct seed_key_st { +# ifdef SEED_LONG + unsigned long data[32]; +# else + unsigned int data[32]; +# endif +} SEED_KEY_SCHEDULE; + +void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], + SEED_KEY_SCHEDULE *ks); + +void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); + +void SEED_ecb_encrypt(const unsigned char *in, unsigned char *out, + const SEED_KEY_SCHEDULE *ks, int enc); +void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, + const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], int enc); +void SEED_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], int *num, + int enc); +void SEED_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/sha.h b/openSSL/lin32/include/openssl/sha.h new file mode 100644 index 0000000..6a1eb0d --- /dev/null +++ b/openSSL/lin32/include/openssl/sha.h @@ -0,0 +1,119 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SHA_H +# define HEADER_SHA_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! SHA_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define SHA_LONG unsigned int + +# define SHA_LBLOCK 16 +# define SHA_CBLOCK (SHA_LBLOCK*4)/* SHA treats input data as a + * contiguous array of 32 bit wide + * big-endian values. */ +# define SHA_LAST_BLOCK (SHA_CBLOCK-8) +# define SHA_DIGEST_LENGTH 20 + +typedef struct SHAstate_st { + SHA_LONG h0, h1, h2, h3, h4; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num; +} SHA_CTX; + +int SHA1_Init(SHA_CTX *c); +int SHA1_Update(SHA_CTX *c, const void *data, size_t len); +int SHA1_Final(unsigned char *md, SHA_CTX *c); +unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); +void SHA1_Transform(SHA_CTX *c, const unsigned char *data); + +# define SHA256_CBLOCK (SHA_LBLOCK*4)/* SHA-256 treats input data as a + * contiguous array of 32 bit wide + * big-endian values. */ + +typedef struct SHA256state_st { + SHA_LONG h[8]; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num, md_len; +} SHA256_CTX; + +int SHA224_Init(SHA256_CTX *c); +int SHA224_Update(SHA256_CTX *c, const void *data, size_t len); +int SHA224_Final(unsigned char *md, SHA256_CTX *c); +unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); +int SHA256_Init(SHA256_CTX *c); +int SHA256_Update(SHA256_CTX *c, const void *data, size_t len); +int SHA256_Final(unsigned char *md, SHA256_CTX *c); +unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); +void SHA256_Transform(SHA256_CTX *c, const unsigned char *data); + +# define SHA224_DIGEST_LENGTH 28 +# define SHA256_DIGEST_LENGTH 32 +# define SHA384_DIGEST_LENGTH 48 +# define SHA512_DIGEST_LENGTH 64 + +/* + * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64 + * being exactly 64-bit wide. See Implementation Notes in sha512.c + * for further details. + */ +/* + * SHA-512 treats input data as a + * contiguous array of 64 bit + * wide big-endian values. + */ +# define SHA512_CBLOCK (SHA_LBLOCK*8) +# if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__) +# define SHA_LONG64 unsigned __int64 +# define U64(C) C##UI64 +# elif defined(__arch64__) +# define SHA_LONG64 unsigned long +# define U64(C) C##UL +# else +# define SHA_LONG64 unsigned long long +# define U64(C) C##ULL +# endif + +typedef struct SHA512state_st { + SHA_LONG64 h[8]; + SHA_LONG64 Nl, Nh; + union { + SHA_LONG64 d[SHA_LBLOCK]; + unsigned char p[SHA512_CBLOCK]; + } u; + unsigned int num, md_len; +} SHA512_CTX; + +int SHA384_Init(SHA512_CTX *c); +int SHA384_Update(SHA512_CTX *c, const void *data, size_t len); +int SHA384_Final(unsigned char *md, SHA512_CTX *c); +unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md); +int SHA512_Init(SHA512_CTX *c); +int SHA512_Update(SHA512_CTX *c, const void *data, size_t len); +int SHA512_Final(unsigned char *md, SHA512_CTX *c); +unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md); +void SHA512_Transform(SHA512_CTX *c, const unsigned char *data); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin32/include/openssl/srp.h b/openSSL/lin32/include/openssl/srp.h new file mode 100644 index 0000000..aaf1355 --- /dev/null +++ b/openSSL/lin32/include/openssl/srp.h @@ -0,0 +1,135 @@ +/* + * Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2004, EdelKey Project. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + * + * Originally written by Christophe Renou and Peter Sylvester, + * for the EdelKey project. + */ + +#ifndef HEADER_SRP_H +# define HEADER_SRP_H + +#include + +#ifndef OPENSSL_NO_SRP +# include +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct SRP_gN_cache_st { + char *b64_bn; + BIGNUM *bn; +} SRP_gN_cache; + + +DEFINE_STACK_OF(SRP_gN_cache) + +typedef struct SRP_user_pwd_st { + /* Owned by us. */ + char *id; + BIGNUM *s; + BIGNUM *v; + /* Not owned by us. */ + const BIGNUM *g; + const BIGNUM *N; + /* Owned by us. */ + char *info; +} SRP_user_pwd; + +void SRP_user_pwd_free(SRP_user_pwd *user_pwd); + +DEFINE_STACK_OF(SRP_user_pwd) + +typedef struct SRP_VBASE_st { + STACK_OF(SRP_user_pwd) *users_pwd; + STACK_OF(SRP_gN_cache) *gN_cache; +/* to simulate a user */ + char *seed_key; + const BIGNUM *default_g; + const BIGNUM *default_N; +} SRP_VBASE; + +/* + * Internal structure storing N and g pair + */ +typedef struct SRP_gN_st { + char *id; + const BIGNUM *g; + const BIGNUM *N; +} SRP_gN; + +DEFINE_STACK_OF(SRP_gN) + +SRP_VBASE *SRP_VBASE_new(char *seed_key); +void SRP_VBASE_free(SRP_VBASE *vb); +int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); + +/* This method ignores the configured seed and fails for an unknown user. */ +DEPRECATEDIN_1_1_0(SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username)) +/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ +SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); + +char *SRP_create_verifier(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g); +int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g); + +# define SRP_NO_ERROR 0 +# define SRP_ERR_VBASE_INCOMPLETE_FILE 1 +# define SRP_ERR_VBASE_BN_LIB 2 +# define SRP_ERR_OPEN_FILE 3 +# define SRP_ERR_MEMORY 4 + +# define DB_srptype 0 +# define DB_srpverifier 1 +# define DB_srpsalt 2 +# define DB_srpid 3 +# define DB_srpgN 4 +# define DB_srpinfo 5 +# undef DB_NUMBER +# define DB_NUMBER 6 + +# define DB_SRP_INDEX 'I' +# define DB_SRP_VALID 'V' +# define DB_SRP_REVOKED 'R' +# define DB_SRP_MODIF 'v' + +/* see srp.c */ +char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); +SRP_gN *SRP_get_default_gN(const char *id); + +/* server side .... */ +BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, + const BIGNUM *b, const BIGNUM *N); +BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v); +int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); +BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); + +/* client side .... */ +BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); +BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); +BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); +int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); + +# define SRP_MINIMAL_N 1024 + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/srtp.h b/openSSL/lin32/include/openssl/srtp.h new file mode 100644 index 0000000..0b57c23 --- /dev/null +++ b/openSSL/lin32/include/openssl/srtp.h @@ -0,0 +1,50 @@ +/* + * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * DTLS code by Eric Rescorla + * + * Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. + */ + +#ifndef HEADER_D1_SRTP_H +# define HEADER_D1_SRTP_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define SRTP_AES128_CM_SHA1_80 0x0001 +# define SRTP_AES128_CM_SHA1_32 0x0002 +# define SRTP_AES128_F8_SHA1_80 0x0003 +# define SRTP_AES128_F8_SHA1_32 0x0004 +# define SRTP_NULL_SHA1_80 0x0005 +# define SRTP_NULL_SHA1_32 0x0006 + +/* AEAD SRTP protection profiles from RFC 7714 */ +# define SRTP_AEAD_AES_128_GCM 0x0007 +# define SRTP_AEAD_AES_256_GCM 0x0008 + +# ifndef OPENSSL_NO_SRTP + +__owur int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); +__owur int SSL_set_tlsext_use_srtp(SSL *ssl, const char *profiles); + +__owur STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl); +__owur SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); + +# endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin32/include/openssl/ssl.h b/openSSL/lin32/include/openssl/ssl.h new file mode 100644 index 0000000..9af0c89 --- /dev/null +++ b/openSSL/lin32/include/openssl/ssl.h @@ -0,0 +1,2448 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL_H +# define HEADER_SSL_H + +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# endif +# include +# include +# include +# include + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* OpenSSL version number for ASN.1 encoding of the session information */ +/*- + * Version 0 - initial version + * Version 1 - added the optional peer certificate + */ +# define SSL_SESSION_ASN1_VERSION 0x0001 + +# define SSL_MAX_SSL_SESSION_ID_LENGTH 32 +# define SSL_MAX_SID_CTX_LENGTH 32 + +# define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512/8) +# define SSL_MAX_KEY_ARG_LENGTH 8 +# define SSL_MAX_MASTER_KEY_LENGTH 48 + +/* The maximum number of encrypt/decrypt pipelines we can support */ +# define SSL_MAX_PIPELINES 32 + +/* text strings for the ciphers */ + +/* These are used to specify which ciphers to use and not to use */ + +# define SSL_TXT_LOW "LOW" +# define SSL_TXT_MEDIUM "MEDIUM" +# define SSL_TXT_HIGH "HIGH" +# define SSL_TXT_FIPS "FIPS" + +# define SSL_TXT_aNULL "aNULL" +# define SSL_TXT_eNULL "eNULL" +# define SSL_TXT_NULL "NULL" + +# define SSL_TXT_kRSA "kRSA" +# define SSL_TXT_kDHr "kDHr"/* this cipher class has been removed */ +# define SSL_TXT_kDHd "kDHd"/* this cipher class has been removed */ +# define SSL_TXT_kDH "kDH"/* this cipher class has been removed */ +# define SSL_TXT_kEDH "kEDH"/* alias for kDHE */ +# define SSL_TXT_kDHE "kDHE" +# define SSL_TXT_kECDHr "kECDHr"/* this cipher class has been removed */ +# define SSL_TXT_kECDHe "kECDHe"/* this cipher class has been removed */ +# define SSL_TXT_kECDH "kECDH"/* this cipher class has been removed */ +# define SSL_TXT_kEECDH "kEECDH"/* alias for kECDHE */ +# define SSL_TXT_kECDHE "kECDHE" +# define SSL_TXT_kPSK "kPSK" +# define SSL_TXT_kRSAPSK "kRSAPSK" +# define SSL_TXT_kECDHEPSK "kECDHEPSK" +# define SSL_TXT_kDHEPSK "kDHEPSK" +# define SSL_TXT_kGOST "kGOST" +# define SSL_TXT_kSRP "kSRP" + +# define SSL_TXT_aRSA "aRSA" +# define SSL_TXT_aDSS "aDSS" +# define SSL_TXT_aDH "aDH"/* this cipher class has been removed */ +# define SSL_TXT_aECDH "aECDH"/* this cipher class has been removed */ +# define SSL_TXT_aECDSA "aECDSA" +# define SSL_TXT_aPSK "aPSK" +# define SSL_TXT_aGOST94 "aGOST94" +# define SSL_TXT_aGOST01 "aGOST01" +# define SSL_TXT_aGOST12 "aGOST12" +# define SSL_TXT_aGOST "aGOST" +# define SSL_TXT_aSRP "aSRP" + +# define SSL_TXT_DSS "DSS" +# define SSL_TXT_DH "DH" +# define SSL_TXT_DHE "DHE"/* same as "kDHE:-ADH" */ +# define SSL_TXT_EDH "EDH"/* alias for DHE */ +# define SSL_TXT_ADH "ADH" +# define SSL_TXT_RSA "RSA" +# define SSL_TXT_ECDH "ECDH" +# define SSL_TXT_EECDH "EECDH"/* alias for ECDHE" */ +# define SSL_TXT_ECDHE "ECDHE"/* same as "kECDHE:-AECDH" */ +# define SSL_TXT_AECDH "AECDH" +# define SSL_TXT_ECDSA "ECDSA" +# define SSL_TXT_PSK "PSK" +# define SSL_TXT_SRP "SRP" + +# define SSL_TXT_DES "DES" +# define SSL_TXT_3DES "3DES" +# define SSL_TXT_RC4 "RC4" +# define SSL_TXT_RC2 "RC2" +# define SSL_TXT_IDEA "IDEA" +# define SSL_TXT_SEED "SEED" +# define SSL_TXT_AES128 "AES128" +# define SSL_TXT_AES256 "AES256" +# define SSL_TXT_AES "AES" +# define SSL_TXT_AES_GCM "AESGCM" +# define SSL_TXT_AES_CCM "AESCCM" +# define SSL_TXT_AES_CCM_8 "AESCCM8" +# define SSL_TXT_CAMELLIA128 "CAMELLIA128" +# define SSL_TXT_CAMELLIA256 "CAMELLIA256" +# define SSL_TXT_CAMELLIA "CAMELLIA" +# define SSL_TXT_CHACHA20 "CHACHA20" +# define SSL_TXT_GOST "GOST89" +# define SSL_TXT_ARIA "ARIA" +# define SSL_TXT_ARIA_GCM "ARIAGCM" +# define SSL_TXT_ARIA128 "ARIA128" +# define SSL_TXT_ARIA256 "ARIA256" + +# define SSL_TXT_MD5 "MD5" +# define SSL_TXT_SHA1 "SHA1" +# define SSL_TXT_SHA "SHA"/* same as "SHA1" */ +# define SSL_TXT_GOST94 "GOST94" +# define SSL_TXT_GOST89MAC "GOST89MAC" +# define SSL_TXT_GOST12 "GOST12" +# define SSL_TXT_GOST89MAC12 "GOST89MAC12" +# define SSL_TXT_SHA256 "SHA256" +# define SSL_TXT_SHA384 "SHA384" + +# define SSL_TXT_SSLV3 "SSLv3" +# define SSL_TXT_TLSV1 "TLSv1" +# define SSL_TXT_TLSV1_1 "TLSv1.1" +# define SSL_TXT_TLSV1_2 "TLSv1.2" + +# define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +# define SSL_TXT_CMPALL "COMPLEMENTOFALL" +# define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + * This applies to ciphersuites for TLSv1.2 and below. + */ +# define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* This is the default set of TLSv1.3 ciphersuites */ +# if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305) +# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_CHACHA20_POLY1305_SHA256:" \ + "TLS_AES_128_GCM_SHA256" +# else +# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_AES_128_GCM_SHA256" +#endif +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +# define SSL_SENT_SHUTDOWN 1 +# define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +# define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; +typedef struct ssl_comp_st SSL_COMP; + +STACK_OF(SSL_CIPHER); +STACK_OF(SSL_COMP); + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; + +DEFINE_STACK_OF(SRTP_PROTECTION_PROFILE) + +typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + const SSL_CIPHER **cipher, void *arg); + +/* Extension context codes */ +/* This extension is only allowed in TLS */ +#define SSL_EXT_TLS_ONLY 0x0001 +/* This extension is only allowed in DTLS */ +#define SSL_EXT_DTLS_ONLY 0x0002 +/* Some extensions may be allowed in DTLS but we don't implement them for it */ +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ +#define SSL_EXT_SSL3_ALLOWED 0x0008 +/* Extension is only defined for TLS1.2 and below */ +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +/* Extension is only defined for TLS1.3 and above */ +#define SSL_EXT_TLS1_3_ONLY 0x0020 +/* Ignore this extension during parsing if we are resuming */ +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 +#define SSL_EXT_CLIENT_HELLO 0x0080 +/* Really means TLS1.2 or below */ +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type, + const unsigned char **out, size_t *outlen, + int *al, void *add_arg); + +typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type, + const unsigned char *in, size_t inlen, + int *al, void *parse_arg); + + +typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char **out, + size_t *outlen, X509 *x, + size_t chainidx, + int *al, void *add_arg); + +typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *out, + void *add_arg); + +typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *in, + size_t inlen, X509 *x, + size_t chainidx, + int *al, void *parse_arg); + +/* Typedef for verification callback */ +typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); + +/* + * Some values are reserved until OpenSSL 1.2.0 because they were previously + * included in SSL_OP_ALL in a 1.1.x release. + * + * Reserved value (until OpenSSL 1.2.0) 0x00000001U + * Reserved value (until OpenSSL 1.2.0) 0x00000002U + */ +/* Allow initial connection to servers that don't support RI */ +# define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004U + +/* Reserved value (until OpenSSL 1.2.0) 0x00000008U */ +# define SSL_OP_TLSEXT_PADDING 0x00000010U +/* Reserved value (until OpenSSL 1.2.0) 0x00000020U */ +# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040U +/* + * Reserved value (until OpenSSL 1.2.0) 0x00000080U + * Reserved value (until OpenSSL 1.2.0) 0x00000100U + * Reserved value (until OpenSSL 1.2.0) 0x00000200U + */ + +/* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ +# define SSL_OP_ALLOW_NO_DHE_KEX 0x00000400U + +/* + * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added in + * OpenSSL 0.9.6d. Usually (depending on the application protocol) the + * workaround is not needed. Unfortunately some broken SSL/TLS + * implementations cannot handle it at all, which is why we include it in + * SSL_OP_ALL. Added in 0.9.6e + */ +# define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS 0x00000800U + +/* DTLS options */ +# define SSL_OP_NO_QUERY_MTU 0x00001000U +/* Turn on Cookie Exchange (on relevant for servers) */ +# define SSL_OP_COOKIE_EXCHANGE 0x00002000U +/* Don't use RFC4507 ticket extension */ +# define SSL_OP_NO_TICKET 0x00004000U +# ifndef OPENSSL_NO_DTLS1_METHOD +/* Use Cisco's "speshul" version of DTLS_BAD_VER + * (only with deprecated DTLSv1_client_method()) */ +# define SSL_OP_CISCO_ANYCONNECT 0x00008000U +# endif + +/* As server, disallow session resumption on renegotiation */ +# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000U +/* Don't use compression even if supported */ +# define SSL_OP_NO_COMPRESSION 0x00020000U +/* Permit unsafe legacy renegotiation */ +# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x00040000U +/* Disable encrypt-then-mac */ +# define SSL_OP_NO_ENCRYPT_THEN_MAC 0x00080000U + +/* + * Enable TLSv1.3 Compatibility mode. This is on by default. A future version + * of OpenSSL may have this disabled by default. + */ +# define SSL_OP_ENABLE_MIDDLEBOX_COMPAT 0x00100000U + +/* Prioritize Chacha20Poly1305 when client does. + * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE */ +# define SSL_OP_PRIORITIZE_CHACHA 0x00200000U + +/* + * Set on servers to choose the cipher according to the server's preferences + */ +# define SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000U +/* + * If set, a server will allow a client to issue a SSLv3.0 version number as + * latest version supported in the premaster secret, even when TLSv1.0 + * (version 3.1) was announced in the client hello. Normally this is + * forbidden to prevent version rollback attacks. + */ +# define SSL_OP_TLS_ROLLBACK_BUG 0x00800000U + +/* + * Switches off automatic TLSv1.3 anti-replay protection for early data. This + * is a server-side option only (no effect on the client). + */ +# define SSL_OP_NO_ANTI_REPLAY 0x01000000U + +# define SSL_OP_NO_SSLv3 0x02000000U +# define SSL_OP_NO_TLSv1 0x04000000U +# define SSL_OP_NO_TLSv1_2 0x08000000U +# define SSL_OP_NO_TLSv1_1 0x10000000U +# define SSL_OP_NO_TLSv1_3 0x20000000U + +# define SSL_OP_NO_DTLSv1 0x04000000U +# define SSL_OP_NO_DTLSv1_2 0x08000000U + +# define SSL_OP_NO_SSL_MASK (SSL_OP_NO_SSLv3|\ + SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1_2|SSL_OP_NO_TLSv1_3) +# define SSL_OP_NO_DTLS_MASK (SSL_OP_NO_DTLSv1|SSL_OP_NO_DTLSv1_2) + +/* Disallow all renegotiation */ +# define SSL_OP_NO_RENEGOTIATION 0x40000000U + +/* + * Make server add server-hello extension from early version of cryptopro + * draft, when GOST ciphersuite is negotiated. Required for interoperability + * with CryptoPro CSP 3.x + */ +# define SSL_OP_CRYPTOPRO_TLSEXT_BUG 0x80000000U + +/* + * SSL_OP_ALL: various bug workarounds that should be rather harmless. + * This used to be 0x000FFFFFL before 0.9.7. + * This used to be 0x80000BFFU before 1.1.1. + */ +# define SSL_OP_ALL (SSL_OP_CRYPTOPRO_TLSEXT_BUG|\ + SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS|\ + SSL_OP_LEGACY_SERVER_CONNECT|\ + SSL_OP_TLSEXT_PADDING|\ + SSL_OP_SAFARI_ECDHE_ECDSA_BUG) + +/* OBSOLETE OPTIONS: retained for compatibility */ + +/* Removed from OpenSSL 1.1.0. Was 0x00000001L */ +/* Related to removed SSLv2. */ +# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000002L */ +/* Related to removed SSLv2. */ +# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 +/* Removed from OpenSSL 0.9.8q and 1.0.0c. Was 0x00000008L */ +/* Dead forever, see CVE-2010-4180 */ +# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 +/* Removed from OpenSSL 1.0.1h and 1.0.2. Was 0x00000010L */ +/* Refers to ancient SSLREF and SSLv2. */ +# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000020 */ +# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 +/* Removed from OpenSSL 0.9.7h and 0.9.8b. Was 0x00000040L */ +# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000080 */ +/* Ancient SSLeay version. */ +# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000100L */ +# define SSL_OP_TLS_D5_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000200L */ +# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00080000L */ +# define SSL_OP_SINGLE_ECDH_USE 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00100000L */ +# define SSL_OP_SINGLE_DH_USE 0x0 +/* Removed from OpenSSL 1.0.1k and 1.0.2. Was 0x00200000L */ +# define SSL_OP_EPHEMERAL_RSA 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x01000000L */ +# define SSL_OP_NO_SSLv2 0x0 +/* Removed from OpenSSL 1.0.1. Was 0x08000000L */ +# define SSL_OP_PKCS1_CHECK_1 0x0 +/* Removed from OpenSSL 1.0.1. Was 0x10000000L */ +# define SSL_OP_PKCS1_CHECK_2 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x20000000L */ +# define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x40000000L */ +# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0 + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +# define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001U +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U +/* + * Never bother the application with retries if the transport is blocking: + */ +# define SSL_MODE_AUTO_RETRY 0x00000004U +/* Don't attempt to automatically build certificate chain */ +# define SSL_MODE_NO_AUTO_CHAIN 0x00000008U +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) Released buffers are freed. + */ +# define SSL_MODE_RELEASE_BUFFERS 0x00000010U +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U +# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U +/* + * Support Asynchronous operation + */ +# define SSL_MODE_ASYNC 0x00000100U + +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +# define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certificate chain algorithms. When this is set we enforce them. + */ +# define SSL_CERT_FLAG_TLS_STRICT 0x00000001U + +/* Suite B modes, takes same values as certificate verify flags */ +# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +# define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +# define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +# define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +# define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +# define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +# define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +# define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +# define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +# define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +# define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +# define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +# define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +# define CERT_PKEY_SUITEB 0x800 + +# define SSL_CONF_FLAG_CMDLINE 0x1 +# define SSL_CONF_FLAG_FILE 0x2 +# define SSL_CONF_FLAG_CLIENT 0x4 +# define SSL_CONF_FLAG_SERVER 0x8 +# define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +# define SSL_CONF_FLAG_CERTIFICATE 0x20 +# define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40 +/* Configuration value types */ +# define SSL_CONF_TYPE_UNKNOWN 0x0 +# define SSL_CONF_TYPE_STRING 0x1 +# define SSL_CONF_TYPE_FILE 0x2 +# define SSL_CONF_TYPE_DIR 0x3 +# define SSL_CONF_TYPE_NONE 0x4 + +/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */ +# define SSL_COOKIE_LENGTH 4096 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +unsigned long SSL_CTX_get_options(const SSL_CTX *ctx); +unsigned long SSL_get_options(const SSL *s); +unsigned long SSL_CTX_clear_options(SSL_CTX *ctx, unsigned long op); +unsigned long SSL_clear_options(SSL *s, unsigned long op); +unsigned long SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op); +unsigned long SSL_set_options(SSL *s, unsigned long op); + +# define SSL_CTX_set_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) +# define SSL_CTX_clear_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_CTX_get_mode(ctx) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL) +# define SSL_clear_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_set_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL) +# define SSL_get_mode(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL) +# define SSL_set_mtu(ssl, mtu) \ + SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL) +# define DTLS_set_link_mtu(ssl, mtu) \ + SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL) +# define DTLS_get_link_min_mtu(ssl) \ + SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL) + +# define SSL_get_secure_renegotiation_support(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_heartbeat(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT,0,NULL) +# endif + +# define SSL_CTX_set_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_set_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_CTX_clear_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) +# define SSL_clear_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) + +void 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)); +void 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)); +# define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) +# define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) + +# define SSL_get_extms_support(s) \ + SSL_ctrl((s),SSL_CTRL_GET_EXTMS_SUPPORT,0,NULL) + +# ifndef OPENSSL_NO_SRP + +/* see tls_srp.c */ +__owur int SSL_SRP_CTX_init(SSL *s); +__owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +int SSL_SRP_CTX_free(SSL *ctx); +int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +__owur int SSL_srp_server_param_with_username(SSL *s, int *ad); +__owur int SRP_Calc_A_param(SSL *s); + +# endif + +/* 100k max cert list */ +# define SSL_MAX_CERT_LIST_DEFAULT 1024*100 + +# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32 + * bytes. The callback can alter this length to be less if desired. It is + * also an error for the callback to set the size to zero. + */ +typedef int (*GEN_SESSION_CB) (SSL *ssl, unsigned char *id, + unsigned int *id_len); + +# define SSL_SESS_CACHE_OFF 0x0000 +# define SSL_SESS_CACHE_CLIENT 0x0001 +# define SSL_SESS_CACHE_SERVER 0x0002 +# define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER) +# define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +# define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +# define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE) + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +# define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL) +# define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL) +# define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL) +# define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL) +# define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL) +# define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL) +# define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL) +# define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL) +# define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL) +# define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb) (struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb) (struct ssl_ctx_st + *ctx, + SSL_SESSION *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb) (struct ssl_st + *ssl, + const unsigned char + *data, int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + const unsigned char *data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb) (const SSL *ssl, int type, int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +# ifndef OPENSSL_NO_ENGINE +__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +# endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb) (SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb) (SSL *ssl, + const unsigned + char *cookie, + unsigned int + cookie_len)); + +void SSL_CTX_set_stateless_cookie_generate_cb( + SSL_CTX *ctx, + int (*gen_stateless_cookie_cb) (SSL *ssl, + unsigned char *cookie, + size_t *cookie_len)); +void SSL_CTX_set_stateless_cookie_verify_cb( + SSL_CTX *ctx, + int (*verify_stateless_cookie_cb) (SSL *ssl, + const unsigned char *cookie, + size_t cookie_len)); +# ifndef OPENSSL_NO_NEXTPROTONEG + +typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned int *outlen, + void *arg); +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + SSL_CTX_npn_advertised_cb_func cb, + void *arg); +# define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb + +typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + SSL_CTX_npn_select_cb_func cb, + void *arg); +# define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb + +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +# define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated +# endif + +__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *in, unsigned int inlen, + const unsigned char *client, + unsigned int client_len); + +# define OPENSSL_NPN_UNSUPPORTED 0 +# define OPENSSL_NPN_NEGOTIATED 1 +# define OPENSSL_NPN_NO_OVERLAP 2 + +__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned int protos_len); +__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned int protos_len); +typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + SSL_CTX_alpn_select_cb_func cb, + void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned int *len); + +# ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +# define PSK_MAX_IDENTITY_LEN 128 +# define PSK_MAX_PSK_LEN 256 +typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl, + const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); +void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); + +typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl, + const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb); +void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb); + +__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +# endif + +typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl, + const unsigned char *identity, + size_t identity_len, + SSL_SESSION **sess); +typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, + const unsigned char **id, + size_t *idlen, + SSL_SESSION **sess); + +void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb); +void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, + SSL_psk_find_session_cb_func cb); +void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); +void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, + SSL_psk_use_session_cb_func cb); + +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, + unsigned int ext_type); + +__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + unsigned int context, + SSL_custom_ext_add_cb_ex add_cb, + SSL_custom_ext_free_cb_ex free_cb, + void *add_arg, + SSL_custom_ext_parse_cb_ex parse_cb, + void *parse_arg); + +__owur int SSL_extension_supported(unsigned int ext_type); + +# define SSL_NOTHING 1 +# define SSL_WRITING 2 +# define SSL_READING 3 +# define SSL_X509_LOOKUP 4 +# define SSL_ASYNC_PAUSED 5 +# define SSL_ASYNC_NO_JOBS 6 +# define SSL_CLIENT_HELLO_CB 7 + +/* These will only be used when doing non-blocking IO */ +# define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +# define SSL_want_read(s) (SSL_want(s) == SSL_READING) +# define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +# define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) +# define SSL_want_async(s) (SSL_want(s) == SSL_ASYNC_PAUSED) +# define SSL_want_async_job(s) (SSL_want(s) == SSL_ASYNC_NO_JOBS) +# define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB) + +# define SSL_MAC_FLAG_READ_MAC_STREAM 1 +# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 + +/* + * A callback for logging out TLS key material. This callback should log out + * |line| followed by a newline. + */ +typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line); + +/* + * SSL_CTX_set_keylog_callback configures a callback to log key material. This + * is intended for debugging use with tools like Wireshark. The cb function + * should log line followed by a newline. + */ +void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb); + +/* + * SSL_CTX_get_keylog_callback returns the callback configured by + * SSL_CTX_set_keylog_callback. + */ +SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx); + +int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data); +uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx); +int SSL_set_max_early_data(SSL *s, uint32_t max_early_data); +uint32_t SSL_get_max_early_data(const SSL *s); +int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data); +uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx); +int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data); +uint32_t SSL_get_recv_max_early_data(const SSL *s); + +#ifdef __cplusplus +} +#endif + +# include +# include +# include /* This is mostly sslv3 with a few tweaks */ +# include /* Datagram TLS */ +# include /* Support for the use_srtp extension */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These need to be after the above set of includes due to a compiler bug + * in VisualStudio 2015 + */ +DEFINE_STACK_OF_CONST(SSL_CIPHER) +DEFINE_STACK_OF(SSL_COMP) + +/* compatibility */ +# define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)(arg))) +# define SSL_get_app_data(s) (SSL_get_ex_data(s,0)) +# define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0, \ + (char *)(a))) +# define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0)) +# define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0)) +# define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0, \ + (char *)(arg))) +DEPRECATEDIN_1_1_0(void SSL_set_debug(SSL *s, int debug)) + +/* TLSv1.3 KeyUpdate message types */ +/* -1 used so that this is an invalid value for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NONE -1 +/* Values as defined for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NOT_REQUESTED 0 +#define SSL_KEY_UPDATE_REQUESTED 1 + +/* + * The valid handshake states (one for each type message sent and one for each + * type of message received). There are also two "special" states: + * TLS = TLS or DTLS state + * DTLS = DTLS specific state + * CR/SR = Client Read/Server Read + * CW/SW = Client Write/Server Write + * + * The "special" states are: + * TLS_ST_BEFORE = No handshake has been initiated yet + * TLS_ST_OK = A handshake has been successfully completed + */ +typedef enum { + TLS_ST_BEFORE, + TLS_ST_OK, + DTLS_ST_CR_HELLO_VERIFY_REQUEST, + TLS_ST_CR_SRVR_HELLO, + TLS_ST_CR_CERT, + TLS_ST_CR_CERT_STATUS, + TLS_ST_CR_KEY_EXCH, + TLS_ST_CR_CERT_REQ, + TLS_ST_CR_SRVR_DONE, + TLS_ST_CR_SESSION_TICKET, + TLS_ST_CR_CHANGE, + TLS_ST_CR_FINISHED, + TLS_ST_CW_CLNT_HELLO, + TLS_ST_CW_CERT, + TLS_ST_CW_KEY_EXCH, + TLS_ST_CW_CERT_VRFY, + TLS_ST_CW_CHANGE, + TLS_ST_CW_NEXT_PROTO, + TLS_ST_CW_FINISHED, + TLS_ST_SW_HELLO_REQ, + TLS_ST_SR_CLNT_HELLO, + DTLS_ST_SW_HELLO_VERIFY_REQUEST, + TLS_ST_SW_SRVR_HELLO, + TLS_ST_SW_CERT, + TLS_ST_SW_KEY_EXCH, + TLS_ST_SW_CERT_REQ, + TLS_ST_SW_SRVR_DONE, + TLS_ST_SR_CERT, + TLS_ST_SR_KEY_EXCH, + TLS_ST_SR_CERT_VRFY, + TLS_ST_SR_NEXT_PROTO, + TLS_ST_SR_CHANGE, + TLS_ST_SR_FINISHED, + TLS_ST_SW_SESSION_TICKET, + TLS_ST_SW_CERT_STATUS, + TLS_ST_SW_CHANGE, + TLS_ST_SW_FINISHED, + TLS_ST_SW_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_CERT_VRFY, + TLS_ST_SW_CERT_VRFY, + TLS_ST_CR_HELLO_REQ, + TLS_ST_SW_KEY_UPDATE, + TLS_ST_CW_KEY_UPDATE, + TLS_ST_SR_KEY_UPDATE, + TLS_ST_CR_KEY_UPDATE, + TLS_ST_EARLY_DATA, + TLS_ST_PENDING_EARLY_DATA_END, + TLS_ST_CW_END_OF_EARLY_DATA, + TLS_ST_SR_END_OF_EARLY_DATA +} OSSL_HANDSHAKE_STATE; + +/* + * Most of the following state values are no longer used and are defined to be + * the closest equivalent value in the current state machine code. Not all + * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT + * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP, + * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT. + */ + +# define SSL_ST_CONNECT 0x1000 +# define SSL_ST_ACCEPT 0x2000 + +# define SSL_ST_MASK 0x0FFF + +# define SSL_CB_LOOP 0x01 +# define SSL_CB_EXIT 0x02 +# define SSL_CB_READ 0x04 +# define SSL_CB_WRITE 0x08 +# define SSL_CB_ALERT 0x4000/* used in callback */ +# define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ) +# define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE) +# define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP) +# define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT) +# define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP) +# define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT) +# define SSL_CB_HANDSHAKE_START 0x10 +# define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +# define SSL_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a)) +# define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a)) +int SSL_in_init(const SSL *s); +int SSL_in_before(const SSL *s); +int SSL_is_init_finished(const SSL *s); + +/* + * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you + * should not need these + */ +# define SSL_ST_READ_HEADER 0xF0 +# define SSL_ST_READ_BODY 0xF1 +# define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +# define SSL_VERIFY_NONE 0x00 +# define SSL_VERIFY_PEER 0x01 +# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +# define SSL_VERIFY_CLIENT_ONCE 0x04 +# define SSL_VERIFY_POST_HANDSHAKE 0x08 + +# if OPENSSL_API_COMPAT < 0x10100000L +# define OpenSSL_add_ssl_algorithms() SSL_library_init() +# define SSLeay_add_ssl_algorithms() SSL_library_init() +# endif + +/* More backward compatibility */ +# define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_cipher_bits(s,np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np) +# define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +# define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_time(a) SSL_SESSION_get_time(a) +# define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b)) +# define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +# define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b)) + +# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id) +# define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +# define SSL_AD_REASON_OFFSET 1000/* offset to get SSL_R_... value + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +# define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +# define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +# define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +# define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +# define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +# define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +# define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +# define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +# define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +# define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +# define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +# define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +# define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +# define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +# define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +# define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +# define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +# define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +# define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +# define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +# define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +# define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +# define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +# define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +# define SSL_AD_MISSING_EXTENSION TLS13_AD_MISSING_EXTENSION +# define SSL_AD_CERTIFICATE_REQUIRED TLS13_AD_CERTIFICATE_REQUIRED +# define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +# define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +# define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +# define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +# define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +# define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +# define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +# define SSL_AD_NO_APPLICATION_PROTOCOL TLS1_AD_NO_APPLICATION_PROTOCOL +# define SSL_ERROR_NONE 0 +# define SSL_ERROR_SSL 1 +# define SSL_ERROR_WANT_READ 2 +# define SSL_ERROR_WANT_WRITE 3 +# define SSL_ERROR_WANT_X509_LOOKUP 4 +# define SSL_ERROR_SYSCALL 5/* look at error stack/return + * value/errno */ +# define SSL_ERROR_ZERO_RETURN 6 +# define SSL_ERROR_WANT_CONNECT 7 +# define SSL_ERROR_WANT_ACCEPT 8 +# define SSL_ERROR_WANT_ASYNC 9 +# define SSL_ERROR_WANT_ASYNC_JOB 10 +# define SSL_ERROR_WANT_CLIENT_HELLO_CB 11 +# define SSL_CTRL_SET_TMP_DH 3 +# define SSL_CTRL_SET_TMP_ECDH 4 +# define SSL_CTRL_SET_TMP_DH_CB 6 +# define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 +# define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 +# define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +# define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +# define SSL_CTRL_GET_FLAGS 13 +# define SSL_CTRL_EXTRA_CHAIN_CERT 14 +# define SSL_CTRL_SET_MSG_CALLBACK 15 +# define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 +/* only applies to datagram connections */ +# define SSL_CTRL_SET_MTU 17 +/* Stats */ +# define SSL_CTRL_SESS_NUMBER 20 +# define SSL_CTRL_SESS_CONNECT 21 +# define SSL_CTRL_SESS_CONNECT_GOOD 22 +# define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 +# define SSL_CTRL_SESS_ACCEPT 24 +# define SSL_CTRL_SESS_ACCEPT_GOOD 25 +# define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 +# define SSL_CTRL_SESS_HIT 27 +# define SSL_CTRL_SESS_CB_HIT 28 +# define SSL_CTRL_SESS_MISSES 29 +# define SSL_CTRL_SESS_TIMEOUTS 30 +# define SSL_CTRL_SESS_CACHE_FULL 31 +# define SSL_CTRL_MODE 33 +# define SSL_CTRL_GET_READ_AHEAD 40 +# define SSL_CTRL_SET_READ_AHEAD 41 +# define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +# define SSL_CTRL_GET_SESS_CACHE_SIZE 43 +# define SSL_CTRL_SET_SESS_CACHE_MODE 44 +# define SSL_CTRL_GET_SESS_CACHE_MODE 45 +# define SSL_CTRL_GET_MAX_CERT_LIST 50 +# define SSL_CTRL_SET_MAX_CERT_LIST 51 +# define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 +/* see tls1.h for macros based on these */ +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 +# define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 +# define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 +# define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +# define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */ +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 +# define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 +# define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 +# define SSL_CTRL_SET_SRP_ARG 78 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 +# define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 +# define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT 85 +# define SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING 86 +# define SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS 87 +# endif +# define DTLS_CTRL_GET_TIMEOUT 73 +# define DTLS_CTRL_HANDLE_TIMEOUT 74 +# define SSL_CTRL_GET_RI_SUPPORT 76 +# define SSL_CTRL_CLEAR_MODE 78 +# define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79 +# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +# define SSL_CTRL_CHAIN 88 +# define SSL_CTRL_CHAIN_CERT 89 +# define SSL_CTRL_GET_GROUPS 90 +# define SSL_CTRL_SET_GROUPS 91 +# define SSL_CTRL_SET_GROUPS_LIST 92 +# define SSL_CTRL_GET_SHARED_GROUP 93 +# define SSL_CTRL_SET_SIGALGS 97 +# define SSL_CTRL_SET_SIGALGS_LIST 98 +# define SSL_CTRL_CERT_FLAGS 99 +# define SSL_CTRL_CLEAR_CERT_FLAGS 100 +# define SSL_CTRL_SET_CLIENT_SIGALGS 101 +# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +# define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +# define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +# define SSL_CTRL_BUILD_CERT_CHAIN 105 +# define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +# define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +# define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +# define SSL_CTRL_GET_PEER_TMP_KEY 109 +# define SSL_CTRL_GET_RAW_CIPHERLIST 110 +# define SSL_CTRL_GET_EC_POINT_FORMATS 111 +# define SSL_CTRL_GET_CHAIN_CERTS 115 +# define SSL_CTRL_SELECT_CURRENT_CERT 116 +# define SSL_CTRL_SET_CURRENT_CERT 117 +# define SSL_CTRL_SET_DH_AUTO 118 +# define DTLS_CTRL_SET_LINK_MTU 120 +# define DTLS_CTRL_GET_LINK_MIN_MTU 121 +# define SSL_CTRL_GET_EXTMS_SUPPORT 122 +# define SSL_CTRL_SET_MIN_PROTO_VERSION 123 +# define SSL_CTRL_SET_MAX_PROTO_VERSION 124 +# define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125 +# define SSL_CTRL_SET_MAX_PIPELINES 126 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129 +# define SSL_CTRL_GET_MIN_PROTO_VERSION 130 +# define SSL_CTRL_GET_MAX_PROTO_VERSION 131 +# define SSL_CTRL_GET_SIGNATURE_NID 132 +# define SSL_CTRL_GET_TMP_KEY 133 +# define SSL_CTRL_GET_VERIFY_CERT_STORE 137 +# define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CERT_SET_FIRST 1 +# define SSL_CERT_SET_NEXT 2 +# define SSL_CERT_SET_SERVER 3 +# define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)(arg)) +# define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL) +# define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL) +# define SSL_CTX_set_tmp_dh(ctx,dh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) +# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) +# define SSL_CTX_set_dh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_DH_AUTO,onoff,NULL) +# define SSL_set_dh_auto(s, onoff) \ + SSL_ctrl(s,SSL_CTRL_SET_DH_AUTO,onoff,NULL) +# define SSL_set_tmp_dh(ssl,dh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) +# define SSL_set_tmp_ecdh(ssl,ecdh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) +# define SSL_CTX_add_extra_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)(x509)) +# define SSL_CTX_get_extra_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509) +# define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509) +# define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL) +# define SSL_CTX_set0_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)(sk)) +# define SSL_CTX_set1_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)(sk)) +# define SSL_CTX_add0_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)(x509)) +# define SSL_CTX_add1_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)(x509)) +# define SSL_CTX_get0_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx,NULL) +# define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_CTX_select_current_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509)) +# define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_CTX_set0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set1_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st)) +# define SSL_CTX_get0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set1_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st)) +# define SSL_CTX_get0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_set0_chain(s,sk) \ + SSL_ctrl(s,SSL_CTRL_CHAIN,0,(char *)(sk)) +# define SSL_set1_chain(s,sk) \ + SSL_ctrl(s,SSL_CTRL_CHAIN,1,(char *)(sk)) +# define SSL_add0_chain_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,0,(char *)(x509)) +# define SSL_add1_chain_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,1,(char *)(x509)) +# define SSL_get0_chain_certs(s,px509) \ + SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_clear_chain_certs(s) \ + SSL_set0_chain(s,NULL) +# define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_select_current_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509)) +# define SSL_set_current_cert(s,op) \ + SSL_ctrl(s,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_set0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_set1_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st)) +#define SSL_get0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_set0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_set1_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st)) +#define SSL_get0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_get1_groups(s, glist) \ + SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_CTX_set1_groups(ctx, glist, glistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) +# define SSL_CTX_set1_groups_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_set1_groups(s, glist, glistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) +# define SSL_set1_groups_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(str)) +# define SSL_get_shared_group(s, n) \ + SSL_ctrl(s,SSL_CTRL_GET_SHARED_GROUP,n,NULL) +# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist)) +# define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(s)) +# define SSL_set1_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist)) +# define SSL_set1_sigalgs_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(str)) +# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist)) +# define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(s)) +# define SSL_set1_client_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist)) +# define SSL_set1_client_sigalgs_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(str)) +# define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist)) +# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen, \ + (char *)(clist)) +# define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) +# define SSL_get_peer_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_TMP_KEY,0,pk) +# define SSL_get_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_TMP_KEY,0,pk) +# define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,plst) +# define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,plst) +# define SSL_CTX_set_min_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +# define SSL_CTX_set_max_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +# define SSL_CTX_get_min_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +# define SSL_CTX_get_max_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +# define SSL_set_min_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +# define SSL_set_max_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +# define SSL_get_min_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +# define SSL_get_max_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) + +/* Backwards compatibility, original 1.1.0 names */ +# define SSL_CTRL_GET_SERVER_TMP_KEY \ + SSL_CTRL_GET_PEER_TMP_KEY +# define SSL_get_server_tmp_key(s, pk) \ + SSL_get_peer_tmp_key(s, pk) + +/* + * The following symbol names are old and obsolete. They are kept + * for compatibility reasons only and should not be used anymore. + */ +# define SSL_CTRL_GET_CURVES SSL_CTRL_GET_GROUPS +# define SSL_CTRL_SET_CURVES SSL_CTRL_SET_GROUPS +# define SSL_CTRL_SET_CURVES_LIST SSL_CTRL_SET_GROUPS_LIST +# define SSL_CTRL_GET_SHARED_CURVE SSL_CTRL_GET_SHARED_GROUP + +# define SSL_get1_curves SSL_get1_groups +# define SSL_CTX_set1_curves SSL_CTX_set1_groups +# define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list +# define SSL_set1_curves SSL_set1_groups +# define SSL_set1_curves_list SSL_set1_groups_list +# define SSL_get_shared_curve SSL_get_shared_group + + +# if OPENSSL_API_COMPAT < 0x10100000L +/* Provide some compatibility macros for removed functionality. */ +# define SSL_CTX_need_tmp_RSA(ctx) 0 +# define SSL_CTX_set_tmp_rsa(ctx,rsa) 1 +# define SSL_need_tmp_RSA(ssl) 0 +# define SSL_set_tmp_rsa(ssl,rsa) 1 +# define SSL_CTX_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +# define SSL_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +/* + * We "pretend" to call the callback to avoid warnings about unused static + * functions. + */ +# define SSL_CTX_set_tmp_rsa_callback(ctx, cb) while(0) (cb)(NULL, 0, 0) +# define SSL_set_tmp_rsa_callback(ssl, cb) while(0) (cb)(NULL, 0, 0) +# endif +__owur const BIO_METHOD *BIO_f_ssl(void); +__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +int SSL_CTX_up_ref(SSL_CTX *ctx); +void SSL_CTX_free(SSL_CTX *); +__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx); +__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); +__owur int SSL_want(const SSL *s); +__owur int SSL_clear(SSL *s); + +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); + +__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); +__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +__owur const char *OPENSSL_cipher_name(const char *rfc_name); +__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c); +__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c); +__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c); +__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c); + +__owur int SSL_get_fd(const SSL *s); +__owur int SSL_get_rfd(const SSL *s); +__owur int SSL_get_wfd(const SSL *s); +__owur const char *SSL_get_cipher_list(const SSL *s, int n); +__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size); +__owur int SSL_get_read_ahead(const SSL *s); +__owur int SSL_pending(const SSL *s); +__owur int SSL_has_pending(const SSL *s); +# ifndef OPENSSL_NO_SOCK +__owur int SSL_set_fd(SSL *s, int fd); +__owur int SSL_set_rfd(SSL *s, int fd); +__owur int SSL_set_wfd(SSL *s, int fd); +# endif +void SSL_set0_rbio(SSL *s, BIO *rbio); +void SSL_set0_wbio(SSL *s, BIO *wbio); +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +__owur BIO *SSL_get_rbio(const SSL *s); +__owur BIO *SSL_get_wbio(const SSL *s); +__owur int SSL_set_cipher_list(SSL *s, const char *str); +__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str); +__owur int SSL_set_ciphersuites(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +__owur int SSL_get_verify_mode(const SSL *s); +__owur int SSL_get_verify_depth(const SSL *s); +__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s); +void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg); +# ifndef OPENSSL_NO_RSA +__owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, const unsigned char *d, + long len); +# endif +__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +__owur int SSL_use_certificate(SSL *ssl, X509 *x); +__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); +__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + + +/* serverinfo file format versions */ +# define SSL_SERVERINFOV1 1 +# define SSL_SERVERINFOV2 2 + +/* Set serverinfo data for the current active cert. */ +__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, + const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); + +#ifndef OPENSSL_NO_RSA +__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +#endif + +__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type); + +#ifndef OPENSSL_NO_RSA +__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +#endif +__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, + int type); +/* PEM type */ +__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_load_error_strings() \ + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +# endif + +__owur const char *SSL_state_string(const SSL *s); +__owur const char *SSL_rstate_string(const SSL *s); +__owur const char *SSL_state_string_long(const SSL *s); +__owur const char *SSL_rstate_string_long(const SSL *s); +__owur long SSL_SESSION_get_time(const SSL_SESSION *s); +__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); +__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); +__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); + +__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); +__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); +void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, + const unsigned char **alpn, + size_t *len); +__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s, + const unsigned char *alpn, + size_t len); +__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); +__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher); +__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s); +__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s); +void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick, + size_t *len); +__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s); +__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s, + uint32_t max_early_data); +__owur int SSL_copy_session_id(SSL *to, const SSL *from); +__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); +__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, + unsigned int sid_len); +__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s); + +__owur SSL_SESSION *SSL_SESSION_new(void); +__owur SSL_SESSION *SSL_SESSION_dup(SSL_SESSION *src); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, + unsigned int *len); +__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +# ifndef OPENSSL_NO_STDIO +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +# endif +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x); +int SSL_SESSION_up_ref(SSL_SESSION *ses); +void SSL_SESSION_free(SSL_SESSION *ses); +__owur int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); +__owur int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session); +int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session); +__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); +__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb); +__owur int SSL_has_matching_session_id(const SSL *s, + const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); + +# ifdef HEADER_X509_H +__owur X509 *SSL_get_peer_certificate(const SSL *s); +# endif + +__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback); +void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); +void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, + int (*cb) (X509_STORE_CTX *, void *), + void *arg); +void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg), + void *arg); +# ifndef OPENSSL_NO_RSA +__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +# endif +__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); +__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); +pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx); +void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx); +void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb); +void SSL_set_default_passwd_cb_userdata(SSL *s, void *u); +pem_password_cb *SSL_get_default_passwd_cb(SSL *s); +void *SSL_get_default_passwd_cb_userdata(SSL *s); + +__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx); +__owur int SSL_check_private_key(const SSL *ctx); + +__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_up_ref(SSL *s); +int SSL_is_dtls(const SSL *s); +__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose); +__owur int SSL_set_purpose(SSL *ssl, int purpose); +__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); +__owur int SSL_set_trust(SSL *ssl, int trust); + +__owur int SSL_set1_host(SSL *s, const char *hostname); +__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur const char *SSL_get0_peername(SSL *s); +void SSL_set_hostflags(SSL *s, unsigned int flags); + +__owur int SSL_CTX_dane_enable(SSL_CTX *ctx); +__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md, + uint8_t mtype, uint8_t ord); +__owur int SSL_dane_enable(SSL *s, const char *basedomain); +__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector, + uint8_t mtype, unsigned const char *data, size_t dlen); +__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki); +__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector, + uint8_t *mtype, unsigned const char **data, + size_t *dlen); +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +SSL_DANE *SSL_get0_dane(SSL *ssl); +/* + * DANE flags + */ +unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags); +unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags); + +__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +__owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); + +# ifndef OPENSSL_NO_SRP +int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb) (SSL *, void *)); +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb) (SSL *, void *)); +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb) (SSL *, int *, void *)); +int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +__owur BIGNUM *SSL_get_srp_g(SSL *s); +__owur BIGNUM *SSL_get_srp_N(SSL *s); + +__owur char *SSL_get_srp_username(SSL *s); +__owur char *SSL_get_srp_userinfo(SSL *s); +# endif + +/* + * ClientHello callback and helpers. + */ + +# define SSL_CLIENT_HELLO_SUCCESS 1 +# define SSL_CLIENT_HELLO_ERROR 0 +# define SSL_CLIENT_HELLO_RETRY (-1) + +typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); +void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, + void *arg); +int SSL_client_hello_isv2(SSL *s); +unsigned int SSL_client_hello_get0_legacy_version(SSL *s); +size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_compression_methods(SSL *s, + const unsigned char **out); +int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get0_ext(SSL *s, unsigned int type, + const unsigned char **out, size_t *outlen); + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +# ifdef OSSL_ASYNC_FD +/* + * Windows application developer has to include windows.h to use these. + */ +__owur int SSL_waiting_for_async(SSL *s); +__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds); +__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +# endif +__owur int SSL_accept(SSL *ssl); +__owur int SSL_stateless(SSL *s); +__owur int SSL_connect(SSL *ssl); +__owur int SSL_read(SSL *ssl, void *buf, int num); +__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); + +# define SSL_READ_EARLY_DATA_ERROR 0 +# define SSL_READ_EARLY_DATA_SUCCESS 1 +# define SSL_READ_EARLY_DATA_FINISH 2 + +__owur int SSL_read_early_data(SSL *s, void *buf, size_t num, + size_t *readbytes); +__owur int SSL_peek(SSL *ssl, void *buf, int num); +__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); +__owur int SSL_write(SSL *ssl, const void *buf, int num); +__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written); +__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num, + size_t *written); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +# define SSL_EARLY_DATA_NOT_SENT 0 +# define SSL_EARLY_DATA_REJECTED 1 +# define SSL_EARLY_DATA_ACCEPTED 2 + +__owur int SSL_get_early_data_status(const SSL *s); + +__owur int SSL_get_error(const SSL *s, int ret_code); +__owur const char *SSL_get_version(const SSL *s); + +/* This sets the 'default' SSL version that SSL_new() will create */ +__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); + +# ifndef OPENSSL_NO_SSL3_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_method(void)) /* SSLv3 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_client_method(void)) +# endif + +#define SSLv23_method TLS_method +#define SSLv23_server_method TLS_server_method +#define SSLv23_client_method TLS_client_method + +/* Negotiate highest available SSL/TLS version */ +__owur const SSL_METHOD *TLS_method(void); +__owur const SSL_METHOD *TLS_server_method(void); +__owur const SSL_METHOD *TLS_client_method(void); + +# ifndef OPENSSL_NO_TLS1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_method(void)) /* TLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_TLS1_1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_method(void)) /* TLSv1.1 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_TLS1_2_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_method(void)) /* TLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_client_method(void)) +# endif + +# ifndef OPENSSL_NO_DTLS1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_method(void)) /* DTLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_DTLS1_2_METHOD +/* DTLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_client_method(void)) +# endif + +__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +__owur size_t DTLS_get_data_mtu(const SSL *s); + +__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx); +__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); + +__owur int SSL_do_handshake(SSL *s); +int SSL_key_update(SSL *s, int updatetype); +int SSL_get_key_update_type(const SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); +int SSL_shutdown(SSL *s); +__owur int SSL_verify_client_post_handshake(SSL *s); +void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); +void SSL_set_post_handshake_auth(SSL *s, int val); + +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); +__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +__owur const char *SSL_alert_type_string_long(int value); +__owur const char *SSL_alert_type_string(int value); +__owur const char *SSL_alert_desc_string_long(int value); +__owur const char *SSL_alert_desc_string(int value); + +void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s); +__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx); +__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x); +__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x); +__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +__owur int SSL_add_client_CA(SSL *ssl, X509 *x); +__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +__owur long SSL_get_default_timeout(const SSL *s); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_library_init() OPENSSL_init_ssl(0, NULL) +# endif + +__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk); + +__owur SSL *SSL_dup(SSL *ssl); + +__owur X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ +struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +__owur int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +__owur int SSL_get_shutdown(const SSL *ssl); +__owur int SSL_version(const SSL *ssl); +__owur int SSL_client_version(const SSL *s); +__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx); +__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, + const char *CApath); +# define SSL_get0_session SSL_get_session/* just peek at pointer */ +__owur SSL_SESSION *SSL_get_session(const SSL *ssl); +__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb) (const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type, + int val); +__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); + +void SSL_set_verify_result(SSL *ssl, long v); +__owur long SSL_get_verify_result(const SSL *ssl); +__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s); + +__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess, + unsigned char *out, size_t outlen); +__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess, + const unsigned char *in, size_t len); +uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess); + +#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef) +__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef) +__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef) +__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); + +__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +# define SSL_CTX_sess_set_cache_size(ctx,t) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL) +# define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL) +# define SSL_CTX_set_session_cache_mode(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL) +# define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL) + +# define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +# define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m) +# define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) +# define SSL_CTX_set_read_ahead(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL) +# define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_CTX_set_max_cert_list(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) +# define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_set_max_cert_list(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) + +# define SSL_CTX_set_max_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) +# define SSL_set_max_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) +# define SSL_CTX_set_split_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL) +# define SSL_set_split_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL) +# define SSL_CTX_set_max_pipelines(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_PIPELINES,m,NULL) +# define SSL_set_max_pipelines(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_PIPELINES,m,NULL) + +void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len); +void SSL_set_default_read_buffer_len(SSL *s, size_t len); + +# ifndef OPENSSL_NO_DH +/* NB: the |keylength| is only applicable when is_export is true */ +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +# endif + +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); +__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); +__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); +__owur int SSL_COMP_get_id(const SSL_COMP *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_COMP_free_compression_methods() while(0) continue +# endif +__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); +int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c); +int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c); +int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len, + int isv2format, STACK_OF(SSL_CIPHER) **sk, + STACK_OF(SSL_CIPHER) **scsvs); + +/* TLS extensions functions */ +__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +__owur int SSL_set_session_ticket_ext_cb(SSL *s, + tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +__owur int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn session_secret_cb, + void *arg); + +void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, + int (*cb) (SSL *ssl, + int + is_forward_secure)); + +void SSL_set_not_resumable_session_callback(SSL *ssl, + int (*cb) (SSL *ssl, + int is_forward_secure)); + +void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, + size_t (*cb) (SSL *ssl, int type, + size_t len, void *arg)); +void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); +int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); + +void SSL_set_record_padding_callback(SSL *ssl, + size_t (*cb) (SSL *ssl, int type, + size_t len, void *arg)); +void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); +int SSL_set_block_padding(SSL *ssl, size_t block_size); + +int SSL_set_num_tickets(SSL *s, size_t num_tickets); +size_t SSL_get_num_tickets(const SSL *s); +int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_cache_hit(s) SSL_session_reused(s) +# endif + +__owur int SSL_session_reused(const SSL *s); +__owur int SSL_is_server(const SSL *s); + +__owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, + unsigned int flags); +__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +void SSL_add_ssl_module(void); +int SSL_config(SSL *s, const char *name); +int SSL_CTX_config(SSL_CTX *ctx, const char *name); + +# ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +# endif + +# ifndef OPENSSL_NO_SOCK +int DTLSv1_listen(SSL *s, BIO_ADDR *client); +# endif + +# ifndef OPENSSL_NO_CT + +/* + * A callback for verifying that the received SCTs are sufficient. + * Expected to return 1 if they are sufficient, otherwise 0. + * May return a negative integer if an error occurs. + * A connection should be aborted if the SCTs are deemed insufficient. + */ +typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, + const STACK_OF(SCT) *scts, void *arg); + +/* + * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate + * the received SCTs. + * If the callback returns a non-positive result, the connection is terminated. + * Call this function before beginning a handshake. + * If a NULL |callback| is provided, SCT validation is disabled. + * |arg| is arbitrary userdata that will be passed to the callback whenever it + * is invoked. Ownership of |arg| remains with the caller. + * + * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response + * will be requested. + */ +int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, + void *arg); +int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, + ssl_ct_validation_cb callback, + void *arg); +#define SSL_disable_ct(s) \ + ((void) SSL_set_validation_callback((s), NULL, NULL)) +#define SSL_CTX_disable_ct(ctx) \ + ((void) SSL_CTX_set_validation_callback((ctx), NULL, NULL)) + +/* + * The validation type enumerates the available behaviours of the built-in SSL + * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct(). + * The underlying callback is a static function in libssl. + */ +enum { + SSL_CT_VALIDATION_PERMISSIVE = 0, + SSL_CT_VALIDATION_STRICT +}; + +/* + * Enable CT by setting up a callback that implements one of the built-in + * validation variants. The SSL_CT_VALIDATION_PERMISSIVE variant always + * continues the handshake, the application can make appropriate decisions at + * handshake completion. The SSL_CT_VALIDATION_STRICT variant requires at + * least one valid SCT, or else handshake termination will be requested. The + * handshake may continue anyway if SSL_VERIFY_NONE is in effect. + */ +int SSL_enable_ct(SSL *s, int validation_mode); +int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); + +/* + * Report whether a non-NULL callback is enabled. + */ +int SSL_ct_is_enabled(const SSL *s); +int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx); + +/* Gets the SCTs received from a connection */ +const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s); + +/* + * Loads the CT log list from the default location. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx); + +/* + * Loads the CT log list from the specified file path. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path); + +/* + * Sets the CT log list used by all SSL connections created from this SSL_CTX. + * Ownership of the CTLOG_STORE is transferred to the SSL_CTX. + */ +void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs); + +/* + * Gets the CT log list used by all SSL connections created from this SSL_CTX. + * This will be NULL unless one of the following functions has been called: + * - SSL_CTX_set_default_ctlog_list_file + * - SSL_CTX_set_ctlog_list_file + * - SSL_CTX_set_ctlog_store + */ +const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx); + +# endif /* OPENSSL_NO_CT */ + +/* What the "other" parameter contains in security callback */ +/* Mask for type */ +# define SSL_SECOP_OTHER_TYPE 0xffff0000 +# define SSL_SECOP_OTHER_NONE 0 +# define SSL_SECOP_OTHER_CIPHER (1 << 16) +# define SSL_SECOP_OTHER_CURVE (2 << 16) +# define SSL_SECOP_OTHER_DH (3 << 16) +# define SSL_SECOP_OTHER_PKEY (4 << 16) +# define SSL_SECOP_OTHER_SIGALG (5 << 16) +# define SSL_SECOP_OTHER_CERT (6 << 16) + +/* Indicated operation refers to peer key or certificate */ +# define SSL_SECOP_PEER 0x1000 + +/* Values for "op" parameter in security callback */ + +/* Called to filter ciphers */ +/* Ciphers client supports */ +# define SSL_SECOP_CIPHER_SUPPORTED (1 | SSL_SECOP_OTHER_CIPHER) +/* Cipher shared by client/server */ +# define SSL_SECOP_CIPHER_SHARED (2 | SSL_SECOP_OTHER_CIPHER) +/* Sanity check of cipher server selects */ +# define SSL_SECOP_CIPHER_CHECK (3 | SSL_SECOP_OTHER_CIPHER) +/* Curves supported by client */ +# define SSL_SECOP_CURVE_SUPPORTED (4 | SSL_SECOP_OTHER_CURVE) +/* Curves shared by client/server */ +# define SSL_SECOP_CURVE_SHARED (5 | SSL_SECOP_OTHER_CURVE) +/* Sanity check of curve server selects */ +# define SSL_SECOP_CURVE_CHECK (6 | SSL_SECOP_OTHER_CURVE) +/* Temporary DH key */ +# define SSL_SECOP_TMP_DH (7 | SSL_SECOP_OTHER_PKEY) +/* SSL/TLS version */ +# define SSL_SECOP_VERSION (9 | SSL_SECOP_OTHER_NONE) +/* Session tickets */ +# define SSL_SECOP_TICKET (10 | SSL_SECOP_OTHER_NONE) +/* Supported signature algorithms sent to peer */ +# define SSL_SECOP_SIGALG_SUPPORTED (11 | SSL_SECOP_OTHER_SIGALG) +/* Shared signature algorithm */ +# define SSL_SECOP_SIGALG_SHARED (12 | SSL_SECOP_OTHER_SIGALG) +/* Sanity check signature algorithm allowed */ +# define SSL_SECOP_SIGALG_CHECK (13 | SSL_SECOP_OTHER_SIGALG) +/* Used to get mask of supported public key signature algorithms */ +# define SSL_SECOP_SIGALG_MASK (14 | SSL_SECOP_OTHER_SIGALG) +/* Use to see if compression is allowed */ +# define SSL_SECOP_COMPRESSION (15 | SSL_SECOP_OTHER_NONE) +/* EE key in certificate */ +# define SSL_SECOP_EE_KEY (16 | SSL_SECOP_OTHER_CERT) +/* CA key in certificate */ +# define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT) +/* CA digest algorithm in certificate */ +# define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT) +/* Peer EE key in certificate */ +# define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER) +/* Peer CA key in certificate */ +# define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER) +/* Peer CA digest algorithm in certificate */ +# define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER) + +void SSL_set_security_level(SSL *s, int level); +__owur int SSL_get_security_level(const SSL *s); +void SSL_set_security_callback(SSL *s, + int (*cb) (const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_get_security_callback(const SSL *s)) (const SSL *s, + const SSL_CTX *ctx, int op, + int bits, int nid, void *other, + void *ex); +void SSL_set0_security_ex_data(SSL *s, void *ex); +__owur void *SSL_get0_security_ex_data(const SSL *s); + +void SSL_CTX_set_security_level(SSL_CTX *ctx, int level); +__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx); +void SSL_CTX_set_security_callback(SSL_CTX *ctx, + int (*cb) (const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx)) (const SSL *s, + const SSL_CTX *ctx, + int op, int bits, + int nid, + void *other, + void *ex); +void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex); +__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx); + +/* OPENSSL_INIT flag 0x010000 reserved for internal use */ +# define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L +# define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L + +# define OPENSSL_INIT_SSL_DEFAULT \ + (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS) + +int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); + +# ifndef OPENSSL_NO_UNIT_TEST +__owur const struct openssl_ssl_test_functions *SSL_test_functions(void); +# endif + +__owur int SSL_free_buffers(SSL *ssl); +__owur int SSL_alloc_buffers(SSL *ssl); + +/* Status codes passed to the decrypt session ticket callback. Some of these + * are for internal use only and are never passed to the callback. */ +typedef int SSL_TICKET_STATUS; + +/* Support for ticket appdata */ +/* fatal error, malloc failure */ +# define SSL_TICKET_FATAL_ERR_MALLOC 0 +/* fatal error, either from parsing or decrypting the ticket */ +# define SSL_TICKET_FATAL_ERR_OTHER 1 +/* No ticket present */ +# define SSL_TICKET_NONE 2 +/* Empty ticket present */ +# define SSL_TICKET_EMPTY 3 +/* the ticket couldn't be decrypted */ +# define SSL_TICKET_NO_DECRYPT 4 +/* a ticket was successfully decrypted */ +# define SSL_TICKET_SUCCESS 5 +/* same as above but the ticket needs to be renewed */ +# define SSL_TICKET_SUCCESS_RENEW 6 + +/* Return codes for the decrypt session ticket callback */ +typedef int SSL_TICKET_RETURN; + +/* An error occurred */ +#define SSL_TICKET_RETURN_ABORT 0 +/* Do not use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE 1 +/* Do not use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE_RENEW 2 +/* Use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE 3 +/* Use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE_RENEW 4 + +typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg); +typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss, + const unsigned char *keyname, + size_t keyname_length, + SSL_TICKET_STATUS status, + void *arg); +int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, + SSL_CTX_generate_session_ticket_fn gen_cb, + SSL_CTX_decrypt_session_ticket_fn dec_cb, + void *arg); +int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len); +int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); + +extern const char SSL_version_str[]; + +typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); + +void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); + + +typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/ssl2.h b/openSSL/lin32/include/openssl/ssl2.h new file mode 100644 index 0000000..5321bd2 --- /dev/null +++ b/openSSL/lin32/include/openssl/ssl2.h @@ -0,0 +1,24 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL2_H +# define HEADER_SSL2_H + +#ifdef __cplusplus +extern "C" { +#endif + +# define SSL2_VERSION 0x0002 + +# define SSL2_MT_CLIENT_HELLO 1 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin32/include/openssl/ssl3.h b/openSSL/lin32/include/openssl/ssl3.h new file mode 100644 index 0000000..07effba --- /dev/null +++ b/openSSL/lin32/include/openssl/ssl3.h @@ -0,0 +1,342 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL3_H +# define HEADER_SSL3_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Signalling cipher suite value from RFC 5746 + * (TLS_EMPTY_RENEGOTIATION_INFO_SCSV) + */ +# define SSL3_CK_SCSV 0x030000FF + +/* + * Signalling cipher suite value from draft-ietf-tls-downgrade-scsv-00 + * (TLS_FALLBACK_SCSV) + */ +# define SSL3_CK_FALLBACK_SCSV 0x03005600 + +# define SSL3_CK_RSA_NULL_MD5 0x03000001 +# define SSL3_CK_RSA_NULL_SHA 0x03000002 +# define SSL3_CK_RSA_RC4_40_MD5 0x03000003 +# define SSL3_CK_RSA_RC4_128_MD5 0x03000004 +# define SSL3_CK_RSA_RC4_128_SHA 0x03000005 +# define SSL3_CK_RSA_RC2_40_MD5 0x03000006 +# define SSL3_CK_RSA_IDEA_128_SHA 0x03000007 +# define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008 +# define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009 +# define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A + +# define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B +# define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C +# define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D +# define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E +# define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F +# define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010 + +# define SSL3_CK_DHE_DSS_DES_40_CBC_SHA 0x03000011 +# define SSL3_CK_EDH_DSS_DES_40_CBC_SHA SSL3_CK_DHE_DSS_DES_40_CBC_SHA +# define SSL3_CK_DHE_DSS_DES_64_CBC_SHA 0x03000012 +# define SSL3_CK_EDH_DSS_DES_64_CBC_SHA SSL3_CK_DHE_DSS_DES_64_CBC_SHA +# define SSL3_CK_DHE_DSS_DES_192_CBC3_SHA 0x03000013 +# define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA SSL3_CK_DHE_DSS_DES_192_CBC3_SHA +# define SSL3_CK_DHE_RSA_DES_40_CBC_SHA 0x03000014 +# define SSL3_CK_EDH_RSA_DES_40_CBC_SHA SSL3_CK_DHE_RSA_DES_40_CBC_SHA +# define SSL3_CK_DHE_RSA_DES_64_CBC_SHA 0x03000015 +# define SSL3_CK_EDH_RSA_DES_64_CBC_SHA SSL3_CK_DHE_RSA_DES_64_CBC_SHA +# define SSL3_CK_DHE_RSA_DES_192_CBC3_SHA 0x03000016 +# define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA SSL3_CK_DHE_RSA_DES_192_CBC3_SHA + +# define SSL3_CK_ADH_RC4_40_MD5 0x03000017 +# define SSL3_CK_ADH_RC4_128_MD5 0x03000018 +# define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019 +# define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A +# define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +# define SSL3_RFC_RSA_NULL_MD5 "TLS_RSA_WITH_NULL_MD5" +# define SSL3_RFC_RSA_NULL_SHA "TLS_RSA_WITH_NULL_SHA" +# define SSL3_RFC_RSA_DES_192_CBC3_SHA "TLS_RSA_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_ADH_DES_192_CBC_SHA "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_RSA_IDEA_128_SHA "TLS_RSA_WITH_IDEA_CBC_SHA" +# define SSL3_RFC_RSA_RC4_128_MD5 "TLS_RSA_WITH_RC4_128_MD5" +# define SSL3_RFC_RSA_RC4_128_SHA "TLS_RSA_WITH_RC4_128_SHA" +# define SSL3_RFC_ADH_RC4_128_MD5 "TLS_DH_anon_WITH_RC4_128_MD5" + +# define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5" +# define SSL3_TXT_RSA_NULL_SHA "NULL-SHA" +# define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5" +# define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5" +# define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA" +# define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5" +# define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA" +# define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA" +# define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA" +# define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA" + +# define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA" +# define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA" +# define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA" +# define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA" +# define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA" +# define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA" + +# define SSL3_TXT_DHE_DSS_DES_40_CBC_SHA "EXP-DHE-DSS-DES-CBC-SHA" +# define SSL3_TXT_DHE_DSS_DES_64_CBC_SHA "DHE-DSS-DES-CBC-SHA" +# define SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA "DHE-DSS-DES-CBC3-SHA" +# define SSL3_TXT_DHE_RSA_DES_40_CBC_SHA "EXP-DHE-RSA-DES-CBC-SHA" +# define SSL3_TXT_DHE_RSA_DES_64_CBC_SHA "DHE-RSA-DES-CBC-SHA" +# define SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA "DHE-RSA-DES-CBC3-SHA" + +/* + * This next block of six "EDH" labels is for backward compatibility with + * older versions of OpenSSL. New code should use the six "DHE" labels above + * instead: + */ +# define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA" +# define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA" +# define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA" +# define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA" +# define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA" +# define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA" + +# define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5" +# define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5" +# define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA" +# define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA" +# define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" + +# define SSL3_SSL_SESSION_ID_LENGTH 32 +# define SSL3_MAX_SSL_SESSION_ID_LENGTH 32 + +# define SSL3_MASTER_SECRET_SIZE 48 +# define SSL3_RANDOM_SIZE 32 +# define SSL3_SESSION_ID_SIZE 32 +# define SSL3_RT_HEADER_LENGTH 5 + +# define SSL3_HM_HEADER_LENGTH 4 + +# ifndef SSL3_ALIGN_PAYLOAD + /* + * Some will argue that this increases memory footprint, but it's not + * actually true. Point is that malloc has to return at least 64-bit aligned + * pointers, meaning that allocating 5 bytes wastes 3 bytes in either case. + * Suggested pre-gaping simply moves these wasted bytes from the end of + * allocated region to its front, but makes data payload aligned, which + * improves performance:-) + */ +# define SSL3_ALIGN_PAYLOAD 8 +# else +# if (SSL3_ALIGN_PAYLOAD&(SSL3_ALIGN_PAYLOAD-1))!=0 +# error "insane SSL3_ALIGN_PAYLOAD" +# undef SSL3_ALIGN_PAYLOAD +# endif +# endif + +/* + * This is the maximum MAC (digest) size used by the SSL library. Currently + * maximum of 20 is used by SHA1, but we reserve for future extension for + * 512-bit hashes. + */ + +# define SSL3_RT_MAX_MD_SIZE 64 + +/* + * Maximum block size used in all ciphersuites. Currently 16 for AES. + */ + +# define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16 + +# define SSL3_RT_MAX_EXTRA (16384) + +/* Maximum plaintext length: defined by SSL/TLS standards */ +# define SSL3_RT_MAX_PLAIN_LENGTH 16384 +/* Maximum compression overhead: defined by SSL/TLS standards */ +# define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024 + +/* + * The standards give a maximum encryption overhead of 1024 bytes. In + * practice the value is lower than this. The overhead is the maximum number + * of padding bytes (256) plus the mac size. + */ +# define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE) +# define SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD 256 + +/* + * OpenSSL currently only uses a padding length of at most one block so the + * send overhead is smaller. + */ + +# define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \ + (SSL_RT_MAX_CIPHER_BLOCK_SIZE + SSL3_RT_MAX_MD_SIZE) + +/* If compression isn't used don't include the compression overhead */ + +# ifdef OPENSSL_NO_COMP +# define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH +# else +# define SSL3_RT_MAX_COMPRESSED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH+SSL3_RT_MAX_COMPRESSED_OVERHEAD) +# endif +# define SSL3_RT_MAX_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_ENCRYPTED_OVERHEAD+SSL3_RT_MAX_COMPRESSED_LENGTH) +# define SSL3_RT_MAX_TLS13_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD) +# define SSL3_RT_MAX_PACKET_SIZE \ + (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH) + +# define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54" +# define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52" + +# define SSL3_VERSION 0x0300 +# define SSL3_VERSION_MAJOR 0x03 +# define SSL3_VERSION_MINOR 0x00 + +# define SSL3_RT_CHANGE_CIPHER_SPEC 20 +# define SSL3_RT_ALERT 21 +# define SSL3_RT_HANDSHAKE 22 +# define SSL3_RT_APPLICATION_DATA 23 +# define DTLS1_RT_HEARTBEAT 24 + +/* Pseudo content types to indicate additional parameters */ +# define TLS1_RT_CRYPTO 0x1000 +# define TLS1_RT_CRYPTO_PREMASTER (TLS1_RT_CRYPTO | 0x1) +# define TLS1_RT_CRYPTO_CLIENT_RANDOM (TLS1_RT_CRYPTO | 0x2) +# define TLS1_RT_CRYPTO_SERVER_RANDOM (TLS1_RT_CRYPTO | 0x3) +# define TLS1_RT_CRYPTO_MASTER (TLS1_RT_CRYPTO | 0x4) + +# define TLS1_RT_CRYPTO_READ 0x0000 +# define TLS1_RT_CRYPTO_WRITE 0x0100 +# define TLS1_RT_CRYPTO_MAC (TLS1_RT_CRYPTO | 0x5) +# define TLS1_RT_CRYPTO_KEY (TLS1_RT_CRYPTO | 0x6) +# define TLS1_RT_CRYPTO_IV (TLS1_RT_CRYPTO | 0x7) +# define TLS1_RT_CRYPTO_FIXED_IV (TLS1_RT_CRYPTO | 0x8) + +/* Pseudo content types for SSL/TLS header info */ +# define SSL3_RT_HEADER 0x100 +# define SSL3_RT_INNER_CONTENT_TYPE 0x101 + +# define SSL3_AL_WARNING 1 +# define SSL3_AL_FATAL 2 + +# define SSL3_AD_CLOSE_NOTIFY 0 +# define SSL3_AD_UNEXPECTED_MESSAGE 10/* fatal */ +# define SSL3_AD_BAD_RECORD_MAC 20/* fatal */ +# define SSL3_AD_DECOMPRESSION_FAILURE 30/* fatal */ +# define SSL3_AD_HANDSHAKE_FAILURE 40/* fatal */ +# define SSL3_AD_NO_CERTIFICATE 41 +# define SSL3_AD_BAD_CERTIFICATE 42 +# define SSL3_AD_UNSUPPORTED_CERTIFICATE 43 +# define SSL3_AD_CERTIFICATE_REVOKED 44 +# define SSL3_AD_CERTIFICATE_EXPIRED 45 +# define SSL3_AD_CERTIFICATE_UNKNOWN 46 +# define SSL3_AD_ILLEGAL_PARAMETER 47/* fatal */ + +# define TLS1_HB_REQUEST 1 +# define TLS1_HB_RESPONSE 2 + + +# define SSL3_CT_RSA_SIGN 1 +# define SSL3_CT_DSS_SIGN 2 +# define SSL3_CT_RSA_FIXED_DH 3 +# define SSL3_CT_DSS_FIXED_DH 4 +# define SSL3_CT_RSA_EPHEMERAL_DH 5 +# define SSL3_CT_DSS_EPHEMERAL_DH 6 +# define SSL3_CT_FORTEZZA_DMS 20 +/* + * SSL3_CT_NUMBER is used to size arrays and it must be large enough to + * contain all of the cert types defined for *either* SSLv3 and TLSv1. + */ +# define SSL3_CT_NUMBER 10 + +# if defined(TLS_CT_NUMBER) +# if TLS_CT_NUMBER != SSL3_CT_NUMBER +# error "SSL/TLS CT_NUMBER values do not match" +# endif +# endif + +/* No longer used as of OpenSSL 1.1.1 */ +# define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 + +/* Removed from OpenSSL 1.1.0 */ +# define TLS1_FLAGS_TLS_PADDING_BUG 0x0 + +# define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 + +/* Set if we encrypt then mac instead of usual mac then encrypt */ +# define TLS1_FLAGS_ENCRYPT_THEN_MAC_READ 0x0100 +# define TLS1_FLAGS_ENCRYPT_THEN_MAC TLS1_FLAGS_ENCRYPT_THEN_MAC_READ + +/* Set if extended master secret extension received from peer */ +# define TLS1_FLAGS_RECEIVED_EXTMS 0x0200 + +# define TLS1_FLAGS_ENCRYPT_THEN_MAC_WRITE 0x0400 + +# define TLS1_FLAGS_STATELESS 0x0800 + +/* Set if extended master secret extension required on renegotiation */ +# define TLS1_FLAGS_REQUIRED_EXTMS 0x1000 + +# define SSL3_MT_HELLO_REQUEST 0 +# define SSL3_MT_CLIENT_HELLO 1 +# define SSL3_MT_SERVER_HELLO 2 +# define SSL3_MT_NEWSESSION_TICKET 4 +# define SSL3_MT_END_OF_EARLY_DATA 5 +# define SSL3_MT_ENCRYPTED_EXTENSIONS 8 +# define SSL3_MT_CERTIFICATE 11 +# define SSL3_MT_SERVER_KEY_EXCHANGE 12 +# define SSL3_MT_CERTIFICATE_REQUEST 13 +# define SSL3_MT_SERVER_DONE 14 +# define SSL3_MT_CERTIFICATE_VERIFY 15 +# define SSL3_MT_CLIENT_KEY_EXCHANGE 16 +# define SSL3_MT_FINISHED 20 +# define SSL3_MT_CERTIFICATE_URL 21 +# define SSL3_MT_CERTIFICATE_STATUS 22 +# define SSL3_MT_SUPPLEMENTAL_DATA 23 +# define SSL3_MT_KEY_UPDATE 24 +# ifndef OPENSSL_NO_NEXTPROTONEG +# define SSL3_MT_NEXT_PROTO 67 +# endif +# define SSL3_MT_MESSAGE_HASH 254 +# define DTLS1_MT_HELLO_VERIFY_REQUEST 3 + +/* Dummy message type for handling CCS like a normal handshake message */ +# define SSL3_MT_CHANGE_CIPHER_SPEC 0x0101 + +# define SSL3_MT_CCS 1 + +/* These are used when changing over to a new cipher */ +# define SSL3_CC_READ 0x001 +# define SSL3_CC_WRITE 0x002 +# define SSL3_CC_CLIENT 0x010 +# define SSL3_CC_SERVER 0x020 +# define SSL3_CC_EARLY 0x040 +# define SSL3_CC_HANDSHAKE 0x080 +# define SSL3_CC_APPLICATION 0x100 +# define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT|SSL3_CC_WRITE) +# define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER|SSL3_CC_READ) +# define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT|SSL3_CC_READ) +# define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER|SSL3_CC_WRITE) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin32/include/openssl/sslerr.h b/openSSL/lin32/include/openssl/sslerr.h new file mode 100644 index 0000000..701d61c --- /dev/null +++ b/openSSL/lin32/include/openssl/sslerr.h @@ -0,0 +1,776 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSLERR_H +# define HEADER_SSLERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_SSL_strings(void); + +/* + * SSL function codes. + */ +# define SSL_F_ADD_CLIENT_KEY_SHARE_EXT 438 +# define SSL_F_ADD_KEY_SHARE 512 +# define SSL_F_BYTES_TO_CIPHER_LIST 519 +# define SSL_F_CHECK_SUITEB_CIPHER_LIST 331 +# define SSL_F_CIPHERSUITE_CB 622 +# define SSL_F_CONSTRUCT_CA_NAMES 552 +# define SSL_F_CONSTRUCT_KEY_EXCHANGE_TBS 553 +# define SSL_F_CONSTRUCT_STATEFUL_TICKET 636 +# define SSL_F_CONSTRUCT_STATELESS_TICKET 637 +# define SSL_F_CREATE_SYNTHETIC_MESSAGE_HASH 539 +# define SSL_F_CREATE_TICKET_PREQUEL 638 +# define SSL_F_CT_MOVE_SCTS 345 +# define SSL_F_CT_STRICT 349 +# define SSL_F_CUSTOM_EXT_ADD 554 +# define SSL_F_CUSTOM_EXT_PARSE 555 +# define SSL_F_D2I_SSL_SESSION 103 +# define SSL_F_DANE_CTX_ENABLE 347 +# define SSL_F_DANE_MTYPE_SET 393 +# define SSL_F_DANE_TLSA_ADD 394 +# define SSL_F_DERIVE_SECRET_KEY_AND_IV 514 +# define SSL_F_DO_DTLS1_WRITE 245 +# define SSL_F_DO_SSL3_WRITE 104 +# define SSL_F_DTLS1_BUFFER_RECORD 247 +# define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 318 +# define SSL_F_DTLS1_HEARTBEAT 305 +# define SSL_F_DTLS1_HM_FRAGMENT_NEW 623 +# define SSL_F_DTLS1_PREPROCESS_FRAGMENT 288 +# define SSL_F_DTLS1_PROCESS_BUFFERED_RECORDS 424 +# define SSL_F_DTLS1_PROCESS_RECORD 257 +# define SSL_F_DTLS1_READ_BYTES 258 +# define SSL_F_DTLS1_READ_FAILED 339 +# define SSL_F_DTLS1_RETRANSMIT_MESSAGE 390 +# define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 268 +# define SSL_F_DTLS1_WRITE_BYTES 545 +# define SSL_F_DTLSV1_LISTEN 350 +# define SSL_F_DTLS_CONSTRUCT_CHANGE_CIPHER_SPEC 371 +# define SSL_F_DTLS_CONSTRUCT_HELLO_VERIFY_REQUEST 385 +# define SSL_F_DTLS_GET_REASSEMBLED_MESSAGE 370 +# define SSL_F_DTLS_PROCESS_HELLO_VERIFY 386 +# define SSL_F_DTLS_RECORD_LAYER_NEW 635 +# define SSL_F_DTLS_WAIT_FOR_DRY 592 +# define SSL_F_EARLY_DATA_COUNT_OK 532 +# define SSL_F_FINAL_EARLY_DATA 556 +# define SSL_F_FINAL_EC_PT_FORMATS 485 +# define SSL_F_FINAL_EMS 486 +# define SSL_F_FINAL_KEY_SHARE 503 +# define SSL_F_FINAL_MAXFRAGMENTLEN 557 +# define SSL_F_FINAL_PSK 639 +# define SSL_F_FINAL_RENEGOTIATE 483 +# define SSL_F_FINAL_SERVER_NAME 558 +# define SSL_F_FINAL_SIG_ALGS 497 +# define SSL_F_GET_CERT_VERIFY_TBS_DATA 588 +# define SSL_F_NSS_KEYLOG_INT 500 +# define SSL_F_OPENSSL_INIT_SSL 342 +# define SSL_F_OSSL_STATEM_CLIENT13_READ_TRANSITION 436 +# define SSL_F_OSSL_STATEM_CLIENT13_WRITE_TRANSITION 598 +# define SSL_F_OSSL_STATEM_CLIENT_CONSTRUCT_MESSAGE 430 +# define SSL_F_OSSL_STATEM_CLIENT_POST_PROCESS_MESSAGE 593 +# define SSL_F_OSSL_STATEM_CLIENT_PROCESS_MESSAGE 594 +# define SSL_F_OSSL_STATEM_CLIENT_READ_TRANSITION 417 +# define SSL_F_OSSL_STATEM_CLIENT_WRITE_TRANSITION 599 +# define SSL_F_OSSL_STATEM_SERVER13_READ_TRANSITION 437 +# define SSL_F_OSSL_STATEM_SERVER13_WRITE_TRANSITION 600 +# define SSL_F_OSSL_STATEM_SERVER_CONSTRUCT_MESSAGE 431 +# define SSL_F_OSSL_STATEM_SERVER_POST_PROCESS_MESSAGE 601 +# define SSL_F_OSSL_STATEM_SERVER_POST_WORK 602 +# define SSL_F_OSSL_STATEM_SERVER_PRE_WORK 640 +# define SSL_F_OSSL_STATEM_SERVER_PROCESS_MESSAGE 603 +# define SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION 418 +# define SSL_F_OSSL_STATEM_SERVER_WRITE_TRANSITION 604 +# define SSL_F_PARSE_CA_NAMES 541 +# define SSL_F_PITEM_NEW 624 +# define SSL_F_PQUEUE_NEW 625 +# define SSL_F_PROCESS_KEY_SHARE_EXT 439 +# define SSL_F_READ_STATE_MACHINE 352 +# define SSL_F_SET_CLIENT_CIPHERSUITE 540 +# define SSL_F_SRP_GENERATE_CLIENT_MASTER_SECRET 595 +# define SSL_F_SRP_GENERATE_SERVER_MASTER_SECRET 589 +# define SSL_F_SRP_VERIFY_SERVER_PARAM 596 +# define SSL_F_SSL3_CHANGE_CIPHER_STATE 129 +# define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130 +# define SSL_F_SSL3_CTRL 213 +# define SSL_F_SSL3_CTX_CTRL 133 +# define SSL_F_SSL3_DIGEST_CACHED_RECORDS 293 +# define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 292 +# define SSL_F_SSL3_ENC 608 +# define SSL_F_SSL3_FINAL_FINISH_MAC 285 +# define SSL_F_SSL3_FINISH_MAC 587 +# define SSL_F_SSL3_GENERATE_KEY_BLOCK 238 +# define SSL_F_SSL3_GENERATE_MASTER_SECRET 388 +# define SSL_F_SSL3_GET_RECORD 143 +# define SSL_F_SSL3_INIT_FINISHED_MAC 397 +# define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 +# define SSL_F_SSL3_READ_BYTES 148 +# define SSL_F_SSL3_READ_N 149 +# define SSL_F_SSL3_SETUP_KEY_BLOCK 157 +# define SSL_F_SSL3_SETUP_READ_BUFFER 156 +# define SSL_F_SSL3_SETUP_WRITE_BUFFER 291 +# define SSL_F_SSL3_WRITE_BYTES 158 +# define SSL_F_SSL3_WRITE_PENDING 159 +# define SSL_F_SSL_ADD_CERT_CHAIN 316 +# define SSL_F_SSL_ADD_CERT_TO_BUF 319 +# define SSL_F_SSL_ADD_CERT_TO_WPACKET 493 +# define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 298 +# define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 277 +# define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 307 +# define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 215 +# define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 216 +# define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 299 +# define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 278 +# define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 308 +# define SSL_F_SSL_BAD_METHOD 160 +# define SSL_F_SSL_BUILD_CERT_CHAIN 332 +# define SSL_F_SSL_BYTES_TO_CIPHER_LIST 161 +# define SSL_F_SSL_CACHE_CIPHERLIST 520 +# define SSL_F_SSL_CERT_ADD0_CHAIN_CERT 346 +# define SSL_F_SSL_CERT_DUP 221 +# define SSL_F_SSL_CERT_NEW 162 +# define SSL_F_SSL_CERT_SET0_CHAIN 340 +# define SSL_F_SSL_CHECK_PRIVATE_KEY 163 +# define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 280 +# define SSL_F_SSL_CHECK_SRP_EXT_CLIENTHELLO 606 +# define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 279 +# define SSL_F_SSL_CHOOSE_CLIENT_VERSION 607 +# define SSL_F_SSL_CIPHER_DESCRIPTION 626 +# define SSL_F_SSL_CIPHER_LIST_TO_BYTES 425 +# define SSL_F_SSL_CIPHER_PROCESS_RULESTR 230 +# define SSL_F_SSL_CIPHER_STRENGTH_SORT 231 +# define SSL_F_SSL_CLEAR 164 +# define SSL_F_SSL_CLIENT_HELLO_GET1_EXTENSIONS_PRESENT 627 +# define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 165 +# define SSL_F_SSL_CONF_CMD 334 +# define SSL_F_SSL_CREATE_CIPHER_LIST 166 +# define SSL_F_SSL_CTRL 232 +# define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168 +# define SSL_F_SSL_CTX_ENABLE_CT 398 +# define SSL_F_SSL_CTX_MAKE_PROFILES 309 +# define SSL_F_SSL_CTX_NEW 169 +# define SSL_F_SSL_CTX_SET_ALPN_PROTOS 343 +# define SSL_F_SSL_CTX_SET_CIPHER_LIST 269 +# define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 290 +# define SSL_F_SSL_CTX_SET_CT_VALIDATION_CALLBACK 396 +# define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219 +# define SSL_F_SSL_CTX_SET_SSL_VERSION 170 +# define SSL_F_SSL_CTX_SET_TLSEXT_MAX_FRAGMENT_LENGTH 551 +# define SSL_F_SSL_CTX_USE_CERTIFICATE 171 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 173 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY 174 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176 +# define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 272 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179 +# define SSL_F_SSL_CTX_USE_SERVERINFO 336 +# define SSL_F_SSL_CTX_USE_SERVERINFO_EX 543 +# define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 337 +# define SSL_F_SSL_DANE_DUP 403 +# define SSL_F_SSL_DANE_ENABLE 395 +# define SSL_F_SSL_DERIVE 590 +# define SSL_F_SSL_DO_CONFIG 391 +# define SSL_F_SSL_DO_HANDSHAKE 180 +# define SSL_F_SSL_DUP_CA_LIST 408 +# define SSL_F_SSL_ENABLE_CT 402 +# define SSL_F_SSL_GENERATE_PKEY_GROUP 559 +# define SSL_F_SSL_GENERATE_SESSION_ID 547 +# define SSL_F_SSL_GET_NEW_SESSION 181 +# define SSL_F_SSL_GET_PREV_SESSION 217 +# define SSL_F_SSL_GET_SERVER_CERT_INDEX 322 +# define SSL_F_SSL_GET_SIGN_PKEY 183 +# define SSL_F_SSL_HANDSHAKE_HASH 560 +# define SSL_F_SSL_INIT_WBIO_BUFFER 184 +# define SSL_F_SSL_KEY_UPDATE 515 +# define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 +# define SSL_F_SSL_LOG_MASTER_SECRET 498 +# define SSL_F_SSL_LOG_RSA_CLIENT_KEY_EXCHANGE 499 +# define SSL_F_SSL_MODULE_INIT 392 +# define SSL_F_SSL_NEW 186 +# define SSL_F_SSL_NEXT_PROTO_VALIDATE 565 +# define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 300 +# define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 302 +# define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 310 +# define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 301 +# define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 303 +# define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 311 +# define SSL_F_SSL_PEEK 270 +# define SSL_F_SSL_PEEK_EX 432 +# define SSL_F_SSL_PEEK_INTERNAL 522 +# define SSL_F_SSL_READ 223 +# define SSL_F_SSL_READ_EARLY_DATA 529 +# define SSL_F_SSL_READ_EX 434 +# define SSL_F_SSL_READ_INTERNAL 523 +# define SSL_F_SSL_RENEGOTIATE 516 +# define SSL_F_SSL_RENEGOTIATE_ABBREVIATED 546 +# define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 320 +# define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 321 +# define SSL_F_SSL_SESSION_DUP 348 +# define SSL_F_SSL_SESSION_NEW 189 +# define SSL_F_SSL_SESSION_PRINT_FP 190 +# define SSL_F_SSL_SESSION_SET1_ID 423 +# define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 312 +# define SSL_F_SSL_SET_ALPN_PROTOS 344 +# define SSL_F_SSL_SET_CERT 191 +# define SSL_F_SSL_SET_CERT_AND_KEY 621 +# define SSL_F_SSL_SET_CIPHER_LIST 271 +# define SSL_F_SSL_SET_CT_VALIDATION_CALLBACK 399 +# define SSL_F_SSL_SET_FD 192 +# define SSL_F_SSL_SET_PKEY 193 +# define SSL_F_SSL_SET_RFD 194 +# define SSL_F_SSL_SET_SESSION 195 +# define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218 +# define SSL_F_SSL_SET_SESSION_TICKET_EXT 294 +# define SSL_F_SSL_SET_TLSEXT_MAX_FRAGMENT_LENGTH 550 +# define SSL_F_SSL_SET_WFD 196 +# define SSL_F_SSL_SHUTDOWN 224 +# define SSL_F_SSL_SRP_CTX_INIT 313 +# define SSL_F_SSL_START_ASYNC_JOB 389 +# define SSL_F_SSL_UNDEFINED_FUNCTION 197 +# define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 244 +# define SSL_F_SSL_USE_CERTIFICATE 198 +# define SSL_F_SSL_USE_CERTIFICATE_ASN1 199 +# define SSL_F_SSL_USE_CERTIFICATE_FILE 200 +# define SSL_F_SSL_USE_PRIVATEKEY 201 +# define SSL_F_SSL_USE_PRIVATEKEY_ASN1 202 +# define SSL_F_SSL_USE_PRIVATEKEY_FILE 203 +# define SSL_F_SSL_USE_PSK_IDENTITY_HINT 273 +# define SSL_F_SSL_USE_RSAPRIVATEKEY 204 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 205 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 206 +# define SSL_F_SSL_VALIDATE_CT 400 +# define SSL_F_SSL_VERIFY_CERT_CHAIN 207 +# define SSL_F_SSL_VERIFY_CLIENT_POST_HANDSHAKE 616 +# define SSL_F_SSL_WRITE 208 +# define SSL_F_SSL_WRITE_EARLY_DATA 526 +# define SSL_F_SSL_WRITE_EARLY_FINISH 527 +# define SSL_F_SSL_WRITE_EX 433 +# define SSL_F_SSL_WRITE_INTERNAL 524 +# define SSL_F_STATE_MACHINE 353 +# define SSL_F_TLS12_CHECK_PEER_SIGALG 333 +# define SSL_F_TLS12_COPY_SIGALGS 533 +# define SSL_F_TLS13_CHANGE_CIPHER_STATE 440 +# define SSL_F_TLS13_ENC 609 +# define SSL_F_TLS13_FINAL_FINISH_MAC 605 +# define SSL_F_TLS13_GENERATE_SECRET 591 +# define SSL_F_TLS13_HKDF_EXPAND 561 +# define SSL_F_TLS13_RESTORE_HANDSHAKE_DIGEST_FOR_PHA 617 +# define SSL_F_TLS13_SAVE_HANDSHAKE_DIGEST_FOR_PHA 618 +# define SSL_F_TLS13_SETUP_KEY_BLOCK 441 +# define SSL_F_TLS1_CHANGE_CIPHER_STATE 209 +# define SSL_F_TLS1_CHECK_DUPLICATE_EXTENSIONS 341 +# define SSL_F_TLS1_ENC 401 +# define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 314 +# define SSL_F_TLS1_GET_CURVELIST 338 +# define SSL_F_TLS1_PRF 284 +# define SSL_F_TLS1_SAVE_U16 628 +# define SSL_F_TLS1_SETUP_KEY_BLOCK 211 +# define SSL_F_TLS1_SET_GROUPS 629 +# define SSL_F_TLS1_SET_RAW_SIGALGS 630 +# define SSL_F_TLS1_SET_SERVER_SIGALGS 335 +# define SSL_F_TLS1_SET_SHARED_SIGALGS 631 +# define SSL_F_TLS1_SET_SIGALGS 632 +# define SSL_F_TLS_CHOOSE_SIGALG 513 +# define SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK 354 +# define SSL_F_TLS_COLLECT_EXTENSIONS 435 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_AUTHORITIES 542 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST 372 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS 429 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS_BODY 494 +# define SSL_F_TLS_CONSTRUCT_CERT_VERIFY 496 +# define SSL_F_TLS_CONSTRUCT_CHANGE_CIPHER_SPEC 427 +# define SSL_F_TLS_CONSTRUCT_CKE_DHE 404 +# define SSL_F_TLS_CONSTRUCT_CKE_ECDHE 405 +# define SSL_F_TLS_CONSTRUCT_CKE_GOST 406 +# define SSL_F_TLS_CONSTRUCT_CKE_PSK_PREAMBLE 407 +# define SSL_F_TLS_CONSTRUCT_CKE_RSA 409 +# define SSL_F_TLS_CONSTRUCT_CKE_SRP 410 +# define SSL_F_TLS_CONSTRUCT_CLIENT_CERTIFICATE 484 +# define SSL_F_TLS_CONSTRUCT_CLIENT_HELLO 487 +# define SSL_F_TLS_CONSTRUCT_CLIENT_KEY_EXCHANGE 488 +# define SSL_F_TLS_CONSTRUCT_CLIENT_VERIFY 489 +# define SSL_F_TLS_CONSTRUCT_CTOS_ALPN 466 +# define SSL_F_TLS_CONSTRUCT_CTOS_CERTIFICATE 355 +# define SSL_F_TLS_CONSTRUCT_CTOS_COOKIE 535 +# define SSL_F_TLS_CONSTRUCT_CTOS_EARLY_DATA 530 +# define SSL_F_TLS_CONSTRUCT_CTOS_EC_PT_FORMATS 467 +# define SSL_F_TLS_CONSTRUCT_CTOS_EMS 468 +# define SSL_F_TLS_CONSTRUCT_CTOS_ETM 469 +# define SSL_F_TLS_CONSTRUCT_CTOS_HELLO 356 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_EXCHANGE 357 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_SHARE 470 +# define SSL_F_TLS_CONSTRUCT_CTOS_MAXFRAGMENTLEN 549 +# define SSL_F_TLS_CONSTRUCT_CTOS_NPN 471 +# define SSL_F_TLS_CONSTRUCT_CTOS_PADDING 472 +# define SSL_F_TLS_CONSTRUCT_CTOS_POST_HANDSHAKE_AUTH 619 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK 501 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK_KEX_MODES 509 +# define SSL_F_TLS_CONSTRUCT_CTOS_RENEGOTIATE 473 +# define SSL_F_TLS_CONSTRUCT_CTOS_SCT 474 +# define SSL_F_TLS_CONSTRUCT_CTOS_SERVER_NAME 475 +# define SSL_F_TLS_CONSTRUCT_CTOS_SESSION_TICKET 476 +# define SSL_F_TLS_CONSTRUCT_CTOS_SIG_ALGS 477 +# define SSL_F_TLS_CONSTRUCT_CTOS_SRP 478 +# define SSL_F_TLS_CONSTRUCT_CTOS_STATUS_REQUEST 479 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_GROUPS 480 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_VERSIONS 481 +# define SSL_F_TLS_CONSTRUCT_CTOS_USE_SRTP 482 +# define SSL_F_TLS_CONSTRUCT_CTOS_VERIFY 358 +# define SSL_F_TLS_CONSTRUCT_ENCRYPTED_EXTENSIONS 443 +# define SSL_F_TLS_CONSTRUCT_END_OF_EARLY_DATA 536 +# define SSL_F_TLS_CONSTRUCT_EXTENSIONS 447 +# define SSL_F_TLS_CONSTRUCT_FINISHED 359 +# define SSL_F_TLS_CONSTRUCT_HELLO_REQUEST 373 +# define SSL_F_TLS_CONSTRUCT_HELLO_RETRY_REQUEST 510 +# define SSL_F_TLS_CONSTRUCT_KEY_UPDATE 517 +# define SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET 428 +# define SSL_F_TLS_CONSTRUCT_NEXT_PROTO 426 +# define SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE 490 +# define SSL_F_TLS_CONSTRUCT_SERVER_HELLO 491 +# define SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE 492 +# define SSL_F_TLS_CONSTRUCT_STOC_ALPN 451 +# define SSL_F_TLS_CONSTRUCT_STOC_CERTIFICATE 374 +# define SSL_F_TLS_CONSTRUCT_STOC_COOKIE 613 +# define SSL_F_TLS_CONSTRUCT_STOC_CRYPTOPRO_BUG 452 +# define SSL_F_TLS_CONSTRUCT_STOC_DONE 375 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA 531 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA_INFO 525 +# define SSL_F_TLS_CONSTRUCT_STOC_EC_PT_FORMATS 453 +# define SSL_F_TLS_CONSTRUCT_STOC_EMS 454 +# define SSL_F_TLS_CONSTRUCT_STOC_ETM 455 +# define SSL_F_TLS_CONSTRUCT_STOC_HELLO 376 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_EXCHANGE 377 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_SHARE 456 +# define SSL_F_TLS_CONSTRUCT_STOC_MAXFRAGMENTLEN 548 +# define SSL_F_TLS_CONSTRUCT_STOC_NEXT_PROTO_NEG 457 +# define SSL_F_TLS_CONSTRUCT_STOC_PSK 504 +# define SSL_F_TLS_CONSTRUCT_STOC_RENEGOTIATE 458 +# define SSL_F_TLS_CONSTRUCT_STOC_SERVER_NAME 459 +# define SSL_F_TLS_CONSTRUCT_STOC_SESSION_TICKET 460 +# define SSL_F_TLS_CONSTRUCT_STOC_STATUS_REQUEST 461 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_GROUPS 544 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_VERSIONS 611 +# define SSL_F_TLS_CONSTRUCT_STOC_USE_SRTP 462 +# define SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO 521 +# define SSL_F_TLS_FINISH_HANDSHAKE 597 +# define SSL_F_TLS_GET_MESSAGE_BODY 351 +# define SSL_F_TLS_GET_MESSAGE_HEADER 387 +# define SSL_F_TLS_HANDLE_ALPN 562 +# define SSL_F_TLS_HANDLE_STATUS_REQUEST 563 +# define SSL_F_TLS_PARSE_CERTIFICATE_AUTHORITIES 566 +# define SSL_F_TLS_PARSE_CLIENTHELLO_TLSEXT 449 +# define SSL_F_TLS_PARSE_CTOS_ALPN 567 +# define SSL_F_TLS_PARSE_CTOS_COOKIE 614 +# define SSL_F_TLS_PARSE_CTOS_EARLY_DATA 568 +# define SSL_F_TLS_PARSE_CTOS_EC_PT_FORMATS 569 +# define SSL_F_TLS_PARSE_CTOS_EMS 570 +# define SSL_F_TLS_PARSE_CTOS_KEY_SHARE 463 +# define SSL_F_TLS_PARSE_CTOS_MAXFRAGMENTLEN 571 +# define SSL_F_TLS_PARSE_CTOS_POST_HANDSHAKE_AUTH 620 +# define SSL_F_TLS_PARSE_CTOS_PSK 505 +# define SSL_F_TLS_PARSE_CTOS_PSK_KEX_MODES 572 +# define SSL_F_TLS_PARSE_CTOS_RENEGOTIATE 464 +# define SSL_F_TLS_PARSE_CTOS_SERVER_NAME 573 +# define SSL_F_TLS_PARSE_CTOS_SESSION_TICKET 574 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS 575 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS_CERT 615 +# define SSL_F_TLS_PARSE_CTOS_SRP 576 +# define SSL_F_TLS_PARSE_CTOS_STATUS_REQUEST 577 +# define SSL_F_TLS_PARSE_CTOS_SUPPORTED_GROUPS 578 +# define SSL_F_TLS_PARSE_CTOS_USE_SRTP 465 +# define SSL_F_TLS_PARSE_STOC_ALPN 579 +# define SSL_F_TLS_PARSE_STOC_COOKIE 534 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA 538 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA_INFO 528 +# define SSL_F_TLS_PARSE_STOC_EC_PT_FORMATS 580 +# define SSL_F_TLS_PARSE_STOC_KEY_SHARE 445 +# define SSL_F_TLS_PARSE_STOC_MAXFRAGMENTLEN 581 +# define SSL_F_TLS_PARSE_STOC_NPN 582 +# define SSL_F_TLS_PARSE_STOC_PSK 502 +# define SSL_F_TLS_PARSE_STOC_RENEGOTIATE 448 +# define SSL_F_TLS_PARSE_STOC_SCT 564 +# define SSL_F_TLS_PARSE_STOC_SERVER_NAME 583 +# define SSL_F_TLS_PARSE_STOC_SESSION_TICKET 584 +# define SSL_F_TLS_PARSE_STOC_STATUS_REQUEST 585 +# define SSL_F_TLS_PARSE_STOC_SUPPORTED_VERSIONS 612 +# define SSL_F_TLS_PARSE_STOC_USE_SRTP 446 +# define SSL_F_TLS_POST_PROCESS_CLIENT_HELLO 378 +# define SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE 384 +# define SSL_F_TLS_PREPARE_CLIENT_CERTIFICATE 360 +# define SSL_F_TLS_PROCESS_AS_HELLO_RETRY_REQUEST 610 +# define SSL_F_TLS_PROCESS_CERTIFICATE_REQUEST 361 +# define SSL_F_TLS_PROCESS_CERT_STATUS 362 +# define SSL_F_TLS_PROCESS_CERT_STATUS_BODY 495 +# define SSL_F_TLS_PROCESS_CERT_VERIFY 379 +# define SSL_F_TLS_PROCESS_CHANGE_CIPHER_SPEC 363 +# define SSL_F_TLS_PROCESS_CKE_DHE 411 +# define SSL_F_TLS_PROCESS_CKE_ECDHE 412 +# define SSL_F_TLS_PROCESS_CKE_GOST 413 +# define SSL_F_TLS_PROCESS_CKE_PSK_PREAMBLE 414 +# define SSL_F_TLS_PROCESS_CKE_RSA 415 +# define SSL_F_TLS_PROCESS_CKE_SRP 416 +# define SSL_F_TLS_PROCESS_CLIENT_CERTIFICATE 380 +# define SSL_F_TLS_PROCESS_CLIENT_HELLO 381 +# define SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE 382 +# define SSL_F_TLS_PROCESS_ENCRYPTED_EXTENSIONS 444 +# define SSL_F_TLS_PROCESS_END_OF_EARLY_DATA 537 +# define SSL_F_TLS_PROCESS_FINISHED 364 +# define SSL_F_TLS_PROCESS_HELLO_REQ 507 +# define SSL_F_TLS_PROCESS_HELLO_RETRY_REQUEST 511 +# define SSL_F_TLS_PROCESS_INITIAL_SERVER_FLIGHT 442 +# define SSL_F_TLS_PROCESS_KEY_EXCHANGE 365 +# define SSL_F_TLS_PROCESS_KEY_UPDATE 518 +# define SSL_F_TLS_PROCESS_NEW_SESSION_TICKET 366 +# define SSL_F_TLS_PROCESS_NEXT_PROTO 383 +# define SSL_F_TLS_PROCESS_SERVER_CERTIFICATE 367 +# define SSL_F_TLS_PROCESS_SERVER_DONE 368 +# define SSL_F_TLS_PROCESS_SERVER_HELLO 369 +# define SSL_F_TLS_PROCESS_SKE_DHE 419 +# define SSL_F_TLS_PROCESS_SKE_ECDHE 420 +# define SSL_F_TLS_PROCESS_SKE_PSK_PREAMBLE 421 +# define SSL_F_TLS_PROCESS_SKE_SRP 422 +# define SSL_F_TLS_PSK_DO_BINDER 506 +# define SSL_F_TLS_SCAN_CLIENTHELLO_TLSEXT 450 +# define SSL_F_TLS_SETUP_HANDSHAKE 508 +# define SSL_F_USE_CERTIFICATE_CHAIN_FILE 220 +# define SSL_F_WPACKET_INTERN_INIT_LEN 633 +# define SSL_F_WPACKET_START_SUB_PACKET_LEN__ 634 +# define SSL_F_WRITE_STATE_MACHINE 586 + +/* + * SSL reason codes. + */ +# define SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY 291 +# define SSL_R_APP_DATA_IN_HANDSHAKE 100 +# define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 +# define SSL_R_AT_LEAST_TLS_1_0_NEEDED_IN_FIPS_MODE 143 +# define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE 158 +# define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +# define SSL_R_BAD_CIPHER 186 +# define SSL_R_BAD_DATA 390 +# define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 +# define SSL_R_BAD_DECOMPRESSION 107 +# define SSL_R_BAD_DH_VALUE 102 +# define SSL_R_BAD_DIGEST_LENGTH 111 +# define SSL_R_BAD_EARLY_DATA 233 +# define SSL_R_BAD_ECC_CERT 304 +# define SSL_R_BAD_ECPOINT 306 +# define SSL_R_BAD_EXTENSION 110 +# define SSL_R_BAD_HANDSHAKE_LENGTH 332 +# define SSL_R_BAD_HANDSHAKE_STATE 236 +# define SSL_R_BAD_HELLO_REQUEST 105 +# define SSL_R_BAD_HRR_VERSION 263 +# define SSL_R_BAD_KEY_SHARE 108 +# define SSL_R_BAD_KEY_UPDATE 122 +# define SSL_R_BAD_LEGACY_VERSION 292 +# define SSL_R_BAD_LENGTH 271 +# define SSL_R_BAD_PACKET 240 +# define SSL_R_BAD_PACKET_LENGTH 115 +# define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +# define SSL_R_BAD_PSK 219 +# define SSL_R_BAD_PSK_IDENTITY 114 +# define SSL_R_BAD_RECORD_TYPE 443 +# define SSL_R_BAD_RSA_ENCRYPT 119 +# define SSL_R_BAD_SIGNATURE 123 +# define SSL_R_BAD_SRP_A_LENGTH 347 +# define SSL_R_BAD_SRP_PARAMETERS 371 +# define SSL_R_BAD_SRTP_MKI_VALUE 352 +# define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 +# define SSL_R_BAD_SSL_FILETYPE 124 +# define SSL_R_BAD_VALUE 384 +# define SSL_R_BAD_WRITE_RETRY 127 +# define SSL_R_BINDER_DOES_NOT_VERIFY 253 +# define SSL_R_BIO_NOT_SET 128 +# define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 +# define SSL_R_BN_LIB 130 +# define SSL_R_CALLBACK_FAILED 234 +# define SSL_R_CANNOT_CHANGE_CIPHER 109 +# define SSL_R_CA_DN_LENGTH_MISMATCH 131 +# define SSL_R_CA_KEY_TOO_SMALL 397 +# define SSL_R_CA_MD_TOO_WEAK 398 +# define SSL_R_CCS_RECEIVED_EARLY 133 +# define SSL_R_CERTIFICATE_VERIFY_FAILED 134 +# define SSL_R_CERT_CB_ERROR 377 +# define SSL_R_CERT_LENGTH_MISMATCH 135 +# define SSL_R_CIPHERSUITE_DIGEST_HAS_CHANGED 218 +# define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 +# define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138 +# define SSL_R_CLIENTHELLO_TLSEXT 226 +# define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 +# define SSL_R_COMPRESSION_DISABLED 343 +# define SSL_R_COMPRESSION_FAILURE 141 +# define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 +# define SSL_R_COMPRESSION_LIBRARY_ERROR 142 +# define SSL_R_CONNECTION_TYPE_NOT_SET 144 +# define SSL_R_CONTEXT_NOT_DANE_ENABLED 167 +# define SSL_R_COOKIE_GEN_CALLBACK_FAILURE 400 +# define SSL_R_COOKIE_MISMATCH 308 +# define SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED 206 +# define SSL_R_DANE_ALREADY_ENABLED 172 +# define SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL 173 +# define SSL_R_DANE_NOT_ENABLED 175 +# define SSL_R_DANE_TLSA_BAD_CERTIFICATE 180 +# define SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE 184 +# define SSL_R_DANE_TLSA_BAD_DATA_LENGTH 189 +# define SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH 192 +# define SSL_R_DANE_TLSA_BAD_MATCHING_TYPE 200 +# define SSL_R_DANE_TLSA_BAD_PUBLIC_KEY 201 +# define SSL_R_DANE_TLSA_BAD_SELECTOR 202 +# define SSL_R_DANE_TLSA_NULL_DATA 203 +# define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 +# define SSL_R_DATA_LENGTH_TOO_LONG 146 +# define SSL_R_DECRYPTION_FAILED 147 +# define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 +# define SSL_R_DH_KEY_TOO_SMALL 394 +# define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 +# define SSL_R_DIGEST_CHECK_FAILED 149 +# define SSL_R_DTLS_MESSAGE_TOO_BIG 334 +# define SSL_R_DUPLICATE_COMPRESSION_ID 309 +# define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 +# define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 +# define SSL_R_EE_KEY_TOO_SMALL 399 +# define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 +# define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 +# define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 +# define SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN 204 +# define SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE 194 +# define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 +# define SSL_R_EXTENSION_NOT_RECEIVED 279 +# define SSL_R_EXTRA_DATA_IN_MESSAGE 153 +# define SSL_R_EXT_LENGTH_MISMATCH 163 +# define SSL_R_FAILED_TO_INIT_ASYNC 405 +# define SSL_R_FRAGMENTED_CLIENT_HELLO 401 +# define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 +# define SSL_R_HTTPS_PROXY_REQUEST 155 +# define SSL_R_HTTP_REQUEST 156 +# define SSL_R_ILLEGAL_POINT_COMPRESSION 162 +# define SSL_R_ILLEGAL_SUITEB_DIGEST 380 +# define SSL_R_INAPPROPRIATE_FALLBACK 373 +# define SSL_R_INCONSISTENT_COMPRESSION 340 +# define SSL_R_INCONSISTENT_EARLY_DATA_ALPN 222 +# define SSL_R_INCONSISTENT_EARLY_DATA_SNI 231 +# define SSL_R_INCONSISTENT_EXTMS 104 +# define SSL_R_INSUFFICIENT_SECURITY 241 +# define SSL_R_INVALID_ALERT 205 +# define SSL_R_INVALID_CCS_MESSAGE 260 +# define SSL_R_INVALID_CERTIFICATE_OR_ALG 238 +# define SSL_R_INVALID_COMMAND 280 +# define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +# define SSL_R_INVALID_CONFIG 283 +# define SSL_R_INVALID_CONFIGURATION_NAME 113 +# define SSL_R_INVALID_CONTEXT 282 +# define SSL_R_INVALID_CT_VALIDATION_TYPE 212 +# define SSL_R_INVALID_KEY_UPDATE_TYPE 120 +# define SSL_R_INVALID_MAX_EARLY_DATA 174 +# define SSL_R_INVALID_NULL_CMD_NAME 385 +# define SSL_R_INVALID_SEQUENCE_NUMBER 402 +# define SSL_R_INVALID_SERVERINFO_DATA 388 +# define SSL_R_INVALID_SESSION_ID 999 +# define SSL_R_INVALID_SRP_USERNAME 357 +# define SSL_R_INVALID_STATUS_RESPONSE 328 +# define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 +# define SSL_R_LENGTH_MISMATCH 159 +# define SSL_R_LENGTH_TOO_LONG 404 +# define SSL_R_LENGTH_TOO_SHORT 160 +# define SSL_R_LIBRARY_BUG 274 +# define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +# define SSL_R_MISSING_DSA_SIGNING_CERT 165 +# define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 +# define SSL_R_MISSING_FATAL 256 +# define SSL_R_MISSING_PARAMETERS 290 +# define SSL_R_MISSING_PSK_KEX_MODES_EXTENSION 310 +# define SSL_R_MISSING_RSA_CERTIFICATE 168 +# define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 +# define SSL_R_MISSING_RSA_SIGNING_CERT 170 +# define SSL_R_MISSING_SIGALGS_EXTENSION 112 +# define SSL_R_MISSING_SIGNING_CERT 221 +# define SSL_R_MISSING_SRP_PARAM 358 +# define SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION 209 +# define SSL_R_MISSING_TMP_DH_KEY 171 +# define SSL_R_MISSING_TMP_ECDH_KEY 311 +# define SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA 293 +# define SSL_R_NOT_ON_RECORD_BOUNDARY 182 +# define SSL_R_NOT_REPLACING_CERTIFICATE 289 +# define SSL_R_NOT_SERVER 284 +# define SSL_R_NO_APPLICATION_PROTOCOL 235 +# define SSL_R_NO_CERTIFICATES_RETURNED 176 +# define SSL_R_NO_CERTIFICATE_ASSIGNED 177 +# define SSL_R_NO_CERTIFICATE_SET 179 +# define SSL_R_NO_CHANGE_FOLLOWING_HRR 214 +# define SSL_R_NO_CIPHERS_AVAILABLE 181 +# define SSL_R_NO_CIPHERS_SPECIFIED 183 +# define SSL_R_NO_CIPHER_MATCH 185 +# define SSL_R_NO_CLIENT_CERT_METHOD 331 +# define SSL_R_NO_COMPRESSION_SPECIFIED 187 +# define SSL_R_NO_COOKIE_CALLBACK_SET 287 +# define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 +# define SSL_R_NO_METHOD_SPECIFIED 188 +# define SSL_R_NO_PEM_EXTENSIONS 389 +# define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 +# define SSL_R_NO_PROTOCOLS_AVAILABLE 191 +# define SSL_R_NO_RENEGOTIATION 339 +# define SSL_R_NO_REQUIRED_DIGEST 324 +# define SSL_R_NO_SHARED_CIPHER 193 +# define SSL_R_NO_SHARED_GROUPS 410 +# define SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS 376 +# define SSL_R_NO_SRTP_PROFILES 359 +# define SSL_R_NO_SUITABLE_KEY_SHARE 101 +# define SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM 118 +# define SSL_R_NO_VALID_SCTS 216 +# define SSL_R_NO_VERIFY_COOKIE_CALLBACK 403 +# define SSL_R_NULL_SSL_CTX 195 +# define SSL_R_NULL_SSL_METHOD_PASSED 196 +# define SSL_R_OCSP_CALLBACK_FAILURE 294 +# define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 +# define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +# define SSL_R_OVERFLOW_ERROR 237 +# define SSL_R_PACKET_LENGTH_TOO_LONG 198 +# define SSL_R_PARSE_TLSEXT 227 +# define SSL_R_PATH_TOO_LONG 270 +# define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 +# define SSL_R_PEM_NAME_BAD_PREFIX 391 +# define SSL_R_PEM_NAME_TOO_SHORT 392 +# define SSL_R_PIPELINE_FAILURE 406 +# define SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR 278 +# define SSL_R_PRIVATE_KEY_MISMATCH 288 +# define SSL_R_PROTOCOL_IS_SHUTDOWN 207 +# define SSL_R_PSK_IDENTITY_NOT_FOUND 223 +# define SSL_R_PSK_NO_CLIENT_CB 224 +# define SSL_R_PSK_NO_SERVER_CB 225 +# define SSL_R_READ_BIO_NOT_SET 211 +# define SSL_R_READ_TIMEOUT_EXPIRED 312 +# define SSL_R_RECORD_LENGTH_MISMATCH 213 +# define SSL_R_RECORD_TOO_SMALL 298 +# define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 +# define SSL_R_RENEGOTIATION_ENCODING_ERR 336 +# define SSL_R_RENEGOTIATION_MISMATCH 337 +# define SSL_R_REQUEST_PENDING 285 +# define SSL_R_REQUEST_SENT 286 +# define SSL_R_REQUIRED_CIPHER_MISSING 215 +# define SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING 342 +# define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 +# define SSL_R_SCT_VERIFICATION_FAILED 208 +# define SSL_R_SERVERHELLO_TLSEXT 275 +# define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 +# define SSL_R_SHUTDOWN_WHILE_IN_INIT 407 +# define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 +# define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 +# define SSL_R_SRP_A_CALC 361 +# define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 +# define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 +# define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 +# define SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH 232 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 +# define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 +# define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 +# define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 +# define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 +# define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 +# define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 +# define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 +# define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 +# define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 +# define SSL_R_SSL_COMMAND_SECTION_EMPTY 117 +# define SSL_R_SSL_COMMAND_SECTION_NOT_FOUND 125 +# define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 +# define SSL_R_SSL_HANDSHAKE_FAILURE 229 +# define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 +# define SSL_R_SSL_NEGATIVE_LENGTH 372 +# define SSL_R_SSL_SECTION_EMPTY 126 +# define SSL_R_SSL_SECTION_NOT_FOUND 136 +# define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 +# define SSL_R_SSL_SESSION_ID_CONFLICT 302 +# define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 +# define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 +# define SSL_R_SSL_SESSION_ID_TOO_LONG 408 +# define SSL_R_SSL_SESSION_VERSION_MISMATCH 210 +# define SSL_R_STILL_IN_INIT 121 +# define SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED 1116 +# define SSL_R_TLSV13_ALERT_MISSING_EXTENSION 1109 +# define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 +# define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 +# define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 +# define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 +# define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 +# define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 +# define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 +# define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 +# define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 +# define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 +# define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 +# define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 +# define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 +# define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 +# define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 +# define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 +# define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 +# define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 +# define SSL_R_TLS_HEARTBEAT_PEER_DOESNT_ACCEPT 365 +# define SSL_R_TLS_HEARTBEAT_PENDING 366 +# define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 +# define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 +# define SSL_R_TOO_MANY_KEY_UPDATES 132 +# define SSL_R_TOO_MANY_WARN_ALERTS 409 +# define SSL_R_TOO_MUCH_EARLY_DATA 164 +# define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 +# define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 +# define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 +# define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 +# define SSL_R_UNEXPECTED_CCS_MESSAGE 262 +# define SSL_R_UNEXPECTED_END_OF_EARLY_DATA 178 +# define SSL_R_UNEXPECTED_MESSAGE 244 +# define SSL_R_UNEXPECTED_RECORD 245 +# define SSL_R_UNINITIALIZED 276 +# define SSL_R_UNKNOWN_ALERT_TYPE 246 +# define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 +# define SSL_R_UNKNOWN_CIPHER_RETURNED 248 +# define SSL_R_UNKNOWN_CIPHER_TYPE 249 +# define SSL_R_UNKNOWN_CMD_NAME 386 +# define SSL_R_UNKNOWN_COMMAND 139 +# define SSL_R_UNKNOWN_DIGEST 368 +# define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +# define SSL_R_UNKNOWN_PKEY_TYPE 251 +# define SSL_R_UNKNOWN_PROTOCOL 252 +# define SSL_R_UNKNOWN_SSL_VERSION 254 +# define SSL_R_UNKNOWN_STATE 255 +# define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 +# define SSL_R_UNSOLICITED_EXTENSION 217 +# define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 +# define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 +# define SSL_R_UNSUPPORTED_PROTOCOL 258 +# define SSL_R_UNSUPPORTED_SSL_VERSION 259 +# define SSL_R_UNSUPPORTED_STATUS_TYPE 329 +# define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 +# define SSL_R_VERSION_TOO_HIGH 166 +# define SSL_R_VERSION_TOO_LOW 396 +# define SSL_R_WRONG_CERTIFICATE_TYPE 383 +# define SSL_R_WRONG_CIPHER_RETURNED 261 +# define SSL_R_WRONG_CURVE 378 +# define SSL_R_WRONG_SIGNATURE_LENGTH 264 +# define SSL_R_WRONG_SIGNATURE_SIZE 265 +# define SSL_R_WRONG_SIGNATURE_TYPE 370 +# define SSL_R_WRONG_SSL_VERSION 266 +# define SSL_R_WRONG_VERSION_NUMBER 267 +# define SSL_R_X509_LIB 268 +# define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 + +#endif diff --git a/openSSL/lin32/include/openssl/stack.h b/openSSL/lin32/include/openssl/stack.h new file mode 100644 index 0000000..cfc0750 --- /dev/null +++ b/openSSL/lin32/include/openssl/stack.h @@ -0,0 +1,83 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_STACK_H +# define HEADER_STACK_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */ + +typedef int (*OPENSSL_sk_compfunc)(const void *, const void *); +typedef void (*OPENSSL_sk_freefunc)(void *); +typedef void *(*OPENSSL_sk_copyfunc)(const void *); + +int OPENSSL_sk_num(const OPENSSL_STACK *); +void *OPENSSL_sk_value(const OPENSSL_STACK *, int); + +void *OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data); + +OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_new_null(void); +OPENSSL_STACK *OPENSSL_sk_new_reserve(OPENSSL_sk_compfunc c, int n); +int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n); +void OPENSSL_sk_free(OPENSSL_STACK *); +void OPENSSL_sk_pop_free(OPENSSL_STACK *st, void (*func) (void *)); +OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *, + OPENSSL_sk_copyfunc c, + OPENSSL_sk_freefunc f); +int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where); +void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc); +void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p); +int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_unshift(OPENSSL_STACK *st, const void *data); +void *OPENSSL_sk_shift(OPENSSL_STACK *st); +void *OPENSSL_sk_pop(OPENSSL_STACK *st); +void OPENSSL_sk_zero(OPENSSL_STACK *st); +OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, + OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_dup(const OPENSSL_STACK *st); +void OPENSSL_sk_sort(OPENSSL_STACK *st); +int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define _STACK OPENSSL_STACK +# define sk_num OPENSSL_sk_num +# define sk_value OPENSSL_sk_value +# define sk_set OPENSSL_sk_set +# define sk_new OPENSSL_sk_new +# define sk_new_null OPENSSL_sk_new_null +# define sk_free OPENSSL_sk_free +# define sk_pop_free OPENSSL_sk_pop_free +# define sk_deep_copy OPENSSL_sk_deep_copy +# define sk_insert OPENSSL_sk_insert +# define sk_delete OPENSSL_sk_delete +# define sk_delete_ptr OPENSSL_sk_delete_ptr +# define sk_find OPENSSL_sk_find +# define sk_find_ex OPENSSL_sk_find_ex +# define sk_push OPENSSL_sk_push +# define sk_unshift OPENSSL_sk_unshift +# define sk_shift OPENSSL_sk_shift +# define sk_pop OPENSSL_sk_pop +# define sk_zero OPENSSL_sk_zero +# define sk_set_cmp_func OPENSSL_sk_set_cmp_func +# define sk_dup OPENSSL_sk_dup +# define sk_sort OPENSSL_sk_sort +# define sk_is_sorted OPENSSL_sk_is_sorted +# endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin32/include/openssl/store.h b/openSSL/lin32/include/openssl/store.h new file mode 100644 index 0000000..a40a733 --- /dev/null +++ b/openSSL/lin32/include/openssl/store.h @@ -0,0 +1,266 @@ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OSSL_STORE_H +# define HEADER_OSSL_STORE_H + +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * The main OSSL_STORE functions. + * ------------------------------ + * + * These allow applications to open a channel to a resource with supported + * data (keys, certs, crls, ...), read the data a piece at a time and decide + * what to do with it, and finally close. + */ + +typedef struct ossl_store_ctx_st OSSL_STORE_CTX; + +/* + * Typedef for the OSSL_STORE_INFO post processing callback. This can be used + * to massage the given OSSL_STORE_INFO, or to drop it entirely (by returning + * NULL). + */ +typedef OSSL_STORE_INFO *(*OSSL_STORE_post_process_info_fn)(OSSL_STORE_INFO *, + void *); + +/* + * Open a channel given a URI. The given UI method will be used any time the + * loader needs extra input, for example when a password or pin is needed, and + * will be passed the same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + */ +OSSL_STORE_CTX *OSSL_STORE_open(const char *uri, const UI_METHOD *ui_method, + void *ui_data, + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/* + * Control / fine tune the OSSL_STORE channel. |cmd| determines what is to be + * done, and depends on the underlying loader (use OSSL_STORE_get0_scheme to + * determine which loader is used), except for common commands (see below). + * Each command takes different arguments. + */ +int OSSL_STORE_ctrl(OSSL_STORE_CTX *ctx, int cmd, ... /* args */); +int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, va_list args); + +/* + * Common ctrl commands that different loaders may choose to support. + */ +/* int on = 0 or 1; STORE_ctrl(ctx, STORE_C_USE_SECMEM, &on); */ +# define OSSL_STORE_C_USE_SECMEM 1 +/* Where custom commands start */ +# define OSSL_STORE_C_CUSTOM_START 100 + +/* + * Read one data item (a key, a cert, a CRL) that is supported by the OSSL_STORE + * functionality, given a context. + * Returns a OSSL_STORE_INFO pointer, from which OpenSSL typed data can be + * extracted with OSSL_STORE_INFO_get0_PKEY(), OSSL_STORE_INFO_get0_CERT(), ... + * NULL is returned on error, which may include that the data found at the URI + * can't be figured out for certain or is ambiguous. + */ +OSSL_STORE_INFO *OSSL_STORE_load(OSSL_STORE_CTX *ctx); + +/* + * Check if end of data (end of file) is reached + * Returns 1 on end, 0 otherwise. + */ +int OSSL_STORE_eof(OSSL_STORE_CTX *ctx); + +/* + * Check if an error occurred + * Returns 1 if it did, 0 otherwise. + */ +int OSSL_STORE_error(OSSL_STORE_CTX *ctx); + +/* + * Close the channel + * Returns 1 on success, 0 on error. + */ +int OSSL_STORE_close(OSSL_STORE_CTX *ctx); + + +/*- + * Extracting OpenSSL types from and creating new OSSL_STORE_INFOs + * --------------------------------------------------------------- + */ + +/* + * Types of data that can be ossl_stored in a OSSL_STORE_INFO. + * OSSL_STORE_INFO_NAME is typically found when getting a listing of + * available "files" / "tokens" / what have you. + */ +# define OSSL_STORE_INFO_NAME 1 /* char * */ +# define OSSL_STORE_INFO_PARAMS 2 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_PKEY 3 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_CERT 4 /* X509 * */ +# define OSSL_STORE_INFO_CRL 5 /* X509_CRL * */ + +/* + * Functions to generate OSSL_STORE_INFOs, one function for each type we + * support having in them, as well as a generic constructor. + * + * In all cases, ownership of the object is transferred to the OSSL_STORE_INFO + * and will therefore be freed when the OSSL_STORE_INFO is freed. + */ +OSSL_STORE_INFO *OSSL_STORE_INFO_new_NAME(char *name); +int OSSL_STORE_INFO_set0_NAME_description(OSSL_STORE_INFO *info, char *desc); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PARAMS(EVP_PKEY *params); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PKEY(EVP_PKEY *pkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CERT(X509 *x509); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CRL(X509_CRL *crl); + +/* + * Functions to try to extract data from a OSSL_STORE_INFO. + */ +int OSSL_STORE_INFO_get_type(const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME(const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME_description(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME_description(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PKEY(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get0_CERT(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get1_CERT(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get0_CRL(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get1_CRL(const OSSL_STORE_INFO *info); + +const char *OSSL_STORE_INFO_type_string(int type); + +/* + * Free the OSSL_STORE_INFO + */ +void OSSL_STORE_INFO_free(OSSL_STORE_INFO *info); + + +/*- + * Functions to construct a search URI from a base URI and search criteria + * ----------------------------------------------------------------------- + */ + +/* OSSL_STORE search types */ +# define OSSL_STORE_SEARCH_BY_NAME 1 /* subject in certs, issuer in CRLs */ +# define OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 2 +# define OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 3 +# define OSSL_STORE_SEARCH_BY_ALIAS 4 + +/* To check what search types the scheme handler supports */ +int OSSL_STORE_supports_search(OSSL_STORE_CTX *ctx, int search_type); + +/* Search term constructors */ +/* + * The input is considered to be owned by the caller, and must therefore + * remain present throughout the lifetime of the returned OSSL_STORE_SEARCH + */ +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_name(X509_NAME *name); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_issuer_serial(X509_NAME *name, + const ASN1_INTEGER + *serial); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_key_fingerprint(const EVP_MD *digest, + const unsigned char + *bytes, size_t len); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_alias(const char *alias); + +/* Search term destructor */ +void OSSL_STORE_SEARCH_free(OSSL_STORE_SEARCH *search); + +/* Search term accessors */ +int OSSL_STORE_SEARCH_get_type(const OSSL_STORE_SEARCH *criterion); +X509_NAME *OSSL_STORE_SEARCH_get0_name(OSSL_STORE_SEARCH *criterion); +const ASN1_INTEGER *OSSL_STORE_SEARCH_get0_serial(const OSSL_STORE_SEARCH + *criterion); +const unsigned char *OSSL_STORE_SEARCH_get0_bytes(const OSSL_STORE_SEARCH + *criterion, size_t *length); +const char *OSSL_STORE_SEARCH_get0_string(const OSSL_STORE_SEARCH *criterion); +const EVP_MD *OSSL_STORE_SEARCH_get0_digest(const OSSL_STORE_SEARCH *criterion); + +/* + * Add search criterion and expected return type (which can be unspecified) + * to the loading channel. This MUST happen before the first OSSL_STORE_load(). + */ +int OSSL_STORE_expect(OSSL_STORE_CTX *ctx, int expected_type); +int OSSL_STORE_find(OSSL_STORE_CTX *ctx, OSSL_STORE_SEARCH *search); + + +/*- + * Function to register a loader for the given URI scheme. + * ------------------------------------------------------- + * + * The loader receives all the main components of an URI except for the + * scheme. + */ + +typedef struct ossl_store_loader_st OSSL_STORE_LOADER; +OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(ENGINE *e, const char *scheme); +const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader); +const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); +/* struct ossl_store_loader_ctx_st is defined differently by each loader */ +typedef struct ossl_store_loader_ctx_st OSSL_STORE_LOADER_CTX; +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_fn)(const OSSL_STORE_LOADER + *loader, + const char *uri, + const UI_METHOD *ui_method, + void *ui_data); +int OSSL_STORE_LOADER_set_open(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_fn open_function); +typedef int (*OSSL_STORE_ctrl_fn)(OSSL_STORE_LOADER_CTX *ctx, int cmd, + va_list args); +int OSSL_STORE_LOADER_set_ctrl(OSSL_STORE_LOADER *loader, + OSSL_STORE_ctrl_fn ctrl_function); +typedef int (*OSSL_STORE_expect_fn)(OSSL_STORE_LOADER_CTX *ctx, int expected); +int OSSL_STORE_LOADER_set_expect(OSSL_STORE_LOADER *loader, + OSSL_STORE_expect_fn expect_function); +typedef int (*OSSL_STORE_find_fn)(OSSL_STORE_LOADER_CTX *ctx, + OSSL_STORE_SEARCH *criteria); +int OSSL_STORE_LOADER_set_find(OSSL_STORE_LOADER *loader, + OSSL_STORE_find_fn find_function); +typedef OSSL_STORE_INFO *(*OSSL_STORE_load_fn)(OSSL_STORE_LOADER_CTX *ctx, + const UI_METHOD *ui_method, + void *ui_data); +int OSSL_STORE_LOADER_set_load(OSSL_STORE_LOADER *loader, + OSSL_STORE_load_fn load_function); +typedef int (*OSSL_STORE_eof_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_eof(OSSL_STORE_LOADER *loader, + OSSL_STORE_eof_fn eof_function); +typedef int (*OSSL_STORE_error_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_error(OSSL_STORE_LOADER *loader, + OSSL_STORE_error_fn error_function); +typedef int (*OSSL_STORE_close_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *loader, + OSSL_STORE_close_fn close_function); +void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader); + +int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); +OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme); + +/*- + * Functions to list STORE loaders + * ------------------------------- + */ +int OSSL_STORE_do_all_loaders(void (*do_function) (const OSSL_STORE_LOADER + *loader, void *do_arg), + void *do_arg); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/storeerr.h b/openSSL/lin32/include/openssl/storeerr.h new file mode 100644 index 0000000..190eab0 --- /dev/null +++ b/openSSL/lin32/include/openssl/storeerr.h @@ -0,0 +1,91 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OSSL_STOREERR_H +# define HEADER_OSSL_STOREERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OSSL_STORE_strings(void); + +/* + * OSSL_STORE function codes. + */ +# define OSSL_STORE_F_FILE_CTRL 129 +# define OSSL_STORE_F_FILE_FIND 138 +# define OSSL_STORE_F_FILE_GET_PASS 118 +# define OSSL_STORE_F_FILE_LOAD 119 +# define OSSL_STORE_F_FILE_LOAD_TRY_DECODE 124 +# define OSSL_STORE_F_FILE_NAME_TO_URI 126 +# define OSSL_STORE_F_FILE_OPEN 120 +# define OSSL_STORE_F_OSSL_STORE_ATTACH_PEM_BIO 127 +# define OSSL_STORE_F_OSSL_STORE_EXPECT 130 +# define OSSL_STORE_F_OSSL_STORE_FILE_ATTACH_PEM_BIO_INT 128 +# define OSSL_STORE_F_OSSL_STORE_FIND 131 +# define OSSL_STORE_F_OSSL_STORE_GET0_LOADER_INT 100 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CERT 101 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CRL 102 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME 103 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME_DESCRIPTION 135 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PARAMS 104 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PKEY 105 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CERT 106 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CRL 107 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_EMBEDDED 123 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_NAME 109 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PARAMS 110 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PKEY 111 +# define OSSL_STORE_F_OSSL_STORE_INFO_SET0_NAME_DESCRIPTION 134 +# define OSSL_STORE_F_OSSL_STORE_INIT_ONCE 112 +# define OSSL_STORE_F_OSSL_STORE_LOADER_NEW 113 +# define OSSL_STORE_F_OSSL_STORE_OPEN 114 +# define OSSL_STORE_F_OSSL_STORE_OPEN_INT 115 +# define OSSL_STORE_F_OSSL_STORE_REGISTER_LOADER_INT 117 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ALIAS 132 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 133 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 136 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_NAME 137 +# define OSSL_STORE_F_OSSL_STORE_UNREGISTER_LOADER_INT 116 +# define OSSL_STORE_F_TRY_DECODE_PARAMS 121 +# define OSSL_STORE_F_TRY_DECODE_PKCS12 122 +# define OSSL_STORE_F_TRY_DECODE_PKCS8ENCRYPTED 125 + +/* + * OSSL_STORE reason codes. + */ +# define OSSL_STORE_R_AMBIGUOUS_CONTENT_TYPE 107 +# define OSSL_STORE_R_BAD_PASSWORD_READ 115 +# define OSSL_STORE_R_ERROR_VERIFYING_PKCS12_MAC 113 +# define OSSL_STORE_R_FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST 121 +# define OSSL_STORE_R_INVALID_SCHEME 106 +# define OSSL_STORE_R_IS_NOT_A 112 +# define OSSL_STORE_R_LOADER_INCOMPLETE 116 +# define OSSL_STORE_R_LOADING_STARTED 117 +# define OSSL_STORE_R_NOT_A_CERTIFICATE 100 +# define OSSL_STORE_R_NOT_A_CRL 101 +# define OSSL_STORE_R_NOT_A_KEY 102 +# define OSSL_STORE_R_NOT_A_NAME 103 +# define OSSL_STORE_R_NOT_PARAMETERS 104 +# define OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR 114 +# define OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE 108 +# define OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 119 +# define OSSL_STORE_R_UI_PROCESS_INTERRUPTED_OR_CANCELLED 109 +# define OSSL_STORE_R_UNREGISTERED_SCHEME 105 +# define OSSL_STORE_R_UNSUPPORTED_CONTENT_TYPE 110 +# define OSSL_STORE_R_UNSUPPORTED_OPERATION 118 +# define OSSL_STORE_R_UNSUPPORTED_SEARCH_TYPE 120 +# define OSSL_STORE_R_URI_AUTHORITY_UNSUPPORTED 111 + +#endif diff --git a/openSSL/lin32/include/openssl/symhacks.h b/openSSL/lin32/include/openssl/symhacks.h new file mode 100644 index 0000000..156ea6e --- /dev/null +++ b/openSSL/lin32/include/openssl/symhacks.h @@ -0,0 +1,37 @@ +/* + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SYMHACKS_H +# define HEADER_SYMHACKS_H + +# include + +/* Case insensitive linking causes problems.... */ +# if defined(OPENSSL_SYS_VMS) +# undef ERR_load_CRYPTO_strings +# define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings +# undef OCSP_crlID_new +# define OCSP_crlID_new OCSP_crlID2_new + +# undef d2i_ECPARAMETERS +# define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS +# undef i2d_ECPARAMETERS +# define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS +# undef d2i_ECPKPARAMETERS +# define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS +# undef i2d_ECPKPARAMETERS +# define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS + +/* This one clashes with CMS_data_create */ +# undef cms_Data_create +# define cms_Data_create priv_cms_Data_create + +# endif + +#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/openSSL/lin32/include/openssl/tls1.h b/openSSL/lin32/include/openssl/tls1.h new file mode 100644 index 0000000..76d9fda --- /dev/null +++ b/openSSL/lin32/include/openssl/tls1.h @@ -0,0 +1,1237 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TLS1_H +# define HEADER_TLS1_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Default security level if not overridden at config time */ +# ifndef OPENSSL_TLS_SECURITY_LEVEL +# define OPENSSL_TLS_SECURITY_LEVEL 1 +# endif + +# define TLS1_VERSION 0x0301 +# define TLS1_1_VERSION 0x0302 +# define TLS1_2_VERSION 0x0303 +# define TLS1_3_VERSION 0x0304 +# define TLS_MAX_VERSION TLS1_3_VERSION + +/* Special value for method supporting multiple versions */ +# define TLS_ANY_VERSION 0x10000 + +# define TLS1_VERSION_MAJOR 0x03 +# define TLS1_VERSION_MINOR 0x01 + +# define TLS1_1_VERSION_MAJOR 0x03 +# define TLS1_1_VERSION_MINOR 0x02 + +# define TLS1_2_VERSION_MAJOR 0x03 +# define TLS1_2_VERSION_MINOR 0x03 + +# define TLS1_get_version(s) \ + ((SSL_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_version(s) : 0) + +# define TLS1_get_client_version(s) \ + ((SSL_client_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_client_version(s) : 0) + +# define TLS1_AD_DECRYPTION_FAILED 21 +# define TLS1_AD_RECORD_OVERFLOW 22 +# define TLS1_AD_UNKNOWN_CA 48/* fatal */ +# define TLS1_AD_ACCESS_DENIED 49/* fatal */ +# define TLS1_AD_DECODE_ERROR 50/* fatal */ +# define TLS1_AD_DECRYPT_ERROR 51 +# define TLS1_AD_EXPORT_RESTRICTION 60/* fatal */ +# define TLS1_AD_PROTOCOL_VERSION 70/* fatal */ +# define TLS1_AD_INSUFFICIENT_SECURITY 71/* fatal */ +# define TLS1_AD_INTERNAL_ERROR 80/* fatal */ +# define TLS1_AD_INAPPROPRIATE_FALLBACK 86/* fatal */ +# define TLS1_AD_USER_CANCELLED 90 +# define TLS1_AD_NO_RENEGOTIATION 100 +/* TLSv1.3 alerts */ +# define TLS13_AD_MISSING_EXTENSION 109 /* fatal */ +# define TLS13_AD_CERTIFICATE_REQUIRED 116 /* fatal */ +/* codes 110-114 are from RFC3546 */ +# define TLS1_AD_UNSUPPORTED_EXTENSION 110 +# define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 +# define TLS1_AD_UNRECOGNIZED_NAME 112 +# define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 +# define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 +# define TLS1_AD_UNKNOWN_PSK_IDENTITY 115/* fatal */ +# define TLS1_AD_NO_APPLICATION_PROTOCOL 120 /* fatal */ + +/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ +# define TLSEXT_TYPE_server_name 0 +# define TLSEXT_TYPE_max_fragment_length 1 +# define TLSEXT_TYPE_client_certificate_url 2 +# define TLSEXT_TYPE_trusted_ca_keys 3 +# define TLSEXT_TYPE_truncated_hmac 4 +# define TLSEXT_TYPE_status_request 5 +/* ExtensionType values from RFC4681 */ +# define TLSEXT_TYPE_user_mapping 6 +/* ExtensionType values from RFC5878 */ +# define TLSEXT_TYPE_client_authz 7 +# define TLSEXT_TYPE_server_authz 8 +/* ExtensionType values from RFC6091 */ +# define TLSEXT_TYPE_cert_type 9 + +/* ExtensionType values from RFC4492 */ +/* + * Prior to TLSv1.3 the supported_groups extension was known as + * elliptic_curves + */ +# define TLSEXT_TYPE_supported_groups 10 +# define TLSEXT_TYPE_elliptic_curves TLSEXT_TYPE_supported_groups +# define TLSEXT_TYPE_ec_point_formats 11 + + +/* ExtensionType value from RFC5054 */ +# define TLSEXT_TYPE_srp 12 + +/* ExtensionType values from RFC5246 */ +# define TLSEXT_TYPE_signature_algorithms 13 + +/* ExtensionType value from RFC5764 */ +# define TLSEXT_TYPE_use_srtp 14 + +/* ExtensionType value from RFC5620 */ +# define TLSEXT_TYPE_heartbeat 15 + +/* ExtensionType value from RFC7301 */ +# define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * Extension type for Certificate Transparency + * https://tools.ietf.org/html/rfc6962#section-3.3.1 + */ +# define TLSEXT_TYPE_signed_certificate_timestamp 18 + +/* + * ExtensionType value for TLS padding extension. + * http://tools.ietf.org/html/draft-agl-tls-padding + */ +# define TLSEXT_TYPE_padding 21 + +/* ExtensionType value from RFC7366 */ +# define TLSEXT_TYPE_encrypt_then_mac 22 + +/* ExtensionType value from RFC7627 */ +# define TLSEXT_TYPE_extended_master_secret 23 + +/* ExtensionType value from RFC4507 */ +# define TLSEXT_TYPE_session_ticket 35 + +/* As defined for TLS1.3 */ +# define TLSEXT_TYPE_psk 41 +# define TLSEXT_TYPE_early_data 42 +# define TLSEXT_TYPE_supported_versions 43 +# define TLSEXT_TYPE_cookie 44 +# define TLSEXT_TYPE_psk_kex_modes 45 +# define TLSEXT_TYPE_certificate_authorities 47 +# define TLSEXT_TYPE_post_handshake_auth 49 +# define TLSEXT_TYPE_signature_algorithms_cert 50 +# define TLSEXT_TYPE_key_share 51 + +/* Temporary extension type */ +# define TLSEXT_TYPE_renegotiate 0xff01 + +# ifndef OPENSSL_NO_NEXTPROTONEG +/* This is not an IANA defined extension number */ +# define TLSEXT_TYPE_next_proto_neg 13172 +# endif + +/* NameType value from RFC3546 */ +# define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC3546 */ +# define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from RFC4492 */ +# define TLSEXT_ECPOINTFORMAT_first 0 +# define TLSEXT_ECPOINTFORMAT_uncompressed 0 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 +# define TLSEXT_ECPOINTFORMAT_last 2 + +/* Signature and hash algorithms from RFC5246 */ +# define TLSEXT_signature_anonymous 0 +# define TLSEXT_signature_rsa 1 +# define TLSEXT_signature_dsa 2 +# define TLSEXT_signature_ecdsa 3 +# define TLSEXT_signature_gostr34102001 237 +# define TLSEXT_signature_gostr34102012_256 238 +# define TLSEXT_signature_gostr34102012_512 239 + +/* Total number of different signature algorithms */ +# define TLSEXT_signature_num 7 + +# define TLSEXT_hash_none 0 +# define TLSEXT_hash_md5 1 +# define TLSEXT_hash_sha1 2 +# define TLSEXT_hash_sha224 3 +# define TLSEXT_hash_sha256 4 +# define TLSEXT_hash_sha384 5 +# define TLSEXT_hash_sha512 6 +# define TLSEXT_hash_gostr3411 237 +# define TLSEXT_hash_gostr34112012_256 238 +# define TLSEXT_hash_gostr34112012_512 239 + +/* Total number of different digest algorithms */ + +# define TLSEXT_hash_num 10 + +/* Flag set for unrecognised algorithms */ +# define TLSEXT_nid_unknown 0x1000000 + +/* ECC curves */ + +# define TLSEXT_curve_P_256 23 +# define TLSEXT_curve_P_384 24 + +/* OpenSSL value to disable maximum fragment length extension */ +# define TLSEXT_max_fragment_length_DISABLED 0 +/* Allowed values for max fragment length extension */ +# define TLSEXT_max_fragment_length_512 1 +# define TLSEXT_max_fragment_length_1024 2 +# define TLSEXT_max_fragment_length_2048 3 +# define TLSEXT_max_fragment_length_4096 4 + +int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); +int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); + +# define TLSEXT_MAXLEN_host_name 255 + +__owur const char *SSL_get_servername(const SSL *s, const int type); +__owur int SSL_get_servername_type(const SSL *s); +/* + * SSL_export_keying_material exports a value derived from the master secret, + * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and + * optional context. (Since a zero length context is allowed, the |use_context| + * flag controls whether a context is included.) It returns 1 on success and + * 0 or -1 otherwise. + */ +__owur int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *context, + size_t contextlen, int use_context); + +/* + * SSL_export_keying_material_early exports a value derived from the + * early exporter master secret, as specified in + * https://tools.ietf.org/html/draft-ietf-tls-tls13-23. It writes + * |olen| bytes to |out| given a label and optional context. It + * returns 1 on success and 0 otherwise. + */ +__owur int SSL_export_keying_material_early(SSL *s, unsigned char *out, + size_t olen, const char *label, + size_t llen, + const unsigned char *context, + size_t contextlen); + +int SSL_get_peer_signature_type_nid(const SSL *s, int *pnid); +int SSL_get_signature_type_nid(const SSL *s, int *pnid); + +int SSL_get_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +int SSL_get_shared_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +__owur int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); + +# define SSL_set_tlsext_host_name(s,name) \ + SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,\ + (void *)name) + +# define SSL_set_tlsext_debug_callback(ssl, cb) \ + SSL_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_CB,\ + (void (*)(void))cb) + +# define SSL_set_tlsext_debug_arg(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_ARG,0,arg) + +# define SSL_get_tlsext_status_type(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE,0,NULL) + +# define SSL_set_tlsext_status_type(ssl, type) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type,NULL) + +# define SSL_get_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS,0,arg) + +# define SSL_set_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS,0,arg) + +# define SSL_get_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS,0,arg) + +# define SSL_set_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS,0,arg) + +# define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,0,arg) + +# define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,arglen,arg) + +# define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ + SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_CB,\ + (void (*)(void))cb) + +# define SSL_TLSEXT_ERR_OK 0 +# define SSL_TLSEXT_ERR_ALERT_WARNING 1 +# define SSL_TLSEXT_ERR_ALERT_FATAL 2 +# define SSL_TLSEXT_ERR_NOACK 3 + +# define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0,arg) + +# define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_TLSEXT_TICKET_KEYS,keylen,keys) +# define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_TICKET_KEYS,keylen,keys) + +# define SSL_CTX_get_tlsext_status_cb(ssl, cb) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB,0,(void *)cb) +# define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,\ + (void (*)(void))cb) + +# define SSL_CTX_get_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG,0,arg) +# define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0,arg) + +# define SSL_CTX_set_tlsext_status_type(ssl, type) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type,NULL) + +# define SSL_CTX_get_tlsext_status_type(ssl) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE,0,NULL) + +# define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,\ + (void (*)(void))cb) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_DTLSEXT_HB_ENABLED 0x01 +# define SSL_DTLSEXT_HB_DONT_SEND_REQUESTS 0x02 +# define SSL_DTLSEXT_HB_DONT_RECV_REQUESTS 0x04 +# define SSL_get_dtlsext_heartbeat_pending(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING,0,NULL) +# define SSL_set_dtlsext_heartbeat_no_requests(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS,arg,NULL) + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_CTRL_TLS_EXT_SEND_HEARTBEAT \ + SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT +# define SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING \ + SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING +# define SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS \ + SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS +# define SSL_TLSEXT_HB_ENABLED \ + SSL_DTLSEXT_HB_ENABLED +# define SSL_TLSEXT_HB_DONT_SEND_REQUESTS \ + SSL_DTLSEXT_HB_DONT_SEND_REQUESTS +# define SSL_TLSEXT_HB_DONT_RECV_REQUESTS \ + SSL_DTLSEXT_HB_DONT_RECV_REQUESTS +# define SSL_get_tlsext_heartbeat_pending(ssl) \ + SSL_get_dtlsext_heartbeat_pending(ssl) +# define SSL_set_tlsext_heartbeat_no_requests(ssl, arg) \ + SSL_set_dtlsext_heartbeat_no_requests(ssl,arg) +# endif +# endif + +/* PSK ciphersuites from 4279 */ +# define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A +# define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D +# define TLS1_CK_DHE_PSK_WITH_RC4_128_SHA 0x0300008E +# define TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008F +# define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA 0x03000090 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA 0x03000091 +# define TLS1_CK_RSA_PSK_WITH_RC4_128_SHA 0x03000092 +# define TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x03000093 +# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA 0x03000094 +# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA 0x03000095 + +/* PSK ciphersuites from 5487 */ +# define TLS1_CK_PSK_WITH_AES_128_GCM_SHA256 0x030000A8 +# define TLS1_CK_PSK_WITH_AES_256_GCM_SHA384 0x030000A9 +# define TLS1_CK_DHE_PSK_WITH_AES_128_GCM_SHA256 0x030000AA +# define TLS1_CK_DHE_PSK_WITH_AES_256_GCM_SHA384 0x030000AB +# define TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256 0x030000AC +# define TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384 0x030000AD +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA256 0x030000AE +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA384 0x030000AF +# define TLS1_CK_PSK_WITH_NULL_SHA256 0x030000B0 +# define TLS1_CK_PSK_WITH_NULL_SHA384 0x030000B1 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA256 0x030000B2 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384 0x030000B3 +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA256 0x030000B4 +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA384 0x030000B5 +# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256 0x030000B6 +# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384 0x030000B7 +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA256 0x030000B8 +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA384 0x030000B9 + +/* NULL PSK ciphersuites from RFC4785 */ +# define TLS1_CK_PSK_WITH_NULL_SHA 0x0300002C +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA 0x0300002D +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA 0x0300002E + +/* AES ciphersuites from RFC3268 */ +# define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 +# define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 +# define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 +# define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B +# define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C +# define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B +# define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C +# define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 +# define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 +# define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 +# define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 +# define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A +# define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C +# define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D +# define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E +# define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F +# define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 +# define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 +# define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 +# define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 +# define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 +# define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 +# define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 +# define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 + +/* CCM ciphersuites from RFC6655 */ +# define TLS1_CK_RSA_WITH_AES_128_CCM 0x0300C09C +# define TLS1_CK_RSA_WITH_AES_256_CCM 0x0300C09D +# define TLS1_CK_DHE_RSA_WITH_AES_128_CCM 0x0300C09E +# define TLS1_CK_DHE_RSA_WITH_AES_256_CCM 0x0300C09F +# define TLS1_CK_RSA_WITH_AES_128_CCM_8 0x0300C0A0 +# define TLS1_CK_RSA_WITH_AES_256_CCM_8 0x0300C0A1 +# define TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8 0x0300C0A2 +# define TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8 0x0300C0A3 +# define TLS1_CK_PSK_WITH_AES_128_CCM 0x0300C0A4 +# define TLS1_CK_PSK_WITH_AES_256_CCM 0x0300C0A5 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CCM 0x0300C0A6 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CCM 0x0300C0A7 +# define TLS1_CK_PSK_WITH_AES_128_CCM_8 0x0300C0A8 +# define TLS1_CK_PSK_WITH_AES_256_CCM_8 0x0300C0A9 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8 0x0300C0AA +# define TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8 0x0300C0AB + +/* CCM ciphersuites from RFC7251 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM 0x0300C0AC +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM 0x0300C0AD +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM_8 0x0300C0AE +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM_8 0x0300C0AF + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BA +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BB +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BC +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BD +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BE +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA256 0x030000BF + +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C0 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C1 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C2 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C3 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C4 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA256 0x030000C5 + +/* ECC ciphersuites from RFC4492 */ +# define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 +# define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 +# define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 + +# define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 +# define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 +# define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A + +# define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B +# define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C +# define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D +# define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E +# define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F + +# define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 +# define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 +# define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 + +# define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 +# define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 +# define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 +# define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 +# define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 + +/* SRP ciphersuites from RFC 5054 */ +# define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A +# define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B +# define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C +# define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F +# define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 + +/* ECDH HMAC based ciphersuites from RFC5289 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 + +/* ECDHE PSK ciphersuites from RFC5489 */ +# define TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA 0x0300C033 +# define TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300C034 +# define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA 0x0300C035 +# define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA 0x0300C036 + +# define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0x0300C037 +# define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0x0300C038 + +/* NULL PSK ciphersuites from RFC4785 */ +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA 0x0300C039 +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256 0x0300C03A +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384 0x0300C03B + +/* Camellia-CBC ciphersuites from RFC6367 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C072 +# define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C073 +# define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C074 +# define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C075 +# define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C076 +# define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C077 +# define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C078 +# define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C079 + +# define TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C094 +# define TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C095 +# define TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C096 +# define TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C097 +# define TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C098 +# define TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C099 +# define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C09A +# define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C09B + +/* draft-ietf-tls-chacha20-poly1305-03 */ +# define TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCA8 +# define TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 0x0300CCA9 +# define TLS1_CK_DHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCAA +# define TLS1_CK_PSK_WITH_CHACHA20_POLY1305 0x0300CCAB +# define TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAC +# define TLS1_CK_DHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAD +# define TLS1_CK_RSA_PSK_WITH_CHACHA20_POLY1305 0x0300CCAE + +/* TLS v1.3 ciphersuites */ +# define TLS1_3_CK_AES_128_GCM_SHA256 0x03001301 +# define TLS1_3_CK_AES_256_GCM_SHA384 0x03001302 +# define TLS1_3_CK_CHACHA20_POLY1305_SHA256 0x03001303 +# define TLS1_3_CK_AES_128_CCM_SHA256 0x03001304 +# define TLS1_3_CK_AES_128_CCM_8_SHA256 0x03001305 + +/* Aria ciphersuites from RFC6209 */ +# define TLS1_CK_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C050 +# define TLS1_CK_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C051 +# define TLS1_CK_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C052 +# define TLS1_CK_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C053 +# define TLS1_CK_DH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C054 +# define TLS1_CK_DH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C055 +# define TLS1_CK_DHE_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C056 +# define TLS1_CK_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C057 +# define TLS1_CK_DH_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C058 +# define TLS1_CK_DH_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C059 +# define TLS1_CK_DH_anon_WITH_ARIA_128_GCM_SHA256 0x0300C05A +# define TLS1_CK_DH_anon_WITH_ARIA_256_GCM_SHA384 0x0300C05B +# define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05C +# define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05D +# define TLS1_CK_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05E +# define TLS1_CK_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05F +# define TLS1_CK_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C060 +# define TLS1_CK_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C061 +# define TLS1_CK_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C062 +# define TLS1_CK_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C063 +# define TLS1_CK_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06A +# define TLS1_CK_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06B +# define TLS1_CK_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06C +# define TLS1_CK_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06D +# define TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06E +# define TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06F + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +# define TLS1_RFC_RSA_WITH_AES_128_SHA "TLS_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ADH_WITH_AES_128_SHA "TLS_DH_anon_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_RSA_WITH_AES_256_SHA "TLS_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ADH_WITH_AES_256_SHA "TLS_DH_anon_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_RSA_WITH_NULL_SHA256 "TLS_RSA_WITH_NULL_SHA256" +# define TLS1_RFC_RSA_WITH_AES_128_SHA256 "TLS_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_AES_256_SHA256 "TLS_RSA_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256 "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256 "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256 "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256 "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_AES_128_SHA256 "TLS_DH_anon_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_AES_256_SHA256 "TLS_DH_anon_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256 "TLS_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384 "TLS_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256 "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384 "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256 "TLS_DH_anon_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384 "TLS_DH_anon_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_RSA_WITH_AES_128_CCM "TLS_RSA_WITH_AES_128_CCM" +# define TLS1_RFC_RSA_WITH_AES_256_CCM "TLS_RSA_WITH_AES_256_CCM" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM "TLS_DHE_RSA_WITH_AES_128_CCM" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM "TLS_DHE_RSA_WITH_AES_256_CCM" +# define TLS1_RFC_RSA_WITH_AES_128_CCM_8 "TLS_RSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_RSA_WITH_AES_256_CCM_8 "TLS_RSA_WITH_AES_256_CCM_8" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8 "TLS_DHE_RSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8 "TLS_DHE_RSA_WITH_AES_256_CCM_8" +# define TLS1_RFC_PSK_WITH_AES_128_CCM "TLS_PSK_WITH_AES_128_CCM" +# define TLS1_RFC_PSK_WITH_AES_256_CCM "TLS_PSK_WITH_AES_256_CCM" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM "TLS_DHE_PSK_WITH_AES_128_CCM" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM "TLS_DHE_PSK_WITH_AES_256_CCM" +# define TLS1_RFC_PSK_WITH_AES_128_CCM_8 "TLS_PSK_WITH_AES_128_CCM_8" +# define TLS1_RFC_PSK_WITH_AES_256_CCM_8 "TLS_PSK_WITH_AES_256_CCM_8" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8 "TLS_PSK_DHE_WITH_AES_128_CCM_8" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8 "TLS_PSK_DHE_WITH_AES_256_CCM_8" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM "TLS_ECDHE_ECDSA_WITH_AES_128_CCM" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM "TLS_ECDHE_ECDSA_WITH_AES_256_CCM" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8" +# define TLS1_3_RFC_AES_128_GCM_SHA256 "TLS_AES_128_GCM_SHA256" +# define TLS1_3_RFC_AES_256_GCM_SHA384 "TLS_AES_256_GCM_SHA384" +# define TLS1_3_RFC_CHACHA20_POLY1305_SHA256 "TLS_CHACHA20_POLY1305_SHA256" +# define TLS1_3_RFC_AES_128_CCM_SHA256 "TLS_AES_128_CCM_SHA256" +# define TLS1_3_RFC_AES_128_CCM_8_SHA256 "TLS_AES_128_CCM_8_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA "TLS_ECDHE_ECDSA_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA "TLS_ECDHE_RSA_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_NULL_SHA "TLS_ECDH_anon_WITH_NULL_SHA" +# define TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA "TLS_ECDH_anon_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA "TLS_ECDH_anon_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_NULL_SHA "TLS_PSK_WITH_NULL_SHA" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA "TLS_DHE_PSK_WITH_NULL_SHA" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA "TLS_RSA_PSK_WITH_NULL_SHA" +# define TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA "TLS_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA "TLS_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA "TLS_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA "TLS_DHE_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA "TLS_DHE_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA "TLS_RSA_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA "TLS_RSA_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256 "TLS_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384 "TLS_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256 "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384 "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256 "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384 "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256 "TLS_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384 "TLS_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_PSK_WITH_NULL_SHA256 "TLS_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_PSK_WITH_NULL_SHA384 "TLS_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA256 "TLS_DHE_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA384 "TLS_DHE_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256 "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384 "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA256 "TLS_RSA_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA384 "TLS_RSA_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA "TLS_ECDHE_PSK_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256 "TLS_ECDHE_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384 "TLS_ECDHE_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305 "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_PSK_WITH_CHACHA20_POLY1305 "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305 "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305 "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305 "TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_RSA_WITH_SEED_SHA "TLS_RSA_WITH_SEED_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_SEED_SHA "TLS_DHE_DSS_WITH_SEED_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_SEED_SHA "TLS_DHE_RSA_WITH_SEED_CBC_SHA" +# define TLS1_RFC_ADH_WITH_SEED_SHA "TLS_DH_anon_WITH_SEED_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA "TLS_ECDHE_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA "TLS_ECDH_anon_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA "TLS_ECDHE_RSA_WITH_RC4_128_SHA" +# define TLS1_RFC_PSK_WITH_RC4_128_SHA "TLS_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA "TLS_RSA_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA "TLS_DHE_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_anon_WITH_ARIA_128_GCM_SHA256 "TLS_DH_anon_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_anon_WITH_ARIA_256_GCM_SHA384 "TLS_DH_anon_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_PSK_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384" + + +/* + * XXX Backward compatibility alert: Older versions of OpenSSL gave some DHE + * ciphers names with "EDH" instead of "DHE". Going forward, we should be + * using DHE everywhere, though we may indefinitely maintain aliases for + * users or configurations that used "EDH" + */ +# define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" + +# define TLS1_TXT_PSK_WITH_NULL_SHA "PSK-NULL-SHA" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA "DHE-PSK-NULL-SHA" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA "RSA-PSK-NULL-SHA" + +/* AES ciphersuites from RFC3268 */ +# define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" +# define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" + +# define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" +# define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" + +/* ECC ciphersuites from RFC4492 */ +# define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" + +# define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" +# define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" +# define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" + +/* PSK ciphersuites from RFC 4279 */ +# define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" +# define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" + +# define TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA "DHE-PSK-RC4-SHA" +# define TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA "DHE-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA "DHE-PSK-AES128-CBC-SHA" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA "DHE-PSK-AES256-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA "RSA-PSK-RC4-SHA" +# define TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA "RSA-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA "RSA-PSK-AES128-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA "RSA-PSK-AES256-CBC-SHA" + +/* PSK ciphersuites from RFC 5487 */ +# define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256 "DHE-PSK-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384 "DHE-PSK-AES256-GCM-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256 "RSA-PSK-AES128-GCM-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384 "RSA-PSK-AES256-GCM-SHA384" + +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256 "PSK-AES128-CBC-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384 "PSK-AES256-CBC-SHA384" +# define TLS1_TXT_PSK_WITH_NULL_SHA256 "PSK-NULL-SHA256" +# define TLS1_TXT_PSK_WITH_NULL_SHA384 "PSK-NULL-SHA384" + +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256 "DHE-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384 "DHE-PSK-AES256-CBC-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA256 "DHE-PSK-NULL-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA384 "DHE-PSK-NULL-SHA384" + +# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256 "RSA-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384 "RSA-PSK-AES256-CBC-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA256 "RSA-PSK-NULL-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA384 "RSA-PSK-NULL-SHA384" + +/* SRP ciphersuite from RFC 5054 */ +# define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256 "CAMELLIA128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DH-DSS-CAMELLIA128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DH-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DHE-DSS-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DHE-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA256 "ADH-CAMELLIA128-SHA256" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA256 "CAMELLIA256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DH-DSS-CAMELLIA256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DH-RSA-CAMELLIA256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DHE-DSS-CAMELLIA256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DHE-RSA-CAMELLIA256-SHA256" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA256 "ADH-CAMELLIA256-SHA256" + +# define TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256 "PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384 "PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "DHE-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "DHE-PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "RSA-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "RSA-PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-PSK-CAMELLIA256-SHA384" + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" +# define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" +# define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" +# define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" +# define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" +# define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" + +/* TLS v1.2 ciphersuites */ +# define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" +# define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" +# define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" + +/* CCM ciphersuites from RFC6655 */ +# define TLS1_TXT_RSA_WITH_AES_128_CCM "AES128-CCM" +# define TLS1_TXT_RSA_WITH_AES_256_CCM "AES256-CCM" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM "DHE-RSA-AES128-CCM" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM "DHE-RSA-AES256-CCM" + +# define TLS1_TXT_RSA_WITH_AES_128_CCM_8 "AES128-CCM8" +# define TLS1_TXT_RSA_WITH_AES_256_CCM_8 "AES256-CCM8" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8 "DHE-RSA-AES128-CCM8" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8 "DHE-RSA-AES256-CCM8" + +# define TLS1_TXT_PSK_WITH_AES_128_CCM "PSK-AES128-CCM" +# define TLS1_TXT_PSK_WITH_AES_256_CCM "PSK-AES256-CCM" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM "DHE-PSK-AES128-CCM" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM "DHE-PSK-AES256-CCM" + +# define TLS1_TXT_PSK_WITH_AES_128_CCM_8 "PSK-AES128-CCM8" +# define TLS1_TXT_PSK_WITH_AES_256_CCM_8 "PSK-AES256-CCM8" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8 "DHE-PSK-AES128-CCM8" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8 "DHE-PSK-AES256-CCM8" + +/* CCM ciphersuites from RFC7251 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM "ECDHE-ECDSA-AES128-CCM" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM "ECDHE-ECDSA-AES256-CCM" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8 "ECDHE-ECDSA-AES128-CCM8" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 "ECDHE-ECDSA-AES256-CCM8" + +/* ECDH HMAC based ciphersuites from RFC5289 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" + +/* TLS v1.2 PSK GCM ciphersuites from RFC5487 */ +# define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" + +/* ECDHE PSK ciphersuites from RFC 5489 */ +# define TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA "ECDHE-PSK-RC4-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "ECDHE-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA "ECDHE-PSK-AES128-CBC-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA "ECDHE-PSK-AES256-CBC-SHA" + +# define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "ECDHE-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "ECDHE-PSK-AES256-CBC-SHA384" + +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA "ECDHE-PSK-NULL-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256 "ECDHE-PSK-NULL-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384 "ECDHE-PSK-NULL-SHA384" + +/* Camellia-CBC ciphersuites from RFC6367 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-ECDSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-ECDSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-ECDSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-ECDSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-RSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-RSA-CAMELLIA256-SHA384" + +/* draft-ietf-tls-chacha20-poly1305-03 */ +# define TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 "ECDHE-RSA-CHACHA20-POLY1305" +# define TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "ECDHE-ECDSA-CHACHA20-POLY1305" +# define TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305 "DHE-RSA-CHACHA20-POLY1305" +# define TLS1_TXT_PSK_WITH_CHACHA20_POLY1305 "PSK-CHACHA20-POLY1305" +# define TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305 "ECDHE-PSK-CHACHA20-POLY1305" +# define TLS1_TXT_DHE_PSK_WITH_CHACHA20_POLY1305 "DHE-PSK-CHACHA20-POLY1305" +# define TLS1_TXT_RSA_PSK_WITH_CHACHA20_POLY1305 "RSA-PSK-CHACHA20-POLY1305" + +/* Aria ciphersuites from RFC6209 */ +# define TLS1_TXT_RSA_WITH_ARIA_128_GCM_SHA256 "ARIA128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_ARIA_256_GCM_SHA384 "ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "DHE-RSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "DHE-RSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_ARIA_128_GCM_SHA256 "DH-RSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_ARIA_256_GCM_SHA384 "DH-RSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "DHE-DSS-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "DHE-DSS-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_ARIA_128_GCM_SHA256 "DH-DSS-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_ARIA_256_GCM_SHA384 "DH-DSS-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_anon_WITH_ARIA_128_GCM_SHA256 "ADH-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_anon_WITH_ARIA_256_GCM_SHA384 "ADH-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ECDSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ECDSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ECDSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ECDSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ARIA256-GCM-SHA384" +# define TLS1_TXT_PSK_WITH_ARIA_128_GCM_SHA256 "PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_ARIA_256_GCM_SHA384 "PSK-ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "DHE-PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "DHE-PSK-ARIA256-GCM-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "RSA-PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "RSA-PSK-ARIA256-GCM-SHA384" + +# define TLS_CT_RSA_SIGN 1 +# define TLS_CT_DSS_SIGN 2 +# define TLS_CT_RSA_FIXED_DH 3 +# define TLS_CT_DSS_FIXED_DH 4 +# define TLS_CT_ECDSA_SIGN 64 +# define TLS_CT_RSA_FIXED_ECDH 65 +# define TLS_CT_ECDSA_FIXED_ECDH 66 +# define TLS_CT_GOST01_SIGN 22 +# define TLS_CT_GOST12_SIGN 238 +# define TLS_CT_GOST12_512_SIGN 239 + +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +# define TLS_CT_NUMBER 10 + +# if defined(SSL3_CT_NUMBER) +# if TLS_CT_NUMBER != SSL3_CT_NUMBER +# error "SSL/TLS CT_NUMBER values do not match" +# endif +# endif + +# define TLS1_FINISH_MAC_LENGTH 12 + +# define TLS_MD_MAX_CONST_SIZE 22 +# define TLS_MD_CLIENT_FINISH_CONST "client finished" +# define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 +# define TLS_MD_SERVER_FINISH_CONST "server finished" +# define TLS_MD_SERVER_FINISH_CONST_SIZE 15 +# define TLS_MD_KEY_EXPANSION_CONST "key expansion" +# define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 +# define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key" +# define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" +# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_IV_BLOCK_CONST "IV block" +# define TLS_MD_IV_BLOCK_CONST_SIZE 8 +# define TLS_MD_MASTER_SECRET_CONST "master secret" +# define TLS_MD_MASTER_SECRET_CONST_SIZE 13 +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST "extended master secret" +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE 22 + +# ifdef CHARSET_EBCDIC +# undef TLS_MD_CLIENT_FINISH_CONST +/* + * client finished + */ +# define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_FINISH_CONST +/* + * server finished + */ +# define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_KEY_EXPANSION_CONST +/* + * key expansion + */ +# define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" + +# undef TLS_MD_CLIENT_WRITE_KEY_CONST +/* + * client write key + */ +# define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_IV_BLOCK_CONST +/* + * IV block + */ +# define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" + +# undef TLS_MD_MASTER_SECRET_CONST +/* + * master secret + */ +# define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# undef TLS_MD_EXTENDED_MASTER_SECRET_CONST +/* + * extended master secret + */ +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST "\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# endif + +/* TLS Session Ticket extension struct */ +struct tls_session_ticket_ext_st { + unsigned short length; + void *data; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin32/include/openssl/ts.h b/openSSL/lin32/include/openssl/ts.h new file mode 100644 index 0000000..3b58aa5 --- /dev/null +++ b/openSSL/lin32/include/openssl/ts.h @@ -0,0 +1,559 @@ +/* + * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TS_H +# define HEADER_TS_H + +# include + +# ifndef OPENSSL_NO_TS +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# include +# include + +typedef struct TS_msg_imprint_st TS_MSG_IMPRINT; +typedef struct TS_req_st TS_REQ; +typedef struct TS_accuracy_st TS_ACCURACY; +typedef struct TS_tst_info_st TS_TST_INFO; + +/* Possible values for status. */ +# define TS_STATUS_GRANTED 0 +# define TS_STATUS_GRANTED_WITH_MODS 1 +# define TS_STATUS_REJECTION 2 +# define TS_STATUS_WAITING 3 +# define TS_STATUS_REVOCATION_WARNING 4 +# define TS_STATUS_REVOCATION_NOTIFICATION 5 + +/* Possible values for failure_info. */ +# define TS_INFO_BAD_ALG 0 +# define TS_INFO_BAD_REQUEST 2 +# define TS_INFO_BAD_DATA_FORMAT 5 +# define TS_INFO_TIME_NOT_AVAILABLE 14 +# define TS_INFO_UNACCEPTED_POLICY 15 +# define TS_INFO_UNACCEPTED_EXTENSION 16 +# define TS_INFO_ADD_INFO_NOT_AVAILABLE 17 +# define TS_INFO_SYSTEM_FAILURE 25 + + +typedef struct TS_status_info_st TS_STATUS_INFO; +typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL; +typedef struct ESS_cert_id ESS_CERT_ID; +typedef struct ESS_signing_cert ESS_SIGNING_CERT; + +DEFINE_STACK_OF(ESS_CERT_ID) + +typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; +typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; + +DEFINE_STACK_OF(ESS_CERT_ID_V2) + +typedef struct TS_resp_st TS_RESP; + +TS_REQ *TS_REQ_new(void); +void TS_REQ_free(TS_REQ *a); +int i2d_TS_REQ(const TS_REQ *a, unsigned char **pp); +TS_REQ *d2i_TS_REQ(TS_REQ **a, const unsigned char **pp, long length); + +TS_REQ *TS_REQ_dup(TS_REQ *a); + +#ifndef OPENSSL_NO_STDIO +TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a); +int i2d_TS_REQ_fp(FILE *fp, TS_REQ *a); +#endif +TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a); +int i2d_TS_REQ_bio(BIO *fp, TS_REQ *a); + +TS_MSG_IMPRINT *TS_MSG_IMPRINT_new(void); +void TS_MSG_IMPRINT_free(TS_MSG_IMPRINT *a); +int i2d_TS_MSG_IMPRINT(const TS_MSG_IMPRINT *a, unsigned char **pp); +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT(TS_MSG_IMPRINT **a, + const unsigned char **pp, long length); + +TS_MSG_IMPRINT *TS_MSG_IMPRINT_dup(TS_MSG_IMPRINT *a); + +#ifndef OPENSSL_NO_STDIO +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT *a); +#endif +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT *a); + +TS_RESP *TS_RESP_new(void); +void TS_RESP_free(TS_RESP *a); +int i2d_TS_RESP(const TS_RESP *a, unsigned char **pp); +TS_RESP *d2i_TS_RESP(TS_RESP **a, const unsigned char **pp, long length); +TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token); +TS_RESP *TS_RESP_dup(TS_RESP *a); + +#ifndef OPENSSL_NO_STDIO +TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a); +int i2d_TS_RESP_fp(FILE *fp, TS_RESP *a); +#endif +TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a); +int i2d_TS_RESP_bio(BIO *bio, TS_RESP *a); + +TS_STATUS_INFO *TS_STATUS_INFO_new(void); +void TS_STATUS_INFO_free(TS_STATUS_INFO *a); +int i2d_TS_STATUS_INFO(const TS_STATUS_INFO *a, unsigned char **pp); +TS_STATUS_INFO *d2i_TS_STATUS_INFO(TS_STATUS_INFO **a, + const unsigned char **pp, long length); +TS_STATUS_INFO *TS_STATUS_INFO_dup(TS_STATUS_INFO *a); + +TS_TST_INFO *TS_TST_INFO_new(void); +void TS_TST_INFO_free(TS_TST_INFO *a); +int i2d_TS_TST_INFO(const TS_TST_INFO *a, unsigned char **pp); +TS_TST_INFO *d2i_TS_TST_INFO(TS_TST_INFO **a, const unsigned char **pp, + long length); +TS_TST_INFO *TS_TST_INFO_dup(TS_TST_INFO *a); + +#ifndef OPENSSL_NO_STDIO +TS_TST_INFO *d2i_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO **a); +int i2d_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO *a); +#endif +TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO **a); +int i2d_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO *a); + +TS_ACCURACY *TS_ACCURACY_new(void); +void TS_ACCURACY_free(TS_ACCURACY *a); +int i2d_TS_ACCURACY(const TS_ACCURACY *a, unsigned char **pp); +TS_ACCURACY *d2i_TS_ACCURACY(TS_ACCURACY **a, const unsigned char **pp, + long length); +TS_ACCURACY *TS_ACCURACY_dup(TS_ACCURACY *a); + +ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_new(void); +void ESS_ISSUER_SERIAL_free(ESS_ISSUER_SERIAL *a); +int i2d_ESS_ISSUER_SERIAL(const ESS_ISSUER_SERIAL *a, unsigned char **pp); +ESS_ISSUER_SERIAL *d2i_ESS_ISSUER_SERIAL(ESS_ISSUER_SERIAL **a, + const unsigned char **pp, + long length); +ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_dup(ESS_ISSUER_SERIAL *a); + +ESS_CERT_ID *ESS_CERT_ID_new(void); +void ESS_CERT_ID_free(ESS_CERT_ID *a); +int i2d_ESS_CERT_ID(const ESS_CERT_ID *a, unsigned char **pp); +ESS_CERT_ID *d2i_ESS_CERT_ID(ESS_CERT_ID **a, const unsigned char **pp, + long length); +ESS_CERT_ID *ESS_CERT_ID_dup(ESS_CERT_ID *a); + +ESS_SIGNING_CERT *ESS_SIGNING_CERT_new(void); +void ESS_SIGNING_CERT_free(ESS_SIGNING_CERT *a); +int i2d_ESS_SIGNING_CERT(const ESS_SIGNING_CERT *a, unsigned char **pp); +ESS_SIGNING_CERT *d2i_ESS_SIGNING_CERT(ESS_SIGNING_CERT **a, + const unsigned char **pp, long length); +ESS_SIGNING_CERT *ESS_SIGNING_CERT_dup(ESS_SIGNING_CERT *a); + +ESS_CERT_ID_V2 *ESS_CERT_ID_V2_new(void); +void ESS_CERT_ID_V2_free(ESS_CERT_ID_V2 *a); +int i2d_ESS_CERT_ID_V2(const ESS_CERT_ID_V2 *a, unsigned char **pp); +ESS_CERT_ID_V2 *d2i_ESS_CERT_ID_V2(ESS_CERT_ID_V2 **a, + const unsigned char **pp, long length); +ESS_CERT_ID_V2 *ESS_CERT_ID_V2_dup(ESS_CERT_ID_V2 *a); + +ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_new(void); +void ESS_SIGNING_CERT_V2_free(ESS_SIGNING_CERT_V2 *a); +int i2d_ESS_SIGNING_CERT_V2(const ESS_SIGNING_CERT_V2 *a, unsigned char **pp); +ESS_SIGNING_CERT_V2 *d2i_ESS_SIGNING_CERT_V2(ESS_SIGNING_CERT_V2 **a, + const unsigned char **pp, + long length); +ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_dup(ESS_SIGNING_CERT_V2 *a); + +int TS_REQ_set_version(TS_REQ *a, long version); +long TS_REQ_get_version(const TS_REQ *a); + +int TS_STATUS_INFO_set_status(TS_STATUS_INFO *a, int i); +const ASN1_INTEGER *TS_STATUS_INFO_get0_status(const TS_STATUS_INFO *a); + +const STACK_OF(ASN1_UTF8STRING) * +TS_STATUS_INFO_get0_text(const TS_STATUS_INFO *a); + +const ASN1_BIT_STRING * +TS_STATUS_INFO_get0_failure_info(const TS_STATUS_INFO *a); + +int TS_REQ_set_msg_imprint(TS_REQ *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_REQ_get_msg_imprint(TS_REQ *a); + +int TS_MSG_IMPRINT_set_algo(TS_MSG_IMPRINT *a, X509_ALGOR *alg); +X509_ALGOR *TS_MSG_IMPRINT_get_algo(TS_MSG_IMPRINT *a); + +int TS_MSG_IMPRINT_set_msg(TS_MSG_IMPRINT *a, unsigned char *d, int len); +ASN1_OCTET_STRING *TS_MSG_IMPRINT_get_msg(TS_MSG_IMPRINT *a); + +int TS_REQ_set_policy_id(TS_REQ *a, const ASN1_OBJECT *policy); +ASN1_OBJECT *TS_REQ_get_policy_id(TS_REQ *a); + +int TS_REQ_set_nonce(TS_REQ *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_REQ_get_nonce(const TS_REQ *a); + +int TS_REQ_set_cert_req(TS_REQ *a, int cert_req); +int TS_REQ_get_cert_req(const TS_REQ *a); + +STACK_OF(X509_EXTENSION) *TS_REQ_get_exts(TS_REQ *a); +void TS_REQ_ext_free(TS_REQ *a); +int TS_REQ_get_ext_count(TS_REQ *a); +int TS_REQ_get_ext_by_NID(TS_REQ *a, int nid, int lastpos); +int TS_REQ_get_ext_by_OBJ(TS_REQ *a, const ASN1_OBJECT *obj, int lastpos); +int TS_REQ_get_ext_by_critical(TS_REQ *a, int crit, int lastpos); +X509_EXTENSION *TS_REQ_get_ext(TS_REQ *a, int loc); +X509_EXTENSION *TS_REQ_delete_ext(TS_REQ *a, int loc); +int TS_REQ_add_ext(TS_REQ *a, X509_EXTENSION *ex, int loc); +void *TS_REQ_get_ext_d2i(TS_REQ *a, int nid, int *crit, int *idx); + +/* Function declarations for TS_REQ defined in ts/ts_req_print.c */ + +int TS_REQ_print_bio(BIO *bio, TS_REQ *a); + +/* Function declarations for TS_RESP defined in ts/ts_resp_utils.c */ + +int TS_RESP_set_status_info(TS_RESP *a, TS_STATUS_INFO *info); +TS_STATUS_INFO *TS_RESP_get_status_info(TS_RESP *a); + +/* Caller loses ownership of PKCS7 and TS_TST_INFO objects. */ +void TS_RESP_set_tst_info(TS_RESP *a, PKCS7 *p7, TS_TST_INFO *tst_info); +PKCS7 *TS_RESP_get_token(TS_RESP *a); +TS_TST_INFO *TS_RESP_get_tst_info(TS_RESP *a); + +int TS_TST_INFO_set_version(TS_TST_INFO *a, long version); +long TS_TST_INFO_get_version(const TS_TST_INFO *a); + +int TS_TST_INFO_set_policy_id(TS_TST_INFO *a, ASN1_OBJECT *policy_id); +ASN1_OBJECT *TS_TST_INFO_get_policy_id(TS_TST_INFO *a); + +int TS_TST_INFO_set_msg_imprint(TS_TST_INFO *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_TST_INFO_get_msg_imprint(TS_TST_INFO *a); + +int TS_TST_INFO_set_serial(TS_TST_INFO *a, const ASN1_INTEGER *serial); +const ASN1_INTEGER *TS_TST_INFO_get_serial(const TS_TST_INFO *a); + +int TS_TST_INFO_set_time(TS_TST_INFO *a, const ASN1_GENERALIZEDTIME *gtime); +const ASN1_GENERALIZEDTIME *TS_TST_INFO_get_time(const TS_TST_INFO *a); + +int TS_TST_INFO_set_accuracy(TS_TST_INFO *a, TS_ACCURACY *accuracy); +TS_ACCURACY *TS_TST_INFO_get_accuracy(TS_TST_INFO *a); + +int TS_ACCURACY_set_seconds(TS_ACCURACY *a, const ASN1_INTEGER *seconds); +const ASN1_INTEGER *TS_ACCURACY_get_seconds(const TS_ACCURACY *a); + +int TS_ACCURACY_set_millis(TS_ACCURACY *a, const ASN1_INTEGER *millis); +const ASN1_INTEGER *TS_ACCURACY_get_millis(const TS_ACCURACY *a); + +int TS_ACCURACY_set_micros(TS_ACCURACY *a, const ASN1_INTEGER *micros); +const ASN1_INTEGER *TS_ACCURACY_get_micros(const TS_ACCURACY *a); + +int TS_TST_INFO_set_ordering(TS_TST_INFO *a, int ordering); +int TS_TST_INFO_get_ordering(const TS_TST_INFO *a); + +int TS_TST_INFO_set_nonce(TS_TST_INFO *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_TST_INFO_get_nonce(const TS_TST_INFO *a); + +int TS_TST_INFO_set_tsa(TS_TST_INFO *a, GENERAL_NAME *tsa); +GENERAL_NAME *TS_TST_INFO_get_tsa(TS_TST_INFO *a); + +STACK_OF(X509_EXTENSION) *TS_TST_INFO_get_exts(TS_TST_INFO *a); +void TS_TST_INFO_ext_free(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_count(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_by_NID(TS_TST_INFO *a, int nid, int lastpos); +int TS_TST_INFO_get_ext_by_OBJ(TS_TST_INFO *a, const ASN1_OBJECT *obj, + int lastpos); +int TS_TST_INFO_get_ext_by_critical(TS_TST_INFO *a, int crit, int lastpos); +X509_EXTENSION *TS_TST_INFO_get_ext(TS_TST_INFO *a, int loc); +X509_EXTENSION *TS_TST_INFO_delete_ext(TS_TST_INFO *a, int loc); +int TS_TST_INFO_add_ext(TS_TST_INFO *a, X509_EXTENSION *ex, int loc); +void *TS_TST_INFO_get_ext_d2i(TS_TST_INFO *a, int nid, int *crit, int *idx); + +/* + * Declarations related to response generation, defined in ts/ts_resp_sign.c. + */ + +/* Optional flags for response generation. */ + +/* Don't include the TSA name in response. */ +# define TS_TSA_NAME 0x01 + +/* Set ordering to true in response. */ +# define TS_ORDERING 0x02 + +/* + * Include the signer certificate and the other specified certificates in + * the ESS signing certificate attribute beside the PKCS7 signed data. + * Only the signer certificates is included by default. + */ +# define TS_ESS_CERT_ID_CHAIN 0x04 + +/* Forward declaration. */ +struct TS_resp_ctx; + +/* This must return a unique number less than 160 bits long. */ +typedef ASN1_INTEGER *(*TS_serial_cb) (struct TS_resp_ctx *, void *); + +/* + * This must return the seconds and microseconds since Jan 1, 1970 in the sec + * and usec variables allocated by the caller. Return non-zero for success + * and zero for failure. + */ +typedef int (*TS_time_cb) (struct TS_resp_ctx *, void *, long *sec, + long *usec); + +/* + * This must process the given extension. It can modify the TS_TST_INFO + * object of the context. Return values: !0 (processed), 0 (error, it must + * set the status info/failure info of the response). + */ +typedef int (*TS_extension_cb) (struct TS_resp_ctx *, X509_EXTENSION *, + void *); + +typedef struct TS_resp_ctx TS_RESP_CTX; + +DEFINE_STACK_OF_CONST(EVP_MD) + +/* Creates a response context that can be used for generating responses. */ +TS_RESP_CTX *TS_RESP_CTX_new(void); +void TS_RESP_CTX_free(TS_RESP_CTX *ctx); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_cert(TS_RESP_CTX *ctx, X509 *signer); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_key(TS_RESP_CTX *ctx, EVP_PKEY *key); + +int TS_RESP_CTX_set_signer_digest(TS_RESP_CTX *ctx, + const EVP_MD *signer_digest); +int TS_RESP_CTX_set_ess_cert_id_digest(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *def_policy); + +/* No additional certs are included in the response by default. */ +int TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, STACK_OF(X509) *certs); + +/* + * Adds a new acceptable policy, only the default policy is accepted by + * default. + */ +int TS_RESP_CTX_add_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *policy); + +/* + * Adds a new acceptable message digest. Note that no message digests are + * accepted by default. The md argument is shared with the caller. + */ +int TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* Accuracy is not included by default. */ +int TS_RESP_CTX_set_accuracy(TS_RESP_CTX *ctx, + int secs, int millis, int micros); + +/* + * Clock precision digits, i.e. the number of decimal digits: '0' means sec, + * '3' msec, '6' usec, and so on. Default is 0. + */ +int TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx, + unsigned clock_precision_digits); +/* At most we accept usec precision. */ +# define TS_MAX_CLOCK_PRECISION_DIGITS 6 + +/* Maximum status message length */ +# define TS_MAX_STATUS_LENGTH (1024 * 1024) + +/* No flags are set by default. */ +void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags); + +/* Default callback always returns a constant. */ +void TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data); + +/* Default callback uses the gettimeofday() and gmtime() system calls. */ +void TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data); + +/* + * Default callback rejects all extensions. The extension callback is called + * when the TS_TST_INFO object is already set up and not signed yet. + */ +/* FIXME: extension handling is not tested yet. */ +void TS_RESP_CTX_set_extension_cb(TS_RESP_CTX *ctx, + TS_extension_cb cb, void *data); + +/* The following methods can be used in the callbacks. */ +int TS_RESP_CTX_set_status_info(TS_RESP_CTX *ctx, + int status, const char *text); + +/* Sets the status info only if it is still TS_STATUS_GRANTED. */ +int TS_RESP_CTX_set_status_info_cond(TS_RESP_CTX *ctx, + int status, const char *text); + +int TS_RESP_CTX_add_failure_info(TS_RESP_CTX *ctx, int failure); + +/* The get methods below can be used in the extension callback. */ +TS_REQ *TS_RESP_CTX_get_request(TS_RESP_CTX *ctx); + +TS_TST_INFO *TS_RESP_CTX_get_tst_info(TS_RESP_CTX *ctx); + +/* + * Creates the signed TS_TST_INFO and puts it in TS_RESP. + * In case of errors it sets the status info properly. + * Returns NULL only in case of memory allocation/fatal error. + */ +TS_RESP *TS_RESP_create_response(TS_RESP_CTX *ctx, BIO *req_bio); + +/* + * Declarations related to response verification, + * they are defined in ts/ts_resp_verify.c. + */ + +int TS_RESP_verify_signature(PKCS7 *token, STACK_OF(X509) *certs, + X509_STORE *store, X509 **signer_out); + +/* Context structure for the generic verify method. */ + +/* Verify the signer's certificate and the signature of the response. */ +# define TS_VFY_SIGNATURE (1u << 0) +/* Verify the version number of the response. */ +# define TS_VFY_VERSION (1u << 1) +/* Verify if the policy supplied by the user matches the policy of the TSA. */ +# define TS_VFY_POLICY (1u << 2) +/* + * Verify the message imprint provided by the user. This flag should not be + * specified with TS_VFY_DATA. + */ +# define TS_VFY_IMPRINT (1u << 3) +/* + * Verify the message imprint computed by the verify method from the user + * provided data and the MD algorithm of the response. This flag should not + * be specified with TS_VFY_IMPRINT. + */ +# define TS_VFY_DATA (1u << 4) +/* Verify the nonce value. */ +# define TS_VFY_NONCE (1u << 5) +/* Verify if the TSA name field matches the signer certificate. */ +# define TS_VFY_SIGNER (1u << 6) +/* Verify if the TSA name field equals to the user provided name. */ +# define TS_VFY_TSA_NAME (1u << 7) + +/* You can use the following convenience constants. */ +# define TS_VFY_ALL_IMPRINT (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_IMPRINT \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) +# define TS_VFY_ALL_DATA (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_DATA \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) + +typedef struct TS_verify_ctx TS_VERIFY_CTX; + +int TS_RESP_verify_response(TS_VERIFY_CTX *ctx, TS_RESP *response); +int TS_RESP_verify_token(TS_VERIFY_CTX *ctx, PKCS7 *token); + +/* + * Declarations related to response verification context, + */ +TS_VERIFY_CTX *TS_VERIFY_CTX_new(void); +void TS_VERIFY_CTX_init(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_free(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_cleanup(TS_VERIFY_CTX *ctx); +int TS_VERIFY_CTX_set_flags(TS_VERIFY_CTX *ctx, int f); +int TS_VERIFY_CTX_add_flags(TS_VERIFY_CTX *ctx, int f); +BIO *TS_VERIFY_CTX_set_data(TS_VERIFY_CTX *ctx, BIO *b); +unsigned char *TS_VERIFY_CTX_set_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +X509_STORE *TS_VERIFY_CTX_set_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +STACK_OF(X509) *TS_VERIFY_CTS_set_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs); + +/*- + * If ctx is NULL, it allocates and returns a new object, otherwise + * it returns ctx. It initialises all the members as follows: + * flags = TS_VFY_ALL_IMPRINT & ~(TS_VFY_TSA_NAME | TS_VFY_SIGNATURE) + * certs = NULL + * store = NULL + * policy = policy from the request or NULL if absent (in this case + * TS_VFY_POLICY is cleared from flags as well) + * md_alg = MD algorithm from request + * imprint, imprint_len = imprint from request + * data = NULL + * nonce, nonce_len = nonce from the request or NULL if absent (in this case + * TS_VFY_NONCE is cleared from flags as well) + * tsa_name = NULL + * Important: after calling this method TS_VFY_SIGNATURE should be added! + */ +TS_VERIFY_CTX *TS_REQ_to_TS_VERIFY_CTX(TS_REQ *req, TS_VERIFY_CTX *ctx); + +/* Function declarations for TS_RESP defined in ts/ts_resp_print.c */ + +int TS_RESP_print_bio(BIO *bio, TS_RESP *a); +int TS_STATUS_INFO_print_bio(BIO *bio, TS_STATUS_INFO *a); +int TS_TST_INFO_print_bio(BIO *bio, TS_TST_INFO *a); + +/* Common utility functions defined in ts/ts_lib.c */ + +int TS_ASN1_INTEGER_print_bio(BIO *bio, const ASN1_INTEGER *num); +int TS_OBJ_print_bio(BIO *bio, const ASN1_OBJECT *obj); +int TS_ext_print_bio(BIO *bio, const STACK_OF(X509_EXTENSION) *extensions); +int TS_X509_ALGOR_print_bio(BIO *bio, const X509_ALGOR *alg); +int TS_MSG_IMPRINT_print_bio(BIO *bio, TS_MSG_IMPRINT *msg); + +/* + * Function declarations for handling configuration options, defined in + * ts/ts_conf.c + */ + +X509 *TS_CONF_load_cert(const char *file); +STACK_OF(X509) *TS_CONF_load_certs(const char *file); +EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass); +const char *TS_CONF_get_tsa_section(CONF *conf, const char *section); +int TS_CONF_set_serial(CONF *conf, const char *section, TS_serial_cb cb, + TS_RESP_CTX *ctx); +#ifndef OPENSSL_NO_ENGINE +int TS_CONF_set_crypto_device(CONF *conf, const char *section, + const char *device); +int TS_CONF_set_default_engine(const char *name); +#endif +int TS_CONF_set_signer_cert(CONF *conf, const char *section, + const char *cert, TS_RESP_CTX *ctx); +int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_key(CONF *conf, const char *section, + const char *key, const char *pass, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_digest(CONF *conf, const char *section, + const char *md, TS_RESP_CTX *ctx); +int TS_CONF_set_def_policy(CONF *conf, const char *section, + const char *policy, TS_RESP_CTX *ctx); +int TS_CONF_set_policies(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_digests(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_accuracy(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_clock_precision_digits(CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ordering(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_tsa_name(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_chain(CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_digest(CONF *conf, const char *section, + TS_RESP_CTX *ctx); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin32/include/openssl/tserr.h b/openSSL/lin32/include/openssl/tserr.h new file mode 100644 index 0000000..07f2333 --- /dev/null +++ b/openSSL/lin32/include/openssl/tserr.h @@ -0,0 +1,132 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TSERR_H +# define HEADER_TSERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_TS + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_TS_strings(void); + +/* + * TS function codes. + */ +# define TS_F_DEF_SERIAL_CB 110 +# define TS_F_DEF_TIME_CB 111 +# define TS_F_ESS_ADD_SIGNING_CERT 112 +# define TS_F_ESS_ADD_SIGNING_CERT_V2 147 +# define TS_F_ESS_CERT_ID_NEW_INIT 113 +# define TS_F_ESS_CERT_ID_V2_NEW_INIT 156 +# define TS_F_ESS_SIGNING_CERT_NEW_INIT 114 +# define TS_F_ESS_SIGNING_CERT_V2_NEW_INIT 157 +# define TS_F_INT_TS_RESP_VERIFY_TOKEN 149 +# define TS_F_PKCS7_TO_TS_TST_INFO 148 +# define TS_F_TS_ACCURACY_SET_MICROS 115 +# define TS_F_TS_ACCURACY_SET_MILLIS 116 +# define TS_F_TS_ACCURACY_SET_SECONDS 117 +# define TS_F_TS_CHECK_IMPRINTS 100 +# define TS_F_TS_CHECK_NONCES 101 +# define TS_F_TS_CHECK_POLICY 102 +# define TS_F_TS_CHECK_SIGNING_CERTS 103 +# define TS_F_TS_CHECK_STATUS_INFO 104 +# define TS_F_TS_COMPUTE_IMPRINT 145 +# define TS_F_TS_CONF_INVALID 151 +# define TS_F_TS_CONF_LOAD_CERT 153 +# define TS_F_TS_CONF_LOAD_CERTS 154 +# define TS_F_TS_CONF_LOAD_KEY 155 +# define TS_F_TS_CONF_LOOKUP_FAIL 152 +# define TS_F_TS_CONF_SET_DEFAULT_ENGINE 146 +# define TS_F_TS_GET_STATUS_TEXT 105 +# define TS_F_TS_MSG_IMPRINT_SET_ALGO 118 +# define TS_F_TS_REQ_SET_MSG_IMPRINT 119 +# define TS_F_TS_REQ_SET_NONCE 120 +# define TS_F_TS_REQ_SET_POLICY_ID 121 +# define TS_F_TS_RESP_CREATE_RESPONSE 122 +# define TS_F_TS_RESP_CREATE_TST_INFO 123 +# define TS_F_TS_RESP_CTX_ADD_FAILURE_INFO 124 +# define TS_F_TS_RESP_CTX_ADD_MD 125 +# define TS_F_TS_RESP_CTX_ADD_POLICY 126 +# define TS_F_TS_RESP_CTX_NEW 127 +# define TS_F_TS_RESP_CTX_SET_ACCURACY 128 +# define TS_F_TS_RESP_CTX_SET_CERTS 129 +# define TS_F_TS_RESP_CTX_SET_DEF_POLICY 130 +# define TS_F_TS_RESP_CTX_SET_SIGNER_CERT 131 +# define TS_F_TS_RESP_CTX_SET_STATUS_INFO 132 +# define TS_F_TS_RESP_GET_POLICY 133 +# define TS_F_TS_RESP_SET_GENTIME_WITH_PRECISION 134 +# define TS_F_TS_RESP_SET_STATUS_INFO 135 +# define TS_F_TS_RESP_SET_TST_INFO 150 +# define TS_F_TS_RESP_SIGN 136 +# define TS_F_TS_RESP_VERIFY_SIGNATURE 106 +# define TS_F_TS_TST_INFO_SET_ACCURACY 137 +# define TS_F_TS_TST_INFO_SET_MSG_IMPRINT 138 +# define TS_F_TS_TST_INFO_SET_NONCE 139 +# define TS_F_TS_TST_INFO_SET_POLICY_ID 140 +# define TS_F_TS_TST_INFO_SET_SERIAL 141 +# define TS_F_TS_TST_INFO_SET_TIME 142 +# define TS_F_TS_TST_INFO_SET_TSA 143 +# define TS_F_TS_VERIFY 108 +# define TS_F_TS_VERIFY_CERT 109 +# define TS_F_TS_VERIFY_CTX_NEW 144 + +/* + * TS reason codes. + */ +# define TS_R_BAD_PKCS7_TYPE 132 +# define TS_R_BAD_TYPE 133 +# define TS_R_CANNOT_LOAD_CERT 137 +# define TS_R_CANNOT_LOAD_KEY 138 +# define TS_R_CERTIFICATE_VERIFY_ERROR 100 +# define TS_R_COULD_NOT_SET_ENGINE 127 +# define TS_R_COULD_NOT_SET_TIME 115 +# define TS_R_DETACHED_CONTENT 134 +# define TS_R_ESS_ADD_SIGNING_CERT_ERROR 116 +# define TS_R_ESS_ADD_SIGNING_CERT_V2_ERROR 139 +# define TS_R_ESS_SIGNING_CERTIFICATE_ERROR 101 +# define TS_R_INVALID_NULL_POINTER 102 +# define TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE 117 +# define TS_R_MESSAGE_IMPRINT_MISMATCH 103 +# define TS_R_NONCE_MISMATCH 104 +# define TS_R_NONCE_NOT_RETURNED 105 +# define TS_R_NO_CONTENT 106 +# define TS_R_NO_TIME_STAMP_TOKEN 107 +# define TS_R_PKCS7_ADD_SIGNATURE_ERROR 118 +# define TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR 119 +# define TS_R_PKCS7_TO_TS_TST_INFO_FAILED 129 +# define TS_R_POLICY_MISMATCH 108 +# define TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 120 +# define TS_R_RESPONSE_SETUP_ERROR 121 +# define TS_R_SIGNATURE_FAILURE 109 +# define TS_R_THERE_MUST_BE_ONE_SIGNER 110 +# define TS_R_TIME_SYSCALL_ERROR 122 +# define TS_R_TOKEN_NOT_PRESENT 130 +# define TS_R_TOKEN_PRESENT 131 +# define TS_R_TSA_NAME_MISMATCH 111 +# define TS_R_TSA_UNTRUSTED 112 +# define TS_R_TST_INFO_SETUP_ERROR 123 +# define TS_R_TS_DATASIGN 124 +# define TS_R_UNACCEPTABLE_POLICY 125 +# define TS_R_UNSUPPORTED_MD_ALGORITHM 126 +# define TS_R_UNSUPPORTED_VERSION 113 +# define TS_R_VAR_BAD_VALUE 135 +# define TS_R_VAR_LOOKUP_FAILURE 136 +# define TS_R_WRONG_CONTENT_TYPE 114 + +# endif +#endif diff --git a/openSSL/lin32/include/openssl/txt_db.h b/openSSL/lin32/include/openssl/txt_db.h new file mode 100644 index 0000000..ec981a4 --- /dev/null +++ b/openSSL/lin32/include/openssl/txt_db.h @@ -0,0 +1,57 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TXT_DB_H +# define HEADER_TXT_DB_H + +# include +# include +# include +# include + +# define DB_ERROR_OK 0 +# define DB_ERROR_MALLOC 1 +# define DB_ERROR_INDEX_CLASH 2 +# define DB_ERROR_INDEX_OUT_OF_RANGE 3 +# define DB_ERROR_NO_INDEX 4 +# define DB_ERROR_INSERT_INDEX_CLASH 5 +# define DB_ERROR_WRONG_NUM_FIELDS 6 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OPENSSL_STRING *OPENSSL_PSTRING; +DEFINE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING) + +typedef struct txt_db_st { + int num_fields; + STACK_OF(OPENSSL_PSTRING) *data; + LHASH_OF(OPENSSL_STRING) **index; + int (**qual) (OPENSSL_STRING *); + long error; + long arg1; + long arg2; + OPENSSL_STRING *arg_row; +} TXT_DB; + +TXT_DB *TXT_DB_read(BIO *in, int num); +long TXT_DB_write(BIO *out, TXT_DB *db); +int TXT_DB_create_index(TXT_DB *db, int field, int (*qual) (OPENSSL_STRING *), + OPENSSL_LH_HASHFUNC hash, OPENSSL_LH_COMPFUNC cmp); +void TXT_DB_free(TXT_DB *db); +OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx, + OPENSSL_STRING *value); +int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *value); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin32/include/openssl/ui.h b/openSSL/lin32/include/openssl/ui.h new file mode 100644 index 0000000..7c721ec --- /dev/null +++ b/openSSL/lin32/include/openssl/ui.h @@ -0,0 +1,368 @@ +/* + * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_UI_H +# define HEADER_UI_H + +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# include +# include +# include + +/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ +# if OPENSSL_API_COMPAT < 0x10200000L +# ifdef OPENSSL_NO_UI_CONSOLE +# define OPENSSL_NO_UI +# endif +# endif + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * All the following functions return -1 or NULL on error and in some cases + * (UI_process()) -2 if interrupted or in some other way cancelled. When + * everything is fine, they return 0, a positive value or a non-NULL pointer, + * all depending on their purpose. + */ + +/* Creators and destructor. */ +UI *UI_new(void); +UI *UI_new_method(const UI_METHOD *method); +void UI_free(UI *ui); + +/*- + The following functions are used to add strings to be printed and prompt + strings to prompt for data. The names are UI_{add,dup}__string + and UI_{add,dup}_input_boolean. + + UI_{add,dup}__string have the following meanings: + add add a text or prompt string. The pointers given to these + functions are used verbatim, no copying is done. + dup make a copy of the text or prompt string, then add the copy + to the collection of strings in the user interface. + + The function is a name for the functionality that the given + string shall be used for. It can be one of: + input use the string as data prompt. + verify use the string as verification prompt. This + is used to verify a previous input. + info use the string for informational output. + error use the string for error output. + Honestly, there's currently no difference between info and error for the + moment. + + UI_{add,dup}_input_boolean have the same semantics for "add" and "dup", + and are typically used when one wants to prompt for a yes/no response. + + All of the functions in this group take a UI and a prompt string. + The string input and verify addition functions also take a flag argument, + a buffer for the result to end up with, a minimum input size and a maximum + input size (the result buffer MUST be large enough to be able to contain + the maximum number of characters). Additionally, the verify addition + functions takes another buffer to compare the result against. + The boolean input functions take an action description string (which should + be safe to ignore if the expected user action is obvious, for example with + a dialog box with an OK button and a Cancel button), a string of acceptable + characters to mean OK and to mean Cancel. The two last strings are checked + to make sure they don't have common characters. Additionally, the same + flag argument as for the string input is taken, as well as a result buffer. + The result buffer is required to be at least one byte long. Depending on + the answer, the first character from the OK or the Cancel character strings + will be stored in the first byte of the result buffer. No NUL will be + added, so the result is *not* a string. + + On success, the all return an index of the added information. That index + is useful when retrieving results with UI_get0_result(). */ +int UI_add_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_dup_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_add_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_dup_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_add_info_string(UI *ui, const char *text); +int UI_dup_info_string(UI *ui, const char *text); +int UI_add_error_string(UI *ui, const char *text); +int UI_dup_error_string(UI *ui, const char *text); + +/* These are the possible flags. They can be or'ed together. */ +/* Use to have echoing of input */ +# define UI_INPUT_FLAG_ECHO 0x01 +/* + * Use a default password. Where that password is found is completely up to + * the application, it might for example be in the user data set with + * UI_add_user_data(). It is not recommended to have more than one input in + * each UI being marked with this flag, or the application might get + * confused. + */ +# define UI_INPUT_FLAG_DEFAULT_PWD 0x02 + +/*- + * The user of these routines may want to define flags of their own. The core + * UI won't look at those, but will pass them on to the method routines. They + * must use higher bits so they don't get confused with the UI bits above. + * UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good + * example of use is this: + * + * #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE) + * +*/ +# define UI_INPUT_FLAG_USER_BASE 16 + +/*- + * The following function helps construct a prompt. object_desc is a + * textual short description of the object, for example "pass phrase", + * and object_name is the name of the object (might be a card name or + * a file name. + * The returned string shall always be allocated on the heap with + * OPENSSL_malloc(), and need to be free'd with OPENSSL_free(). + * + * If the ui_method doesn't contain a pointer to a user-defined prompt + * constructor, a default string is built, looking like this: + * + * "Enter {object_desc} for {object_name}:" + * + * So, if object_desc has the value "pass phrase" and object_name has + * the value "foo.key", the resulting string is: + * + * "Enter pass phrase for foo.key:" +*/ +char *UI_construct_prompt(UI *ui_method, + const char *object_desc, const char *object_name); + +/* + * The following function is used to store a pointer to user-specific data. + * Any previous such pointer will be returned and replaced. + * + * For callback purposes, this function makes a lot more sense than using + * ex_data, since the latter requires that different parts of OpenSSL or + * applications share the same ex_data index. + * + * Note that the UI_OpenSSL() method completely ignores the user data. Other + * methods may not, however. + */ +void *UI_add_user_data(UI *ui, void *user_data); +/* + * Alternatively, this function is used to duplicate the user data. + * This uses the duplicator method function. The destroy function will + * be used to free the user data in this case. + */ +int UI_dup_user_data(UI *ui, void *user_data); +/* We need a user data retrieving function as well. */ +void *UI_get0_user_data(UI *ui); + +/* Return the result associated with a prompt given with the index i. */ +const char *UI_get0_result(UI *ui, int i); +int UI_get_result_length(UI *ui, int i); + +/* When all strings have been added, process the whole thing. */ +int UI_process(UI *ui); + +/* + * Give a user interface parameterised control commands. This can be used to + * send down an integer, a data pointer or a function pointer, as well as be + * used to get information from a UI. + */ +int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f) (void)); + +/* The commands */ +/* + * Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the + * OpenSSL error stack before printing any info or added error messages and + * before any prompting. + */ +# define UI_CTRL_PRINT_ERRORS 1 +/* + * Check if a UI_process() is possible to do again with the same instance of + * a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0 + * if not. + */ +# define UI_CTRL_IS_REDOABLE 2 + +/* Some methods may use extra data */ +# define UI_set_app_data(s,arg) UI_set_ex_data(s,0,arg) +# define UI_get_app_data(s) UI_get_ex_data(s,0) + +# define UI_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef) +int UI_set_ex_data(UI *r, int idx, void *arg); +void *UI_get_ex_data(UI *r, int idx); + +/* Use specific methods instead of the built-in one */ +void UI_set_default_method(const UI_METHOD *meth); +const UI_METHOD *UI_get_default_method(void); +const UI_METHOD *UI_get_method(UI *ui); +const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth); + +# ifndef OPENSSL_NO_UI_CONSOLE + +/* The method with all the built-in thingies */ +UI_METHOD *UI_OpenSSL(void); + +# endif + +/* + * NULL method. Literally does nothing, but may serve as a placeholder + * to avoid internal default. + */ +const UI_METHOD *UI_null(void); + +/* ---------- For method writers ---------- */ +/*- + A method contains a number of functions that implement the low level + of the User Interface. The functions are: + + an opener This function starts a session, maybe by opening + a channel to a tty, or by opening a window. + a writer This function is called to write a given string, + maybe to the tty, maybe as a field label in a + window. + a flusher This function is called to flush everything that + has been output so far. It can be used to actually + display a dialog box after it has been built. + a reader This function is called to read a given prompt, + maybe from the tty, maybe from a field in a + window. Note that it's called with all string + structures, not only the prompt ones, so it must + check such things itself. + a closer This function closes the session, maybe by closing + the channel to the tty, or closing the window. + + All these functions are expected to return: + + 0 on error. + 1 on success. + -1 on out-of-band events, for example if some prompting has + been canceled (by pressing Ctrl-C, for example). This is + only checked when returned by the flusher or the reader. + + The way this is used, the opener is first called, then the writer for all + strings, then the flusher, then the reader for all strings and finally the + closer. Note that if you want to prompt from a terminal or other command + line interface, the best is to have the reader also write the prompts + instead of having the writer do it. If you want to prompt from a dialog + box, the writer can be used to build up the contents of the box, and the + flusher to actually display the box and run the event loop until all data + has been given, after which the reader only grabs the given data and puts + them back into the UI strings. + + All method functions take a UI as argument. Additionally, the writer and + the reader take a UI_STRING. +*/ + +/* + * The UI_STRING type is the data structure that contains all the needed info + * about a string or a prompt, including test data for a verification prompt. + */ +typedef struct ui_string_st UI_STRING; +DEFINE_STACK_OF(UI_STRING) + +/* + * The different types of strings that are currently supported. This is only + * needed by method authors. + */ +enum UI_string_types { + UIT_NONE = 0, + UIT_PROMPT, /* Prompt for a string */ + UIT_VERIFY, /* Prompt for a string and verify */ + UIT_BOOLEAN, /* Prompt for a yes/no response */ + UIT_INFO, /* Send info to the user */ + UIT_ERROR /* Send an error message to the user */ +}; + +/* Create and manipulate methods */ +UI_METHOD *UI_create_method(const char *name); +void UI_destroy_method(UI_METHOD *ui_method); +int UI_method_set_opener(UI_METHOD *method, int (*opener) (UI *ui)); +int UI_method_set_writer(UI_METHOD *method, + int (*writer) (UI *ui, UI_STRING *uis)); +int UI_method_set_flusher(UI_METHOD *method, int (*flusher) (UI *ui)); +int UI_method_set_reader(UI_METHOD *method, + int (*reader) (UI *ui, UI_STRING *uis)); +int UI_method_set_closer(UI_METHOD *method, int (*closer) (UI *ui)); +int UI_method_set_data_duplicator(UI_METHOD *method, + void *(*duplicator) (UI *ui, void *ui_data), + void (*destructor)(UI *ui, void *ui_data)); +int UI_method_set_prompt_constructor(UI_METHOD *method, + char *(*prompt_constructor) (UI *ui, + const char + *object_desc, + const char + *object_name)); +int UI_method_set_ex_data(UI_METHOD *method, int idx, void *data); +int (*UI_method_get_opener(const UI_METHOD *method)) (UI *); +int (*UI_method_get_writer(const UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_flusher(const UI_METHOD *method)) (UI *); +int (*UI_method_get_reader(const UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_closer(const UI_METHOD *method)) (UI *); +char *(*UI_method_get_prompt_constructor(const UI_METHOD *method)) + (UI *, const char *, const char *); +void *(*UI_method_get_data_duplicator(const UI_METHOD *method)) (UI *, void *); +void (*UI_method_get_data_destructor(const UI_METHOD *method)) (UI *, void *); +const void *UI_method_get_ex_data(const UI_METHOD *method, int idx); + +/* + * The following functions are helpers for method writers to access relevant + * data from a UI_STRING. + */ + +/* Return type of the UI_STRING */ +enum UI_string_types UI_get_string_type(UI_STRING *uis); +/* Return input flags of the UI_STRING */ +int UI_get_input_flags(UI_STRING *uis); +/* Return the actual string to output (the prompt, info or error) */ +const char *UI_get0_output_string(UI_STRING *uis); +/* + * Return the optional action string to output (the boolean prompt + * instruction) + */ +const char *UI_get0_action_string(UI_STRING *uis); +/* Return the result of a prompt */ +const char *UI_get0_result_string(UI_STRING *uis); +int UI_get_result_string_length(UI_STRING *uis); +/* + * Return the string to test the result against. Only useful with verifies. + */ +const char *UI_get0_test_string(UI_STRING *uis); +/* Return the required minimum size of the result */ +int UI_get_result_minsize(UI_STRING *uis); +/* Return the required maximum size of the result */ +int UI_get_result_maxsize(UI_STRING *uis); +/* Set the result of a UI_STRING. */ +int UI_set_result(UI *ui, UI_STRING *uis, const char *result); +int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len); + +/* A couple of popular utility functions */ +int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt, + int verify); +int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt, + int verify); +UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/uierr.h b/openSSL/lin32/include/openssl/uierr.h new file mode 100644 index 0000000..bd68864 --- /dev/null +++ b/openSSL/lin32/include/openssl/uierr.h @@ -0,0 +1,65 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_UIERR_H +# define HEADER_UIERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_UI_strings(void); + +/* + * UI function codes. + */ +# define UI_F_CLOSE_CONSOLE 115 +# define UI_F_ECHO_CONSOLE 116 +# define UI_F_GENERAL_ALLOCATE_BOOLEAN 108 +# define UI_F_GENERAL_ALLOCATE_PROMPT 109 +# define UI_F_NOECHO_CONSOLE 117 +# define UI_F_OPEN_CONSOLE 114 +# define UI_F_UI_CONSTRUCT_PROMPT 121 +# define UI_F_UI_CREATE_METHOD 112 +# define UI_F_UI_CTRL 111 +# define UI_F_UI_DUP_ERROR_STRING 101 +# define UI_F_UI_DUP_INFO_STRING 102 +# define UI_F_UI_DUP_INPUT_BOOLEAN 110 +# define UI_F_UI_DUP_INPUT_STRING 103 +# define UI_F_UI_DUP_USER_DATA 118 +# define UI_F_UI_DUP_VERIFY_STRING 106 +# define UI_F_UI_GET0_RESULT 107 +# define UI_F_UI_GET_RESULT_LENGTH 119 +# define UI_F_UI_NEW_METHOD 104 +# define UI_F_UI_PROCESS 113 +# define UI_F_UI_SET_RESULT 105 +# define UI_F_UI_SET_RESULT_EX 120 + +/* + * UI reason codes. + */ +# define UI_R_COMMON_OK_AND_CANCEL_CHARACTERS 104 +# define UI_R_INDEX_TOO_LARGE 102 +# define UI_R_INDEX_TOO_SMALL 103 +# define UI_R_NO_RESULT_BUFFER 105 +# define UI_R_PROCESSING_ERROR 107 +# define UI_R_RESULT_TOO_LARGE 100 +# define UI_R_RESULT_TOO_SMALL 101 +# define UI_R_SYSASSIGN_ERROR 109 +# define UI_R_SYSDASSGN_ERROR 110 +# define UI_R_SYSQIOW_ERROR 111 +# define UI_R_UNKNOWN_CONTROL_COMMAND 106 +# define UI_R_UNKNOWN_TTYGET_ERRNO_VALUE 108 +# define UI_R_USER_DATA_DUPLICATION_UNSUPPORTED 112 + +#endif diff --git a/openSSL/lin32/include/openssl/whrlpool.h b/openSSL/lin32/include/openssl/whrlpool.h new file mode 100644 index 0000000..20ea350 --- /dev/null +++ b/openSSL/lin32/include/openssl/whrlpool.h @@ -0,0 +1,48 @@ +/* + * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_WHRLPOOL_H +# define HEADER_WHRLPOOL_H + +#include + +# ifndef OPENSSL_NO_WHIRLPOOL +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define WHIRLPOOL_DIGEST_LENGTH (512/8) +# define WHIRLPOOL_BBLOCK 512 +# define WHIRLPOOL_COUNTER (256/8) + +typedef struct { + union { + unsigned char c[WHIRLPOOL_DIGEST_LENGTH]; + /* double q is here to ensure 64-bit alignment */ + double q[WHIRLPOOL_DIGEST_LENGTH / sizeof(double)]; + } H; + unsigned char data[WHIRLPOOL_BBLOCK / 8]; + unsigned int bitoff; + size_t bitlen[WHIRLPOOL_COUNTER / sizeof(size_t)]; +} WHIRLPOOL_CTX; + +int WHIRLPOOL_Init(WHIRLPOOL_CTX *c); +int WHIRLPOOL_Update(WHIRLPOOL_CTX *c, const void *inp, size_t bytes); +void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, const void *inp, size_t bits); +int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c); +unsigned char *WHIRLPOOL(const void *inp, size_t bytes, unsigned char *md); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin32/include/openssl/x509.h b/openSSL/lin32/include/openssl/x509.h new file mode 100644 index 0000000..3ff86ec --- /dev/null +++ b/openSSL/lin32/include/openssl/x509.h @@ -0,0 +1,1050 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509_H +# define HEADER_X509_H + +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Flags for X509_get_signature_info() */ +/* Signature info is valid */ +# define X509_SIG_INFO_VALID 0x1 +/* Signature is suitable for TLS use */ +# define X509_SIG_INFO_TLS 0x2 + +# define X509_FILETYPE_PEM 1 +# define X509_FILETYPE_ASN1 2 +# define X509_FILETYPE_DEFAULT 3 + +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 +# define X509v3_KU_NON_REPUDIATION 0x0040 +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 +# define X509v3_KU_KEY_AGREEMENT 0x0008 +# define X509v3_KU_KEY_CERT_SIGN 0x0004 +# define X509v3_KU_CRL_SIGN 0x0002 +# define X509v3_KU_ENCIPHER_ONLY 0x0001 +# define X509v3_KU_DECIPHER_ONLY 0x8000 +# define X509v3_KU_UNDEF 0xffff + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */ ; + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +typedef struct X509_sig_st X509_SIG; + +typedef struct X509_name_entry_st X509_NAME_ENTRY; + +DEFINE_STACK_OF(X509_NAME_ENTRY) + +DEFINE_STACK_OF(X509_NAME) + +# define X509_EX_V_NETSCAPE_HACK 0x8000 +# define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st X509_EXTENSION; + +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; + +DEFINE_STACK_OF(X509_EXTENSION) + +typedef struct x509_attributes_st X509_ATTRIBUTE; + +DEFINE_STACK_OF(X509_ATTRIBUTE) + +typedef struct X509_req_info_st X509_REQ_INFO; + +typedef struct X509_req_st X509_REQ; + +typedef struct x509_cert_aux_st X509_CERT_AUX; + +typedef struct x509_cinf_st X509_CINF; + +DEFINE_STACK_OF(X509) + +/* This is used for a table of trust checking functions */ + +typedef struct x509_trust_st { + int trust; + int flags; + int (*check_trust) (struct x509_trust_st *, X509 *, int); + char *name; + int arg1; + void *arg2; +} X509_TRUST; + +DEFINE_STACK_OF(X509_TRUST) + +/* standard trust ids */ + +# define X509_TRUST_DEFAULT 0 /* Only valid in purpose settings */ + +# define X509_TRUST_COMPAT 1 +# define X509_TRUST_SSL_CLIENT 2 +# define X509_TRUST_SSL_SERVER 3 +# define X509_TRUST_EMAIL 4 +# define X509_TRUST_OBJECT_SIGN 5 +# define X509_TRUST_OCSP_SIGN 6 +# define X509_TRUST_OCSP_REQUEST 7 +# define X509_TRUST_TSA 8 + +/* Keep these up to date! */ +# define X509_TRUST_MIN 1 +# define X509_TRUST_MAX 8 + +/* trust_flags values */ +# define X509_TRUST_DYNAMIC (1U << 0) +# define X509_TRUST_DYNAMIC_NAME (1U << 1) +/* No compat trust if self-signed, preempts "DO_SS" */ +# define X509_TRUST_NO_SS_COMPAT (1U << 2) +/* Compat trust if no explicit accepted trust EKUs */ +# define X509_TRUST_DO_SS_COMPAT (1U << 3) +/* Accept "anyEKU" as a wildcard trust OID */ +# define X509_TRUST_OK_ANY_EKU (1U << 4) + +/* check_trust return codes */ + +# define X509_TRUST_TRUSTED 1 +# define X509_TRUST_REJECTED 2 +# define X509_TRUST_UNTRUSTED 3 + +/* Flags for X509_print_ex() */ + +# define X509_FLAG_COMPAT 0 +# define X509_FLAG_NO_HEADER 1L +# define X509_FLAG_NO_VERSION (1L << 1) +# define X509_FLAG_NO_SERIAL (1L << 2) +# define X509_FLAG_NO_SIGNAME (1L << 3) +# define X509_FLAG_NO_ISSUER (1L << 4) +# define X509_FLAG_NO_VALIDITY (1L << 5) +# define X509_FLAG_NO_SUBJECT (1L << 6) +# define X509_FLAG_NO_PUBKEY (1L << 7) +# define X509_FLAG_NO_EXTENSIONS (1L << 8) +# define X509_FLAG_NO_SIGDUMP (1L << 9) +# define X509_FLAG_NO_AUX (1L << 10) +# define X509_FLAG_NO_ATTRIBUTES (1L << 11) +# define X509_FLAG_NO_IDS (1L << 12) + +/* Flags specific to X509_NAME_print_ex() */ + +/* The field separator information */ + +# define XN_FLAG_SEP_MASK (0xf << 16) + +# define XN_FLAG_COMPAT 0/* Traditional; use old X509_NAME_print */ +# define XN_FLAG_SEP_COMMA_PLUS (1 << 16)/* RFC2253 ,+ */ +# define XN_FLAG_SEP_CPLUS_SPC (2 << 16)/* ,+ spaced: more readable */ +# define XN_FLAG_SEP_SPLUS_SPC (3 << 16)/* ;+ spaced */ +# define XN_FLAG_SEP_MULTILINE (4 << 16)/* One line per field */ + +# define XN_FLAG_DN_REV (1 << 20)/* Reverse DN order */ + +/* How the field name is shown */ + +# define XN_FLAG_FN_MASK (0x3 << 21) + +# define XN_FLAG_FN_SN 0/* Object short name */ +# define XN_FLAG_FN_LN (1 << 21)/* Object long name */ +# define XN_FLAG_FN_OID (2 << 21)/* Always use OIDs */ +# define XN_FLAG_FN_NONE (3 << 21)/* No field names */ + +# define XN_FLAG_SPC_EQ (1 << 23)/* Put spaces round '=' */ + +/* + * This determines if we dump fields we don't recognise: RFC2253 requires + * this. + */ + +# define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) + +# define XN_FLAG_FN_ALIGN (1 << 25)/* Align field names to 20 + * characters */ + +/* Complete set of RFC2253 flags */ + +# define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \ + XN_FLAG_SEP_COMMA_PLUS | \ + XN_FLAG_DN_REV | \ + XN_FLAG_FN_SN | \ + XN_FLAG_DUMP_UNKNOWN_FIELDS) + +/* readable oneline form */ + +# define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \ + ASN1_STRFLGS_ESC_QUOTE | \ + XN_FLAG_SEP_CPLUS_SPC | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_SN) + +/* readable multiline form */ + +# define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + XN_FLAG_SEP_MULTILINE | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_LN | \ + XN_FLAG_FN_ALIGN) + +DEFINE_STACK_OF(X509_REVOKED) + +typedef struct X509_crl_info_st X509_CRL_INFO; + +DEFINE_STACK_OF(X509_CRL) + +typedef struct private_key_st { + int version; + /* The PKCS#8 data types */ + X509_ALGOR *enc_algor; + ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ + /* When decrypted, the following will not be NULL */ + EVP_PKEY *dec_pkey; + /* used to encrypt and decrypt */ + int key_length; + char *key_data; + int key_free; /* true if we should auto free key_data */ + /* expanded version of 'enc_algor' */ + EVP_CIPHER_INFO cipher; +} X509_PKEY; + +typedef struct X509_info_st { + X509 *x509; + X509_CRL *crl; + X509_PKEY *x_pkey; + EVP_CIPHER_INFO enc_cipher; + int enc_len; + char *enc_data; +} X509_INFO; + +DEFINE_STACK_OF(X509_INFO) + +/* + * The next 2 structures and their 8 routines are used to manipulate Netscape's + * spki structures - useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { +/* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +#ifndef OPENSSL_NO_SCRYPT +typedef struct SCRYPT_PARAMS_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *costParameter; + ASN1_INTEGER *blockSize; + ASN1_INTEGER *parallelizationParameter; + ASN1_INTEGER *keyLength; +} SCRYPT_PARAMS; +#endif + +#ifdef __cplusplus +} +#endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define X509_EXT_PACK_UNKNOWN 1 +# define X509_EXT_PACK_STRING 2 + +# define X509_extract_key(x) X509_get_pubkey(x)/*****/ +# define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +# define X509_name_cmp(a,b) X509_NAME_cmp((a),(b)) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl), + int (*crl_free) (X509_CRL *crl), + int (*crl_lookup) (X509_CRL *crl, + X509_REVOKED **ret, + ASN1_INTEGER *ser, + X509_NAME *issuer), + int (*crl_verify) (X509_CRL *crl, + EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); + +const char *X509_verify_cert_error_string(long n); + +int X509_verify(X509 *a, EVP_PKEY *r); + +int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); +int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); +int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); + +NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); +char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); +EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); +int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); + +int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); + +int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); +int X509_signature_print(BIO *bp, const X509_ALGOR *alg, + const ASN1_STRING *sig); + +int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); +# ifndef OPENSSL_NO_OCSP +int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert); +# endif +int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); +int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); +# ifndef OPENSSL_NO_OCSP +int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl); +# endif +int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); + +int X509_pubkey_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); + +# ifndef OPENSSL_NO_STDIO +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa); +DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); +# endif + +X509 *d2i_X509_bio(BIO *bp, X509 **x509); +int i2d_X509_bio(BIO *bp, X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa); +DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); + +X509 *X509_dup(X509 *x509); +X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa); +X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex); +X509_CRL *X509_CRL_dup(X509_CRL *crl); +X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev); +X509_REQ *X509_REQ_dup(X509_REQ *req); +X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn); +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, + const void **ppval, const X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); +int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src); + +X509_NAME *X509_NAME_dup(X509_NAME *xn); +X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne); + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, + int offset_day, long offset_sec, time_t *t); +ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); + +const char *X509_get_default_cert_area(void); +const char *X509_get_default_cert_dir(void); +const char *X509_get_default_cert_file(void); +const char *X509_get_default_cert_dir_env(void); +const char *X509_get_default_cert_file_env(void); +const char *X509_get_default_private_dir(void); + +X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); + +DECLARE_ASN1_FUNCTIONS(X509_ALGOR) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) +DECLARE_ASN1_FUNCTIONS(X509_VAL) + +DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) + +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get0(X509_PUBKEY *key); +EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +long X509_get_pathlen(X509 *x); +int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp); +EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length); +# ifndef OPENSSL_NO_RSA +int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp); +RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_DSA +int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp); +DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_EC +int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp); +EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length); +# endif + +DECLARE_ASN1_FUNCTIONS(X509_SIG) +void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **palg, + const ASN1_OCTET_STRING **pdigest); +void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **palg, + ASN1_OCTET_STRING **pdigest); + +DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) +DECLARE_ASN1_FUNCTIONS(X509_REQ) + +DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) +X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); + +DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) + +DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) + +DECLARE_ASN1_FUNCTIONS(X509_NAME) + +int X509_NAME_set(X509_NAME **xn, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) + +DECLARE_ASN1_FUNCTIONS(X509) +DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) + +#define X509_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509, l, p, newf, dupf, freef) +int X509_set_ex_data(X509 *r, int idx, void *arg); +void *X509_get_ex_data(X509 *r, int idx); +int i2d_X509_AUX(X509 *a, unsigned char **pp); +X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length); + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid, + int *secbits, uint32_t *flags); +void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid, + int secbits, uint32_t flags); + +int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, + uint32_t *flags); + +void X509_get0_signature(const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg, const X509 *x); +int X509_get_signature_nid(const X509 *x); + +int X509_trusted(const X509 *x); +int X509_alias_set1(X509 *x, const unsigned char *name, int len); +int X509_keyid_set1(X509 *x, const unsigned char *id, int len); +unsigned char *X509_alias_get0(X509 *x, int *len); +unsigned char *X509_keyid_get0(X509 *x, int *len); +int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, + int); +int X509_TRUST_set(int *t, int trust); +int X509_add1_trust_object(X509 *x, const ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, const ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); + +STACK_OF(ASN1_OBJECT) *X509_get0_trust_objects(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_reject_objects(X509 *x); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); + +X509_PKEY *X509_PKEY_new(void); +void X509_PKEY_free(X509_PKEY *a); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(const X509_NAME *a, char *buf, int size); + +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); + +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); + +int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + char *data, EVP_PKEY *pkey, const EVP_MD *type); + +int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, + unsigned char *md, unsigned int *len); + +int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, void *data, EVP_PKEY *pkey); + +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, void *data, + EVP_PKEY *pkey, const EVP_MD *type); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + void *asn, EVP_MD_CTX *ctx); + +long X509_get_version(const X509 *x); +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x); +int X509_set_issuer_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_issuer_name(const X509 *a); +int X509_set_subject_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_subject_name(const X509 *a); +const ASN1_TIME * X509_get0_notBefore(const X509 *x); +ASN1_TIME *X509_getm_notBefore(const X509 *x); +int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm); +const ASN1_TIME *X509_get0_notAfter(const X509 *x); +ASN1_TIME *X509_getm_notAfter(const X509 *x); +int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +int X509_up_ref(X509 *x); +int X509_get_signature_type(const X509 *x); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_get_notBefore X509_getm_notBefore +# define X509_get_notAfter X509_getm_notAfter +# define X509_set_notBefore X509_set1_notBefore +# define X509_set_notAfter X509_set1_notAfter +#endif + + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &buf) + */ +X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x); +const STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x); +void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid, + const ASN1_BIT_STRING **psuid); +const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x); + +EVP_PKEY *X509_get0_pubkey(const X509 *x); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); +int X509_certificate_type(const X509 *x, const EVP_PKEY *pubkey); + +long X509_REQ_get_version(const X509_REQ *req); +int X509_REQ_set_version(X509_REQ *x, long version); +X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req); +int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name); +void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig); +int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg); +int X509_REQ_get_signature_nid(const X509_REQ *req); +int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts, + int nid); +int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts); +int X509_REQ_get_attr_count(const X509_REQ *req); +int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); +int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); +X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); +int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); +int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name); +int X509_CRL_set1_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set1_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); +int X509_CRL_up_ref(X509_CRL *crl); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate +# define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate +#endif + +long X509_CRL_get_version(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl); +DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl)) +DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl)) +X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl); +const STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(const X509_CRL *crl); +STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl); +void X509_CRL_get0_signature(const X509_CRL *crl, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_CRL_get_signature_nid(const X509_CRL *crl); +int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp); + +const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *x); +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *x); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); +const STACK_OF(X509_EXTENSION) * +X509_REVOKED_get0_extensions(const X509_REVOKED *r); + +X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, + EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); + +int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); + +int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_chain_check_suiteb(int *perror_depth, + X509 *x, STACK_OF(X509) *chain, + unsigned long flags); +int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); + +int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_and_serial_hash(X509 *a); + +int X509_issuer_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_name_hash(X509 *a); + +int X509_subject_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_subject_name_hash(X509 *x); + +# ifndef OPENSSL_NO_MD5 +unsigned long X509_issuer_name_hash_old(X509 *a); +unsigned long X509_subject_name_hash_old(X509 *x); +# endif + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +unsigned long X509_NAME_hash(X509_NAME *x); +unsigned long X509_NAME_hash_old(X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +int X509_aux_print(BIO *out, X509 *x, int indent); +# ifndef OPENSSL_NO_STDIO +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent, + unsigned long flags); +# endif + +int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); + +int X509_NAME_entry_count(const X509_NAME *name); +int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len); +int X509_NAME_get_text_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passing -1, not 0 as lastpos. The functions that use + * lastpos, search after that position on. + */ +int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc); +X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); +int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, + const char *field, int type, + const unsigned char *bytes, + int len); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, + int type, + const unsigned char *bytes, + int len); +int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj); +int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, + const unsigned char *bytes, int len); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne); +ASN1_STRING * X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne); +int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne); + +int X509_NAME_get0_der(X509_NAME *nm, const unsigned char **pder, + size_t *pderlen); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + const ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); + +int X509_get_ext_count(const X509 *x); +int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(const X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(const X509_CRL *x); +int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(const X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit, + int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *x, int nid, int *crit, + int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + const ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(const X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *x, + const ASN1_OBJECT *obj, int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_verify_cert(X509_STORE_CTX *ctx); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, X509_NAME *name, + ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) +#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) +#endif + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid); + +#ifndef OPENSSL_NO_SCRYPT +X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, + const unsigned char *salt, int saltlen, + unsigned char *aiv, uint64_t N, uint64_t r, + uint64_t p); +#endif + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen); + +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey); + +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, + int version, int ptype, void *pval, + unsigned char *penc, int penclen); +int PKCS8_pkey_get0(const ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + const X509_ALGOR **pa, const PKCS8_PRIV_KEY_INFO *p8); + +const STACK_OF(X509_ATTRIBUTE) * +PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8); +int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, + const unsigned char *bytes, int len); + +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, + int ptype, void *pval, + unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, X509_PUBKEY *pub); + +int X509_check_trust(X509 *x, int id, int flags); +int X509_TRUST_get_count(void); +X509_TRUST *X509_TRUST_get0(int idx); +int X509_TRUST_get_by_id(int id); +int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int), + const char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(const X509_TRUST *xp); +char *X509_TRUST_get0_name(const X509_TRUST *xp); +int X509_TRUST_get_trust(const X509_TRUST *xp); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/x509_vfy.h b/openSSL/lin32/include/openssl/x509_vfy.h new file mode 100644 index 0000000..25c79f1 --- /dev/null +++ b/openSSL/lin32/include/openssl/x509_vfy.h @@ -0,0 +1,632 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509_VFY_H +# define HEADER_X509_VFY_H + +/* + * Protect against recursion, x509.h and x509_vfy.h each include the other. + */ +# ifndef HEADER_X509_H +# include +# endif + +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +SSL_CTX -> X509_STORE + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + +SSL -> X509_STORE_CTX + ->X509_STORE + +The X509_STORE holds the tables etc for verification stuff. +A X509_STORE_CTX is used while validating a single certificate. +The X509_STORE has X509_LOOKUPs for looking up certs. +The X509_STORE then calls a function to actually verify the +certificate chain. +*/ + +typedef enum { + X509_LU_NONE = 0, + X509_LU_X509, X509_LU_CRL +} X509_LOOKUP_TYPE; + +#if OPENSSL_API_COMPAT < 0x10100000L +#define X509_LU_RETRY -1 +#define X509_LU_FAIL 0 +#endif + +DEFINE_STACK_OF(X509_LOOKUP) +DEFINE_STACK_OF(X509_OBJECT) +DEFINE_STACK_OF(X509_VERIFY_PARAM) + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, + X509_STORE_CTX *ctx, X509 *x); +typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, + X509 *x, X509 *issuer); +typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL **crl, X509 *x); +typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl); +typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL *crl, X509 *x); +typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx); +typedef STACK_OF(X509) *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx, + X509_NAME *nm); +typedef STACK_OF(X509_CRL) *(*X509_STORE_CTX_lookup_crls_fn)(X509_STORE_CTX *ctx, + X509_NAME *nm); +typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx); + + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +# define X509_STORE_CTX_set_app_data(ctx,data) \ + X509_STORE_CTX_set_ex_data(ctx,0,data) +# define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx,0) + +# define X509_L_FILE_LOAD 1 +# define X509_L_ADD_DIR 2 + +# define X509_LOOKUP_load_file(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_FILE_LOAD,(name),(long)(type),NULL) + +# define X509_LOOKUP_add_dir(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_ADD_DIR,(name),(long)(type),NULL) + +# define X509_V_OK 0 +# define X509_V_ERR_UNSPECIFIED 1 +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +# define X509_V_ERR_UNABLE_TO_GET_CRL 3 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +# define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +# define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +# define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +# define X509_V_ERR_CERT_NOT_YET_VALID 9 +# define X509_V_ERR_CERT_HAS_EXPIRED 10 +# define X509_V_ERR_CRL_NOT_YET_VALID 11 +# define X509_V_ERR_CRL_HAS_EXPIRED 12 +# define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +# define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +# define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +# define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +# define X509_V_ERR_OUT_OF_MEM 17 +# define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +# define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +# define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +# define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +# define X509_V_ERR_CERT_REVOKED 23 +# define X509_V_ERR_INVALID_CA 24 +# define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +# define X509_V_ERR_INVALID_PURPOSE 26 +# define X509_V_ERR_CERT_UNTRUSTED 27 +# define X509_V_ERR_CERT_REJECTED 28 +/* These are 'informational' when looking for issuer cert */ +# define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +# define X509_V_ERR_AKID_SKID_MISMATCH 30 +# define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +# define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 +# define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +# define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +# define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +# define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +# define X509_V_ERR_INVALID_NON_CA 37 +# define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +# define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +# define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 +# define X509_V_ERR_INVALID_EXTENSION 41 +# define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +# define X509_V_ERR_NO_EXPLICIT_POLICY 43 +# define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +# define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 +# define X509_V_ERR_UNNESTED_RESOURCE 46 +# define X509_V_ERR_PERMITTED_VIOLATION 47 +# define X509_V_ERR_EXCLUDED_VIOLATION 48 +# define X509_V_ERR_SUBTREE_MINMAX 49 +/* The application is not happy */ +# define X509_V_ERR_APPLICATION_VERIFICATION 50 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +# define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +# define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 +/* Another issuer check debug option */ +# define X509_V_ERR_PATH_LOOP 55 +/* Suite B mode algorithm violation */ +# define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +# define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +# define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +# define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +# define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +# define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 +/* Host, email and IP check errors */ +# define X509_V_ERR_HOSTNAME_MISMATCH 62 +# define X509_V_ERR_EMAIL_MISMATCH 63 +# define X509_V_ERR_IP_ADDRESS_MISMATCH 64 +/* DANE TLSA errors */ +# define X509_V_ERR_DANE_NO_MATCH 65 +/* security level errors */ +# define X509_V_ERR_EE_KEY_TOO_SMALL 66 +# define X509_V_ERR_CA_KEY_TOO_SMALL 67 +# define X509_V_ERR_CA_MD_TOO_WEAK 68 +/* Caller error */ +# define X509_V_ERR_INVALID_CALL 69 +/* Issuer lookup error */ +# define X509_V_ERR_STORE_LOOKUP 70 +/* Certificate transparency */ +# define X509_V_ERR_NO_VALID_SCTS 71 + +# define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72 +/* OCSP status errors */ +# define X509_V_ERR_OCSP_VERIFY_NEEDED 73 /* Need OCSP verification */ +# define X509_V_ERR_OCSP_VERIFY_FAILED 74 /* Couldn't verify cert through OCSP */ +# define X509_V_ERR_OCSP_CERT_UNKNOWN 75 /* Certificate wasn't recognized by the OCSP responder */ +# define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 76 +# define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 77 +# define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 78 +# define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 79 + +/* Certificate verify flags */ + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_V_FLAG_CB_ISSUER_CHECK 0x0 /* Deprecated */ +# endif +/* Use check time instead of current time */ +# define X509_V_FLAG_USE_CHECK_TIME 0x2 +/* Lookup CRLs */ +# define X509_V_FLAG_CRL_CHECK 0x4 +/* Lookup CRLs for whole chain */ +# define X509_V_FLAG_CRL_CHECK_ALL 0x8 +/* Ignore unhandled critical extensions */ +# define X509_V_FLAG_IGNORE_CRITICAL 0x10 +/* Disable workarounds for broken certificates */ +# define X509_V_FLAG_X509_STRICT 0x20 +/* Enable proxy certificate validation */ +# define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 +/* Enable policy checking */ +# define X509_V_FLAG_POLICY_CHECK 0x80 +/* Policy variable require-explicit-policy */ +# define X509_V_FLAG_EXPLICIT_POLICY 0x100 +/* Policy variable inhibit-any-policy */ +# define X509_V_FLAG_INHIBIT_ANY 0x200 +/* Policy variable inhibit-policy-mapping */ +# define X509_V_FLAG_INHIBIT_MAP 0x400 +/* Notify callback that policy is OK */ +# define X509_V_FLAG_NOTIFY_POLICY 0x800 +/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ +# define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 +/* Delta CRL support */ +# define X509_V_FLAG_USE_DELTAS 0x2000 +/* Check self-signed CA signature */ +# define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +# define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +# define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define X509_V_FLAG_SUITEB_128_LOS 0x30000 +/* Allow partial chains if at least one certificate is in trusted store */ +# define X509_V_FLAG_PARTIAL_CHAIN 0x80000 +/* + * If the initial chain is not trusted, do not attempt to build an alternative + * chain. Alternate chain checking was introduced in 1.1.0. Setting this flag + * will force the behaviour to match that of previous versions. + */ +# define X509_V_FLAG_NO_ALT_CHAINS 0x100000 +/* Do not check certificate/CRL validity against current time */ +# define X509_V_FLAG_NO_CHECK_TIME 0x200000 + +# define X509_VP_FLAG_DEFAULT 0x1 +# define X509_VP_FLAG_OVERWRITE 0x2 +# define X509_VP_FLAG_RESET_FLAGS 0x4 +# define X509_VP_FLAG_LOCKED 0x8 +# define X509_VP_FLAG_ONCE 0x10 + +/* Internal use: mask of policy related options */ +# define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ + | X509_V_FLAG_EXPLICIT_POLICY \ + | X509_V_FLAG_INHIBIT_ANY \ + | X509_V_FLAG_INHIBIT_MAP) + +int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, X509_LOOKUP_TYPE type, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + X509_LOOKUP_TYPE type, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +int X509_OBJECT_up_ref_count(X509_OBJECT *a); +X509_OBJECT *X509_OBJECT_new(void); +void X509_OBJECT_free(X509_OBJECT *a); +X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a); +X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a); +int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); +X509_CRL *X509_OBJECT_get0_X509_CRL(X509_OBJECT *a); +int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *v); +int X509_STORE_lock(X509_STORE *ctx); +int X509_STORE_unlock(X509_STORE *ctx); +int X509_STORE_up_ref(X509_STORE *v); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(X509_STORE *v); + +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(X509_STORE_CTX *st, X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); +int X509_STORE_set_trust(X509_STORE *ctx, int trust); +int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(X509_STORE *ctx); + +void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +#define X509_STORE_set_verify_func(ctx, func) \ + X509_STORE_set_verify((ctx),(func)) +void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_fn verify); +X509_STORE_CTX_verify_fn X509_STORE_get_verify(X509_STORE *ctx); +void X509_STORE_set_verify_cb(X509_STORE *ctx, + X509_STORE_CTX_verify_cb verify_cb); +# define X509_STORE_set_verify_cb_func(ctx,func) \ + X509_STORE_set_verify_cb((ctx),(func)) +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(X509_STORE *ctx); +void X509_STORE_set_get_issuer(X509_STORE *ctx, + X509_STORE_CTX_get_issuer_fn get_issuer); +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(X509_STORE *ctx); +void X509_STORE_set_check_issued(X509_STORE *ctx, + X509_STORE_CTX_check_issued_fn check_issued); +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(X509_STORE *ctx); +void X509_STORE_set_check_revocation(X509_STORE *ctx, + X509_STORE_CTX_check_revocation_fn check_revocation); +X509_STORE_CTX_check_revocation_fn X509_STORE_get_check_revocation(X509_STORE *ctx); +void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(X509_STORE *ctx); +void X509_STORE_set_check_crl(X509_STORE *ctx, + X509_STORE_CTX_check_crl_fn check_crl); +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(X509_STORE *ctx); +void X509_STORE_set_cert_crl(X509_STORE *ctx, + X509_STORE_CTX_cert_crl_fn cert_crl); +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(X509_STORE *ctx); +void X509_STORE_set_check_policy(X509_STORE *ctx, + X509_STORE_CTX_check_policy_fn check_policy); +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(X509_STORE *ctx); +void X509_STORE_set_lookup_certs(X509_STORE *ctx, + X509_STORE_CTX_lookup_certs_fn lookup_certs); +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(X509_STORE *ctx); +void X509_STORE_set_lookup_crls(X509_STORE *ctx, + X509_STORE_CTX_lookup_crls_fn lookup_crls); +#define X509_STORE_set_lookup_crls_cb(ctx, func) \ + X509_STORE_set_lookup_crls((ctx), (func)) +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(X509_STORE *ctx); +void X509_STORE_set_cleanup(X509_STORE *ctx, + X509_STORE_CTX_cleanup_fn cleanup); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(X509_STORE *ctx); + +#define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) +int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); +void *X509_STORE_get_ex_data(X509_STORE *ctx, int idx); + +X509_STORE_CTX *X509_STORE_CTX_new(void); + +int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + +void X509_STORE_CTX_free(X509_STORE_CTX *ctx); +int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, + X509 *x509, STACK_OF(X509) *chain); +void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); + +X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_cert(X509_STORE_CTX *ctx); +STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_cb verify); +X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(X509_STORE_CTX *ctx); +X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(X509_STORE_CTX *ctx); +X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(X509_STORE_CTX *ctx); +X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(X509_STORE_CTX *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(X509_STORE_CTX *ctx); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define X509_STORE_CTX_get_chain X509_STORE_CTX_get0_chain +# define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted +# define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack +# define X509_STORE_get_by_subject X509_STORE_CTX_get_by_subject +# define X509_STORE_get1_certs X509_STORE_CTX_get1_certs +# define X509_STORE_get1_crls X509_STORE_CTX_get1_crls +/* the following macro is misspelled; use X509_STORE_get1_certs instead */ +# define X509_STORE_get1_cert X509_STORE_CTX_get1_certs +/* the following macro is misspelled; use X509_STORE_get1_crls instead */ +# define X509_STORE_get1_crl X509_STORE_CTX_get1_crls +#endif + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); + +typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + X509_NAME *name, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + X509_NAME *name, + ASN1_INTEGER *serial, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const unsigned char* bytes, + int len, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const char *str, + int len, + X509_OBJECT *ret); + +X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); +void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method, + int (*new_item) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method, + void (*free_fn) (X509_LOOKUP *ctx)); +void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method, + int (*init) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method, + int (*shutdown) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method, + X509_LOOKUP_ctrl_fn ctrl_fn); +X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_subject_fn fn); +X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_issuer_serial_fn fn); +X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_fingerprint_fn fn); +X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_alias_fn fn); +X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( + const X509_LOOKUP_METHOD *method); + + +int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); +int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); + +int X509_STORE_CTX_get_by_subject(X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, + X509_NAME *name, X509_OBJECT *ret); +X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + X509_NAME *name); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); + +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); + +X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); +void X509_LOOKUP_free(X509_LOOKUP *ctx); +int X509_LOOKUP_init(X509_LOOKUP *ctx); +int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + X509_NAME *name, X509_OBJECT *ret); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + X509_NAME *name, ASN1_INTEGER *serial, + X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const char *str, int len, X509_OBJECT *ret); +int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); +void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); +X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +int X509_STORE_load_locations(X509_STORE *ctx, + const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *ctx); + +#define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) +int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); +void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); +X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); +X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *c, X509 *x); +void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, STACK_OF(X509_CRL) *sk); +int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); +int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, + int purpose, int trust); +void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); +void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, + time_t t); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_num_untrusted(X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); +int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); + +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +void X509_STORE_CTX_set0_dane(X509_STORE_CTX *ctx, SSL_DANE *dane); +#define DANE_FLAG_NO_DANE_EE_NAMECHECKS (1L << 0) + +/* X509_VERIFY_PARAM functions */ + +X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); +void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); +int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); +void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); +void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); +time_t X509_VERIFY_PARAM_get_time(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); +int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, + ASN1_OBJECT *policy); +int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, + STACK_OF(ASN1_OBJECT) *policies); + +int X509_VERIFY_PARAM_set_inh_flags(X509_VERIFY_PARAM *param, + uint32_t flags); +uint32_t X509_VERIFY_PARAM_get_inh_flags(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param); +char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *); +void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, + const unsigned char *ip, size_t iplen); +int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, + const char *ipasc); + +int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param); +const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_count(void); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); +void X509_VERIFY_PARAM_table_cleanup(void); + +/* Non positive return values are errors */ +#define X509_PCY_TREE_FAILURE -2 /* Failure to satisfy explicit policy */ +#define X509_PCY_TREE_INVALID -1 /* Inconsistent or invalid extensions */ +#define X509_PCY_TREE_INTERNAL 0 /* Internal error, most likely malloc */ + +/* + * Positive return values form a bit mask, all but the first are internal to + * the library and don't appear in results from X509_policy_check(). + */ +#define X509_PCY_TREE_VALID 1 /* The policy tree is valid */ +#define X509_PCY_TREE_EMPTY 2 /* The policy tree is empty */ +#define X509_PCY_TREE_EXPLICIT 4 /* Explicit policy required */ + +int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, + STACK_OF(X509) *certs, + STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); + +void X509_policy_tree_free(X509_POLICY_TREE *tree); + +int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); +X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, + int i); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_policies(const + X509_POLICY_TREE + *tree); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_user_policies(const + X509_POLICY_TREE + *tree); + +int X509_policy_level_node_count(X509_POLICY_LEVEL *level); + +X509_POLICY_NODE *X509_policy_level_get0_node(X509_POLICY_LEVEL *level, + int i); + +const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); + +STACK_OF(POLICYQUALINFO) *X509_policy_node_get0_qualifiers(const + X509_POLICY_NODE + *node); +const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE + *node); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin32/include/openssl/x509err.h b/openSSL/lin32/include/openssl/x509err.h new file mode 100644 index 0000000..cd08673 --- /dev/null +++ b/openSSL/lin32/include/openssl/x509err.h @@ -0,0 +1,129 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509ERR_H +# define HEADER_X509ERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_X509_strings(void); + +/* + * X509 function codes. + */ +# define X509_F_ADD_CERT_DIR 100 +# define X509_F_BUILD_CHAIN 106 +# define X509_F_BY_FILE_CTRL 101 +# define X509_F_CHECK_NAME_CONSTRAINTS 149 +# define X509_F_CHECK_POLICY 145 +# define X509_F_DANE_I2D 107 +# define X509_F_DIR_CTRL 102 +# define X509_F_GET_CERT_BY_SUBJECT 103 +# define X509_F_I2D_X509_AUX 151 +# define X509_F_LOOKUP_CERTS_SK 152 +# define X509_F_NETSCAPE_SPKI_B64_DECODE 129 +# define X509_F_NETSCAPE_SPKI_B64_ENCODE 130 +# define X509_F_NEW_DIR 153 +# define X509_F_X509AT_ADD1_ATTR 135 +# define X509_F_X509V3_ADD_EXT 104 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140 +# define X509_F_X509_ATTRIBUTE_GET0_DATA 139 +# define X509_F_X509_ATTRIBUTE_SET1_DATA 138 +# define X509_F_X509_CHECK_PRIVATE_KEY 128 +# define X509_F_X509_CRL_DIFF 105 +# define X509_F_X509_CRL_METHOD_NEW 154 +# define X509_F_X509_CRL_PRINT_FP 147 +# define X509_F_X509_EXTENSION_CREATE_BY_NID 108 +# define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109 +# define X509_F_X509_GET_PUBKEY_PARAMETERS 110 +# define X509_F_X509_LOAD_CERT_CRL_FILE 132 +# define X509_F_X509_LOAD_CERT_FILE 111 +# define X509_F_X509_LOAD_CRL_FILE 112 +# define X509_F_X509_LOOKUP_METH_NEW 160 +# define X509_F_X509_LOOKUP_NEW 155 +# define X509_F_X509_NAME_ADD_ENTRY 113 +# define X509_F_X509_NAME_CANON 156 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131 +# define X509_F_X509_NAME_ENTRY_SET_OBJECT 115 +# define X509_F_X509_NAME_ONELINE 116 +# define X509_F_X509_NAME_PRINT 117 +# define X509_F_X509_OBJECT_NEW 150 +# define X509_F_X509_PRINT_EX_FP 118 +# define X509_F_X509_PUBKEY_DECODE 148 +# define X509_F_X509_PUBKEY_GET 161 +# define X509_F_X509_PUBKEY_GET0 119 +# define X509_F_X509_PUBKEY_SET 120 +# define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144 +# define X509_F_X509_REQ_PRINT_EX 121 +# define X509_F_X509_REQ_PRINT_FP 122 +# define X509_F_X509_REQ_TO_X509 123 +# define X509_F_X509_STORE_ADD_CERT 124 +# define X509_F_X509_STORE_ADD_CRL 125 +# define X509_F_X509_STORE_ADD_LOOKUP 157 +# define X509_F_X509_STORE_CTX_GET1_ISSUER 146 +# define X509_F_X509_STORE_CTX_INIT 143 +# define X509_F_X509_STORE_CTX_NEW 142 +# define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134 +# define X509_F_X509_STORE_NEW 158 +# define X509_F_X509_TO_X509_REQ 126 +# define X509_F_X509_TRUST_ADD 133 +# define X509_F_X509_TRUST_SET 141 +# define X509_F_X509_VERIFY_CERT 127 +# define X509_F_X509_VERIFY_PARAM_NEW 159 + +/* + * X509 reason codes. + */ +# define X509_R_AKID_MISMATCH 110 +# define X509_R_BAD_SELECTOR 133 +# define X509_R_BAD_X509_FILETYPE 100 +# define X509_R_BASE64_DECODE_ERROR 118 +# define X509_R_CANT_CHECK_DH_KEY 114 +# define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 +# define X509_R_CRL_ALREADY_DELTA 127 +# define X509_R_CRL_VERIFY_FAILURE 131 +# define X509_R_IDP_MISMATCH 128 +# define X509_R_INVALID_ATTRIBUTES 138 +# define X509_R_INVALID_DIRECTORY 113 +# define X509_R_INVALID_FIELD_NAME 119 +# define X509_R_INVALID_TRUST 123 +# define X509_R_ISSUER_MISMATCH 129 +# define X509_R_KEY_TYPE_MISMATCH 115 +# define X509_R_KEY_VALUES_MISMATCH 116 +# define X509_R_LOADING_CERT_DIR 103 +# define X509_R_LOADING_DEFAULTS 104 +# define X509_R_METHOD_NOT_SUPPORTED 124 +# define X509_R_NAME_TOO_LONG 134 +# define X509_R_NEWER_CRL_NOT_NEWER 132 +# define X509_R_NO_CERTIFICATE_FOUND 135 +# define X509_R_NO_CERTIFICATE_OR_CRL_FOUND 136 +# define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 +# define X509_R_NO_CRL_FOUND 137 +# define X509_R_NO_CRL_NUMBER 130 +# define X509_R_PUBLIC_KEY_DECODE_ERROR 125 +# define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 +# define X509_R_SHOULD_RETRY 106 +# define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 +# define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 +# define X509_R_UNKNOWN_KEY_TYPE 117 +# define X509_R_UNKNOWN_NID 109 +# define X509_R_UNKNOWN_PURPOSE_ID 121 +# define X509_R_UNKNOWN_TRUST_ID 120 +# define X509_R_UNSUPPORTED_ALGORITHM 111 +# define X509_R_WRONG_LOOKUP_TYPE 112 +# define X509_R_WRONG_TYPE 122 + +#endif diff --git a/openSSL/lin32/include/openssl/x509v3.h b/openSSL/lin32/include/openssl/x509v3.h new file mode 100644 index 0000000..90fa359 --- /dev/null +++ b/openSSL/lin32/include/openssl/x509v3.h @@ -0,0 +1,938 @@ +/* + * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509V3_H +# define HEADER_X509V3_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward reference */ +struct v3_ext_method; +struct v3_ext_ctx; + +/* Useful typedefs */ + +typedef void *(*X509V3_EXT_NEW)(void); +typedef void (*X509V3_EXT_FREE) (void *); +typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); +typedef int (*X509V3_EXT_I2D) (void *, unsigned char **); +typedef STACK_OF(CONF_VALUE) * + (*X509V3_EXT_I2V) (const struct v3_ext_method *method, void *ext, + STACK_OF(CONF_VALUE) *extlist); +typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, + STACK_OF(CONF_VALUE) *values); +typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method, + void *ext); +typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); +typedef int (*X509V3_EXT_I2R) (const struct v3_ext_method *method, void *ext, + BIO *out, int indent); +typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); + +/* V3 extension structure */ + +struct v3_ext_method { + int ext_nid; + int ext_flags; +/* If this is set the following four fields are ignored */ + ASN1_ITEM_EXP *it; +/* Old style ASN1 calls */ + X509V3_EXT_NEW ext_new; + X509V3_EXT_FREE ext_free; + X509V3_EXT_D2I d2i; + X509V3_EXT_I2D i2d; +/* The following pair is used for string extensions */ + X509V3_EXT_I2S i2s; + X509V3_EXT_S2I s2i; +/* The following pair is used for multi-valued extensions */ + X509V3_EXT_I2V i2v; + X509V3_EXT_V2I v2i; +/* The following are used for raw extensions */ + X509V3_EXT_I2R i2r; + X509V3_EXT_R2I r2i; + void *usr_data; /* Any extension specific data */ +}; + +typedef struct X509V3_CONF_METHOD_st { + char *(*get_string) (void *db, const char *section, const char *value); + STACK_OF(CONF_VALUE) *(*get_section) (void *db, const char *section); + void (*free_string) (void *db, char *string); + void (*free_section) (void *db, STACK_OF(CONF_VALUE) *section); +} X509V3_CONF_METHOD; + +/* Context specific info */ +struct v3_ext_ctx { +# define CTX_TEST 0x1 +# define X509V3_CTX_REPLACE 0x2 + int flags; + X509 *issuer_cert; + X509 *subject_cert; + X509_REQ *subject_req; + X509_CRL *crl; + X509V3_CONF_METHOD *db_meth; + void *db; +/* Maybe more here */ +}; + +typedef struct v3_ext_method X509V3_EXT_METHOD; + +DEFINE_STACK_OF(X509V3_EXT_METHOD) + +/* ext_flags values */ +# define X509V3_EXT_DYNAMIC 0x1 +# define X509V3_EXT_CTX_DEP 0x2 +# define X509V3_EXT_MULTILINE 0x4 + +typedef BIT_STRING_BITNAME ENUMERATED_NAMES; + +typedef struct BASIC_CONSTRAINTS_st { + int ca; + ASN1_INTEGER *pathlen; +} BASIC_CONSTRAINTS; + +typedef struct PKEY_USAGE_PERIOD_st { + ASN1_GENERALIZEDTIME *notBefore; + ASN1_GENERALIZEDTIME *notAfter; +} PKEY_USAGE_PERIOD; + +typedef struct otherName_st { + ASN1_OBJECT *type_id; + ASN1_TYPE *value; +} OTHERNAME; + +typedef struct EDIPartyName_st { + ASN1_STRING *nameAssigner; + ASN1_STRING *partyName; +} EDIPARTYNAME; + +typedef struct GENERAL_NAME_st { +# define GEN_OTHERNAME 0 +# define GEN_EMAIL 1 +# define GEN_DNS 2 +# define GEN_X400 3 +# define GEN_DIRNAME 4 +# define GEN_EDIPARTY 5 +# define GEN_URI 6 +# define GEN_IPADD 7 +# define GEN_RID 8 + int type; + union { + char *ptr; + OTHERNAME *otherName; /* otherName */ + ASN1_IA5STRING *rfc822Name; + ASN1_IA5STRING *dNSName; + ASN1_TYPE *x400Address; + X509_NAME *directoryName; + EDIPARTYNAME *ediPartyName; + ASN1_IA5STRING *uniformResourceIdentifier; + ASN1_OCTET_STRING *iPAddress; + ASN1_OBJECT *registeredID; + /* Old names */ + ASN1_OCTET_STRING *ip; /* iPAddress */ + X509_NAME *dirn; /* dirn */ + ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, + * uniformResourceIdentifier */ + ASN1_OBJECT *rid; /* registeredID */ + ASN1_TYPE *other; /* x400Address */ + } d; +} GENERAL_NAME; + +typedef struct ACCESS_DESCRIPTION_st { + ASN1_OBJECT *method; + GENERAL_NAME *location; +} ACCESS_DESCRIPTION; + +typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; + +typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; + +typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; + +DEFINE_STACK_OF(GENERAL_NAME) +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; +DEFINE_STACK_OF(GENERAL_NAMES) + +DEFINE_STACK_OF(ACCESS_DESCRIPTION) + +typedef struct DIST_POINT_NAME_st { + int type; + union { + GENERAL_NAMES *fullname; + STACK_OF(X509_NAME_ENTRY) *relativename; + } name; +/* If relativename then this contains the full distribution point name */ + X509_NAME *dpname; +} DIST_POINT_NAME; +/* All existing reasons */ +# define CRLDP_ALL_REASONS 0x807f + +# define CRL_REASON_NONE -1 +# define CRL_REASON_UNSPECIFIED 0 +# define CRL_REASON_KEY_COMPROMISE 1 +# define CRL_REASON_CA_COMPROMISE 2 +# define CRL_REASON_AFFILIATION_CHANGED 3 +# define CRL_REASON_SUPERSEDED 4 +# define CRL_REASON_CESSATION_OF_OPERATION 5 +# define CRL_REASON_CERTIFICATE_HOLD 6 +# define CRL_REASON_REMOVE_FROM_CRL 8 +# define CRL_REASON_PRIVILEGE_WITHDRAWN 9 +# define CRL_REASON_AA_COMPROMISE 10 + +struct DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + GENERAL_NAMES *CRLissuer; + int dp_reasons; +}; + +typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; + +DEFINE_STACK_OF(DIST_POINT) + +struct AUTHORITY_KEYID_st { + ASN1_OCTET_STRING *keyid; + GENERAL_NAMES *issuer; + ASN1_INTEGER *serial; +}; + +/* Strong extranet structures */ + +typedef struct SXNET_ID_st { + ASN1_INTEGER *zone; + ASN1_OCTET_STRING *user; +} SXNETID; + +DEFINE_STACK_OF(SXNETID) + +typedef struct SXNET_st { + ASN1_INTEGER *version; + STACK_OF(SXNETID) *ids; +} SXNET; + +typedef struct NOTICEREF_st { + ASN1_STRING *organization; + STACK_OF(ASN1_INTEGER) *noticenos; +} NOTICEREF; + +typedef struct USERNOTICE_st { + NOTICEREF *noticeref; + ASN1_STRING *exptext; +} USERNOTICE; + +typedef struct POLICYQUALINFO_st { + ASN1_OBJECT *pqualid; + union { + ASN1_IA5STRING *cpsuri; + USERNOTICE *usernotice; + ASN1_TYPE *other; + } d; +} POLICYQUALINFO; + +DEFINE_STACK_OF(POLICYQUALINFO) + +typedef struct POLICYINFO_st { + ASN1_OBJECT *policyid; + STACK_OF(POLICYQUALINFO) *qualifiers; +} POLICYINFO; + +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; + +DEFINE_STACK_OF(POLICYINFO) + +typedef struct POLICY_MAPPING_st { + ASN1_OBJECT *issuerDomainPolicy; + ASN1_OBJECT *subjectDomainPolicy; +} POLICY_MAPPING; + +DEFINE_STACK_OF(POLICY_MAPPING) + +typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; + +typedef struct GENERAL_SUBTREE_st { + GENERAL_NAME *base; + ASN1_INTEGER *minimum; + ASN1_INTEGER *maximum; +} GENERAL_SUBTREE; + +DEFINE_STACK_OF(GENERAL_SUBTREE) + +struct NAME_CONSTRAINTS_st { + STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; + STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; +}; + +typedef struct POLICY_CONSTRAINTS_st { + ASN1_INTEGER *requireExplicitPolicy; + ASN1_INTEGER *inhibitPolicyMapping; +} POLICY_CONSTRAINTS; + +/* Proxy certificate structures, see RFC 3820 */ +typedef struct PROXY_POLICY_st { + ASN1_OBJECT *policyLanguage; + ASN1_OCTET_STRING *policy; +} PROXY_POLICY; + +typedef struct PROXY_CERT_INFO_EXTENSION_st { + ASN1_INTEGER *pcPathLengthConstraint; + PROXY_POLICY *proxyPolicy; +} PROXY_CERT_INFO_EXTENSION; + +DECLARE_ASN1_FUNCTIONS(PROXY_POLICY) +DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) + +struct ISSUING_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + int onlyuser; + int onlyCA; + ASN1_BIT_STRING *onlysomereasons; + int indirectCRL; + int onlyattr; +}; + +/* Values in idp_flags field */ +/* IDP present */ +# define IDP_PRESENT 0x1 +/* IDP values inconsistent */ +# define IDP_INVALID 0x2 +/* onlyuser true */ +# define IDP_ONLYUSER 0x4 +/* onlyCA true */ +# define IDP_ONLYCA 0x8 +/* onlyattr true */ +# define IDP_ONLYATTR 0x10 +/* indirectCRL true */ +# define IDP_INDIRECT 0x20 +/* onlysomereasons present */ +# define IDP_REASONS 0x40 + +# define X509V3_conf_err(val) ERR_add_error_data(6, \ + "section:", (val)->section, \ + ",name:", (val)->name, ",value:", (val)->value) + +# define X509V3_set_ctx_test(ctx) \ + X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST) +# define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL; + +# define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \ + 0,0,0,0, \ + 0,0, \ + (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ + (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ + NULL, NULL, \ + table} + +# define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \ + 0,0,0,0, \ + (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ + 0,0,0,0, \ + NULL} + +# define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + +/* X509_PURPOSE stuff */ + +# define EXFLAG_BCONS 0x1 +# define EXFLAG_KUSAGE 0x2 +# define EXFLAG_XKUSAGE 0x4 +# define EXFLAG_NSCERT 0x8 + +# define EXFLAG_CA 0x10 +/* Really self issued not necessarily self signed */ +# define EXFLAG_SI 0x20 +# define EXFLAG_V1 0x40 +# define EXFLAG_INVALID 0x80 +/* EXFLAG_SET is set to indicate that some values have been precomputed */ +# define EXFLAG_SET 0x100 +# define EXFLAG_CRITICAL 0x200 +# define EXFLAG_PROXY 0x400 + +# define EXFLAG_INVALID_POLICY 0x800 +# define EXFLAG_FRESHEST 0x1000 +# define EXFLAG_SS 0x2000 /* cert is apparently self-signed */ + +# define EXFLAG_NO_FINGERPRINT 0x100000 + +# define KU_DIGITAL_SIGNATURE 0x0080 +# define KU_NON_REPUDIATION 0x0040 +# define KU_KEY_ENCIPHERMENT 0x0020 +# define KU_DATA_ENCIPHERMENT 0x0010 +# define KU_KEY_AGREEMENT 0x0008 +# define KU_KEY_CERT_SIGN 0x0004 +# define KU_CRL_SIGN 0x0002 +# define KU_ENCIPHER_ONLY 0x0001 +# define KU_DECIPHER_ONLY 0x8000 + +# define NS_SSL_CLIENT 0x80 +# define NS_SSL_SERVER 0x40 +# define NS_SMIME 0x20 +# define NS_OBJSIGN 0x10 +# define NS_SSL_CA 0x04 +# define NS_SMIME_CA 0x02 +# define NS_OBJSIGN_CA 0x01 +# define NS_ANY_CA (NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA) + +# define XKU_SSL_SERVER 0x1 +# define XKU_SSL_CLIENT 0x2 +# define XKU_SMIME 0x4 +# define XKU_CODE_SIGN 0x8 +# define XKU_SGC 0x10 +# define XKU_OCSP_SIGN 0x20 +# define XKU_TIMESTAMP 0x40 +# define XKU_DVCS 0x80 +# define XKU_ANYEKU 0x100 + +# define X509_PURPOSE_DYNAMIC 0x1 +# define X509_PURPOSE_DYNAMIC_NAME 0x2 + +typedef struct x509_purpose_st { + int purpose; + int trust; /* Default trust ID */ + int flags; + int (*check_purpose) (const struct x509_purpose_st *, const X509 *, int); + char *name; + char *sname; + void *usr_data; +} X509_PURPOSE; + +# define X509_PURPOSE_SSL_CLIENT 1 +# define X509_PURPOSE_SSL_SERVER 2 +# define X509_PURPOSE_NS_SSL_SERVER 3 +# define X509_PURPOSE_SMIME_SIGN 4 +# define X509_PURPOSE_SMIME_ENCRYPT 5 +# define X509_PURPOSE_CRL_SIGN 6 +# define X509_PURPOSE_ANY 7 +# define X509_PURPOSE_OCSP_HELPER 8 +# define X509_PURPOSE_TIMESTAMP_SIGN 9 + +# define X509_PURPOSE_MIN 1 +# define X509_PURPOSE_MAX 9 + +/* Flags for X509V3_EXT_print() */ + +# define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) +/* Return error for unknown extensions */ +# define X509V3_EXT_DEFAULT 0 +/* Print error for unknown extensions */ +# define X509V3_EXT_ERROR_UNKNOWN (1L << 16) +/* ASN1 parse unknown extensions */ +# define X509V3_EXT_PARSE_UNKNOWN (2L << 16) +/* BIO_dump unknown extensions */ +# define X509V3_EXT_DUMP_UNKNOWN (3L << 16) + +/* Flags for X509V3_add1_i2d */ + +# define X509V3_ADD_OP_MASK 0xfL +# define X509V3_ADD_DEFAULT 0L +# define X509V3_ADD_APPEND 1L +# define X509V3_ADD_REPLACE 2L +# define X509V3_ADD_REPLACE_EXISTING 3L +# define X509V3_ADD_KEEP_EXISTING 4L +# define X509V3_ADD_DELETE 5L +# define X509V3_ADD_SILENT 0x10 + +DEFINE_STACK_OF(X509_PURPOSE) + +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) + +DECLARE_ASN1_FUNCTIONS(SXNET) +DECLARE_ASN1_FUNCTIONS(SXNETID) + +int SXNET_add_id_asc(SXNET **psx, const char *zone, const char *user, int userlen); +int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, const char *user, + int userlen); +int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, const char *user, + int userlen); + +ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, const char *zone); +ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); +ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); + +DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID) + +DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) +GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a); +int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b); + +ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, + STACK_OF(CONF_VALUE) *nval); +STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + ASN1_BIT_STRING *bits, + STACK_OF(CONF_VALUE) *extlist); +char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); +ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, + GENERAL_NAME *gen, + STACK_OF(CONF_VALUE) *ret); +int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, + GENERAL_NAMES *gen, + STACK_OF(CONF_VALUE) *extlist); +GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); + +DECLARE_ASN1_FUNCTIONS(OTHERNAME) +DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) +int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b); +void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value); +void *GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype); +int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, + ASN1_OBJECT *oid, ASN1_TYPE *value); +int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen, + ASN1_OBJECT **poid, ASN1_TYPE **pvalue); + +char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + const ASN1_OCTET_STRING *ia5); +ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) +int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE) + +DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) +DECLARE_ASN1_FUNCTIONS(POLICYINFO) +DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) +DECLARE_ASN1_FUNCTIONS(USERNOTICE) +DECLARE_ASN1_FUNCTIONS(NOTICEREF) + +DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) +DECLARE_ASN1_FUNCTIONS(DIST_POINT) +DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) +DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT) + +int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, X509_NAME *iname); + +int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc); +int NAME_CONSTRAINTS_check_CN(X509 *x, NAME_CONSTRAINTS *nc); + +DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) +DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) + +DECLARE_ASN1_ITEM(POLICY_MAPPING) +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) +DECLARE_ASN1_ITEM(POLICY_MAPPINGS) + +DECLARE_ASN1_ITEM(GENERAL_SUBTREE) +DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE) + +DECLARE_ASN1_ITEM(NAME_CONSTRAINTS) +DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS) + +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS) +DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS) + +GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, int gen_type, + const char *value, int is_nc); + +# ifdef HEADER_CONF_H +GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf); +GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf, + int is_nc); +void X509V3_conf_free(CONF_VALUE *val); + +X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name, + const char *value); +int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section, + STACK_OF(X509_EXTENSION) **sk); +int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509 *cert); +int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_REQ *req); +int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_CRL *crl); + +X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, + X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *name, const char *value); +int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509 *cert); +int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_REQ *req); +int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_CRL *crl); + +int X509V3_add_value_bool_nf(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool); +int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint); +void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); +void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash); +# endif + +char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section); +STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section); +void X509V3_string_free(X509V3_CTX *ctx, char *str); +void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section); +void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, + X509_REQ *req, X509_CRL *crl, int flags); + +int X509V3_add_value(const char *name, const char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_uchar(const char *name, const unsigned char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_bool(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint, + STACK_OF(CONF_VALUE) **extlist); +char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint); +ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value); +char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint); +char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, + const ASN1_ENUMERATED *aint); +int X509V3_EXT_add(X509V3_EXT_METHOD *ext); +int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist); +int X509V3_EXT_add_alias(int nid_to, int nid_from); +void X509V3_EXT_cleanup(void); + +const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); +const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); +int X509V3_add_standard_extensions(void); +STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); +void *X509V3_EXT_d2i(X509_EXTENSION *ext); +void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, + int *idx); + +X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); +int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, + int crit, unsigned long flags); + +#if OPENSSL_API_COMPAT < 0x10100000L +/* The new declarations are in crypto.h, but the old ones were here. */ +# define hex_to_string OPENSSL_buf2hexstr +# define string_to_hex OPENSSL_hexstr2buf +#endif + +void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, + int ml); +int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, + int indent); +#ifndef OPENSSL_NO_STDIO +int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); +#endif +int X509V3_extensions_print(BIO *out, const char *title, + const STACK_OF(X509_EXTENSION) *exts, + unsigned long flag, int indent); + +int X509_check_ca(X509 *x); +int X509_check_purpose(X509 *x, int id, int ca); +int X509_supported_extension(X509_EXTENSION *ex); +int X509_PURPOSE_set(int *p, int purpose); +int X509_check_issued(X509 *issuer, X509 *subject); +int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid); +void X509_set_proxy_flag(X509 *x); +void X509_set_proxy_pathlen(X509 *x, long l); +long X509_get_proxy_pathlen(X509 *x); + +uint32_t X509_get_extension_flags(X509 *x); +uint32_t X509_get_key_usage(X509 *x); +uint32_t X509_get_extended_key_usage(X509 *x); +const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x); +const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x); +const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); +const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); + +int X509_PURPOSE_get_count(void); +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_by_sname(const char *sname); +int X509_PURPOSE_get_by_id(int id); +int X509_PURPOSE_add(int id, int trust, int flags, + int (*ck) (const X509_PURPOSE *, const X509 *, int), + const char *name, const char *sname, void *arg); +char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); +char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); +int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); +void X509_PURPOSE_cleanup(void); +int X509_PURPOSE_get_id(const X509_PURPOSE *); + +STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); +STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); +void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); +STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); +/* Flags for X509_check_* functions */ + +/* + * Always check subject name for host match even if subject alt names present + */ +# define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1 +/* Disable wildcard matching for dnsName fields and common name. */ +# define X509_CHECK_FLAG_NO_WILDCARDS 0x2 +/* Wildcards must not match a partial label. */ +# define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4 +/* Allow (non-partial) wildcards to match multiple labels. */ +# define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8 +/* Constraint verifier subdomain patterns to match a single labels. */ +# define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10 +/* Never check the subject CN */ +# define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20 +/* + * Match reference identifiers starting with "." to any sub-domain. + * This is a non-public flag, turned on implicitly when the subject + * reference identity is a DNS name. + */ +# define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000 + +int X509_check_host(X509 *x, const char *chk, size_t chklen, + unsigned int flags, char **peername); +int X509_check_email(X509 *x, const char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags); + +ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); +ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); +int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk, + unsigned long chtype); + +void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); +DEFINE_STACK_OF(X509_POLICY_NODE) + +#ifndef OPENSSL_NO_RFC3779 +typedef struct ASRange_st { + ASN1_INTEGER *min, *max; +} ASRange; + +# define ASIdOrRange_id 0 +# define ASIdOrRange_range 1 + +typedef struct ASIdOrRange_st { + int type; + union { + ASN1_INTEGER *id; + ASRange *range; + } u; +} ASIdOrRange; + +typedef STACK_OF(ASIdOrRange) ASIdOrRanges; +DEFINE_STACK_OF(ASIdOrRange) + +# define ASIdentifierChoice_inherit 0 +# define ASIdentifierChoice_asIdsOrRanges 1 + +typedef struct ASIdentifierChoice_st { + int type; + union { + ASN1_NULL *inherit; + ASIdOrRanges *asIdsOrRanges; + } u; +} ASIdentifierChoice; + +typedef struct ASIdentifiers_st { + ASIdentifierChoice *asnum, *rdi; +} ASIdentifiers; + +DECLARE_ASN1_FUNCTIONS(ASRange) +DECLARE_ASN1_FUNCTIONS(ASIdOrRange) +DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice) +DECLARE_ASN1_FUNCTIONS(ASIdentifiers) + +typedef struct IPAddressRange_st { + ASN1_BIT_STRING *min, *max; +} IPAddressRange; + +# define IPAddressOrRange_addressPrefix 0 +# define IPAddressOrRange_addressRange 1 + +typedef struct IPAddressOrRange_st { + int type; + union { + ASN1_BIT_STRING *addressPrefix; + IPAddressRange *addressRange; + } u; +} IPAddressOrRange; + +typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; +DEFINE_STACK_OF(IPAddressOrRange) + +# define IPAddressChoice_inherit 0 +# define IPAddressChoice_addressesOrRanges 1 + +typedef struct IPAddressChoice_st { + int type; + union { + ASN1_NULL *inherit; + IPAddressOrRanges *addressesOrRanges; + } u; +} IPAddressChoice; + +typedef struct IPAddressFamily_st { + ASN1_OCTET_STRING *addressFamily; + IPAddressChoice *ipAddressChoice; +} IPAddressFamily; + +typedef STACK_OF(IPAddressFamily) IPAddrBlocks; +DEFINE_STACK_OF(IPAddressFamily) + +DECLARE_ASN1_FUNCTIONS(IPAddressRange) +DECLARE_ASN1_FUNCTIONS(IPAddressOrRange) +DECLARE_ASN1_FUNCTIONS(IPAddressChoice) +DECLARE_ASN1_FUNCTIONS(IPAddressFamily) + +/* + * API tag for elements of the ASIdentifer SEQUENCE. + */ +# define V3_ASID_ASNUM 0 +# define V3_ASID_RDI 1 + +/* + * AFI values, assigned by IANA. It'd be nice to make the AFI + * handling code totally generic, but there are too many little things + * that would need to be defined for other address families for it to + * be worth the trouble. + */ +# define IANA_AFI_IPV4 1 +# define IANA_AFI_IPV6 2 + +/* + * Utilities to construct and extract values from RFC3779 extensions, + * since some of the encodings (particularly for IP address prefixes + * and ranges) are a bit tedious to work with directly. + */ +int X509v3_asid_add_inherit(ASIdentifiers *asid, int which); +int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which, + ASN1_INTEGER *min, ASN1_INTEGER *max); +int X509v3_addr_add_inherit(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi); +int X509v3_addr_add_prefix(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *a, const int prefixlen); +int X509v3_addr_add_range(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *min, unsigned char *max); +unsigned X509v3_addr_get_afi(const IPAddressFamily *f); +int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi, + unsigned char *min, unsigned char *max, + const int length); + +/* + * Canonical forms. + */ +int X509v3_asid_is_canonical(ASIdentifiers *asid); +int X509v3_addr_is_canonical(IPAddrBlocks *addr); +int X509v3_asid_canonize(ASIdentifiers *asid); +int X509v3_addr_canonize(IPAddrBlocks *addr); + +/* + * Tests for inheritance and containment. + */ +int X509v3_asid_inherits(ASIdentifiers *asid); +int X509v3_addr_inherits(IPAddrBlocks *addr); +int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b); +int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b); + +/* + * Check whether RFC 3779 extensions nest properly in chains. + */ +int X509v3_asid_validate_path(X509_STORE_CTX *); +int X509v3_addr_validate_path(X509_STORE_CTX *); +int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain, + ASIdentifiers *ext, + int allow_inheritance); +int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain, + IPAddrBlocks *ext, int allow_inheritance); + +#endif /* OPENSSL_NO_RFC3779 */ + +DEFINE_STACK_OF(ASN1_STRING) + +/* + * Admission Syntax + */ +typedef struct NamingAuthority_st NAMING_AUTHORITY; +typedef struct ProfessionInfo_st PROFESSION_INFO; +typedef struct Admissions_st ADMISSIONS; +typedef struct AdmissionSyntax_st ADMISSION_SYNTAX; +DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY) +DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO) +DECLARE_ASN1_FUNCTIONS(ADMISSIONS) +DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX) +DEFINE_STACK_OF(ADMISSIONS) +DEFINE_STACK_OF(PROFESSION_INFO) +typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS; + +const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId( + const NAMING_AUTHORITY *n); +const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL( + const NAMING_AUTHORITY *n); +const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText( + const NAMING_AUTHORITY *n); +void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n, + ASN1_OBJECT* namingAuthorityId); +void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n, + ASN1_IA5STRING* namingAuthorityUrl); +void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n, + ASN1_STRING* namingAuthorityText); + +const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_admissionAuthority( + ADMISSION_SYNTAX *as, GENERAL_NAME *aa); +const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_contentsOfAdmissions( + ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a); +const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa); +const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na); +const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a); +void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi); +const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_addProfessionInfo( + PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos); +const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_namingAuthority( + PROFESSION_INFO *pi, NAMING_AUTHORITY *na); +const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionItems( + PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as); +const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionOIDs( + PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po); +const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_registrationNumber( + PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin32/include/openssl/x509v3err.h b/openSSL/lin32/include/openssl/x509v3err.h new file mode 100644 index 0000000..3b9f713 --- /dev/null +++ b/openSSL/lin32/include/openssl/x509v3err.h @@ -0,0 +1,164 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509V3ERR_H +# define HEADER_X509V3ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_X509V3_strings(void); + +/* + * X509V3 function codes. + */ +# define X509V3_F_A2I_GENERAL_NAME 164 +# define X509V3_F_ADDR_VALIDATE_PATH_INTERNAL 166 +# define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 161 +# define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 162 +# define X509V3_F_BIGNUM_TO_STRING 167 +# define X509V3_F_COPY_EMAIL 122 +# define X509V3_F_COPY_ISSUER 123 +# define X509V3_F_DO_DIRNAME 144 +# define X509V3_F_DO_EXT_I2D 135 +# define X509V3_F_DO_EXT_NCONF 151 +# define X509V3_F_GNAMES_FROM_SECTNAME 156 +# define X509V3_F_I2S_ASN1_ENUMERATED 121 +# define X509V3_F_I2S_ASN1_IA5STRING 149 +# define X509V3_F_I2S_ASN1_INTEGER 120 +# define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 138 +# define X509V3_F_I2V_AUTHORITY_KEYID 173 +# define X509V3_F_LEVEL_ADD_NODE 168 +# define X509V3_F_NOTICE_SECTION 132 +# define X509V3_F_NREF_NOS 133 +# define X509V3_F_POLICY_CACHE_CREATE 169 +# define X509V3_F_POLICY_CACHE_NEW 170 +# define X509V3_F_POLICY_DATA_NEW 171 +# define X509V3_F_POLICY_SECTION 131 +# define X509V3_F_PROCESS_PCI_VALUE 150 +# define X509V3_F_R2I_CERTPOL 130 +# define X509V3_F_R2I_PCI 155 +# define X509V3_F_S2I_ASN1_IA5STRING 100 +# define X509V3_F_S2I_ASN1_INTEGER 108 +# define X509V3_F_S2I_ASN1_OCTET_STRING 112 +# define X509V3_F_S2I_SKEY_ID 115 +# define X509V3_F_SET_DIST_POINT_NAME 158 +# define X509V3_F_SXNET_ADD_ID_ASC 125 +# define X509V3_F_SXNET_ADD_ID_INTEGER 126 +# define X509V3_F_SXNET_ADD_ID_ULONG 127 +# define X509V3_F_SXNET_GET_ID_ASC 128 +# define X509V3_F_SXNET_GET_ID_ULONG 129 +# define X509V3_F_TREE_INIT 172 +# define X509V3_F_V2I_ASIDENTIFIERS 163 +# define X509V3_F_V2I_ASN1_BIT_STRING 101 +# define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 139 +# define X509V3_F_V2I_AUTHORITY_KEYID 119 +# define X509V3_F_V2I_BASIC_CONSTRAINTS 102 +# define X509V3_F_V2I_CRLD 134 +# define X509V3_F_V2I_EXTENDED_KEY_USAGE 103 +# define X509V3_F_V2I_GENERAL_NAMES 118 +# define X509V3_F_V2I_GENERAL_NAME_EX 117 +# define X509V3_F_V2I_IDP 157 +# define X509V3_F_V2I_IPADDRBLOCKS 159 +# define X509V3_F_V2I_ISSUER_ALT 153 +# define X509V3_F_V2I_NAME_CONSTRAINTS 147 +# define X509V3_F_V2I_POLICY_CONSTRAINTS 146 +# define X509V3_F_V2I_POLICY_MAPPINGS 145 +# define X509V3_F_V2I_SUBJECT_ALT 154 +# define X509V3_F_V2I_TLS_FEATURE 165 +# define X509V3_F_V3_GENERIC_EXTENSION 116 +# define X509V3_F_X509V3_ADD1_I2D 140 +# define X509V3_F_X509V3_ADD_LEN_VALUE 174 +# define X509V3_F_X509V3_ADD_VALUE 105 +# define X509V3_F_X509V3_EXT_ADD 104 +# define X509V3_F_X509V3_EXT_ADD_ALIAS 106 +# define X509V3_F_X509V3_EXT_I2D 136 +# define X509V3_F_X509V3_EXT_NCONF 152 +# define X509V3_F_X509V3_GET_SECTION 142 +# define X509V3_F_X509V3_GET_STRING 143 +# define X509V3_F_X509V3_GET_VALUE_BOOL 110 +# define X509V3_F_X509V3_PARSE_LIST 109 +# define X509V3_F_X509_PURPOSE_ADD 137 +# define X509V3_F_X509_PURPOSE_SET 141 + +/* + * X509V3 reason codes. + */ +# define X509V3_R_BAD_IP_ADDRESS 118 +# define X509V3_R_BAD_OBJECT 119 +# define X509V3_R_BN_DEC2BN_ERROR 100 +# define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 +# define X509V3_R_DIRNAME_ERROR 149 +# define X509V3_R_DISTPOINT_ALREADY_SET 160 +# define X509V3_R_DUPLICATE_ZONE_ID 133 +# define X509V3_R_ERROR_CONVERTING_ZONE 131 +# define X509V3_R_ERROR_CREATING_EXTENSION 144 +# define X509V3_R_ERROR_IN_EXTENSION 128 +# define X509V3_R_EXPECTED_A_SECTION_NAME 137 +# define X509V3_R_EXTENSION_EXISTS 145 +# define X509V3_R_EXTENSION_NAME_ERROR 115 +# define X509V3_R_EXTENSION_NOT_FOUND 102 +# define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103 +# define X509V3_R_EXTENSION_VALUE_ERROR 116 +# define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151 +# define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152 +# define X509V3_R_INVALID_ASNUMBER 162 +# define X509V3_R_INVALID_ASRANGE 163 +# define X509V3_R_INVALID_BOOLEAN_STRING 104 +# define X509V3_R_INVALID_EXTENSION_STRING 105 +# define X509V3_R_INVALID_INHERITANCE 165 +# define X509V3_R_INVALID_IPADDRESS 166 +# define X509V3_R_INVALID_MULTIPLE_RDNS 161 +# define X509V3_R_INVALID_NAME 106 +# define X509V3_R_INVALID_NULL_ARGUMENT 107 +# define X509V3_R_INVALID_NULL_NAME 108 +# define X509V3_R_INVALID_NULL_VALUE 109 +# define X509V3_R_INVALID_NUMBER 140 +# define X509V3_R_INVALID_NUMBERS 141 +# define X509V3_R_INVALID_OBJECT_IDENTIFIER 110 +# define X509V3_R_INVALID_OPTION 138 +# define X509V3_R_INVALID_POLICY_IDENTIFIER 134 +# define X509V3_R_INVALID_PROXY_POLICY_SETTING 153 +# define X509V3_R_INVALID_PURPOSE 146 +# define X509V3_R_INVALID_SAFI 164 +# define X509V3_R_INVALID_SECTION 135 +# define X509V3_R_INVALID_SYNTAX 143 +# define X509V3_R_ISSUER_DECODE_ERROR 126 +# define X509V3_R_MISSING_VALUE 124 +# define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142 +# define X509V3_R_NO_CONFIG_DATABASE 136 +# define X509V3_R_NO_ISSUER_CERTIFICATE 121 +# define X509V3_R_NO_ISSUER_DETAILS 127 +# define X509V3_R_NO_POLICY_IDENTIFIER 139 +# define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154 +# define X509V3_R_NO_PUBLIC_KEY 114 +# define X509V3_R_NO_SUBJECT_DETAILS 125 +# define X509V3_R_OPERATION_NOT_DEFINED 148 +# define X509V3_R_OTHERNAME_ERROR 147 +# define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155 +# define X509V3_R_POLICY_PATH_LENGTH 156 +# define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED 157 +# define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159 +# define X509V3_R_SECTION_NOT_FOUND 150 +# define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122 +# define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123 +# define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111 +# define X509V3_R_UNKNOWN_EXTENSION 129 +# define X509V3_R_UNKNOWN_EXTENSION_NAME 130 +# define X509V3_R_UNKNOWN_OPTION 120 +# define X509V3_R_UNSUPPORTED_OPTION 117 +# define X509V3_R_UNSUPPORTED_TYPE 167 +# define X509V3_R_USER_TOO_LONG 132 + +#endif diff --git a/openSSL/lin32/libcrypto.so.1.1 b/openSSL/lin32/libcrypto.so.1.1 new file mode 100755 index 0000000000000000000000000000000000000000..0af61e42f4ecdbf54989cedaeafcc4b2e122af6d GIT binary patch literal 3328356 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%0A31=Uy9wVCr`t#U&ZZ9Mno_vg-K}pb87iQl! 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

^cd*uG8WiJjid6a+%|TFi${S42}K1 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 %yd; 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ⅈ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 z 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⁡borGw*ILJ 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 z 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%0D*CE3H0*3Tcv(dXF^}BE1>{z~$vQl{mw*<> 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

6J=G82#Xc- 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%0Ah8R}8hWC%X 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 O3m2|80!>P|A71p^^gBYzWg`-o=XD*cJ|Zg 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%0Dvuu;jw$C%XrLE$S!m@J&&3XIZ+-{6UqXc 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%0DOt1j;Xw6=R3;5wG4g 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 =_6t@kuzD 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 literal 0 HcmV?d00001 diff --git a/openSSL/lin32/libssl.so.1.1 b/openSSL/lin32/libssl.so.1.1 new file mode 100755 index 0000000000000000000000000000000000000000..876c366c4d365a5910534ddc013f8b0b2513a65e GIT binary patch literal 727104 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

    -(;HW$uwNsp$MgiB$5uM5OW+ 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
    tc*&q-M?pJyt%lZW`0OCmW8xMM#paoS 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 Z`cn>RT||fB&(C-4;fF-0di`@>{~rZS4*LKA literal 0 HcmV?d00001 diff --git a/openSSL/lin64/include/openssl/aes.h b/openSSL/lin64/include/openssl/aes.h new file mode 100644 index 0000000..245c552 --- /dev/null +++ b/openSSL/lin64/include/openssl/aes.h @@ -0,0 +1,92 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_AES_H +# define HEADER_AES_H + +# include + +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define AES_ENCRYPT 1 +# define AES_DECRYPT 0 + +/* + * Because array size can't be a const in C, the following two are macros. + * Both sizes are in bytes. + */ +# define AES_MAXNR 14 +# define AES_BLOCK_SIZE 16 + +/* This should be a hidden type, but EVP requires that the size be known */ +struct aes_key_st { +# ifdef AES_LONG + unsigned long rd_key[4 * (AES_MAXNR + 1)]; +# else + unsigned int rd_key[4 * (AES_MAXNR + 1)]; +# endif + int rounds; +}; +typedef struct aes_key_st AES_KEY; + +const char *AES_options(void); + +int AES_set_encrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); +int AES_set_decrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); + +void AES_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); +void AES_decrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); + +void AES_ecb_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key, const int enc); +void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, const int enc); +void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num, const int enc); +void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num, const int enc); +void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num, const int enc); +void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num); +/* NB: the IV is _two_ blocks long */ +void AES_ige_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, const int enc); +/* NB: the IV is _four_ blocks long */ +void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + const AES_KEY *key2, const unsigned char *ivec, + const int enc); + +int AES_wrap_key(AES_KEY *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, unsigned int inlen); +int AES_unwrap_key(AES_KEY *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, unsigned int inlen); + + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/asn1.h b/openSSL/lin64/include/openssl/asn1.h new file mode 100644 index 0000000..9522eec --- /dev/null +++ b/openSSL/lin64/include/openssl/asn1.h @@ -0,0 +1,886 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1_H +# define HEADER_ASN1_H + +# include +# include +# include +# include +# include +# include +# include + +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define V_ASN1_UNIVERSAL 0x00 +# define V_ASN1_APPLICATION 0x40 +# define V_ASN1_CONTEXT_SPECIFIC 0x80 +# define V_ASN1_PRIVATE 0xc0 + +# define V_ASN1_CONSTRUCTED 0x20 +# define V_ASN1_PRIMITIVE_TAG 0x1f +# define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG + +# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ +# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ +# define V_ASN1_ANY -4/* used in ASN1 template code */ + +# define V_ASN1_UNDEF -1 +/* ASN.1 tag values */ +# define V_ASN1_EOC 0 +# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_INTEGER 2 +# define V_ASN1_BIT_STRING 3 +# define V_ASN1_OCTET_STRING 4 +# define V_ASN1_NULL 5 +# define V_ASN1_OBJECT 6 +# define V_ASN1_OBJECT_DESCRIPTOR 7 +# define V_ASN1_EXTERNAL 8 +# define V_ASN1_REAL 9 +# define V_ASN1_ENUMERATED 10 +# define V_ASN1_UTF8STRING 12 +# define V_ASN1_SEQUENCE 16 +# define V_ASN1_SET 17 +# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_PRINTABLESTRING 19 +# define V_ASN1_T61STRING 20 +# define V_ASN1_TELETEXSTRING 20/* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_IA5STRING 22 +# define V_ASN1_UTCTIME 23 +# define V_ASN1_GENERALIZEDTIME 24 /**/ +# define V_ASN1_GRAPHICSTRING 25 /**/ +# define V_ASN1_ISO64STRING 26 /**/ +# define V_ASN1_VISIBLESTRING 26/* alias */ +# define V_ASN1_GENERALSTRING 27 /**/ +# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_BMPSTRING 30 + +/* + * NB the constants below are used internally by ASN1_INTEGER + * and ASN1_ENUMERATED to indicate the sign. They are *not* on + * the wire tag values. + */ + +# define V_ASN1_NEG 0x100 +# define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) +# define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) + +/* For use with d2i_ASN1_type_bytes() */ +# define B_ASN1_NUMERICSTRING 0x0001 +# define B_ASN1_PRINTABLESTRING 0x0002 +# define B_ASN1_T61STRING 0x0004 +# define B_ASN1_TELETEXSTRING 0x0004 +# define B_ASN1_VIDEOTEXSTRING 0x0008 +# define B_ASN1_IA5STRING 0x0010 +# define B_ASN1_GRAPHICSTRING 0x0020 +# define B_ASN1_ISO64STRING 0x0040 +# define B_ASN1_VISIBLESTRING 0x0040 +# define B_ASN1_GENERALSTRING 0x0080 +# define B_ASN1_UNIVERSALSTRING 0x0100 +# define B_ASN1_OCTET_STRING 0x0200 +# define B_ASN1_BIT_STRING 0x0400 +# define B_ASN1_BMPSTRING 0x0800 +# define B_ASN1_UNKNOWN 0x1000 +# define B_ASN1_UTF8STRING 0x2000 +# define B_ASN1_UTCTIME 0x4000 +# define B_ASN1_GENERALIZEDTIME 0x8000 +# define B_ASN1_SEQUENCE 0x10000 +/* For use with ASN1_mbstring_copy() */ +# define MBSTRING_FLAG 0x1000 +# define MBSTRING_UTF8 (MBSTRING_FLAG) +# define MBSTRING_ASC (MBSTRING_FLAG|1) +# define MBSTRING_BMP (MBSTRING_FLAG|2) +# define MBSTRING_UNIV (MBSTRING_FLAG|4) +# define SMIME_OLDMIME 0x400 +# define SMIME_CRLFEOL 0x800 +# define SMIME_STREAM 0x1000 + struct X509_algor_st; +DEFINE_STACK_OF(X509_ALGOR) + +# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +/* + * This indicates that the ASN1_STRING is not a real value but just a place + * holder for the location where indefinite length constructed data should be + * inserted in the memory buffer + */ +# define ASN1_STRING_FLAG_NDEF 0x010 + +/* + * This flag is used by the CMS code to indicate that a string is not + * complete and is a place holder for content when it had all been accessed. + * The flag will be reset when content has been written to it. + */ + +# define ASN1_STRING_FLAG_CONT 0x020 +/* + * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING + * type. + */ +# define ASN1_STRING_FLAG_MSTRING 0x040 +/* String is embedded and only content should be freed */ +# define ASN1_STRING_FLAG_EMBED 0x080 +/* String should be parsed in RFC 5280's time format */ +# define ASN1_STRING_FLAG_X509_TIME 0x100 +/* This is the base type that holds just about everything :-) */ +struct asn1_string_st { + int length; + int type; + unsigned char *data; + /* + * The value of the following field depends on the type being held. It + * is mostly being used for BIT_STRING so if the input data has a + * non-zero 'unused bits' value, it will be handled correctly + */ + long flags; +}; + +/* + * ASN1_ENCODING structure: this is used to save the received encoding of an + * ASN1 type. This is useful to get round problems with invalid encodings + * which can break signatures. + */ + +typedef struct ASN1_ENCODING_st { + unsigned char *enc; /* DER encoding */ + long len; /* Length of encoding */ + int modified; /* set to 1 if 'enc' is invalid */ +} ASN1_ENCODING; + +/* Used with ASN1 LONG type: if a long is set to this it is omitted */ +# define ASN1_LONG_UNDEF 0x7fffffffL + +# define STABLE_FLAGS_MALLOC 0x01 +/* + * A zero passed to ASN1_STRING_TABLE_new_add for the flags is interpreted + * as "don't change" and STABLE_FLAGS_MALLOC is always set. By setting + * STABLE_FLAGS_MALLOC only we can clear the existing value. Use the alias + * STABLE_FLAGS_CLEAR to reflect this. + */ +# define STABLE_FLAGS_CLEAR STABLE_FLAGS_MALLOC +# define STABLE_NO_MASK 0x02 +# define DIRSTRING_TYPE \ + (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING) +# define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING) + +typedef struct asn1_string_table_st { + int nid; + long minsize; + long maxsize; + unsigned long mask; + unsigned long flags; +} ASN1_STRING_TABLE; + +DEFINE_STACK_OF(ASN1_STRING_TABLE) + +/* size limits: this stuff is taken straight from RFC2459 */ + +# define ub_name 32768 +# define ub_common_name 64 +# define ub_locality_name 128 +# define ub_state_name 128 +# define ub_organization_name 64 +# define ub_organization_unit_name 64 +# define ub_title 64 +# define ub_email_address 128 + +/* + * Declarations for template structures: for full definitions see asn1t.h + */ +typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE; +typedef struct ASN1_TLC_st ASN1_TLC; +/* This is just an opaque pointer */ +typedef struct ASN1_VALUE_st ASN1_VALUE; + +/* Declare ASN1 functions: the implement macro in in asn1t.h */ + +# define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) + +# define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(itname) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(const type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(name) + +# define DECLARE_ASN1_NDEF_FUNCTION(name) \ + int i2d_##name##_NDEF(name *a, unsigned char **out); + +# define DECLARE_ASN1_FUNCTIONS_const(name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS(name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + type *name##_new(void); \ + void name##_free(type *a); + +# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname) + +# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ + int fname##_print_ctx(BIO *out, stname *x, int indent, \ + const ASN1_PCTX *pctx); + +# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) +# define I2D_OF(type) int (*)(type *,unsigned char **) +# define I2D_OF_const(type) int (*)(const type *,unsigned char **) + +# define CHECKED_D2I_OF(type, d2i) \ + ((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0))) +# define CHECKED_I2D_OF(type, i2d) \ + ((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0))) +# define CHECKED_NEW_OF(type, xnew) \ + ((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0))) +# define CHECKED_PTR_OF(type, p) \ + ((void*) (1 ? p : (type*)0)) +# define CHECKED_PPTR_OF(type, p) \ + ((void**) (1 ? p : (type**)0)) + +# define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long) +# define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **) +# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) + +TYPEDEF_D2I2D_OF(void); + +/*- + * The following macros and typedefs allow an ASN1_ITEM + * to be embedded in a structure and referenced. Since + * the ASN1_ITEM pointers need to be globally accessible + * (possibly from shared libraries) they may exist in + * different forms. On platforms that support it the + * ASN1_ITEM structure itself will be globally exported. + * Other platforms will export a function that returns + * an ASN1_ITEM pointer. + * + * To handle both cases transparently the macros below + * should be used instead of hard coding an ASN1_ITEM + * pointer in a structure. + * + * The structure will look like this: + * + * typedef struct SOMETHING_st { + * ... + * ASN1_ITEM_EXP *iptr; + * ... + * } SOMETHING; + * + * It would be initialised as e.g.: + * + * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...}; + * + * and the actual pointer extracted with: + * + * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr); + * + * Finally an ASN1_ITEM pointer can be extracted from an + * appropriate reference with: ASN1_ITEM_rptr(X509). This + * would be used when a function takes an ASN1_ITEM * argument. + * + */ + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM ASN1_ITEM_EXP; + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (&(iptr##_it)) + +# define ASN1_ITEM_rptr(ref) (&(ref##_it)) + +# define DECLARE_ASN1_ITEM(name) \ + OPENSSL_EXTERN const ASN1_ITEM name##_it; + +# else + +/* + * Platforms that can't easily handle shared global variables are declared as + * functions returning ASN1_ITEM pointers. + */ + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM *ASN1_ITEM_EXP (void); + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr()) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (iptr##_it) + +# define ASN1_ITEM_rptr(ref) (ref##_it()) + +# define DECLARE_ASN1_ITEM(name) \ + const ASN1_ITEM * name##_it(void); + +# endif + +/* Parameters used by ASN1_STRING_print_ex() */ + +/* + * These determine which characters to escape: RFC2253 special characters, + * control characters and MSB set characters + */ + +# define ASN1_STRFLGS_ESC_2253 1 +# define ASN1_STRFLGS_ESC_CTRL 2 +# define ASN1_STRFLGS_ESC_MSB 4 + +/* + * This flag determines how we do escaping: normally RC2253 backslash only, + * set this to use backslash and quote. + */ + +# define ASN1_STRFLGS_ESC_QUOTE 8 + +/* These three flags are internal use only. */ + +/* Character is a valid PrintableString character */ +# define CHARTYPE_PRINTABLESTRING 0x10 +/* Character needs escaping if it is the first character */ +# define CHARTYPE_FIRST_ESC_2253 0x20 +/* Character needs escaping if it is the last character */ +# define CHARTYPE_LAST_ESC_2253 0x40 + +/* + * NB the internal flags are safely reused below by flags handled at the top + * level. + */ + +/* + * If this is set we convert all character strings to UTF8 first + */ + +# define ASN1_STRFLGS_UTF8_CONVERT 0x10 + +/* + * If this is set we don't attempt to interpret content: just assume all + * strings are 1 byte per character. This will produce some pretty odd + * looking output! + */ + +# define ASN1_STRFLGS_IGNORE_TYPE 0x20 + +/* If this is set we include the string type in the output */ +# define ASN1_STRFLGS_SHOW_TYPE 0x40 + +/* + * This determines which strings to display and which to 'dump' (hex dump of + * content octets or DER encoding). We can only dump non character strings or + * everything. If we don't dump 'unknown' they are interpreted as character + * strings with 1 octet per character and are subject to the usual escaping + * options. + */ + +# define ASN1_STRFLGS_DUMP_ALL 0x80 +# define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 + +/* + * These determine what 'dumping' does, we can dump the content octets or the + * DER encoding: both use the RFC2253 #XXXXX notation. + */ + +# define ASN1_STRFLGS_DUMP_DER 0x200 + +/* + * This flag specifies that RC2254 escaping shall be performed. + */ +#define ASN1_STRFLGS_ESC_2254 0x400 + +/* + * All the string flags consistent with RFC2253, escaping control characters + * isn't essential in RFC2253 but it is advisable anyway. + */ + +# define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \ + ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + ASN1_STRFLGS_UTF8_CONVERT | \ + ASN1_STRFLGS_DUMP_UNKNOWN | \ + ASN1_STRFLGS_DUMP_DER) + +DEFINE_STACK_OF(ASN1_INTEGER) + +DEFINE_STACK_OF(ASN1_GENERALSTRING) + +DEFINE_STACK_OF(ASN1_UTF8STRING) + +typedef struct asn1_type_st { + int type; + union { + char *ptr; + ASN1_BOOLEAN boolean; + ASN1_STRING *asn1_string; + ASN1_OBJECT *object; + ASN1_INTEGER *integer; + ASN1_ENUMERATED *enumerated; + ASN1_BIT_STRING *bit_string; + ASN1_OCTET_STRING *octet_string; + ASN1_PRINTABLESTRING *printablestring; + ASN1_T61STRING *t61string; + ASN1_IA5STRING *ia5string; + ASN1_GENERALSTRING *generalstring; + ASN1_BMPSTRING *bmpstring; + ASN1_UNIVERSALSTRING *universalstring; + ASN1_UTCTIME *utctime; + ASN1_GENERALIZEDTIME *generalizedtime; + ASN1_VISIBLESTRING *visiblestring; + ASN1_UTF8STRING *utf8string; + /* + * set and sequence are left complete and still contain the set or + * sequence bytes + */ + ASN1_STRING *set; + ASN1_STRING *sequence; + ASN1_VALUE *asn1_value; + } value; +} ASN1_TYPE; + +DEFINE_STACK_OF(ASN1_TYPE) + +typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SET_ANY) + +/* This is used to contain a list of bit names */ +typedef struct BIT_STRING_BITNAME_st { + int bitnum; + const char *lname; + const char *sname; +} BIT_STRING_BITNAME; + +# define B_ASN1_TIME \ + B_ASN1_UTCTIME | \ + B_ASN1_GENERALIZEDTIME + +# define B_ASN1_PRINTABLE \ + B_ASN1_NUMERICSTRING| \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_T61STRING| \ + B_ASN1_IA5STRING| \ + B_ASN1_BIT_STRING| \ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING|\ + B_ASN1_SEQUENCE|\ + B_ASN1_UNKNOWN + +# define B_ASN1_DIRECTORYSTRING \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_TELETEXSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_UTF8STRING + +# define B_ASN1_DISPLAYTEXT \ + B_ASN1_IA5STRING| \ + B_ASN1_VISIBLESTRING| \ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING + +DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) + +int ASN1_TYPE_get(const ASN1_TYPE *a); +void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); +int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value); +int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b); + +ASN1_TYPE *ASN1_TYPE_pack_sequence(const ASN1_ITEM *it, void *s, ASN1_TYPE **t); +void *ASN1_TYPE_unpack_sequence(const ASN1_ITEM *it, const ASN1_TYPE *t); + +ASN1_OBJECT *ASN1_OBJECT_new(void); +void ASN1_OBJECT_free(ASN1_OBJECT *a); +int i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp); +ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, + long length); + +DECLARE_ASN1_ITEM(ASN1_OBJECT) + +DEFINE_STACK_OF(ASN1_OBJECT) + +ASN1_STRING *ASN1_STRING_new(void); +void ASN1_STRING_free(ASN1_STRING *a); +void ASN1_STRING_clear_free(ASN1_STRING *a); +int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); +ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a); +ASN1_STRING *ASN1_STRING_type_new(int type); +int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); + /* + * Since this is used to store all sorts of things, via macros, for now, + * make its data void * + */ +int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); +void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); +int ASN1_STRING_length(const ASN1_STRING *x); +void ASN1_STRING_length_set(ASN1_STRING *x, int n); +int ASN1_STRING_type(const ASN1_STRING *x); +DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x)) +const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x); + +DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING) +int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length); +int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); +int ASN1_BIT_STRING_get_bit(const ASN1_BIT_STRING *a, int n); +int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *a, + const unsigned char *flags, int flags_len); + +int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, + BIT_STRING_BITNAME *tbl, int indent); +int ASN1_BIT_STRING_num_asc(const char *name, BIT_STRING_BITNAME *tbl); +int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value, + BIT_STRING_BITNAME *tbl); + +DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) +ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x); +int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y); + +DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED) + +int ASN1_UTCTIME_check(const ASN1_UTCTIME *a); +ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); +ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); +int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); + +int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, + time_t t); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, + time_t t, int offset_day, + long offset_sec); +int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str); + +int ASN1_TIME_diff(int *pday, int *psec, + const ASN1_TIME *from, const ASN1_TIME *to); + +DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING) +ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a); +int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, + const ASN1_OCTET_STRING *b); +int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, + int len); + +DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_NULL) +DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING) + +int UTF8_getc(const unsigned char *str, int len, unsigned long *val); +int UTF8_putc(unsigned char *str, int len, unsigned long value); + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE) + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING) +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT) +DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_TIME) + +DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF) + +ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); +ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_TIME_check(const ASN1_TIME *t); +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(const ASN1_TIME *t, + ASN1_GENERALIZEDTIME **out); +int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); +int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str); +int ASN1_TIME_to_tm(const ASN1_TIME *s, struct tm *tm); +int ASN1_TIME_normalize(ASN1_TIME *s); +int ASN1_TIME_cmp_time_t(const ASN1_TIME *s, time_t t); +int ASN1_TIME_compare(const ASN1_TIME *a, const ASN1_TIME *b); + +int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a); +int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); +int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a); +int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); +int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a); +int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); +int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type); +int i2t_ASN1_OBJECT(char *buf, int buf_len, const ASN1_OBJECT *a); + +int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); +ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len, + const char *sn, const char *ln); + +int ASN1_INTEGER_get_int64(int64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_int64(ASN1_INTEGER *a, int64_t r); +int ASN1_INTEGER_get_uint64(uint64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_uint64(ASN1_INTEGER *a, uint64_t r); + +int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); +long ASN1_INTEGER_get(const ASN1_INTEGER *a); +ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); +BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); + +int ASN1_ENUMERATED_get_int64(int64_t *pr, const ASN1_ENUMERATED *a); +int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *a, int64_t r); + + +int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); +long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a); +ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai); +BIGNUM *ASN1_ENUMERATED_to_BN(const ASN1_ENUMERATED *ai, BIGNUM *bn); + +/* General */ +/* given a string, return the correct type, max is the maximum length */ +int ASN1_PRINTABLE_type(const unsigned char *s, int max); + +unsigned long ASN1_tag2bit(int tag); + +/* SPECIALS */ +int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, + int *pclass, long omax); +int ASN1_check_infinite_end(unsigned char **p, long len); +int ASN1_const_check_infinite_end(const unsigned char **p, long len); +void ASN1_put_object(unsigned char **pp, int constructed, int length, + int tag, int xclass); +int ASN1_put_eoc(unsigned char **pp); +int ASN1_object_size(int constructed, int length, int tag); + +/* Used to implement other functions */ +void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x); + +# define ASN1_dup_of(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_dup_of_const(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(const type, x))) + +void *ASN1_item_dup(const ASN1_ITEM *it, void *x); + +/* ASN1 alloc/free macros for when a type is only used internally */ + +# define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type)) +# define M_ASN1_free_of(x, type) \ + ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type)) + +# ifndef OPENSSL_NO_STDIO +void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x); + +# define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); +int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x); + +# define ASN1_i2d_fp_of(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_fp_of_const(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x); +int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags); +# endif + +int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in); + +void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x); + +# define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); +int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x); + +# define ASN1_i2d_bio_of(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_bio_of_const(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); +int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a); +int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a); +int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a); +int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v); +int ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str, unsigned long flags); +int ASN1_buf_print(BIO *bp, const unsigned char *buf, size_t buflen, int off); +int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, + unsigned char *buf, int off); +int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent); +int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, + int dump); +const char *ASN1_tag2str(int tag); + +/* Used to load and write Netscape format cert */ + +int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); + +int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); +int ASN1_TYPE_get_octetstring(const ASN1_TYPE *a, unsigned char *data, int max_len); +int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, + unsigned char *data, int len); +int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, + unsigned char *data, int max_len); + +void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); + +ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, + ASN1_OCTET_STRING **oct); + +void ASN1_STRING_set_default_mask(unsigned long mask); +int ASN1_STRING_set_default_mask_asc(const char *p); +unsigned long ASN1_STRING_get_default_mask(void); +int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask); +int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask, + long minsize, long maxsize); + +ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, + const unsigned char *in, int inlen, + int inform, int nid); +ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); +int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); +void ASN1_STRING_TABLE_cleanup(void); + +/* ASN1 template functions */ + +/* Old API compatible functions */ +ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); +void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); +ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it); +int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); +int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out, + const ASN1_ITEM *it); + +void ASN1_add_oid_module(void); +void ASN1_add_stable_module(void); + +ASN1_TYPE *ASN1_generate_nconf(const char *str, CONF *nconf); +ASN1_TYPE *ASN1_generate_v3(const char *str, X509V3_CTX *cnf); +int ASN1_str2mask(const char *str, unsigned long *pmask); + +/* ASN1 Print flags */ + +/* Indicate missing OPTIONAL fields */ +# define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001 +/* Mark start and end of SEQUENCE */ +# define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002 +/* Mark start and end of SEQUENCE/SET OF */ +# define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004 +/* Show the ASN1 type of primitives */ +# define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008 +/* Don't show ASN1 type of ANY */ +# define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010 +/* Don't show ASN1 type of MSTRINGs */ +# define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020 +/* Don't show field names in SEQUENCE */ +# define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040 +/* Show structure names of each SEQUENCE field */ +# define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080 +/* Don't show structure name even at top level */ +# define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100 + +int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent, + const ASN1_ITEM *it, const ASN1_PCTX *pctx); +ASN1_PCTX *ASN1_PCTX_new(void); +void ASN1_PCTX_free(ASN1_PCTX *p); +unsigned long ASN1_PCTX_get_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_nm_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_cert_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_oid_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_str_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags); + +ASN1_SCTX *ASN1_SCTX_new(int (*scan_cb) (ASN1_SCTX *ctx)); +void ASN1_SCTX_free(ASN1_SCTX *p); +const ASN1_ITEM *ASN1_SCTX_get_item(ASN1_SCTX *p); +const ASN1_TEMPLATE *ASN1_SCTX_get_template(ASN1_SCTX *p); +unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p); +void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data); +void *ASN1_SCTX_get_app_data(ASN1_SCTX *p); + +const BIO_METHOD *BIO_f_asn1(void); + +BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it); + +int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const ASN1_ITEM *it); +int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const char *hdr, const ASN1_ITEM *it); +int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, + int ctype_nid, int econt_nid, + STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it); +ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); +int SMIME_crlf_copy(BIO *in, BIO *out, int flags); +int SMIME_text(BIO *in, BIO *out); + +const ASN1_ITEM *ASN1_ITEM_lookup(const char *name); +const ASN1_ITEM *ASN1_ITEM_get(size_t i); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/asn1_mac.h b/openSSL/lin64/include/openssl/asn1_mac.h new file mode 100644 index 0000000..7ac1782 --- /dev/null +++ b/openSSL/lin64/include/openssl/asn1_mac.h @@ -0,0 +1,10 @@ +/* + * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#error "This file is obsolete; please update your software." diff --git a/openSSL/lin64/include/openssl/asn1err.h b/openSSL/lin64/include/openssl/asn1err.h new file mode 100644 index 0000000..e1ad1fe --- /dev/null +++ b/openSSL/lin64/include/openssl/asn1err.h @@ -0,0 +1,256 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1ERR_H +# define HEADER_ASN1ERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ASN1_strings(void); + +/* + * ASN1 function codes. + */ +# define ASN1_F_A2D_ASN1_OBJECT 100 +# define ASN1_F_A2I_ASN1_INTEGER 102 +# define ASN1_F_A2I_ASN1_STRING 103 +# define ASN1_F_APPEND_EXP 176 +# define ASN1_F_ASN1_BIO_INIT 113 +# define ASN1_F_ASN1_BIT_STRING_SET_BIT 183 +# define ASN1_F_ASN1_CB 177 +# define ASN1_F_ASN1_CHECK_TLEN 104 +# define ASN1_F_ASN1_COLLECT 106 +# define ASN1_F_ASN1_D2I_EX_PRIMITIVE 108 +# define ASN1_F_ASN1_D2I_FP 109 +# define ASN1_F_ASN1_D2I_READ_BIO 107 +# define ASN1_F_ASN1_DIGEST 184 +# define ASN1_F_ASN1_DO_ADB 110 +# define ASN1_F_ASN1_DO_LOCK 233 +# define ASN1_F_ASN1_DUP 111 +# define ASN1_F_ASN1_ENC_SAVE 115 +# define ASN1_F_ASN1_EX_C2I 204 +# define ASN1_F_ASN1_FIND_END 190 +# define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 216 +# define ASN1_F_ASN1_GENERATE_V3 178 +# define ASN1_F_ASN1_GET_INT64 224 +# define ASN1_F_ASN1_GET_OBJECT 114 +# define ASN1_F_ASN1_GET_UINT64 225 +# define ASN1_F_ASN1_I2D_BIO 116 +# define ASN1_F_ASN1_I2D_FP 117 +# define ASN1_F_ASN1_ITEM_D2I_FP 206 +# define ASN1_F_ASN1_ITEM_DUP 191 +# define ASN1_F_ASN1_ITEM_EMBED_D2I 120 +# define ASN1_F_ASN1_ITEM_EMBED_NEW 121 +# define ASN1_F_ASN1_ITEM_EX_I2D 144 +# define ASN1_F_ASN1_ITEM_FLAGS_I2D 118 +# define ASN1_F_ASN1_ITEM_I2D_BIO 192 +# define ASN1_F_ASN1_ITEM_I2D_FP 193 +# define ASN1_F_ASN1_ITEM_PACK 198 +# define ASN1_F_ASN1_ITEM_SIGN 195 +# define ASN1_F_ASN1_ITEM_SIGN_CTX 220 +# define ASN1_F_ASN1_ITEM_UNPACK 199 +# define ASN1_F_ASN1_ITEM_VERIFY 197 +# define ASN1_F_ASN1_MBSTRING_NCOPY 122 +# define ASN1_F_ASN1_OBJECT_NEW 123 +# define ASN1_F_ASN1_OUTPUT_DATA 214 +# define ASN1_F_ASN1_PCTX_NEW 205 +# define ASN1_F_ASN1_PRIMITIVE_NEW 119 +# define ASN1_F_ASN1_SCTX_NEW 221 +# define ASN1_F_ASN1_SIGN 128 +# define ASN1_F_ASN1_STR2TYPE 179 +# define ASN1_F_ASN1_STRING_GET_INT64 227 +# define ASN1_F_ASN1_STRING_GET_UINT64 230 +# define ASN1_F_ASN1_STRING_SET 186 +# define ASN1_F_ASN1_STRING_TABLE_ADD 129 +# define ASN1_F_ASN1_STRING_TO_BN 228 +# define ASN1_F_ASN1_STRING_TYPE_NEW 130 +# define ASN1_F_ASN1_TEMPLATE_EX_D2I 132 +# define ASN1_F_ASN1_TEMPLATE_NEW 133 +# define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131 +# define ASN1_F_ASN1_TIME_ADJ 217 +# define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134 +# define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135 +# define ASN1_F_ASN1_UTCTIME_ADJ 218 +# define ASN1_F_ASN1_VERIFY 137 +# define ASN1_F_B64_READ_ASN1 209 +# define ASN1_F_B64_WRITE_ASN1 210 +# define ASN1_F_BIO_NEW_NDEF 208 +# define ASN1_F_BITSTR_CB 180 +# define ASN1_F_BN_TO_ASN1_STRING 229 +# define ASN1_F_C2I_ASN1_BIT_STRING 189 +# define ASN1_F_C2I_ASN1_INTEGER 194 +# define ASN1_F_C2I_ASN1_OBJECT 196 +# define ASN1_F_C2I_IBUF 226 +# define ASN1_F_C2I_UINT64_INT 101 +# define ASN1_F_COLLECT_DATA 140 +# define ASN1_F_D2I_ASN1_OBJECT 147 +# define ASN1_F_D2I_ASN1_UINTEGER 150 +# define ASN1_F_D2I_AUTOPRIVATEKEY 207 +# define ASN1_F_D2I_PRIVATEKEY 154 +# define ASN1_F_D2I_PUBLICKEY 155 +# define ASN1_F_DO_BUF 142 +# define ASN1_F_DO_CREATE 124 +# define ASN1_F_DO_DUMP 125 +# define ASN1_F_DO_TCREATE 222 +# define ASN1_F_I2A_ASN1_OBJECT 126 +# define ASN1_F_I2D_ASN1_BIO_STREAM 211 +# define ASN1_F_I2D_ASN1_OBJECT 143 +# define ASN1_F_I2D_DSA_PUBKEY 161 +# define ASN1_F_I2D_EC_PUBKEY 181 +# define ASN1_F_I2D_PRIVATEKEY 163 +# define ASN1_F_I2D_PUBLICKEY 164 +# define ASN1_F_I2D_RSA_PUBKEY 165 +# define ASN1_F_LONG_C2I 166 +# define ASN1_F_NDEF_PREFIX 127 +# define ASN1_F_NDEF_SUFFIX 136 +# define ASN1_F_OID_MODULE_INIT 174 +# define ASN1_F_PARSE_TAGGING 182 +# define ASN1_F_PKCS5_PBE2_SET_IV 167 +# define ASN1_F_PKCS5_PBE2_SET_SCRYPT 231 +# define ASN1_F_PKCS5_PBE_SET 202 +# define ASN1_F_PKCS5_PBE_SET0_ALGOR 215 +# define ASN1_F_PKCS5_PBKDF2_SET 219 +# define ASN1_F_PKCS5_SCRYPT_SET 232 +# define ASN1_F_SMIME_READ_ASN1 212 +# define ASN1_F_SMIME_TEXT 213 +# define ASN1_F_STABLE_GET 138 +# define ASN1_F_STBL_MODULE_INIT 223 +# define ASN1_F_UINT32_C2I 105 +# define ASN1_F_UINT32_NEW 139 +# define ASN1_F_UINT64_C2I 112 +# define ASN1_F_UINT64_NEW 141 +# define ASN1_F_X509_CRL_ADD0_REVOKED 169 +# define ASN1_F_X509_INFO_NEW 170 +# define ASN1_F_X509_NAME_ENCODE 203 +# define ASN1_F_X509_NAME_EX_D2I 158 +# define ASN1_F_X509_NAME_EX_NEW 171 +# define ASN1_F_X509_PKEY_NEW 173 + +/* + * ASN1 reason codes. + */ +# define ASN1_R_ADDING_OBJECT 171 +# define ASN1_R_ASN1_PARSE_ERROR 203 +# define ASN1_R_ASN1_SIG_PARSE_ERROR 204 +# define ASN1_R_AUX_ERROR 100 +# define ASN1_R_BAD_OBJECT_HEADER 102 +# define ASN1_R_BAD_TEMPLATE 230 +# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214 +# define ASN1_R_BN_LIB 105 +# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106 +# define ASN1_R_BUFFER_TOO_SMALL 107 +# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108 +# define ASN1_R_CONTEXT_NOT_INITIALISED 217 +# define ASN1_R_DATA_IS_WRONG 109 +# define ASN1_R_DECODE_ERROR 110 +# define ASN1_R_DEPTH_EXCEEDED 174 +# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198 +# define ASN1_R_ENCODE_ERROR 112 +# define ASN1_R_ERROR_GETTING_TIME 173 +# define ASN1_R_ERROR_LOADING_SECTION 172 +# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114 +# define ASN1_R_EXPECTING_AN_INTEGER 115 +# define ASN1_R_EXPECTING_AN_OBJECT 116 +# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119 +# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120 +# define ASN1_R_FIELD_MISSING 121 +# define ASN1_R_FIRST_NUM_TOO_LARGE 122 +# define ASN1_R_HEADER_TOO_LONG 123 +# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175 +# define ASN1_R_ILLEGAL_BOOLEAN 176 +# define ASN1_R_ILLEGAL_CHARACTERS 124 +# define ASN1_R_ILLEGAL_FORMAT 177 +# define ASN1_R_ILLEGAL_HEX 178 +# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179 +# define ASN1_R_ILLEGAL_INTEGER 180 +# define ASN1_R_ILLEGAL_NEGATIVE_VALUE 226 +# define ASN1_R_ILLEGAL_NESTED_TAGGING 181 +# define ASN1_R_ILLEGAL_NULL 125 +# define ASN1_R_ILLEGAL_NULL_VALUE 182 +# define ASN1_R_ILLEGAL_OBJECT 183 +# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126 +# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170 +# define ASN1_R_ILLEGAL_PADDING 221 +# define ASN1_R_ILLEGAL_TAGGED_ANY 127 +# define ASN1_R_ILLEGAL_TIME_VALUE 184 +# define ASN1_R_ILLEGAL_ZERO_CONTENT 222 +# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185 +# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128 +# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220 +# define ASN1_R_INVALID_BMPSTRING_LENGTH 129 +# define ASN1_R_INVALID_DIGIT 130 +# define ASN1_R_INVALID_MIME_TYPE 205 +# define ASN1_R_INVALID_MODIFIER 186 +# define ASN1_R_INVALID_NUMBER 187 +# define ASN1_R_INVALID_OBJECT_ENCODING 216 +# define ASN1_R_INVALID_SCRYPT_PARAMETERS 227 +# define ASN1_R_INVALID_SEPARATOR 131 +# define ASN1_R_INVALID_STRING_TABLE_VALUE 218 +# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133 +# define ASN1_R_INVALID_UTF8STRING 134 +# define ASN1_R_INVALID_VALUE 219 +# define ASN1_R_LIST_ERROR 188 +# define ASN1_R_MIME_NO_CONTENT_TYPE 206 +# define ASN1_R_MIME_PARSE_ERROR 207 +# define ASN1_R_MIME_SIG_PARSE_ERROR 208 +# define ASN1_R_MISSING_EOC 137 +# define ASN1_R_MISSING_SECOND_NUMBER 138 +# define ASN1_R_MISSING_VALUE 189 +# define ASN1_R_MSTRING_NOT_UNIVERSAL 139 +# define ASN1_R_MSTRING_WRONG_TAG 140 +# define ASN1_R_NESTED_ASN1_STRING 197 +# define ASN1_R_NESTED_TOO_DEEP 201 +# define ASN1_R_NON_HEX_CHARACTERS 141 +# define ASN1_R_NOT_ASCII_FORMAT 190 +# define ASN1_R_NOT_ENOUGH_DATA 142 +# define ASN1_R_NO_CONTENT_TYPE 209 +# define ASN1_R_NO_MATCHING_CHOICE_TYPE 143 +# define ASN1_R_NO_MULTIPART_BODY_FAILURE 210 +# define ASN1_R_NO_MULTIPART_BOUNDARY 211 +# define ASN1_R_NO_SIG_CONTENT_TYPE 212 +# define ASN1_R_NULL_IS_WRONG_LENGTH 144 +# define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191 +# define ASN1_R_ODD_NUMBER_OF_CHARS 145 +# define ASN1_R_SECOND_NUMBER_TOO_LARGE 147 +# define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148 +# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149 +# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192 +# define ASN1_R_SHORT_LINE 150 +# define ASN1_R_SIG_INVALID_MIME_TYPE 213 +# define ASN1_R_STREAMING_NOT_SUPPORTED 202 +# define ASN1_R_STRING_TOO_LONG 151 +# define ASN1_R_STRING_TOO_SHORT 152 +# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154 +# define ASN1_R_TIME_NOT_ASCII_FORMAT 193 +# define ASN1_R_TOO_LARGE 223 +# define ASN1_R_TOO_LONG 155 +# define ASN1_R_TOO_SMALL 224 +# define ASN1_R_TYPE_NOT_CONSTRUCTED 156 +# define ASN1_R_TYPE_NOT_PRIMITIVE 195 +# define ASN1_R_UNEXPECTED_EOC 159 +# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215 +# define ASN1_R_UNKNOWN_FORMAT 160 +# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161 +# define ASN1_R_UNKNOWN_OBJECT_TYPE 162 +# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163 +# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199 +# define ASN1_R_UNKNOWN_TAG 194 +# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164 +# define ASN1_R_UNSUPPORTED_CIPHER 228 +# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167 +# define ASN1_R_UNSUPPORTED_TYPE 196 +# define ASN1_R_WRONG_INTEGER_TYPE 225 +# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +# define ASN1_R_WRONG_TAG 168 + +#endif diff --git a/openSSL/lin64/include/openssl/asn1t.h b/openSSL/lin64/include/openssl/asn1t.h new file mode 100644 index 0000000..a450ba0 --- /dev/null +++ b/openSSL/lin64/include/openssl/asn1t.h @@ -0,0 +1,945 @@ +/* + * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1T_H +# define HEADER_ASN1T_H + +# include +# include +# include + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +/* ASN1 template defines, structures and functions */ + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */ +# define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)(iptr)) + +/* Macros for start and end of ASN1_ITEM definition */ + +# define ASN1_ITEM_start(itname) \ + const ASN1_ITEM itname##_it = { + +# define static_ASN1_ITEM_start(itname) \ + static const ASN1_ITEM itname##_it = { + +# define ASN1_ITEM_end(itname) \ + }; + +# else + +/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */ +# define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)((iptr)())) + +/* Macros for start and end of ASN1_ITEM definition */ + +# define ASN1_ITEM_start(itname) \ + const ASN1_ITEM * itname##_it(void) \ + { \ + static const ASN1_ITEM local_it = { + +# define static_ASN1_ITEM_start(itname) \ + static ASN1_ITEM_start(itname) + +# define ASN1_ITEM_end(itname) \ + }; \ + return &local_it; \ + } + +# endif + +/* Macros to aid ASN1 template writing */ + +# define ASN1_ITEM_TEMPLATE(tname) \ + static const ASN1_TEMPLATE tname##_item_tt + +# define ASN1_ITEM_TEMPLATE_END(tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_PRIMITIVE,\ + -1,\ + &tname##_item_tt,\ + 0,\ + NULL,\ + 0,\ + #tname \ + ASN1_ITEM_end(tname) +# define static_ASN1_ITEM_TEMPLATE_END(tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_PRIMITIVE,\ + -1,\ + &tname##_item_tt,\ + 0,\ + NULL,\ + 0,\ + #tname \ + ASN1_ITEM_end(tname) + +/* This is a ASN1 type which just embeds a template */ + +/*- + * This pair helps declare a SEQUENCE. We can do: + * + * ASN1_SEQUENCE(stname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END(stname) + * + * This will produce an ASN1_ITEM called stname_it + * for a structure called stname. + * + * If you want the same structure but a different + * name then use: + * + * ASN1_SEQUENCE(itname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END_name(stname, itname) + * + * This will create an item called itname_it using + * a structure called stname. + */ + +# define ASN1_SEQUENCE(tname) \ + static const ASN1_TEMPLATE tname##_seq_tt[] + +# define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname) + +# define static_ASN1_SEQUENCE_END(stname) static_ASN1_SEQUENCE_END_name(stname, stname) + +# define ASN1_SEQUENCE_END_name(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #tname \ + ASN1_ITEM_end(tname) + +# define static_ASN1_SEQUENCE_END_name(stname, tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_NDEF_SEQUENCE(tname) \ + ASN1_SEQUENCE(tname) + +# define ASN1_NDEF_SEQUENCE_cb(tname, cb) \ + ASN1_SEQUENCE_cb(tname, cb) + +# define ASN1_SEQUENCE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_BROKEN_SEQUENCE(tname) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_BROKEN, 0, 0, 0, 0}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_SEQUENCE_ref(tname, cb) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), offsetof(tname, lock), cb, 0}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_SEQUENCE_enc(tname, enc, cb) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc)}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_NDEF_SEQUENCE_END(tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(tname),\ + #tname \ + ASN1_ITEM_end(tname) +# define static_ASN1_NDEF_SEQUENCE_END(tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(tname),\ + #tname \ + ASN1_ITEM_end(tname) + +# define ASN1_BROKEN_SEQUENCE_END(stname) ASN1_SEQUENCE_END_ref(stname, stname) +# define static_ASN1_BROKEN_SEQUENCE_END(stname) \ + static_ASN1_SEQUENCE_END_ref(stname, stname) + +# define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) + +# define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) +# define static_ASN1_SEQUENCE_END_cb(stname, tname) static_ASN1_SEQUENCE_END_ref(stname, tname) + +# define ASN1_SEQUENCE_END_ref(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #tname \ + ASN1_ITEM_end(tname) +# define static_ASN1_SEQUENCE_END_ref(stname, tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +/*- + * This pair helps declare a CHOICE type. We can do: + * + * ASN1_CHOICE(chname) = { + * ... CHOICE options ... + * ASN1_CHOICE_END(chname) + * + * This will produce an ASN1_ITEM called chname_it + * for a structure called chname. The structure + * definition must look like this: + * typedef struct { + * int type; + * union { + * ASN1_SOMETHING *opt1; + * ASN1_SOMEOTHER *opt2; + * } value; + * } chname; + * + * the name of the selector must be 'type'. + * to use an alternative selector name use the + * ASN1_CHOICE_END_selector() version. + */ + +# define ASN1_CHOICE(tname) \ + static const ASN1_TEMPLATE tname##_ch_tt[] + +# define ASN1_CHOICE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \ + ASN1_CHOICE(tname) + +# define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname) + +# define static_ASN1_CHOICE_END(stname) static_ASN1_CHOICE_END_name(stname, stname) + +# define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type) + +# define static_ASN1_CHOICE_END_name(stname, tname) static_ASN1_CHOICE_END_selector(stname, tname, type) + +# define ASN1_CHOICE_END_selector(stname, tname, selname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE,\ + offsetof(stname,selname) ,\ + tname##_ch_tt,\ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define static_ASN1_CHOICE_END_selector(stname, tname, selname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE,\ + offsetof(stname,selname) ,\ + tname##_ch_tt,\ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_CHOICE_END_cb(stname, tname, selname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE,\ + offsetof(stname,selname) ,\ + tname##_ch_tt,\ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +/* This helps with the template wrapper form of ASN1_ITEM */ + +# define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type) { \ + (flags), (tag), 0,\ + #name, ASN1_ITEM_ref(type) } + +/* These help with SEQUENCE or CHOICE components */ + +/* used to declare other types */ + +# define ASN1_EX_TYPE(flags, tag, stname, field, type) { \ + (flags), (tag), offsetof(stname, field),\ + #field, ASN1_ITEM_ref(type) } + +/* implicit and explicit helper macros */ + +# define ASN1_IMP_EX(stname, field, type, tag, ex) \ + ASN1_EX_TYPE(ASN1_TFLG_IMPLICIT | (ex), tag, stname, field, type) + +# define ASN1_EXP_EX(stname, field, type, tag, ex) \ + ASN1_EX_TYPE(ASN1_TFLG_EXPLICIT | (ex), tag, stname, field, type) + +/* Any defined by macros: the field used is in the table itself */ + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION +# define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) } +# define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) } +# else +# define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, tblname##_adb } +# define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, tblname##_adb } +# endif +/* Plain simple type */ +# define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0,0, stname, field, type) +/* Embedded simple type */ +# define ASN1_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_EMBED,0, stname, field, type) + +/* OPTIONAL simple type */ +# define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type) +# define ASN1_OPT_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED, 0, stname, field, type) + +/* IMPLICIT tagged simple type */ +# define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0) +# define ASN1_IMP_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_EMBED) + +/* IMPLICIT tagged OPTIONAL simple type */ +# define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) +# define ASN1_IMP_OPT_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED) + +/* Same as above but EXPLICIT */ + +# define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0) +# define ASN1_EXP_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_EMBED) +# define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) +# define ASN1_EXP_OPT_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED) + +/* SEQUENCE OF type */ +# define ASN1_SEQUENCE_OF(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, stname, field, type) + +/* OPTIONAL SEQUENCE OF */ +# define ASN1_SEQUENCE_OF_OPT(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type) + +/* Same as above but for SET OF */ + +# define ASN1_SET_OF(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SET_OF, 0, stname, field, type) + +# define ASN1_SET_OF_OPT(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type) + +/* Finally compound types of SEQUENCE, SET, IMPLICIT, EXPLICIT and OPTIONAL */ + +# define ASN1_IMP_SET_OF(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF) + +# define ASN1_EXP_SET_OF(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF) + +# define ASN1_IMP_SET_OF_OPT(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL) + +# define ASN1_EXP_SET_OF_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL) + +# define ASN1_IMP_SEQUENCE_OF(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF) + +# define ASN1_IMP_SEQUENCE_OF_OPT(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL) + +# define ASN1_EXP_SEQUENCE_OF(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF) + +# define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL) + +/* EXPLICIT using indefinite length constructed form */ +# define ASN1_NDEF_EXP(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF) + +/* EXPLICIT OPTIONAL using indefinite length constructed form */ +# define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_NDEF) + +/* Macros for the ASN1_ADB structure */ + +# define ASN1_ADB(name) \ + static const ASN1_ADB_TABLE name##_adbtbl[] + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +# define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \ + ;\ + static const ASN1_ADB name##_adb = {\ + flags,\ + offsetof(name, field),\ + adb_cb,\ + name##_adbtbl,\ + sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\ + def,\ + none\ + } + +# else + +# define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \ + ;\ + static const ASN1_ITEM *name##_adb(void) \ + { \ + static const ASN1_ADB internal_adb = \ + {\ + flags,\ + offsetof(name, field),\ + adb_cb,\ + name##_adbtbl,\ + sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\ + def,\ + none\ + }; \ + return (const ASN1_ITEM *) &internal_adb; \ + } \ + void dummy_function(void) + +# endif + +# define ADB_ENTRY(val, template) {val, template} + +# define ASN1_ADB_TEMPLATE(name) \ + static const ASN1_TEMPLATE name##_tt + +/* + * This is the ASN1 template structure that defines a wrapper round the + * actual type. It determines the actual position of the field in the value + * structure, various flags such as OPTIONAL and the field name. + */ + +struct ASN1_TEMPLATE_st { + unsigned long flags; /* Various flags */ + long tag; /* tag, not used if no tagging */ + unsigned long offset; /* Offset of this field in structure */ + const char *field_name; /* Field name */ + ASN1_ITEM_EXP *item; /* Relevant ASN1_ITEM or ASN1_ADB */ +}; + +/* Macro to extract ASN1_ITEM and ASN1_ADB pointer from ASN1_TEMPLATE */ + +# define ASN1_TEMPLATE_item(t) (t->item_ptr) +# define ASN1_TEMPLATE_adb(t) (t->item_ptr) + +typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE; +typedef struct ASN1_ADB_st ASN1_ADB; + +struct ASN1_ADB_st { + unsigned long flags; /* Various flags */ + unsigned long offset; /* Offset of selector field */ + int (*adb_cb)(long *psel); /* Application callback */ + const ASN1_ADB_TABLE *tbl; /* Table of possible types */ + long tblcount; /* Number of entries in tbl */ + const ASN1_TEMPLATE *default_tt; /* Type to use if no match */ + const ASN1_TEMPLATE *null_tt; /* Type to use if selector is NULL */ +}; + +struct ASN1_ADB_TABLE_st { + long value; /* NID for an object or value for an int */ + const ASN1_TEMPLATE tt; /* item for this value */ +}; + +/* template flags */ + +/* Field is optional */ +# define ASN1_TFLG_OPTIONAL (0x1) + +/* Field is a SET OF */ +# define ASN1_TFLG_SET_OF (0x1 << 1) + +/* Field is a SEQUENCE OF */ +# define ASN1_TFLG_SEQUENCE_OF (0x2 << 1) + +/* + * Special case: this refers to a SET OF that will be sorted into DER order + * when encoded *and* the corresponding STACK will be modified to match the + * new order. + */ +# define ASN1_TFLG_SET_ORDER (0x3 << 1) + +/* Mask for SET OF or SEQUENCE OF */ +# define ASN1_TFLG_SK_MASK (0x3 << 1) + +/* + * These flags mean the tag should be taken from the tag field. If EXPLICIT + * then the underlying type is used for the inner tag. + */ + +/* IMPLICIT tagging */ +# define ASN1_TFLG_IMPTAG (0x1 << 3) + +/* EXPLICIT tagging, inner tag from underlying type */ +# define ASN1_TFLG_EXPTAG (0x2 << 3) + +# define ASN1_TFLG_TAG_MASK (0x3 << 3) + +/* context specific IMPLICIT */ +# define ASN1_TFLG_IMPLICIT (ASN1_TFLG_IMPTAG|ASN1_TFLG_CONTEXT) + +/* context specific EXPLICIT */ +# define ASN1_TFLG_EXPLICIT (ASN1_TFLG_EXPTAG|ASN1_TFLG_CONTEXT) + +/* + * If tagging is in force these determine the type of tag to use. Otherwise + * the tag is determined by the underlying type. These values reflect the + * actual octet format. + */ + +/* Universal tag */ +# define ASN1_TFLG_UNIVERSAL (0x0<<6) +/* Application tag */ +# define ASN1_TFLG_APPLICATION (0x1<<6) +/* Context specific tag */ +# define ASN1_TFLG_CONTEXT (0x2<<6) +/* Private tag */ +# define ASN1_TFLG_PRIVATE (0x3<<6) + +# define ASN1_TFLG_TAG_CLASS (0x3<<6) + +/* + * These are for ANY DEFINED BY type. In this case the 'item' field points to + * an ASN1_ADB structure which contains a table of values to decode the + * relevant type + */ + +# define ASN1_TFLG_ADB_MASK (0x3<<8) + +# define ASN1_TFLG_ADB_OID (0x1<<8) + +# define ASN1_TFLG_ADB_INT (0x1<<9) + +/* + * This flag when present in a SEQUENCE OF, SET OF or EXPLICIT causes + * indefinite length constructed encoding to be used if required. + */ + +# define ASN1_TFLG_NDEF (0x1<<11) + +/* Field is embedded and not a pointer */ +# define ASN1_TFLG_EMBED (0x1 << 12) + +/* This is the actual ASN1 item itself */ + +struct ASN1_ITEM_st { + char itype; /* The item type, primitive, SEQUENCE, CHOICE + * or extern */ + long utype; /* underlying type */ + const ASN1_TEMPLATE *templates; /* If SEQUENCE or CHOICE this contains + * the contents */ + long tcount; /* Number of templates if SEQUENCE or CHOICE */ + const void *funcs; /* functions that handle this type */ + long size; /* Structure size (usually) */ + const char *sname; /* Structure name */ +}; + +/*- + * These are values for the itype field and + * determine how the type is interpreted. + * + * For PRIMITIVE types the underlying type + * determines the behaviour if items is NULL. + * + * Otherwise templates must contain a single + * template and the type is treated in the + * same way as the type specified in the template. + * + * For SEQUENCE types the templates field points + * to the members, the size field is the + * structure size. + * + * For CHOICE types the templates field points + * to each possible member (typically a union) + * and the 'size' field is the offset of the + * selector. + * + * The 'funcs' field is used for application + * specific functions. + * + * The EXTERN type uses a new style d2i/i2d. + * The new style should be used where possible + * because it avoids things like the d2i IMPLICIT + * hack. + * + * MSTRING is a multiple string type, it is used + * for a CHOICE of character strings where the + * actual strings all occupy an ASN1_STRING + * structure. In this case the 'utype' field + * has a special meaning, it is used as a mask + * of acceptable types using the B_ASN1 constants. + * + * NDEF_SEQUENCE is the same as SEQUENCE except + * that it will use indefinite length constructed + * encoding if requested. + * + */ + +# define ASN1_ITYPE_PRIMITIVE 0x0 + +# define ASN1_ITYPE_SEQUENCE 0x1 + +# define ASN1_ITYPE_CHOICE 0x2 + +# define ASN1_ITYPE_EXTERN 0x4 + +# define ASN1_ITYPE_MSTRING 0x5 + +# define ASN1_ITYPE_NDEF_SEQUENCE 0x6 + +/* + * Cache for ASN1 tag and length, so we don't keep re-reading it for things + * like CHOICE + */ + +struct ASN1_TLC_st { + char valid; /* Values below are valid */ + int ret; /* return value */ + long plen; /* length */ + int ptag; /* class value */ + int pclass; /* class value */ + int hdrlen; /* header length */ +}; + +/* Typedefs for ASN1 function pointers */ +typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx); + +typedef int ASN1_ex_i2d(ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); +typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it); +typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it); + +typedef int ASN1_ex_print_func(BIO *out, ASN1_VALUE **pval, + int indent, const char *fname, + const ASN1_PCTX *pctx); + +typedef int ASN1_primitive_i2c(ASN1_VALUE **pval, unsigned char *cont, + int *putype, const ASN1_ITEM *it); +typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont, + int len, int utype, char *free_cont, + const ASN1_ITEM *it); +typedef int ASN1_primitive_print(BIO *out, ASN1_VALUE **pval, + const ASN1_ITEM *it, int indent, + const ASN1_PCTX *pctx); + +typedef struct ASN1_EXTERN_FUNCS_st { + void *app_data; + ASN1_ex_new_func *asn1_ex_new; + ASN1_ex_free_func *asn1_ex_free; + ASN1_ex_free_func *asn1_ex_clear; + ASN1_ex_d2i *asn1_ex_d2i; + ASN1_ex_i2d *asn1_ex_i2d; + ASN1_ex_print_func *asn1_ex_print; +} ASN1_EXTERN_FUNCS; + +typedef struct ASN1_PRIMITIVE_FUNCS_st { + void *app_data; + unsigned long flags; + ASN1_ex_new_func *prim_new; + ASN1_ex_free_func *prim_free; + ASN1_ex_free_func *prim_clear; + ASN1_primitive_c2i *prim_c2i; + ASN1_primitive_i2c *prim_i2c; + ASN1_primitive_print *prim_print; +} ASN1_PRIMITIVE_FUNCS; + +/* + * This is the ASN1_AUX structure: it handles various miscellaneous + * requirements. For example the use of reference counts and an informational + * callback. The "informational callback" is called at various points during + * the ASN1 encoding and decoding. It can be used to provide minor + * customisation of the structures used. This is most useful where the + * supplied routines *almost* do the right thing but need some extra help at + * a few points. If the callback returns zero then it is assumed a fatal + * error has occurred and the main operation should be abandoned. If major + * changes in the default behaviour are required then an external type is + * more appropriate. + */ + +typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it, + void *exarg); + +typedef struct ASN1_AUX_st { + void *app_data; + int flags; + int ref_offset; /* Offset of reference value */ + int ref_lock; /* Lock type to use */ + ASN1_aux_cb *asn1_cb; + int enc_offset; /* Offset of ASN1_ENCODING structure */ +} ASN1_AUX; + +/* For print related callbacks exarg points to this structure */ +typedef struct ASN1_PRINT_ARG_st { + BIO *out; + int indent; + const ASN1_PCTX *pctx; +} ASN1_PRINT_ARG; + +/* For streaming related callbacks exarg points to this structure */ +typedef struct ASN1_STREAM_ARG_st { + /* BIO to stream through */ + BIO *out; + /* BIO with filters appended */ + BIO *ndef_bio; + /* Streaming I/O boundary */ + unsigned char **boundary; +} ASN1_STREAM_ARG; + +/* Flags in ASN1_AUX */ + +/* Use a reference count */ +# define ASN1_AFLG_REFCOUNT 1 +/* Save the encoding of structure (useful for signatures) */ +# define ASN1_AFLG_ENCODING 2 +/* The Sequence length is invalid */ +# define ASN1_AFLG_BROKEN 4 + +/* operation values for asn1_cb */ + +# define ASN1_OP_NEW_PRE 0 +# define ASN1_OP_NEW_POST 1 +# define ASN1_OP_FREE_PRE 2 +# define ASN1_OP_FREE_POST 3 +# define ASN1_OP_D2I_PRE 4 +# define ASN1_OP_D2I_POST 5 +# define ASN1_OP_I2D_PRE 6 +# define ASN1_OP_I2D_POST 7 +# define ASN1_OP_PRINT_PRE 8 +# define ASN1_OP_PRINT_POST 9 +# define ASN1_OP_STREAM_PRE 10 +# define ASN1_OP_STREAM_POST 11 +# define ASN1_OP_DETACHED_PRE 12 +# define ASN1_OP_DETACHED_POST 13 + +/* Macro to implement a primitive type */ +# define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0) +# define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \ + ASN1_ITEM_start(itname) \ + ASN1_ITYPE_PRIMITIVE, V_##vname, NULL, 0, NULL, ex, #itname \ + ASN1_ITEM_end(itname) + +/* Macro to implement a multi string type */ +# define IMPLEMENT_ASN1_MSTRING(itname, mask) \ + ASN1_ITEM_start(itname) \ + ASN1_ITYPE_MSTRING, mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname \ + ASN1_ITEM_end(itname) + +# define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \ + ASN1_ITEM_start(sname) \ + ASN1_ITYPE_EXTERN, \ + tag, \ + NULL, \ + 0, \ + &fptrs, \ + 0, \ + #sname \ + ASN1_ITEM_end(sname) + +/* Macro to implement standard functions in terms of ASN1_ITEM structures */ + +# define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname) + +# define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, itname) + +# define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \ + IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname) + +# define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname) + +# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname) + +# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \ + pre stname *fname##_new(void) \ + { \ + return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \ + } \ + pre void fname##_free(stname *a) \ + { \ + ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \ + } + +# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \ + stname *fname##_new(void) \ + { \ + return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \ + } \ + void fname##_free(stname *a) \ + { \ + ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \ + } + +# define IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) + +# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \ + stname *d2i_##fname(stname **a, const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\ + } \ + int i2d_##fname(stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ + } + +# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \ + int i2d_##stname##_NDEF(stname *a, unsigned char **out) \ + { \ + return ASN1_item_ndef_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname));\ + } + +# define IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(stname) \ + static stname *d2i_##stname(stname **a, \ + const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, \ + ASN1_ITEM_rptr(stname)); \ + } \ + static int i2d_##stname(stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((ASN1_VALUE *)a, out, \ + ASN1_ITEM_rptr(stname)); \ + } + +/* + * This includes evil casts to remove const: they will go away when full ASN1 + * constification is done. + */ +# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ + stname *d2i_##fname(stname **a, const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\ + } \ + int i2d_##fname(const stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ + } + +# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \ + stname * stname##_dup(stname *x) \ + { \ + return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \ + } + +# define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \ + IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname) + +# define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \ + int fname##_print_ctx(BIO *out, stname *x, int indent, \ + const ASN1_PCTX *pctx) \ + { \ + return ASN1_item_print(out, (ASN1_VALUE *)x, indent, \ + ASN1_ITEM_rptr(itname), pctx); \ + } + +# define IMPLEMENT_ASN1_FUNCTIONS_const(name) \ + IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name) + +# define IMPLEMENT_ASN1_FUNCTIONS_const_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) + +/* external definitions for primitive types */ + +DECLARE_ASN1_ITEM(ASN1_BOOLEAN) +DECLARE_ASN1_ITEM(ASN1_TBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_FBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_SEQUENCE) +DECLARE_ASN1_ITEM(CBIGNUM) +DECLARE_ASN1_ITEM(BIGNUM) +DECLARE_ASN1_ITEM(INT32) +DECLARE_ASN1_ITEM(ZINT32) +DECLARE_ASN1_ITEM(UINT32) +DECLARE_ASN1_ITEM(ZUINT32) +DECLARE_ASN1_ITEM(INT64) +DECLARE_ASN1_ITEM(ZINT64) +DECLARE_ASN1_ITEM(UINT64) +DECLARE_ASN1_ITEM(ZUINT64) + +# if OPENSSL_API_COMPAT < 0x10200000L +/* + * LONG and ZLONG are strongly discouraged for use as stored data, as the + * underlying C type (long) differs in size depending on the architecture. + * They are designed with 32-bit longs in mind. + */ +DECLARE_ASN1_ITEM(LONG) +DECLARE_ASN1_ITEM(ZLONG) +# endif + +DEFINE_STACK_OF(ASN1_VALUE) + +/* Functions used internally by the ASN1 code */ + +int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it); +void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it); + +int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx); + +int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin64/include/openssl/async.h b/openSSL/lin64/include/openssl/async.h new file mode 100644 index 0000000..7052b89 --- /dev/null +++ b/openSSL/lin64/include/openssl/async.h @@ -0,0 +1,76 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifndef HEADER_ASYNC_H +# define HEADER_ASYNC_H + +#if defined(_WIN32) +# if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include to use this */ +#define OSSL_ASYNC_FD HANDLE +#define OSSL_BAD_ASYNC_FD INVALID_HANDLE_VALUE +# endif +#else +#define OSSL_ASYNC_FD int +#define OSSL_BAD_ASYNC_FD -1 +#endif +# include + + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct async_job_st ASYNC_JOB; +typedef struct async_wait_ctx_st ASYNC_WAIT_CTX; + +#define ASYNC_ERR 0 +#define ASYNC_NO_JOBS 1 +#define ASYNC_PAUSE 2 +#define ASYNC_FINISH 3 + +int ASYNC_init_thread(size_t max_size, size_t init_size); +void ASYNC_cleanup_thread(void); + +#ifdef OSSL_ASYNC_FD +ASYNC_WAIT_CTX *ASYNC_WAIT_CTX_new(void); +void ASYNC_WAIT_CTX_free(ASYNC_WAIT_CTX *ctx); +int ASYNC_WAIT_CTX_set_wait_fd(ASYNC_WAIT_CTX *ctx, const void *key, + OSSL_ASYNC_FD fd, + void *custom_data, + void (*cleanup)(ASYNC_WAIT_CTX *, const void *, + OSSL_ASYNC_FD, void *)); +int ASYNC_WAIT_CTX_get_fd(ASYNC_WAIT_CTX *ctx, const void *key, + OSSL_ASYNC_FD *fd, void **custom_data); +int ASYNC_WAIT_CTX_get_all_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *fd, + size_t *numfds); +int ASYNC_WAIT_CTX_get_changed_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key); +#endif + +int ASYNC_is_capable(void); + +int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret, + int (*func)(void *), void *args, size_t size); +int ASYNC_pause_job(void); + +ASYNC_JOB *ASYNC_get_current_job(void); +ASYNC_WAIT_CTX *ASYNC_get_wait_ctx(ASYNC_JOB *job); +void ASYNC_block_pause(void); +void ASYNC_unblock_pause(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/asyncerr.h b/openSSL/lin64/include/openssl/asyncerr.h new file mode 100644 index 0000000..91afbbb --- /dev/null +++ b/openSSL/lin64/include/openssl/asyncerr.h @@ -0,0 +1,42 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASYNCERR_H +# define HEADER_ASYNCERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ASYNC_strings(void); + +/* + * ASYNC function codes. + */ +# define ASYNC_F_ASYNC_CTX_NEW 100 +# define ASYNC_F_ASYNC_INIT_THREAD 101 +# define ASYNC_F_ASYNC_JOB_NEW 102 +# define ASYNC_F_ASYNC_PAUSE_JOB 103 +# define ASYNC_F_ASYNC_START_FUNC 104 +# define ASYNC_F_ASYNC_START_JOB 105 +# define ASYNC_F_ASYNC_WAIT_CTX_SET_WAIT_FD 106 + +/* + * ASYNC reason codes. + */ +# define ASYNC_R_FAILED_TO_SET_POOL 101 +# define ASYNC_R_FAILED_TO_SWAP_CONTEXT 102 +# define ASYNC_R_INIT_FAILED 105 +# define ASYNC_R_INVALID_POOL_SIZE 103 + +#endif diff --git a/openSSL/lin64/include/openssl/bio.h b/openSSL/lin64/include/openssl/bio.h new file mode 100644 index 0000000..ae559a5 --- /dev/null +++ b/openSSL/lin64/include/openssl/bio.h @@ -0,0 +1,801 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BIO_H +# define HEADER_BIO_H + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* There are the classes of BIOs */ +# define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */ +# define BIO_TYPE_FILTER 0x0200 +# define BIO_TYPE_SOURCE_SINK 0x0400 + +/* These are the 'types' of BIOs */ +# define BIO_TYPE_NONE 0 +# define BIO_TYPE_MEM ( 1|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_FILE ( 2|BIO_TYPE_SOURCE_SINK) + +# define BIO_TYPE_FD ( 4|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_SOCKET ( 5|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_NULL ( 6|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_SSL ( 7|BIO_TYPE_FILTER) +# define BIO_TYPE_MD ( 8|BIO_TYPE_FILTER) +# define BIO_TYPE_BUFFER ( 9|BIO_TYPE_FILTER) +# define BIO_TYPE_CIPHER (10|BIO_TYPE_FILTER) +# define BIO_TYPE_BASE64 (11|BIO_TYPE_FILTER) +# define BIO_TYPE_CONNECT (12|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_ACCEPT (13|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) + +# define BIO_TYPE_NBIO_TEST (16|BIO_TYPE_FILTER)/* server proxy BIO */ +# define BIO_TYPE_NULL_FILTER (17|BIO_TYPE_FILTER) +# define BIO_TYPE_BIO (19|BIO_TYPE_SOURCE_SINK)/* half a BIO pair */ +# define BIO_TYPE_LINEBUFFER (20|BIO_TYPE_FILTER) +# define BIO_TYPE_DGRAM (21|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_ASN1 (22|BIO_TYPE_FILTER) +# define BIO_TYPE_COMP (23|BIO_TYPE_FILTER) +# ifndef OPENSSL_NO_SCTP +# define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# endif + +#define BIO_TYPE_START 128 + +/* + * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. + * BIO_set_fp(in,stdin,BIO_NOCLOSE); + */ +# define BIO_NOCLOSE 0x00 +# define BIO_CLOSE 0x01 + +/* + * These are used in the following macros and are passed to BIO_ctrl() + */ +# define BIO_CTRL_RESET 1/* opt - rewind/zero etc */ +# define BIO_CTRL_EOF 2/* opt - are we at the eof */ +# define BIO_CTRL_INFO 3/* opt - extra tit-bits */ +# define BIO_CTRL_SET 4/* man - set the 'IO' type */ +# define BIO_CTRL_GET 5/* man - get the 'IO' type */ +# define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */ +# define BIO_CTRL_POP 7/* opt - internal, used to signify change */ +# define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */ +# define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */ +# define BIO_CTRL_PENDING 10/* opt - is their more data buffered */ +# define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */ +# define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */ +# define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */ +# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */ +# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */ + +# define BIO_CTRL_PEEK 29/* BIO_f_buffer special */ +# define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */ + +/* dgram BIO stuff */ +# define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */ +# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected + * socket to be passed in */ +# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */ +# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */ + +# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation tiemd out */ + +/* #ifdef IP_MTU_DISCOVER */ +# define BIO_CTRL_DGRAM_MTU_DISCOVER 39/* set DF bit on egress packets */ +/* #endif */ + +# define BIO_CTRL_DGRAM_QUERY_MTU 40/* as kernel for current MTU */ +# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47 +# define BIO_CTRL_DGRAM_GET_MTU 41/* get cached value for MTU */ +# define BIO_CTRL_DGRAM_SET_MTU 42/* set cached value for MTU. + * want to use this if asking + * the kernel fails */ + +# define BIO_CTRL_DGRAM_MTU_EXCEEDED 43/* check whether the MTU was + * exceed in the previous write + * operation */ + +# define BIO_CTRL_DGRAM_GET_PEER 46 +# define BIO_CTRL_DGRAM_SET_PEER 44/* Destination for the data */ + +# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45/* Next DTLS handshake timeout + * to adjust socket timeouts */ +# define BIO_CTRL_DGRAM_SET_DONT_FRAG 48 + +# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49 + +/* Deliberately outside of OPENSSL_NO_SCTP - used in bss_dgram.c */ +# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 +# ifndef OPENSSL_NO_SCTP +/* SCTP stuff */ +# define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51 +# define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52 +# define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53 +# define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60 +# define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61 +# define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62 +# define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63 +# define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64 +# define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65 +# define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70 +# endif + +# define BIO_CTRL_DGRAM_SET_PEEK_MODE 71 + +/* modifiers */ +# define BIO_FP_READ 0x02 +# define BIO_FP_WRITE 0x04 +# define BIO_FP_APPEND 0x08 +# define BIO_FP_TEXT 0x10 + +# define BIO_FLAGS_READ 0x01 +# define BIO_FLAGS_WRITE 0x02 +# define BIO_FLAGS_IO_SPECIAL 0x04 +# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL) +# define BIO_FLAGS_SHOULD_RETRY 0x08 +# ifndef BIO_FLAGS_UPLINK +/* + * "UPLINK" flag denotes file descriptors provided by application. It + * defaults to 0, as most platforms don't require UPLINK interface. + */ +# define BIO_FLAGS_UPLINK 0 +# endif + +# define BIO_FLAGS_BASE64_NO_NL 0x100 + +/* + * This is used with memory BIOs: + * BIO_FLAGS_MEM_RDONLY means we shouldn't free up or change the data in any way; + * BIO_FLAGS_NONCLEAR_RST means we shouldn't clear data on reset. + */ +# define BIO_FLAGS_MEM_RDONLY 0x200 +# define BIO_FLAGS_NONCLEAR_RST 0x400 +# define BIO_FLAGS_IN_EOF 0x800 + +typedef union bio_addr_st BIO_ADDR; +typedef struct bio_addrinfo_st BIO_ADDRINFO; + +int BIO_get_new_index(void); +void BIO_set_flags(BIO *b, int flags); +int BIO_test_flags(const BIO *b, int flags); +void BIO_clear_flags(BIO *b, int flags); + +# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0)) +# define BIO_set_retry_special(b) \ + BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_read(b) \ + BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_write(b) \ + BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY)) + +/* These are normally used internally in BIOs */ +# define BIO_clear_retry_flags(b) \ + BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_get_retry_flags(b) \ + BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) + +/* These should be used by the application to tell why we should retry */ +# define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ) +# define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE) +# define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL) +# define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS) +# define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY) + +/* + * The next three are used in conjunction with the BIO_should_io_special() + * condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int + * *reason); will walk the BIO stack and return the 'reason' for the special + * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return + * the code. + */ +/* + * Returned from the SSL bio when the certificate retrieval code had an error + */ +# define BIO_RR_SSL_X509_LOOKUP 0x01 +/* Returned from the connect BIO when a connect would have blocked */ +# define BIO_RR_CONNECT 0x02 +/* Returned from the accept BIO when an accept would have blocked */ +# define BIO_RR_ACCEPT 0x03 + +/* These are passed by the BIO callback */ +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 + +/* + * The callback is called before and after the underling operation, The + * BIO_CB_RETURN flag indicates if it is after the call + */ +# define BIO_CB_RETURN 0x80 +# define BIO_CB_return(a) ((a)|BIO_CB_RETURN) +# define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN)) +# define BIO_cb_post(a) ((a)&BIO_CB_RETURN) + +typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, + long argl, long ret); +typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp, + size_t len, int argi, + long argl, int ret, size_t *processed); +BIO_callback_fn BIO_get_callback(const BIO *b); +void BIO_set_callback(BIO *b, BIO_callback_fn callback); + +BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b); +void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); + +char *BIO_get_callback_arg(const BIO *b); +void BIO_set_callback_arg(BIO *b, char *arg); + +typedef struct bio_method_st BIO_METHOD; + +const char *BIO_method_name(const BIO *b); +int BIO_method_type(const BIO *b); + +typedef int BIO_info_cb(BIO *, int, int); +typedef BIO_info_cb bio_info_cb; /* backward compatibility */ + +DEFINE_STACK_OF(BIO) + +/* Prefix and suffix callback in ASN1 BIO */ +typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, + void *parg); + +# ifndef OPENSSL_NO_SCTP +/* SCTP parameter structs */ +struct bio_dgram_sctp_sndinfo { + uint16_t snd_sid; + uint16_t snd_flags; + uint32_t snd_ppid; + uint32_t snd_context; +}; + +struct bio_dgram_sctp_rcvinfo { + uint16_t rcv_sid; + uint16_t rcv_ssn; + uint16_t rcv_flags; + uint32_t rcv_ppid; + uint32_t rcv_tsn; + uint32_t rcv_cumtsn; + uint32_t rcv_context; +}; + +struct bio_dgram_sctp_prinfo { + uint16_t pr_policy; + uint32_t pr_value; +}; +# endif + +/* + * #define BIO_CONN_get_param_hostname BIO_ctrl + */ + +# define BIO_C_SET_CONNECT 100 +# define BIO_C_DO_STATE_MACHINE 101 +# define BIO_C_SET_NBIO 102 +/* # define BIO_C_SET_PROXY_PARAM 103 */ +# define BIO_C_SET_FD 104 +# define BIO_C_GET_FD 105 +# define BIO_C_SET_FILE_PTR 106 +# define BIO_C_GET_FILE_PTR 107 +# define BIO_C_SET_FILENAME 108 +# define BIO_C_SET_SSL 109 +# define BIO_C_GET_SSL 110 +# define BIO_C_SET_MD 111 +# define BIO_C_GET_MD 112 +# define BIO_C_GET_CIPHER_STATUS 113 +# define BIO_C_SET_BUF_MEM 114 +# define BIO_C_GET_BUF_MEM_PTR 115 +# define BIO_C_GET_BUFF_NUM_LINES 116 +# define BIO_C_SET_BUFF_SIZE 117 +# define BIO_C_SET_ACCEPT 118 +# define BIO_C_SSL_MODE 119 +# define BIO_C_GET_MD_CTX 120 +/* # define BIO_C_GET_PROXY_PARAM 121 */ +# define BIO_C_SET_BUFF_READ_DATA 122/* data to read first */ +# define BIO_C_GET_CONNECT 123 +# define BIO_C_GET_ACCEPT 124 +# define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125 +# define BIO_C_GET_SSL_NUM_RENEGOTIATES 126 +# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127 +# define BIO_C_FILE_SEEK 128 +# define BIO_C_GET_CIPHER_CTX 129 +# define BIO_C_SET_BUF_MEM_EOF_RETURN 130/* return end of input + * value */ +# define BIO_C_SET_BIND_MODE 131 +# define BIO_C_GET_BIND_MODE 132 +# define BIO_C_FILE_TELL 133 +# define BIO_C_GET_SOCKS 134 +# define BIO_C_SET_SOCKS 135 + +# define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */ +# define BIO_C_GET_WRITE_BUF_SIZE 137 +# define BIO_C_MAKE_BIO_PAIR 138 +# define BIO_C_DESTROY_BIO_PAIR 139 +# define BIO_C_GET_WRITE_GUARANTEE 140 +# define BIO_C_GET_READ_REQUEST 141 +# define BIO_C_SHUTDOWN_WR 142 +# define BIO_C_NREAD0 143 +# define BIO_C_NREAD 144 +# define BIO_C_NWRITE0 145 +# define BIO_C_NWRITE 146 +# define BIO_C_RESET_READ_REQUEST 147 +# define BIO_C_SET_MD_CTX 148 + +# define BIO_C_SET_PREFIX 149 +# define BIO_C_GET_PREFIX 150 +# define BIO_C_SET_SUFFIX 151 +# define BIO_C_GET_SUFFIX 152 + +# define BIO_C_SET_EX_ARG 153 +# define BIO_C_GET_EX_ARG 154 + +# define BIO_C_SET_CONNECT_MODE 155 + +# define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) +# define BIO_get_app_data(s) BIO_get_ex_data(s,0) + +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) + +# ifndef OPENSSL_NO_SOCK +/* IP families we support, for BIO_s_connect() and BIO_s_accept() */ +/* Note: the underlying operating system may not support some of them */ +# define BIO_FAMILY_IPV4 4 +# define BIO_FAMILY_IPV6 6 +# define BIO_FAMILY_IPANY 256 + +/* BIO_s_connect() */ +# define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0, \ + (char *)(name)) +# define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1, \ + (char *)(port)) +# define BIO_set_conn_address(b,addr) BIO_ctrl(b,BIO_C_SET_CONNECT,2, \ + (char *)(addr)) +# define BIO_set_conn_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_CONNECT,3,f) +# define BIO_get_conn_hostname(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0)) +# define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) +# define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) +# define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) + +/* BIO_s_accept() */ +# define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ + (char *)(name)) +# define BIO_set_accept_port(b,port) BIO_ctrl(b,BIO_C_SET_ACCEPT,1, \ + (char *)(port)) +# define BIO_get_accept_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0)) +# define BIO_get_accept_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,1)) +# define BIO_get_peer_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,2)) +# define BIO_get_peer_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,3)) +/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */ +# define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(n)?(void *)"a":NULL) +# define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,3, \ + (char *)(bio)) +# define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) +# define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) + +/* Aliases kept for backward compatibility */ +# define BIO_BIND_NORMAL 0 +# define BIO_BIND_REUSEADDR BIO_SOCK_REUSEADDR +# define BIO_BIND_REUSEADDR_IF_UNUSED BIO_SOCK_REUSEADDR +# define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL) +# define BIO_get_bind_mode(b) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL) + +/* BIO_s_accept() and BIO_s_connect() */ +# define BIO_do_connect(b) BIO_do_handshake(b) +# define BIO_do_accept(b) BIO_do_handshake(b) +# endif /* OPENSSL_NO_SOCK */ + +# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) + +/* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */ +# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) +# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)(c)) + +/* BIO_s_file() */ +# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)(fp)) +# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)(fpp)) + +/* BIO_s_fd() and BIO_s_file() */ +# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL) +# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL) + +/* + * name is cast to lose const, but might be better to route through a + * function so we can do it safely + */ +# ifdef CONST_STRICT +/* + * If you are wondering why this isn't defined, its because CONST_STRICT is + * purely a compile-time kludge to allow const to be checked. + */ +int BIO_read_filename(BIO *b, const char *name); +# else +# define BIO_read_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ,(char *)(name)) +# endif +# define BIO_write_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_WRITE,name) +# define BIO_append_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_APPEND,name) +# define BIO_rw_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name) + +/* + * WARNING WARNING, this ups the reference count on the read bio of the SSL + * structure. This is because the ssl read BIO is now pointed to by the + * next_bio field in the bio. So when you free the BIO, make sure you are + * doing a BIO_free_all() to catch the underlying BIO. + */ +# define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)(ssl)) +# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)(sslp)) +# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL) +# define BIO_set_ssl_renegotiate_bytes(b,num) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL) +# define BIO_get_num_renegotiates(b) \ + BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL) +# define BIO_set_ssl_renegotiate_timeout(b,seconds) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL) + +/* defined in evp.h */ +/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)(md)) */ + +# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)(pp)) +# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)(bm)) +# define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0, \ + (char *)(pp)) +# define BIO_set_mem_eof_return(b,v) \ + BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL) + +/* For the BIO_f_buffer() type */ +# define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL) +# define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL) +# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0) +# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1) +# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf) + +/* Don't use the next one unless you know what you are doing :-) */ +# define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret)) + +# define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL) +# define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL) +# define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL) +# define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL) +# define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) +# define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL) +/* ...pending macros have inappropriate return type */ +size_t BIO_ctrl_pending(BIO *b); +size_t BIO_ctrl_wpending(BIO *b); +# define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL) +# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \ + cbp) +# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb) + +/* For the BIO_f_buffer() type */ +# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL) +# define BIO_buffer_peek(b,s,l) BIO_ctrl(b,BIO_CTRL_PEEK,(l),(s)) + +/* For BIO_s_bio() */ +# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL) +# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL) +# define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2) +# define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL) +# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL) +/* macros with inappropriate type -- but ...pending macros use int too: */ +# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL) +# define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL) +size_t BIO_ctrl_get_write_guarantee(BIO *b); +size_t BIO_ctrl_get_read_request(BIO *b); +int BIO_ctrl_reset_read_request(BIO *b); + +/* ctrl macros for dgram */ +# define BIO_ctrl_dgram_connect(b,peer) \ + (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)(peer)) +# define BIO_ctrl_set_connected(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, 0, (char *)(peer)) +# define BIO_dgram_recv_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) +# define BIO_dgram_send_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) +# define BIO_dgram_get_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) +# define BIO_dgram_set_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) + +#define BIO_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_BIO, l, p, newf, dupf, freef) +int BIO_set_ex_data(BIO *bio, int idx, void *data); +void *BIO_get_ex_data(BIO *bio, int idx); +uint64_t BIO_number_read(BIO *bio); +uint64_t BIO_number_written(BIO *bio); + +/* For BIO_f_asn1() */ +int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix, + asn1_ps_func *prefix_free); +int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix, + asn1_ps_func **pprefix_free); +int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix, + asn1_ps_func *suffix_free); +int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, + asn1_ps_func **psuffix_free); + +const BIO_METHOD *BIO_s_file(void); +BIO *BIO_new_file(const char *filename, const char *mode); +# ifndef OPENSSL_NO_STDIO +BIO *BIO_new_fp(FILE *stream, int close_flag); +# endif +BIO *BIO_new(const BIO_METHOD *type); +int BIO_free(BIO *a); +void BIO_set_data(BIO *a, void *ptr); +void *BIO_get_data(BIO *a); +void BIO_set_init(BIO *a, int init); +int BIO_get_init(BIO *a); +void BIO_set_shutdown(BIO *a, int shut); +int BIO_get_shutdown(BIO *a); +void BIO_vfree(BIO *a); +int BIO_up_ref(BIO *a); +int BIO_read(BIO *b, void *data, int dlen); +int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +int BIO_gets(BIO *bp, char *buf, int size); +int BIO_write(BIO *b, const void *data, int dlen); +int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +int BIO_puts(BIO *bp, const char *buf); +int BIO_indent(BIO *b, int indent, int max); +long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); +long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp); +void *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); +long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); +BIO *BIO_push(BIO *b, BIO *append); +BIO *BIO_pop(BIO *b); +void BIO_free_all(BIO *a); +BIO *BIO_find_type(BIO *b, int bio_type); +BIO *BIO_next(BIO *b); +void BIO_set_next(BIO *b, BIO *next); +BIO *BIO_get_retry_BIO(BIO *bio, int *reason); +int BIO_get_retry_reason(BIO *bio); +void BIO_set_retry_reason(BIO *bio, int reason); +BIO *BIO_dup_chain(BIO *in); + +int BIO_nread0(BIO *bio, char **buf); +int BIO_nread(BIO *bio, char **buf, int num); +int BIO_nwrite0(BIO *bio, char **buf); +int BIO_nwrite(BIO *bio, char **buf, int num); + +long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, + long argl, long ret); + +const BIO_METHOD *BIO_s_mem(void); +const BIO_METHOD *BIO_s_secmem(void); +BIO *BIO_new_mem_buf(const void *buf, int len); +# ifndef OPENSSL_NO_SOCK +const BIO_METHOD *BIO_s_socket(void); +const BIO_METHOD *BIO_s_connect(void); +const BIO_METHOD *BIO_s_accept(void); +# endif +const BIO_METHOD *BIO_s_fd(void); +const BIO_METHOD *BIO_s_log(void); +const BIO_METHOD *BIO_s_bio(void); +const BIO_METHOD *BIO_s_null(void); +const BIO_METHOD *BIO_f_null(void); +const BIO_METHOD *BIO_f_buffer(void); +const BIO_METHOD *BIO_f_linebuffer(void); +const BIO_METHOD *BIO_f_nbio_test(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_datagram(void); +int BIO_dgram_non_fatal_error(int error); +BIO *BIO_new_dgram(int fd, int close_flag); +# ifndef OPENSSL_NO_SCTP +const BIO_METHOD *BIO_s_datagram_sctp(void); +BIO *BIO_new_dgram_sctp(int fd, int close_flag); +int BIO_dgram_is_sctp(BIO *bio); +int BIO_dgram_sctp_notification_cb(BIO *b, + void (*handle_notifications) (BIO *bio, + void *context, + void *buf), + void *context); +int BIO_dgram_sctp_wait_for_dry(BIO *b); +int BIO_dgram_sctp_msg_waiting(BIO *b); +# endif +# endif + +# ifndef OPENSSL_NO_SOCK +int BIO_sock_should_retry(int i); +int BIO_sock_non_fatal_error(int error); +# endif + +int BIO_fd_should_retry(int i); +int BIO_fd_non_fatal_error(int error); +int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len); +int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len, int indent); +int BIO_dump(BIO *b, const char *bytes, int len); +int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent); +# ifndef OPENSSL_NO_STDIO +int BIO_dump_fp(FILE *fp, const char *s, int len); +int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent); +# endif +int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data, + int datalen); + +# ifndef OPENSSL_NO_SOCK +BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, + const void *where, size_t wherelen, unsigned short port); +void BIO_ADDR_free(BIO_ADDR *); +void BIO_ADDR_clear(BIO_ADDR *ap); +int BIO_ADDR_family(const BIO_ADDR *ap); +int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l); +unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap); +char *BIO_ADDR_hostname_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_service_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_path_string(const BIO_ADDR *ap); + +const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai); +const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai); +void BIO_ADDRINFO_free(BIO_ADDRINFO *bai); + +enum BIO_hostserv_priorities { + BIO_PARSE_PRIO_HOST, BIO_PARSE_PRIO_SERV +}; +int BIO_parse_hostserv(const char *hostserv, char **host, char **service, + enum BIO_hostserv_priorities hostserv_prio); +enum BIO_lookup_type { + BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER +}; +int BIO_lookup(const char *host, const char *service, + enum BIO_lookup_type lookup_type, + int family, int socktype, BIO_ADDRINFO **res); +int BIO_lookup_ex(const char *host, const char *service, + int lookup_type, int family, int socktype, int protocol, + BIO_ADDRINFO **res); +int BIO_sock_error(int sock); +int BIO_socket_ioctl(int fd, long type, void *arg); +int BIO_socket_nbio(int fd, int mode); +int BIO_sock_init(void); +# if OPENSSL_API_COMPAT < 0x10100000L +# define BIO_sock_cleanup() while(0) continue +# endif +int BIO_set_tcp_ndelay(int sock, int turn_on); + +DEPRECATEDIN_1_1_0(struct hostent *BIO_gethostbyname(const char *name)) +DEPRECATEDIN_1_1_0(int BIO_get_port(const char *str, unsigned short *port_ptr)) +DEPRECATEDIN_1_1_0(int BIO_get_host_ip(const char *str, unsigned char *ip)) +DEPRECATEDIN_1_1_0(int BIO_get_accept_socket(char *host_port, int mode)) +DEPRECATEDIN_1_1_0(int BIO_accept(int sock, char **ip_port)) + +union BIO_sock_info_u { + BIO_ADDR *addr; +}; +enum BIO_sock_info_type { + BIO_SOCK_INFO_ADDRESS +}; +int BIO_sock_info(int sock, + enum BIO_sock_info_type type, union BIO_sock_info_u *info); + +# define BIO_SOCK_REUSEADDR 0x01 +# define BIO_SOCK_V6_ONLY 0x02 +# define BIO_SOCK_KEEPALIVE 0x04 +# define BIO_SOCK_NONBLOCK 0x08 +# define BIO_SOCK_NODELAY 0x10 + +int BIO_socket(int domain, int socktype, int protocol, int options); +int BIO_connect(int sock, const BIO_ADDR *addr, int options); +int BIO_bind(int sock, const BIO_ADDR *addr, int options); +int BIO_listen(int sock, const BIO_ADDR *addr, int options); +int BIO_accept_ex(int accept_sock, BIO_ADDR *addr, int options); +int BIO_closesocket(int sock); + +BIO *BIO_new_socket(int sock, int close_flag); +BIO *BIO_new_connect(const char *host_port); +BIO *BIO_new_accept(const char *host_port); +# endif /* OPENSSL_NO_SOCK*/ + +BIO *BIO_new_fd(int fd, int close_flag); + +int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +/* + * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. + * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default + * value. + */ + +void BIO_copy_next_retry(BIO *b); + +/* + * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); + */ + +# define ossl_bio__attr__(x) +# if defined(__GNUC__) && defined(__STDC_VERSION__) \ + && !defined(__APPLE__) + /* + * Because we support the 'z' modifier, which made its appearance in C99, + * we can't use __attribute__ with pre C99 dialects. + */ +# if __STDC_VERSION__ >= 199901L +# undef ossl_bio__attr__ +# define ossl_bio__attr__ __attribute__ +# if __GNUC__*10 + __GNUC_MINOR__ >= 44 +# define ossl_bio__printf__ __gnu_printf__ +# else +# define ossl_bio__printf__ __printf__ +# endif +# endif +# endif +int BIO_printf(BIO *bio, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 3))); +int BIO_vprintf(BIO *bio, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 0))); +int BIO_snprintf(char *buf, size_t n, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 4))); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); +# undef ossl_bio__attr__ +# undef ossl_bio__printf__ + + +BIO_METHOD *BIO_meth_new(int type, const char *name); +void BIO_meth_free(BIO_METHOD *biom); +int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); +int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, + size_t *); +int BIO_meth_set_write(BIO_METHOD *biom, + int (*write) (BIO *, const char *, int)); +int BIO_meth_set_write_ex(BIO_METHOD *biom, + int (*bwrite) (BIO *, const char *, size_t, size_t *)); +int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_read(BIO_METHOD *biom, + int (*read) (BIO *, char *, int)); +int BIO_meth_set_read_ex(BIO_METHOD *biom, + int (*bread) (BIO *, char *, size_t, size_t *)); +int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts) (BIO *, const char *)); +int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*gets) (BIO *, char *, int)); +long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); +int BIO_meth_set_ctrl(BIO_METHOD *biom, + long (*ctrl) (BIO *, int, long, void *)); +int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); +int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); +long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) + (BIO *, int, BIO_info_cb *); +int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, + long (*callback_ctrl) (BIO *, int, + BIO_info_cb *)); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/bioerr.h b/openSSL/lin64/include/openssl/bioerr.h new file mode 100644 index 0000000..46e2c96 --- /dev/null +++ b/openSSL/lin64/include/openssl/bioerr.h @@ -0,0 +1,124 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BIOERR_H +# define HEADER_BIOERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BIO_strings(void); + +/* + * BIO function codes. + */ +# define BIO_F_ACPT_STATE 100 +# define BIO_F_ADDRINFO_WRAP 148 +# define BIO_F_ADDR_STRINGS 134 +# define BIO_F_BIO_ACCEPT 101 +# define BIO_F_BIO_ACCEPT_EX 137 +# define BIO_F_BIO_ACCEPT_NEW 152 +# define BIO_F_BIO_ADDR_NEW 144 +# define BIO_F_BIO_BIND 147 +# define BIO_F_BIO_CALLBACK_CTRL 131 +# define BIO_F_BIO_CONNECT 138 +# define BIO_F_BIO_CONNECT_NEW 153 +# define BIO_F_BIO_CTRL 103 +# define BIO_F_BIO_GETS 104 +# define BIO_F_BIO_GET_HOST_IP 106 +# define BIO_F_BIO_GET_NEW_INDEX 102 +# define BIO_F_BIO_GET_PORT 107 +# define BIO_F_BIO_LISTEN 139 +# define BIO_F_BIO_LOOKUP 135 +# define BIO_F_BIO_LOOKUP_EX 143 +# define BIO_F_BIO_MAKE_PAIR 121 +# define BIO_F_BIO_METH_NEW 146 +# define BIO_F_BIO_NEW 108 +# define BIO_F_BIO_NEW_DGRAM_SCTP 145 +# define BIO_F_BIO_NEW_FILE 109 +# define BIO_F_BIO_NEW_MEM_BUF 126 +# define BIO_F_BIO_NREAD 123 +# define BIO_F_BIO_NREAD0 124 +# define BIO_F_BIO_NWRITE 125 +# define BIO_F_BIO_NWRITE0 122 +# define BIO_F_BIO_PARSE_HOSTSERV 136 +# define BIO_F_BIO_PUTS 110 +# define BIO_F_BIO_READ 111 +# define BIO_F_BIO_READ_EX 105 +# define BIO_F_BIO_READ_INTERN 120 +# define BIO_F_BIO_SOCKET 140 +# define BIO_F_BIO_SOCKET_NBIO 142 +# define BIO_F_BIO_SOCK_INFO 141 +# define BIO_F_BIO_SOCK_INIT 112 +# define BIO_F_BIO_WRITE 113 +# define BIO_F_BIO_WRITE_EX 119 +# define BIO_F_BIO_WRITE_INTERN 128 +# define BIO_F_BUFFER_CTRL 114 +# define BIO_F_CONN_CTRL 127 +# define BIO_F_CONN_STATE 115 +# define BIO_F_DGRAM_SCTP_NEW 149 +# define BIO_F_DGRAM_SCTP_READ 132 +# define BIO_F_DGRAM_SCTP_WRITE 133 +# define BIO_F_DOAPR_OUTCH 150 +# define BIO_F_FILE_CTRL 116 +# define BIO_F_FILE_READ 130 +# define BIO_F_LINEBUFFER_CTRL 129 +# define BIO_F_LINEBUFFER_NEW 151 +# define BIO_F_MEM_WRITE 117 +# define BIO_F_NBIOF_NEW 154 +# define BIO_F_SLG_WRITE 155 +# define BIO_F_SSL_NEW 118 + +/* + * BIO reason codes. + */ +# define BIO_R_ACCEPT_ERROR 100 +# define BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET 141 +# define BIO_R_AMBIGUOUS_HOST_OR_SERVICE 129 +# define BIO_R_BAD_FOPEN_MODE 101 +# define BIO_R_BROKEN_PIPE 124 +# define BIO_R_CONNECT_ERROR 103 +# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107 +# define BIO_R_GETSOCKNAME_ERROR 132 +# define BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS 133 +# define BIO_R_GETTING_SOCKTYPE 134 +# define BIO_R_INVALID_ARGUMENT 125 +# define BIO_R_INVALID_SOCKET 135 +# define BIO_R_IN_USE 123 +# define BIO_R_LENGTH_TOO_LONG 102 +# define BIO_R_LISTEN_V6_ONLY 136 +# define BIO_R_LOOKUP_RETURNED_NOTHING 142 +# define BIO_R_MALFORMED_HOST_OR_SERVICE 130 +# define BIO_R_NBIO_CONNECT_ERROR 110 +# define BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED 143 +# define BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED 144 +# define BIO_R_NO_PORT_DEFINED 113 +# define BIO_R_NO_SUCH_FILE 128 +# define BIO_R_NULL_PARAMETER 115 +# define BIO_R_UNABLE_TO_BIND_SOCKET 117 +# define BIO_R_UNABLE_TO_CREATE_SOCKET 118 +# define BIO_R_UNABLE_TO_KEEPALIVE 137 +# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 +# define BIO_R_UNABLE_TO_NODELAY 138 +# define BIO_R_UNABLE_TO_REUSEADDR 139 +# define BIO_R_UNAVAILABLE_IP_FAMILY 145 +# define BIO_R_UNINITIALIZED 120 +# define BIO_R_UNKNOWN_INFO_TYPE 140 +# define BIO_R_UNSUPPORTED_IP_FAMILY 146 +# define BIO_R_UNSUPPORTED_METHOD 121 +# define BIO_R_UNSUPPORTED_PROTOCOL_FAMILY 131 +# define BIO_R_WRITE_TO_READ_ONLY_BIO 126 +# define BIO_R_WSASTARTUP 122 + +#endif diff --git a/openSSL/lin64/include/openssl/blowfish.h b/openSSL/lin64/include/openssl/blowfish.h new file mode 100644 index 0000000..cd3e460 --- /dev/null +++ b/openSSL/lin64/include/openssl/blowfish.h @@ -0,0 +1,61 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BLOWFISH_H +# define HEADER_BLOWFISH_H + +# include + +# ifndef OPENSSL_NO_BF +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define BF_ENCRYPT 1 +# define BF_DECRYPT 0 + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! BF_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define BF_LONG unsigned int + +# define BF_ROUNDS 16 +# define BF_BLOCK 8 + +typedef struct bf_key_st { + BF_LONG P[BF_ROUNDS + 2]; + BF_LONG S[4 * 256]; +} BF_KEY; + +void BF_set_key(BF_KEY *key, int len, const unsigned char *data); + +void BF_encrypt(BF_LONG *data, const BF_KEY *key); +void BF_decrypt(BF_LONG *data, const BF_KEY *key); + +void BF_ecb_encrypt(const unsigned char *in, unsigned char *out, + const BF_KEY *key, int enc); +void BF_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, + const BF_KEY *schedule, unsigned char *ivec, int enc); +void BF_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const BF_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void BF_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const BF_KEY *schedule, + unsigned char *ivec, int *num); +const char *BF_options(void); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/bn.h b/openSSL/lin64/include/openssl/bn.h new file mode 100644 index 0000000..d877660 --- /dev/null +++ b/openSSL/lin64/include/openssl/bn.h @@ -0,0 +1,539 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BN_H +# define HEADER_BN_H + +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * 64-bit processor with LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT_LONG +# define BN_ULONG unsigned long +# define BN_BYTES 8 +# endif + +/* + * 64-bit processor other than LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT +# define BN_ULONG unsigned long long +# define BN_BYTES 8 +# endif + +# ifdef THIRTY_TWO_BIT +# define BN_ULONG unsigned int +# define BN_BYTES 4 +# endif + +# define BN_BITS2 (BN_BYTES * 8) +# define BN_BITS (BN_BITS2 * 2) +# define BN_TBIT ((BN_ULONG)1 << (BN_BITS2 - 1)) + +# define BN_FLG_MALLOCED 0x01 +# define BN_FLG_STATIC_DATA 0x02 + +/* + * avoid leaking exponent information through timing, + * BN_mod_exp_mont() will call BN_mod_exp_mont_consttime, + * BN_div() will call BN_div_no_branch, + * BN_mod_inverse() will call bn_mod_inverse_no_branch. + */ +# define BN_FLG_CONSTTIME 0x04 +# define BN_FLG_SECURE 0x08 + +# if OPENSSL_API_COMPAT < 0x00908000L +/* deprecated name for the flag */ +# define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME +# define BN_FLG_FREE 0x8000 /* used for debugging */ +# endif + +void BN_set_flags(BIGNUM *b, int n); +int BN_get_flags(const BIGNUM *b, int n); + +/* Values for |top| in BN_rand() */ +#define BN_RAND_TOP_ANY -1 +#define BN_RAND_TOP_ONE 0 +#define BN_RAND_TOP_TWO 1 + +/* Values for |bottom| in BN_rand() */ +#define BN_RAND_BOTTOM_ANY 0 +#define BN_RAND_BOTTOM_ODD 1 + +/* + * get a clone of a BIGNUM with changed flags, for *temporary* use only (the + * two BIGNUMs cannot be used in parallel!). Also only for *read only* use. The + * value |dest| should be a newly allocated BIGNUM obtained via BN_new() that + * has not been otherwise initialised or used. + */ +void BN_with_flags(BIGNUM *dest, const BIGNUM *b, int flags); + +/* Wrapper function to make using BN_GENCB easier */ +int BN_GENCB_call(BN_GENCB *cb, int a, int b); + +BN_GENCB *BN_GENCB_new(void); +void BN_GENCB_free(BN_GENCB *cb); + +/* Populate a BN_GENCB structure with an "old"-style callback */ +void BN_GENCB_set_old(BN_GENCB *gencb, void (*callback) (int, int, void *), + void *cb_arg); + +/* Populate a BN_GENCB structure with a "new"-style callback */ +void BN_GENCB_set(BN_GENCB *gencb, int (*callback) (int, int, BN_GENCB *), + void *cb_arg); + +void *BN_GENCB_get_arg(BN_GENCB *cb); + +# define BN_prime_checks 0 /* default: select number of iterations based + * on the size of the number */ + +/* + * BN_prime_checks_for_size() returns the number of Miller-Rabin iterations + * that will be done for checking that a random number is probably prime. The + * error rate for accepting a composite number as prime depends on the size of + * the prime |b|. The error rates used are for calculating an RSA key with 2 primes, + * and so the level is what you would expect for a key of double the size of the + * prime. + * + * This table is generated using the algorithm of FIPS PUB 186-4 + * Digital Signature Standard (DSS), section F.1, page 117. + * (https://dx.doi.org/10.6028/NIST.FIPS.186-4) + * + * The following magma script was used to generate the output: + * securitybits:=125; + * k:=1024; + * for t:=1 to 65 do + * for M:=3 to Floor(2*Sqrt(k-1)-1) do + * S:=0; + * // Sum over m + * for m:=3 to M do + * s:=0; + * // Sum over j + * for j:=2 to m do + * s+:=(RealField(32)!2)^-(j+(k-1)/j); + * end for; + * S+:=2^(m-(m-1)*t)*s; + * end for; + * A:=2^(k-2-M*t); + * B:=8*(Pi(RealField(32))^2-6)/3*2^(k-2)*S; + * pkt:=2.00743*Log(2)*k*2^-k*(A+B); + * seclevel:=Floor(-Log(2,pkt)); + * if seclevel ge securitybits then + * printf "k: %5o, security: %o bits (t: %o, M: %o)\n",k,seclevel,t,M; + * break; + * end if; + * end for; + * if seclevel ge securitybits then break; end if; + * end for; + * + * It can be run online at: + * http://magma.maths.usyd.edu.au/calc + * + * And will output: + * k: 1024, security: 129 bits (t: 6, M: 23) + * + * k is the number of bits of the prime, securitybits is the level we want to + * reach. + * + * prime length | RSA key size | # MR tests | security level + * -------------+--------------|------------+--------------- + * (b) >= 6394 | >= 12788 | 3 | 256 bit + * (b) >= 3747 | >= 7494 | 3 | 192 bit + * (b) >= 1345 | >= 2690 | 4 | 128 bit + * (b) >= 1080 | >= 2160 | 5 | 128 bit + * (b) >= 852 | >= 1704 | 5 | 112 bit + * (b) >= 476 | >= 952 | 5 | 80 bit + * (b) >= 400 | >= 800 | 6 | 80 bit + * (b) >= 347 | >= 694 | 7 | 80 bit + * (b) >= 308 | >= 616 | 8 | 80 bit + * (b) >= 55 | >= 110 | 27 | 64 bit + * (b) >= 6 | >= 12 | 34 | 64 bit + */ + +# define BN_prime_checks_for_size(b) ((b) >= 3747 ? 3 : \ + (b) >= 1345 ? 4 : \ + (b) >= 476 ? 5 : \ + (b) >= 400 ? 6 : \ + (b) >= 347 ? 7 : \ + (b) >= 308 ? 8 : \ + (b) >= 55 ? 27 : \ + /* b >= 6 */ 34) + +# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8) + +int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w); +int BN_is_zero(const BIGNUM *a); +int BN_is_one(const BIGNUM *a); +int BN_is_word(const BIGNUM *a, const BN_ULONG w); +int BN_is_odd(const BIGNUM *a); + +# define BN_one(a) (BN_set_word((a),1)) + +void BN_zero_ex(BIGNUM *a); + +# if OPENSSL_API_COMPAT >= 0x00908000L +# define BN_zero(a) BN_zero_ex(a) +# else +# define BN_zero(a) (BN_set_word((a),0)) +# endif + +const BIGNUM *BN_value_one(void); +char *BN_options(void); +BN_CTX *BN_CTX_new(void); +BN_CTX *BN_CTX_secure_new(void); +void BN_CTX_free(BN_CTX *c); +void BN_CTX_start(BN_CTX *ctx); +BIGNUM *BN_CTX_get(BN_CTX *ctx); +void BN_CTX_end(BN_CTX *ctx); +int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_priv_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_num_bits(const BIGNUM *a); +int BN_num_bits_word(BN_ULONG l); +int BN_security_bits(int L, int N); +BIGNUM *BN_new(void); +BIGNUM *BN_secure_new(void); +void BN_clear_free(BIGNUM *a); +BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); +void BN_swap(BIGNUM *a, BIGNUM *b); +BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2bin(const BIGNUM *a, unsigned char *to); +int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2mpi(const BIGNUM *a, unsigned char *to); +int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); +/** BN_set_negative sets sign of a BIGNUM + * \param b pointer to the BIGNUM object + * \param n 0 if the BIGNUM b should be positive and a value != 0 otherwise + */ +void BN_set_negative(BIGNUM *b, int n); +/** BN_is_negative returns 1 if the BIGNUM is negative + * \param b pointer to the BIGNUM object + * \return 1 if a < 0 and 0 otherwise + */ +int BN_is_negative(const BIGNUM *b); + +int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, + BN_CTX *ctx); +# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx)) +int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); +int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m); +int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m); + +BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w); +BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w); +int BN_mul_word(BIGNUM *a, BN_ULONG w); +int BN_add_word(BIGNUM *a, BN_ULONG w); +int BN_sub_word(BIGNUM *a, BN_ULONG w); +int BN_set_word(BIGNUM *a, BN_ULONG w); +BN_ULONG BN_get_word(const BIGNUM *a); + +int BN_cmp(const BIGNUM *a, const BIGNUM *b); +void BN_free(BIGNUM *a); +int BN_is_bit_set(const BIGNUM *a, int n); +int BN_lshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_lshift1(BIGNUM *r, const BIGNUM *a); +int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *in_mont); +int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1, + const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m, + BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); + +int BN_mask_bits(BIGNUM *a, int n); +# ifndef OPENSSL_NO_STDIO +int BN_print_fp(FILE *fp, const BIGNUM *a); +# endif +int BN_print(BIO *bio, const BIGNUM *a); +int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx); +int BN_rshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_rshift1(BIGNUM *r, const BIGNUM *a); +void BN_clear(BIGNUM *a); +BIGNUM *BN_dup(const BIGNUM *a); +int BN_ucmp(const BIGNUM *a, const BIGNUM *b); +int BN_set_bit(BIGNUM *a, int n); +int BN_clear_bit(BIGNUM *a, int n); +char *BN_bn2hex(const BIGNUM *a); +char *BN_bn2dec(const BIGNUM *a); +int BN_hex2bn(BIGNUM **a, const char *str); +int BN_dec2bn(BIGNUM **a, const char *str); +int BN_asc2bn(BIGNUM **a, const char *str); +int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns + * -2 for + * error */ +BIGNUM *BN_mod_inverse(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); +BIGNUM *BN_mod_sqrt(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); + +void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords); + +/* Deprecated versions */ +DEPRECATEDIN_0_9_8(BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe, + const BIGNUM *add, + const BIGNUM *rem, + void (*callback) (int, int, + void *), + void *cb_arg)) +DEPRECATEDIN_0_9_8(int + BN_is_prime(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg)) +DEPRECATEDIN_0_9_8(int + BN_is_prime_fasttest(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg, + int do_trial_division)) + +/* Newer versions */ +int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, + const BIGNUM *rem, BN_GENCB *cb); +int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb); +int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, + int do_trial_division, BN_GENCB *cb); + +int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx); + +int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, + const BIGNUM *Xp, const BIGNUM *Xp1, + const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx, + BN_GENCB *cb); +int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1, + BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e, + BN_CTX *ctx, BN_GENCB *cb); + +BN_MONT_CTX *BN_MONT_CTX_new(void); +int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + BN_MONT_CTX *mont, BN_CTX *ctx); +int BN_to_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, + BN_CTX *ctx); +int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, + BN_CTX *ctx); +void BN_MONT_CTX_free(BN_MONT_CTX *mont); +int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx); +BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from); +BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_RWLOCK *lock, + const BIGNUM *mod, BN_CTX *ctx); + +/* BN_BLINDING flags */ +# define BN_BLINDING_NO_UPDATE 0x00000001 +# define BN_BLINDING_NO_RECREATE 0x00000002 + +BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod); +void BN_BLINDING_free(BN_BLINDING *b); +int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *); +int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, + BN_CTX *); + +int BN_BLINDING_is_current_thread(BN_BLINDING *b); +void BN_BLINDING_set_current_thread(BN_BLINDING *b); +int BN_BLINDING_lock(BN_BLINDING *b); +int BN_BLINDING_unlock(BN_BLINDING *b); + +unsigned long BN_BLINDING_get_flags(const BN_BLINDING *); +void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long); +BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b, + const BIGNUM *e, BIGNUM *m, BN_CTX *ctx, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx), + BN_MONT_CTX *m_ctx); + +DEPRECATEDIN_0_9_8(void BN_set_params(int mul, int high, int low, int mont)) +DEPRECATEDIN_0_9_8(int BN_get_params(int which)) /* 0, mul, 1 high, 2 low, 3 + * mont */ + +BN_RECP_CTX *BN_RECP_CTX_new(void); +void BN_RECP_CTX_free(BN_RECP_CTX *recp); +int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx); +int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y, + BN_RECP_CTX *recp, BN_CTX *ctx); +int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, + BN_RECP_CTX *recp, BN_CTX *ctx); + +# ifndef OPENSSL_NO_EC2M + +/* + * Functions for arithmetic over binary polynomials represented by BIGNUMs. + * The BIGNUM::neg property of BIGNUMs representing binary polynomials is + * ignored. Note that input arguments are not const so that their bit arrays + * can be expanded to the appropriate size if needed. + */ + +/* + * r = a + b + */ +int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +# define BN_GF2m_sub(r, a, b) BN_GF2m_add(r, a, b) +/* + * r=a mod p + */ +int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +# define BN_GF2m_cmp(a, b) BN_ucmp((a), (b)) +/*- + * Some functions allow for representation of the irreducible polynomials + * as an unsigned int[], say p. The irreducible f(t) is then of the form: + * t^p[0] + t^p[1] + ... + t^p[k] + * where m = p[0] > p[1] > ... > p[k] = 0. + */ +/* r = a mod p */ +int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], + BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[], + BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max); +int BN_GF2m_arr2poly(const int p[], BIGNUM *a); + +# endif + +/* + * faster mod functions for the 'NIST primes' 0 <= a < p^2 + */ +int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +const BIGNUM *BN_get0_nist_prime_192(void); +const BIGNUM *BN_get0_nist_prime_224(void); +const BIGNUM *BN_get0_nist_prime_256(void); +const BIGNUM *BN_get0_nist_prime_384(void); +const BIGNUM *BN_get0_nist_prime_521(void); + +int (*BN_nist_mod_func(const BIGNUM *p)) (BIGNUM *r, const BIGNUM *a, + const BIGNUM *field, BN_CTX *ctx); + +int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range, + const BIGNUM *priv, const unsigned char *message, + size_t message_len, BN_CTX *ctx); + +/* Primes from RFC 2409 */ +BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn); +BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn); + +/* Primes from RFC 3526 */ +BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_4096(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_6144(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_8192(BIGNUM *bn); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define get_rfc2409_prime_768 BN_get_rfc2409_prime_768 +# define get_rfc2409_prime_1024 BN_get_rfc2409_prime_1024 +# define get_rfc3526_prime_1536 BN_get_rfc3526_prime_1536 +# define get_rfc3526_prime_2048 BN_get_rfc3526_prime_2048 +# define get_rfc3526_prime_3072 BN_get_rfc3526_prime_3072 +# define get_rfc3526_prime_4096 BN_get_rfc3526_prime_4096 +# define get_rfc3526_prime_6144 BN_get_rfc3526_prime_6144 +# define get_rfc3526_prime_8192 BN_get_rfc3526_prime_8192 +# endif + +int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/bnerr.h b/openSSL/lin64/include/openssl/bnerr.h new file mode 100644 index 0000000..9f3c7cf --- /dev/null +++ b/openSSL/lin64/include/openssl/bnerr.h @@ -0,0 +1,100 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BNERR_H +# define HEADER_BNERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BN_strings(void); + +/* + * BN function codes. + */ +# define BN_F_BNRAND 127 +# define BN_F_BNRAND_RANGE 138 +# define BN_F_BN_BLINDING_CONVERT_EX 100 +# define BN_F_BN_BLINDING_CREATE_PARAM 128 +# define BN_F_BN_BLINDING_INVERT_EX 101 +# define BN_F_BN_BLINDING_NEW 102 +# define BN_F_BN_BLINDING_UPDATE 103 +# define BN_F_BN_BN2DEC 104 +# define BN_F_BN_BN2HEX 105 +# define BN_F_BN_COMPUTE_WNAF 142 +# define BN_F_BN_CTX_GET 116 +# define BN_F_BN_CTX_NEW 106 +# define BN_F_BN_CTX_START 129 +# define BN_F_BN_DIV 107 +# define BN_F_BN_DIV_RECP 130 +# define BN_F_BN_EXP 123 +# define BN_F_BN_EXPAND_INTERNAL 120 +# define BN_F_BN_GENCB_NEW 143 +# define BN_F_BN_GENERATE_DSA_NONCE 140 +# define BN_F_BN_GENERATE_PRIME_EX 141 +# define BN_F_BN_GF2M_MOD 131 +# define BN_F_BN_GF2M_MOD_EXP 132 +# define BN_F_BN_GF2M_MOD_MUL 133 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD 134 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 135 +# define BN_F_BN_GF2M_MOD_SQR 136 +# define BN_F_BN_GF2M_MOD_SQRT 137 +# define BN_F_BN_LSHIFT 145 +# define BN_F_BN_MOD_EXP2_MONT 118 +# define BN_F_BN_MOD_EXP_MONT 109 +# define BN_F_BN_MOD_EXP_MONT_CONSTTIME 124 +# define BN_F_BN_MOD_EXP_MONT_WORD 117 +# define BN_F_BN_MOD_EXP_RECP 125 +# define BN_F_BN_MOD_EXP_SIMPLE 126 +# define BN_F_BN_MOD_INVERSE 110 +# define BN_F_BN_MOD_INVERSE_NO_BRANCH 139 +# define BN_F_BN_MOD_LSHIFT_QUICK 119 +# define BN_F_BN_MOD_SQRT 121 +# define BN_F_BN_MONT_CTX_NEW 149 +# define BN_F_BN_MPI2BN 112 +# define BN_F_BN_NEW 113 +# define BN_F_BN_POOL_GET 147 +# define BN_F_BN_RAND 114 +# define BN_F_BN_RAND_RANGE 122 +# define BN_F_BN_RECP_CTX_NEW 150 +# define BN_F_BN_RSHIFT 146 +# define BN_F_BN_SET_WORDS 144 +# define BN_F_BN_STACK_PUSH 148 +# define BN_F_BN_USUB 115 + +/* + * BN reason codes. + */ +# define BN_R_ARG2_LT_ARG3 100 +# define BN_R_BAD_RECIPROCAL 101 +# define BN_R_BIGNUM_TOO_LONG 114 +# define BN_R_BITS_TOO_SMALL 118 +# define BN_R_CALLED_WITH_EVEN_MODULUS 102 +# define BN_R_DIV_BY_ZERO 103 +# define BN_R_ENCODING_ERROR 104 +# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 +# define BN_R_INPUT_NOT_REDUCED 110 +# define BN_R_INVALID_LENGTH 106 +# define BN_R_INVALID_RANGE 115 +# define BN_R_INVALID_SHIFT 119 +# define BN_R_NOT_A_SQUARE 111 +# define BN_R_NOT_INITIALIZED 107 +# define BN_R_NO_INVERSE 108 +# define BN_R_NO_SOLUTION 116 +# define BN_R_PRIVATE_KEY_TOO_LARGE 117 +# define BN_R_P_IS_NOT_PRIME 112 +# define BN_R_TOO_MANY_ITERATIONS 113 +# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 + +#endif diff --git a/openSSL/lin64/include/openssl/buffer.h b/openSSL/lin64/include/openssl/buffer.h new file mode 100644 index 0000000..d276576 --- /dev/null +++ b/openSSL/lin64/include/openssl/buffer.h @@ -0,0 +1,58 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BUFFER_H +# define HEADER_BUFFER_H + +# include +# ifndef HEADER_CRYPTO_H +# include +# endif +# include + + +#ifdef __cplusplus +extern "C" { +#endif + +# include +# include + +/* + * These names are outdated as of OpenSSL 1.1; a future release + * will move them to be deprecated. + */ +# define BUF_strdup(s) OPENSSL_strdup(s) +# define BUF_strndup(s, size) OPENSSL_strndup(s, size) +# define BUF_memdup(data, size) OPENSSL_memdup(data, size) +# define BUF_strlcpy(dst, src, size) OPENSSL_strlcpy(dst, src, size) +# define BUF_strlcat(dst, src, size) OPENSSL_strlcat(dst, src, size) +# define BUF_strnlen(str, maxlen) OPENSSL_strnlen(str, maxlen) + +struct buf_mem_st { + size_t length; /* current number of bytes */ + char *data; + size_t max; /* size of buffer */ + unsigned long flags; +}; + +# define BUF_MEM_FLAG_SECURE 0x01 + +BUF_MEM *BUF_MEM_new(void); +BUF_MEM *BUF_MEM_new_ex(unsigned long flags); +void BUF_MEM_free(BUF_MEM *a); +size_t BUF_MEM_grow(BUF_MEM *str, size_t len); +size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len); +void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/buffererr.h b/openSSL/lin64/include/openssl/buffererr.h new file mode 100644 index 0000000..04f6ff7 --- /dev/null +++ b/openSSL/lin64/include/openssl/buffererr.h @@ -0,0 +1,34 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BUFERR_H +# define HEADER_BUFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BUF_strings(void); + +/* + * BUF function codes. + */ +# define BUF_F_BUF_MEM_GROW 100 +# define BUF_F_BUF_MEM_GROW_CLEAN 105 +# define BUF_F_BUF_MEM_NEW 101 + +/* + * BUF reason codes. + */ + +#endif diff --git a/openSSL/lin64/include/openssl/camellia.h b/openSSL/lin64/include/openssl/camellia.h new file mode 100644 index 0000000..151f3c1 --- /dev/null +++ b/openSSL/lin64/include/openssl/camellia.h @@ -0,0 +1,83 @@ +/* + * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CAMELLIA_H +# define HEADER_CAMELLIA_H + +# include + +# ifndef OPENSSL_NO_CAMELLIA +# include +#ifdef __cplusplus +extern "C" { +#endif + +# define CAMELLIA_ENCRYPT 1 +# define CAMELLIA_DECRYPT 0 + +/* + * Because array size can't be a const in C, the following two are macros. + * Both sizes are in bytes. + */ + +/* This should be a hidden type, but EVP requires that the size be known */ + +# define CAMELLIA_BLOCK_SIZE 16 +# define CAMELLIA_TABLE_BYTE_LEN 272 +# define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / 4) + +typedef unsigned int KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN]; /* to match + * with WORD */ + +struct camellia_key_st { + union { + double d; /* ensures 64-bit align */ + KEY_TABLE_TYPE rd_key; + } u; + int grand_rounds; +}; +typedef struct camellia_key_st CAMELLIA_KEY; + +int Camellia_set_key(const unsigned char *userKey, const int bits, + CAMELLIA_KEY *key); + +void Camellia_encrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key); +void Camellia_decrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key); + +void Camellia_ecb_encrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key, const int enc); +void Camellia_cbc_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, const int enc); +void Camellia_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num, const int enc); +void Camellia_cfb1_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num, const int enc); +void Camellia_cfb8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num, const int enc); +void Camellia_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num); +void Camellia_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char ivec[CAMELLIA_BLOCK_SIZE], + unsigned char ecount_buf[CAMELLIA_BLOCK_SIZE], + unsigned int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/cast.h b/openSSL/lin64/include/openssl/cast.h new file mode 100644 index 0000000..2cc89ae --- /dev/null +++ b/openSSL/lin64/include/openssl/cast.h @@ -0,0 +1,53 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CAST_H +# define HEADER_CAST_H + +# include + +# ifndef OPENSSL_NO_CAST +# ifdef __cplusplus +extern "C" { +# endif + +# define CAST_ENCRYPT 1 +# define CAST_DECRYPT 0 + +# define CAST_LONG unsigned int + +# define CAST_BLOCK 8 +# define CAST_KEY_LENGTH 16 + +typedef struct cast_key_st { + CAST_LONG data[32]; + int short_key; /* Use reduced rounds for short key */ +} CAST_KEY; + +void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data); +void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out, + const CAST_KEY *key, int enc); +void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key); +void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key); +void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *ks, unsigned char *iv, + int enc); +void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *schedule, + unsigned char *ivec, int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/cmac.h b/openSSL/lin64/include/openssl/cmac.h new file mode 100644 index 0000000..3535a9a --- /dev/null +++ b/openSSL/lin64/include/openssl/cmac.h @@ -0,0 +1,41 @@ +/* + * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMAC_H +# define HEADER_CMAC_H + +# ifndef OPENSSL_NO_CMAC + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +/* Opaque */ +typedef struct CMAC_CTX_st CMAC_CTX; + +CMAC_CTX *CMAC_CTX_new(void); +void CMAC_CTX_cleanup(CMAC_CTX *ctx); +void CMAC_CTX_free(CMAC_CTX *ctx); +EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx); +int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in); + +int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen, + const EVP_CIPHER *cipher, ENGINE *impl); +int CMAC_Update(CMAC_CTX *ctx, const void *data, size_t dlen); +int CMAC_Final(CMAC_CTX *ctx, unsigned char *out, size_t *poutlen); +int CMAC_resume(CMAC_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +# endif +#endif diff --git a/openSSL/lin64/include/openssl/cms.h b/openSSL/lin64/include/openssl/cms.h new file mode 100644 index 0000000..c762796 --- /dev/null +++ b/openSSL/lin64/include/openssl/cms.h @@ -0,0 +1,339 @@ +/* + * Copyright 2008-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMS_H +# define HEADER_CMS_H + +# include + +# ifndef OPENSSL_NO_CMS +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct CMS_ContentInfo_st CMS_ContentInfo; +typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_CertificateChoices CMS_CertificateChoices; +typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; +typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; +typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest; +typedef struct CMS_Receipt_st CMS_Receipt; +typedef struct CMS_RecipientEncryptedKey_st CMS_RecipientEncryptedKey; +typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute; + +DEFINE_STACK_OF(CMS_SignerInfo) +DEFINE_STACK_OF(CMS_RecipientEncryptedKey) +DEFINE_STACK_OF(CMS_RecipientInfo) +DEFINE_STACK_OF(CMS_RevocationInfoChoice) +DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) +DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) +DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) + +# define CMS_SIGNERINFO_ISSUER_SERIAL 0 +# define CMS_SIGNERINFO_KEYIDENTIFIER 1 + +# define CMS_RECIPINFO_NONE -1 +# define CMS_RECIPINFO_TRANS 0 +# define CMS_RECIPINFO_AGREE 1 +# define CMS_RECIPINFO_KEK 2 +# define CMS_RECIPINFO_PASS 3 +# define CMS_RECIPINFO_OTHER 4 + +/* S/MIME related flags */ + +# define CMS_TEXT 0x1 +# define CMS_NOCERTS 0x2 +# define CMS_NO_CONTENT_VERIFY 0x4 +# define CMS_NO_ATTR_VERIFY 0x8 +# define CMS_NOSIGS \ + (CMS_NO_CONTENT_VERIFY|CMS_NO_ATTR_VERIFY) +# define CMS_NOINTERN 0x10 +# define CMS_NO_SIGNER_CERT_VERIFY 0x20 +# define CMS_NOVERIFY 0x20 +# define CMS_DETACHED 0x40 +# define CMS_BINARY 0x80 +# define CMS_NOATTR 0x100 +# define CMS_NOSMIMECAP 0x200 +# define CMS_NOOLDMIMETYPE 0x400 +# define CMS_CRLFEOL 0x800 +# define CMS_STREAM 0x1000 +# define CMS_NOCRL 0x2000 +# define CMS_PARTIAL 0x4000 +# define CMS_REUSE_DIGEST 0x8000 +# define CMS_USE_KEYID 0x10000 +# define CMS_DEBUG_DECRYPT 0x20000 +# define CMS_KEY_PARAM 0x40000 +# define CMS_ASCIICRLF 0x80000 + +const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); + +BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont); +int CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio); + +ASN1_OCTET_STRING **CMS_get0_content(CMS_ContentInfo *cms); +int CMS_is_detached(CMS_ContentInfo *cms); +int CMS_set_detached(CMS_ContentInfo *cms, int detached); + +# ifdef HEADER_PEM_H +DECLARE_PEM_rw_const(CMS, CMS_ContentInfo) +# endif +int CMS_stream(unsigned char ***boundary, CMS_ContentInfo *cms); +CMS_ContentInfo *d2i_CMS_bio(BIO *bp, CMS_ContentInfo **cms); +int i2d_CMS_bio(BIO *bp, CMS_ContentInfo *cms); + +BIO *BIO_new_CMS(BIO *out, CMS_ContentInfo *cms); +int i2d_CMS_bio_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, int flags); +int PEM_write_bio_CMS_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, + int flags); +CMS_ContentInfo *SMIME_read_CMS(BIO *bio, BIO **bcont); +int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); + +int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, + unsigned int flags); + +CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, BIO *data, + unsigned int flags); + +CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, + X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, unsigned int flags); + +int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); +CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); + +int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, + unsigned int flags); +CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, + unsigned int flags); + +int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, + const unsigned char *key, size_t keylen, + BIO *dcont, BIO *out, unsigned int flags); + +CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, + const unsigned char *key, + size_t keylen, unsigned int flags); + +int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, + const unsigned char *key, size_t keylen); + +int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs, + X509_STORE *store, BIO *dcont, BIO *out, unsigned int flags); + +int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms, + STACK_OF(X509) *certs, + X509_STORE *store, unsigned int flags); + +STACK_OF(X509) *CMS_get0_signers(CMS_ContentInfo *cms); + +CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, unsigned int flags); + +int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, + BIO *dcont, BIO *out, unsigned int flags); + +int CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert); +int CMS_decrypt_set1_key(CMS_ContentInfo *cms, + unsigned char *key, size_t keylen, + const unsigned char *id, size_t idlen); +int CMS_decrypt_set1_password(CMS_ContentInfo *cms, + unsigned char *pass, ossl_ssize_t passlen); + +STACK_OF(CMS_RecipientInfo) *CMS_get0_RecipientInfos(CMS_ContentInfo *cms); +int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); +EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); +CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); +CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, + X509 *recip, unsigned int flags); +int CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey); +int CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert); +int CMS_RecipientInfo_ktri_get0_algs(CMS_RecipientInfo *ri, + EVP_PKEY **pk, X509 **recip, + X509_ALGOR **palg); +int CMS_RecipientInfo_ktri_get0_signer_id(CMS_RecipientInfo *ri, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, + ASN1_INTEGER **sno); + +CMS_RecipientInfo *CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid, + unsigned char *key, size_t keylen, + unsigned char *id, size_t idlen, + ASN1_GENERALIZEDTIME *date, + ASN1_OBJECT *otherTypeId, + ASN1_TYPE *otherType); + +int CMS_RecipientInfo_kekri_get0_id(CMS_RecipientInfo *ri, + X509_ALGOR **palg, + ASN1_OCTET_STRING **pid, + ASN1_GENERALIZEDTIME **pdate, + ASN1_OBJECT **potherid, + ASN1_TYPE **pothertype); + +int CMS_RecipientInfo_set0_key(CMS_RecipientInfo *ri, + unsigned char *key, size_t keylen); + +int CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo *ri, + const unsigned char *id, size_t idlen); + +int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri, + unsigned char *pass, + ossl_ssize_t passlen); + +CMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms, + int iter, int wrap_nid, + int pbe_nid, + unsigned char *pass, + ossl_ssize_t passlen, + const EVP_CIPHER *kekciph); + +int CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri); +int CMS_RecipientInfo_encrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri); + +int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out, + unsigned int flags); +CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags); + +int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid); +const ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms); + +CMS_CertificateChoices *CMS_add0_CertificateChoices(CMS_ContentInfo *cms); +int CMS_add0_cert(CMS_ContentInfo *cms, X509 *cert); +int CMS_add1_cert(CMS_ContentInfo *cms, X509 *cert); +STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms); + +CMS_RevocationInfoChoice *CMS_add0_RevocationInfoChoice(CMS_ContentInfo *cms); +int CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl); +int CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl); +STACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms); + +int CMS_SignedData_init(CMS_ContentInfo *cms); +CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms, + X509 *signer, EVP_PKEY *pk, const EVP_MD *md, + unsigned int flags); +EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si); +EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si); +STACK_OF(CMS_SignerInfo) *CMS_get0_SignerInfos(CMS_ContentInfo *cms); + +void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer); +int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert); +int CMS_set1_signers_certs(CMS_ContentInfo *cms, STACK_OF(X509) *certs, + unsigned int flags); +void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk, + X509 **signer, X509_ALGOR **pdig, + X509_ALGOR **psig); +ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); +int CMS_SignerInfo_sign(CMS_SignerInfo *si); +int CMS_SignerInfo_verify(CMS_SignerInfo *si); +int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); + +int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); +int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, + int algnid, int keysize); +int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap); + +int CMS_signed_get_attr_count(const CMS_SignerInfo *si); +int CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_signed_get0_data_by_OBJ(CMS_SignerInfo *si, const ASN1_OBJECT *oid, + int lastpos, int type); + +int CMS_unsigned_get_attr_count(const CMS_SignerInfo *si); +int CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid, + int lastpos, int type); + +int CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr); +CMS_ReceiptRequest *CMS_ReceiptRequest_create0(unsigned char *id, int idlen, + int allorfirst, + STACK_OF(GENERAL_NAMES) + *receiptList, STACK_OF(GENERAL_NAMES) + *receiptsTo); +int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); +void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, + ASN1_STRING **pcid, + int *pallorfirst, + STACK_OF(GENERAL_NAMES) **plist, + STACK_OF(GENERAL_NAMES) **prto); +int CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri, + X509_ALGOR **palg, + ASN1_OCTET_STRING **pukm); +STACK_OF(CMS_RecipientEncryptedKey) +*CMS_RecipientInfo_kari_get0_reks(CMS_RecipientInfo *ri); + +int CMS_RecipientInfo_kari_get0_orig_id(CMS_RecipientInfo *ri, + X509_ALGOR **pubalg, + ASN1_BIT_STRING **pubkey, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, + ASN1_INTEGER **sno); + +int CMS_RecipientInfo_kari_orig_id_cmp(CMS_RecipientInfo *ri, X509 *cert); + +int CMS_RecipientEncryptedKey_get0_id(CMS_RecipientEncryptedKey *rek, + ASN1_OCTET_STRING **keyid, + ASN1_GENERALIZEDTIME **tm, + CMS_OtherKeyAttribute **other, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_RecipientEncryptedKey_cert_cmp(CMS_RecipientEncryptedKey *rek, + X509 *cert); +int CMS_RecipientInfo_kari_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk); +EVP_CIPHER_CTX *CMS_RecipientInfo_kari_get0_ctx(CMS_RecipientInfo *ri); +int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms, + CMS_RecipientInfo *ri, + CMS_RecipientEncryptedKey *rek); + +int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg, + ASN1_OCTET_STRING *ukm, int keylen); + +/* Backward compatibility for spelling errors. */ +# define CMS_R_UNKNOWN_DIGEST_ALGORITM CMS_R_UNKNOWN_DIGEST_ALGORITHM +# define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE \ + CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin64/include/openssl/cmserr.h b/openSSL/lin64/include/openssl/cmserr.h new file mode 100644 index 0000000..7dbc13d --- /dev/null +++ b/openSSL/lin64/include/openssl/cmserr.h @@ -0,0 +1,202 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMSERR_H +# define HEADER_CMSERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_CMS + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CMS_strings(void); + +/* + * CMS function codes. + */ +# define CMS_F_CHECK_CONTENT 99 +# define CMS_F_CMS_ADD0_CERT 164 +# define CMS_F_CMS_ADD0_RECIPIENT_KEY 100 +# define CMS_F_CMS_ADD0_RECIPIENT_PASSWORD 165 +# define CMS_F_CMS_ADD1_RECEIPTREQUEST 158 +# define CMS_F_CMS_ADD1_RECIPIENT_CERT 101 +# define CMS_F_CMS_ADD1_SIGNER 102 +# define CMS_F_CMS_ADD1_SIGNINGTIME 103 +# define CMS_F_CMS_COMPRESS 104 +# define CMS_F_CMS_COMPRESSEDDATA_CREATE 105 +# define CMS_F_CMS_COMPRESSEDDATA_INIT_BIO 106 +# define CMS_F_CMS_COPY_CONTENT 107 +# define CMS_F_CMS_COPY_MESSAGEDIGEST 108 +# define CMS_F_CMS_DATA 109 +# define CMS_F_CMS_DATAFINAL 110 +# define CMS_F_CMS_DATAINIT 111 +# define CMS_F_CMS_DECRYPT 112 +# define CMS_F_CMS_DECRYPT_SET1_KEY 113 +# define CMS_F_CMS_DECRYPT_SET1_PASSWORD 166 +# define CMS_F_CMS_DECRYPT_SET1_PKEY 114 +# define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX 115 +# define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO 116 +# define CMS_F_CMS_DIGESTEDDATA_DO_FINAL 117 +# define CMS_F_CMS_DIGEST_VERIFY 118 +# define CMS_F_CMS_ENCODE_RECEIPT 161 +# define CMS_F_CMS_ENCRYPT 119 +# define CMS_F_CMS_ENCRYPTEDCONTENT_INIT 179 +# define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO 120 +# define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT 121 +# define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT 122 +# define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY 123 +# define CMS_F_CMS_ENVELOPEDDATA_CREATE 124 +# define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO 125 +# define CMS_F_CMS_ENVELOPED_DATA_INIT 126 +# define CMS_F_CMS_ENV_ASN1_CTRL 171 +# define CMS_F_CMS_FINAL 127 +# define CMS_F_CMS_GET0_CERTIFICATE_CHOICES 128 +# define CMS_F_CMS_GET0_CONTENT 129 +# define CMS_F_CMS_GET0_ECONTENT_TYPE 130 +# define CMS_F_CMS_GET0_ENVELOPED 131 +# define CMS_F_CMS_GET0_REVOCATION_CHOICES 132 +# define CMS_F_CMS_GET0_SIGNED 133 +# define CMS_F_CMS_MSGSIGDIGEST_ADD1 162 +# define CMS_F_CMS_RECEIPTREQUEST_CREATE0 159 +# define CMS_F_CMS_RECEIPT_VERIFY 160 +# define CMS_F_CMS_RECIPIENTINFO_DECRYPT 134 +# define CMS_F_CMS_RECIPIENTINFO_ENCRYPT 169 +# define CMS_F_CMS_RECIPIENTINFO_KARI_ENCRYPT 178 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ALG 175 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ORIG_ID 173 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_REKS 172 +# define CMS_F_CMS_RECIPIENTINFO_KARI_ORIG_ID_CMP 174 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT 135 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT 136 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID 137 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP 138 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP 139 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT 140 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT 141 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS 142 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID 143 +# define CMS_F_CMS_RECIPIENTINFO_PWRI_CRYPT 167 +# define CMS_F_CMS_RECIPIENTINFO_SET0_KEY 144 +# define CMS_F_CMS_RECIPIENTINFO_SET0_PASSWORD 168 +# define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY 145 +# define CMS_F_CMS_SD_ASN1_CTRL 170 +# define CMS_F_CMS_SET1_IAS 176 +# define CMS_F_CMS_SET1_KEYID 177 +# define CMS_F_CMS_SET1_SIGNERIDENTIFIER 146 +# define CMS_F_CMS_SET_DETACHED 147 +# define CMS_F_CMS_SIGN 148 +# define CMS_F_CMS_SIGNED_DATA_INIT 149 +# define CMS_F_CMS_SIGNERINFO_CONTENT_SIGN 150 +# define CMS_F_CMS_SIGNERINFO_SIGN 151 +# define CMS_F_CMS_SIGNERINFO_VERIFY 152 +# define CMS_F_CMS_SIGNERINFO_VERIFY_CERT 153 +# define CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT 154 +# define CMS_F_CMS_SIGN_RECEIPT 163 +# define CMS_F_CMS_SI_CHECK_ATTRIBUTES 183 +# define CMS_F_CMS_STREAM 155 +# define CMS_F_CMS_UNCOMPRESS 156 +# define CMS_F_CMS_VERIFY 157 +# define CMS_F_KEK_UNWRAP_KEY 180 + +/* + * CMS reason codes. + */ +# define CMS_R_ADD_SIGNER_ERROR 99 +# define CMS_R_ATTRIBUTE_ERROR 161 +# define CMS_R_CERTIFICATE_ALREADY_PRESENT 175 +# define CMS_R_CERTIFICATE_HAS_NO_KEYID 160 +# define CMS_R_CERTIFICATE_VERIFY_ERROR 100 +# define CMS_R_CIPHER_INITIALISATION_ERROR 101 +# define CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR 102 +# define CMS_R_CMS_DATAFINAL_ERROR 103 +# define CMS_R_CMS_LIB 104 +# define CMS_R_CONTENTIDENTIFIER_MISMATCH 170 +# define CMS_R_CONTENT_NOT_FOUND 105 +# define CMS_R_CONTENT_TYPE_MISMATCH 171 +# define CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA 106 +# define CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA 107 +# define CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA 108 +# define CMS_R_CONTENT_VERIFY_ERROR 109 +# define CMS_R_CTRL_ERROR 110 +# define CMS_R_CTRL_FAILURE 111 +# define CMS_R_DECRYPT_ERROR 112 +# define CMS_R_ERROR_GETTING_PUBLIC_KEY 113 +# define CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE 114 +# define CMS_R_ERROR_SETTING_KEY 115 +# define CMS_R_ERROR_SETTING_RECIPIENTINFO 116 +# define CMS_R_INVALID_ENCRYPTED_KEY_LENGTH 117 +# define CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER 176 +# define CMS_R_INVALID_KEY_LENGTH 118 +# define CMS_R_MD_BIO_INIT_ERROR 119 +# define CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH 120 +# define CMS_R_MESSAGEDIGEST_WRONG_LENGTH 121 +# define CMS_R_MSGSIGDIGEST_ERROR 172 +# define CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE 162 +# define CMS_R_MSGSIGDIGEST_WRONG_LENGTH 163 +# define CMS_R_NEED_ONE_SIGNER 164 +# define CMS_R_NOT_A_SIGNED_RECEIPT 165 +# define CMS_R_NOT_ENCRYPTED_DATA 122 +# define CMS_R_NOT_KEK 123 +# define CMS_R_NOT_KEY_AGREEMENT 181 +# define CMS_R_NOT_KEY_TRANSPORT 124 +# define CMS_R_NOT_PWRI 177 +# define CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 125 +# define CMS_R_NO_CIPHER 126 +# define CMS_R_NO_CONTENT 127 +# define CMS_R_NO_CONTENT_TYPE 173 +# define CMS_R_NO_DEFAULT_DIGEST 128 +# define CMS_R_NO_DIGEST_SET 129 +# define CMS_R_NO_KEY 130 +# define CMS_R_NO_KEY_OR_CERT 174 +# define CMS_R_NO_MATCHING_DIGEST 131 +# define CMS_R_NO_MATCHING_RECIPIENT 132 +# define CMS_R_NO_MATCHING_SIGNATURE 166 +# define CMS_R_NO_MSGSIGDIGEST 167 +# define CMS_R_NO_PASSWORD 178 +# define CMS_R_NO_PRIVATE_KEY 133 +# define CMS_R_NO_PUBLIC_KEY 134 +# define CMS_R_NO_RECEIPT_REQUEST 168 +# define CMS_R_NO_SIGNERS 135 +# define CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 136 +# define CMS_R_RECEIPT_DECODE_ERROR 169 +# define CMS_R_RECIPIENT_ERROR 137 +# define CMS_R_SIGNER_CERTIFICATE_NOT_FOUND 138 +# define CMS_R_SIGNFINAL_ERROR 139 +# define CMS_R_SMIME_TEXT_ERROR 140 +# define CMS_R_STORE_INIT_ERROR 141 +# define CMS_R_TYPE_NOT_COMPRESSED_DATA 142 +# define CMS_R_TYPE_NOT_DATA 143 +# define CMS_R_TYPE_NOT_DIGESTED_DATA 144 +# define CMS_R_TYPE_NOT_ENCRYPTED_DATA 145 +# define CMS_R_TYPE_NOT_ENVELOPED_DATA 146 +# define CMS_R_UNABLE_TO_FINALIZE_CONTEXT 147 +# define CMS_R_UNKNOWN_CIPHER 148 +# define CMS_R_UNKNOWN_DIGEST_ALGORITHM 149 +# define CMS_R_UNKNOWN_ID 150 +# define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM 151 +# define CMS_R_UNSUPPORTED_CONTENT_TYPE 152 +# define CMS_R_UNSUPPORTED_KEK_ALGORITHM 153 +# define CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM 179 +# define CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE 155 +# define CMS_R_UNSUPPORTED_RECIPIENT_TYPE 154 +# define CMS_R_UNSUPPORTED_TYPE 156 +# define CMS_R_UNWRAP_ERROR 157 +# define CMS_R_UNWRAP_FAILURE 180 +# define CMS_R_VERIFICATION_FAILURE 158 +# define CMS_R_WRAP_ERROR 159 + +# endif +#endif diff --git a/openSSL/lin64/include/openssl/comp.h b/openSSL/lin64/include/openssl/comp.h new file mode 100644 index 0000000..d814d3c --- /dev/null +++ b/openSSL/lin64/include/openssl/comp.h @@ -0,0 +1,53 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_COMP_H +# define HEADER_COMP_H + +# include + +# ifndef OPENSSL_NO_COMP +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); + +#if OPENSSL_API_COMPAT < 0x10100000L +#define COMP_zlib_cleanup() while(0) continue +#endif + +# ifdef HEADER_BIO_H +# ifdef ZLIB +const BIO_METHOD *BIO_f_zlib(void); +# endif +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin64/include/openssl/comperr.h b/openSSL/lin64/include/openssl/comperr.h new file mode 100644 index 0000000..90231e9 --- /dev/null +++ b/openSSL/lin64/include/openssl/comperr.h @@ -0,0 +1,44 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_COMPERR_H +# define HEADER_COMPERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_COMP + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_COMP_strings(void); + +/* + * COMP function codes. + */ +# define COMP_F_BIO_ZLIB_FLUSH 99 +# define COMP_F_BIO_ZLIB_NEW 100 +# define COMP_F_BIO_ZLIB_READ 101 +# define COMP_F_BIO_ZLIB_WRITE 102 +# define COMP_F_COMP_CTX_NEW 103 + +/* + * COMP reason codes. + */ +# define COMP_R_ZLIB_DEFLATE_ERROR 99 +# define COMP_R_ZLIB_INFLATE_ERROR 100 +# define COMP_R_ZLIB_NOT_SUPPORTED 101 + +# endif +#endif diff --git a/openSSL/lin64/include/openssl/conf.h b/openSSL/lin64/include/openssl/conf.h new file mode 100644 index 0000000..7336cd2 --- /dev/null +++ b/openSSL/lin64/include/openssl/conf.h @@ -0,0 +1,168 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CONF_H +# define HEADER_CONF_H + +# include +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char *section; + char *name; + char *value; +} CONF_VALUE; + +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_LHASH_OF(CONF_VALUE); + +struct conf_st; +struct conf_method_st; +typedef struct conf_method_st CONF_METHOD; + +struct conf_method_st { + const char *name; + CONF *(*create) (CONF_METHOD *meth); + int (*init) (CONF *conf); + int (*destroy) (CONF *conf); + int (*destroy_data) (CONF *conf); + int (*load_bio) (CONF *conf, BIO *bp, long *eline); + int (*dump) (const CONF *conf, BIO *bp); + int (*is_number) (const CONF *conf, char c); + int (*to_int) (const CONF *conf, char c); + int (*load) (CONF *conf, const char *name, long *eline); +}; + +/* Module definitions */ + +typedef struct conf_imodule_st CONF_IMODULE; +typedef struct conf_module_st CONF_MODULE; + +DEFINE_STACK_OF(CONF_MODULE) +DEFINE_STACK_OF(CONF_IMODULE) + +/* DSO module function typedefs */ +typedef int conf_init_func (CONF_IMODULE *md, const CONF *cnf); +typedef void conf_finish_func (CONF_IMODULE *md); + +# define CONF_MFLAGS_IGNORE_ERRORS 0x1 +# define CONF_MFLAGS_IGNORE_RETURN_CODES 0x2 +# define CONF_MFLAGS_SILENT 0x4 +# define CONF_MFLAGS_NO_DSO 0x8 +# define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10 +# define CONF_MFLAGS_DEFAULT_SECTION 0x20 + +int CONF_set_default_method(CONF_METHOD *meth); +void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash); +LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file, + long *eline); +# ifndef OPENSSL_NO_STDIO +LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp, + long *eline); +# endif +LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp, + long *eline); +STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf, + const char *section); +char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf, const char *group, + const char *name); +long CONF_get_number(LHASH_OF(CONF_VALUE) *conf, const char *group, + const char *name); +void CONF_free(LHASH_OF(CONF_VALUE) *conf); +#ifndef OPENSSL_NO_STDIO +int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out); +#endif +int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out); + +DEPRECATEDIN_1_1_0(void OPENSSL_config(const char *config_name)) + +#if OPENSSL_API_COMPAT < 0x10100000L +# define OPENSSL_no_config() \ + OPENSSL_init_crypto(OPENSSL_INIT_NO_LOAD_CONFIG, NULL) +#endif + +/* + * New conf code. The semantics are different from the functions above. If + * that wasn't the case, the above functions would have been replaced + */ + +struct conf_st { + CONF_METHOD *meth; + void *meth_data; + LHASH_OF(CONF_VALUE) *data; +}; + +CONF *NCONF_new(CONF_METHOD *meth); +CONF_METHOD *NCONF_default(void); +CONF_METHOD *NCONF_WIN32(void); +void NCONF_free(CONF *conf); +void NCONF_free_data(CONF *conf); + +int NCONF_load(CONF *conf, const char *file, long *eline); +# ifndef OPENSSL_NO_STDIO +int NCONF_load_fp(CONF *conf, FILE *fp, long *eline); +# endif +int NCONF_load_bio(CONF *conf, BIO *bp, long *eline); +STACK_OF(CONF_VALUE) *NCONF_get_section(const CONF *conf, + const char *section); +char *NCONF_get_string(const CONF *conf, const char *group, const char *name); +int NCONF_get_number_e(const CONF *conf, const char *group, const char *name, + long *result); +#ifndef OPENSSL_NO_STDIO +int NCONF_dump_fp(const CONF *conf, FILE *out); +#endif +int NCONF_dump_bio(const CONF *conf, BIO *out); + +#define NCONF_get_number(c,g,n,r) NCONF_get_number_e(c,g,n,r) + +/* Module functions */ + +int CONF_modules_load(const CONF *cnf, const char *appname, + unsigned long flags); +int CONF_modules_load_file(const char *filename, const char *appname, + unsigned long flags); +void CONF_modules_unload(int all); +void CONF_modules_finish(void); +#if OPENSSL_API_COMPAT < 0x10100000L +# define CONF_modules_free() while(0) continue +#endif +int CONF_module_add(const char *name, conf_init_func *ifunc, + conf_finish_func *ffunc); + +const char *CONF_imodule_get_name(const CONF_IMODULE *md); +const char *CONF_imodule_get_value(const CONF_IMODULE *md); +void *CONF_imodule_get_usr_data(const CONF_IMODULE *md); +void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data); +CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md); +unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md); +void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags); +void *CONF_module_get_usr_data(CONF_MODULE *pmod); +void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data); + +char *CONF_get1_default_config_file(void); + +int CONF_parse_list(const char *list, int sep, int nospc, + int (*list_cb) (const char *elem, int len, void *usr), + void *arg); + +void OPENSSL_load_builtin_modules(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/conf_api.h b/openSSL/lin64/include/openssl/conf_api.h new file mode 100644 index 0000000..a0275ad --- /dev/null +++ b/openSSL/lin64/include/openssl/conf_api.h @@ -0,0 +1,40 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CONF_API_H +# define HEADER_CONF_API_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Up until OpenSSL 0.9.5a, this was new_section */ +CONF_VALUE *_CONF_new_section(CONF *conf, const char *section); +/* Up until OpenSSL 0.9.5a, this was get_section */ +CONF_VALUE *_CONF_get_section(const CONF *conf, const char *section); +/* Up until OpenSSL 0.9.5a, this was CONF_get_section */ +STACK_OF(CONF_VALUE) *_CONF_get_section_values(const CONF *conf, + const char *section); + +int _CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value); +char *_CONF_get_string(const CONF *conf, const char *section, + const char *name); +long _CONF_get_number(const CONF *conf, const char *section, + const char *name); + +int _CONF_new_data(CONF *conf); +void _CONF_free_data(CONF *conf); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin64/include/openssl/conferr.h b/openSSL/lin64/include/openssl/conferr.h new file mode 100644 index 0000000..32b9229 --- /dev/null +++ b/openSSL/lin64/include/openssl/conferr.h @@ -0,0 +1,76 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CONFERR_H +# define HEADER_CONFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CONF_strings(void); + +/* + * CONF function codes. + */ +# define CONF_F_CONF_DUMP_FP 104 +# define CONF_F_CONF_LOAD 100 +# define CONF_F_CONF_LOAD_FP 103 +# define CONF_F_CONF_PARSE_LIST 119 +# define CONF_F_DEF_LOAD 120 +# define CONF_F_DEF_LOAD_BIO 121 +# define CONF_F_GET_NEXT_FILE 107 +# define CONF_F_MODULE_ADD 122 +# define CONF_F_MODULE_INIT 115 +# define CONF_F_MODULE_LOAD_DSO 117 +# define CONF_F_MODULE_RUN 118 +# define CONF_F_NCONF_DUMP_BIO 105 +# define CONF_F_NCONF_DUMP_FP 106 +# define CONF_F_NCONF_GET_NUMBER_E 112 +# define CONF_F_NCONF_GET_SECTION 108 +# define CONF_F_NCONF_GET_STRING 109 +# define CONF_F_NCONF_LOAD 113 +# define CONF_F_NCONF_LOAD_BIO 110 +# define CONF_F_NCONF_LOAD_FP 114 +# define CONF_F_NCONF_NEW 111 +# define CONF_F_PROCESS_INCLUDE 116 +# define CONF_F_SSL_MODULE_INIT 123 +# define CONF_F_STR_COPY 101 + +/* + * CONF reason codes. + */ +# define CONF_R_ERROR_LOADING_DSO 110 +# define CONF_R_LIST_CANNOT_BE_NULL 115 +# define CONF_R_MISSING_CLOSE_SQUARE_BRACKET 100 +# define CONF_R_MISSING_EQUAL_SIGN 101 +# define CONF_R_MISSING_INIT_FUNCTION 112 +# define CONF_R_MODULE_INITIALIZATION_ERROR 109 +# define CONF_R_NO_CLOSE_BRACE 102 +# define CONF_R_NO_CONF 105 +# define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106 +# define CONF_R_NO_SECTION 107 +# define CONF_R_NO_SUCH_FILE 114 +# define CONF_R_NO_VALUE 108 +# define CONF_R_NUMBER_TOO_LARGE 121 +# define CONF_R_RECURSIVE_DIRECTORY_INCLUDE 111 +# define CONF_R_SSL_COMMAND_SECTION_EMPTY 117 +# define CONF_R_SSL_COMMAND_SECTION_NOT_FOUND 118 +# define CONF_R_SSL_SECTION_EMPTY 119 +# define CONF_R_SSL_SECTION_NOT_FOUND 120 +# define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103 +# define CONF_R_UNKNOWN_MODULE_NAME 113 +# define CONF_R_VARIABLE_EXPANSION_TOO_LONG 116 +# define CONF_R_VARIABLE_HAS_NO_VALUE 104 + +#endif diff --git a/openSSL/lin64/include/openssl/crypto.h b/openSSL/lin64/include/openssl/crypto.h new file mode 100644 index 0000000..7d0b526 --- /dev/null +++ b/openSSL/lin64/include/openssl/crypto.h @@ -0,0 +1,445 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CRYPTO_H +# define HEADER_CRYPTO_H + +# include +# include + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif + +# include +# include +# include +# include +# include + +# ifdef CHARSET_EBCDIC +# include +# endif + +/* + * Resolve problems on some operating systems with symbol names that clash + * one way or another + */ +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSLeay OpenSSL_version_num +# define SSLeay_version OpenSSL_version +# define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER +# define SSLEAY_VERSION OPENSSL_VERSION +# define SSLEAY_CFLAGS OPENSSL_CFLAGS +# define SSLEAY_BUILT_ON OPENSSL_BUILT_ON +# define SSLEAY_PLATFORM OPENSSL_PLATFORM +# define SSLEAY_DIR OPENSSL_DIR + +/* + * Old type for allocating dynamic locks. No longer used. Use the new thread + * API instead. + */ +typedef struct { + int dummy; +} CRYPTO_dynlock; + +# endif /* OPENSSL_API_COMPAT */ + +typedef void CRYPTO_RWLOCK; + +CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); +int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock); +int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock); +int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); +void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); + +int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); + +/* + * The following can be used to detect memory leaks in the library. If + * used, it turns on malloc checking + */ +# define CRYPTO_MEM_CHECK_OFF 0x0 /* Control only */ +# define CRYPTO_MEM_CHECK_ON 0x1 /* Control and mode bit */ +# define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ +# define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ + +struct crypto_ex_data_st { + STACK_OF(void) *sk; +}; +DEFINE_STACK_OF(void) + +/* + * Per class, we have a STACK of function pointers. + */ +# define CRYPTO_EX_INDEX_SSL 0 +# define CRYPTO_EX_INDEX_SSL_CTX 1 +# define CRYPTO_EX_INDEX_SSL_SESSION 2 +# define CRYPTO_EX_INDEX_X509 3 +# define CRYPTO_EX_INDEX_X509_STORE 4 +# define CRYPTO_EX_INDEX_X509_STORE_CTX 5 +# define CRYPTO_EX_INDEX_DH 6 +# define CRYPTO_EX_INDEX_DSA 7 +# define CRYPTO_EX_INDEX_EC_KEY 8 +# define CRYPTO_EX_INDEX_RSA 9 +# define CRYPTO_EX_INDEX_ENGINE 10 +# define CRYPTO_EX_INDEX_UI 11 +# define CRYPTO_EX_INDEX_BIO 12 +# define CRYPTO_EX_INDEX_APP 13 +# define CRYPTO_EX_INDEX_UI_METHOD 14 +# define CRYPTO_EX_INDEX_DRBG 15 +# define CRYPTO_EX_INDEX__COUNT 16 + +/* No longer needed, so this is a no-op */ +#define OPENSSL_malloc_init() while(0) continue + +int CRYPTO_mem_ctrl(int mode); + +# define OPENSSL_malloc(num) \ + CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_zalloc(num) \ + CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_realloc(addr, num) \ + CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_realloc(addr, old_num, num) \ + CRYPTO_clear_realloc(addr, old_num, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_free(addr, num) \ + CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_free(addr) \ + CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_memdup(str, s) \ + CRYPTO_memdup((str), s, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strdup(str) \ + CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strndup(str, n) \ + CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_malloc(num) \ + CRYPTO_secure_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_zalloc(num) \ + CRYPTO_secure_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_free(addr) \ + CRYPTO_secure_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_clear_free(addr, num) \ + CRYPTO_secure_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_actual_size(ptr) \ + CRYPTO_secure_actual_size(ptr) + +size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); +size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); +size_t OPENSSL_strnlen(const char *str, size_t maxlen); +char *OPENSSL_buf2hexstr(const unsigned char *buffer, long len); +unsigned char *OPENSSL_hexstr2buf(const char *str, long *len); +int OPENSSL_hexchar2int(unsigned char c); + +# define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U<<(sizeof(int)*8-1))-1)/sizeof(type)) + +unsigned long OpenSSL_version_num(void); +const char *OpenSSL_version(int type); +# define OPENSSL_VERSION 0 +# define OPENSSL_CFLAGS 1 +# define OPENSSL_BUILT_ON 2 +# define OPENSSL_PLATFORM 3 +# define OPENSSL_DIR 4 +# define OPENSSL_ENGINES_DIR 5 + +int OPENSSL_issetugid(void); + +typedef void CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp); +__owur int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, + CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); +/* No longer use an index. */ +int CRYPTO_free_ex_index(int class_index, int idx); + +/* + * Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a + * given class (invokes whatever per-class callbacks are applicable) + */ +int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); +int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, + const CRYPTO_EX_DATA *from); + +void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); + +/* + * Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular + * index (relative to the class type involved) + */ +int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); +void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx); + +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * This function cleans up all "ex_data" state. It mustn't be called under + * potential race-conditions. + */ +# define CRYPTO_cleanup_all_ex_data() while(0) continue + +/* + * The old locking functions have been removed completely without compatibility + * macros. This is because the old functions either could not properly report + * errors, or the returned error values were not clearly documented. + * Replacing the locking functions with no-ops would cause race condition + * issues in the affected applications. It is far better for them to fail at + * compile time. + * On the other hand, the locking callbacks are no longer used. Consequently, + * the callback management functions can be safely replaced with no-op macros. + */ +# define CRYPTO_num_locks() (1) +# define CRYPTO_set_locking_callback(func) +# define CRYPTO_get_locking_callback() (NULL) +# define CRYPTO_set_add_lock_callback(func) +# define CRYPTO_get_add_lock_callback() (NULL) + +/* + * These defines where used in combination with the old locking callbacks, + * they are not called anymore, but old code that's not called might still + * use them. + */ +# define CRYPTO_LOCK 1 +# define CRYPTO_UNLOCK 2 +# define CRYPTO_READ 4 +# define CRYPTO_WRITE 8 + +/* This structure is no longer used */ +typedef struct crypto_threadid_st { + int dummy; +} CRYPTO_THREADID; +/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */ +# define CRYPTO_THREADID_set_numeric(id, val) +# define CRYPTO_THREADID_set_pointer(id, ptr) +# define CRYPTO_THREADID_set_callback(threadid_func) (0) +# define CRYPTO_THREADID_get_callback() (NULL) +# define CRYPTO_THREADID_current(id) +# define CRYPTO_THREADID_cmp(a, b) (-1) +# define CRYPTO_THREADID_cpy(dest, src) +# define CRYPTO_THREADID_hash(id) (0UL) + +# if OPENSSL_API_COMPAT < 0x10000000L +# define CRYPTO_set_id_callback(func) +# define CRYPTO_get_id_callback() (NULL) +# define CRYPTO_thread_id() (0UL) +# endif /* OPENSSL_API_COMPAT < 0x10000000L */ + +# define CRYPTO_set_dynlock_create_callback(dyn_create_function) +# define CRYPTO_set_dynlock_lock_callback(dyn_lock_function) +# define CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function) +# define CRYPTO_get_dynlock_create_callback() (NULL) +# define CRYPTO_get_dynlock_lock_callback() (NULL) +# define CRYPTO_get_dynlock_destroy_callback() (NULL) +# endif /* OPENSSL_API_COMPAT < 0x10100000L */ + +int CRYPTO_set_mem_functions( + void *(*m) (size_t, const char *, int), + void *(*r) (void *, size_t, const char *, int), + void (*f) (void *, const char *, int)); +int CRYPTO_set_mem_debug(int flag); +void CRYPTO_get_mem_functions( + void *(**m) (size_t, const char *, int), + void *(**r) (void *, size_t, const char *, int), + void (**f) (void *, const char *, int)); + +void *CRYPTO_malloc(size_t num, const char *file, int line); +void *CRYPTO_zalloc(size_t num, const char *file, int line); +void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +char *CRYPTO_strdup(const char *str, const char *file, int line); +char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +void CRYPTO_free(void *ptr, const char *file, int line); +void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); +void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); +void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, + const char *file, int line); + +int CRYPTO_secure_malloc_init(size_t sz, int minsize); +int CRYPTO_secure_malloc_done(void); +void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +void CRYPTO_secure_free(void *ptr, const char *file, int line); +void CRYPTO_secure_clear_free(void *ptr, size_t num, + const char *file, int line); +int CRYPTO_secure_allocated(const void *ptr); +int CRYPTO_secure_malloc_initialized(void); +size_t CRYPTO_secure_actual_size(void *ptr); +size_t CRYPTO_secure_used(void); + +void OPENSSL_cleanse(void *ptr, size_t len); + +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_mem_debug_push(info) \ + CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_mem_debug_pop() \ + CRYPTO_mem_debug_pop() +int CRYPTO_mem_debug_push(const char *info, const char *file, int line); +int CRYPTO_mem_debug_pop(void); +void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); + +/*- + * Debugging functions (enabled by CRYPTO_set_mem_debug(1)) + * The flag argument has the following significance: + * 0: called before the actual memory allocation has taken place + * 1: called after the actual memory allocation has taken place + */ +void CRYPTO_mem_debug_malloc(void *addr, size_t num, int flag, + const char *file, int line); +void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, size_t num, int flag, + const char *file, int line); +void CRYPTO_mem_debug_free(void *addr, int flag, + const char *file, int line); + +int CRYPTO_mem_leaks_cb(int (*cb) (const char *str, size_t len, void *u), + void *u); +# ifndef OPENSSL_NO_STDIO +int CRYPTO_mem_leaks_fp(FILE *); +# endif +int CRYPTO_mem_leaks(BIO *bio); +# endif + +/* die if we have to */ +ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line); +# if OPENSSL_API_COMPAT < 0x10100000L +# define OpenSSLDie(f,l,a) OPENSSL_die((a),(f),(l)) +# endif +# define OPENSSL_assert(e) \ + (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1)) + +int OPENSSL_isservice(void); + +int FIPS_mode(void); +int FIPS_mode_set(int r); + +void OPENSSL_init(void); +# ifdef OPENSSL_SYS_UNIX +void OPENSSL_fork_prepare(void); +void OPENSSL_fork_parent(void); +void OPENSSL_fork_child(void); +# endif + +struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result); +int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec); +int OPENSSL_gmtime_diff(int *pday, int *psec, + const struct tm *from, const struct tm *to); + +/* + * CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal. + * It takes an amount of time dependent on |len|, but independent of the + * contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements + * into a defined order as the return value when a != b is undefined, other + * than to be non-zero. + */ +int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len); + +/* Standard initialisation options */ +# define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L +# define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L +# define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L +# define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L +# define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0x00000010L +# define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0x00000020L +# define OPENSSL_INIT_LOAD_CONFIG 0x00000040L +# define OPENSSL_INIT_NO_LOAD_CONFIG 0x00000080L +# define OPENSSL_INIT_ASYNC 0x00000100L +# define OPENSSL_INIT_ENGINE_RDRAND 0x00000200L +# define OPENSSL_INIT_ENGINE_DYNAMIC 0x00000400L +# define OPENSSL_INIT_ENGINE_OPENSSL 0x00000800L +# define OPENSSL_INIT_ENGINE_CRYPTODEV 0x00001000L +# define OPENSSL_INIT_ENGINE_CAPI 0x00002000L +# define OPENSSL_INIT_ENGINE_PADLOCK 0x00004000L +# define OPENSSL_INIT_ENGINE_AFALG 0x00008000L +/* OPENSSL_INIT_ZLIB 0x00010000L */ +# define OPENSSL_INIT_ATFORK 0x00020000L +/* OPENSSL_INIT_BASE_ONLY 0x00040000L */ +# define OPENSSL_INIT_NO_ATEXIT 0x00080000L +/* OPENSSL_INIT flag range 0xfff00000 reserved for OPENSSL_init_ssl() */ +/* Max OPENSSL_INIT flag value is 0x80000000 */ + +/* openssl and dasync not counted as builtin */ +# define OPENSSL_INIT_ENGINE_ALL_BUILTIN \ + (OPENSSL_INIT_ENGINE_RDRAND | OPENSSL_INIT_ENGINE_DYNAMIC \ + | OPENSSL_INIT_ENGINE_CRYPTODEV | OPENSSL_INIT_ENGINE_CAPI | \ + OPENSSL_INIT_ENGINE_PADLOCK) + + +/* Library initialisation functions */ +void OPENSSL_cleanup(void); +int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); +int OPENSSL_atexit(void (*handler)(void)); +void OPENSSL_thread_stop(void); + +/* Low-level control of initialization */ +OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void); +# ifndef OPENSSL_NO_STDIO +int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings, + const char *config_filename); +void OPENSSL_INIT_set_config_file_flags(OPENSSL_INIT_SETTINGS *settings, + unsigned long flags); +int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings, + const char *config_appname); +# endif +void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings); + +# if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG) +# if defined(_WIN32) +# if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include in order to use this */ +typedef DWORD CRYPTO_THREAD_LOCAL; +typedef DWORD CRYPTO_THREAD_ID; + +typedef LONG CRYPTO_ONCE; +# define CRYPTO_ONCE_STATIC_INIT 0 +# endif +# else +# include +typedef pthread_once_t CRYPTO_ONCE; +typedef pthread_key_t CRYPTO_THREAD_LOCAL; +typedef pthread_t CRYPTO_THREAD_ID; + +# define CRYPTO_ONCE_STATIC_INIT PTHREAD_ONCE_INIT +# endif +# endif + +# if !defined(CRYPTO_ONCE_STATIC_INIT) +typedef unsigned int CRYPTO_ONCE; +typedef unsigned int CRYPTO_THREAD_LOCAL; +typedef unsigned int CRYPTO_THREAD_ID; +# define CRYPTO_ONCE_STATIC_INIT 0 +# endif + +int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void (*init)(void)); + +int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *)); +void *CRYPTO_THREAD_get_local(CRYPTO_THREAD_LOCAL *key); +int CRYPTO_THREAD_set_local(CRYPTO_THREAD_LOCAL *key, void *val); +int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key); + +CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void); +int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/cryptoerr.h b/openSSL/lin64/include/openssl/cryptoerr.h new file mode 100644 index 0000000..3db5a4e --- /dev/null +++ b/openSSL/lin64/include/openssl/cryptoerr.h @@ -0,0 +1,57 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CRYPTOERR_H +# define HEADER_CRYPTOERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CRYPTO_strings(void); + +/* + * CRYPTO function codes. + */ +# define CRYPTO_F_CMAC_CTX_NEW 120 +# define CRYPTO_F_CRYPTO_DUP_EX_DATA 110 +# define CRYPTO_F_CRYPTO_FREE_EX_DATA 111 +# define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100 +# define CRYPTO_F_CRYPTO_MEMDUP 115 +# define CRYPTO_F_CRYPTO_NEW_EX_DATA 112 +# define CRYPTO_F_CRYPTO_OCB128_COPY_CTX 121 +# define CRYPTO_F_CRYPTO_OCB128_INIT 122 +# define CRYPTO_F_CRYPTO_SET_EX_DATA 102 +# define CRYPTO_F_FIPS_MODE_SET 109 +# define CRYPTO_F_GET_AND_LOCK 113 +# define CRYPTO_F_OPENSSL_ATEXIT 114 +# define CRYPTO_F_OPENSSL_BUF2HEXSTR 117 +# define CRYPTO_F_OPENSSL_FOPEN 119 +# define CRYPTO_F_OPENSSL_HEXSTR2BUF 118 +# define CRYPTO_F_OPENSSL_INIT_CRYPTO 116 +# define CRYPTO_F_OPENSSL_LH_NEW 126 +# define CRYPTO_F_OPENSSL_SK_DEEP_COPY 127 +# define CRYPTO_F_OPENSSL_SK_DUP 128 +# define CRYPTO_F_PKEY_HMAC_INIT 123 +# define CRYPTO_F_PKEY_POLY1305_INIT 124 +# define CRYPTO_F_PKEY_SIPHASH_INIT 125 +# define CRYPTO_F_SK_RESERVE 129 + +/* + * CRYPTO reason codes. + */ +# define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED 101 +# define CRYPTO_R_ILLEGAL_HEX_DIGIT 102 +# define CRYPTO_R_ODD_NUMBER_OF_DIGITS 103 + +#endif diff --git a/openSSL/lin64/include/openssl/ct.h b/openSSL/lin64/include/openssl/ct.h new file mode 100644 index 0000000..ebdba34 --- /dev/null +++ b/openSSL/lin64/include/openssl/ct.h @@ -0,0 +1,474 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CT_H +# define HEADER_CT_H + +# include + +# ifndef OPENSSL_NO_CT +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + +/* Minimum RSA key size, from RFC6962 */ +# define SCT_MIN_RSA_BITS 2048 + +/* All hashes are SHA256 in v1 of Certificate Transparency */ +# define CT_V1_HASHLEN SHA256_DIGEST_LENGTH + +typedef enum { + CT_LOG_ENTRY_TYPE_NOT_SET = -1, + CT_LOG_ENTRY_TYPE_X509 = 0, + CT_LOG_ENTRY_TYPE_PRECERT = 1 +} ct_log_entry_type_t; + +typedef enum { + SCT_VERSION_NOT_SET = -1, + SCT_VERSION_V1 = 0 +} sct_version_t; + +typedef enum { + SCT_SOURCE_UNKNOWN, + SCT_SOURCE_TLS_EXTENSION, + SCT_SOURCE_X509V3_EXTENSION, + SCT_SOURCE_OCSP_STAPLED_RESPONSE +} sct_source_t; + +typedef enum { + SCT_VALIDATION_STATUS_NOT_SET, + SCT_VALIDATION_STATUS_UNKNOWN_LOG, + SCT_VALIDATION_STATUS_VALID, + SCT_VALIDATION_STATUS_INVALID, + SCT_VALIDATION_STATUS_UNVERIFIED, + SCT_VALIDATION_STATUS_UNKNOWN_VERSION +} sct_validation_status_t; + +DEFINE_STACK_OF(SCT) +DEFINE_STACK_OF(CTLOG) + +/****************************************** + * CT policy evaluation context functions * + ******************************************/ + +/* + * Creates a new, empty policy evaluation context. + * The caller is responsible for calling CT_POLICY_EVAL_CTX_free when finished + * with the CT_POLICY_EVAL_CTX. + */ +CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new(void); + +/* Deletes a policy evaluation context and anything it owns. */ +void CT_POLICY_EVAL_CTX_free(CT_POLICY_EVAL_CTX *ctx); + +/* Gets the peer certificate that the SCTs are for */ +X509* CT_POLICY_EVAL_CTX_get0_cert(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the certificate associated with the received SCTs. + * Increments the reference count of cert. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert); + +/* Gets the issuer of the aforementioned certificate */ +X509* CT_POLICY_EVAL_CTX_get0_issuer(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the issuer of the certificate associated with the received SCTs. + * Increments the reference count of issuer. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer); + +/* Gets the CT logs that are trusted sources of SCTs */ +const CTLOG_STORE *CT_POLICY_EVAL_CTX_get0_log_store(const CT_POLICY_EVAL_CTX *ctx); + +/* Sets the log store that is in use. It must outlive the CT_POLICY_EVAL_CTX. */ +void CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE(CT_POLICY_EVAL_CTX *ctx, + CTLOG_STORE *log_store); + +/* + * Gets the time, in milliseconds since the Unix epoch, that will be used as the + * current time when checking whether an SCT was issued in the future. + * Such SCTs will fail validation, as required by RFC6962. + */ +uint64_t CT_POLICY_EVAL_CTX_get_time(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the time to evaluate SCTs against, in milliseconds since the Unix epoch. + * If an SCT's timestamp is after this time, it will be interpreted as having + * been issued in the future. RFC6962 states that "TLS clients MUST reject SCTs + * whose timestamp is in the future", so an SCT will not validate in this case. + */ +void CT_POLICY_EVAL_CTX_set_time(CT_POLICY_EVAL_CTX *ctx, uint64_t time_in_ms); + +/***************** + * SCT functions * + *****************/ + +/* + * Creates a new, blank SCT. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new(void); + +/* + * Creates a new SCT from some base64-encoded strings. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new_from_base64(unsigned char version, + const char *logid_base64, + ct_log_entry_type_t entry_type, + uint64_t timestamp, + const char *extensions_base64, + const char *signature_base64); + +/* + * Frees the SCT and the underlying data structures. + */ +void SCT_free(SCT *sct); + +/* + * Free a stack of SCTs, and the underlying SCTs themselves. + * Intended to be compatible with X509V3_EXT_FREE. + */ +void SCT_LIST_free(STACK_OF(SCT) *a); + +/* + * Returns the version of the SCT. + */ +sct_version_t SCT_get_version(const SCT *sct); + +/* + * Set the version of an SCT. + * Returns 1 on success, 0 if the version is unrecognized. + */ +__owur int SCT_set_version(SCT *sct, sct_version_t version); + +/* + * Returns the log entry type of the SCT. + */ +ct_log_entry_type_t SCT_get_log_entry_type(const SCT *sct); + +/* + * Set the log entry type of an SCT. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_log_entry_type(SCT *sct, ct_log_entry_type_t entry_type); + +/* + * Gets the ID of the log that an SCT came from. + * Ownership of the log ID remains with the SCT. + * Returns the length of the log ID. + */ +size_t SCT_get0_log_id(const SCT *sct, unsigned char **log_id); + +/* + * Set the log ID of an SCT to point directly to the *log_id specified. + * The SCT takes ownership of the specified pointer. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set0_log_id(SCT *sct, unsigned char *log_id, size_t log_id_len); + +/* + * Set the log ID of an SCT. + * This makes a copy of the log_id. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_log_id(SCT *sct, const unsigned char *log_id, + size_t log_id_len); + +/* + * Returns the timestamp for the SCT (epoch time in milliseconds). + */ +uint64_t SCT_get_timestamp(const SCT *sct); + +/* + * Set the timestamp of an SCT (epoch time in milliseconds). + */ +void SCT_set_timestamp(SCT *sct, uint64_t timestamp); + +/* + * Return the NID for the signature used by the SCT. + * For CT v1, this will be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256 (or NID_undef if incorrect/unset). + */ +int SCT_get_signature_nid(const SCT *sct); + +/* + * Set the signature type of an SCT + * For CT v1, this should be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_signature_nid(SCT *sct, int nid); + +/* + * Set *ext to point to the extension data for the SCT. ext must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_extensions(const SCT *sct, unsigned char **ext); + +/* + * Set the extensions of an SCT to point directly to the *ext specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_extensions(SCT *sct, unsigned char *ext, size_t ext_len); + +/* + * Set the extensions of an SCT. + * This takes a copy of the ext. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_extensions(SCT *sct, const unsigned char *ext, + size_t ext_len); + +/* + * Set *sig to point to the signature for the SCT. sig must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_signature(const SCT *sct, unsigned char **sig); + +/* + * Set the signature of an SCT to point directly to the *sig specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_signature(SCT *sct, unsigned char *sig, size_t sig_len); + +/* + * Set the signature of an SCT to be a copy of the *sig specified. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_signature(SCT *sct, const unsigned char *sig, + size_t sig_len); + +/* + * The origin of this SCT, e.g. TLS extension, OCSP response, etc. + */ +sct_source_t SCT_get_source(const SCT *sct); + +/* + * Set the origin of this SCT, e.g. TLS extension, OCSP response, etc. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_source(SCT *sct, sct_source_t source); + +/* + * Returns a text string describing the validation status of |sct|. + */ +const char *SCT_validation_status_string(const SCT *sct); + +/* + * Pretty-prints an |sct| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * If |logs| is not NULL, it will be used to lookup the CT log that the SCT came + * from, so that the log name can be printed. + */ +void SCT_print(const SCT *sct, BIO *out, int indent, const CTLOG_STORE *logs); + +/* + * Pretty-prints an |sct_list| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * SCTs will be delimited by |separator|. + * If |logs| is not NULL, it will be used to lookup the CT log that each SCT + * came from, so that the log names can be printed. + */ +void SCT_LIST_print(const STACK_OF(SCT) *sct_list, BIO *out, int indent, + const char *separator, const CTLOG_STORE *logs); + +/* + * Gets the last result of validating this SCT. + * If it has not been validated yet, returns SCT_VALIDATION_STATUS_NOT_SET. + */ +sct_validation_status_t SCT_get_validation_status(const SCT *sct); + +/* + * Validates the given SCT with the provided context. + * Sets the "validation_status" field of the SCT. + * Returns 1 if the SCT is valid and the signature verifies. + * Returns 0 if the SCT is invalid or could not be verified. + * Returns -1 if an error occurs. + */ +__owur int SCT_validate(SCT *sct, const CT_POLICY_EVAL_CTX *ctx); + +/* + * Validates the given list of SCTs with the provided context. + * Sets the "validation_status" field of each SCT. + * Returns 1 if there are no invalid SCTs and all signatures verify. + * Returns 0 if at least one SCT is invalid or could not be verified. + * Returns a negative integer if an error occurs. + */ +__owur int SCT_LIST_validate(const STACK_OF(SCT) *scts, + CT_POLICY_EVAL_CTX *ctx); + + +/********************************* + * SCT parsing and serialisation * + *********************************/ + +/* + * Serialize (to TLS format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just return the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2o_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Convert TLS format SCT list to a stack of SCTs. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *o2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + size_t len); + +/* + * Serialize (to DER format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just returns the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2d_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Parses an SCT list in DER format and returns it. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *d2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + long len); + +/* + * Serialize (to TLS format) an |sct| and write it to |out|. + * If |out| is null, no SCT will be output but the length will still be returned. + * If |out| points to a null pointer, a string will be allocated to hold the + * TLS-format SCT. It is the responsibility of the caller to free it. + * If |out| points to an allocated string, the TLS-format SCT will be written + * to it. + * The length of the SCT in TLS format will be returned. + */ +__owur int i2o_SCT(const SCT *sct, unsigned char **out); + +/* + * Parses an SCT in TLS format and returns it. + * If |psct| is not null, it will end up pointing to the parsed SCT. If it + * already points to a non-null pointer, the pointer will be free'd. + * |in| should be a pointer to a string containing the TLS-format SCT. + * |in| will be advanced to the end of the SCT if parsing succeeds. + * |len| should be the length of the SCT in |in|. + * Returns NULL if an error occurs. + * If the SCT is an unsupported version, only the SCT's 'sct' and 'sct_len' + * fields will be populated (with |in| and |len| respectively). + */ +SCT *o2i_SCT(SCT **psct, const unsigned char **in, size_t len); + +/******************** + * CT log functions * + ********************/ + +/* + * Creates a new CT log instance with the given |public_key| and |name|. + * Takes ownership of |public_key| but copies |name|. + * Returns NULL if malloc fails or if |public_key| cannot be converted to DER. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name); + +/* + * Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER + * in |pkey_base64|. The |name| is a string to help users identify this log. + * Returns 1 on success, 0 on failure. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +int CTLOG_new_from_base64(CTLOG ** ct_log, + const char *pkey_base64, const char *name); + +/* + * Deletes a CT log instance and its fields. + */ +void CTLOG_free(CTLOG *log); + +/* Gets the name of the CT log */ +const char *CTLOG_get0_name(const CTLOG *log); +/* Gets the ID of the CT log */ +void CTLOG_get0_log_id(const CTLOG *log, const uint8_t **log_id, + size_t *log_id_len); +/* Gets the public key of the CT log */ +EVP_PKEY *CTLOG_get0_public_key(const CTLOG *log); + +/************************** + * CT log store functions * + **************************/ + +/* + * Creates a new CT log store. + * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. + */ +CTLOG_STORE *CTLOG_STORE_new(void); + +/* + * Deletes a CT log store and all of the CT log instances held within. + */ +void CTLOG_STORE_free(CTLOG_STORE *store); + +/* + * Finds a CT log in the store based on its log ID. + * Returns the CT log, or NULL if no match is found. + */ +const CTLOG *CTLOG_STORE_get0_log_by_id(const CTLOG_STORE *store, + const uint8_t *log_id, + size_t log_id_len); + +/* + * Loads a CT log list into a |store| from a |file|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_file(CTLOG_STORE *store, const char *file); + +/* + * Loads the default CT log list into a |store|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_default_file(CTLOG_STORE *store); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin64/include/openssl/cterr.h b/openSSL/lin64/include/openssl/cterr.h new file mode 100644 index 0000000..feb7bc5 --- /dev/null +++ b/openSSL/lin64/include/openssl/cterr.h @@ -0,0 +1,80 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CTERR_H +# define HEADER_CTERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_CT + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CT_strings(void); + +/* + * CT function codes. + */ +# define CT_F_CTLOG_NEW 117 +# define CT_F_CTLOG_NEW_FROM_BASE64 118 +# define CT_F_CTLOG_NEW_FROM_CONF 119 +# define CT_F_CTLOG_STORE_LOAD_CTX_NEW 122 +# define CT_F_CTLOG_STORE_LOAD_FILE 123 +# define CT_F_CTLOG_STORE_LOAD_LOG 130 +# define CT_F_CTLOG_STORE_NEW 131 +# define CT_F_CT_BASE64_DECODE 124 +# define CT_F_CT_POLICY_EVAL_CTX_NEW 133 +# define CT_F_CT_V1_LOG_ID_FROM_PKEY 125 +# define CT_F_I2O_SCT 107 +# define CT_F_I2O_SCT_LIST 108 +# define CT_F_I2O_SCT_SIGNATURE 109 +# define CT_F_O2I_SCT 110 +# define CT_F_O2I_SCT_LIST 111 +# define CT_F_O2I_SCT_SIGNATURE 112 +# define CT_F_SCT_CTX_NEW 126 +# define CT_F_SCT_CTX_VERIFY 128 +# define CT_F_SCT_NEW 100 +# define CT_F_SCT_NEW_FROM_BASE64 127 +# define CT_F_SCT_SET0_LOG_ID 101 +# define CT_F_SCT_SET1_EXTENSIONS 114 +# define CT_F_SCT_SET1_LOG_ID 115 +# define CT_F_SCT_SET1_SIGNATURE 116 +# define CT_F_SCT_SET_LOG_ENTRY_TYPE 102 +# define CT_F_SCT_SET_SIGNATURE_NID 103 +# define CT_F_SCT_SET_VERSION 104 + +/* + * CT reason codes. + */ +# define CT_R_BASE64_DECODE_ERROR 108 +# define CT_R_INVALID_LOG_ID_LENGTH 100 +# define CT_R_LOG_CONF_INVALID 109 +# define CT_R_LOG_CONF_INVALID_KEY 110 +# define CT_R_LOG_CONF_MISSING_DESCRIPTION 111 +# define CT_R_LOG_CONF_MISSING_KEY 112 +# define CT_R_LOG_KEY_INVALID 113 +# define CT_R_SCT_FUTURE_TIMESTAMP 116 +# define CT_R_SCT_INVALID 104 +# define CT_R_SCT_INVALID_SIGNATURE 107 +# define CT_R_SCT_LIST_INVALID 105 +# define CT_R_SCT_LOG_ID_MISMATCH 114 +# define CT_R_SCT_NOT_SET 106 +# define CT_R_SCT_UNSUPPORTED_VERSION 115 +# define CT_R_UNRECOGNIZED_SIGNATURE_NID 101 +# define CT_R_UNSUPPORTED_ENTRY_TYPE 102 +# define CT_R_UNSUPPORTED_VERSION 103 + +# endif +#endif diff --git a/openSSL/lin64/include/openssl/des.h b/openSSL/lin64/include/openssl/des.h new file mode 100644 index 0000000..be4abbd --- /dev/null +++ b/openSSL/lin64/include/openssl/des.h @@ -0,0 +1,174 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DES_H +# define HEADER_DES_H + +# include + +# ifndef OPENSSL_NO_DES +# ifdef __cplusplus +extern "C" { +# endif +# include + +typedef unsigned int DES_LONG; + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +typedef unsigned char DES_cblock[8]; +typedef /* const */ unsigned char const_DES_cblock[8]; +/* + * With "const", gcc 2.8.1 on Solaris thinks that DES_cblock * and + * const_DES_cblock * are incompatible pointer types. + */ + +typedef struct DES_ks { + union { + DES_cblock cblock; + /* + * make sure things are correct size on machines with 8 byte longs + */ + DES_LONG deslong[2]; + } ks[16]; +} DES_key_schedule; + +# define DES_KEY_SZ (sizeof(DES_cblock)) +# define DES_SCHEDULE_SZ (sizeof(DES_key_schedule)) + +# define DES_ENCRYPT 1 +# define DES_DECRYPT 0 + +# define DES_CBC_MODE 0 +# define DES_PCBC_MODE 1 + +# define DES_ecb2_encrypt(i,o,k1,k2,e) \ + DES_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e)) + +# define DES_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \ + DES_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e)) + +# define DES_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \ + DES_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e)) + +# define DES_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \ + DES_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n)) + +OPENSSL_DECLARE_GLOBAL(int, DES_check_key); /* defaults to false */ +# define DES_check_key OPENSSL_GLOBAL_REF(DES_check_key) + +const char *DES_options(void); +void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output, + DES_key_schedule *ks1, DES_key_schedule *ks2, + DES_key_schedule *ks3, int enc); +DES_LONG DES_cbc_cksum(const unsigned char *input, DES_cblock *output, + long length, DES_key_schedule *schedule, + const_DES_cblock *ivec); +/* DES_cbc_encrypt does not update the IV! Use DES_ncbc_encrypt instead. */ +void DES_cbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_ncbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_xcbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, const_DES_cblock *inw, + const_DES_cblock *outw, int enc); +void DES_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output, + DES_key_schedule *ks, int enc); + +/* + * This is the DES encryption function that gets called by just about every + * other DES routine in the library. You should not use this function except + * to implement 'modes' of DES. I say this because the functions that call + * this routine do the conversion from 'char *' to long, and this needs to be + * done to make sure 'non-aligned' memory access do not occur. The + * characters are loaded 'little endian'. Data is a pointer to 2 unsigned + * long's and ks is the DES_key_schedule to use. enc, is non zero specifies + * encryption, zero if decryption. + */ +void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc); + +/* + * This functions is the same as DES_encrypt1() except that the DES initial + * permutation (IP) and final permutation (FP) have been left out. As for + * DES_encrypt1(), you should not use this function. It is used by the + * routines in the library that implement triple DES. IP() DES_encrypt2() + * DES_encrypt2() DES_encrypt2() FP() is the same as DES_encrypt1() + * DES_encrypt1() DES_encrypt1() except faster :-). + */ +void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc); + +void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3); +void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3); +void DES_ede3_cbc_encrypt(const unsigned char *input, unsigned char *output, + long length, + DES_key_schedule *ks1, DES_key_schedule *ks2, + DES_key_schedule *ks3, DES_cblock *ivec, int enc); +void DES_ede3_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3, + DES_cblock *ivec, int *num, int enc); +void DES_ede3_cfb_encrypt(const unsigned char *in, unsigned char *out, + int numbits, long length, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3, + DES_cblock *ivec, int enc); +void DES_ede3_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3, + DES_cblock *ivec, int *num); +char *DES_fcrypt(const char *buf, const char *salt, char *ret); +char *DES_crypt(const char *buf, const char *salt); +void DES_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits, + long length, DES_key_schedule *schedule, + DES_cblock *ivec); +void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +DES_LONG DES_quad_cksum(const unsigned char *input, DES_cblock output[], + long length, int out_count, DES_cblock *seed); +int DES_random_key(DES_cblock *ret); +void DES_set_odd_parity(DES_cblock *key); +int DES_check_key_parity(const_DES_cblock *key); +int DES_is_weak_key(const_DES_cblock *key); +/* + * DES_set_key (= set_key = DES_key_sched = key_sched) calls + * DES_set_key_checked if global variable DES_check_key is set, + * DES_set_key_unchecked otherwise. + */ +int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule); +int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule); +int DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule); +void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule); +void DES_string_to_key(const char *str, DES_cblock *key); +void DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2); +void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int *num, int enc); +void DES_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int *num); + +# define DES_fixup_key_parity DES_set_odd_parity + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/dh.h b/openSSL/lin64/include/openssl/dh.h new file mode 100644 index 0000000..3527540 --- /dev/null +++ b/openSSL/lin64/include/openssl/dh.h @@ -0,0 +1,340 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DH_H +# define HEADER_DH_H + +# include + +# ifndef OPENSSL_NO_DH +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_DH_MAX_MODULUS_BITS +# define OPENSSL_DH_MAX_MODULUS_BITS 10000 +# endif + +# define OPENSSL_DH_FIPS_MIN_MODULUS_BITS 1024 + +# define DH_FLAG_CACHE_MONT_P 0x01 + +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DH_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +/* + * If this flag is set the DH method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define DH_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define DH_FLAG_NON_FIPS_ALLOW 0x0400 + +/* Already defined in ossl_typ.h */ +/* typedef struct dh_st DH; */ +/* typedef struct dh_method DH_METHOD; */ + +DECLARE_ASN1_ITEM(DHparams) + +# define DH_GENERATOR_2 2 +/* #define DH_GENERATOR_3 3 */ +# define DH_GENERATOR_5 5 + +/* DH_check error codes */ +# define DH_CHECK_P_NOT_PRIME 0x01 +# define DH_CHECK_P_NOT_SAFE_PRIME 0x02 +# define DH_UNABLE_TO_CHECK_GENERATOR 0x04 +# define DH_NOT_SUITABLE_GENERATOR 0x08 +# define DH_CHECK_Q_NOT_PRIME 0x10 +# define DH_CHECK_INVALID_Q_VALUE 0x20 +# define DH_CHECK_INVALID_J_VALUE 0x40 + +/* DH_check_pub_key error codes */ +# define DH_CHECK_PUBKEY_TOO_SMALL 0x01 +# define DH_CHECK_PUBKEY_TOO_LARGE 0x02 +# define DH_CHECK_PUBKEY_INVALID 0x04 + +/* + * primes p where (p-1)/2 is prime too are called "safe"; we define this for + * backward compatibility: + */ +# define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME + +# define d2i_DHparams_fp(fp,x) \ + (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHparams, \ + (fp), \ + (unsigned char **)(x)) +# define i2d_DHparams_fp(fp,x) \ + ASN1_i2d_fp(i2d_DHparams,(fp), (unsigned char *)(x)) +# define d2i_DHparams_bio(bp,x) \ + ASN1_d2i_bio_of(DH, DH_new, d2i_DHparams, bp, x) +# define i2d_DHparams_bio(bp,x) \ + ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x) + +# define d2i_DHxparams_fp(fp,x) \ + (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHxparams, \ + (fp), \ + (unsigned char **)(x)) +# define i2d_DHxparams_fp(fp,x) \ + ASN1_i2d_fp(i2d_DHxparams,(fp), (unsigned char *)(x)) +# define d2i_DHxparams_bio(bp,x) \ + ASN1_d2i_bio_of(DH, DH_new, d2i_DHxparams, bp, x) +# define i2d_DHxparams_bio(bp,x) \ + ASN1_i2d_bio_of_const(DH, i2d_DHxparams, bp, x) + +DH *DHparams_dup(DH *); + +const DH_METHOD *DH_OpenSSL(void); + +void DH_set_default_method(const DH_METHOD *meth); +const DH_METHOD *DH_get_default_method(void); +int DH_set_method(DH *dh, const DH_METHOD *meth); +DH *DH_new_method(ENGINE *engine); + +DH *DH_new(void); +void DH_free(DH *dh); +int DH_up_ref(DH *dh); +int DH_bits(const DH *dh); +int DH_size(const DH *dh); +int DH_security_bits(const DH *dh); +#define DH_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DH, l, p, newf, dupf, freef) +int DH_set_ex_data(DH *d, int idx, void *arg); +void *DH_get_ex_data(DH *d, int idx); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(DH *DH_generate_parameters(int prime_len, int generator, + void (*callback) (int, int, + void *), + void *cb_arg)) + +/* New version */ +int DH_generate_parameters_ex(DH *dh, int prime_len, int generator, + BN_GENCB *cb); + +int DH_check_params_ex(const DH *dh); +int DH_check_ex(const DH *dh); +int DH_check_pub_key_ex(const DH *dh, const BIGNUM *pub_key); +int DH_check_params(const DH *dh, int *ret); +int DH_check(const DH *dh, int *codes); +int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes); +int DH_generate_key(DH *dh); +int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh); +DH *d2i_DHparams(DH **a, const unsigned char **pp, long length); +int i2d_DHparams(const DH *a, unsigned char **pp); +DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length); +int i2d_DHxparams(const DH *a, unsigned char **pp); +# ifndef OPENSSL_NO_STDIO +int DHparams_print_fp(FILE *fp, const DH *x); +# endif +int DHparams_print(BIO *bp, const DH *x); + +/* RFC 5114 parameters */ +DH *DH_get_1024_160(void); +DH *DH_get_2048_224(void); +DH *DH_get_2048_256(void); + +/* Named parameters, currently RFC7919 */ +DH *DH_new_by_nid(int nid); +int DH_get_nid(const DH *dh); + +# ifndef OPENSSL_NO_CMS +/* RFC2631 KDF */ +int DH_KDF_X9_42(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + ASN1_OBJECT *key_oid, + const unsigned char *ukm, size_t ukmlen, const EVP_MD *md); +# endif + +void DH_get0_pqg(const DH *dh, + const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); +int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g); +void DH_get0_key(const DH *dh, + const BIGNUM **pub_key, const BIGNUM **priv_key); +int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key); +const BIGNUM *DH_get0_p(const DH *dh); +const BIGNUM *DH_get0_q(const DH *dh); +const BIGNUM *DH_get0_g(const DH *dh); +const BIGNUM *DH_get0_priv_key(const DH *dh); +const BIGNUM *DH_get0_pub_key(const DH *dh); +void DH_clear_flags(DH *dh, int flags); +int DH_test_flags(const DH *dh, int flags); +void DH_set_flags(DH *dh, int flags); +ENGINE *DH_get0_engine(DH *d); +long DH_get_length(const DH *dh); +int DH_set_length(DH *dh, long length); + +DH_METHOD *DH_meth_new(const char *name, int flags); +void DH_meth_free(DH_METHOD *dhm); +DH_METHOD *DH_meth_dup(const DH_METHOD *dhm); +const char *DH_meth_get0_name(const DH_METHOD *dhm); +int DH_meth_set1_name(DH_METHOD *dhm, const char *name); +int DH_meth_get_flags(const DH_METHOD *dhm); +int DH_meth_set_flags(DH_METHOD *dhm, int flags); +void *DH_meth_get0_app_data(const DH_METHOD *dhm); +int DH_meth_set0_app_data(DH_METHOD *dhm, void *app_data); +int (*DH_meth_get_generate_key(const DH_METHOD *dhm)) (DH *); +int DH_meth_set_generate_key(DH_METHOD *dhm, int (*generate_key) (DH *)); +int (*DH_meth_get_compute_key(const DH_METHOD *dhm)) + (unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_meth_set_compute_key(DH_METHOD *dhm, + int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh)); +int (*DH_meth_get_bn_mod_exp(const DH_METHOD *dhm)) + (const DH *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + BN_CTX *, BN_MONT_CTX *); +int DH_meth_set_bn_mod_exp(DH_METHOD *dhm, + int (*bn_mod_exp) (const DH *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, BN_CTX *, BN_MONT_CTX *)); +int (*DH_meth_get_init(const DH_METHOD *dhm))(DH *); +int DH_meth_set_init(DH_METHOD *dhm, int (*init)(DH *)); +int (*DH_meth_get_finish(const DH_METHOD *dhm)) (DH *); +int DH_meth_set_finish(DH_METHOD *dhm, int (*finish) (DH *)); +int (*DH_meth_get_generate_params(const DH_METHOD *dhm)) + (DH *, int, int, BN_GENCB *); +int DH_meth_set_generate_params(DH_METHOD *dhm, + int (*generate_params) (DH *, int, int, BN_GENCB *)); + + +# define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_subprime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_type(ctx, typ) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_TYPE, typ, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_generator(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dhx_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, \ + EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_DH_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_dh_pad(ctx, pad) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_PAD, pad, NULL) + +# define EVP_PKEY_CTX_set_dh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set0_dh_kdf_oid(ctx, oid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OID, 0, (void *)(oid)) + +# define EVP_PKEY_CTX_get0_dh_kdf_oid(ctx, poid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OID, 0, (void *)(poid)) + +# define EVP_PKEY_CTX_set_dh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_dh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_dh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN, 0, (void *)(plen)) + +# define EVP_PKEY_CTX_set0_dh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_UKM, plen, (void *)(p)) + +# define EVP_PKEY_CTX_get0_dh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_UKM, 0, (void *)(p)) + +# define EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DH_RFC5114 (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_DH_PARAMGEN_TYPE (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_DH_KDF_TYPE (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 13) +# define EVP_PKEY_CTRL_GET_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 14) +# define EVP_PKEY_CTRL_DH_NID (EVP_PKEY_ALG_CTRL + 15) +# define EVP_PKEY_CTRL_DH_PAD (EVP_PKEY_ALG_CTRL + 16) + +/* KDF types */ +# define EVP_PKEY_DH_KDF_NONE 1 +# ifndef OPENSSL_NO_CMS +# define EVP_PKEY_DH_KDF_X9_42 2 +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin64/include/openssl/dherr.h b/openSSL/lin64/include/openssl/dherr.h new file mode 100644 index 0000000..916b3be --- /dev/null +++ b/openSSL/lin64/include/openssl/dherr.h @@ -0,0 +1,88 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DHERR_H +# define HEADER_DHERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_DH + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_DH_strings(void); + +/* + * DH function codes. + */ +# define DH_F_COMPUTE_KEY 102 +# define DH_F_DHPARAMS_PRINT_FP 101 +# define DH_F_DH_BUILTIN_GENPARAMS 106 +# define DH_F_DH_CHECK_EX 121 +# define DH_F_DH_CHECK_PARAMS_EX 122 +# define DH_F_DH_CHECK_PUB_KEY_EX 123 +# define DH_F_DH_CMS_DECRYPT 114 +# define DH_F_DH_CMS_SET_PEERKEY 115 +# define DH_F_DH_CMS_SET_SHARED_INFO 116 +# define DH_F_DH_METH_DUP 117 +# define DH_F_DH_METH_NEW 118 +# define DH_F_DH_METH_SET1_NAME 119 +# define DH_F_DH_NEW_BY_NID 104 +# define DH_F_DH_NEW_METHOD 105 +# define DH_F_DH_PARAM_DECODE 107 +# define DH_F_DH_PKEY_PUBLIC_CHECK 124 +# define DH_F_DH_PRIV_DECODE 110 +# define DH_F_DH_PRIV_ENCODE 111 +# define DH_F_DH_PUB_DECODE 108 +# define DH_F_DH_PUB_ENCODE 109 +# define DH_F_DO_DH_PRINT 100 +# define DH_F_GENERATE_KEY 103 +# define DH_F_PKEY_DH_CTRL_STR 120 +# define DH_F_PKEY_DH_DERIVE 112 +# define DH_F_PKEY_DH_INIT 125 +# define DH_F_PKEY_DH_KEYGEN 113 + +/* + * DH reason codes. + */ +# define DH_R_BAD_GENERATOR 101 +# define DH_R_BN_DECODE_ERROR 109 +# define DH_R_BN_ERROR 106 +# define DH_R_CHECK_INVALID_J_VALUE 115 +# define DH_R_CHECK_INVALID_Q_VALUE 116 +# define DH_R_CHECK_PUBKEY_INVALID 122 +# define DH_R_CHECK_PUBKEY_TOO_LARGE 123 +# define DH_R_CHECK_PUBKEY_TOO_SMALL 124 +# define DH_R_CHECK_P_NOT_PRIME 117 +# define DH_R_CHECK_P_NOT_SAFE_PRIME 118 +# define DH_R_CHECK_Q_NOT_PRIME 119 +# define DH_R_DECODE_ERROR 104 +# define DH_R_INVALID_PARAMETER_NAME 110 +# define DH_R_INVALID_PARAMETER_NID 114 +# define DH_R_INVALID_PUBKEY 102 +# define DH_R_KDF_PARAMETER_ERROR 112 +# define DH_R_KEYS_NOT_SET 108 +# define DH_R_MISSING_PUBKEY 125 +# define DH_R_MODULUS_TOO_LARGE 103 +# define DH_R_NOT_SUITABLE_GENERATOR 120 +# define DH_R_NO_PARAMETERS_SET 107 +# define DH_R_NO_PRIVATE_VALUE 100 +# define DH_R_PARAMETER_ENCODING_ERROR 105 +# define DH_R_PEER_KEY_ERROR 111 +# define DH_R_SHARED_INFO_ERROR 113 +# define DH_R_UNABLE_TO_CHECK_GENERATOR 121 + +# endif +#endif diff --git a/openSSL/lin64/include/openssl/dsa.h b/openSSL/lin64/include/openssl/dsa.h new file mode 100644 index 0000000..6d8a18a --- /dev/null +++ b/openSSL/lin64/include/openssl/dsa.h @@ -0,0 +1,244 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DSA_H +# define HEADER_DSA_H + +# include + +# ifndef OPENSSL_NO_DSA +# ifdef __cplusplus +extern "C" { +# endif +# include +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include + +# ifndef OPENSSL_DSA_MAX_MODULUS_BITS +# define OPENSSL_DSA_MAX_MODULUS_BITS 10000 +# endif + +# define OPENSSL_DSA_FIPS_MIN_MODULUS_BITS 1024 + +# define DSA_FLAG_CACHE_MONT_P 0x01 +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DSA_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +/* + * If this flag is set the DSA method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define DSA_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define DSA_FLAG_NON_FIPS_ALLOW 0x0400 +# define DSA_FLAG_FIPS_CHECKED 0x0800 + +/* Already defined in ossl_typ.h */ +/* typedef struct dsa_st DSA; */ +/* typedef struct dsa_method DSA_METHOD; */ + +typedef struct DSA_SIG_st DSA_SIG; + +# define d2i_DSAparams_fp(fp,x) (DSA *)ASN1_d2i_fp((char *(*)())DSA_new, \ + (char *(*)())d2i_DSAparams,(fp),(unsigned char **)(x)) +# define i2d_DSAparams_fp(fp,x) ASN1_i2d_fp(i2d_DSAparams,(fp), \ + (unsigned char *)(x)) +# define d2i_DSAparams_bio(bp,x) ASN1_d2i_bio_of(DSA,DSA_new,d2i_DSAparams,bp,x) +# define i2d_DSAparams_bio(bp,x) ASN1_i2d_bio_of_const(DSA,i2d_DSAparams,bp,x) + +DSA *DSAparams_dup(DSA *x); +DSA_SIG *DSA_SIG_new(void); +void DSA_SIG_free(DSA_SIG *a); +int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp); +DSA_SIG *d2i_DSA_SIG(DSA_SIG **v, const unsigned char **pp, long length); +void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); +int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); +int DSA_do_verify(const unsigned char *dgst, int dgst_len, + DSA_SIG *sig, DSA *dsa); + +const DSA_METHOD *DSA_OpenSSL(void); + +void DSA_set_default_method(const DSA_METHOD *); +const DSA_METHOD *DSA_get_default_method(void); +int DSA_set_method(DSA *dsa, const DSA_METHOD *); +const DSA_METHOD *DSA_get_method(DSA *d); + +DSA *DSA_new(void); +DSA *DSA_new_method(ENGINE *engine); +void DSA_free(DSA *r); +/* "up" the DSA object's reference count */ +int DSA_up_ref(DSA *r); +int DSA_size(const DSA *); +int DSA_bits(const DSA *d); +int DSA_security_bits(const DSA *d); + /* next 4 return -1 on error */ +DEPRECATEDIN_1_2_0(int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)) +int DSA_sign(int type, const unsigned char *dgst, int dlen, + unsigned char *sig, unsigned int *siglen, DSA *dsa); +int DSA_verify(int type, const unsigned char *dgst, int dgst_len, + const unsigned char *sigbuf, int siglen, DSA *dsa); +#define DSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DSA, l, p, newf, dupf, freef) +int DSA_set_ex_data(DSA *d, int idx, void *arg); +void *DSA_get_ex_data(DSA *d, int idx); + +DSA *d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length); +DSA *d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length); +DSA *d2i_DSAparams(DSA **a, const unsigned char **pp, long length); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(DSA *DSA_generate_parameters(int bits, + unsigned char *seed, + int seed_len, + int *counter_ret, + unsigned long *h_ret, void + (*callback) (int, int, + void *), + void *cb_arg)) + +/* New version */ +int DSA_generate_parameters_ex(DSA *dsa, int bits, + const unsigned char *seed, int seed_len, + int *counter_ret, unsigned long *h_ret, + BN_GENCB *cb); + +int DSA_generate_key(DSA *a); +int i2d_DSAPublicKey(const DSA *a, unsigned char **pp); +int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp); +int i2d_DSAparams(const DSA *a, unsigned char **pp); + +int DSAparams_print(BIO *bp, const DSA *x); +int DSA_print(BIO *bp, const DSA *x, int off); +# ifndef OPENSSL_NO_STDIO +int DSAparams_print_fp(FILE *fp, const DSA *x); +int DSA_print_fp(FILE *bp, const DSA *x, int off); +# endif + +# define DSS_prime_checks 64 +/* + * Primality test according to FIPS PUB 186-4, Appendix C.3. Since we only + * have one value here we set the number of checks to 64 which is the 128 bit + * security level that is the highest level and valid for creating a 3072 bit + * DSA key. + */ +# define DSA_is_prime(n, callback, cb_arg) \ + BN_is_prime(n, DSS_prime_checks, callback, NULL, cb_arg) + +# ifndef OPENSSL_NO_DH +/* + * Convert DSA structure (key or just parameters) into DH structure (be + * careful to avoid small subgroup attacks when using this!) + */ +DH *DSA_dup_DH(const DSA *r); +# endif + +# define EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx, nbits) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_BITS, nbits, NULL) +# define EVP_PKEY_CTX_set_dsa_paramgen_q_bits(ctx, qbits) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS, qbits, NULL) +# define EVP_PKEY_CTX_set_dsa_paramgen_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTRL_DSA_PARAMGEN_BITS (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_MD (EVP_PKEY_ALG_CTRL + 3) + +void DSA_get0_pqg(const DSA *d, + const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); +int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g); +void DSA_get0_key(const DSA *d, + const BIGNUM **pub_key, const BIGNUM **priv_key); +int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key); +const BIGNUM *DSA_get0_p(const DSA *d); +const BIGNUM *DSA_get0_q(const DSA *d); +const BIGNUM *DSA_get0_g(const DSA *d); +const BIGNUM *DSA_get0_pub_key(const DSA *d); +const BIGNUM *DSA_get0_priv_key(const DSA *d); +void DSA_clear_flags(DSA *d, int flags); +int DSA_test_flags(const DSA *d, int flags); +void DSA_set_flags(DSA *d, int flags); +ENGINE *DSA_get0_engine(DSA *d); + +DSA_METHOD *DSA_meth_new(const char *name, int flags); +void DSA_meth_free(DSA_METHOD *dsam); +DSA_METHOD *DSA_meth_dup(const DSA_METHOD *dsam); +const char *DSA_meth_get0_name(const DSA_METHOD *dsam); +int DSA_meth_set1_name(DSA_METHOD *dsam, const char *name); +int DSA_meth_get_flags(const DSA_METHOD *dsam); +int DSA_meth_set_flags(DSA_METHOD *dsam, int flags); +void *DSA_meth_get0_app_data(const DSA_METHOD *dsam); +int DSA_meth_set0_app_data(DSA_METHOD *dsam, void *app_data); +DSA_SIG *(*DSA_meth_get_sign(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA *); +int DSA_meth_set_sign(DSA_METHOD *dsam, + DSA_SIG *(*sign) (const unsigned char *, int, DSA *)); +int (*DSA_meth_get_sign_setup(const DSA_METHOD *dsam)) + (DSA *, BN_CTX *, BIGNUM **, BIGNUM **); +int DSA_meth_set_sign_setup(DSA_METHOD *dsam, + int (*sign_setup) (DSA *, BN_CTX *, BIGNUM **, BIGNUM **)); +int (*DSA_meth_get_verify(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA_SIG *, DSA *); +int DSA_meth_set_verify(DSA_METHOD *dsam, + int (*verify) (const unsigned char *, int, DSA_SIG *, DSA *)); +int (*DSA_meth_get_mod_exp(const DSA_METHOD *dsam)) + (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *); +int DSA_meth_set_mod_exp(DSA_METHOD *dsam, + int (*mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *, + BN_MONT_CTX *)); +int (*DSA_meth_get_bn_mod_exp(const DSA_METHOD *dsam)) + (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + BN_CTX *, BN_MONT_CTX *); +int DSA_meth_set_bn_mod_exp(DSA_METHOD *dsam, + int (*bn_mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, BN_CTX *, BN_MONT_CTX *)); +int (*DSA_meth_get_init(const DSA_METHOD *dsam))(DSA *); +int DSA_meth_set_init(DSA_METHOD *dsam, int (*init)(DSA *)); +int (*DSA_meth_get_finish(const DSA_METHOD *dsam)) (DSA *); +int DSA_meth_set_finish(DSA_METHOD *dsam, int (*finish) (DSA *)); +int (*DSA_meth_get_paramgen(const DSA_METHOD *dsam)) + (DSA *, int, const unsigned char *, int, int *, unsigned long *, + BN_GENCB *); +int DSA_meth_set_paramgen(DSA_METHOD *dsam, + int (*paramgen) (DSA *, int, const unsigned char *, int, int *, + unsigned long *, BN_GENCB *)); +int (*DSA_meth_get_keygen(const DSA_METHOD *dsam)) (DSA *); +int DSA_meth_set_keygen(DSA_METHOD *dsam, int (*keygen) (DSA *)); + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin64/include/openssl/dsaerr.h b/openSSL/lin64/include/openssl/dsaerr.h new file mode 100644 index 0000000..495a1ac --- /dev/null +++ b/openSSL/lin64/include/openssl/dsaerr.h @@ -0,0 +1,72 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DSAERR_H +# define HEADER_DSAERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_DSA + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_DSA_strings(void); + +/* + * DSA function codes. + */ +# define DSA_F_DSAPARAMS_PRINT 100 +# define DSA_F_DSAPARAMS_PRINT_FP 101 +# define DSA_F_DSA_BUILTIN_PARAMGEN 125 +# define DSA_F_DSA_BUILTIN_PARAMGEN2 126 +# define DSA_F_DSA_DO_SIGN 112 +# define DSA_F_DSA_DO_VERIFY 113 +# define DSA_F_DSA_METH_DUP 127 +# define DSA_F_DSA_METH_NEW 128 +# define DSA_F_DSA_METH_SET1_NAME 129 +# define DSA_F_DSA_NEW_METHOD 103 +# define DSA_F_DSA_PARAM_DECODE 119 +# define DSA_F_DSA_PRINT_FP 105 +# define DSA_F_DSA_PRIV_DECODE 115 +# define DSA_F_DSA_PRIV_ENCODE 116 +# define DSA_F_DSA_PUB_DECODE 117 +# define DSA_F_DSA_PUB_ENCODE 118 +# define DSA_F_DSA_SIGN 106 +# define DSA_F_DSA_SIGN_SETUP 107 +# define DSA_F_DSA_SIG_NEW 102 +# define DSA_F_OLD_DSA_PRIV_DECODE 122 +# define DSA_F_PKEY_DSA_CTRL 120 +# define DSA_F_PKEY_DSA_CTRL_STR 104 +# define DSA_F_PKEY_DSA_KEYGEN 121 + +/* + * DSA reason codes. + */ +# define DSA_R_BAD_Q_VALUE 102 +# define DSA_R_BN_DECODE_ERROR 108 +# define DSA_R_BN_ERROR 109 +# define DSA_R_DECODE_ERROR 104 +# define DSA_R_INVALID_DIGEST_TYPE 106 +# define DSA_R_INVALID_PARAMETERS 112 +# define DSA_R_MISSING_PARAMETERS 101 +# define DSA_R_MISSING_PRIVATE_KEY 111 +# define DSA_R_MODULUS_TOO_LARGE 103 +# define DSA_R_NO_PARAMETERS_SET 107 +# define DSA_R_PARAMETER_ENCODING_ERROR 105 +# define DSA_R_Q_NOT_PRIME 113 +# define DSA_R_SEED_LEN_SMALL 110 + +# endif +#endif diff --git a/openSSL/lin64/include/openssl/dtls1.h b/openSSL/lin64/include/openssl/dtls1.h new file mode 100644 index 0000000..d55ca9c --- /dev/null +++ b/openSSL/lin64/include/openssl/dtls1.h @@ -0,0 +1,55 @@ +/* + * Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DTLS1_H +# define HEADER_DTLS1_H + +#ifdef __cplusplus +extern "C" { +#endif + +# define DTLS1_VERSION 0xFEFF +# define DTLS1_2_VERSION 0xFEFD +# define DTLS_MIN_VERSION DTLS1_VERSION +# define DTLS_MAX_VERSION DTLS1_2_VERSION +# define DTLS1_VERSION_MAJOR 0xFE + +# define DTLS1_BAD_VER 0x0100 + +/* Special value for method supporting multiple versions */ +# define DTLS_ANY_VERSION 0x1FFFF + +/* lengths of messages */ +/* + * Actually the max cookie length in DTLS is 255. But we can't change this now + * due to compatibility concerns. + */ +# define DTLS1_COOKIE_LENGTH 256 + +# define DTLS1_RT_HEADER_LENGTH 13 + +# define DTLS1_HM_HEADER_LENGTH 12 + +# define DTLS1_HM_BAD_FRAGMENT -2 +# define DTLS1_HM_FRAGMENT_RETRY -3 + +# define DTLS1_CCS_HEADER_LENGTH 1 + +# define DTLS1_AL_HEADER_LENGTH 2 + +/* Timeout multipliers */ +# define DTLS1_TMO_READ_COUNT 2 +# define DTLS1_TMO_WRITE_COUNT 2 + +# define DTLS1_TMO_ALERT_COUNT 12 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin64/include/openssl/e_os2.h b/openSSL/lin64/include/openssl/e_os2.h new file mode 100644 index 0000000..5c88e51 --- /dev/null +++ b/openSSL/lin64/include/openssl/e_os2.h @@ -0,0 +1,301 @@ +/* + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_E_OS2_H +# define HEADER_E_OS2_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * Detect operating systems. This probably needs completing. + * The result is that at least one OPENSSL_SYS_os macro should be defined. + * However, if none is defined, Unix is assumed. + **/ + +# define OPENSSL_SYS_UNIX + +/* --------------------- Microsoft operating systems ---------------------- */ + +/* + * Note that MSDOS actually denotes 32-bit environments running on top of + * MS-DOS, such as DJGPP one. + */ +# if defined(OPENSSL_SYS_MSDOS) +# undef OPENSSL_SYS_UNIX +# endif + +/* + * For 32 bit environment, there seems to be the CygWin environment and then + * all the others that try to do the same thing Microsoft does... + */ +/* + * UEFI lives here because it might be built with a Microsoft toolchain and + * we need to avoid the false positive match on Windows. + */ +# if defined(OPENSSL_SYS_UEFI) +# undef OPENSSL_SYS_UNIX +# elif defined(OPENSSL_SYS_UWIN) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32_UWIN +# else +# if defined(__CYGWIN__) || defined(OPENSSL_SYS_CYGWIN) +# define OPENSSL_SYS_WIN32_CYGWIN +# else +# if defined(_WIN32) || defined(OPENSSL_SYS_WIN32) +# undef OPENSSL_SYS_UNIX +# if !defined(OPENSSL_SYS_WIN32) +# define OPENSSL_SYS_WIN32 +# endif +# endif +# if defined(_WIN64) || defined(OPENSSL_SYS_WIN64) +# undef OPENSSL_SYS_UNIX +# if !defined(OPENSSL_SYS_WIN64) +# define OPENSSL_SYS_WIN64 +# endif +# endif +# if defined(OPENSSL_SYS_WINNT) +# undef OPENSSL_SYS_UNIX +# endif +# if defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# endif +# endif +# endif + +/* Anything that tries to look like Microsoft is "Windows" */ +# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN64) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_SYS_MSDOS +# define OPENSSL_SYS_MSDOS +# endif +# endif + +/* + * DLL settings. This part is a bit tough, because it's up to the + * application implementor how he or she will link the application, so it + * requires some macro to be used. + */ +# ifdef OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_OPT_WINDLL +# if defined(_WINDLL) /* This is used when building OpenSSL to + * indicate that DLL linkage should be used */ +# define OPENSSL_OPT_WINDLL +# endif +# endif +# endif + +/* ------------------------------- OpenVMS -------------------------------- */ +# if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYS_VMS) +# if !defined(OPENSSL_SYS_VMS) +# undef OPENSSL_SYS_UNIX +# endif +# define OPENSSL_SYS_VMS +# if defined(__DECC) +# define OPENSSL_SYS_VMS_DECC +# elif defined(__DECCXX) +# define OPENSSL_SYS_VMS_DECC +# define OPENSSL_SYS_VMS_DECCXX +# else +# define OPENSSL_SYS_VMS_NODECC +# endif +# endif + +/* -------------------------------- Unix ---------------------------------- */ +# ifdef OPENSSL_SYS_UNIX +# if defined(linux) || defined(__linux__) && !defined(OPENSSL_SYS_LINUX) +# define OPENSSL_SYS_LINUX +# endif +# if defined(_AIX) && !defined(OPENSSL_SYS_AIX) +# define OPENSSL_SYS_AIX +# endif +# endif + +/* -------------------------------- VOS ----------------------------------- */ +# if defined(__VOS__) && !defined(OPENSSL_SYS_VOS) +# define OPENSSL_SYS_VOS +# ifdef __HPPA__ +# define OPENSSL_SYS_VOS_HPPA +# endif +# ifdef __IA32__ +# define OPENSSL_SYS_VOS_IA32 +# endif +# endif + +/** + * That's it for OS-specific stuff + *****************************************************************************/ + +/* Specials for I/O an exit */ +# ifdef OPENSSL_SYS_MSDOS +# define OPENSSL_UNISTD_IO +# define OPENSSL_DECLARE_EXIT extern void exit(int); +# else +# define OPENSSL_UNISTD_IO OPENSSL_UNISTD +# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */ +# endif + +/*- + * OPENSSL_EXTERN is normally used to declare a symbol with possible extra + * attributes to handle its presence in a shared library. + * OPENSSL_EXPORT is used to define a symbol with extra possible attributes + * to make it visible in a shared library. + * Care needs to be taken when a header file is used both to declare and + * define symbols. Basically, for any library that exports some global + * variables, the following code must be present in the header file that + * declares them, before OPENSSL_EXTERN is used: + * + * #ifdef SOME_BUILD_FLAG_MACRO + * # undef OPENSSL_EXTERN + * # define OPENSSL_EXTERN OPENSSL_EXPORT + * #endif + * + * The default is to have OPENSSL_EXPORT and OPENSSL_EXTERN + * have some generally sensible values. + */ + +# if defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) +# define OPENSSL_EXPORT extern __declspec(dllexport) +# define OPENSSL_EXTERN extern __declspec(dllimport) +# else +# define OPENSSL_EXPORT extern +# define OPENSSL_EXTERN extern +# endif + +/*- + * Macros to allow global variables to be reached through function calls when + * required (if a shared library version requires it, for example. + * The way it's done allows definitions like this: + * + * // in foobar.c + * OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0) + * // in foobar.h + * OPENSSL_DECLARE_GLOBAL(int,foobar); + * #define foobar OPENSSL_GLOBAL_REF(foobar) + */ +# ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) \ + type *_shadow_##name(void) \ + { static type _hide_##name=value; return &_hide_##name; } +# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void) +# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name())) +# else +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) type _shadow_##name=value; +# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name +# define OPENSSL_GLOBAL_REF(name) _shadow_##name +# endif + +# ifdef _WIN32 +# ifdef _WIN64 +# define ossl_ssize_t __int64 +# define OSSL_SSIZE_MAX _I64_MAX +# else +# define ossl_ssize_t int +# define OSSL_SSIZE_MAX INT_MAX +# endif +# endif + +# if defined(OPENSSL_SYS_UEFI) && !defined(ossl_ssize_t) +# define ossl_ssize_t INTN +# define OSSL_SSIZE_MAX MAX_INTN +# endif + +# ifndef ossl_ssize_t +# define ossl_ssize_t ssize_t +# if defined(SSIZE_MAX) +# define OSSL_SSIZE_MAX SSIZE_MAX +# elif defined(_POSIX_SSIZE_MAX) +# define OSSL_SSIZE_MAX _POSIX_SSIZE_MAX +# else +# define OSSL_SSIZE_MAX ((ssize_t)(SIZE_MAX>>1)) +# endif +# endif + +# ifdef DEBUG_UNUSED +# define __owur __attribute__((__warn_unused_result__)) +# else +# define __owur +# endif + +/* Standard integer types */ +# if defined(OPENSSL_SYS_UEFI) +typedef INT8 int8_t; +typedef UINT8 uint8_t; +typedef INT16 int16_t; +typedef UINT16 uint16_t; +typedef INT32 int32_t; +typedef UINT32 uint32_t; +typedef INT64 int64_t; +typedef UINT64 uint64_t; +# elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + defined(__osf__) || defined(__sgi) || defined(__hpux) || \ + defined(OPENSSL_SYS_VMS) || defined (__OpenBSD__) +# include +# elif defined(_MSC_VER) && _MSC_VER<1600 +/* + * minimally required typdefs for systems not supporting inttypes.h or + * stdint.h: currently just older VC++ + */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; +typedef unsigned short uint16_t; +typedef int int32_t; +typedef unsigned int uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +# else +# include +# endif + +/* ossl_inline: portable inline definition usable in public headers */ +# if !defined(inline) && !defined(__cplusplus) +# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L + /* just use inline */ +# define ossl_inline inline +# elif defined(__GNUC__) && __GNUC__>=2 +# define ossl_inline __inline__ +# elif defined(_MSC_VER) + /* + * Visual Studio: inline is available in C++ only, however + * __inline is available for C, see + * http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx + */ +# define ossl_inline __inline +# else +# define ossl_inline +# endif +# else +# define ossl_inline inline +# endif + +# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && \ + !defined(__cplusplus) +# define ossl_noreturn _Noreturn +# elif defined(__GNUC__) && __GNUC__ >= 2 +# define ossl_noreturn __attribute__((noreturn)) +# else +# define ossl_noreturn +# endif + +/* ossl_unused: portable unused attribute for use in public headers */ +# if defined(__GNUC__) +# define ossl_unused __attribute__((unused)) +# else +# define ossl_unused +# endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin64/include/openssl/ebcdic.h b/openSSL/lin64/include/openssl/ebcdic.h new file mode 100644 index 0000000..aa01285 --- /dev/null +++ b/openSSL/lin64/include/openssl/ebcdic.h @@ -0,0 +1,33 @@ +/* + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EBCDIC_H +# define HEADER_EBCDIC_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Avoid name clashes with other applications */ +# define os_toascii _openssl_os_toascii +# define os_toebcdic _openssl_os_toebcdic +# define ebcdic2ascii _openssl_ebcdic2ascii +# define ascii2ebcdic _openssl_ascii2ebcdic + +extern const unsigned char os_toascii[256]; +extern const unsigned char os_toebcdic[256]; +void *ebcdic2ascii(void *dest, const void *srce, size_t count); +void *ascii2ebcdic(void *dest, const void *srce, size_t count); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin64/include/openssl/ec.h b/openSSL/lin64/include/openssl/ec.h new file mode 100644 index 0000000..24baf53 --- /dev/null +++ b/openSSL/lin64/include/openssl/ec.h @@ -0,0 +1,1484 @@ +/* + * Copyright 2002-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EC_H +# define HEADER_EC_H + +# include + +# ifndef OPENSSL_NO_EC +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_ECC_MAX_FIELD_BITS +# define OPENSSL_ECC_MAX_FIELD_BITS 661 +# endif + +/** Enum for the point conversion form as defined in X9.62 (ECDSA) + * for the encoding of a elliptic curve point (x,y) */ +typedef enum { + /** the point is encoded as z||x, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_COMPRESSED = 2, + /** the point is encoded as z||x||y, where z is the octet 0x04 */ + POINT_CONVERSION_UNCOMPRESSED = 4, + /** the point is encoded as z||x||y, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_HYBRID = 6 +} point_conversion_form_t; + +typedef struct ec_method_st EC_METHOD; +typedef struct ec_group_st EC_GROUP; +typedef struct ec_point_st EC_POINT; +typedef struct ecpk_parameters_st ECPKPARAMETERS; +typedef struct ec_parameters_st ECPARAMETERS; + +/********************************************************************/ +/* EC_METHODs for curves over GF(p) */ +/********************************************************************/ + +/** Returns the basic GFp ec methods which provides the basis for the + * optimized methods. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_simple_method(void); + +/** Returns GFp methods using montgomery multiplication. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_mont_method(void); + +/** Returns GFp methods using optimized methods for NIST recommended curves + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nist_method(void); + +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +/** Returns 64-bit optimized methods for nistp224 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp224_method(void); + +/** Returns 64-bit optimized methods for nistp256 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp256_method(void); + +/** Returns 64-bit optimized methods for nistp521 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp521_method(void); +# endif + +# ifndef OPENSSL_NO_EC2M +/********************************************************************/ +/* EC_METHOD for curves over GF(2^m) */ +/********************************************************************/ + +/** Returns the basic GF2m ec method + * \return EC_METHOD object + */ +const EC_METHOD *EC_GF2m_simple_method(void); + +# endif + +/********************************************************************/ +/* EC_GROUP functions */ +/********************************************************************/ + +/** Creates a new EC_GROUP object + * \param meth EC_METHOD to use + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); + +/** Frees a EC_GROUP object + * \param group EC_GROUP object to be freed. + */ +void EC_GROUP_free(EC_GROUP *group); + +/** Clears and frees a EC_GROUP object + * \param group EC_GROUP object to be cleared and freed. + */ +void EC_GROUP_clear_free(EC_GROUP *group); + +/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. + * \param dst destination EC_GROUP object + * \param src source EC_GROUP object + * \return 1 on success and 0 if an error occurred. + */ +int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); + +/** Creates a new EC_GROUP object and copies the copies the content + * form src to the newly created EC_KEY object + * \param src source EC_GROUP object + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); + +/** Returns the EC_METHOD of the EC_GROUP object. + * \param group EC_GROUP object + * \return EC_METHOD used in this EC_GROUP object. + */ +const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); + +/** Returns the field type of the EC_METHOD. + * \param meth EC_METHOD object + * \return NID of the underlying field type OID. + */ +int EC_METHOD_get_field_type(const EC_METHOD *meth); + +/** Sets the generator and its order/cofactor of a EC_GROUP object. + * \param group EC_GROUP object + * \param generator EC_POINT object with the generator. + * \param order the order of the group generated by the generator. + * \param cofactor the index of the sub-group generated by the generator + * in the group of all points on the elliptic curve. + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, + const BIGNUM *order, const BIGNUM *cofactor); + +/** Returns the generator of a EC_GROUP object. + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). + */ +const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); + +/** Returns the montgomery data for order(Generator) + * \param group EC_GROUP object + * \return the currently used montgomery data (possibly NULL). +*/ +BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); + +/** Gets the order of a EC_GROUP + * \param group EC_GROUP object + * \param order BIGNUM to which the order is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); + +/** Gets the order of an EC_GROUP + * \param group EC_GROUP object + * \return the group order + */ +const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group); + +/** Gets the number of bits of the order of an EC_GROUP + * \param group EC_GROUP object + * \return number of bits of group order. + */ +int EC_GROUP_order_bits(const EC_GROUP *group); + +/** Gets the cofactor of a EC_GROUP + * \param group EC_GROUP object + * \param cofactor BIGNUM to which the cofactor is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, + BN_CTX *ctx); + +/** Gets the cofactor of an EC_GROUP + * \param group EC_GROUP object + * \return the group cofactor + */ +const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group); + +/** Sets the name of a EC_GROUP object + * \param group EC_GROUP object + * \param nid NID of the curve name OID + */ +void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); + +/** Returns the curve name of a EC_GROUP object + * \param group EC_GROUP object + * \return NID of the curve name OID or 0 if not set. + */ +int EC_GROUP_get_curve_name(const EC_GROUP *group); + +void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); +int EC_GROUP_get_asn1_flag(const EC_GROUP *group); + +void EC_GROUP_set_point_conversion_form(EC_GROUP *group, + point_conversion_form_t form); +point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); + +unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); +size_t EC_GROUP_get_seed_len(const EC_GROUP *); +size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); + +/** Sets the parameters of a ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameters of the ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +/** Sets the parameters of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, + const BIGNUM *a, const BIGNUM *b, + BN_CTX *ctx)) + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx)) + +# ifndef OPENSSL_NO_EC2M +/** Sets the parameter of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, + const BIGNUM *a, const BIGNUM *b, + BN_CTX *ctx)) + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx)) +# endif +/** Returns the number of bits needed to represent a field element + * \param group EC_GROUP object + * \return number of bits needed to represent a field element + */ +int EC_GROUP_get_degree(const EC_GROUP *group); + +/** Checks whether the parameter in the EC_GROUP define a valid ec group + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if group is a valid ec group and 0 otherwise + */ +int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); + +/** Checks whether the discriminant of the elliptic curve is zero or not + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if the discriminant is not zero and 0 otherwise + */ +int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); + +/** Compares two EC_GROUP objects + * \param a first EC_GROUP object + * \param b second EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 0 if the groups are equal, 1 if not, or -1 on error + */ +int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); + +/* + * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after + * choosing an appropriate EC_METHOD + */ + +/** Creates a new EC_GROUP object with the specified parameters defined + * over GFp (defined by the equation y^2 = x^3 + a*x + b) + * \param p BIGNUM with the prime number + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# ifndef OPENSSL_NO_EC2M +/** Creates a new EC_GROUP object with the specified parameters defined + * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b) + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# endif + +/** Creates a EC_GROUP object with a curve specified by a NID + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name(int nid); + +/** Creates a new EC_GROUP object from an ECPARAMETERS object + * \param params pointer to the ECPARAMETERS object + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params); + +/** Creates an ECPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPARAMETERS object or NULL + * \return pointer to the new ECPARAMETERS object or NULL + * if an error occurred. + */ +ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, + ECPARAMETERS *params); + +/** Creates a new EC_GROUP object from an ECPKPARAMETERS object + * \param params pointer to an existing ECPKPARAMETERS object, or NULL + * \return newly created EC_GROUP object with specified curve, or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params); + +/** Creates an ECPKPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPKPARAMETERS object or NULL + * \return pointer to the new ECPKPARAMETERS object or NULL + * if an error occurred. + */ +ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group, + ECPKPARAMETERS *params); + +/********************************************************************/ +/* handling of internal curves */ +/********************************************************************/ + +typedef struct { + int nid; + const char *comment; +} EC_builtin_curve; + +/* + * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all + * available curves or zero if a error occurred. In case r is not zero, + * nitems EC_builtin_curve structures are filled with the data of the first + * nitems internal groups + */ +size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); + +const char *EC_curve_nid2nist(int nid); +int EC_curve_nist2nid(const char *name); + +/********************************************************************/ +/* EC_POINT functions */ +/********************************************************************/ + +/** Creates a new EC_POINT object for the specified EC_GROUP + * \param group EC_GROUP the underlying EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_new(const EC_GROUP *group); + +/** Frees a EC_POINT object + * \param point EC_POINT object to be freed + */ +void EC_POINT_free(EC_POINT *point); + +/** Clears and frees a EC_POINT object + * \param point EC_POINT object to be cleared and freed + */ +void EC_POINT_clear_free(EC_POINT *point); + +/** Copies EC_POINT object + * \param dst destination EC_POINT object + * \param src source EC_POINT object + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); + +/** Creates a new EC_POINT object and copies the content of the supplied + * EC_POINT + * \param src source EC_POINT object + * \param group underlying the EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); + +/** Returns the EC_METHOD used in EC_POINT object + * \param point EC_POINT object + * \return the EC_METHOD used + */ +const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); + +/** Sets a point to infinity (neutral element) + * \param group underlying EC_GROUP object + * \param point EC_POINT to set to infinity + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); + +/** Sets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param z BIGNUM with the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, const BIGNUM *x, + const BIGNUM *y, const BIGNUM *z, + BN_CTX *ctx); + +/** Gets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param z BIGNUM for the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BIGNUM *z, + BN_CTX *ctx); + +/** Sets the affine coordinates of an EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + const BIGNUM *y, + BN_CTX *ctx)) + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, + BIGNUM *x, + BIGNUM *y, + BN_CTX *ctx)) + +/** Sets the x9.62 compressed coordinates of a EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, + BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + int y_bit, + BN_CTX *ctx)) +# ifndef OPENSSL_NO_EC2M +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + const BIGNUM *y, + BN_CTX *ctx)) + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, + const EC_POINT *p, + BIGNUM *x, + BIGNUM *y, + BN_CTX *ctx)) + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + int y_bit, + BN_CTX *ctx)) +# endif +/** Encodes a EC_POINT object to a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param form point conversion form + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, + point_conversion_form_t form, + unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Decodes a EC_POINT from a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, + const unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Encodes an EC_POINT object to an allocated octet string + * \param group underlying EC_GROUP object + * \param point EC_POINT object + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2buf(const EC_GROUP *group, const EC_POINT *point, + point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/* other interfaces to point2oct/oct2point: */ +BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BIGNUM *, BN_CTX *); +EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, + EC_POINT *, BN_CTX *); +char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BN_CTX *); +EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, + EC_POINT *, BN_CTX *); + +/********************************************************************/ +/* functions for doing EC_POINT arithmetic */ +/********************************************************************/ + +/** Computes the sum of two EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = a + b) + * \param a EC_POINT object with the first summand + * \param b EC_POINT object with the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + const EC_POINT *b, BN_CTX *ctx); + +/** Computes the double of a EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = 2 * a) + * \param a EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + BN_CTX *ctx); + +/** Computes the inverse of a EC_POINT + * \param group underlying EC_GROUP object + * \param a EC_POINT object to be inverted (it's used for the result as well) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); + +/** Checks whether the point is the neutral element of the group + * \param group the underlying EC_GROUP object + * \param p EC_POINT object + * \return 1 if the point is the neutral element and 0 otherwise + */ +int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); + +/** Checks whether the point is on the curve + * \param group underlying EC_GROUP object + * \param point EC_POINT object to check + * \param ctx BN_CTX object (optional) + * \return 1 if the point is on the curve, 0 if not, or -1 on error + */ +int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, + BN_CTX *ctx); + +/** Compares two EC_POINTs + * \param group underlying EC_GROUP object + * \param a first EC_POINT object + * \param b second EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 if the points are not equal, 0 if they are, or -1 on error + */ +int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, + BN_CTX *ctx); + +int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); +int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, + EC_POINT *points[], BN_CTX *ctx); + +/** Computes r = generator * n + sum_{i=0}^{num-1} p[i] * m[i] + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param num number further summands + * \param p array of size num of EC_POINT objects + * \param m array of size num of BIGNUM objects + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + size_t num, const EC_POINT *p[], const BIGNUM *m[], + BN_CTX *ctx); + +/** Computes r = generator * n + q * m + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param q EC_POINT object with the first factor of the second summand + * \param m BIGNUM with the second factor of the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); + +/** Stores multiples of generator for faster point multiplication + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); + +/** Reports whether a precomputation has been done + * \param group EC_GROUP object + * \return 1 if a pre-computation has been done and 0 otherwise + */ +int EC_GROUP_have_precompute_mult(const EC_GROUP *group); + +/********************************************************************/ +/* ASN1 stuff */ +/********************************************************************/ + +DECLARE_ASN1_ITEM(ECPKPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPKPARAMETERS) +DECLARE_ASN1_ITEM(ECPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPARAMETERS) + +/* + * EC_GROUP_get_basis_type() returns the NID of the basis type used to + * represent the field elements + */ +int EC_GROUP_get_basis_type(const EC_GROUP *); +# ifndef OPENSSL_NO_EC2M +int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); +int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, + unsigned int *k2, unsigned int *k3); +# endif + +# define OPENSSL_EC_EXPLICIT_CURVE 0x000 +# define OPENSSL_EC_NAMED_CURVE 0x001 + +EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); +int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); + +# define d2i_ECPKParameters_bio(bp,x) \ + ASN1_d2i_bio_of(EC_GROUP, NULL, d2i_ECPKParameters, bp, x) +# define i2d_ECPKParameters_bio(bp,x) \ + ASN1_i2d_bio_of_const(EC_GROUP, i2d_ECPKParameters, bp, x) +# define d2i_ECPKParameters_fp(fp,x) \ + (EC_GROUP *)ASN1_d2i_fp(NULL, (d2i_of_void *)d2i_ECPKParameters, (fp), \ + (void **)(x)) +# define i2d_ECPKParameters_fp(fp,x) \ + ASN1_i2d_fp((i2d_of_void *)i2d_ECPKParameters, (fp), (void *)(x)) + +int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); +# ifndef OPENSSL_NO_STDIO +int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); +# endif + +/********************************************************************/ +/* EC_KEY functions */ +/********************************************************************/ + +/* some values for the encoding_flag */ +# define EC_PKEY_NO_PARAMETERS 0x001 +# define EC_PKEY_NO_PUBKEY 0x002 + +/* some values for the flags field */ +# define EC_FLAG_NON_FIPS_ALLOW 0x1 +# define EC_FLAG_FIPS_CHECKED 0x2 +# define EC_FLAG_COFACTOR_ECDH 0x1000 + +/** Creates a new EC_KEY object. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new(void); + +int EC_KEY_get_flags(const EC_KEY *key); + +void EC_KEY_set_flags(EC_KEY *key, int flags); + +void EC_KEY_clear_flags(EC_KEY *key, int flags); + +int EC_KEY_decoded_from_explicit_params(const EC_KEY *key); + +/** Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new_by_curve_name(int nid); + +/** Frees a EC_KEY object. + * \param key EC_KEY object to be freed. + */ +void EC_KEY_free(EC_KEY *key); + +/** Copies a EC_KEY object. + * \param dst destination EC_KEY object + * \param src src EC_KEY object + * \return dst or NULL if an error occurred. + */ +EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); + +/** Creates a new EC_KEY object and copies the content from src to it. + * \param src the source EC_KEY object + * \return newly created EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_dup(const EC_KEY *src); + +/** Increases the internal reference count of a EC_KEY object. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_up_ref(EC_KEY *key); + +/** Returns the ENGINE object of a EC_KEY object + * \param eckey EC_KEY object + * \return the ENGINE object (possibly NULL). + */ +ENGINE *EC_KEY_get0_engine(const EC_KEY *eckey); + +/** Returns the EC_GROUP object of a EC_KEY object + * \param key EC_KEY object + * \return the EC_GROUP object (possibly NULL). + */ +const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); + +/** Sets the EC_GROUP of a EC_KEY object. + * \param key EC_KEY object + * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY + * object will use an own copy of the EC_GROUP). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); + +/** Returns the private key of a EC_KEY object. + * \param key EC_KEY object + * \return a BIGNUM with the private key (possibly NULL). + */ +const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); + +/** Sets the private key of a EC_KEY object. + * \param key EC_KEY object + * \param prv BIGNUM with the private key (note: the EC_KEY object + * will use an own copy of the BIGNUM). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); + +/** Returns the public key of a EC_KEY object. + * \param key the EC_KEY object + * \return a EC_POINT object with the public key (possibly NULL) + */ +const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); + +/** Sets the public key of a EC_KEY object. + * \param key EC_KEY object + * \param pub EC_POINT object with the public key (note: the EC_KEY object + * will use an own copy of the EC_POINT object). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + +unsigned EC_KEY_get_enc_flags(const EC_KEY *key); +void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); +point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); + +#define EC_KEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EC_KEY, l, p, newf, dupf, freef) +int EC_KEY_set_ex_data(EC_KEY *key, int idx, void *arg); +void *EC_KEY_get_ex_data(const EC_KEY *key, int idx); + +/* wrapper functions for the underlying EC_GROUP object */ +void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); + +/** Creates a table of pre-computed multiples of the generator to + * accelerate further EC_KEY operations. + * \param key EC_KEY object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); + +/** Creates a new ec private (and optional a new public) key. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_generate_key(EC_KEY *key); + +/** Verifies that a private and/or public key is valid. + * \param key the EC_KEY object + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_check_key(const EC_KEY *key); + +/** Indicates if an EC_KEY can be used for signing. + * \param eckey the EC_KEY object + * \return 1 if can can sign and 0 otherwise. + */ +int EC_KEY_can_sign(const EC_KEY *eckey); + +/** Sets a public key from affine coordinates performing + * necessary NIST PKV tests. + * \param key the EC_KEY object + * \param x public key x coordinate + * \param y public key y coordinate + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, + BIGNUM *y); + +/** Encodes an EC_KEY public key to an allocated octet string + * \param key key to encode + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_KEY_key2buf(const EC_KEY *key, point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/** Decodes a EC_KEY public key from a octet string + * \param key key to decode + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ + +int EC_KEY_oct2key(EC_KEY *key, const unsigned char *buf, size_t len, + BN_CTX *ctx); + +/** Decodes an EC_KEY private key from an octet string + * \param key key to decode + * \param buf memory buffer with the encoded private key + * \param len length of the encoded key + * \return 1 on success and 0 if an error occurred + */ + +int EC_KEY_oct2priv(EC_KEY *key, const unsigned char *buf, size_t len); + +/** Encodes a EC_KEY private key to an octet string + * \param key key to encode + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ + +size_t EC_KEY_priv2oct(const EC_KEY *key, unsigned char *buf, size_t len); + +/** Encodes an EC_KEY private key to an allocated octet string + * \param eckey key to encode + * \param pbuf returns pointer to allocated buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_KEY_priv2buf(const EC_KEY *eckey, unsigned char **pbuf); + +/********************************************************************/ +/* de- and encoding functions for SEC1 ECPrivateKey */ +/********************************************************************/ + +/** Decodes a private key from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded private key + * \param len length of the DER encoded private key + * \return the decoded private key or NULL if an error occurred. + */ +EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a private key object and stores the result in a buffer. + * \param key the EC_KEY object to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC parameters */ +/********************************************************************/ + +/** Decodes ec parameter from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded ec parameters + * \param len length of the DER encoded ec parameters + * \return a EC_KEY object with the decoded parameters or NULL if an error + * occurred. + */ +EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes ec parameter and stores the result in a buffer. + * \param key the EC_KEY object with ec parameters to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECParameters(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC public key */ +/* (octet string, not DER -- hence 'o2i' and 'i2o') */ +/********************************************************************/ + +/** Decodes a ec public key from a octet string. + * \param key a pointer to a EC_KEY object which should be used + * \param in memory buffer with the encoded public key + * \param len length of the encoded public key + * \return EC_KEY object with decoded public key or NULL if an error + * occurred. + */ +EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a ec public key in an octet string. + * \param key the EC_KEY object with the public key + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred + */ +int i2o_ECPublicKey(const EC_KEY *key, unsigned char **out); + +/** Prints out the ec parameters on human readable form. + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print(BIO *bp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); + +# ifndef OPENSSL_NO_STDIO +/** Prints out the ec parameters on human readable form. + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print_fp(FILE *fp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); + +# endif + +const EC_KEY_METHOD *EC_KEY_OpenSSL(void); +const EC_KEY_METHOD *EC_KEY_get_default_method(void); +void EC_KEY_set_default_method(const EC_KEY_METHOD *meth); +const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); +int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); +EC_KEY *EC_KEY_new_method(ENGINE *engine); + +/** The old name for ecdh_KDF_X9_63 + * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +int ECDH_KDF_X9_62(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + const unsigned char *sinfo, size_t sinfolen, + const EVP_MD *md); + +int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, + const EC_KEY *ecdh, + void *(*KDF) (const void *in, size_t inlen, + void *out, size_t *outlen)); + +typedef struct ECDSA_SIG_st ECDSA_SIG; + +/** Allocates and initialize a ECDSA_SIG structure + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_SIG_new(void); + +/** frees a ECDSA_SIG structure + * \param sig pointer to the ECDSA_SIG structure + */ +void ECDSA_SIG_free(ECDSA_SIG *sig); + +/** DER encode content of ECDSA_SIG object (note: this function modifies *pp + * (*pp += length of the DER encoded signature)). + * \param sig pointer to the ECDSA_SIG object + * \param pp pointer to a unsigned char pointer for the output or NULL + * \return the length of the DER encoded ECDSA_SIG object or a negative value + * on error + */ +int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp); + +/** Decodes a DER encoded ECDSA signature (note: this function changes *pp + * (*pp += len)). + * \param sig pointer to ECDSA_SIG pointer (may be NULL) + * \param pp memory buffer with the DER encoded signature + * \param len length of the buffer + * \return pointer to the decoded ECDSA_SIG structure (or NULL) + */ +ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len); + +/** Accessor for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param pr pointer to BIGNUM pointer for r (may be NULL) + * \param ps pointer to BIGNUM pointer for s (may be NULL) + */ +void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); + +/** Accessor for r field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_r(const ECDSA_SIG *sig); + +/** Accessor for s field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_s(const ECDSA_SIG *sig); + +/** Setter for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param r pointer to BIGNUM for r (may be NULL) + * \param s pointer to BIGNUM for s (may be NULL) + */ +int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +/** Computes the ECDSA signature of the given hash value using + * the supplied private key and returns the created signature. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len, + EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dgstlen, + const BIGNUM *kinv, const BIGNUM *rp, + EC_KEY *eckey); + +/** Verifies that the supplied signature is a valid ECDSA + * signature of the supplied hash value using the supplied public key. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param sig ECDSA_SIG structure + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, + const ECDSA_SIG *sig, EC_KEY *eckey); + +/** Precompute parts of the signing operation + * \param eckey EC_KEY object containing a private EC key + * \param ctx BN_CTX object (optional) + * \param kinv BIGNUM pointer for the inverse of k + * \param rp BIGNUM pointer for x coordinate of k * generator + * \return 1 on success and 0 otherwise + */ +int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, BIGNUM **rp); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig memory for the DER encoded created signature + * \param siglen pointer to the length of the returned signature + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen, + unsigned char *sig, unsigned int *siglen, EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig buffer to hold the DER encoded signature + * \param siglen pointer to the length of the returned signature + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen, + unsigned char *sig, unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey); + +/** Verifies that the given signature is valid ECDSA signature + * of the supplied hash value using the specified public key. + * \param type this parameter is ignored + * \param dgst pointer to the hash value + * \param dgstlen length of the hash value + * \param sig pointer to the DER encoded signature + * \param siglen length of the DER encoded signature + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen, + const unsigned char *sig, int siglen, EC_KEY *eckey); + +/** Returns the maximum length of the DER encoded signature + * \param eckey EC_KEY object + * \return numbers of bytes required for the DER encoded signature + */ +int ECDSA_size(const EC_KEY *eckey); + +/********************************************************************/ +/* EC_KEY_METHOD constructors, destructors, writers and accessors */ +/********************************************************************/ + +EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth); +void EC_KEY_METHOD_free(EC_KEY_METHOD *meth); +void EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth, + int (*init)(EC_KEY *key), + void (*finish)(EC_KEY *key), + int (*copy)(EC_KEY *dest, const EC_KEY *src), + int (*set_group)(EC_KEY *key, const EC_GROUP *grp), + int (*set_private)(EC_KEY *key, + const BIGNUM *priv_key), + int (*set_public)(EC_KEY *key, + const EC_POINT *pub_key)); + +void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth, + int (*keygen)(EC_KEY *key)); + +void EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth, + int (*ckey)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +void EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth, + int (*sign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (*sign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(*sign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +void EC_KEY_METHOD_set_verify(EC_KEY_METHOD *meth, + int (*verify)(int type, const unsigned + char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (*verify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); + +void EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth, + int (**pinit)(EC_KEY *key), + void (**pfinish)(EC_KEY *key), + int (**pcopy)(EC_KEY *dest, const EC_KEY *src), + int (**pset_group)(EC_KEY *key, + const EC_GROUP *grp), + int (**pset_private)(EC_KEY *key, + const BIGNUM *priv_key), + int (**pset_public)(EC_KEY *key, + const EC_POINT *pub_key)); + +void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth, + int (**pkeygen)(EC_KEY *key)); + +void EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth, + int (**pck)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +void EC_KEY_METHOD_get_sign(const EC_KEY_METHOD *meth, + int (**psign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(**psign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +void EC_KEY_METHOD_get_verify(const EC_KEY_METHOD *meth, + int (**pverify)(int type, const unsigned + char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (**pverify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); + +# define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x) + +# ifndef __cplusplus +# if defined(__SUNPRO_C) +# if __SUNPRO_C >= 0x520 +# pragma error_messages (default,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) +# endif +# endif +# endif + +# define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_ec_param_enc(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAM_ENC, flag, NULL) + +# define EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, flag, NULL) + +# define EVP_PKEY_CTX_get_ecdh_cofactor_mode(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_ecdh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_ecdh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN, 0, \ + (void *)(plen)) + +# define EVP_PKEY_CTX_set0_ecdh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_UKM, plen, (void *)(p)) + +# define EVP_PKEY_CTX_get0_ecdh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_UKM, 0, (void *)(p)) + +/* SM2 will skip the operation check so no need to pass operation here */ +# define EVP_PKEY_CTX_set1_id(ctx, id, id_len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_SET1_ID, (int)id_len, (void*)(id)) + +# define EVP_PKEY_CTX_get1_id(ctx, id) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_GET1_ID, 0, (void*)(id)) + +# define EVP_PKEY_CTX_get1_id_len(ctx, id_len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_GET1_ID_LEN, 0, (void*)(id_len)) + +# define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_SET1_ID (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET1_ID (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_GET1_ID_LEN (EVP_PKEY_ALG_CTRL + 13) +/* KDF types */ +# define EVP_PKEY_ECDH_KDF_NONE 1 +# define EVP_PKEY_ECDH_KDF_X9_63 2 +/** The old name for EVP_PKEY_ECDH_KDF_X9_63 + * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +# define EVP_PKEY_ECDH_KDF_X9_62 EVP_PKEY_ECDH_KDF_X9_63 + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin64/include/openssl/ecdh.h b/openSSL/lin64/include/openssl/ecdh.h new file mode 100644 index 0000000..681f3d5 --- /dev/null +++ b/openSSL/lin64/include/openssl/ecdh.h @@ -0,0 +1,10 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include diff --git a/openSSL/lin64/include/openssl/ecdsa.h b/openSSL/lin64/include/openssl/ecdsa.h new file mode 100644 index 0000000..681f3d5 --- /dev/null +++ b/openSSL/lin64/include/openssl/ecdsa.h @@ -0,0 +1,10 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include diff --git a/openSSL/lin64/include/openssl/ecerr.h b/openSSL/lin64/include/openssl/ecerr.h new file mode 100644 index 0000000..5173811 --- /dev/null +++ b/openSSL/lin64/include/openssl/ecerr.h @@ -0,0 +1,276 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ECERR_H +# define HEADER_ECERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_EC + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_EC_strings(void); + +/* + * EC function codes. + */ +# define EC_F_BN_TO_FELEM 224 +# define EC_F_D2I_ECPARAMETERS 144 +# define EC_F_D2I_ECPKPARAMETERS 145 +# define EC_F_D2I_ECPRIVATEKEY 146 +# define EC_F_DO_EC_KEY_PRINT 221 +# define EC_F_ECDH_CMS_DECRYPT 238 +# define EC_F_ECDH_CMS_SET_SHARED_INFO 239 +# define EC_F_ECDH_COMPUTE_KEY 246 +# define EC_F_ECDH_SIMPLE_COMPUTE_KEY 257 +# define EC_F_ECDSA_DO_SIGN_EX 251 +# define EC_F_ECDSA_DO_VERIFY 252 +# define EC_F_ECDSA_SIGN_EX 254 +# define EC_F_ECDSA_SIGN_SETUP 248 +# define EC_F_ECDSA_SIG_NEW 265 +# define EC_F_ECDSA_VERIFY 253 +# define EC_F_ECD_ITEM_VERIFY 270 +# define EC_F_ECKEY_PARAM2TYPE 223 +# define EC_F_ECKEY_PARAM_DECODE 212 +# define EC_F_ECKEY_PRIV_DECODE 213 +# define EC_F_ECKEY_PRIV_ENCODE 214 +# define EC_F_ECKEY_PUB_DECODE 215 +# define EC_F_ECKEY_PUB_ENCODE 216 +# define EC_F_ECKEY_TYPE2PARAM 220 +# define EC_F_ECPARAMETERS_PRINT 147 +# define EC_F_ECPARAMETERS_PRINT_FP 148 +# define EC_F_ECPKPARAMETERS_PRINT 149 +# define EC_F_ECPKPARAMETERS_PRINT_FP 150 +# define EC_F_ECP_NISTZ256_GET_AFFINE 240 +# define EC_F_ECP_NISTZ256_INV_MOD_ORD 275 +# define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 243 +# define EC_F_ECP_NISTZ256_POINTS_MUL 241 +# define EC_F_ECP_NISTZ256_PRE_COMP_NEW 244 +# define EC_F_ECP_NISTZ256_WINDOWED_MUL 242 +# define EC_F_ECX_KEY_OP 266 +# define EC_F_ECX_PRIV_ENCODE 267 +# define EC_F_ECX_PUB_ENCODE 268 +# define EC_F_EC_ASN1_GROUP2CURVE 153 +# define EC_F_EC_ASN1_GROUP2FIELDID 154 +# define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 +# define EC_F_EC_GF2M_SIMPLE_FIELD_INV 296 +# define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159 +# define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 +# define EC_F_EC_GF2M_SIMPLE_LADDER_POST 285 +# define EC_F_EC_GF2M_SIMPLE_LADDER_PRE 288 +# define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160 +# define EC_F_EC_GF2M_SIMPLE_POINT2OCT 161 +# define EC_F_EC_GF2M_SIMPLE_POINTS_MUL 289 +# define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 162 +# define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 163 +# define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164 +# define EC_F_EC_GFP_MONT_FIELD_DECODE 133 +# define EC_F_EC_GFP_MONT_FIELD_ENCODE 134 +# define EC_F_EC_GFP_MONT_FIELD_INV 297 +# define EC_F_EC_GFP_MONT_FIELD_MUL 131 +# define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209 +# define EC_F_EC_GFP_MONT_FIELD_SQR 132 +# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 189 +# define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 225 +# define EC_F_EC_GFP_NISTP224_POINTS_MUL 228 +# define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 226 +# define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 230 +# define EC_F_EC_GFP_NISTP256_POINTS_MUL 231 +# define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 232 +# define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 233 +# define EC_F_EC_GFP_NISTP521_POINTS_MUL 234 +# define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 235 +# define EC_F_EC_GFP_NIST_FIELD_MUL 200 +# define EC_F_EC_GFP_NIST_FIELD_SQR 201 +# define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202 +# define EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES 287 +# define EC_F_EC_GFP_SIMPLE_FIELD_INV 298 +# define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166 +# define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102 +# define EC_F_EC_GFP_SIMPLE_OCT2POINT 103 +# define EC_F_EC_GFP_SIMPLE_POINT2OCT 104 +# define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 137 +# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 167 +# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 168 +# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 169 +# define EC_F_EC_GROUP_CHECK 170 +# define EC_F_EC_GROUP_CHECK_DISCRIMINANT 171 +# define EC_F_EC_GROUP_COPY 106 +# define EC_F_EC_GROUP_GET_CURVE 291 +# define EC_F_EC_GROUP_GET_CURVE_GF2M 172 +# define EC_F_EC_GROUP_GET_CURVE_GFP 130 +# define EC_F_EC_GROUP_GET_DEGREE 173 +# define EC_F_EC_GROUP_GET_ECPARAMETERS 261 +# define EC_F_EC_GROUP_GET_ECPKPARAMETERS 262 +# define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 193 +# define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 194 +# define EC_F_EC_GROUP_NEW 108 +# define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 174 +# define EC_F_EC_GROUP_NEW_FROM_DATA 175 +# define EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS 263 +# define EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS 264 +# define EC_F_EC_GROUP_SET_CURVE 292 +# define EC_F_EC_GROUP_SET_CURVE_GF2M 176 +# define EC_F_EC_GROUP_SET_CURVE_GFP 109 +# define EC_F_EC_GROUP_SET_GENERATOR 111 +# define EC_F_EC_GROUP_SET_SEED 286 +# define EC_F_EC_KEY_CHECK_KEY 177 +# define EC_F_EC_KEY_COPY 178 +# define EC_F_EC_KEY_GENERATE_KEY 179 +# define EC_F_EC_KEY_NEW 182 +# define EC_F_EC_KEY_NEW_METHOD 245 +# define EC_F_EC_KEY_OCT2PRIV 255 +# define EC_F_EC_KEY_PRINT 180 +# define EC_F_EC_KEY_PRINT_FP 181 +# define EC_F_EC_KEY_PRIV2BUF 279 +# define EC_F_EC_KEY_PRIV2OCT 256 +# define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 229 +# define EC_F_EC_KEY_SIMPLE_CHECK_KEY 258 +# define EC_F_EC_KEY_SIMPLE_OCT2PRIV 259 +# define EC_F_EC_KEY_SIMPLE_PRIV2OCT 260 +# define EC_F_EC_PKEY_CHECK 273 +# define EC_F_EC_PKEY_PARAM_CHECK 274 +# define EC_F_EC_POINTS_MAKE_AFFINE 136 +# define EC_F_EC_POINTS_MUL 290 +# define EC_F_EC_POINT_ADD 112 +# define EC_F_EC_POINT_BN2POINT 280 +# define EC_F_EC_POINT_CMP 113 +# define EC_F_EC_POINT_COPY 114 +# define EC_F_EC_POINT_DBL 115 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES 293 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 183 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 116 +# define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 117 +# define EC_F_EC_POINT_INVERT 210 +# define EC_F_EC_POINT_IS_AT_INFINITY 118 +# define EC_F_EC_POINT_IS_ON_CURVE 119 +# define EC_F_EC_POINT_MAKE_AFFINE 120 +# define EC_F_EC_POINT_NEW 121 +# define EC_F_EC_POINT_OCT2POINT 122 +# define EC_F_EC_POINT_POINT2BUF 281 +# define EC_F_EC_POINT_POINT2OCT 123 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES 294 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 185 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 124 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES 295 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 186 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 125 +# define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 126 +# define EC_F_EC_POINT_SET_TO_INFINITY 127 +# define EC_F_EC_PRE_COMP_NEW 196 +# define EC_F_EC_SCALAR_MUL_LADDER 284 +# define EC_F_EC_WNAF_MUL 187 +# define EC_F_EC_WNAF_PRECOMPUTE_MULT 188 +# define EC_F_I2D_ECPARAMETERS 190 +# define EC_F_I2D_ECPKPARAMETERS 191 +# define EC_F_I2D_ECPRIVATEKEY 192 +# define EC_F_I2O_ECPUBLICKEY 151 +# define EC_F_NISTP224_PRE_COMP_NEW 227 +# define EC_F_NISTP256_PRE_COMP_NEW 236 +# define EC_F_NISTP521_PRE_COMP_NEW 237 +# define EC_F_O2I_ECPUBLICKEY 152 +# define EC_F_OLD_EC_PRIV_DECODE 222 +# define EC_F_OSSL_ECDH_COMPUTE_KEY 247 +# define EC_F_OSSL_ECDSA_SIGN_SIG 249 +# define EC_F_OSSL_ECDSA_VERIFY_SIG 250 +# define EC_F_PKEY_ECD_CTRL 271 +# define EC_F_PKEY_ECD_DIGESTSIGN 272 +# define EC_F_PKEY_ECD_DIGESTSIGN25519 276 +# define EC_F_PKEY_ECD_DIGESTSIGN448 277 +# define EC_F_PKEY_ECX_DERIVE 269 +# define EC_F_PKEY_EC_CTRL 197 +# define EC_F_PKEY_EC_CTRL_STR 198 +# define EC_F_PKEY_EC_DERIVE 217 +# define EC_F_PKEY_EC_INIT 282 +# define EC_F_PKEY_EC_KDF_DERIVE 283 +# define EC_F_PKEY_EC_KEYGEN 199 +# define EC_F_PKEY_EC_PARAMGEN 219 +# define EC_F_PKEY_EC_SIGN 218 +# define EC_F_VALIDATE_ECX_DERIVE 278 + +/* + * EC reason codes. + */ +# define EC_R_ASN1_ERROR 115 +# define EC_R_BAD_SIGNATURE 156 +# define EC_R_BIGNUM_OUT_OF_RANGE 144 +# define EC_R_BUFFER_TOO_SMALL 100 +# define EC_R_CANNOT_INVERT 165 +# define EC_R_COORDINATES_OUT_OF_RANGE 146 +# define EC_R_CURVE_DOES_NOT_SUPPORT_ECDH 160 +# define EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING 159 +# define EC_R_D2I_ECPKPARAMETERS_FAILURE 117 +# define EC_R_DECODE_ERROR 142 +# define EC_R_DISCRIMINANT_IS_ZERO 118 +# define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119 +# define EC_R_FIELD_TOO_LARGE 143 +# define EC_R_GF2M_NOT_SUPPORTED 147 +# define EC_R_GROUP2PKPARAMETERS_FAILURE 120 +# define EC_R_I2D_ECPKPARAMETERS_FAILURE 121 +# define EC_R_INCOMPATIBLE_OBJECTS 101 +# define EC_R_INVALID_ARGUMENT 112 +# define EC_R_INVALID_COMPRESSED_POINT 110 +# define EC_R_INVALID_COMPRESSION_BIT 109 +# define EC_R_INVALID_CURVE 141 +# define EC_R_INVALID_DIGEST 151 +# define EC_R_INVALID_DIGEST_TYPE 138 +# define EC_R_INVALID_ENCODING 102 +# define EC_R_INVALID_FIELD 103 +# define EC_R_INVALID_FORM 104 +# define EC_R_INVALID_GROUP_ORDER 122 +# define EC_R_INVALID_KEY 116 +# define EC_R_INVALID_OUTPUT_LENGTH 161 +# define EC_R_INVALID_PEER_KEY 133 +# define EC_R_INVALID_PENTANOMIAL_BASIS 132 +# define EC_R_INVALID_PRIVATE_KEY 123 +# define EC_R_INVALID_TRINOMIAL_BASIS 137 +# define EC_R_KDF_PARAMETER_ERROR 148 +# define EC_R_KEYS_NOT_SET 140 +# define EC_R_LADDER_POST_FAILURE 136 +# define EC_R_LADDER_PRE_FAILURE 153 +# define EC_R_LADDER_STEP_FAILURE 162 +# define EC_R_MISSING_OID 167 +# define EC_R_MISSING_PARAMETERS 124 +# define EC_R_MISSING_PRIVATE_KEY 125 +# define EC_R_NEED_NEW_SETUP_VALUES 157 +# define EC_R_NOT_A_NIST_PRIME 135 +# define EC_R_NOT_IMPLEMENTED 126 +# define EC_R_NOT_INITIALIZED 111 +# define EC_R_NO_PARAMETERS_SET 139 +# define EC_R_NO_PRIVATE_VALUE 154 +# define EC_R_OPERATION_NOT_SUPPORTED 152 +# define EC_R_PASSED_NULL_PARAMETER 134 +# define EC_R_PEER_KEY_ERROR 149 +# define EC_R_PKPARAMETERS2GROUP_FAILURE 127 +# define EC_R_POINT_ARITHMETIC_FAILURE 155 +# define EC_R_POINT_AT_INFINITY 106 +# define EC_R_POINT_COORDINATES_BLIND_FAILURE 163 +# define EC_R_POINT_IS_NOT_ON_CURVE 107 +# define EC_R_RANDOM_NUMBER_GENERATION_FAILED 158 +# define EC_R_SHARED_INFO_ERROR 150 +# define EC_R_SLOT_FULL 108 +# define EC_R_UNDEFINED_GENERATOR 113 +# define EC_R_UNDEFINED_ORDER 128 +# define EC_R_UNKNOWN_COFACTOR 164 +# define EC_R_UNKNOWN_GROUP 129 +# define EC_R_UNKNOWN_ORDER 114 +# define EC_R_UNSUPPORTED_FIELD 131 +# define EC_R_WRONG_CURVE_PARAMETERS 145 +# define EC_R_WRONG_ORDER 130 + +# endif +#endif diff --git a/openSSL/lin64/include/openssl/engine.h b/openSSL/lin64/include/openssl/engine.h new file mode 100644 index 0000000..d707eae --- /dev/null +++ b/openSSL/lin64/include/openssl/engine.h @@ -0,0 +1,752 @@ +/* + * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENGINE_H +# define HEADER_ENGINE_H + +# include + +# ifndef OPENSSL_NO_ENGINE +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# include +# include +# include +# include +# include +# endif +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* + * These flags are used to control combinations of algorithm (methods) by + * bitwise "OR"ing. + */ +# define ENGINE_METHOD_RSA (unsigned int)0x0001 +# define ENGINE_METHOD_DSA (unsigned int)0x0002 +# define ENGINE_METHOD_DH (unsigned int)0x0004 +# define ENGINE_METHOD_RAND (unsigned int)0x0008 +# define ENGINE_METHOD_CIPHERS (unsigned int)0x0040 +# define ENGINE_METHOD_DIGESTS (unsigned int)0x0080 +# define ENGINE_METHOD_PKEY_METHS (unsigned int)0x0200 +# define ENGINE_METHOD_PKEY_ASN1_METHS (unsigned int)0x0400 +# define ENGINE_METHOD_EC (unsigned int)0x0800 +/* Obvious all-or-nothing cases. */ +# define ENGINE_METHOD_ALL (unsigned int)0xFFFF +# define ENGINE_METHOD_NONE (unsigned int)0x0000 + +/* + * This(ese) flag(s) controls behaviour of the ENGINE_TABLE mechanism used + * internally to control registration of ENGINE implementations, and can be + * set by ENGINE_set_table_flags(). The "NOINIT" flag prevents attempts to + * initialise registered ENGINEs if they are not already initialised. + */ +# define ENGINE_TABLE_FLAG_NOINIT (unsigned int)0x0001 + +/* ENGINE flags that can be set by ENGINE_set_flags(). */ +/* Not used */ +/* #define ENGINE_FLAGS_MALLOCED 0x0001 */ + +/* + * This flag is for ENGINEs that wish to handle the various 'CMD'-related + * control commands on their own. Without this flag, ENGINE_ctrl() handles + * these control commands on behalf of the ENGINE using their "cmd_defns" + * data. + */ +# define ENGINE_FLAGS_MANUAL_CMD_CTRL (int)0x0002 + +/* + * This flag is for ENGINEs who return new duplicate structures when found + * via "ENGINE_by_id()". When an ENGINE must store state (eg. if + * ENGINE_ctrl() commands are called in sequence as part of some stateful + * process like key-generation setup and execution), it can set this flag - + * then each attempt to obtain the ENGINE will result in it being copied into + * a new structure. Normally, ENGINEs don't declare this flag so + * ENGINE_by_id() just increments the existing ENGINE's structural reference + * count. + */ +# define ENGINE_FLAGS_BY_ID_COPY (int)0x0004 + +/* + * This flag if for an ENGINE that does not want its methods registered as + * part of ENGINE_register_all_complete() for example if the methods are not + * usable as default methods. + */ + +# define ENGINE_FLAGS_NO_REGISTER_ALL (int)0x0008 + +/* + * ENGINEs can support their own command types, and these flags are used in + * ENGINE_CTRL_GET_CMD_FLAGS to indicate to the caller what kind of input + * each command expects. Currently only numeric and string input is + * supported. If a control command supports none of the _NUMERIC, _STRING, or + * _NO_INPUT options, then it is regarded as an "internal" control command - + * and not for use in config setting situations. As such, they're not + * available to the ENGINE_ctrl_cmd_string() function, only raw ENGINE_ctrl() + * access. Changes to this list of 'command types' should be reflected + * carefully in ENGINE_cmd_is_executable() and ENGINE_ctrl_cmd_string(). + */ + +/* accepts a 'long' input value (3rd parameter to ENGINE_ctrl) */ +# define ENGINE_CMD_FLAG_NUMERIC (unsigned int)0x0001 +/* + * accepts string input (cast from 'void*' to 'const char *', 4th parameter + * to ENGINE_ctrl) + */ +# define ENGINE_CMD_FLAG_STRING (unsigned int)0x0002 +/* + * Indicates that the control command takes *no* input. Ie. the control + * command is unparameterised. + */ +# define ENGINE_CMD_FLAG_NO_INPUT (unsigned int)0x0004 +/* + * Indicates that the control command is internal. This control command won't + * be shown in any output, and is only usable through the ENGINE_ctrl_cmd() + * function. + */ +# define ENGINE_CMD_FLAG_INTERNAL (unsigned int)0x0008 + +/* + * NB: These 3 control commands are deprecated and should not be used. + * ENGINEs relying on these commands should compile conditional support for + * compatibility (eg. if these symbols are defined) but should also migrate + * the same functionality to their own ENGINE-specific control functions that + * can be "discovered" by calling applications. The fact these control + * commands wouldn't be "executable" (ie. usable by text-based config) + * doesn't change the fact that application code can find and use them + * without requiring per-ENGINE hacking. + */ + +/* + * These flags are used to tell the ctrl function what should be done. All + * command numbers are shared between all engines, even if some don't make + * sense to some engines. In such a case, they do nothing but return the + * error ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED. + */ +# define ENGINE_CTRL_SET_LOGSTREAM 1 +# define ENGINE_CTRL_SET_PASSWORD_CALLBACK 2 +# define ENGINE_CTRL_HUP 3/* Close and reinitialise + * any handles/connections + * etc. */ +# define ENGINE_CTRL_SET_USER_INTERFACE 4/* Alternative to callback */ +# define ENGINE_CTRL_SET_CALLBACK_DATA 5/* User-specific data, used + * when calling the password + * callback and the user + * interface */ +# define ENGINE_CTRL_LOAD_CONFIGURATION 6/* Load a configuration, + * given a string that + * represents a file name + * or so */ +# define ENGINE_CTRL_LOAD_SECTION 7/* Load data from a given + * section in the already + * loaded configuration */ + +/* + * These control commands allow an application to deal with an arbitrary + * engine in a dynamic way. Warn: Negative return values indicate errors FOR + * THESE COMMANDS because zero is used to indicate 'end-of-list'. Other + * commands, including ENGINE-specific command types, return zero for an + * error. An ENGINE can choose to implement these ctrl functions, and can + * internally manage things however it chooses - it does so by setting the + * ENGINE_FLAGS_MANUAL_CMD_CTRL flag (using ENGINE_set_flags()). Otherwise + * the ENGINE_ctrl() code handles this on the ENGINE's behalf using the + * cmd_defns data (set using ENGINE_set_cmd_defns()). This means an ENGINE's + * ctrl() handler need only implement its own commands - the above "meta" + * commands will be taken care of. + */ + +/* + * Returns non-zero if the supplied ENGINE has a ctrl() handler. If "not", + * then all the remaining control commands will return failure, so it is + * worth checking this first if the caller is trying to "discover" the + * engine's capabilities and doesn't want errors generated unnecessarily. + */ +# define ENGINE_CTRL_HAS_CTRL_FUNCTION 10 +/* + * Returns a positive command number for the first command supported by the + * engine. Returns zero if no ctrl commands are supported. + */ +# define ENGINE_CTRL_GET_FIRST_CMD_TYPE 11 +/* + * The 'long' argument specifies a command implemented by the engine, and the + * return value is the next command supported, or zero if there are no more. + */ +# define ENGINE_CTRL_GET_NEXT_CMD_TYPE 12 +/* + * The 'void*' argument is a command name (cast from 'const char *'), and the + * return value is the command that corresponds to it. + */ +# define ENGINE_CTRL_GET_CMD_FROM_NAME 13 +/* + * The next two allow a command to be converted into its corresponding string + * form. In each case, the 'long' argument supplies the command. In the + * NAME_LEN case, the return value is the length of the command name (not + * counting a trailing EOL). In the NAME case, the 'void*' argument must be a + * string buffer large enough, and it will be populated with the name of the + * command (WITH a trailing EOL). + */ +# define ENGINE_CTRL_GET_NAME_LEN_FROM_CMD 14 +# define ENGINE_CTRL_GET_NAME_FROM_CMD 15 +/* The next two are similar but give a "short description" of a command. */ +# define ENGINE_CTRL_GET_DESC_LEN_FROM_CMD 16 +# define ENGINE_CTRL_GET_DESC_FROM_CMD 17 +/* + * With this command, the return value is the OR'd combination of + * ENGINE_CMD_FLAG_*** values that indicate what kind of input a given + * engine-specific ctrl command expects. + */ +# define ENGINE_CTRL_GET_CMD_FLAGS 18 + +/* + * ENGINE implementations should start the numbering of their own control + * commands from this value. (ie. ENGINE_CMD_BASE, ENGINE_CMD_BASE + 1, etc). + */ +# define ENGINE_CMD_BASE 200 + +/* + * NB: These 2 nCipher "chil" control commands are deprecated, and their + * functionality is now available through ENGINE-specific control commands + * (exposed through the above-mentioned 'CMD'-handling). Code using these 2 + * commands should be migrated to the more general command handling before + * these are removed. + */ + +/* Flags specific to the nCipher "chil" engine */ +# define ENGINE_CTRL_CHIL_SET_FORKCHECK 100 + /* + * Depending on the value of the (long)i argument, this sets or + * unsets the SimpleForkCheck flag in the CHIL API to enable or + * disable checking and workarounds for applications that fork(). + */ +# define ENGINE_CTRL_CHIL_NO_LOCKING 101 + /* + * This prevents the initialisation function from providing mutex + * callbacks to the nCipher library. + */ + +/* + * If an ENGINE supports its own specific control commands and wishes the + * framework to handle the above 'ENGINE_CMD_***'-manipulation commands on + * its behalf, it should supply a null-terminated array of ENGINE_CMD_DEFN + * entries to ENGINE_set_cmd_defns(). It should also implement a ctrl() + * handler that supports the stated commands (ie. the "cmd_num" entries as + * described by the array). NB: The array must be ordered in increasing order + * of cmd_num. "null-terminated" means that the last ENGINE_CMD_DEFN element + * has cmd_num set to zero and/or cmd_name set to NULL. + */ +typedef struct ENGINE_CMD_DEFN_st { + unsigned int cmd_num; /* The command number */ + const char *cmd_name; /* The command name itself */ + const char *cmd_desc; /* A short description of the command */ + unsigned int cmd_flags; /* The input the command expects */ +} ENGINE_CMD_DEFN; + +/* Generic function pointer */ +typedef int (*ENGINE_GEN_FUNC_PTR) (void); +/* Generic function pointer taking no arguments */ +typedef int (*ENGINE_GEN_INT_FUNC_PTR) (ENGINE *); +/* Specific control function pointer */ +typedef int (*ENGINE_CTRL_FUNC_PTR) (ENGINE *, int, long, void *, + void (*f) (void)); +/* Generic load_key function pointer */ +typedef EVP_PKEY *(*ENGINE_LOAD_KEY_PTR)(ENGINE *, const char *, + UI_METHOD *ui_method, + void *callback_data); +typedef int (*ENGINE_SSL_CLIENT_CERT_PTR) (ENGINE *, SSL *ssl, + STACK_OF(X509_NAME) *ca_dn, + X509 **pcert, EVP_PKEY **pkey, + STACK_OF(X509) **pother, + UI_METHOD *ui_method, + void *callback_data); +/*- + * These callback types are for an ENGINE's handler for cipher and digest logic. + * These handlers have these prototypes; + * int foo(ENGINE *e, const EVP_CIPHER **cipher, const int **nids, int nid); + * int foo(ENGINE *e, const EVP_MD **digest, const int **nids, int nid); + * Looking at how to implement these handlers in the case of cipher support, if + * the framework wants the EVP_CIPHER for 'nid', it will call; + * foo(e, &p_evp_cipher, NULL, nid); (return zero for failure) + * If the framework wants a list of supported 'nid's, it will call; + * foo(e, NULL, &p_nids, 0); (returns number of 'nids' or -1 for error) + */ +/* + * Returns to a pointer to the array of supported cipher 'nid's. If the + * second parameter is non-NULL it is set to the size of the returned array. + */ +typedef int (*ENGINE_CIPHERS_PTR) (ENGINE *, const EVP_CIPHER **, + const int **, int); +typedef int (*ENGINE_DIGESTS_PTR) (ENGINE *, const EVP_MD **, const int **, + int); +typedef int (*ENGINE_PKEY_METHS_PTR) (ENGINE *, EVP_PKEY_METHOD **, + const int **, int); +typedef int (*ENGINE_PKEY_ASN1_METHS_PTR) (ENGINE *, EVP_PKEY_ASN1_METHOD **, + const int **, int); +/* + * STRUCTURE functions ... all of these functions deal with pointers to + * ENGINE structures where the pointers have a "structural reference". This + * means that their reference is to allowed access to the structure but it + * does not imply that the structure is functional. To simply increment or + * decrement the structural reference count, use ENGINE_by_id and + * ENGINE_free. NB: This is not required when iterating using ENGINE_get_next + * as it will automatically decrement the structural reference count of the + * "current" ENGINE and increment the structural reference count of the + * ENGINE it returns (unless it is NULL). + */ + +/* Get the first/last "ENGINE" type available. */ +ENGINE *ENGINE_get_first(void); +ENGINE *ENGINE_get_last(void); +/* Iterate to the next/previous "ENGINE" type (NULL = end of the list). */ +ENGINE *ENGINE_get_next(ENGINE *e); +ENGINE *ENGINE_get_prev(ENGINE *e); +/* Add another "ENGINE" type into the array. */ +int ENGINE_add(ENGINE *e); +/* Remove an existing "ENGINE" type from the array. */ +int ENGINE_remove(ENGINE *e); +/* Retrieve an engine from the list by its unique "id" value. */ +ENGINE *ENGINE_by_id(const char *id); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define ENGINE_load_openssl() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_OPENSSL, NULL) +# define ENGINE_load_dynamic() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_DYNAMIC, NULL) +# ifndef OPENSSL_NO_STATIC_ENGINE +# define ENGINE_load_padlock() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_PADLOCK, NULL) +# define ENGINE_load_capi() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_CAPI, NULL) +# define ENGINE_load_afalg() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_AFALG, NULL) +# endif +# define ENGINE_load_cryptodev() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_CRYPTODEV, NULL) +# define ENGINE_load_rdrand() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_RDRAND, NULL) +#endif +void ENGINE_load_builtin_engines(void); + +/* + * Get and set global flags (ENGINE_TABLE_FLAG_***) for the implementation + * "registry" handling. + */ +unsigned int ENGINE_get_table_flags(void); +void ENGINE_set_table_flags(unsigned int flags); + +/*- Manage registration of ENGINEs per "table". For each type, there are 3 + * functions; + * ENGINE_register_***(e) - registers the implementation from 'e' (if it has one) + * ENGINE_unregister_***(e) - unregister the implementation from 'e' + * ENGINE_register_all_***() - call ENGINE_register_***() for each 'e' in the list + * Cleanup is automatically registered from each table when required. + */ + +int ENGINE_register_RSA(ENGINE *e); +void ENGINE_unregister_RSA(ENGINE *e); +void ENGINE_register_all_RSA(void); + +int ENGINE_register_DSA(ENGINE *e); +void ENGINE_unregister_DSA(ENGINE *e); +void ENGINE_register_all_DSA(void); + +int ENGINE_register_EC(ENGINE *e); +void ENGINE_unregister_EC(ENGINE *e); +void ENGINE_register_all_EC(void); + +int ENGINE_register_DH(ENGINE *e); +void ENGINE_unregister_DH(ENGINE *e); +void ENGINE_register_all_DH(void); + +int ENGINE_register_RAND(ENGINE *e); +void ENGINE_unregister_RAND(ENGINE *e); +void ENGINE_register_all_RAND(void); + +int ENGINE_register_ciphers(ENGINE *e); +void ENGINE_unregister_ciphers(ENGINE *e); +void ENGINE_register_all_ciphers(void); + +int ENGINE_register_digests(ENGINE *e); +void ENGINE_unregister_digests(ENGINE *e); +void ENGINE_register_all_digests(void); + +int ENGINE_register_pkey_meths(ENGINE *e); +void ENGINE_unregister_pkey_meths(ENGINE *e); +void ENGINE_register_all_pkey_meths(void); + +int ENGINE_register_pkey_asn1_meths(ENGINE *e); +void ENGINE_unregister_pkey_asn1_meths(ENGINE *e); +void ENGINE_register_all_pkey_asn1_meths(void); + +/* + * These functions register all support from the above categories. Note, use + * of these functions can result in static linkage of code your application + * may not need. If you only need a subset of functionality, consider using + * more selective initialisation. + */ +int ENGINE_register_complete(ENGINE *e); +int ENGINE_register_all_complete(void); + +/* + * Send parameterised control commands to the engine. The possibilities to + * send down an integer, a pointer to data or a function pointer are + * provided. Any of the parameters may or may not be NULL, depending on the + * command number. In actuality, this function only requires a structural + * (rather than functional) reference to an engine, but many control commands + * may require the engine be functional. The caller should be aware of trying + * commands that require an operational ENGINE, and only use functional + * references in such situations. + */ +int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void)); + +/* + * This function tests if an ENGINE-specific command is usable as a + * "setting". Eg. in an application's config file that gets processed through + * ENGINE_ctrl_cmd_string(). If this returns zero, it is not available to + * ENGINE_ctrl_cmd_string(), only ENGINE_ctrl(). + */ +int ENGINE_cmd_is_executable(ENGINE *e, int cmd); + +/* + * This function works like ENGINE_ctrl() with the exception of taking a + * command name instead of a command number, and can handle optional + * commands. See the comment on ENGINE_ctrl_cmd_string() for an explanation + * on how to use the cmd_name and cmd_optional. + */ +int ENGINE_ctrl_cmd(ENGINE *e, const char *cmd_name, + long i, void *p, void (*f) (void), int cmd_optional); + +/* + * This function passes a command-name and argument to an ENGINE. The + * cmd_name is converted to a command number and the control command is + * called using 'arg' as an argument (unless the ENGINE doesn't support such + * a command, in which case no control command is called). The command is + * checked for input flags, and if necessary the argument will be converted + * to a numeric value. If cmd_optional is non-zero, then if the ENGINE + * doesn't support the given cmd_name the return value will be success + * anyway. This function is intended for applications to use so that users + * (or config files) can supply engine-specific config data to the ENGINE at + * run-time to control behaviour of specific engines. As such, it shouldn't + * be used for calling ENGINE_ctrl() functions that return data, deal with + * binary data, or that are otherwise supposed to be used directly through + * ENGINE_ctrl() in application code. Any "return" data from an ENGINE_ctrl() + * operation in this function will be lost - the return value is interpreted + * as failure if the return value is zero, success otherwise, and this + * function returns a boolean value as a result. In other words, vendors of + * 'ENGINE'-enabled devices should write ENGINE implementations with + * parameterisations that work in this scheme, so that compliant ENGINE-based + * applications can work consistently with the same configuration for the + * same ENGINE-enabled devices, across applications. + */ +int ENGINE_ctrl_cmd_string(ENGINE *e, const char *cmd_name, const char *arg, + int cmd_optional); + +/* + * These functions are useful for manufacturing new ENGINE structures. They + * don't address reference counting at all - one uses them to populate an + * ENGINE structure with personalised implementations of things prior to + * using it directly or adding it to the builtin ENGINE list in OpenSSL. + * These are also here so that the ENGINE structure doesn't have to be + * exposed and break binary compatibility! + */ +ENGINE *ENGINE_new(void); +int ENGINE_free(ENGINE *e); +int ENGINE_up_ref(ENGINE *e); +int ENGINE_set_id(ENGINE *e, const char *id); +int ENGINE_set_name(ENGINE *e, const char *name); +int ENGINE_set_RSA(ENGINE *e, const RSA_METHOD *rsa_meth); +int ENGINE_set_DSA(ENGINE *e, const DSA_METHOD *dsa_meth); +int ENGINE_set_EC(ENGINE *e, const EC_KEY_METHOD *ecdsa_meth); +int ENGINE_set_DH(ENGINE *e, const DH_METHOD *dh_meth); +int ENGINE_set_RAND(ENGINE *e, const RAND_METHOD *rand_meth); +int ENGINE_set_destroy_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR destroy_f); +int ENGINE_set_init_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR init_f); +int ENGINE_set_finish_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR finish_f); +int ENGINE_set_ctrl_function(ENGINE *e, ENGINE_CTRL_FUNC_PTR ctrl_f); +int ENGINE_set_load_privkey_function(ENGINE *e, + ENGINE_LOAD_KEY_PTR loadpriv_f); +int ENGINE_set_load_pubkey_function(ENGINE *e, ENGINE_LOAD_KEY_PTR loadpub_f); +int ENGINE_set_load_ssl_client_cert_function(ENGINE *e, + ENGINE_SSL_CLIENT_CERT_PTR + loadssl_f); +int ENGINE_set_ciphers(ENGINE *e, ENGINE_CIPHERS_PTR f); +int ENGINE_set_digests(ENGINE *e, ENGINE_DIGESTS_PTR f); +int ENGINE_set_pkey_meths(ENGINE *e, ENGINE_PKEY_METHS_PTR f); +int ENGINE_set_pkey_asn1_meths(ENGINE *e, ENGINE_PKEY_ASN1_METHS_PTR f); +int ENGINE_set_flags(ENGINE *e, int flags); +int ENGINE_set_cmd_defns(ENGINE *e, const ENGINE_CMD_DEFN *defns); +/* These functions allow control over any per-structure ENGINE data. */ +#define ENGINE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_ENGINE, l, p, newf, dupf, freef) +int ENGINE_set_ex_data(ENGINE *e, int idx, void *arg); +void *ENGINE_get_ex_data(const ENGINE *e, int idx); + +#if OPENSSL_API_COMPAT < 0x10100000L +/* + * This function previously cleaned up anything that needs it. Auto-deinit will + * now take care of it so it is no longer required to call this function. + */ +# define ENGINE_cleanup() while(0) continue +#endif + +/* + * These return values from within the ENGINE structure. These can be useful + * with functional references as well as structural references - it depends + * which you obtained. Using the result for functional purposes if you only + * obtained a structural reference may be problematic! + */ +const char *ENGINE_get_id(const ENGINE *e); +const char *ENGINE_get_name(const ENGINE *e); +const RSA_METHOD *ENGINE_get_RSA(const ENGINE *e); +const DSA_METHOD *ENGINE_get_DSA(const ENGINE *e); +const EC_KEY_METHOD *ENGINE_get_EC(const ENGINE *e); +const DH_METHOD *ENGINE_get_DH(const ENGINE *e); +const RAND_METHOD *ENGINE_get_RAND(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_destroy_function(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_init_function(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_finish_function(const ENGINE *e); +ENGINE_CTRL_FUNC_PTR ENGINE_get_ctrl_function(const ENGINE *e); +ENGINE_LOAD_KEY_PTR ENGINE_get_load_privkey_function(const ENGINE *e); +ENGINE_LOAD_KEY_PTR ENGINE_get_load_pubkey_function(const ENGINE *e); +ENGINE_SSL_CLIENT_CERT_PTR ENGINE_get_ssl_client_cert_function(const ENGINE + *e); +ENGINE_CIPHERS_PTR ENGINE_get_ciphers(const ENGINE *e); +ENGINE_DIGESTS_PTR ENGINE_get_digests(const ENGINE *e); +ENGINE_PKEY_METHS_PTR ENGINE_get_pkey_meths(const ENGINE *e); +ENGINE_PKEY_ASN1_METHS_PTR ENGINE_get_pkey_asn1_meths(const ENGINE *e); +const EVP_CIPHER *ENGINE_get_cipher(ENGINE *e, int nid); +const EVP_MD *ENGINE_get_digest(ENGINE *e, int nid); +const EVP_PKEY_METHOD *ENGINE_get_pkey_meth(ENGINE *e, int nid); +const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth(ENGINE *e, int nid); +const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth_str(ENGINE *e, + const char *str, + int len); +const EVP_PKEY_ASN1_METHOD *ENGINE_pkey_asn1_find_str(ENGINE **pe, + const char *str, + int len); +const ENGINE_CMD_DEFN *ENGINE_get_cmd_defns(const ENGINE *e); +int ENGINE_get_flags(const ENGINE *e); + +/* + * FUNCTIONAL functions. These functions deal with ENGINE structures that + * have (or will) be initialised for use. Broadly speaking, the structural + * functions are useful for iterating the list of available engine types, + * creating new engine types, and other "list" operations. These functions + * actually deal with ENGINEs that are to be used. As such these functions + * can fail (if applicable) when particular engines are unavailable - eg. if + * a hardware accelerator is not attached or not functioning correctly. Each + * ENGINE has 2 reference counts; structural and functional. Every time a + * functional reference is obtained or released, a corresponding structural + * reference is automatically obtained or released too. + */ + +/* + * Initialise a engine type for use (or up its reference count if it's + * already in use). This will fail if the engine is not currently operational + * and cannot initialise. + */ +int ENGINE_init(ENGINE *e); +/* + * Free a functional reference to a engine type. This does not require a + * corresponding call to ENGINE_free as it also releases a structural + * reference. + */ +int ENGINE_finish(ENGINE *e); + +/* + * The following functions handle keys that are stored in some secondary + * location, handled by the engine. The storage may be on a card or + * whatever. + */ +EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id, + UI_METHOD *ui_method, void *callback_data); +EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id, + UI_METHOD *ui_method, void *callback_data); +int ENGINE_load_ssl_client_cert(ENGINE *e, SSL *s, + STACK_OF(X509_NAME) *ca_dn, X509 **pcert, + EVP_PKEY **ppkey, STACK_OF(X509) **pother, + UI_METHOD *ui_method, void *callback_data); + +/* + * This returns a pointer for the current ENGINE structure that is (by + * default) performing any RSA operations. The value returned is an + * incremented reference, so it should be free'd (ENGINE_finish) before it is + * discarded. + */ +ENGINE *ENGINE_get_default_RSA(void); +/* Same for the other "methods" */ +ENGINE *ENGINE_get_default_DSA(void); +ENGINE *ENGINE_get_default_EC(void); +ENGINE *ENGINE_get_default_DH(void); +ENGINE *ENGINE_get_default_RAND(void); +/* + * These functions can be used to get a functional reference to perform + * ciphering or digesting corresponding to "nid". + */ +ENGINE *ENGINE_get_cipher_engine(int nid); +ENGINE *ENGINE_get_digest_engine(int nid); +ENGINE *ENGINE_get_pkey_meth_engine(int nid); +ENGINE *ENGINE_get_pkey_asn1_meth_engine(int nid); + +/* + * This sets a new default ENGINE structure for performing RSA operations. If + * the result is non-zero (success) then the ENGINE structure will have had + * its reference count up'd so the caller should still free their own + * reference 'e'. + */ +int ENGINE_set_default_RSA(ENGINE *e); +int ENGINE_set_default_string(ENGINE *e, const char *def_list); +/* Same for the other "methods" */ +int ENGINE_set_default_DSA(ENGINE *e); +int ENGINE_set_default_EC(ENGINE *e); +int ENGINE_set_default_DH(ENGINE *e); +int ENGINE_set_default_RAND(ENGINE *e); +int ENGINE_set_default_ciphers(ENGINE *e); +int ENGINE_set_default_digests(ENGINE *e); +int ENGINE_set_default_pkey_meths(ENGINE *e); +int ENGINE_set_default_pkey_asn1_meths(ENGINE *e); + +/* + * The combination "set" - the flags are bitwise "OR"d from the + * ENGINE_METHOD_*** defines above. As with the "ENGINE_register_complete()" + * function, this function can result in unnecessary static linkage. If your + * application requires only specific functionality, consider using more + * selective functions. + */ +int ENGINE_set_default(ENGINE *e, unsigned int flags); + +void ENGINE_add_conf_module(void); + +/* Deprecated functions ... */ +/* int ENGINE_clear_defaults(void); */ + +/**************************/ +/* DYNAMIC ENGINE SUPPORT */ +/**************************/ + +/* Binary/behaviour compatibility levels */ +# define OSSL_DYNAMIC_VERSION (unsigned long)0x00030000 +/* + * Binary versions older than this are too old for us (whether we're a loader + * or a loadee) + */ +# define OSSL_DYNAMIC_OLDEST (unsigned long)0x00030000 + +/* + * When compiling an ENGINE entirely as an external shared library, loadable + * by the "dynamic" ENGINE, these types are needed. The 'dynamic_fns' + * structure type provides the calling application's (or library's) error + * functionality and memory management function pointers to the loaded + * library. These should be used/set in the loaded library code so that the + * loading application's 'state' will be used/changed in all operations. The + * 'static_state' pointer allows the loaded library to know if it shares the + * same static data as the calling application (or library), and thus whether + * these callbacks need to be set or not. + */ +typedef void *(*dyn_MEM_malloc_fn) (size_t, const char *, int); +typedef void *(*dyn_MEM_realloc_fn) (void *, size_t, const char *, int); +typedef void (*dyn_MEM_free_fn) (void *, const char *, int); +typedef struct st_dynamic_MEM_fns { + dyn_MEM_malloc_fn malloc_fn; + dyn_MEM_realloc_fn realloc_fn; + dyn_MEM_free_fn free_fn; +} dynamic_MEM_fns; +/* + * FIXME: Perhaps the memory and locking code (crypto.h) should declare and + * use these types so we (and any other dependent code) can simplify a bit?? + */ +/* The top-level structure */ +typedef struct st_dynamic_fns { + void *static_state; + dynamic_MEM_fns mem_fns; +} dynamic_fns; + +/* + * The version checking function should be of this prototype. NB: The + * ossl_version value passed in is the OSSL_DYNAMIC_VERSION of the loading + * code. If this function returns zero, it indicates a (potential) version + * incompatibility and the loaded library doesn't believe it can proceed. + * Otherwise, the returned value is the (latest) version supported by the + * loading library. The loader may still decide that the loaded code's + * version is unsatisfactory and could veto the load. The function is + * expected to be implemented with the symbol name "v_check", and a default + * implementation can be fully instantiated with + * IMPLEMENT_DYNAMIC_CHECK_FN(). + */ +typedef unsigned long (*dynamic_v_check_fn) (unsigned long ossl_version); +# define IMPLEMENT_DYNAMIC_CHECK_FN() \ + OPENSSL_EXPORT unsigned long v_check(unsigned long v); \ + OPENSSL_EXPORT unsigned long v_check(unsigned long v) { \ + if (v >= OSSL_DYNAMIC_OLDEST) return OSSL_DYNAMIC_VERSION; \ + return 0; } + +/* + * This function is passed the ENGINE structure to initialise with its own + * function and command settings. It should not adjust the structural or + * functional reference counts. If this function returns zero, (a) the load + * will be aborted, (b) the previous ENGINE state will be memcpy'd back onto + * the structure, and (c) the shared library will be unloaded. So + * implementations should do their own internal cleanup in failure + * circumstances otherwise they could leak. The 'id' parameter, if non-NULL, + * represents the ENGINE id that the loader is looking for. If this is NULL, + * the shared library can choose to return failure or to initialise a + * 'default' ENGINE. If non-NULL, the shared library must initialise only an + * ENGINE matching the passed 'id'. The function is expected to be + * implemented with the symbol name "bind_engine". A standard implementation + * can be instantiated with IMPLEMENT_DYNAMIC_BIND_FN(fn) where the parameter + * 'fn' is a callback function that populates the ENGINE structure and + * returns an int value (zero for failure). 'fn' should have prototype; + * [static] int fn(ENGINE *e, const char *id); + */ +typedef int (*dynamic_bind_engine) (ENGINE *e, const char *id, + const dynamic_fns *fns); +# define IMPLEMENT_DYNAMIC_BIND_FN(fn) \ + OPENSSL_EXPORT \ + int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns); \ + OPENSSL_EXPORT \ + int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns) { \ + if (ENGINE_get_static_state() == fns->static_state) goto skip_cbs; \ + CRYPTO_set_mem_functions(fns->mem_fns.malloc_fn, \ + fns->mem_fns.realloc_fn, \ + fns->mem_fns.free_fn); \ + OPENSSL_init_crypto(OPENSSL_INIT_NO_ATEXIT, NULL); \ + skip_cbs: \ + if (!fn(e, id)) return 0; \ + return 1; } + +/* + * If the loading application (or library) and the loaded ENGINE library + * share the same static data (eg. they're both dynamically linked to the + * same libcrypto.so) we need a way to avoid trying to set system callbacks - + * this would fail, and for the same reason that it's unnecessary to try. If + * the loaded ENGINE has (or gets from through the loader) its own copy of + * the libcrypto static data, we will need to set the callbacks. The easiest + * way to detect this is to have a function that returns a pointer to some + * static data and let the loading application and loaded ENGINE compare + * their respective values. + */ +void *ENGINE_get_static_state(void); + +# if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) +DEPRECATEDIN_1_1_0(void ENGINE_setup_bsd_cryptodev(void)) +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin64/include/openssl/engineerr.h b/openSSL/lin64/include/openssl/engineerr.h new file mode 100644 index 0000000..05e84bd --- /dev/null +++ b/openSSL/lin64/include/openssl/engineerr.h @@ -0,0 +1,111 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENGINEERR_H +# define HEADER_ENGINEERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_ENGINE + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ENGINE_strings(void); + +/* + * ENGINE function codes. + */ +# define ENGINE_F_DIGEST_UPDATE 198 +# define ENGINE_F_DYNAMIC_CTRL 180 +# define ENGINE_F_DYNAMIC_GET_DATA_CTX 181 +# define ENGINE_F_DYNAMIC_LOAD 182 +# define ENGINE_F_DYNAMIC_SET_DATA_CTX 183 +# define ENGINE_F_ENGINE_ADD 105 +# define ENGINE_F_ENGINE_BY_ID 106 +# define ENGINE_F_ENGINE_CMD_IS_EXECUTABLE 170 +# define ENGINE_F_ENGINE_CTRL 142 +# define ENGINE_F_ENGINE_CTRL_CMD 178 +# define ENGINE_F_ENGINE_CTRL_CMD_STRING 171 +# define ENGINE_F_ENGINE_FINISH 107 +# define ENGINE_F_ENGINE_GET_CIPHER 185 +# define ENGINE_F_ENGINE_GET_DIGEST 186 +# define ENGINE_F_ENGINE_GET_FIRST 195 +# define ENGINE_F_ENGINE_GET_LAST 196 +# define ENGINE_F_ENGINE_GET_NEXT 115 +# define ENGINE_F_ENGINE_GET_PKEY_ASN1_METH 193 +# define ENGINE_F_ENGINE_GET_PKEY_METH 192 +# define ENGINE_F_ENGINE_GET_PREV 116 +# define ENGINE_F_ENGINE_INIT 119 +# define ENGINE_F_ENGINE_LIST_ADD 120 +# define ENGINE_F_ENGINE_LIST_REMOVE 121 +# define ENGINE_F_ENGINE_LOAD_PRIVATE_KEY 150 +# define ENGINE_F_ENGINE_LOAD_PUBLIC_KEY 151 +# define ENGINE_F_ENGINE_LOAD_SSL_CLIENT_CERT 194 +# define ENGINE_F_ENGINE_NEW 122 +# define ENGINE_F_ENGINE_PKEY_ASN1_FIND_STR 197 +# define ENGINE_F_ENGINE_REMOVE 123 +# define ENGINE_F_ENGINE_SET_DEFAULT_STRING 189 +# define ENGINE_F_ENGINE_SET_ID 129 +# define ENGINE_F_ENGINE_SET_NAME 130 +# define ENGINE_F_ENGINE_TABLE_REGISTER 184 +# define ENGINE_F_ENGINE_UNLOCKED_FINISH 191 +# define ENGINE_F_ENGINE_UP_REF 190 +# define ENGINE_F_INT_CLEANUP_ITEM 199 +# define ENGINE_F_INT_CTRL_HELPER 172 +# define ENGINE_F_INT_ENGINE_CONFIGURE 188 +# define ENGINE_F_INT_ENGINE_MODULE_INIT 187 +# define ENGINE_F_OSSL_HMAC_INIT 200 + +/* + * ENGINE reason codes. + */ +# define ENGINE_R_ALREADY_LOADED 100 +# define ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER 133 +# define ENGINE_R_CMD_NOT_EXECUTABLE 134 +# define ENGINE_R_COMMAND_TAKES_INPUT 135 +# define ENGINE_R_COMMAND_TAKES_NO_INPUT 136 +# define ENGINE_R_CONFLICTING_ENGINE_ID 103 +# define ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED 119 +# define ENGINE_R_DSO_FAILURE 104 +# define ENGINE_R_DSO_NOT_FOUND 132 +# define ENGINE_R_ENGINES_SECTION_ERROR 148 +# define ENGINE_R_ENGINE_CONFIGURATION_ERROR 102 +# define ENGINE_R_ENGINE_IS_NOT_IN_LIST 105 +# define ENGINE_R_ENGINE_SECTION_ERROR 149 +# define ENGINE_R_FAILED_LOADING_PRIVATE_KEY 128 +# define ENGINE_R_FAILED_LOADING_PUBLIC_KEY 129 +# define ENGINE_R_FINISH_FAILED 106 +# define ENGINE_R_ID_OR_NAME_MISSING 108 +# define ENGINE_R_INIT_FAILED 109 +# define ENGINE_R_INTERNAL_LIST_ERROR 110 +# define ENGINE_R_INVALID_ARGUMENT 143 +# define ENGINE_R_INVALID_CMD_NAME 137 +# define ENGINE_R_INVALID_CMD_NUMBER 138 +# define ENGINE_R_INVALID_INIT_VALUE 151 +# define ENGINE_R_INVALID_STRING 150 +# define ENGINE_R_NOT_INITIALISED 117 +# define ENGINE_R_NOT_LOADED 112 +# define ENGINE_R_NO_CONTROL_FUNCTION 120 +# define ENGINE_R_NO_INDEX 144 +# define ENGINE_R_NO_LOAD_FUNCTION 125 +# define ENGINE_R_NO_REFERENCE 130 +# define ENGINE_R_NO_SUCH_ENGINE 116 +# define ENGINE_R_UNIMPLEMENTED_CIPHER 146 +# define ENGINE_R_UNIMPLEMENTED_DIGEST 147 +# define ENGINE_R_UNIMPLEMENTED_PUBLIC_KEY_METHOD 101 +# define ENGINE_R_VERSION_INCOMPATIBILITY 145 + +# endif +#endif diff --git a/openSSL/lin64/include/openssl/err.h b/openSSL/lin64/include/openssl/err.h new file mode 100644 index 0000000..b49f881 --- /dev/null +++ b/openSSL/lin64/include/openssl/err.h @@ -0,0 +1,274 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ERR_H +# define HEADER_ERR_H + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# include +# endif + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef OPENSSL_NO_ERR +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,d,e) +# else +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,NULL,0) +# endif + +# include + +# define ERR_TXT_MALLOCED 0x01 +# define ERR_TXT_STRING 0x02 + +# define ERR_FLAG_MARK 0x01 +# define ERR_FLAG_CLEAR 0x02 + +# define ERR_NUM_ERRORS 16 +typedef struct err_state_st { + int err_flags[ERR_NUM_ERRORS]; + unsigned long err_buffer[ERR_NUM_ERRORS]; + char *err_data[ERR_NUM_ERRORS]; + int err_data_flags[ERR_NUM_ERRORS]; + const char *err_file[ERR_NUM_ERRORS]; + int err_line[ERR_NUM_ERRORS]; + int top, bottom; +} ERR_STATE; + +/* library */ +# define ERR_LIB_NONE 1 +# define ERR_LIB_SYS 2 +# define ERR_LIB_BN 3 +# define ERR_LIB_RSA 4 +# define ERR_LIB_DH 5 +# define ERR_LIB_EVP 6 +# define ERR_LIB_BUF 7 +# define ERR_LIB_OBJ 8 +# define ERR_LIB_PEM 9 +# define ERR_LIB_DSA 10 +# define ERR_LIB_X509 11 +/* #define ERR_LIB_METH 12 */ +# define ERR_LIB_ASN1 13 +# define ERR_LIB_CONF 14 +# define ERR_LIB_CRYPTO 15 +# define ERR_LIB_EC 16 +# define ERR_LIB_SSL 20 +/* #define ERR_LIB_SSL23 21 */ +/* #define ERR_LIB_SSL2 22 */ +/* #define ERR_LIB_SSL3 23 */ +/* #define ERR_LIB_RSAREF 30 */ +/* #define ERR_LIB_PROXY 31 */ +# define ERR_LIB_BIO 32 +# define ERR_LIB_PKCS7 33 +# define ERR_LIB_X509V3 34 +# define ERR_LIB_PKCS12 35 +# define ERR_LIB_RAND 36 +# define ERR_LIB_DSO 37 +# define ERR_LIB_ENGINE 38 +# define ERR_LIB_OCSP 39 +# define ERR_LIB_UI 40 +# define ERR_LIB_COMP 41 +# define ERR_LIB_ECDSA 42 +# define ERR_LIB_ECDH 43 +# define ERR_LIB_OSSL_STORE 44 +# define ERR_LIB_FIPS 45 +# define ERR_LIB_CMS 46 +# define ERR_LIB_TS 47 +# define ERR_LIB_HMAC 48 +/* # define ERR_LIB_JPAKE 49 */ +# define ERR_LIB_CT 50 +# define ERR_LIB_ASYNC 51 +# define ERR_LIB_KDF 52 +# define ERR_LIB_SM2 53 + +# define ERR_LIB_USER 128 + +# define SYSerr(f,r) ERR_PUT_error(ERR_LIB_SYS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BNerr(f,r) ERR_PUT_error(ERR_LIB_BN,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define RSAerr(f,r) ERR_PUT_error(ERR_LIB_RSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DHerr(f,r) ERR_PUT_error(ERR_LIB_DH,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define EVPerr(f,r) ERR_PUT_error(ERR_LIB_EVP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BUFerr(f,r) ERR_PUT_error(ERR_LIB_BUF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OBJerr(f,r) ERR_PUT_error(ERR_LIB_OBJ,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PEMerr(f,r) ERR_PUT_error(ERR_LIB_PEM,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DSAerr(f,r) ERR_PUT_error(ERR_LIB_DSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define X509err(f,r) ERR_PUT_error(ERR_LIB_X509,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ASN1err(f,r) ERR_PUT_error(ERR_LIB_ASN1,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CONFerr(f,r) ERR_PUT_error(ERR_LIB_CONF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CRYPTOerr(f,r) ERR_PUT_error(ERR_LIB_CRYPTO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECerr(f,r) ERR_PUT_error(ERR_LIB_EC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define SSLerr(f,r) ERR_PUT_error(ERR_LIB_SSL,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BIOerr(f,r) ERR_PUT_error(ERR_LIB_BIO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PKCS7err(f,r) ERR_PUT_error(ERR_LIB_PKCS7,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define X509V3err(f,r) ERR_PUT_error(ERR_LIB_X509V3,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PKCS12err(f,r) ERR_PUT_error(ERR_LIB_PKCS12,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define RANDerr(f,r) ERR_PUT_error(ERR_LIB_RAND,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DSOerr(f,r) ERR_PUT_error(ERR_LIB_DSO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ENGINEerr(f,r) ERR_PUT_error(ERR_LIB_ENGINE,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OCSPerr(f,r) ERR_PUT_error(ERR_LIB_OCSP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define UIerr(f,r) ERR_PUT_error(ERR_LIB_UI,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define COMPerr(f,r) ERR_PUT_error(ERR_LIB_COMP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECDSAerr(f,r) ERR_PUT_error(ERR_LIB_ECDSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECDHerr(f,r) ERR_PUT_error(ERR_LIB_ECDH,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OSSL_STOREerr(f,r) ERR_PUT_error(ERR_LIB_OSSL_STORE,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define FIPSerr(f,r) ERR_PUT_error(ERR_LIB_FIPS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CMSerr(f,r) ERR_PUT_error(ERR_LIB_CMS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define TSerr(f,r) ERR_PUT_error(ERR_LIB_TS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define HMACerr(f,r) ERR_PUT_error(ERR_LIB_HMAC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CTerr(f,r) ERR_PUT_error(ERR_LIB_CT,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ASYNCerr(f,r) ERR_PUT_error(ERR_LIB_ASYNC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define KDFerr(f,r) ERR_PUT_error(ERR_LIB_KDF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define SM2err(f,r) ERR_PUT_error(ERR_LIB_SM2,(f),(r),OPENSSL_FILE,OPENSSL_LINE) + +# define ERR_PACK(l,f,r) ( \ + (((unsigned int)(l) & 0x0FF) << 24L) | \ + (((unsigned int)(f) & 0xFFF) << 12L) | \ + (((unsigned int)(r) & 0xFFF) ) ) +# define ERR_GET_LIB(l) (int)(((l) >> 24L) & 0x0FFL) +# define ERR_GET_FUNC(l) (int)(((l) >> 12L) & 0xFFFL) +# define ERR_GET_REASON(l) (int)( (l) & 0xFFFL) +# define ERR_FATAL_ERROR(l) (int)( (l) & ERR_R_FATAL) + +/* OS functions */ +# define SYS_F_FOPEN 1 +# define SYS_F_CONNECT 2 +# define SYS_F_GETSERVBYNAME 3 +# define SYS_F_SOCKET 4 +# define SYS_F_IOCTLSOCKET 5 +# define SYS_F_BIND 6 +# define SYS_F_LISTEN 7 +# define SYS_F_ACCEPT 8 +# define SYS_F_WSASTARTUP 9/* Winsock stuff */ +# define SYS_F_OPENDIR 10 +# define SYS_F_FREAD 11 +# define SYS_F_GETADDRINFO 12 +# define SYS_F_GETNAMEINFO 13 +# define SYS_F_SETSOCKOPT 14 +# define SYS_F_GETSOCKOPT 15 +# define SYS_F_GETSOCKNAME 16 +# define SYS_F_GETHOSTBYNAME 17 +# define SYS_F_FFLUSH 18 +# define SYS_F_OPEN 19 +# define SYS_F_CLOSE 20 +# define SYS_F_IOCTL 21 +# define SYS_F_STAT 22 +# define SYS_F_FCNTL 23 +# define SYS_F_FSTAT 24 + +/* reasons */ +# define ERR_R_SYS_LIB ERR_LIB_SYS/* 2 */ +# define ERR_R_BN_LIB ERR_LIB_BN/* 3 */ +# define ERR_R_RSA_LIB ERR_LIB_RSA/* 4 */ +# define ERR_R_DH_LIB ERR_LIB_DH/* 5 */ +# define ERR_R_EVP_LIB ERR_LIB_EVP/* 6 */ +# define ERR_R_BUF_LIB ERR_LIB_BUF/* 7 */ +# define ERR_R_OBJ_LIB ERR_LIB_OBJ/* 8 */ +# define ERR_R_PEM_LIB ERR_LIB_PEM/* 9 */ +# define ERR_R_DSA_LIB ERR_LIB_DSA/* 10 */ +# define ERR_R_X509_LIB ERR_LIB_X509/* 11 */ +# define ERR_R_ASN1_LIB ERR_LIB_ASN1/* 13 */ +# define ERR_R_EC_LIB ERR_LIB_EC/* 16 */ +# define ERR_R_BIO_LIB ERR_LIB_BIO/* 32 */ +# define ERR_R_PKCS7_LIB ERR_LIB_PKCS7/* 33 */ +# define ERR_R_X509V3_LIB ERR_LIB_X509V3/* 34 */ +# define ERR_R_ENGINE_LIB ERR_LIB_ENGINE/* 38 */ +# define ERR_R_UI_LIB ERR_LIB_UI/* 40 */ +# define ERR_R_ECDSA_LIB ERR_LIB_ECDSA/* 42 */ +# define ERR_R_OSSL_STORE_LIB ERR_LIB_OSSL_STORE/* 44 */ + +# define ERR_R_NESTED_ASN1_ERROR 58 +# define ERR_R_MISSING_ASN1_EOS 63 + +/* fatal error */ +# define ERR_R_FATAL 64 +# define ERR_R_MALLOC_FAILURE (1|ERR_R_FATAL) +# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (2|ERR_R_FATAL) +# define ERR_R_PASSED_NULL_PARAMETER (3|ERR_R_FATAL) +# define ERR_R_INTERNAL_ERROR (4|ERR_R_FATAL) +# define ERR_R_DISABLED (5|ERR_R_FATAL) +# define ERR_R_INIT_FAIL (6|ERR_R_FATAL) +# define ERR_R_PASSED_INVALID_ARGUMENT (7) +# define ERR_R_OPERATION_FAIL (8|ERR_R_FATAL) + +/* + * 99 is the maximum possible ERR_R_... code, higher values are reserved for + * the individual libraries + */ + +typedef struct ERR_string_data_st { + unsigned long error; + const char *string; +} ERR_STRING_DATA; + +DEFINE_LHASH_OF(ERR_STRING_DATA); + +void ERR_put_error(int lib, int func, int reason, const char *file, int line); +void ERR_set_error_data(char *data, int flags); + +unsigned long ERR_get_error(void); +unsigned long ERR_get_error_line(const char **file, int *line); +unsigned long ERR_get_error_line_data(const char **file, int *line, + const char **data, int *flags); +unsigned long ERR_peek_error(void); +unsigned long ERR_peek_error_line(const char **file, int *line); +unsigned long ERR_peek_error_line_data(const char **file, int *line, + const char **data, int *flags); +unsigned long ERR_peek_last_error(void); +unsigned long ERR_peek_last_error_line(const char **file, int *line); +unsigned long ERR_peek_last_error_line_data(const char **file, int *line, + const char **data, int *flags); +void ERR_clear_error(void); +char *ERR_error_string(unsigned long e, char *buf); +void ERR_error_string_n(unsigned long e, char *buf, size_t len); +const char *ERR_lib_error_string(unsigned long e); +const char *ERR_func_error_string(unsigned long e); +const char *ERR_reason_error_string(unsigned long e); +void ERR_print_errors_cb(int (*cb) (const char *str, size_t len, void *u), + void *u); +# ifndef OPENSSL_NO_STDIO +void ERR_print_errors_fp(FILE *fp); +# endif +void ERR_print_errors(BIO *bp); +void ERR_add_error_data(int num, ...); +void ERR_add_error_vdata(int num, va_list args); +int ERR_load_strings(int lib, ERR_STRING_DATA *str); +int ERR_load_strings_const(const ERR_STRING_DATA *str); +int ERR_unload_strings(int lib, ERR_STRING_DATA *str); +int ERR_load_ERR_strings(void); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define ERR_load_crypto_strings() \ + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +# define ERR_free_strings() while(0) continue +#endif + +DEPRECATEDIN_1_1_0(void ERR_remove_thread_state(void *)) +DEPRECATEDIN_1_0_0(void ERR_remove_state(unsigned long pid)) +ERR_STATE *ERR_get_state(void); + +int ERR_get_next_error_library(void); + +int ERR_set_mark(void); +int ERR_pop_to_mark(void); +int ERR_clear_last_mark(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin64/include/openssl/evp.h b/openSSL/lin64/include/openssl/evp.h new file mode 100644 index 0000000..a411f3f --- /dev/null +++ b/openSSL/lin64/include/openssl/evp.h @@ -0,0 +1,1666 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENVELOPE_H +# define HEADER_ENVELOPE_H + +# include +# include +# include +# include +# include + +# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ +# define EVP_MAX_KEY_LENGTH 64 +# define EVP_MAX_IV_LENGTH 16 +# define EVP_MAX_BLOCK_LENGTH 32 + +# define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +# define PKCS5_DEFAULT_ITER 2048 + +# include + +# define EVP_PK_RSA 0x0001 +# define EVP_PK_DSA 0x0002 +# define EVP_PK_DH 0x0004 +# define EVP_PK_EC 0x0008 +# define EVP_PKT_SIGN 0x0010 +# define EVP_PKT_ENC 0x0020 +# define EVP_PKT_EXCH 0x0040 +# define EVP_PKS_RSA 0x0100 +# define EVP_PKS_DSA 0x0200 +# define EVP_PKS_EC 0x0400 + +# define EVP_PKEY_NONE NID_undef +# define EVP_PKEY_RSA NID_rsaEncryption +# define EVP_PKEY_RSA2 NID_rsa +# define EVP_PKEY_RSA_PSS NID_rsassaPss +# define EVP_PKEY_DSA NID_dsa +# define EVP_PKEY_DSA1 NID_dsa_2 +# define EVP_PKEY_DSA2 NID_dsaWithSHA +# define EVP_PKEY_DSA3 NID_dsaWithSHA1 +# define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 +# define EVP_PKEY_DH NID_dhKeyAgreement +# define EVP_PKEY_DHX NID_dhpublicnumber +# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey +# define EVP_PKEY_SM2 NID_sm2 +# define EVP_PKEY_HMAC NID_hmac +# define EVP_PKEY_CMAC NID_cmac +# define EVP_PKEY_SCRYPT NID_id_scrypt +# define EVP_PKEY_TLS1_PRF NID_tls1_prf +# define EVP_PKEY_HKDF NID_hkdf +# define EVP_PKEY_POLY1305 NID_poly1305 +# define EVP_PKEY_SIPHASH NID_siphash +# define EVP_PKEY_X25519 NID_X25519 +# define EVP_PKEY_ED25519 NID_ED25519 +# define EVP_PKEY_X448 NID_X448 +# define EVP_PKEY_ED448 NID_ED448 + +#ifdef __cplusplus +extern "C" { +#endif + +# define EVP_PKEY_MO_SIGN 0x0001 +# define EVP_PKEY_MO_VERIFY 0x0002 +# define EVP_PKEY_MO_ENCRYPT 0x0004 +# define EVP_PKEY_MO_DECRYPT 0x0008 + +# ifndef EVP_MD +EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type); +EVP_MD *EVP_MD_meth_dup(const EVP_MD *md); +void EVP_MD_meth_free(EVP_MD *md); + +int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize); +int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize); +int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize); +int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags); +int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx)); +int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx, + const void *data, + size_t count)); +int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx, + unsigned char *md)); +int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to, + const EVP_MD_CTX *from)); +int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx)); +int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2)); + +int EVP_MD_meth_get_input_blocksize(const EVP_MD *md); +int EVP_MD_meth_get_result_size(const EVP_MD *md); +int EVP_MD_meth_get_app_datasize(const EVP_MD *md); +unsigned long EVP_MD_meth_get_flags(const EVP_MD *md); +int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx); +int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx, + const void *data, + size_t count); +int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx, + unsigned char *md); +int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to, + const EVP_MD_CTX *from); +int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx); +int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2); + +/* digest can only handle a single block */ +# define EVP_MD_FLAG_ONESHOT 0x0001 + +/* digest is extensible-output function, XOF */ +# define EVP_MD_FLAG_XOF 0x0002 + +/* DigestAlgorithmIdentifier flags... */ + +# define EVP_MD_FLAG_DIGALGID_MASK 0x0018 + +/* NULL or absent parameter accepted. Use NULL */ + +# define EVP_MD_FLAG_DIGALGID_NULL 0x0000 + +/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ + +# define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 + +/* Custom handling via ctrl */ + +# define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 + +/* Note if suitable for use in FIPS mode */ +# define EVP_MD_FLAG_FIPS 0x0400 + +/* Digest ctrls */ + +# define EVP_MD_CTRL_DIGALGID 0x1 +# define EVP_MD_CTRL_MICALG 0x2 +# define EVP_MD_CTRL_XOF_LEN 0x3 + +/* Minimum Algorithm specific ctrl value */ + +# define EVP_MD_CTRL_ALG_CTRL 0x1000 + +# endif /* !EVP_MD */ + +/* values for EVP_MD_CTX flags */ + +# define EVP_MD_CTX_FLAG_ONESHOT 0x0001/* digest update will be + * called once only */ +# define EVP_MD_CTX_FLAG_CLEANED 0x0002/* context has already been + * cleaned */ +# define EVP_MD_CTX_FLAG_REUSE 0x0004/* Don't free up ctx->md_data + * in EVP_MD_CTX_reset */ +/* + * FIPS and pad options are ignored in 1.0.0, definitions are here so we + * don't accidentally reuse the values for other purposes. + */ + +# define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008/* Allow use of non FIPS + * digest in FIPS mode */ + +/* + * The following PAD options are also currently ignored in 1.0.0, digest + * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() + * instead. + */ +# define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */ +# define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */ +# define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */ +# define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */ + +# define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */ +/* + * Some functions such as EVP_DigestSign only finalise copies of internal + * contexts so additional data can be included after the finalisation call. + * This is inefficient if this functionality is not required: it is disabled + * if the following flag is set. + */ +# define EVP_MD_CTX_FLAG_FINALISE 0x0200 +/* NOTE: 0x0400 is reserved for internal usage */ + +EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); +EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); +void EVP_CIPHER_meth_free(EVP_CIPHER *cipher); + +int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len); +int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags); +int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size); +int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher, + int (*init) (EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc)); +int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher, + int (*do_cipher) (EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl)); +int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, + int (*cleanup) (EVP_CIPHER_CTX *)); +int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, + int (*set_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, + int (*get_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, + int (*ctrl) (EVP_CIPHER_CTX *, int type, + int arg, void *ptr)); + +int (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc); +int (*EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl); +int (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *); +int (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +int (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + int type, int arg, + void *ptr); + +/* Values for cipher flags */ + +/* Modes for ciphers */ + +# define EVP_CIPH_STREAM_CIPHER 0x0 +# define EVP_CIPH_ECB_MODE 0x1 +# define EVP_CIPH_CBC_MODE 0x2 +# define EVP_CIPH_CFB_MODE 0x3 +# define EVP_CIPH_OFB_MODE 0x4 +# define EVP_CIPH_CTR_MODE 0x5 +# define EVP_CIPH_GCM_MODE 0x6 +# define EVP_CIPH_CCM_MODE 0x7 +# define EVP_CIPH_XTS_MODE 0x10001 +# define EVP_CIPH_WRAP_MODE 0x10002 +# define EVP_CIPH_OCB_MODE 0x10003 +# define EVP_CIPH_MODE 0xF0007 +/* Set if variable length cipher */ +# define EVP_CIPH_VARIABLE_LENGTH 0x8 +/* Set if the iv handling should be done by the cipher itself */ +# define EVP_CIPH_CUSTOM_IV 0x10 +/* Set if the cipher's init() function should be called if key is NULL */ +# define EVP_CIPH_ALWAYS_CALL_INIT 0x20 +/* Call ctrl() to init cipher parameters */ +# define EVP_CIPH_CTRL_INIT 0x40 +/* Don't use standard key length function */ +# define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 +/* Don't use standard block padding */ +# define EVP_CIPH_NO_PADDING 0x100 +/* cipher handles random key generation */ +# define EVP_CIPH_RAND_KEY 0x200 +/* cipher has its own additional copying logic */ +# define EVP_CIPH_CUSTOM_COPY 0x400 +/* Don't use standard iv length function */ +# define EVP_CIPH_CUSTOM_IV_LENGTH 0x800 +/* Allow use default ASN1 get/set iv */ +# define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 +/* Buffer length in bits not bytes: CFB1 mode only */ +# define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 +/* Note if suitable for use in FIPS mode */ +# define EVP_CIPH_FLAG_FIPS 0x4000 +/* Allow non FIPS cipher in FIPS mode */ +# define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x8000 +/* + * Cipher handles any and all padding logic as well as finalisation. + */ +# define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 +# define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 +# define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 +/* Cipher can handle pipeline operations */ +# define EVP_CIPH_FLAG_PIPELINE 0X800000 + +/* + * Cipher context flag to indicate we can handle wrap mode: if allowed in + * older applications it could overflow buffers. + */ + +# define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 + +/* ctrl() values */ + +# define EVP_CTRL_INIT 0x0 +# define EVP_CTRL_SET_KEY_LENGTH 0x1 +# define EVP_CTRL_GET_RC2_KEY_BITS 0x2 +# define EVP_CTRL_SET_RC2_KEY_BITS 0x3 +# define EVP_CTRL_GET_RC5_ROUNDS 0x4 +# define EVP_CTRL_SET_RC5_ROUNDS 0x5 +# define EVP_CTRL_RAND_KEY 0x6 +# define EVP_CTRL_PBE_PRF_NID 0x7 +# define EVP_CTRL_COPY 0x8 +# define EVP_CTRL_AEAD_SET_IVLEN 0x9 +# define EVP_CTRL_AEAD_GET_TAG 0x10 +# define EVP_CTRL_AEAD_SET_TAG 0x11 +# define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 +# define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +# define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +# define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +# define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +# define EVP_CTRL_GCM_IV_GEN 0x13 +# define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +# define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +# define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +# define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +# define EVP_CTRL_CCM_SET_L 0x14 +# define EVP_CTRL_CCM_SET_MSGLEN 0x15 +/* + * AEAD cipher deduces payload length and returns number of bytes required to + * store MAC and eventual padding. Subsequent call to EVP_Cipher even + * appends/verifies MAC. + */ +# define EVP_CTRL_AEAD_TLS1_AAD 0x16 +/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ +# define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 +/* Set the GCM invocation field, decrypt only */ +# define EVP_CTRL_GCM_SET_IV_INV 0x18 + +# define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 +# define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a +# define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b +# define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c + +# define EVP_CTRL_SSL3_MASTER_SECRET 0x1d + +/* EVP_CTRL_SET_SBOX takes the char * specifying S-boxes */ +# define EVP_CTRL_SET_SBOX 0x1e +/* + * EVP_CTRL_SBOX_USED takes a 'size_t' and 'char *', pointing at a + * pre-allocated buffer with specified size + */ +# define EVP_CTRL_SBOX_USED 0x1f +/* EVP_CTRL_KEY_MESH takes 'size_t' number of bytes to mesh the key after, + * 0 switches meshing off + */ +# define EVP_CTRL_KEY_MESH 0x20 +/* EVP_CTRL_BLOCK_PADDING_MODE takes the padding mode */ +# define EVP_CTRL_BLOCK_PADDING_MODE 0x21 + +/* Set the output buffers to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS 0x22 +/* Set the input buffers to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_INPUT_BUFS 0x23 +/* Set the input buffer lengths to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_INPUT_LENS 0x24 + +# define EVP_CTRL_GET_IVLEN 0x25 + +/* Padding modes */ +#define EVP_PADDING_PKCS7 1 +#define EVP_PADDING_ISO7816_4 2 +#define EVP_PADDING_ANSI923 3 +#define EVP_PADDING_ISO10126 4 +#define EVP_PADDING_ZERO 5 + +/* RFC 5246 defines additional data to be 13 bytes in length */ +# define EVP_AEAD_TLS1_AAD_LEN 13 + +typedef struct { + unsigned char *out; + const unsigned char *inp; + size_t len; + unsigned int interleave; +} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; + +/* GCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_GCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 +/* Length of tag for TLS */ +# define EVP_GCM_TLS_TAG_LEN 16 + +/* CCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_CCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_CCM_TLS_EXPLICIT_IV_LEN 8 +/* Total length of CCM IV length for TLS */ +# define EVP_CCM_TLS_IV_LEN 12 +/* Length of tag for TLS */ +# define EVP_CCM_TLS_TAG_LEN 16 +/* Length of CCM8 tag for TLS */ +# define EVP_CCM8_TLS_TAG_LEN 8 + +/* Length of tag for TLS */ +# define EVP_CHACHAPOLY_TLS_TAG_LEN 16 + +typedef struct evp_cipher_info_st { + const EVP_CIPHER *cipher; + unsigned char iv[EVP_MAX_IV_LENGTH]; +} EVP_CIPHER_INFO; + + +/* Password based encryption function */ +typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de); + +# ifndef OPENSSL_NO_RSA +# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ + (char *)(rsa)) +# endif + +# ifndef OPENSSL_NO_DSA +# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ + (char *)(dsa)) +# endif + +# ifndef OPENSSL_NO_DH +# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ + (char *)(dh)) +# endif + +# ifndef OPENSSL_NO_EC +# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\ + (char *)(eckey)) +# endif +# ifndef OPENSSL_NO_SIPHASH +# define EVP_PKEY_assign_SIPHASH(pkey,shkey) EVP_PKEY_assign((pkey),EVP_PKEY_SIPHASH,\ + (char *)(shkey)) +# endif + +# ifndef OPENSSL_NO_POLY1305 +# define EVP_PKEY_assign_POLY1305(pkey,polykey) EVP_PKEY_assign((pkey),EVP_PKEY_POLY1305,\ + (char *)(polykey)) +# endif + +/* Add some extra combinations */ +# define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) +# define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) +# define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) +# define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) + +int EVP_MD_type(const EVP_MD *md); +# define EVP_MD_nid(e) EVP_MD_type(e) +# define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) +int EVP_MD_pkey_type(const EVP_MD *md); +int EVP_MD_size(const EVP_MD *md); +int EVP_MD_block_size(const EVP_MD *md); +unsigned long EVP_MD_flags(const EVP_MD *md); + +const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); +int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, + const void *data, size_t count); +void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, + int (*update) (EVP_MD_CTX *ctx, + const void *data, size_t count)); +# define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e)) +EVP_PKEY_CTX *EVP_MD_CTX_pkey_ctx(const EVP_MD_CTX *ctx); +void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); +void *EVP_MD_CTX_md_data(const EVP_MD_CTX *ctx); + +int EVP_CIPHER_nid(const EVP_CIPHER *cipher); +# define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e)) +int EVP_CIPHER_block_size(const EVP_CIPHER *cipher); +int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher); +int EVP_CIPHER_key_length(const EVP_CIPHER *cipher); +int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher); +unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher); +# define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE) + +const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_encrypting(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); +const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx); +const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx); +unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx); +unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_num(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num); +int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); +void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); +void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx); +void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data); +# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) +# if OPENSSL_API_COMPAT < 0x10100000L +# define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(c)) +# endif +# define EVP_CIPHER_CTX_mode(c) EVP_CIPHER_mode(EVP_CIPHER_CTX_cipher(c)) + +# define EVP_ENCODE_LENGTH(l) ((((l)+2)/3*4)+((l)/48+1)*2+80) +# define EVP_DECODE_LENGTH(l) (((l)+3)/4*3+80) + +# define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_SignInit(a,b) EVP_DigestInit(a,b) +# define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_VerifyInit(a,b) EVP_DigestInit(a,b) +# define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) +# define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) +# define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) + +# ifdef CONST_STRICT +void BIO_set_md(BIO *, const EVP_MD *md); +# else +# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)(md)) +# endif +# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)(mdp)) +# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0, \ + (char *)(mdcp)) +# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0, \ + (char *)(mdcp)) +# define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL) +# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0, \ + (char *)(c_pp)) + +/*__owur*/ int EVP_Cipher(EVP_CIPHER_CTX *c, + unsigned char *out, + const unsigned char *in, unsigned int inl); + +# define EVP_add_cipher_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_add_digest_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_delete_cipher_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS); +# define EVP_delete_digest_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS); + +int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2); +EVP_MD_CTX *EVP_MD_CTX_new(void); +int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); +void EVP_MD_CTX_free(EVP_MD_CTX *ctx); +# define EVP_MD_CTX_create() EVP_MD_CTX_new() +# define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx)) +# define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx)) +__owur int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); +void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); +void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); +int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); +__owur int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, + ENGINE *impl); +__owur int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, + size_t cnt); +__owur int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_Digest(const void *data, size_t count, + unsigned char *md, unsigned int *size, + const EVP_MD *type, ENGINE *impl); + +__owur int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); +__owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); +__owur int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *md, + size_t len); + +int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); +int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, + const char *prompt, int verify); +void EVP_set_pw_prompt(const char *prompt); +char *EVP_get_pw_prompt(void); + +__owur int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, + const unsigned char *salt, + const unsigned char *data, int datal, int count, + unsigned char *key, unsigned char *iv); + +void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); +void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); +int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); + +__owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +/*__owur*/ int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +/*__owur*/ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +/*__owur*/ int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); +/*__owur*/ int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); + +__owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +/*__owur*/ int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +/*__owur*/ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +/*__owur*/ int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc); +/*__owur*/ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv, int enc); +__owur int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +__owur int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey); + +__owur int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); + +__owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, + size_t siglen, const unsigned char *tbs, + size_t tbslen); + +/*__owur*/ int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen); + +__owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen); + +# ifndef OPENSSL_NO_RSA +__owur int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + const unsigned char *ek, int ekl, + const unsigned char *iv, EVP_PKEY *priv); +__owur int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +__owur int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + unsigned char **ek, int *ekl, unsigned char *iv, + EVP_PKEY **pubk, int npubk); +__owur int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); +# endif + +EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void); +void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx); +int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, EVP_ENCODE_CTX *sctx); +int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); +void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); +int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); +int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned + char *out, int *outl); +int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define EVP_CIPHER_CTX_init(c) EVP_CIPHER_CTX_reset(c) +# define EVP_CIPHER_CTX_cleanup(c) EVP_CIPHER_CTX_reset(c) +# endif +EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); +int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *c); +int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); +int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); +int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); +int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); + +const BIO_METHOD *BIO_f_md(void); +const BIO_METHOD *BIO_f_base64(void); +const BIO_METHOD *BIO_f_cipher(void); +const BIO_METHOD *BIO_f_reliable(void); +__owur int BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, + const unsigned char *i, int enc); + +const EVP_MD *EVP_md_null(void); +# ifndef OPENSSL_NO_MD2 +const EVP_MD *EVP_md2(void); +# endif +# ifndef OPENSSL_NO_MD4 +const EVP_MD *EVP_md4(void); +# endif +# ifndef OPENSSL_NO_MD5 +const EVP_MD *EVP_md5(void); +const EVP_MD *EVP_md5_sha1(void); +# endif +# ifndef OPENSSL_NO_BLAKE2 +const EVP_MD *EVP_blake2b512(void); +const EVP_MD *EVP_blake2s256(void); +# endif +const EVP_MD *EVP_sha1(void); +const EVP_MD *EVP_sha224(void); +const EVP_MD *EVP_sha256(void); +const EVP_MD *EVP_sha384(void); +const EVP_MD *EVP_sha512(void); +const EVP_MD *EVP_sha512_224(void); +const EVP_MD *EVP_sha512_256(void); +const EVP_MD *EVP_sha3_224(void); +const EVP_MD *EVP_sha3_256(void); +const EVP_MD *EVP_sha3_384(void); +const EVP_MD *EVP_sha3_512(void); +const EVP_MD *EVP_shake128(void); +const EVP_MD *EVP_shake256(void); +# ifndef OPENSSL_NO_MDC2 +const EVP_MD *EVP_mdc2(void); +# endif +# ifndef OPENSSL_NO_RMD160 +const EVP_MD *EVP_ripemd160(void); +# endif +# ifndef OPENSSL_NO_WHIRLPOOL +const EVP_MD *EVP_whirlpool(void); +# endif +# ifndef OPENSSL_NO_SM3 +const EVP_MD *EVP_sm3(void); +# endif +const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ +# ifndef OPENSSL_NO_DES +const EVP_CIPHER *EVP_des_ecb(void); +const EVP_CIPHER *EVP_des_ede(void); +const EVP_CIPHER *EVP_des_ede3(void); +const EVP_CIPHER *EVP_des_ede_ecb(void); +const EVP_CIPHER *EVP_des_ede3_ecb(void); +const EVP_CIPHER *EVP_des_cfb64(void); +# define EVP_des_cfb EVP_des_cfb64 +const EVP_CIPHER *EVP_des_cfb1(void); +const EVP_CIPHER *EVP_des_cfb8(void); +const EVP_CIPHER *EVP_des_ede_cfb64(void); +# define EVP_des_ede_cfb EVP_des_ede_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb64(void); +# define EVP_des_ede3_cfb EVP_des_ede3_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb1(void); +const EVP_CIPHER *EVP_des_ede3_cfb8(void); +const EVP_CIPHER *EVP_des_ofb(void); +const EVP_CIPHER *EVP_des_ede_ofb(void); +const EVP_CIPHER *EVP_des_ede3_ofb(void); +const EVP_CIPHER *EVP_des_cbc(void); +const EVP_CIPHER *EVP_des_ede_cbc(void); +const EVP_CIPHER *EVP_des_ede3_cbc(void); +const EVP_CIPHER *EVP_desx_cbc(void); +const EVP_CIPHER *EVP_des_ede3_wrap(void); +/* + * This should now be supported through the dev_crypto ENGINE. But also, why + * are rc4 and md5 declarations made here inside a "NO_DES" precompiler + * branch? + */ +# endif +# ifndef OPENSSL_NO_RC4 +const EVP_CIPHER *EVP_rc4(void); +const EVP_CIPHER *EVP_rc4_40(void); +# ifndef OPENSSL_NO_MD5 +const EVP_CIPHER *EVP_rc4_hmac_md5(void); +# endif +# endif +# ifndef OPENSSL_NO_IDEA +const EVP_CIPHER *EVP_idea_ecb(void); +const EVP_CIPHER *EVP_idea_cfb64(void); +# define EVP_idea_cfb EVP_idea_cfb64 +const EVP_CIPHER *EVP_idea_ofb(void); +const EVP_CIPHER *EVP_idea_cbc(void); +# endif +# ifndef OPENSSL_NO_RC2 +const EVP_CIPHER *EVP_rc2_ecb(void); +const EVP_CIPHER *EVP_rc2_cbc(void); +const EVP_CIPHER *EVP_rc2_40_cbc(void); +const EVP_CIPHER *EVP_rc2_64_cbc(void); +const EVP_CIPHER *EVP_rc2_cfb64(void); +# define EVP_rc2_cfb EVP_rc2_cfb64 +const EVP_CIPHER *EVP_rc2_ofb(void); +# endif +# ifndef OPENSSL_NO_BF +const EVP_CIPHER *EVP_bf_ecb(void); +const EVP_CIPHER *EVP_bf_cbc(void); +const EVP_CIPHER *EVP_bf_cfb64(void); +# define EVP_bf_cfb EVP_bf_cfb64 +const EVP_CIPHER *EVP_bf_ofb(void); +# endif +# ifndef OPENSSL_NO_CAST +const EVP_CIPHER *EVP_cast5_ecb(void); +const EVP_CIPHER *EVP_cast5_cbc(void); +const EVP_CIPHER *EVP_cast5_cfb64(void); +# define EVP_cast5_cfb EVP_cast5_cfb64 +const EVP_CIPHER *EVP_cast5_ofb(void); +# endif +# ifndef OPENSSL_NO_RC5 +const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); +const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); +const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); +# define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 +const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); +# endif +const EVP_CIPHER *EVP_aes_128_ecb(void); +const EVP_CIPHER *EVP_aes_128_cbc(void); +const EVP_CIPHER *EVP_aes_128_cfb1(void); +const EVP_CIPHER *EVP_aes_128_cfb8(void); +const EVP_CIPHER *EVP_aes_128_cfb128(void); +# define EVP_aes_128_cfb EVP_aes_128_cfb128 +const EVP_CIPHER *EVP_aes_128_ofb(void); +const EVP_CIPHER *EVP_aes_128_ctr(void); +const EVP_CIPHER *EVP_aes_128_ccm(void); +const EVP_CIPHER *EVP_aes_128_gcm(void); +const EVP_CIPHER *EVP_aes_128_xts(void); +const EVP_CIPHER *EVP_aes_128_wrap(void); +const EVP_CIPHER *EVP_aes_128_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_128_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_192_ecb(void); +const EVP_CIPHER *EVP_aes_192_cbc(void); +const EVP_CIPHER *EVP_aes_192_cfb1(void); +const EVP_CIPHER *EVP_aes_192_cfb8(void); +const EVP_CIPHER *EVP_aes_192_cfb128(void); +# define EVP_aes_192_cfb EVP_aes_192_cfb128 +const EVP_CIPHER *EVP_aes_192_ofb(void); +const EVP_CIPHER *EVP_aes_192_ctr(void); +const EVP_CIPHER *EVP_aes_192_ccm(void); +const EVP_CIPHER *EVP_aes_192_gcm(void); +const EVP_CIPHER *EVP_aes_192_wrap(void); +const EVP_CIPHER *EVP_aes_192_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_192_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_256_ecb(void); +const EVP_CIPHER *EVP_aes_256_cbc(void); +const EVP_CIPHER *EVP_aes_256_cfb1(void); +const EVP_CIPHER *EVP_aes_256_cfb8(void); +const EVP_CIPHER *EVP_aes_256_cfb128(void); +# define EVP_aes_256_cfb EVP_aes_256_cfb128 +const EVP_CIPHER *EVP_aes_256_ofb(void); +const EVP_CIPHER *EVP_aes_256_ctr(void); +const EVP_CIPHER *EVP_aes_256_ccm(void); +const EVP_CIPHER *EVP_aes_256_gcm(void); +const EVP_CIPHER *EVP_aes_256_xts(void); +const EVP_CIPHER *EVP_aes_256_wrap(void); +const EVP_CIPHER *EVP_aes_256_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_256_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); +# ifndef OPENSSL_NO_ARIA +const EVP_CIPHER *EVP_aria_128_ecb(void); +const EVP_CIPHER *EVP_aria_128_cbc(void); +const EVP_CIPHER *EVP_aria_128_cfb1(void); +const EVP_CIPHER *EVP_aria_128_cfb8(void); +const EVP_CIPHER *EVP_aria_128_cfb128(void); +# define EVP_aria_128_cfb EVP_aria_128_cfb128 +const EVP_CIPHER *EVP_aria_128_ctr(void); +const EVP_CIPHER *EVP_aria_128_ofb(void); +const EVP_CIPHER *EVP_aria_128_gcm(void); +const EVP_CIPHER *EVP_aria_128_ccm(void); +const EVP_CIPHER *EVP_aria_192_ecb(void); +const EVP_CIPHER *EVP_aria_192_cbc(void); +const EVP_CIPHER *EVP_aria_192_cfb1(void); +const EVP_CIPHER *EVP_aria_192_cfb8(void); +const EVP_CIPHER *EVP_aria_192_cfb128(void); +# define EVP_aria_192_cfb EVP_aria_192_cfb128 +const EVP_CIPHER *EVP_aria_192_ctr(void); +const EVP_CIPHER *EVP_aria_192_ofb(void); +const EVP_CIPHER *EVP_aria_192_gcm(void); +const EVP_CIPHER *EVP_aria_192_ccm(void); +const EVP_CIPHER *EVP_aria_256_ecb(void); +const EVP_CIPHER *EVP_aria_256_cbc(void); +const EVP_CIPHER *EVP_aria_256_cfb1(void); +const EVP_CIPHER *EVP_aria_256_cfb8(void); +const EVP_CIPHER *EVP_aria_256_cfb128(void); +# define EVP_aria_256_cfb EVP_aria_256_cfb128 +const EVP_CIPHER *EVP_aria_256_ctr(void); +const EVP_CIPHER *EVP_aria_256_ofb(void); +const EVP_CIPHER *EVP_aria_256_gcm(void); +const EVP_CIPHER *EVP_aria_256_ccm(void); +# endif +# ifndef OPENSSL_NO_CAMELLIA +const EVP_CIPHER *EVP_camellia_128_ecb(void); +const EVP_CIPHER *EVP_camellia_128_cbc(void); +const EVP_CIPHER *EVP_camellia_128_cfb1(void); +const EVP_CIPHER *EVP_camellia_128_cfb8(void); +const EVP_CIPHER *EVP_camellia_128_cfb128(void); +# define EVP_camellia_128_cfb EVP_camellia_128_cfb128 +const EVP_CIPHER *EVP_camellia_128_ofb(void); +const EVP_CIPHER *EVP_camellia_128_ctr(void); +const EVP_CIPHER *EVP_camellia_192_ecb(void); +const EVP_CIPHER *EVP_camellia_192_cbc(void); +const EVP_CIPHER *EVP_camellia_192_cfb1(void); +const EVP_CIPHER *EVP_camellia_192_cfb8(void); +const EVP_CIPHER *EVP_camellia_192_cfb128(void); +# define EVP_camellia_192_cfb EVP_camellia_192_cfb128 +const EVP_CIPHER *EVP_camellia_192_ofb(void); +const EVP_CIPHER *EVP_camellia_192_ctr(void); +const EVP_CIPHER *EVP_camellia_256_ecb(void); +const EVP_CIPHER *EVP_camellia_256_cbc(void); +const EVP_CIPHER *EVP_camellia_256_cfb1(void); +const EVP_CIPHER *EVP_camellia_256_cfb8(void); +const EVP_CIPHER *EVP_camellia_256_cfb128(void); +# define EVP_camellia_256_cfb EVP_camellia_256_cfb128 +const EVP_CIPHER *EVP_camellia_256_ofb(void); +const EVP_CIPHER *EVP_camellia_256_ctr(void); +# endif +# ifndef OPENSSL_NO_CHACHA +const EVP_CIPHER *EVP_chacha20(void); +# ifndef OPENSSL_NO_POLY1305 +const EVP_CIPHER *EVP_chacha20_poly1305(void); +# endif +# endif + +# ifndef OPENSSL_NO_SEED +const EVP_CIPHER *EVP_seed_ecb(void); +const EVP_CIPHER *EVP_seed_cbc(void); +const EVP_CIPHER *EVP_seed_cfb128(void); +# define EVP_seed_cfb EVP_seed_cfb128 +const EVP_CIPHER *EVP_seed_ofb(void); +# endif + +# ifndef OPENSSL_NO_SM4 +const EVP_CIPHER *EVP_sm4_ecb(void); +const EVP_CIPHER *EVP_sm4_cbc(void); +const EVP_CIPHER *EVP_sm4_cfb128(void); +# define EVP_sm4_cfb EVP_sm4_cfb128 +const EVP_CIPHER *EVP_sm4_ofb(void); +const EVP_CIPHER *EVP_sm4_ctr(void); +# endif + +# if OPENSSL_API_COMPAT < 0x10100000L +# define OPENSSL_add_all_algorithms_conf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS \ + | OPENSSL_INIT_LOAD_CONFIG, NULL) +# define OPENSSL_add_all_algorithms_noconf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +# ifdef OPENSSL_LOAD_CONF +# define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_conf() +# else +# define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_noconf() +# endif + +# define OpenSSL_add_all_ciphers() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL) +# define OpenSSL_add_all_digests() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +# define EVP_cleanup() while(0) continue +# endif + +int EVP_add_cipher(const EVP_CIPHER *cipher); +int EVP_add_digest(const EVP_MD *digest); + +const EVP_CIPHER *EVP_get_cipherbyname(const char *name); +const EVP_MD *EVP_get_digestbyname(const char *name); + +void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_sorted(void (*fn) + (const EVP_CIPHER *ciph, const char *from, + const char *to, void *x), void *arg); + +void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_MD_do_all_sorted(void (*fn) + (const EVP_MD *ciph, const char *from, + const char *to, void *x), void *arg); + +int EVP_PKEY_decrypt_old(unsigned char *dec_key, + const unsigned char *enc_key, int enc_key_len, + EVP_PKEY *private_key); +int EVP_PKEY_encrypt_old(unsigned char *enc_key, + const unsigned char *key, int key_len, + EVP_PKEY *pub_key); +int EVP_PKEY_type(int type); +int EVP_PKEY_id(const EVP_PKEY *pkey); +int EVP_PKEY_base_id(const EVP_PKEY *pkey); +int EVP_PKEY_bits(const EVP_PKEY *pkey); +int EVP_PKEY_security_bits(const EVP_PKEY *pkey); +int EVP_PKEY_size(const EVP_PKEY *pkey); +int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); +int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); +int EVP_PKEY_set_alias_type(EVP_PKEY *pkey, int type); +# ifndef OPENSSL_NO_ENGINE +int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e); +ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey); +# endif +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +void *EVP_PKEY_get0(const EVP_PKEY *pkey); +const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); +# ifndef OPENSSL_NO_POLY1305 +const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len); +# endif +# ifndef OPENSSL_NO_SIPHASH +const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len); +# endif + +# ifndef OPENSSL_NO_RSA +struct rsa_st; +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +struct rsa_st *EVP_PKEY_get0_RSA(EVP_PKEY *pkey); +struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DSA +struct dsa_st; +int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); +struct dsa_st *EVP_PKEY_get0_DSA(EVP_PKEY *pkey); +struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DH +struct dh_st; +int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); +struct dh_st *EVP_PKEY_get0_DH(EVP_PKEY *pkey); +struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_EC +struct ec_key_st; +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); +struct ec_key_st *EVP_PKEY_get0_EC_KEY(EVP_PKEY *pkey); +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +# endif + +EVP_PKEY *EVP_PKEY_new(void); +int EVP_PKEY_up_ref(EVP_PKEY *pkey); +void EVP_PKEY_free(EVP_PKEY *pkey); + +EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp); + +EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp); + +int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); +int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); +int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); +int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); + +int EVP_PKEY_set1_tls_encodedpoint(EVP_PKEY *pkey, + const unsigned char *pt, size_t ptlen); +size_t EVP_PKEY_get1_tls_encodedpoint(EVP_PKEY *pkey, unsigned char **ppt); + +int EVP_CIPHER_type(const EVP_CIPHER *ctx); + +/* calls methods */ +int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* These are used by EVP_CIPHER methods */ +int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* PKCS5 password based encryption */ +int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + int keylen, unsigned char *out); +int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + const EVP_MD *digest, int keylen, unsigned char *out); +int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); + +#ifndef OPENSSL_NO_SCRYPT +int EVP_PBE_scrypt(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen); + +int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de); +#endif + +void PKCS5_PBE_add(void); + +int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); + +/* PBE type */ + +/* Can appear as the outermost AlgorithmIdentifier */ +# define EVP_PBE_TYPE_OUTER 0x0 +/* Is an PRF type OID */ +# define EVP_PBE_TYPE_PRF 0x1 +/* Is a PKCS#5 v2.0 KDF */ +# define EVP_PBE_TYPE_KDF 0x2 + +int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, + int md_nid, EVP_PBE_KEYGEN *keygen); +int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, + EVP_PBE_KEYGEN *keygen); +int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen); +void EVP_PBE_cleanup(void); +int EVP_PBE_get(int *ptype, int *ppbe_nid, size_t num); + +# define ASN1_PKEY_ALIAS 0x1 +# define ASN1_PKEY_DYNAMIC 0x2 +# define ASN1_PKEY_SIGPARAM_NULL 0x4 + +# define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 +# define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 +# define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 +# define ASN1_PKEY_CTRL_CMS_SIGN 0x5 +# define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 +# define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 + +# define ASN1_PKEY_CTRL_SET1_TLS_ENCPT 0x9 +# define ASN1_PKEY_CTRL_GET1_TLS_ENCPT 0xa + +int EVP_PKEY_asn1_get_count(void); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, + const char *str, int len); +int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); +int EVP_PKEY_asn1_add_alias(int to, int from); +int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, + int *ppkey_flags, const char **pinfo, + const char **ppem_str, + const EVP_PKEY_ASN1_METHOD *ameth); + +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(const EVP_PKEY *pkey); +EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, + const char *pem_str, + const char *info); +void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, + const EVP_PKEY_ASN1_METHOD *src); +void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); +void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, + int (*pub_decode) (EVP_PKEY *pk, + X509_PUBKEY *pub), + int (*pub_encode) (X509_PUBKEY *pub, + const EVP_PKEY *pk), + int (*pub_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*pub_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx), + int (*pkey_size) (const EVP_PKEY *pk), + int (*pkey_bits) (const EVP_PKEY *pk)); +void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, + int (*priv_decode) (EVP_PKEY *pk, + const PKCS8_PRIV_KEY_INFO + *p8inf), + int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8, + const EVP_PKEY *pk), + int (*priv_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); +void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, + int (*param_decode) (EVP_PKEY *pkey, + const unsigned char **pder, + int derlen), + int (*param_encode) (const EVP_PKEY *pkey, + unsigned char **pder), + int (*param_missing) (const EVP_PKEY *pk), + int (*param_copy) (EVP_PKEY *to, + const EVP_PKEY *from), + int (*param_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*param_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); + +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, + void (*pkey_free) (EVP_PKEY *pkey)); +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_ctrl) (EVP_PKEY *pkey, int op, + long arg1, void *arg2)); +void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth, + int (*item_verify) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *a, + ASN1_BIT_STRING *sig, + EVP_PKEY *pkey), + int (*item_sign) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *alg1, + X509_ALGOR *alg2, + ASN1_BIT_STRING *sig)); + +void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD *ameth, + int (*siginf_set) (X509_SIG_INFO *siginf, + const X509_ALGOR *alg, + const ASN1_STRING *sig)); + +void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_pub_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_param_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_priv_key) (EVP_PKEY *pk, + const unsigned char + *priv, + size_t len)); +void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_pub_key) (EVP_PKEY *pk, + const unsigned char *pub, + size_t len)); +void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_priv_key) (const EVP_PKEY *pk, + unsigned char *priv, + size_t *len)); +void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_pub_key) (const EVP_PKEY *pk, + unsigned char *pub, + size_t *len)); + +void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_security_bits) (const EVP_PKEY + *pk)); + +# define EVP_PKEY_OP_UNDEFINED 0 +# define EVP_PKEY_OP_PARAMGEN (1<<1) +# define EVP_PKEY_OP_KEYGEN (1<<2) +# define EVP_PKEY_OP_SIGN (1<<3) +# define EVP_PKEY_OP_VERIFY (1<<4) +# define EVP_PKEY_OP_VERIFYRECOVER (1<<5) +# define EVP_PKEY_OP_SIGNCTX (1<<6) +# define EVP_PKEY_OP_VERIFYCTX (1<<7) +# define EVP_PKEY_OP_ENCRYPT (1<<8) +# define EVP_PKEY_OP_DECRYPT (1<<9) +# define EVP_PKEY_OP_DERIVE (1<<10) + +# define EVP_PKEY_OP_TYPE_SIG \ + (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \ + | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) + +# define EVP_PKEY_OP_TYPE_CRYPT \ + (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) + +# define EVP_PKEY_OP_TYPE_NOGEN \ + (EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT | EVP_PKEY_OP_DERIVE) + +# define EVP_PKEY_OP_TYPE_GEN \ + (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) + +# define EVP_PKEY_CTX_set_signature_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_signature_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_GET_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_mac_key(ctx, key, len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_SET_MAC_KEY, len, (void *)(key)) + +# define EVP_PKEY_CTRL_MD 1 +# define EVP_PKEY_CTRL_PEER_KEY 2 + +# define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 +# define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 + +# define EVP_PKEY_CTRL_PKCS7_SIGN 5 + +# define EVP_PKEY_CTRL_SET_MAC_KEY 6 + +# define EVP_PKEY_CTRL_DIGESTINIT 7 + +/* Used by GOST key encryption in TLS */ +# define EVP_PKEY_CTRL_SET_IV 8 + +# define EVP_PKEY_CTRL_CMS_ENCRYPT 9 +# define EVP_PKEY_CTRL_CMS_DECRYPT 10 +# define EVP_PKEY_CTRL_CMS_SIGN 11 + +# define EVP_PKEY_CTRL_CIPHER 12 + +# define EVP_PKEY_CTRL_GET_MD 13 + +# define EVP_PKEY_CTRL_SET_DIGEST_SIZE 14 + +# define EVP_PKEY_ALG_CTRL 0x1000 + +# define EVP_PKEY_FLAG_AUTOARGLEN 2 +/* + * Method handles all operations: don't assume any digest related defaults. + */ +# define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 + +const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); +EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); +void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, + const EVP_PKEY_METHOD *meth); +void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src); +void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); +int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); +int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth); +size_t EVP_PKEY_meth_get_count(void); +const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx); + +EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, int p1, void *p2); +int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, + const char *value); +int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, uint64_t value); + +int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); +int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); + +int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md); + +int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); + +EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, + const unsigned char *key, int keylen); +EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e, + const unsigned char *priv, + size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e, + const unsigned char *pub, + size_t len); +int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv, + size_t *len); +int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub, + size_t *len); + +EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, + size_t len, const EVP_CIPHER *cipher); + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx); +EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); + +EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, + const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, + unsigned char *rout, size_t *routlen, + const unsigned char *sig, size_t siglen); +int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); +int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); + +int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); +int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); + +typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); +EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); + +void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, + int (*copy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, + void (*cleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, + int (*paramgen_init) (EVP_PKEY_CTX *ctx), + int (*paramgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, + int (*keygen_init) (EVP_PKEY_CTX *ctx), + int (*keygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, + int (*sign_init) (EVP_PKEY_CTX *ctx), + int (*sign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, + int (*verify_init) (EVP_PKEY_CTX *ctx), + int (*verify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, + int (*verify_recover_init) (EVP_PKEY_CTX + *ctx), + int (*verify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, + int (*signctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*signctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, + int (*verifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*verifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, + int (*encrypt_init) (EVP_PKEY_CTX *ctx), + int (*encryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, + int (*decrypt_init) (EVP_PKEY_CTX *ctx), + int (*decrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, + int (*derive_init) (EVP_PKEY_CTX *ctx), + int (*derive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, + int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (*ctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + +void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD *pmeth, + int (*digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD *pmeth, + int (*digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD *pmeth, + int (*digest_custom) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD *pmeth, + int (**pinit) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_copy(const EVP_PKEY_METHOD *pmeth, + int (**pcopy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_get_cleanup(const EVP_PKEY_METHOD *pmeth, + void (**pcleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_paramgen(const EVP_PKEY_METHOD *pmeth, + int (**pparamgen_init) (EVP_PKEY_CTX *ctx), + int (**pparamgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_keygen(const EVP_PKEY_METHOD *pmeth, + int (**pkeygen_init) (EVP_PKEY_CTX *ctx), + int (**pkeygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_sign(const EVP_PKEY_METHOD *pmeth, + int (**psign_init) (EVP_PKEY_CTX *ctx), + int (**psign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify(const EVP_PKEY_METHOD *pmeth, + int (**pverify_init) (EVP_PKEY_CTX *ctx), + int (**pverify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify_recover(const EVP_PKEY_METHOD *pmeth, + int (**pverify_recover_init) (EVP_PKEY_CTX + *ctx), + int (**pverify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_signctx(const EVP_PKEY_METHOD *pmeth, + int (**psignctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**psignctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_verifyctx(const EVP_PKEY_METHOD *pmeth, + int (**pverifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**pverifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_encrypt(const EVP_PKEY_METHOD *pmeth, + int (**pencrypt_init) (EVP_PKEY_CTX *ctx), + int (**pencryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_decrypt(const EVP_PKEY_METHOD *pmeth, + int (**pdecrypt_init) (EVP_PKEY_CTX *ctx), + int (**pdecrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_derive(const EVP_PKEY_METHOD *pmeth, + int (**pderive_init) (EVP_PKEY_CTX *ctx), + int (**pderive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_get_ctrl(const EVP_PKEY_METHOD *pmeth, + int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (**pctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + +void EVP_PKEY_meth_get_digestsign(EVP_PKEY_METHOD *pmeth, + int (**digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_digestverify(EVP_PKEY_METHOD *pmeth, + int (**digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_digest_custom(EVP_PKEY_METHOD *pmeth, + int (**pdigest_custom) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx)); +void EVP_add_alg_module(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/evperr.h b/openSSL/lin64/include/openssl/evperr.h new file mode 100644 index 0000000..b4ea90a --- /dev/null +++ b/openSSL/lin64/include/openssl/evperr.h @@ -0,0 +1,204 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EVPERR_H +# define HEADER_EVPERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_EVP_strings(void); + +/* + * EVP function codes. + */ +# define EVP_F_AESNI_INIT_KEY 165 +# define EVP_F_AESNI_XTS_INIT_KEY 207 +# define EVP_F_AES_GCM_CTRL 196 +# define EVP_F_AES_INIT_KEY 133 +# define EVP_F_AES_OCB_CIPHER 169 +# define EVP_F_AES_T4_INIT_KEY 178 +# define EVP_F_AES_T4_XTS_INIT_KEY 208 +# define EVP_F_AES_WRAP_CIPHER 170 +# define EVP_F_AES_XTS_INIT_KEY 209 +# define EVP_F_ALG_MODULE_INIT 177 +# define EVP_F_ARIA_CCM_INIT_KEY 175 +# define EVP_F_ARIA_GCM_CTRL 197 +# define EVP_F_ARIA_GCM_INIT_KEY 176 +# define EVP_F_ARIA_INIT_KEY 185 +# define EVP_F_B64_NEW 198 +# define EVP_F_CAMELLIA_INIT_KEY 159 +# define EVP_F_CHACHA20_POLY1305_CTRL 182 +# define EVP_F_CMLL_T4_INIT_KEY 179 +# define EVP_F_DES_EDE3_WRAP_CIPHER 171 +# define EVP_F_DO_SIGVER_INIT 161 +# define EVP_F_ENC_NEW 199 +# define EVP_F_EVP_CIPHERINIT_EX 123 +# define EVP_F_EVP_CIPHER_ASN1_TO_PARAM 204 +# define EVP_F_EVP_CIPHER_CTX_COPY 163 +# define EVP_F_EVP_CIPHER_CTX_CTRL 124 +# define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 +# define EVP_F_EVP_CIPHER_PARAM_TO_ASN1 205 +# define EVP_F_EVP_DECRYPTFINAL_EX 101 +# define EVP_F_EVP_DECRYPTUPDATE 166 +# define EVP_F_EVP_DIGESTFINALXOF 174 +# define EVP_F_EVP_DIGESTINIT_EX 128 +# define EVP_F_EVP_ENCRYPTDECRYPTUPDATE 219 +# define EVP_F_EVP_ENCRYPTFINAL_EX 127 +# define EVP_F_EVP_ENCRYPTUPDATE 167 +# define EVP_F_EVP_MD_CTX_COPY_EX 110 +# define EVP_F_EVP_MD_SIZE 162 +# define EVP_F_EVP_OPENINIT 102 +# define EVP_F_EVP_PBE_ALG_ADD 115 +# define EVP_F_EVP_PBE_ALG_ADD_TYPE 160 +# define EVP_F_EVP_PBE_CIPHERINIT 116 +# define EVP_F_EVP_PBE_SCRYPT 181 +# define EVP_F_EVP_PKCS82PKEY 111 +# define EVP_F_EVP_PKEY2PKCS8 113 +# define EVP_F_EVP_PKEY_ASN1_ADD0 188 +# define EVP_F_EVP_PKEY_CHECK 186 +# define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 +# define EVP_F_EVP_PKEY_CTX_CTRL 137 +# define EVP_F_EVP_PKEY_CTX_CTRL_STR 150 +# define EVP_F_EVP_PKEY_CTX_DUP 156 +# define EVP_F_EVP_PKEY_CTX_MD 168 +# define EVP_F_EVP_PKEY_DECRYPT 104 +# define EVP_F_EVP_PKEY_DECRYPT_INIT 138 +# define EVP_F_EVP_PKEY_DECRYPT_OLD 151 +# define EVP_F_EVP_PKEY_DERIVE 153 +# define EVP_F_EVP_PKEY_DERIVE_INIT 154 +# define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155 +# define EVP_F_EVP_PKEY_ENCRYPT 105 +# define EVP_F_EVP_PKEY_ENCRYPT_INIT 139 +# define EVP_F_EVP_PKEY_ENCRYPT_OLD 152 +# define EVP_F_EVP_PKEY_GET0_DH 119 +# define EVP_F_EVP_PKEY_GET0_DSA 120 +# define EVP_F_EVP_PKEY_GET0_EC_KEY 131 +# define EVP_F_EVP_PKEY_GET0_HMAC 183 +# define EVP_F_EVP_PKEY_GET0_POLY1305 184 +# define EVP_F_EVP_PKEY_GET0_RSA 121 +# define EVP_F_EVP_PKEY_GET0_SIPHASH 172 +# define EVP_F_EVP_PKEY_GET_RAW_PRIVATE_KEY 202 +# define EVP_F_EVP_PKEY_GET_RAW_PUBLIC_KEY 203 +# define EVP_F_EVP_PKEY_KEYGEN 146 +# define EVP_F_EVP_PKEY_KEYGEN_INIT 147 +# define EVP_F_EVP_PKEY_METH_ADD0 194 +# define EVP_F_EVP_PKEY_METH_NEW 195 +# define EVP_F_EVP_PKEY_NEW 106 +# define EVP_F_EVP_PKEY_NEW_CMAC_KEY 193 +# define EVP_F_EVP_PKEY_NEW_RAW_PRIVATE_KEY 191 +# define EVP_F_EVP_PKEY_NEW_RAW_PUBLIC_KEY 192 +# define EVP_F_EVP_PKEY_PARAMGEN 148 +# define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 +# define EVP_F_EVP_PKEY_PARAM_CHECK 189 +# define EVP_F_EVP_PKEY_PUBLIC_CHECK 190 +# define EVP_F_EVP_PKEY_SET1_ENGINE 187 +# define EVP_F_EVP_PKEY_SET_ALIAS_TYPE 206 +# define EVP_F_EVP_PKEY_SIGN 140 +# define EVP_F_EVP_PKEY_SIGN_INIT 141 +# define EVP_F_EVP_PKEY_VERIFY 142 +# define EVP_F_EVP_PKEY_VERIFY_INIT 143 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER 144 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145 +# define EVP_F_EVP_SIGNFINAL 107 +# define EVP_F_EVP_VERIFYFINAL 108 +# define EVP_F_INT_CTX_NEW 157 +# define EVP_F_OK_NEW 200 +# define EVP_F_PKCS5_PBE_KEYIVGEN 117 +# define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 +# define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164 +# define EVP_F_PKCS5_V2_SCRYPT_KEYIVGEN 180 +# define EVP_F_PKEY_SET_TYPE 158 +# define EVP_F_RC2_MAGIC_TO_METH 109 +# define EVP_F_RC5_CTRL 125 +# define EVP_F_R_32_12_16_INIT_KEY 242 +# define EVP_F_S390X_AES_GCM_CTRL 201 +# define EVP_F_UPDATE 173 + +/* + * EVP reason codes. + */ +# define EVP_R_AES_KEY_SETUP_FAILED 143 +# define EVP_R_ARIA_KEY_SETUP_FAILED 176 +# define EVP_R_BAD_DECRYPT 100 +# define EVP_R_BAD_KEY_LENGTH 195 +# define EVP_R_BUFFER_TOO_SMALL 155 +# define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 +# define EVP_R_CIPHER_PARAMETER_ERROR 122 +# define EVP_R_COMMAND_NOT_SUPPORTED 147 +# define EVP_R_COPY_ERROR 173 +# define EVP_R_CTRL_NOT_IMPLEMENTED 132 +# define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 +# define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 +# define EVP_R_DECODE_ERROR 114 +# define EVP_R_DIFFERENT_KEY_TYPES 101 +# define EVP_R_DIFFERENT_PARAMETERS 153 +# define EVP_R_ERROR_LOADING_SECTION 165 +# define EVP_R_ERROR_SETTING_FIPS_MODE 166 +# define EVP_R_EXPECTING_AN_HMAC_KEY 174 +# define EVP_R_EXPECTING_AN_RSA_KEY 127 +# define EVP_R_EXPECTING_A_DH_KEY 128 +# define EVP_R_EXPECTING_A_DSA_KEY 129 +# define EVP_R_EXPECTING_A_EC_KEY 142 +# define EVP_R_EXPECTING_A_POLY1305_KEY 164 +# define EVP_R_EXPECTING_A_SIPHASH_KEY 175 +# define EVP_R_FIPS_MODE_NOT_SUPPORTED 167 +# define EVP_R_GET_RAW_KEY_FAILED 182 +# define EVP_R_ILLEGAL_SCRYPT_PARAMETERS 171 +# define EVP_R_INITIALIZATION_ERROR 134 +# define EVP_R_INPUT_NOT_INITIALIZED 111 +# define EVP_R_INVALID_DIGEST 152 +# define EVP_R_INVALID_FIPS_MODE 168 +# define EVP_R_INVALID_IV_LENGTH 194 +# define EVP_R_INVALID_KEY 163 +# define EVP_R_INVALID_KEY_LENGTH 130 +# define EVP_R_INVALID_OPERATION 148 +# define EVP_R_KEYGEN_FAILURE 120 +# define EVP_R_KEY_SETUP_FAILED 180 +# define EVP_R_MEMORY_LIMIT_EXCEEDED 172 +# define EVP_R_MESSAGE_DIGEST_IS_NULL 159 +# define EVP_R_METHOD_NOT_SUPPORTED 144 +# define EVP_R_MISSING_PARAMETERS 103 +# define EVP_R_NOT_XOF_OR_INVALID_LENGTH 178 +# define EVP_R_NO_CIPHER_SET 131 +# define EVP_R_NO_DEFAULT_DIGEST 158 +# define EVP_R_NO_DIGEST_SET 139 +# define EVP_R_NO_KEY_SET 154 +# define EVP_R_NO_OPERATION_SET 149 +# define EVP_R_ONLY_ONESHOT_SUPPORTED 177 +# define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +# define EVP_R_OPERATON_NOT_INITIALIZED 151 +# define EVP_R_OUTPUT_WOULD_OVERFLOW 184 +# define EVP_R_PARTIALLY_OVERLAPPING 162 +# define EVP_R_PBKDF2_ERROR 181 +# define EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED 179 +# define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 +# define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 +# define EVP_R_PUBLIC_KEY_NOT_RSA 106 +# define EVP_R_UNKNOWN_CIPHER 160 +# define EVP_R_UNKNOWN_DIGEST 161 +# define EVP_R_UNKNOWN_OPTION 169 +# define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +# define EVP_R_UNSUPPORTED_ALGORITHM 156 +# define EVP_R_UNSUPPORTED_CIPHER 107 +# define EVP_R_UNSUPPORTED_KEYLENGTH 123 +# define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 +# define EVP_R_UNSUPPORTED_KEY_SIZE 108 +# define EVP_R_UNSUPPORTED_NUMBER_OF_ROUNDS 135 +# define EVP_R_UNSUPPORTED_PRF 125 +# define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 +# define EVP_R_UNSUPPORTED_SALT_TYPE 126 +# define EVP_R_WRAP_MODE_NOT_ALLOWED 170 +# define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 +# define EVP_R_XTS_DUPLICATED_KEYS 183 + +#endif diff --git a/openSSL/lin64/include/openssl/hmac.h b/openSSL/lin64/include/openssl/hmac.h new file mode 100644 index 0000000..458efc1 --- /dev/null +++ b/openSSL/lin64/include/openssl/hmac.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_HMAC_H +# define HEADER_HMAC_H + +# include + +# include + +# if OPENSSL_API_COMPAT < 0x10200000L +# define HMAC_MAX_MD_CBLOCK 128 /* Deprecated */ +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +size_t HMAC_size(const HMAC_CTX *e); +HMAC_CTX *HMAC_CTX_new(void); +int HMAC_CTX_reset(HMAC_CTX *ctx); +void HMAC_CTX_free(HMAC_CTX *ctx); + +DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md)) + +/*__owur*/ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md, ENGINE *impl); +/*__owur*/ int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, + size_t len); +/*__owur*/ int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, + unsigned int *len); +unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, + const unsigned char *d, size_t n, unsigned char *md, + unsigned int *md_len); +__owur int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); + +void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); +const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin64/include/openssl/idea.h b/openSSL/lin64/include/openssl/idea.h new file mode 100644 index 0000000..4334f3e --- /dev/null +++ b/openSSL/lin64/include/openssl/idea.h @@ -0,0 +1,64 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_IDEA_H +# define HEADER_IDEA_H + +# include + +# ifndef OPENSSL_NO_IDEA +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned int IDEA_INT; + +# define IDEA_ENCRYPT 1 +# define IDEA_DECRYPT 0 + +# define IDEA_BLOCK 8 +# define IDEA_KEY_LENGTH 16 + +typedef struct idea_key_st { + IDEA_INT data[9][6]; +} IDEA_KEY_SCHEDULE; + +const char *IDEA_options(void); +void IDEA_ecb_encrypt(const unsigned char *in, unsigned char *out, + IDEA_KEY_SCHEDULE *ks); +void IDEA_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks); +void IDEA_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk); +void IDEA_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int enc); +void IDEA_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int *num, int enc); +void IDEA_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int *num); +void IDEA_encrypt(unsigned long *in, IDEA_KEY_SCHEDULE *ks); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define idea_options IDEA_options +# define idea_ecb_encrypt IDEA_ecb_encrypt +# define idea_set_encrypt_key IDEA_set_encrypt_key +# define idea_set_decrypt_key IDEA_set_decrypt_key +# define idea_cbc_encrypt IDEA_cbc_encrypt +# define idea_cfb64_encrypt IDEA_cfb64_encrypt +# define idea_ofb64_encrypt IDEA_ofb64_encrypt +# define idea_encrypt IDEA_encrypt +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/kdf.h b/openSSL/lin64/include/openssl/kdf.h new file mode 100644 index 0000000..5abd4c3 --- /dev/null +++ b/openSSL/lin64/include/openssl/kdf.h @@ -0,0 +1,97 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_KDF_H +# define HEADER_KDF_H + +# include +#ifdef __cplusplus +extern "C" { +#endif + +# define EVP_PKEY_CTRL_TLS_MD (EVP_PKEY_ALG_CTRL) +# define EVP_PKEY_CTRL_TLS_SECRET (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_TLS_SEED (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_HKDF_MD (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_HKDF_SALT (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_HKDF_KEY (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_HKDF_INFO (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_HKDF_MODE (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_PASS (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_SCRYPT_SALT (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_SCRYPT_N (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_SCRYPT_R (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_SCRYPT_P (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES (EVP_PKEY_ALG_CTRL + 13) + +# define EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND 0 +# define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY 1 +# define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY 2 + +# define EVP_PKEY_CTX_set_tls1_prf_md(pctx, md) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set1_tls1_prf_secret(pctx, sec, seclen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_SECRET, seclen, (void *)(sec)) + +# define EVP_PKEY_CTX_add1_tls1_prf_seed(pctx, seed, seedlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_SEED, seedlen, (void *)(seed)) + +# define EVP_PKEY_CTX_set_hkdf_md(pctx, md) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set1_hkdf_salt(pctx, salt, saltlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_SALT, saltlen, (void *)(salt)) + +# define EVP_PKEY_CTX_set1_hkdf_key(pctx, key, keylen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_KEY, keylen, (void *)(key)) + +# define EVP_PKEY_CTX_add1_hkdf_info(pctx, info, infolen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_INFO, infolen, (void *)(info)) + +# define EVP_PKEY_CTX_hkdf_mode(pctx, mode) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_MODE, mode, NULL) + +# define EVP_PKEY_CTX_set1_pbe_pass(pctx, pass, passlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_PASS, passlen, (void *)(pass)) + +# define EVP_PKEY_CTX_set1_scrypt_salt(pctx, salt, saltlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_SALT, saltlen, (void *)(salt)) + +# define EVP_PKEY_CTX_set_scrypt_N(pctx, n) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_N, n) + +# define EVP_PKEY_CTX_set_scrypt_r(pctx, r) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_R, r) + +# define EVP_PKEY_CTX_set_scrypt_p(pctx, p) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_P, p) + +# define EVP_PKEY_CTX_set_scrypt_maxmem_bytes(pctx, maxmem_bytes) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES, maxmem_bytes) + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/kdferr.h b/openSSL/lin64/include/openssl/kdferr.h new file mode 100644 index 0000000..3f51bd0 --- /dev/null +++ b/openSSL/lin64/include/openssl/kdferr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_KDFERR_H +# define HEADER_KDFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_KDF_strings(void); + +/* + * KDF function codes. + */ +# define KDF_F_PKEY_HKDF_CTRL_STR 103 +# define KDF_F_PKEY_HKDF_DERIVE 102 +# define KDF_F_PKEY_HKDF_INIT 108 +# define KDF_F_PKEY_SCRYPT_CTRL_STR 104 +# define KDF_F_PKEY_SCRYPT_CTRL_UINT64 105 +# define KDF_F_PKEY_SCRYPT_DERIVE 109 +# define KDF_F_PKEY_SCRYPT_INIT 106 +# define KDF_F_PKEY_SCRYPT_SET_MEMBUF 107 +# define KDF_F_PKEY_TLS1_PRF_CTRL_STR 100 +# define KDF_F_PKEY_TLS1_PRF_DERIVE 101 +# define KDF_F_PKEY_TLS1_PRF_INIT 110 +# define KDF_F_TLS1_PRF_ALG 111 + +/* + * KDF reason codes. + */ +# define KDF_R_INVALID_DIGEST 100 +# define KDF_R_MISSING_ITERATION_COUNT 109 +# define KDF_R_MISSING_KEY 104 +# define KDF_R_MISSING_MESSAGE_DIGEST 105 +# define KDF_R_MISSING_PARAMETER 101 +# define KDF_R_MISSING_PASS 110 +# define KDF_R_MISSING_SALT 111 +# define KDF_R_MISSING_SECRET 107 +# define KDF_R_MISSING_SEED 106 +# define KDF_R_UNKNOWN_PARAMETER_TYPE 103 +# define KDF_R_VALUE_ERROR 108 +# define KDF_R_VALUE_MISSING 102 + +#endif diff --git a/openSSL/lin64/include/openssl/lhash.h b/openSSL/lin64/include/openssl/lhash.h new file mode 100644 index 0000000..2e42d72 --- /dev/null +++ b/openSSL/lin64/include/openssl/lhash.h @@ -0,0 +1,241 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Header for dynamic hash table routines Author - Eric Young + */ + +#ifndef HEADER_LHASH_H +# define HEADER_LHASH_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct lhash_node_st OPENSSL_LH_NODE; +typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef struct lhash_st OPENSSL_LHASH; + +/* + * Macros for declaring and implementing type-safe wrappers for LHASH + * callbacks. This way, callbacks can be provided to LHASH structures without + * function pointer casting and the macro-defined callbacks provide + * per-variable casting before deferring to the underlying type-specific + * callbacks. NB: It is possible to place a "static" in front of both the + * DECLARE and IMPLEMENT macros if the functions are strictly internal. + */ + +/* First: "hash" functions */ +# define DECLARE_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *); +# define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *arg) { \ + const o_type *a = arg; \ + return name##_hash(a); } +# define LHASH_HASH_FN(name) name##_LHASH_HASH + +/* Second: "compare" functions */ +# define DECLARE_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *, const void *); +# define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *arg1, const void *arg2) { \ + const o_type *a = arg1; \ + const o_type *b = arg2; \ + return name##_cmp(a,b); } +# define LHASH_COMP_FN(name) name##_LHASH_COMP + +/* Fourth: "doall_arg" functions */ +# define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *, void *); +# define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) { \ + o_type *a = arg1; \ + a_type *b = arg2; \ + name##_doall_arg(a, b); } +# define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG + + +# define LH_LOAD_MULT 256 + +int OPENSSL_LH_error(OPENSSL_LHASH *lh); +OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +void OPENSSL_LH_free(OPENSSL_LHASH *lh); +void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); +void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); +void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); +void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +unsigned long OPENSSL_LH_strhash(const char *c); +unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); +unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); +void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); + +# ifndef OPENSSL_NO_STDIO +void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define _LHASH OPENSSL_LHASH +# define LHASH_NODE OPENSSL_LH_NODE +# define lh_error OPENSSL_LH_error +# define lh_new OPENSSL_LH_new +# define lh_free OPENSSL_LH_free +# define lh_insert OPENSSL_LH_insert +# define lh_delete OPENSSL_LH_delete +# define lh_retrieve OPENSSL_LH_retrieve +# define lh_doall OPENSSL_LH_doall +# define lh_doall_arg OPENSSL_LH_doall_arg +# define lh_strhash OPENSSL_LH_strhash +# define lh_num_items OPENSSL_LH_num_items +# ifndef OPENSSL_NO_STDIO +# define lh_stats OPENSSL_LH_stats +# define lh_node_stats OPENSSL_LH_node_stats +# define lh_node_usage_stats OPENSSL_LH_node_usage_stats +# endif +# define lh_stats_bio OPENSSL_LH_stats_bio +# define lh_node_stats_bio OPENSSL_LH_node_stats_bio +# define lh_node_usage_stats_bio OPENSSL_LH_node_usage_stats_bio +# endif + +/* Type checking... */ + +# define LHASH_OF(type) struct lhash_st_##type + +# define DEFINE_LHASH_OF(type) \ + LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ + { \ + return (LHASH_OF(type) *) \ + OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + } \ + static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + { \ + return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + { \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + } \ + static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ + void (*doall)(type *)) \ + { \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + } \ + LHASH_OF(type) + +#define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ + int_implement_lhash_doall(type, argtype, const type) + +#define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \ + int_implement_lhash_doall(type, argtype, type) + +#define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ + void (*fn)(cbargtype *, argtype *), \ + argtype *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + } \ + LHASH_OF(type) + +DEFINE_LHASH_OF(OPENSSL_STRING); +# ifdef _MSC_VER +/* + * push and pop this warning: + * warning C4090: 'function': different 'const' qualifiers + */ +# pragma warning (push) +# pragma warning (disable: 4090) +# endif + +DEFINE_LHASH_OF(OPENSSL_CSTRING); + +# ifdef _MSC_VER +# pragma warning (pop) +# endif + +/* + * If called without higher optimization (min. -xO3) the Oracle Developer + * Studio compiler generates code for the defined (static inline) functions + * above. + * This would later lead to the linker complaining about missing symbols when + * this header file is included but the resulting object is not linked against + * the Crypto library (openssl#6912). + */ +# ifdef __SUNPRO_C +# pragma weak OPENSSL_LH_new +# pragma weak OPENSSL_LH_free +# pragma weak OPENSSL_LH_insert +# pragma weak OPENSSL_LH_delete +# pragma weak OPENSSL_LH_retrieve +# pragma weak OPENSSL_LH_error +# pragma weak OPENSSL_LH_num_items +# pragma weak OPENSSL_LH_node_stats_bio +# pragma weak OPENSSL_LH_node_usage_stats_bio +# pragma weak OPENSSL_LH_stats_bio +# pragma weak OPENSSL_LH_get_down_load +# pragma weak OPENSSL_LH_set_down_load +# pragma weak OPENSSL_LH_doall +# pragma weak OPENSSL_LH_doall_arg +# endif /* __SUNPRO_C */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin64/include/openssl/md2.h b/openSSL/lin64/include/openssl/md2.h new file mode 100644 index 0000000..7faf8e3 --- /dev/null +++ b/openSSL/lin64/include/openssl/md2.h @@ -0,0 +1,44 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD2_H +# define HEADER_MD2_H + +# include + +# ifndef OPENSSL_NO_MD2 +# include +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned char MD2_INT; + +# define MD2_DIGEST_LENGTH 16 +# define MD2_BLOCK 16 + +typedef struct MD2state_st { + unsigned int num; + unsigned char data[MD2_BLOCK]; + MD2_INT cksm[MD2_BLOCK]; + MD2_INT state[MD2_BLOCK]; +} MD2_CTX; + +const char *MD2_options(void); +int MD2_Init(MD2_CTX *c); +int MD2_Update(MD2_CTX *c, const unsigned char *data, size_t len); +int MD2_Final(unsigned char *md, MD2_CTX *c); +unsigned char *MD2(const unsigned char *d, size_t n, unsigned char *md); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/md4.h b/openSSL/lin64/include/openssl/md4.h new file mode 100644 index 0000000..940e29d --- /dev/null +++ b/openSSL/lin64/include/openssl/md4.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD4_H +# define HEADER_MD4_H + +# include + +# ifndef OPENSSL_NO_MD4 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD4_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define MD4_LONG unsigned int + +# define MD4_CBLOCK 64 +# define MD4_LBLOCK (MD4_CBLOCK/4) +# define MD4_DIGEST_LENGTH 16 + +typedef struct MD4state_st { + MD4_LONG A, B, C, D; + MD4_LONG Nl, Nh; + MD4_LONG data[MD4_LBLOCK]; + unsigned int num; +} MD4_CTX; + +int MD4_Init(MD4_CTX *c); +int MD4_Update(MD4_CTX *c, const void *data, size_t len); +int MD4_Final(unsigned char *md, MD4_CTX *c); +unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md); +void MD4_Transform(MD4_CTX *c, const unsigned char *b); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/md5.h b/openSSL/lin64/include/openssl/md5.h new file mode 100644 index 0000000..2deb772 --- /dev/null +++ b/openSSL/lin64/include/openssl/md5.h @@ -0,0 +1,50 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD5_H +# define HEADER_MD5_H + +# include + +# ifndef OPENSSL_NO_MD5 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD5_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define MD5_LONG unsigned int + +# define MD5_CBLOCK 64 +# define MD5_LBLOCK (MD5_CBLOCK/4) +# define MD5_DIGEST_LENGTH 16 + +typedef struct MD5state_st { + MD5_LONG A, B, C, D; + MD5_LONG Nl, Nh; + MD5_LONG data[MD5_LBLOCK]; + unsigned int num; +} MD5_CTX; + +int MD5_Init(MD5_CTX *c); +int MD5_Update(MD5_CTX *c, const void *data, size_t len); +int MD5_Final(unsigned char *md, MD5_CTX *c); +unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md); +void MD5_Transform(MD5_CTX *c, const unsigned char *b); +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/mdc2.h b/openSSL/lin64/include/openssl/mdc2.h new file mode 100644 index 0000000..aabd2bf --- /dev/null +++ b/openSSL/lin64/include/openssl/mdc2.h @@ -0,0 +1,42 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MDC2_H +# define HEADER_MDC2_H + +# include + +#ifndef OPENSSL_NO_MDC2 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define MDC2_BLOCK 8 +# define MDC2_DIGEST_LENGTH 16 + +typedef struct mdc2_ctx_st { + unsigned int num; + unsigned char data[MDC2_BLOCK]; + DES_cblock h, hh; + int pad_type; /* either 1 or 2, default 1 */ +} MDC2_CTX; + +int MDC2_Init(MDC2_CTX *c); +int MDC2_Update(MDC2_CTX *c, const unsigned char *data, size_t len); +int MDC2_Final(unsigned char *md, MDC2_CTX *c); +unsigned char *MDC2(const unsigned char *d, size_t n, unsigned char *md); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/modes.h b/openSSL/lin64/include/openssl/modes.h new file mode 100644 index 0000000..d544f98 --- /dev/null +++ b/openSSL/lin64/include/openssl/modes.h @@ -0,0 +1,208 @@ +/* + * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MODES_H +# define HEADER_MODES_H + +# include + +# ifdef __cplusplus +extern "C" { +# endif +typedef void (*block128_f) (const unsigned char in[16], + unsigned char out[16], const void *key); + +typedef void (*cbc128_f) (const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int enc); + +typedef void (*ctr128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16]); + +typedef void (*ccm128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16], + unsigned char cmac[16]); + +void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); +void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); + +void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], unsigned int *num, + block128_f block); + +void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], + unsigned int *num, ctr128_f ctr); + +void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + block128_f block); + +void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out, + size_t bits, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); + +size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +typedef struct gcm128_context GCM128_CONTEXT; + +GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block); +void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block); +void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv, + size_t len); +int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx); + +typedef struct ccm128_context CCM128_CONTEXT; + +void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx, + unsigned int M, unsigned int L, void *key, + block128_f block); +int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce, + size_t nlen, size_t mlen); +void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad, + size_t alen); +int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len); + +typedef struct xts128_context XTS128_CONTEXT; + +int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, + const unsigned char iv[16], + const unsigned char *inp, unsigned char *out, + size_t len, int enc); + +size_t CRYPTO_128_wrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); + +size_t CRYPTO_128_unwrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); +size_t CRYPTO_128_wrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); +size_t CRYPTO_128_unwrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); + +# ifndef OPENSSL_NO_OCB +typedef struct ocb128_context OCB128_CONTEXT; + +typedef void (*ocb128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + size_t start_block_num, + unsigned char offset_i[16], + const unsigned char L_[][16], + unsigned char checksum[16]); + +OCB128_CONTEXT *CRYPTO_ocb128_new(void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_init(OCB128_CONTEXT *ctx, void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_copy_ctx(OCB128_CONTEXT *dest, OCB128_CONTEXT *src, + void *keyenc, void *keydec); +int CRYPTO_ocb128_setiv(OCB128_CONTEXT *ctx, const unsigned char *iv, + size_t len, size_t taglen); +int CRYPTO_ocb128_aad(OCB128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_ocb128_encrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_decrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_finish(OCB128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +int CRYPTO_ocb128_tag(OCB128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_ocb128_cleanup(OCB128_CONTEXT *ctx); +# endif /* OPENSSL_NO_OCB */ + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/obj_mac.h b/openSSL/lin64/include/openssl/obj_mac.h new file mode 100644 index 0000000..53516a0 --- /dev/null +++ b/openSSL/lin64/include/openssl/obj_mac.h @@ -0,0 +1,5198 @@ +/* + * WARNING: do not edit! + * Generated by crypto/objects/objects.pl + * + * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define SN_undef "UNDEF" +#define LN_undef "undefined" +#define NID_undef 0 +#define OBJ_undef 0L + +#define SN_itu_t "ITU-T" +#define LN_itu_t "itu-t" +#define NID_itu_t 645 +#define OBJ_itu_t 0L + +#define NID_ccitt 404 +#define OBJ_ccitt OBJ_itu_t + +#define SN_iso "ISO" +#define LN_iso "iso" +#define NID_iso 181 +#define OBJ_iso 1L + +#define SN_joint_iso_itu_t "JOINT-ISO-ITU-T" +#define LN_joint_iso_itu_t "joint-iso-itu-t" +#define NID_joint_iso_itu_t 646 +#define OBJ_joint_iso_itu_t 2L + +#define NID_joint_iso_ccitt 393 +#define OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t + +#define SN_member_body "member-body" +#define LN_member_body "ISO Member Body" +#define NID_member_body 182 +#define OBJ_member_body OBJ_iso,2L + +#define SN_identified_organization "identified-organization" +#define NID_identified_organization 676 +#define OBJ_identified_organization OBJ_iso,3L + +#define SN_hmac_md5 "HMAC-MD5" +#define LN_hmac_md5 "hmac-md5" +#define NID_hmac_md5 780 +#define OBJ_hmac_md5 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,1L + +#define SN_hmac_sha1 "HMAC-SHA1" +#define LN_hmac_sha1 "hmac-sha1" +#define NID_hmac_sha1 781 +#define OBJ_hmac_sha1 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,2L + +#define SN_x509ExtAdmission "x509ExtAdmission" +#define LN_x509ExtAdmission "Professional Information or basis for Admission" +#define NID_x509ExtAdmission 1093 +#define OBJ_x509ExtAdmission OBJ_identified_organization,36L,8L,3L,3L + +#define SN_certicom_arc "certicom-arc" +#define NID_certicom_arc 677 +#define OBJ_certicom_arc OBJ_identified_organization,132L + +#define SN_ieee "ieee" +#define NID_ieee 1170 +#define OBJ_ieee OBJ_identified_organization,111L + +#define SN_ieee_siswg "ieee-siswg" +#define LN_ieee_siswg "IEEE Security in Storage Working Group" +#define NID_ieee_siswg 1171 +#define OBJ_ieee_siswg OBJ_ieee,2L,1619L + +#define SN_international_organizations "international-organizations" +#define LN_international_organizations "International Organizations" +#define NID_international_organizations 647 +#define OBJ_international_organizations OBJ_joint_iso_itu_t,23L + +#define SN_wap "wap" +#define NID_wap 678 +#define OBJ_wap OBJ_international_organizations,43L + +#define SN_wap_wsg "wap-wsg" +#define NID_wap_wsg 679 +#define OBJ_wap_wsg OBJ_wap,1L + +#define SN_selected_attribute_types "selected-attribute-types" +#define LN_selected_attribute_types "Selected Attribute Types" +#define NID_selected_attribute_types 394 +#define OBJ_selected_attribute_types OBJ_joint_iso_itu_t,5L,1L,5L + +#define SN_clearance "clearance" +#define NID_clearance 395 +#define OBJ_clearance OBJ_selected_attribute_types,55L + +#define SN_ISO_US "ISO-US" +#define LN_ISO_US "ISO US Member Body" +#define NID_ISO_US 183 +#define OBJ_ISO_US OBJ_member_body,840L + +#define SN_X9_57 "X9-57" +#define LN_X9_57 "X9.57" +#define NID_X9_57 184 +#define OBJ_X9_57 OBJ_ISO_US,10040L + +#define SN_X9cm "X9cm" +#define LN_X9cm "X9.57 CM ?" +#define NID_X9cm 185 +#define OBJ_X9cm OBJ_X9_57,4L + +#define SN_ISO_CN "ISO-CN" +#define LN_ISO_CN "ISO CN Member Body" +#define NID_ISO_CN 1140 +#define OBJ_ISO_CN OBJ_member_body,156L + +#define SN_oscca "oscca" +#define NID_oscca 1141 +#define OBJ_oscca OBJ_ISO_CN,10197L + +#define SN_sm_scheme "sm-scheme" +#define NID_sm_scheme 1142 +#define OBJ_sm_scheme OBJ_oscca,1L + +#define SN_dsa "DSA" +#define LN_dsa "dsaEncryption" +#define NID_dsa 116 +#define OBJ_dsa OBJ_X9cm,1L + +#define SN_dsaWithSHA1 "DSA-SHA1" +#define LN_dsaWithSHA1 "dsaWithSHA1" +#define NID_dsaWithSHA1 113 +#define OBJ_dsaWithSHA1 OBJ_X9cm,3L + +#define SN_ansi_X9_62 "ansi-X9-62" +#define LN_ansi_X9_62 "ANSI X9.62" +#define NID_ansi_X9_62 405 +#define OBJ_ansi_X9_62 OBJ_ISO_US,10045L + +#define OBJ_X9_62_id_fieldType OBJ_ansi_X9_62,1L + +#define SN_X9_62_prime_field "prime-field" +#define NID_X9_62_prime_field 406 +#define OBJ_X9_62_prime_field OBJ_X9_62_id_fieldType,1L + +#define SN_X9_62_characteristic_two_field "characteristic-two-field" +#define NID_X9_62_characteristic_two_field 407 +#define OBJ_X9_62_characteristic_two_field OBJ_X9_62_id_fieldType,2L + +#define SN_X9_62_id_characteristic_two_basis "id-characteristic-two-basis" +#define NID_X9_62_id_characteristic_two_basis 680 +#define OBJ_X9_62_id_characteristic_two_basis OBJ_X9_62_characteristic_two_field,3L + +#define SN_X9_62_onBasis "onBasis" +#define NID_X9_62_onBasis 681 +#define OBJ_X9_62_onBasis OBJ_X9_62_id_characteristic_two_basis,1L + +#define SN_X9_62_tpBasis "tpBasis" +#define NID_X9_62_tpBasis 682 +#define OBJ_X9_62_tpBasis OBJ_X9_62_id_characteristic_two_basis,2L + +#define SN_X9_62_ppBasis "ppBasis" +#define NID_X9_62_ppBasis 683 +#define OBJ_X9_62_ppBasis OBJ_X9_62_id_characteristic_two_basis,3L + +#define OBJ_X9_62_id_publicKeyType OBJ_ansi_X9_62,2L + +#define SN_X9_62_id_ecPublicKey "id-ecPublicKey" +#define NID_X9_62_id_ecPublicKey 408 +#define OBJ_X9_62_id_ecPublicKey OBJ_X9_62_id_publicKeyType,1L + +#define OBJ_X9_62_ellipticCurve OBJ_ansi_X9_62,3L + +#define OBJ_X9_62_c_TwoCurve OBJ_X9_62_ellipticCurve,0L + +#define SN_X9_62_c2pnb163v1 "c2pnb163v1" +#define NID_X9_62_c2pnb163v1 684 +#define OBJ_X9_62_c2pnb163v1 OBJ_X9_62_c_TwoCurve,1L + +#define SN_X9_62_c2pnb163v2 "c2pnb163v2" +#define NID_X9_62_c2pnb163v2 685 +#define OBJ_X9_62_c2pnb163v2 OBJ_X9_62_c_TwoCurve,2L + +#define SN_X9_62_c2pnb163v3 "c2pnb163v3" +#define NID_X9_62_c2pnb163v3 686 +#define OBJ_X9_62_c2pnb163v3 OBJ_X9_62_c_TwoCurve,3L + +#define SN_X9_62_c2pnb176v1 "c2pnb176v1" +#define NID_X9_62_c2pnb176v1 687 +#define OBJ_X9_62_c2pnb176v1 OBJ_X9_62_c_TwoCurve,4L + +#define SN_X9_62_c2tnb191v1 "c2tnb191v1" +#define NID_X9_62_c2tnb191v1 688 +#define OBJ_X9_62_c2tnb191v1 OBJ_X9_62_c_TwoCurve,5L + +#define SN_X9_62_c2tnb191v2 "c2tnb191v2" +#define NID_X9_62_c2tnb191v2 689 +#define OBJ_X9_62_c2tnb191v2 OBJ_X9_62_c_TwoCurve,6L + +#define SN_X9_62_c2tnb191v3 "c2tnb191v3" +#define NID_X9_62_c2tnb191v3 690 +#define OBJ_X9_62_c2tnb191v3 OBJ_X9_62_c_TwoCurve,7L + +#define SN_X9_62_c2onb191v4 "c2onb191v4" +#define NID_X9_62_c2onb191v4 691 +#define OBJ_X9_62_c2onb191v4 OBJ_X9_62_c_TwoCurve,8L + +#define SN_X9_62_c2onb191v5 "c2onb191v5" +#define NID_X9_62_c2onb191v5 692 +#define OBJ_X9_62_c2onb191v5 OBJ_X9_62_c_TwoCurve,9L + +#define SN_X9_62_c2pnb208w1 "c2pnb208w1" +#define NID_X9_62_c2pnb208w1 693 +#define OBJ_X9_62_c2pnb208w1 OBJ_X9_62_c_TwoCurve,10L + +#define SN_X9_62_c2tnb239v1 "c2tnb239v1" +#define NID_X9_62_c2tnb239v1 694 +#define OBJ_X9_62_c2tnb239v1 OBJ_X9_62_c_TwoCurve,11L + +#define SN_X9_62_c2tnb239v2 "c2tnb239v2" +#define NID_X9_62_c2tnb239v2 695 +#define OBJ_X9_62_c2tnb239v2 OBJ_X9_62_c_TwoCurve,12L + +#define SN_X9_62_c2tnb239v3 "c2tnb239v3" +#define NID_X9_62_c2tnb239v3 696 +#define OBJ_X9_62_c2tnb239v3 OBJ_X9_62_c_TwoCurve,13L + +#define SN_X9_62_c2onb239v4 "c2onb239v4" +#define NID_X9_62_c2onb239v4 697 +#define OBJ_X9_62_c2onb239v4 OBJ_X9_62_c_TwoCurve,14L + +#define SN_X9_62_c2onb239v5 "c2onb239v5" +#define NID_X9_62_c2onb239v5 698 +#define OBJ_X9_62_c2onb239v5 OBJ_X9_62_c_TwoCurve,15L + +#define SN_X9_62_c2pnb272w1 "c2pnb272w1" +#define NID_X9_62_c2pnb272w1 699 +#define OBJ_X9_62_c2pnb272w1 OBJ_X9_62_c_TwoCurve,16L + +#define SN_X9_62_c2pnb304w1 "c2pnb304w1" +#define NID_X9_62_c2pnb304w1 700 +#define OBJ_X9_62_c2pnb304w1 OBJ_X9_62_c_TwoCurve,17L + +#define SN_X9_62_c2tnb359v1 "c2tnb359v1" +#define NID_X9_62_c2tnb359v1 701 +#define OBJ_X9_62_c2tnb359v1 OBJ_X9_62_c_TwoCurve,18L + +#define SN_X9_62_c2pnb368w1 "c2pnb368w1" +#define NID_X9_62_c2pnb368w1 702 +#define OBJ_X9_62_c2pnb368w1 OBJ_X9_62_c_TwoCurve,19L + +#define SN_X9_62_c2tnb431r1 "c2tnb431r1" +#define NID_X9_62_c2tnb431r1 703 +#define OBJ_X9_62_c2tnb431r1 OBJ_X9_62_c_TwoCurve,20L + +#define OBJ_X9_62_primeCurve OBJ_X9_62_ellipticCurve,1L + +#define SN_X9_62_prime192v1 "prime192v1" +#define NID_X9_62_prime192v1 409 +#define OBJ_X9_62_prime192v1 OBJ_X9_62_primeCurve,1L + +#define SN_X9_62_prime192v2 "prime192v2" +#define NID_X9_62_prime192v2 410 +#define OBJ_X9_62_prime192v2 OBJ_X9_62_primeCurve,2L + +#define SN_X9_62_prime192v3 "prime192v3" +#define NID_X9_62_prime192v3 411 +#define OBJ_X9_62_prime192v3 OBJ_X9_62_primeCurve,3L + +#define SN_X9_62_prime239v1 "prime239v1" +#define NID_X9_62_prime239v1 412 +#define OBJ_X9_62_prime239v1 OBJ_X9_62_primeCurve,4L + +#define SN_X9_62_prime239v2 "prime239v2" +#define NID_X9_62_prime239v2 413 +#define OBJ_X9_62_prime239v2 OBJ_X9_62_primeCurve,5L + +#define SN_X9_62_prime239v3 "prime239v3" +#define NID_X9_62_prime239v3 414 +#define OBJ_X9_62_prime239v3 OBJ_X9_62_primeCurve,6L + +#define SN_X9_62_prime256v1 "prime256v1" +#define NID_X9_62_prime256v1 415 +#define OBJ_X9_62_prime256v1 OBJ_X9_62_primeCurve,7L + +#define OBJ_X9_62_id_ecSigType OBJ_ansi_X9_62,4L + +#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1" +#define NID_ecdsa_with_SHA1 416 +#define OBJ_ecdsa_with_SHA1 OBJ_X9_62_id_ecSigType,1L + +#define SN_ecdsa_with_Recommended "ecdsa-with-Recommended" +#define NID_ecdsa_with_Recommended 791 +#define OBJ_ecdsa_with_Recommended OBJ_X9_62_id_ecSigType,2L + +#define SN_ecdsa_with_Specified "ecdsa-with-Specified" +#define NID_ecdsa_with_Specified 792 +#define OBJ_ecdsa_with_Specified OBJ_X9_62_id_ecSigType,3L + +#define SN_ecdsa_with_SHA224 "ecdsa-with-SHA224" +#define NID_ecdsa_with_SHA224 793 +#define OBJ_ecdsa_with_SHA224 OBJ_ecdsa_with_Specified,1L + +#define SN_ecdsa_with_SHA256 "ecdsa-with-SHA256" +#define NID_ecdsa_with_SHA256 794 +#define OBJ_ecdsa_with_SHA256 OBJ_ecdsa_with_Specified,2L + +#define SN_ecdsa_with_SHA384 "ecdsa-with-SHA384" +#define NID_ecdsa_with_SHA384 795 +#define OBJ_ecdsa_with_SHA384 OBJ_ecdsa_with_Specified,3L + +#define SN_ecdsa_with_SHA512 "ecdsa-with-SHA512" +#define NID_ecdsa_with_SHA512 796 +#define OBJ_ecdsa_with_SHA512 OBJ_ecdsa_with_Specified,4L + +#define OBJ_secg_ellipticCurve OBJ_certicom_arc,0L + +#define SN_secp112r1 "secp112r1" +#define NID_secp112r1 704 +#define OBJ_secp112r1 OBJ_secg_ellipticCurve,6L + +#define SN_secp112r2 "secp112r2" +#define NID_secp112r2 705 +#define OBJ_secp112r2 OBJ_secg_ellipticCurve,7L + +#define SN_secp128r1 "secp128r1" +#define NID_secp128r1 706 +#define OBJ_secp128r1 OBJ_secg_ellipticCurve,28L + +#define SN_secp128r2 "secp128r2" +#define NID_secp128r2 707 +#define OBJ_secp128r2 OBJ_secg_ellipticCurve,29L + +#define SN_secp160k1 "secp160k1" +#define NID_secp160k1 708 +#define OBJ_secp160k1 OBJ_secg_ellipticCurve,9L + +#define SN_secp160r1 "secp160r1" +#define NID_secp160r1 709 +#define OBJ_secp160r1 OBJ_secg_ellipticCurve,8L + +#define SN_secp160r2 "secp160r2" +#define NID_secp160r2 710 +#define OBJ_secp160r2 OBJ_secg_ellipticCurve,30L + +#define SN_secp192k1 "secp192k1" +#define NID_secp192k1 711 +#define OBJ_secp192k1 OBJ_secg_ellipticCurve,31L + +#define SN_secp224k1 "secp224k1" +#define NID_secp224k1 712 +#define OBJ_secp224k1 OBJ_secg_ellipticCurve,32L + +#define SN_secp224r1 "secp224r1" +#define NID_secp224r1 713 +#define OBJ_secp224r1 OBJ_secg_ellipticCurve,33L + +#define SN_secp256k1 "secp256k1" +#define NID_secp256k1 714 +#define OBJ_secp256k1 OBJ_secg_ellipticCurve,10L + +#define SN_secp384r1 "secp384r1" +#define NID_secp384r1 715 +#define OBJ_secp384r1 OBJ_secg_ellipticCurve,34L + +#define SN_secp521r1 "secp521r1" +#define NID_secp521r1 716 +#define OBJ_secp521r1 OBJ_secg_ellipticCurve,35L + +#define SN_sect113r1 "sect113r1" +#define NID_sect113r1 717 +#define OBJ_sect113r1 OBJ_secg_ellipticCurve,4L + +#define SN_sect113r2 "sect113r2" +#define NID_sect113r2 718 +#define OBJ_sect113r2 OBJ_secg_ellipticCurve,5L + +#define SN_sect131r1 "sect131r1" +#define NID_sect131r1 719 +#define OBJ_sect131r1 OBJ_secg_ellipticCurve,22L + +#define SN_sect131r2 "sect131r2" +#define NID_sect131r2 720 +#define OBJ_sect131r2 OBJ_secg_ellipticCurve,23L + +#define SN_sect163k1 "sect163k1" +#define NID_sect163k1 721 +#define OBJ_sect163k1 OBJ_secg_ellipticCurve,1L + +#define SN_sect163r1 "sect163r1" +#define NID_sect163r1 722 +#define OBJ_sect163r1 OBJ_secg_ellipticCurve,2L + +#define SN_sect163r2 "sect163r2" +#define NID_sect163r2 723 +#define OBJ_sect163r2 OBJ_secg_ellipticCurve,15L + +#define SN_sect193r1 "sect193r1" +#define NID_sect193r1 724 +#define OBJ_sect193r1 OBJ_secg_ellipticCurve,24L + +#define SN_sect193r2 "sect193r2" +#define NID_sect193r2 725 +#define OBJ_sect193r2 OBJ_secg_ellipticCurve,25L + +#define SN_sect233k1 "sect233k1" +#define NID_sect233k1 726 +#define OBJ_sect233k1 OBJ_secg_ellipticCurve,26L + +#define SN_sect233r1 "sect233r1" +#define NID_sect233r1 727 +#define OBJ_sect233r1 OBJ_secg_ellipticCurve,27L + +#define SN_sect239k1 "sect239k1" +#define NID_sect239k1 728 +#define OBJ_sect239k1 OBJ_secg_ellipticCurve,3L + +#define SN_sect283k1 "sect283k1" +#define NID_sect283k1 729 +#define OBJ_sect283k1 OBJ_secg_ellipticCurve,16L + +#define SN_sect283r1 "sect283r1" +#define NID_sect283r1 730 +#define OBJ_sect283r1 OBJ_secg_ellipticCurve,17L + +#define SN_sect409k1 "sect409k1" +#define NID_sect409k1 731 +#define OBJ_sect409k1 OBJ_secg_ellipticCurve,36L + +#define SN_sect409r1 "sect409r1" +#define NID_sect409r1 732 +#define OBJ_sect409r1 OBJ_secg_ellipticCurve,37L + +#define SN_sect571k1 "sect571k1" +#define NID_sect571k1 733 +#define OBJ_sect571k1 OBJ_secg_ellipticCurve,38L + +#define SN_sect571r1 "sect571r1" +#define NID_sect571r1 734 +#define OBJ_sect571r1 OBJ_secg_ellipticCurve,39L + +#define OBJ_wap_wsg_idm_ecid OBJ_wap_wsg,4L + +#define SN_wap_wsg_idm_ecid_wtls1 "wap-wsg-idm-ecid-wtls1" +#define NID_wap_wsg_idm_ecid_wtls1 735 +#define OBJ_wap_wsg_idm_ecid_wtls1 OBJ_wap_wsg_idm_ecid,1L + +#define SN_wap_wsg_idm_ecid_wtls3 "wap-wsg-idm-ecid-wtls3" +#define NID_wap_wsg_idm_ecid_wtls3 736 +#define OBJ_wap_wsg_idm_ecid_wtls3 OBJ_wap_wsg_idm_ecid,3L + +#define SN_wap_wsg_idm_ecid_wtls4 "wap-wsg-idm-ecid-wtls4" +#define NID_wap_wsg_idm_ecid_wtls4 737 +#define OBJ_wap_wsg_idm_ecid_wtls4 OBJ_wap_wsg_idm_ecid,4L + +#define SN_wap_wsg_idm_ecid_wtls5 "wap-wsg-idm-ecid-wtls5" +#define NID_wap_wsg_idm_ecid_wtls5 738 +#define OBJ_wap_wsg_idm_ecid_wtls5 OBJ_wap_wsg_idm_ecid,5L + +#define SN_wap_wsg_idm_ecid_wtls6 "wap-wsg-idm-ecid-wtls6" +#define NID_wap_wsg_idm_ecid_wtls6 739 +#define OBJ_wap_wsg_idm_ecid_wtls6 OBJ_wap_wsg_idm_ecid,6L + +#define SN_wap_wsg_idm_ecid_wtls7 "wap-wsg-idm-ecid-wtls7" +#define NID_wap_wsg_idm_ecid_wtls7 740 +#define OBJ_wap_wsg_idm_ecid_wtls7 OBJ_wap_wsg_idm_ecid,7L + +#define SN_wap_wsg_idm_ecid_wtls8 "wap-wsg-idm-ecid-wtls8" +#define NID_wap_wsg_idm_ecid_wtls8 741 +#define OBJ_wap_wsg_idm_ecid_wtls8 OBJ_wap_wsg_idm_ecid,8L + +#define SN_wap_wsg_idm_ecid_wtls9 "wap-wsg-idm-ecid-wtls9" +#define NID_wap_wsg_idm_ecid_wtls9 742 +#define OBJ_wap_wsg_idm_ecid_wtls9 OBJ_wap_wsg_idm_ecid,9L + +#define SN_wap_wsg_idm_ecid_wtls10 "wap-wsg-idm-ecid-wtls10" +#define NID_wap_wsg_idm_ecid_wtls10 743 +#define OBJ_wap_wsg_idm_ecid_wtls10 OBJ_wap_wsg_idm_ecid,10L + +#define SN_wap_wsg_idm_ecid_wtls11 "wap-wsg-idm-ecid-wtls11" +#define NID_wap_wsg_idm_ecid_wtls11 744 +#define OBJ_wap_wsg_idm_ecid_wtls11 OBJ_wap_wsg_idm_ecid,11L + +#define SN_wap_wsg_idm_ecid_wtls12 "wap-wsg-idm-ecid-wtls12" +#define NID_wap_wsg_idm_ecid_wtls12 745 +#define OBJ_wap_wsg_idm_ecid_wtls12 OBJ_wap_wsg_idm_ecid,12L + +#define SN_cast5_cbc "CAST5-CBC" +#define LN_cast5_cbc "cast5-cbc" +#define NID_cast5_cbc 108 +#define OBJ_cast5_cbc OBJ_ISO_US,113533L,7L,66L,10L + +#define SN_cast5_ecb "CAST5-ECB" +#define LN_cast5_ecb "cast5-ecb" +#define NID_cast5_ecb 109 + +#define SN_cast5_cfb64 "CAST5-CFB" +#define LN_cast5_cfb64 "cast5-cfb" +#define NID_cast5_cfb64 110 + +#define SN_cast5_ofb64 "CAST5-OFB" +#define LN_cast5_ofb64 "cast5-ofb" +#define NID_cast5_ofb64 111 + +#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" +#define NID_pbeWithMD5AndCast5_CBC 112 +#define OBJ_pbeWithMD5AndCast5_CBC OBJ_ISO_US,113533L,7L,66L,12L + +#define SN_id_PasswordBasedMAC "id-PasswordBasedMAC" +#define LN_id_PasswordBasedMAC "password based MAC" +#define NID_id_PasswordBasedMAC 782 +#define OBJ_id_PasswordBasedMAC OBJ_ISO_US,113533L,7L,66L,13L + +#define SN_id_DHBasedMac "id-DHBasedMac" +#define LN_id_DHBasedMac "Diffie-Hellman based MAC" +#define NID_id_DHBasedMac 783 +#define OBJ_id_DHBasedMac OBJ_ISO_US,113533L,7L,66L,30L + +#define SN_rsadsi "rsadsi" +#define LN_rsadsi "RSA Data Security, Inc." +#define NID_rsadsi 1 +#define OBJ_rsadsi OBJ_ISO_US,113549L + +#define SN_pkcs "pkcs" +#define LN_pkcs "RSA Data Security, Inc. PKCS" +#define NID_pkcs 2 +#define OBJ_pkcs OBJ_rsadsi,1L + +#define SN_pkcs1 "pkcs1" +#define NID_pkcs1 186 +#define OBJ_pkcs1 OBJ_pkcs,1L + +#define LN_rsaEncryption "rsaEncryption" +#define NID_rsaEncryption 6 +#define OBJ_rsaEncryption OBJ_pkcs1,1L + +#define SN_md2WithRSAEncryption "RSA-MD2" +#define LN_md2WithRSAEncryption "md2WithRSAEncryption" +#define NID_md2WithRSAEncryption 7 +#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L + +#define SN_md4WithRSAEncryption "RSA-MD4" +#define LN_md4WithRSAEncryption "md4WithRSAEncryption" +#define NID_md4WithRSAEncryption 396 +#define OBJ_md4WithRSAEncryption OBJ_pkcs1,3L + +#define SN_md5WithRSAEncryption "RSA-MD5" +#define LN_md5WithRSAEncryption "md5WithRSAEncryption" +#define NID_md5WithRSAEncryption 8 +#define OBJ_md5WithRSAEncryption OBJ_pkcs1,4L + +#define SN_sha1WithRSAEncryption "RSA-SHA1" +#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" +#define NID_sha1WithRSAEncryption 65 +#define OBJ_sha1WithRSAEncryption OBJ_pkcs1,5L + +#define SN_rsaesOaep "RSAES-OAEP" +#define LN_rsaesOaep "rsaesOaep" +#define NID_rsaesOaep 919 +#define OBJ_rsaesOaep OBJ_pkcs1,7L + +#define SN_mgf1 "MGF1" +#define LN_mgf1 "mgf1" +#define NID_mgf1 911 +#define OBJ_mgf1 OBJ_pkcs1,8L + +#define SN_pSpecified "PSPECIFIED" +#define LN_pSpecified "pSpecified" +#define NID_pSpecified 935 +#define OBJ_pSpecified OBJ_pkcs1,9L + +#define SN_rsassaPss "RSASSA-PSS" +#define LN_rsassaPss "rsassaPss" +#define NID_rsassaPss 912 +#define OBJ_rsassaPss OBJ_pkcs1,10L + +#define SN_sha256WithRSAEncryption "RSA-SHA256" +#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption" +#define NID_sha256WithRSAEncryption 668 +#define OBJ_sha256WithRSAEncryption OBJ_pkcs1,11L + +#define SN_sha384WithRSAEncryption "RSA-SHA384" +#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption" +#define NID_sha384WithRSAEncryption 669 +#define OBJ_sha384WithRSAEncryption OBJ_pkcs1,12L + +#define SN_sha512WithRSAEncryption "RSA-SHA512" +#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption" +#define NID_sha512WithRSAEncryption 670 +#define OBJ_sha512WithRSAEncryption OBJ_pkcs1,13L + +#define SN_sha224WithRSAEncryption "RSA-SHA224" +#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption" +#define NID_sha224WithRSAEncryption 671 +#define OBJ_sha224WithRSAEncryption OBJ_pkcs1,14L + +#define SN_sha512_224WithRSAEncryption "RSA-SHA512/224" +#define LN_sha512_224WithRSAEncryption "sha512-224WithRSAEncryption" +#define NID_sha512_224WithRSAEncryption 1145 +#define OBJ_sha512_224WithRSAEncryption OBJ_pkcs1,15L + +#define SN_sha512_256WithRSAEncryption "RSA-SHA512/256" +#define LN_sha512_256WithRSAEncryption "sha512-256WithRSAEncryption" +#define NID_sha512_256WithRSAEncryption 1146 +#define OBJ_sha512_256WithRSAEncryption OBJ_pkcs1,16L + +#define SN_pkcs3 "pkcs3" +#define NID_pkcs3 27 +#define OBJ_pkcs3 OBJ_pkcs,3L + +#define LN_dhKeyAgreement "dhKeyAgreement" +#define NID_dhKeyAgreement 28 +#define OBJ_dhKeyAgreement OBJ_pkcs3,1L + +#define SN_pkcs5 "pkcs5" +#define NID_pkcs5 187 +#define OBJ_pkcs5 OBJ_pkcs,5L + +#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" +#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" +#define NID_pbeWithMD2AndDES_CBC 9 +#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs5,1L + +#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" +#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" +#define NID_pbeWithMD5AndDES_CBC 10 +#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs5,3L + +#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" +#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" +#define NID_pbeWithMD2AndRC2_CBC 168 +#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs5,4L + +#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" +#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" +#define NID_pbeWithMD5AndRC2_CBC 169 +#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs5,6L + +#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" +#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" +#define NID_pbeWithSHA1AndDES_CBC 170 +#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs5,10L + +#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" +#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" +#define NID_pbeWithSHA1AndRC2_CBC 68 +#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs5,11L + +#define LN_id_pbkdf2 "PBKDF2" +#define NID_id_pbkdf2 69 +#define OBJ_id_pbkdf2 OBJ_pkcs5,12L + +#define LN_pbes2 "PBES2" +#define NID_pbes2 161 +#define OBJ_pbes2 OBJ_pkcs5,13L + +#define LN_pbmac1 "PBMAC1" +#define NID_pbmac1 162 +#define OBJ_pbmac1 OBJ_pkcs5,14L + +#define SN_pkcs7 "pkcs7" +#define NID_pkcs7 20 +#define OBJ_pkcs7 OBJ_pkcs,7L + +#define LN_pkcs7_data "pkcs7-data" +#define NID_pkcs7_data 21 +#define OBJ_pkcs7_data OBJ_pkcs7,1L + +#define LN_pkcs7_signed "pkcs7-signedData" +#define NID_pkcs7_signed 22 +#define OBJ_pkcs7_signed OBJ_pkcs7,2L + +#define LN_pkcs7_enveloped "pkcs7-envelopedData" +#define NID_pkcs7_enveloped 23 +#define OBJ_pkcs7_enveloped OBJ_pkcs7,3L + +#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" +#define NID_pkcs7_signedAndEnveloped 24 +#define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L + +#define LN_pkcs7_digest "pkcs7-digestData" +#define NID_pkcs7_digest 25 +#define OBJ_pkcs7_digest OBJ_pkcs7,5L + +#define LN_pkcs7_encrypted "pkcs7-encryptedData" +#define NID_pkcs7_encrypted 26 +#define OBJ_pkcs7_encrypted OBJ_pkcs7,6L + +#define SN_pkcs9 "pkcs9" +#define NID_pkcs9 47 +#define OBJ_pkcs9 OBJ_pkcs,9L + +#define LN_pkcs9_emailAddress "emailAddress" +#define NID_pkcs9_emailAddress 48 +#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L + +#define LN_pkcs9_unstructuredName "unstructuredName" +#define NID_pkcs9_unstructuredName 49 +#define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L + +#define LN_pkcs9_contentType "contentType" +#define NID_pkcs9_contentType 50 +#define OBJ_pkcs9_contentType OBJ_pkcs9,3L + +#define LN_pkcs9_messageDigest "messageDigest" +#define NID_pkcs9_messageDigest 51 +#define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L + +#define LN_pkcs9_signingTime "signingTime" +#define NID_pkcs9_signingTime 52 +#define OBJ_pkcs9_signingTime OBJ_pkcs9,5L + +#define LN_pkcs9_countersignature "countersignature" +#define NID_pkcs9_countersignature 53 +#define OBJ_pkcs9_countersignature OBJ_pkcs9,6L + +#define LN_pkcs9_challengePassword "challengePassword" +#define NID_pkcs9_challengePassword 54 +#define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L + +#define LN_pkcs9_unstructuredAddress "unstructuredAddress" +#define NID_pkcs9_unstructuredAddress 55 +#define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L + +#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" +#define NID_pkcs9_extCertAttributes 56 +#define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L + +#define SN_ext_req "extReq" +#define LN_ext_req "Extension Request" +#define NID_ext_req 172 +#define OBJ_ext_req OBJ_pkcs9,14L + +#define SN_SMIMECapabilities "SMIME-CAPS" +#define LN_SMIMECapabilities "S/MIME Capabilities" +#define NID_SMIMECapabilities 167 +#define OBJ_SMIMECapabilities OBJ_pkcs9,15L + +#define SN_SMIME "SMIME" +#define LN_SMIME "S/MIME" +#define NID_SMIME 188 +#define OBJ_SMIME OBJ_pkcs9,16L + +#define SN_id_smime_mod "id-smime-mod" +#define NID_id_smime_mod 189 +#define OBJ_id_smime_mod OBJ_SMIME,0L + +#define SN_id_smime_ct "id-smime-ct" +#define NID_id_smime_ct 190 +#define OBJ_id_smime_ct OBJ_SMIME,1L + +#define SN_id_smime_aa "id-smime-aa" +#define NID_id_smime_aa 191 +#define OBJ_id_smime_aa OBJ_SMIME,2L + +#define SN_id_smime_alg "id-smime-alg" +#define NID_id_smime_alg 192 +#define OBJ_id_smime_alg OBJ_SMIME,3L + +#define SN_id_smime_cd "id-smime-cd" +#define NID_id_smime_cd 193 +#define OBJ_id_smime_cd OBJ_SMIME,4L + +#define SN_id_smime_spq "id-smime-spq" +#define NID_id_smime_spq 194 +#define OBJ_id_smime_spq OBJ_SMIME,5L + +#define SN_id_smime_cti "id-smime-cti" +#define NID_id_smime_cti 195 +#define OBJ_id_smime_cti OBJ_SMIME,6L + +#define SN_id_smime_mod_cms "id-smime-mod-cms" +#define NID_id_smime_mod_cms 196 +#define OBJ_id_smime_mod_cms OBJ_id_smime_mod,1L + +#define SN_id_smime_mod_ess "id-smime-mod-ess" +#define NID_id_smime_mod_ess 197 +#define OBJ_id_smime_mod_ess OBJ_id_smime_mod,2L + +#define SN_id_smime_mod_oid "id-smime-mod-oid" +#define NID_id_smime_mod_oid 198 +#define OBJ_id_smime_mod_oid OBJ_id_smime_mod,3L + +#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3" +#define NID_id_smime_mod_msg_v3 199 +#define OBJ_id_smime_mod_msg_v3 OBJ_id_smime_mod,4L + +#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88" +#define NID_id_smime_mod_ets_eSignature_88 200 +#define OBJ_id_smime_mod_ets_eSignature_88 OBJ_id_smime_mod,5L + +#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97" +#define NID_id_smime_mod_ets_eSignature_97 201 +#define OBJ_id_smime_mod_ets_eSignature_97 OBJ_id_smime_mod,6L + +#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88" +#define NID_id_smime_mod_ets_eSigPolicy_88 202 +#define OBJ_id_smime_mod_ets_eSigPolicy_88 OBJ_id_smime_mod,7L + +#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97" +#define NID_id_smime_mod_ets_eSigPolicy_97 203 +#define OBJ_id_smime_mod_ets_eSigPolicy_97 OBJ_id_smime_mod,8L + +#define SN_id_smime_ct_receipt "id-smime-ct-receipt" +#define NID_id_smime_ct_receipt 204 +#define OBJ_id_smime_ct_receipt OBJ_id_smime_ct,1L + +#define SN_id_smime_ct_authData "id-smime-ct-authData" +#define NID_id_smime_ct_authData 205 +#define OBJ_id_smime_ct_authData OBJ_id_smime_ct,2L + +#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert" +#define NID_id_smime_ct_publishCert 206 +#define OBJ_id_smime_ct_publishCert OBJ_id_smime_ct,3L + +#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo" +#define NID_id_smime_ct_TSTInfo 207 +#define OBJ_id_smime_ct_TSTInfo OBJ_id_smime_ct,4L + +#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo" +#define NID_id_smime_ct_TDTInfo 208 +#define OBJ_id_smime_ct_TDTInfo OBJ_id_smime_ct,5L + +#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo" +#define NID_id_smime_ct_contentInfo 209 +#define OBJ_id_smime_ct_contentInfo OBJ_id_smime_ct,6L + +#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData" +#define NID_id_smime_ct_DVCSRequestData 210 +#define OBJ_id_smime_ct_DVCSRequestData OBJ_id_smime_ct,7L + +#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData" +#define NID_id_smime_ct_DVCSResponseData 211 +#define OBJ_id_smime_ct_DVCSResponseData OBJ_id_smime_ct,8L + +#define SN_id_smime_ct_compressedData "id-smime-ct-compressedData" +#define NID_id_smime_ct_compressedData 786 +#define OBJ_id_smime_ct_compressedData OBJ_id_smime_ct,9L + +#define SN_id_smime_ct_contentCollection "id-smime-ct-contentCollection" +#define NID_id_smime_ct_contentCollection 1058 +#define OBJ_id_smime_ct_contentCollection OBJ_id_smime_ct,19L + +#define SN_id_smime_ct_authEnvelopedData "id-smime-ct-authEnvelopedData" +#define NID_id_smime_ct_authEnvelopedData 1059 +#define OBJ_id_smime_ct_authEnvelopedData OBJ_id_smime_ct,23L + +#define SN_id_ct_asciiTextWithCRLF "id-ct-asciiTextWithCRLF" +#define NID_id_ct_asciiTextWithCRLF 787 +#define OBJ_id_ct_asciiTextWithCRLF OBJ_id_smime_ct,27L + +#define SN_id_ct_xml "id-ct-xml" +#define NID_id_ct_xml 1060 +#define OBJ_id_ct_xml OBJ_id_smime_ct,28L + +#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" +#define NID_id_smime_aa_receiptRequest 212 +#define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L + +#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel" +#define NID_id_smime_aa_securityLabel 213 +#define OBJ_id_smime_aa_securityLabel OBJ_id_smime_aa,2L + +#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory" +#define NID_id_smime_aa_mlExpandHistory 214 +#define OBJ_id_smime_aa_mlExpandHistory OBJ_id_smime_aa,3L + +#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint" +#define NID_id_smime_aa_contentHint 215 +#define OBJ_id_smime_aa_contentHint OBJ_id_smime_aa,4L + +#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest" +#define NID_id_smime_aa_msgSigDigest 216 +#define OBJ_id_smime_aa_msgSigDigest OBJ_id_smime_aa,5L + +#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType" +#define NID_id_smime_aa_encapContentType 217 +#define OBJ_id_smime_aa_encapContentType OBJ_id_smime_aa,6L + +#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier" +#define NID_id_smime_aa_contentIdentifier 218 +#define OBJ_id_smime_aa_contentIdentifier OBJ_id_smime_aa,7L + +#define SN_id_smime_aa_macValue "id-smime-aa-macValue" +#define NID_id_smime_aa_macValue 219 +#define OBJ_id_smime_aa_macValue OBJ_id_smime_aa,8L + +#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels" +#define NID_id_smime_aa_equivalentLabels 220 +#define OBJ_id_smime_aa_equivalentLabels OBJ_id_smime_aa,9L + +#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference" +#define NID_id_smime_aa_contentReference 221 +#define OBJ_id_smime_aa_contentReference OBJ_id_smime_aa,10L + +#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref" +#define NID_id_smime_aa_encrypKeyPref 222 +#define OBJ_id_smime_aa_encrypKeyPref OBJ_id_smime_aa,11L + +#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate" +#define NID_id_smime_aa_signingCertificate 223 +#define OBJ_id_smime_aa_signingCertificate OBJ_id_smime_aa,12L + +#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts" +#define NID_id_smime_aa_smimeEncryptCerts 224 +#define OBJ_id_smime_aa_smimeEncryptCerts OBJ_id_smime_aa,13L + +#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken" +#define NID_id_smime_aa_timeStampToken 225 +#define OBJ_id_smime_aa_timeStampToken OBJ_id_smime_aa,14L + +#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId" +#define NID_id_smime_aa_ets_sigPolicyId 226 +#define OBJ_id_smime_aa_ets_sigPolicyId OBJ_id_smime_aa,15L + +#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType" +#define NID_id_smime_aa_ets_commitmentType 227 +#define OBJ_id_smime_aa_ets_commitmentType OBJ_id_smime_aa,16L + +#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation" +#define NID_id_smime_aa_ets_signerLocation 228 +#define OBJ_id_smime_aa_ets_signerLocation OBJ_id_smime_aa,17L + +#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr" +#define NID_id_smime_aa_ets_signerAttr 229 +#define OBJ_id_smime_aa_ets_signerAttr OBJ_id_smime_aa,18L + +#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert" +#define NID_id_smime_aa_ets_otherSigCert 230 +#define OBJ_id_smime_aa_ets_otherSigCert OBJ_id_smime_aa,19L + +#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp" +#define NID_id_smime_aa_ets_contentTimestamp 231 +#define OBJ_id_smime_aa_ets_contentTimestamp OBJ_id_smime_aa,20L + +#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs" +#define NID_id_smime_aa_ets_CertificateRefs 232 +#define OBJ_id_smime_aa_ets_CertificateRefs OBJ_id_smime_aa,21L + +#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs" +#define NID_id_smime_aa_ets_RevocationRefs 233 +#define OBJ_id_smime_aa_ets_RevocationRefs OBJ_id_smime_aa,22L + +#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues" +#define NID_id_smime_aa_ets_certValues 234 +#define OBJ_id_smime_aa_ets_certValues OBJ_id_smime_aa,23L + +#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues" +#define NID_id_smime_aa_ets_revocationValues 235 +#define OBJ_id_smime_aa_ets_revocationValues OBJ_id_smime_aa,24L + +#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp" +#define NID_id_smime_aa_ets_escTimeStamp 236 +#define OBJ_id_smime_aa_ets_escTimeStamp OBJ_id_smime_aa,25L + +#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp" +#define NID_id_smime_aa_ets_certCRLTimestamp 237 +#define OBJ_id_smime_aa_ets_certCRLTimestamp OBJ_id_smime_aa,26L + +#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp" +#define NID_id_smime_aa_ets_archiveTimeStamp 238 +#define OBJ_id_smime_aa_ets_archiveTimeStamp OBJ_id_smime_aa,27L + +#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType" +#define NID_id_smime_aa_signatureType 239 +#define OBJ_id_smime_aa_signatureType OBJ_id_smime_aa,28L + +#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc" +#define NID_id_smime_aa_dvcs_dvc 240 +#define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L + +#define SN_id_smime_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" +#define NID_id_smime_aa_signingCertificateV2 1086 +#define OBJ_id_smime_aa_signingCertificateV2 OBJ_id_smime_aa,47L + +#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" +#define NID_id_smime_alg_ESDHwith3DES 241 +#define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L + +#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2" +#define NID_id_smime_alg_ESDHwithRC2 242 +#define OBJ_id_smime_alg_ESDHwithRC2 OBJ_id_smime_alg,2L + +#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap" +#define NID_id_smime_alg_3DESwrap 243 +#define OBJ_id_smime_alg_3DESwrap OBJ_id_smime_alg,3L + +#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap" +#define NID_id_smime_alg_RC2wrap 244 +#define OBJ_id_smime_alg_RC2wrap OBJ_id_smime_alg,4L + +#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH" +#define NID_id_smime_alg_ESDH 245 +#define OBJ_id_smime_alg_ESDH OBJ_id_smime_alg,5L + +#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap" +#define NID_id_smime_alg_CMS3DESwrap 246 +#define OBJ_id_smime_alg_CMS3DESwrap OBJ_id_smime_alg,6L + +#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap" +#define NID_id_smime_alg_CMSRC2wrap 247 +#define OBJ_id_smime_alg_CMSRC2wrap OBJ_id_smime_alg,7L + +#define SN_id_alg_PWRI_KEK "id-alg-PWRI-KEK" +#define NID_id_alg_PWRI_KEK 893 +#define OBJ_id_alg_PWRI_KEK OBJ_id_smime_alg,9L + +#define SN_id_smime_cd_ldap "id-smime-cd-ldap" +#define NID_id_smime_cd_ldap 248 +#define OBJ_id_smime_cd_ldap OBJ_id_smime_cd,1L + +#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri" +#define NID_id_smime_spq_ets_sqt_uri 249 +#define OBJ_id_smime_spq_ets_sqt_uri OBJ_id_smime_spq,1L + +#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice" +#define NID_id_smime_spq_ets_sqt_unotice 250 +#define OBJ_id_smime_spq_ets_sqt_unotice OBJ_id_smime_spq,2L + +#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin" +#define NID_id_smime_cti_ets_proofOfOrigin 251 +#define OBJ_id_smime_cti_ets_proofOfOrigin OBJ_id_smime_cti,1L + +#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt" +#define NID_id_smime_cti_ets_proofOfReceipt 252 +#define OBJ_id_smime_cti_ets_proofOfReceipt OBJ_id_smime_cti,2L + +#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery" +#define NID_id_smime_cti_ets_proofOfDelivery 253 +#define OBJ_id_smime_cti_ets_proofOfDelivery OBJ_id_smime_cti,3L + +#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender" +#define NID_id_smime_cti_ets_proofOfSender 254 +#define OBJ_id_smime_cti_ets_proofOfSender OBJ_id_smime_cti,4L + +#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval" +#define NID_id_smime_cti_ets_proofOfApproval 255 +#define OBJ_id_smime_cti_ets_proofOfApproval OBJ_id_smime_cti,5L + +#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation" +#define NID_id_smime_cti_ets_proofOfCreation 256 +#define OBJ_id_smime_cti_ets_proofOfCreation OBJ_id_smime_cti,6L + +#define LN_friendlyName "friendlyName" +#define NID_friendlyName 156 +#define OBJ_friendlyName OBJ_pkcs9,20L + +#define LN_localKeyID "localKeyID" +#define NID_localKeyID 157 +#define OBJ_localKeyID OBJ_pkcs9,21L + +#define SN_ms_csp_name "CSPName" +#define LN_ms_csp_name "Microsoft CSP Name" +#define NID_ms_csp_name 417 +#define OBJ_ms_csp_name 1L,3L,6L,1L,4L,1L,311L,17L,1L + +#define SN_LocalKeySet "LocalKeySet" +#define LN_LocalKeySet "Microsoft Local Key set" +#define NID_LocalKeySet 856 +#define OBJ_LocalKeySet 1L,3L,6L,1L,4L,1L,311L,17L,2L + +#define OBJ_certTypes OBJ_pkcs9,22L + +#define LN_x509Certificate "x509Certificate" +#define NID_x509Certificate 158 +#define OBJ_x509Certificate OBJ_certTypes,1L + +#define LN_sdsiCertificate "sdsiCertificate" +#define NID_sdsiCertificate 159 +#define OBJ_sdsiCertificate OBJ_certTypes,2L + +#define OBJ_crlTypes OBJ_pkcs9,23L + +#define LN_x509Crl "x509Crl" +#define NID_x509Crl 160 +#define OBJ_x509Crl OBJ_crlTypes,1L + +#define OBJ_pkcs12 OBJ_pkcs,12L + +#define OBJ_pkcs12_pbeids OBJ_pkcs12,1L + +#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" +#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" +#define NID_pbe_WithSHA1And128BitRC4 144 +#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids,1L + +#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" +#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" +#define NID_pbe_WithSHA1And40BitRC4 145 +#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids,2L + +#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" +#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 +#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids,3L + +#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" +#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 +#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids,4L + +#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" +#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" +#define NID_pbe_WithSHA1And128BitRC2_CBC 148 +#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids,5L + +#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" +#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" +#define NID_pbe_WithSHA1And40BitRC2_CBC 149 +#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids,6L + +#define OBJ_pkcs12_Version1 OBJ_pkcs12,10L + +#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1,1L + +#define LN_keyBag "keyBag" +#define NID_keyBag 150 +#define OBJ_keyBag OBJ_pkcs12_BagIds,1L + +#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" +#define NID_pkcs8ShroudedKeyBag 151 +#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds,2L + +#define LN_certBag "certBag" +#define NID_certBag 152 +#define OBJ_certBag OBJ_pkcs12_BagIds,3L + +#define LN_crlBag "crlBag" +#define NID_crlBag 153 +#define OBJ_crlBag OBJ_pkcs12_BagIds,4L + +#define LN_secretBag "secretBag" +#define NID_secretBag 154 +#define OBJ_secretBag OBJ_pkcs12_BagIds,5L + +#define LN_safeContentsBag "safeContentsBag" +#define NID_safeContentsBag 155 +#define OBJ_safeContentsBag OBJ_pkcs12_BagIds,6L + +#define SN_md2 "MD2" +#define LN_md2 "md2" +#define NID_md2 3 +#define OBJ_md2 OBJ_rsadsi,2L,2L + +#define SN_md4 "MD4" +#define LN_md4 "md4" +#define NID_md4 257 +#define OBJ_md4 OBJ_rsadsi,2L,4L + +#define SN_md5 "MD5" +#define LN_md5 "md5" +#define NID_md5 4 +#define OBJ_md5 OBJ_rsadsi,2L,5L + +#define SN_md5_sha1 "MD5-SHA1" +#define LN_md5_sha1 "md5-sha1" +#define NID_md5_sha1 114 + +#define LN_hmacWithMD5 "hmacWithMD5" +#define NID_hmacWithMD5 797 +#define OBJ_hmacWithMD5 OBJ_rsadsi,2L,6L + +#define LN_hmacWithSHA1 "hmacWithSHA1" +#define NID_hmacWithSHA1 163 +#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L + +#define SN_sm2 "SM2" +#define LN_sm2 "sm2" +#define NID_sm2 1172 +#define OBJ_sm2 OBJ_sm_scheme,301L + +#define SN_sm3 "SM3" +#define LN_sm3 "sm3" +#define NID_sm3 1143 +#define OBJ_sm3 OBJ_sm_scheme,401L + +#define SN_sm3WithRSAEncryption "RSA-SM3" +#define LN_sm3WithRSAEncryption "sm3WithRSAEncryption" +#define NID_sm3WithRSAEncryption 1144 +#define OBJ_sm3WithRSAEncryption OBJ_sm_scheme,504L + +#define LN_hmacWithSHA224 "hmacWithSHA224" +#define NID_hmacWithSHA224 798 +#define OBJ_hmacWithSHA224 OBJ_rsadsi,2L,8L + +#define LN_hmacWithSHA256 "hmacWithSHA256" +#define NID_hmacWithSHA256 799 +#define OBJ_hmacWithSHA256 OBJ_rsadsi,2L,9L + +#define LN_hmacWithSHA384 "hmacWithSHA384" +#define NID_hmacWithSHA384 800 +#define OBJ_hmacWithSHA384 OBJ_rsadsi,2L,10L + +#define LN_hmacWithSHA512 "hmacWithSHA512" +#define NID_hmacWithSHA512 801 +#define OBJ_hmacWithSHA512 OBJ_rsadsi,2L,11L + +#define LN_hmacWithSHA512_224 "hmacWithSHA512-224" +#define NID_hmacWithSHA512_224 1193 +#define OBJ_hmacWithSHA512_224 OBJ_rsadsi,2L,12L + +#define LN_hmacWithSHA512_256 "hmacWithSHA512-256" +#define NID_hmacWithSHA512_256 1194 +#define OBJ_hmacWithSHA512_256 OBJ_rsadsi,2L,13L + +#define SN_rc2_cbc "RC2-CBC" +#define LN_rc2_cbc "rc2-cbc" +#define NID_rc2_cbc 37 +#define OBJ_rc2_cbc OBJ_rsadsi,3L,2L + +#define SN_rc2_ecb "RC2-ECB" +#define LN_rc2_ecb "rc2-ecb" +#define NID_rc2_ecb 38 + +#define SN_rc2_cfb64 "RC2-CFB" +#define LN_rc2_cfb64 "rc2-cfb" +#define NID_rc2_cfb64 39 + +#define SN_rc2_ofb64 "RC2-OFB" +#define LN_rc2_ofb64 "rc2-ofb" +#define NID_rc2_ofb64 40 + +#define SN_rc2_40_cbc "RC2-40-CBC" +#define LN_rc2_40_cbc "rc2-40-cbc" +#define NID_rc2_40_cbc 98 + +#define SN_rc2_64_cbc "RC2-64-CBC" +#define LN_rc2_64_cbc "rc2-64-cbc" +#define NID_rc2_64_cbc 166 + +#define SN_rc4 "RC4" +#define LN_rc4 "rc4" +#define NID_rc4 5 +#define OBJ_rc4 OBJ_rsadsi,3L,4L + +#define SN_rc4_40 "RC4-40" +#define LN_rc4_40 "rc4-40" +#define NID_rc4_40 97 + +#define SN_des_ede3_cbc "DES-EDE3-CBC" +#define LN_des_ede3_cbc "des-ede3-cbc" +#define NID_des_ede3_cbc 44 +#define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L + +#define SN_rc5_cbc "RC5-CBC" +#define LN_rc5_cbc "rc5-cbc" +#define NID_rc5_cbc 120 +#define OBJ_rc5_cbc OBJ_rsadsi,3L,8L + +#define SN_rc5_ecb "RC5-ECB" +#define LN_rc5_ecb "rc5-ecb" +#define NID_rc5_ecb 121 + +#define SN_rc5_cfb64 "RC5-CFB" +#define LN_rc5_cfb64 "rc5-cfb" +#define NID_rc5_cfb64 122 + +#define SN_rc5_ofb64 "RC5-OFB" +#define LN_rc5_ofb64 "rc5-ofb" +#define NID_rc5_ofb64 123 + +#define SN_ms_ext_req "msExtReq" +#define LN_ms_ext_req "Microsoft Extension Request" +#define NID_ms_ext_req 171 +#define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L + +#define SN_ms_code_ind "msCodeInd" +#define LN_ms_code_ind "Microsoft Individual Code Signing" +#define NID_ms_code_ind 134 +#define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L + +#define SN_ms_code_com "msCodeCom" +#define LN_ms_code_com "Microsoft Commercial Code Signing" +#define NID_ms_code_com 135 +#define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L + +#define SN_ms_ctl_sign "msCTLSign" +#define LN_ms_ctl_sign "Microsoft Trust List Signing" +#define NID_ms_ctl_sign 136 +#define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L + +#define SN_ms_sgc "msSGC" +#define LN_ms_sgc "Microsoft Server Gated Crypto" +#define NID_ms_sgc 137 +#define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L + +#define SN_ms_efs "msEFS" +#define LN_ms_efs "Microsoft Encrypted File System" +#define NID_ms_efs 138 +#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L + +#define SN_ms_smartcard_login "msSmartcardLogin" +#define LN_ms_smartcard_login "Microsoft Smartcard Login" +#define NID_ms_smartcard_login 648 +#define OBJ_ms_smartcard_login 1L,3L,6L,1L,4L,1L,311L,20L,2L,2L + +#define SN_ms_upn "msUPN" +#define LN_ms_upn "Microsoft User Principal Name" +#define NID_ms_upn 649 +#define OBJ_ms_upn 1L,3L,6L,1L,4L,1L,311L,20L,2L,3L + +#define SN_idea_cbc "IDEA-CBC" +#define LN_idea_cbc "idea-cbc" +#define NID_idea_cbc 34 +#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L + +#define SN_idea_ecb "IDEA-ECB" +#define LN_idea_ecb "idea-ecb" +#define NID_idea_ecb 36 + +#define SN_idea_cfb64 "IDEA-CFB" +#define LN_idea_cfb64 "idea-cfb" +#define NID_idea_cfb64 35 + +#define SN_idea_ofb64 "IDEA-OFB" +#define LN_idea_ofb64 "idea-ofb" +#define NID_idea_ofb64 46 + +#define SN_bf_cbc "BF-CBC" +#define LN_bf_cbc "bf-cbc" +#define NID_bf_cbc 91 +#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L + +#define SN_bf_ecb "BF-ECB" +#define LN_bf_ecb "bf-ecb" +#define NID_bf_ecb 92 + +#define SN_bf_cfb64 "BF-CFB" +#define LN_bf_cfb64 "bf-cfb" +#define NID_bf_cfb64 93 + +#define SN_bf_ofb64 "BF-OFB" +#define LN_bf_ofb64 "bf-ofb" +#define NID_bf_ofb64 94 + +#define SN_id_pkix "PKIX" +#define NID_id_pkix 127 +#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L + +#define SN_id_pkix_mod "id-pkix-mod" +#define NID_id_pkix_mod 258 +#define OBJ_id_pkix_mod OBJ_id_pkix,0L + +#define SN_id_pe "id-pe" +#define NID_id_pe 175 +#define OBJ_id_pe OBJ_id_pkix,1L + +#define SN_id_qt "id-qt" +#define NID_id_qt 259 +#define OBJ_id_qt OBJ_id_pkix,2L + +#define SN_id_kp "id-kp" +#define NID_id_kp 128 +#define OBJ_id_kp OBJ_id_pkix,3L + +#define SN_id_it "id-it" +#define NID_id_it 260 +#define OBJ_id_it OBJ_id_pkix,4L + +#define SN_id_pkip "id-pkip" +#define NID_id_pkip 261 +#define OBJ_id_pkip OBJ_id_pkix,5L + +#define SN_id_alg "id-alg" +#define NID_id_alg 262 +#define OBJ_id_alg OBJ_id_pkix,6L + +#define SN_id_cmc "id-cmc" +#define NID_id_cmc 263 +#define OBJ_id_cmc OBJ_id_pkix,7L + +#define SN_id_on "id-on" +#define NID_id_on 264 +#define OBJ_id_on OBJ_id_pkix,8L + +#define SN_id_pda "id-pda" +#define NID_id_pda 265 +#define OBJ_id_pda OBJ_id_pkix,9L + +#define SN_id_aca "id-aca" +#define NID_id_aca 266 +#define OBJ_id_aca OBJ_id_pkix,10L + +#define SN_id_qcs "id-qcs" +#define NID_id_qcs 267 +#define OBJ_id_qcs OBJ_id_pkix,11L + +#define SN_id_cct "id-cct" +#define NID_id_cct 268 +#define OBJ_id_cct OBJ_id_pkix,12L + +#define SN_id_ppl "id-ppl" +#define NID_id_ppl 662 +#define OBJ_id_ppl OBJ_id_pkix,21L + +#define SN_id_ad "id-ad" +#define NID_id_ad 176 +#define OBJ_id_ad OBJ_id_pkix,48L + +#define SN_id_pkix1_explicit_88 "id-pkix1-explicit-88" +#define NID_id_pkix1_explicit_88 269 +#define OBJ_id_pkix1_explicit_88 OBJ_id_pkix_mod,1L + +#define SN_id_pkix1_implicit_88 "id-pkix1-implicit-88" +#define NID_id_pkix1_implicit_88 270 +#define OBJ_id_pkix1_implicit_88 OBJ_id_pkix_mod,2L + +#define SN_id_pkix1_explicit_93 "id-pkix1-explicit-93" +#define NID_id_pkix1_explicit_93 271 +#define OBJ_id_pkix1_explicit_93 OBJ_id_pkix_mod,3L + +#define SN_id_pkix1_implicit_93 "id-pkix1-implicit-93" +#define NID_id_pkix1_implicit_93 272 +#define OBJ_id_pkix1_implicit_93 OBJ_id_pkix_mod,4L + +#define SN_id_mod_crmf "id-mod-crmf" +#define NID_id_mod_crmf 273 +#define OBJ_id_mod_crmf OBJ_id_pkix_mod,5L + +#define SN_id_mod_cmc "id-mod-cmc" +#define NID_id_mod_cmc 274 +#define OBJ_id_mod_cmc OBJ_id_pkix_mod,6L + +#define SN_id_mod_kea_profile_88 "id-mod-kea-profile-88" +#define NID_id_mod_kea_profile_88 275 +#define OBJ_id_mod_kea_profile_88 OBJ_id_pkix_mod,7L + +#define SN_id_mod_kea_profile_93 "id-mod-kea-profile-93" +#define NID_id_mod_kea_profile_93 276 +#define OBJ_id_mod_kea_profile_93 OBJ_id_pkix_mod,8L + +#define SN_id_mod_cmp "id-mod-cmp" +#define NID_id_mod_cmp 277 +#define OBJ_id_mod_cmp OBJ_id_pkix_mod,9L + +#define SN_id_mod_qualified_cert_88 "id-mod-qualified-cert-88" +#define NID_id_mod_qualified_cert_88 278 +#define OBJ_id_mod_qualified_cert_88 OBJ_id_pkix_mod,10L + +#define SN_id_mod_qualified_cert_93 "id-mod-qualified-cert-93" +#define NID_id_mod_qualified_cert_93 279 +#define OBJ_id_mod_qualified_cert_93 OBJ_id_pkix_mod,11L + +#define SN_id_mod_attribute_cert "id-mod-attribute-cert" +#define NID_id_mod_attribute_cert 280 +#define OBJ_id_mod_attribute_cert OBJ_id_pkix_mod,12L + +#define SN_id_mod_timestamp_protocol "id-mod-timestamp-protocol" +#define NID_id_mod_timestamp_protocol 281 +#define OBJ_id_mod_timestamp_protocol OBJ_id_pkix_mod,13L + +#define SN_id_mod_ocsp "id-mod-ocsp" +#define NID_id_mod_ocsp 282 +#define OBJ_id_mod_ocsp OBJ_id_pkix_mod,14L + +#define SN_id_mod_dvcs "id-mod-dvcs" +#define NID_id_mod_dvcs 283 +#define OBJ_id_mod_dvcs OBJ_id_pkix_mod,15L + +#define SN_id_mod_cmp2000 "id-mod-cmp2000" +#define NID_id_mod_cmp2000 284 +#define OBJ_id_mod_cmp2000 OBJ_id_pkix_mod,16L + +#define SN_info_access "authorityInfoAccess" +#define LN_info_access "Authority Information Access" +#define NID_info_access 177 +#define OBJ_info_access OBJ_id_pe,1L + +#define SN_biometricInfo "biometricInfo" +#define LN_biometricInfo "Biometric Info" +#define NID_biometricInfo 285 +#define OBJ_biometricInfo OBJ_id_pe,2L + +#define SN_qcStatements "qcStatements" +#define NID_qcStatements 286 +#define OBJ_qcStatements OBJ_id_pe,3L + +#define SN_ac_auditEntity "ac-auditEntity" +#define NID_ac_auditEntity 287 +#define OBJ_ac_auditEntity OBJ_id_pe,4L + +#define SN_ac_targeting "ac-targeting" +#define NID_ac_targeting 288 +#define OBJ_ac_targeting OBJ_id_pe,5L + +#define SN_aaControls "aaControls" +#define NID_aaControls 289 +#define OBJ_aaControls OBJ_id_pe,6L + +#define SN_sbgp_ipAddrBlock "sbgp-ipAddrBlock" +#define NID_sbgp_ipAddrBlock 290 +#define OBJ_sbgp_ipAddrBlock OBJ_id_pe,7L + +#define SN_sbgp_autonomousSysNum "sbgp-autonomousSysNum" +#define NID_sbgp_autonomousSysNum 291 +#define OBJ_sbgp_autonomousSysNum OBJ_id_pe,8L + +#define SN_sbgp_routerIdentifier "sbgp-routerIdentifier" +#define NID_sbgp_routerIdentifier 292 +#define OBJ_sbgp_routerIdentifier OBJ_id_pe,9L + +#define SN_ac_proxying "ac-proxying" +#define NID_ac_proxying 397 +#define OBJ_ac_proxying OBJ_id_pe,10L + +#define SN_sinfo_access "subjectInfoAccess" +#define LN_sinfo_access "Subject Information Access" +#define NID_sinfo_access 398 +#define OBJ_sinfo_access OBJ_id_pe,11L + +#define SN_proxyCertInfo "proxyCertInfo" +#define LN_proxyCertInfo "Proxy Certificate Information" +#define NID_proxyCertInfo 663 +#define OBJ_proxyCertInfo OBJ_id_pe,14L + +#define SN_tlsfeature "tlsfeature" +#define LN_tlsfeature "TLS Feature" +#define NID_tlsfeature 1020 +#define OBJ_tlsfeature OBJ_id_pe,24L + +#define SN_id_qt_cps "id-qt-cps" +#define LN_id_qt_cps "Policy Qualifier CPS" +#define NID_id_qt_cps 164 +#define OBJ_id_qt_cps OBJ_id_qt,1L + +#define SN_id_qt_unotice "id-qt-unotice" +#define LN_id_qt_unotice "Policy Qualifier User Notice" +#define NID_id_qt_unotice 165 +#define OBJ_id_qt_unotice OBJ_id_qt,2L + +#define SN_textNotice "textNotice" +#define NID_textNotice 293 +#define OBJ_textNotice OBJ_id_qt,3L + +#define SN_server_auth "serverAuth" +#define LN_server_auth "TLS Web Server Authentication" +#define NID_server_auth 129 +#define OBJ_server_auth OBJ_id_kp,1L + +#define SN_client_auth "clientAuth" +#define LN_client_auth "TLS Web Client Authentication" +#define NID_client_auth 130 +#define OBJ_client_auth OBJ_id_kp,2L + +#define SN_code_sign "codeSigning" +#define LN_code_sign "Code Signing" +#define NID_code_sign 131 +#define OBJ_code_sign OBJ_id_kp,3L + +#define SN_email_protect "emailProtection" +#define LN_email_protect "E-mail Protection" +#define NID_email_protect 132 +#define OBJ_email_protect OBJ_id_kp,4L + +#define SN_ipsecEndSystem "ipsecEndSystem" +#define LN_ipsecEndSystem "IPSec End System" +#define NID_ipsecEndSystem 294 +#define OBJ_ipsecEndSystem OBJ_id_kp,5L + +#define SN_ipsecTunnel "ipsecTunnel" +#define LN_ipsecTunnel "IPSec Tunnel" +#define NID_ipsecTunnel 295 +#define OBJ_ipsecTunnel OBJ_id_kp,6L + +#define SN_ipsecUser "ipsecUser" +#define LN_ipsecUser "IPSec User" +#define NID_ipsecUser 296 +#define OBJ_ipsecUser OBJ_id_kp,7L + +#define SN_time_stamp "timeStamping" +#define LN_time_stamp "Time Stamping" +#define NID_time_stamp 133 +#define OBJ_time_stamp OBJ_id_kp,8L + +#define SN_OCSP_sign "OCSPSigning" +#define LN_OCSP_sign "OCSP Signing" +#define NID_OCSP_sign 180 +#define OBJ_OCSP_sign OBJ_id_kp,9L + +#define SN_dvcs "DVCS" +#define LN_dvcs "dvcs" +#define NID_dvcs 297 +#define OBJ_dvcs OBJ_id_kp,10L + +#define SN_ipsec_IKE "ipsecIKE" +#define LN_ipsec_IKE "ipsec Internet Key Exchange" +#define NID_ipsec_IKE 1022 +#define OBJ_ipsec_IKE OBJ_id_kp,17L + +#define SN_capwapAC "capwapAC" +#define LN_capwapAC "Ctrl/provision WAP Access" +#define NID_capwapAC 1023 +#define OBJ_capwapAC OBJ_id_kp,18L + +#define SN_capwapWTP "capwapWTP" +#define LN_capwapWTP "Ctrl/Provision WAP Termination" +#define NID_capwapWTP 1024 +#define OBJ_capwapWTP OBJ_id_kp,19L + +#define SN_sshClient "secureShellClient" +#define LN_sshClient "SSH Client" +#define NID_sshClient 1025 +#define OBJ_sshClient OBJ_id_kp,21L + +#define SN_sshServer "secureShellServer" +#define LN_sshServer "SSH Server" +#define NID_sshServer 1026 +#define OBJ_sshServer OBJ_id_kp,22L + +#define SN_sendRouter "sendRouter" +#define LN_sendRouter "Send Router" +#define NID_sendRouter 1027 +#define OBJ_sendRouter OBJ_id_kp,23L + +#define SN_sendProxiedRouter "sendProxiedRouter" +#define LN_sendProxiedRouter "Send Proxied Router" +#define NID_sendProxiedRouter 1028 +#define OBJ_sendProxiedRouter OBJ_id_kp,24L + +#define SN_sendOwner "sendOwner" +#define LN_sendOwner "Send Owner" +#define NID_sendOwner 1029 +#define OBJ_sendOwner OBJ_id_kp,25L + +#define SN_sendProxiedOwner "sendProxiedOwner" +#define LN_sendProxiedOwner "Send Proxied Owner" +#define NID_sendProxiedOwner 1030 +#define OBJ_sendProxiedOwner OBJ_id_kp,26L + +#define SN_cmcCA "cmcCA" +#define LN_cmcCA "CMC Certificate Authority" +#define NID_cmcCA 1131 +#define OBJ_cmcCA OBJ_id_kp,27L + +#define SN_cmcRA "cmcRA" +#define LN_cmcRA "CMC Registration Authority" +#define NID_cmcRA 1132 +#define OBJ_cmcRA OBJ_id_kp,28L + +#define SN_id_it_caProtEncCert "id-it-caProtEncCert" +#define NID_id_it_caProtEncCert 298 +#define OBJ_id_it_caProtEncCert OBJ_id_it,1L + +#define SN_id_it_signKeyPairTypes "id-it-signKeyPairTypes" +#define NID_id_it_signKeyPairTypes 299 +#define OBJ_id_it_signKeyPairTypes OBJ_id_it,2L + +#define SN_id_it_encKeyPairTypes "id-it-encKeyPairTypes" +#define NID_id_it_encKeyPairTypes 300 +#define OBJ_id_it_encKeyPairTypes OBJ_id_it,3L + +#define SN_id_it_preferredSymmAlg "id-it-preferredSymmAlg" +#define NID_id_it_preferredSymmAlg 301 +#define OBJ_id_it_preferredSymmAlg OBJ_id_it,4L + +#define SN_id_it_caKeyUpdateInfo "id-it-caKeyUpdateInfo" +#define NID_id_it_caKeyUpdateInfo 302 +#define OBJ_id_it_caKeyUpdateInfo OBJ_id_it,5L + +#define SN_id_it_currentCRL "id-it-currentCRL" +#define NID_id_it_currentCRL 303 +#define OBJ_id_it_currentCRL OBJ_id_it,6L + +#define SN_id_it_unsupportedOIDs "id-it-unsupportedOIDs" +#define NID_id_it_unsupportedOIDs 304 +#define OBJ_id_it_unsupportedOIDs OBJ_id_it,7L + +#define SN_id_it_subscriptionRequest "id-it-subscriptionRequest" +#define NID_id_it_subscriptionRequest 305 +#define OBJ_id_it_subscriptionRequest OBJ_id_it,8L + +#define SN_id_it_subscriptionResponse "id-it-subscriptionResponse" +#define NID_id_it_subscriptionResponse 306 +#define OBJ_id_it_subscriptionResponse OBJ_id_it,9L + +#define SN_id_it_keyPairParamReq "id-it-keyPairParamReq" +#define NID_id_it_keyPairParamReq 307 +#define OBJ_id_it_keyPairParamReq OBJ_id_it,10L + +#define SN_id_it_keyPairParamRep "id-it-keyPairParamRep" +#define NID_id_it_keyPairParamRep 308 +#define OBJ_id_it_keyPairParamRep OBJ_id_it,11L + +#define SN_id_it_revPassphrase "id-it-revPassphrase" +#define NID_id_it_revPassphrase 309 +#define OBJ_id_it_revPassphrase OBJ_id_it,12L + +#define SN_id_it_implicitConfirm "id-it-implicitConfirm" +#define NID_id_it_implicitConfirm 310 +#define OBJ_id_it_implicitConfirm OBJ_id_it,13L + +#define SN_id_it_confirmWaitTime "id-it-confirmWaitTime" +#define NID_id_it_confirmWaitTime 311 +#define OBJ_id_it_confirmWaitTime OBJ_id_it,14L + +#define SN_id_it_origPKIMessage "id-it-origPKIMessage" +#define NID_id_it_origPKIMessage 312 +#define OBJ_id_it_origPKIMessage OBJ_id_it,15L + +#define SN_id_it_suppLangTags "id-it-suppLangTags" +#define NID_id_it_suppLangTags 784 +#define OBJ_id_it_suppLangTags OBJ_id_it,16L + +#define SN_id_regCtrl "id-regCtrl" +#define NID_id_regCtrl 313 +#define OBJ_id_regCtrl OBJ_id_pkip,1L + +#define SN_id_regInfo "id-regInfo" +#define NID_id_regInfo 314 +#define OBJ_id_regInfo OBJ_id_pkip,2L + +#define SN_id_regCtrl_regToken "id-regCtrl-regToken" +#define NID_id_regCtrl_regToken 315 +#define OBJ_id_regCtrl_regToken OBJ_id_regCtrl,1L + +#define SN_id_regCtrl_authenticator "id-regCtrl-authenticator" +#define NID_id_regCtrl_authenticator 316 +#define OBJ_id_regCtrl_authenticator OBJ_id_regCtrl,2L + +#define SN_id_regCtrl_pkiPublicationInfo "id-regCtrl-pkiPublicationInfo" +#define NID_id_regCtrl_pkiPublicationInfo 317 +#define OBJ_id_regCtrl_pkiPublicationInfo OBJ_id_regCtrl,3L + +#define SN_id_regCtrl_pkiArchiveOptions "id-regCtrl-pkiArchiveOptions" +#define NID_id_regCtrl_pkiArchiveOptions 318 +#define OBJ_id_regCtrl_pkiArchiveOptions OBJ_id_regCtrl,4L + +#define SN_id_regCtrl_oldCertID "id-regCtrl-oldCertID" +#define NID_id_regCtrl_oldCertID 319 +#define OBJ_id_regCtrl_oldCertID OBJ_id_regCtrl,5L + +#define SN_id_regCtrl_protocolEncrKey "id-regCtrl-protocolEncrKey" +#define NID_id_regCtrl_protocolEncrKey 320 +#define OBJ_id_regCtrl_protocolEncrKey OBJ_id_regCtrl,6L + +#define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" +#define NID_id_regInfo_utf8Pairs 321 +#define OBJ_id_regInfo_utf8Pairs OBJ_id_regInfo,1L + +#define SN_id_regInfo_certReq "id-regInfo-certReq" +#define NID_id_regInfo_certReq 322 +#define OBJ_id_regInfo_certReq OBJ_id_regInfo,2L + +#define SN_id_alg_des40 "id-alg-des40" +#define NID_id_alg_des40 323 +#define OBJ_id_alg_des40 OBJ_id_alg,1L + +#define SN_id_alg_noSignature "id-alg-noSignature" +#define NID_id_alg_noSignature 324 +#define OBJ_id_alg_noSignature OBJ_id_alg,2L + +#define SN_id_alg_dh_sig_hmac_sha1 "id-alg-dh-sig-hmac-sha1" +#define NID_id_alg_dh_sig_hmac_sha1 325 +#define OBJ_id_alg_dh_sig_hmac_sha1 OBJ_id_alg,3L + +#define SN_id_alg_dh_pop "id-alg-dh-pop" +#define NID_id_alg_dh_pop 326 +#define OBJ_id_alg_dh_pop OBJ_id_alg,4L + +#define SN_id_cmc_statusInfo "id-cmc-statusInfo" +#define NID_id_cmc_statusInfo 327 +#define OBJ_id_cmc_statusInfo OBJ_id_cmc,1L + +#define SN_id_cmc_identification "id-cmc-identification" +#define NID_id_cmc_identification 328 +#define OBJ_id_cmc_identification OBJ_id_cmc,2L + +#define SN_id_cmc_identityProof "id-cmc-identityProof" +#define NID_id_cmc_identityProof 329 +#define OBJ_id_cmc_identityProof OBJ_id_cmc,3L + +#define SN_id_cmc_dataReturn "id-cmc-dataReturn" +#define NID_id_cmc_dataReturn 330 +#define OBJ_id_cmc_dataReturn OBJ_id_cmc,4L + +#define SN_id_cmc_transactionId "id-cmc-transactionId" +#define NID_id_cmc_transactionId 331 +#define OBJ_id_cmc_transactionId OBJ_id_cmc,5L + +#define SN_id_cmc_senderNonce "id-cmc-senderNonce" +#define NID_id_cmc_senderNonce 332 +#define OBJ_id_cmc_senderNonce OBJ_id_cmc,6L + +#define SN_id_cmc_recipientNonce "id-cmc-recipientNonce" +#define NID_id_cmc_recipientNonce 333 +#define OBJ_id_cmc_recipientNonce OBJ_id_cmc,7L + +#define SN_id_cmc_addExtensions "id-cmc-addExtensions" +#define NID_id_cmc_addExtensions 334 +#define OBJ_id_cmc_addExtensions OBJ_id_cmc,8L + +#define SN_id_cmc_encryptedPOP "id-cmc-encryptedPOP" +#define NID_id_cmc_encryptedPOP 335 +#define OBJ_id_cmc_encryptedPOP OBJ_id_cmc,9L + +#define SN_id_cmc_decryptedPOP "id-cmc-decryptedPOP" +#define NID_id_cmc_decryptedPOP 336 +#define OBJ_id_cmc_decryptedPOP OBJ_id_cmc,10L + +#define SN_id_cmc_lraPOPWitness "id-cmc-lraPOPWitness" +#define NID_id_cmc_lraPOPWitness 337 +#define OBJ_id_cmc_lraPOPWitness OBJ_id_cmc,11L + +#define SN_id_cmc_getCert "id-cmc-getCert" +#define NID_id_cmc_getCert 338 +#define OBJ_id_cmc_getCert OBJ_id_cmc,15L + +#define SN_id_cmc_getCRL "id-cmc-getCRL" +#define NID_id_cmc_getCRL 339 +#define OBJ_id_cmc_getCRL OBJ_id_cmc,16L + +#define SN_id_cmc_revokeRequest "id-cmc-revokeRequest" +#define NID_id_cmc_revokeRequest 340 +#define OBJ_id_cmc_revokeRequest OBJ_id_cmc,17L + +#define SN_id_cmc_regInfo "id-cmc-regInfo" +#define NID_id_cmc_regInfo 341 +#define OBJ_id_cmc_regInfo OBJ_id_cmc,18L + +#define SN_id_cmc_responseInfo "id-cmc-responseInfo" +#define NID_id_cmc_responseInfo 342 +#define OBJ_id_cmc_responseInfo OBJ_id_cmc,19L + +#define SN_id_cmc_queryPending "id-cmc-queryPending" +#define NID_id_cmc_queryPending 343 +#define OBJ_id_cmc_queryPending OBJ_id_cmc,21L + +#define SN_id_cmc_popLinkRandom "id-cmc-popLinkRandom" +#define NID_id_cmc_popLinkRandom 344 +#define OBJ_id_cmc_popLinkRandom OBJ_id_cmc,22L + +#define SN_id_cmc_popLinkWitness "id-cmc-popLinkWitness" +#define NID_id_cmc_popLinkWitness 345 +#define OBJ_id_cmc_popLinkWitness OBJ_id_cmc,23L + +#define SN_id_cmc_confirmCertAcceptance "id-cmc-confirmCertAcceptance" +#define NID_id_cmc_confirmCertAcceptance 346 +#define OBJ_id_cmc_confirmCertAcceptance OBJ_id_cmc,24L + +#define SN_id_on_personalData "id-on-personalData" +#define NID_id_on_personalData 347 +#define OBJ_id_on_personalData OBJ_id_on,1L + +#define SN_id_on_permanentIdentifier "id-on-permanentIdentifier" +#define LN_id_on_permanentIdentifier "Permanent Identifier" +#define NID_id_on_permanentIdentifier 858 +#define OBJ_id_on_permanentIdentifier OBJ_id_on,3L + +#define SN_id_pda_dateOfBirth "id-pda-dateOfBirth" +#define NID_id_pda_dateOfBirth 348 +#define OBJ_id_pda_dateOfBirth OBJ_id_pda,1L + +#define SN_id_pda_placeOfBirth "id-pda-placeOfBirth" +#define NID_id_pda_placeOfBirth 349 +#define OBJ_id_pda_placeOfBirth OBJ_id_pda,2L + +#define SN_id_pda_gender "id-pda-gender" +#define NID_id_pda_gender 351 +#define OBJ_id_pda_gender OBJ_id_pda,3L + +#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship" +#define NID_id_pda_countryOfCitizenship 352 +#define OBJ_id_pda_countryOfCitizenship OBJ_id_pda,4L + +#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence" +#define NID_id_pda_countryOfResidence 353 +#define OBJ_id_pda_countryOfResidence OBJ_id_pda,5L + +#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo" +#define NID_id_aca_authenticationInfo 354 +#define OBJ_id_aca_authenticationInfo OBJ_id_aca,1L + +#define SN_id_aca_accessIdentity "id-aca-accessIdentity" +#define NID_id_aca_accessIdentity 355 +#define OBJ_id_aca_accessIdentity OBJ_id_aca,2L + +#define SN_id_aca_chargingIdentity "id-aca-chargingIdentity" +#define NID_id_aca_chargingIdentity 356 +#define OBJ_id_aca_chargingIdentity OBJ_id_aca,3L + +#define SN_id_aca_group "id-aca-group" +#define NID_id_aca_group 357 +#define OBJ_id_aca_group OBJ_id_aca,4L + +#define SN_id_aca_role "id-aca-role" +#define NID_id_aca_role 358 +#define OBJ_id_aca_role OBJ_id_aca,5L + +#define SN_id_aca_encAttrs "id-aca-encAttrs" +#define NID_id_aca_encAttrs 399 +#define OBJ_id_aca_encAttrs OBJ_id_aca,6L + +#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1" +#define NID_id_qcs_pkixQCSyntax_v1 359 +#define OBJ_id_qcs_pkixQCSyntax_v1 OBJ_id_qcs,1L + +#define SN_id_cct_crs "id-cct-crs" +#define NID_id_cct_crs 360 +#define OBJ_id_cct_crs OBJ_id_cct,1L + +#define SN_id_cct_PKIData "id-cct-PKIData" +#define NID_id_cct_PKIData 361 +#define OBJ_id_cct_PKIData OBJ_id_cct,2L + +#define SN_id_cct_PKIResponse "id-cct-PKIResponse" +#define NID_id_cct_PKIResponse 362 +#define OBJ_id_cct_PKIResponse OBJ_id_cct,3L + +#define SN_id_ppl_anyLanguage "id-ppl-anyLanguage" +#define LN_id_ppl_anyLanguage "Any language" +#define NID_id_ppl_anyLanguage 664 +#define OBJ_id_ppl_anyLanguage OBJ_id_ppl,0L + +#define SN_id_ppl_inheritAll "id-ppl-inheritAll" +#define LN_id_ppl_inheritAll "Inherit all" +#define NID_id_ppl_inheritAll 665 +#define OBJ_id_ppl_inheritAll OBJ_id_ppl,1L + +#define SN_Independent "id-ppl-independent" +#define LN_Independent "Independent" +#define NID_Independent 667 +#define OBJ_Independent OBJ_id_ppl,2L + +#define SN_ad_OCSP "OCSP" +#define LN_ad_OCSP "OCSP" +#define NID_ad_OCSP 178 +#define OBJ_ad_OCSP OBJ_id_ad,1L + +#define SN_ad_ca_issuers "caIssuers" +#define LN_ad_ca_issuers "CA Issuers" +#define NID_ad_ca_issuers 179 +#define OBJ_ad_ca_issuers OBJ_id_ad,2L + +#define SN_ad_timeStamping "ad_timestamping" +#define LN_ad_timeStamping "AD Time Stamping" +#define NID_ad_timeStamping 363 +#define OBJ_ad_timeStamping OBJ_id_ad,3L + +#define SN_ad_dvcs "AD_DVCS" +#define LN_ad_dvcs "ad dvcs" +#define NID_ad_dvcs 364 +#define OBJ_ad_dvcs OBJ_id_ad,4L + +#define SN_caRepository "caRepository" +#define LN_caRepository "CA Repository" +#define NID_caRepository 785 +#define OBJ_caRepository OBJ_id_ad,5L + +#define OBJ_id_pkix_OCSP OBJ_ad_OCSP + +#define SN_id_pkix_OCSP_basic "basicOCSPResponse" +#define LN_id_pkix_OCSP_basic "Basic OCSP Response" +#define NID_id_pkix_OCSP_basic 365 +#define OBJ_id_pkix_OCSP_basic OBJ_id_pkix_OCSP,1L + +#define SN_id_pkix_OCSP_Nonce "Nonce" +#define LN_id_pkix_OCSP_Nonce "OCSP Nonce" +#define NID_id_pkix_OCSP_Nonce 366 +#define OBJ_id_pkix_OCSP_Nonce OBJ_id_pkix_OCSP,2L + +#define SN_id_pkix_OCSP_CrlID "CrlID" +#define LN_id_pkix_OCSP_CrlID "OCSP CRL ID" +#define NID_id_pkix_OCSP_CrlID 367 +#define OBJ_id_pkix_OCSP_CrlID OBJ_id_pkix_OCSP,3L + +#define SN_id_pkix_OCSP_acceptableResponses "acceptableResponses" +#define LN_id_pkix_OCSP_acceptableResponses "Acceptable OCSP Responses" +#define NID_id_pkix_OCSP_acceptableResponses 368 +#define OBJ_id_pkix_OCSP_acceptableResponses OBJ_id_pkix_OCSP,4L + +#define SN_id_pkix_OCSP_noCheck "noCheck" +#define LN_id_pkix_OCSP_noCheck "OCSP No Check" +#define NID_id_pkix_OCSP_noCheck 369 +#define OBJ_id_pkix_OCSP_noCheck OBJ_id_pkix_OCSP,5L + +#define SN_id_pkix_OCSP_archiveCutoff "archiveCutoff" +#define LN_id_pkix_OCSP_archiveCutoff "OCSP Archive Cutoff" +#define NID_id_pkix_OCSP_archiveCutoff 370 +#define OBJ_id_pkix_OCSP_archiveCutoff OBJ_id_pkix_OCSP,6L + +#define SN_id_pkix_OCSP_serviceLocator "serviceLocator" +#define LN_id_pkix_OCSP_serviceLocator "OCSP Service Locator" +#define NID_id_pkix_OCSP_serviceLocator 371 +#define OBJ_id_pkix_OCSP_serviceLocator OBJ_id_pkix_OCSP,7L + +#define SN_id_pkix_OCSP_extendedStatus "extendedStatus" +#define LN_id_pkix_OCSP_extendedStatus "Extended OCSP Status" +#define NID_id_pkix_OCSP_extendedStatus 372 +#define OBJ_id_pkix_OCSP_extendedStatus OBJ_id_pkix_OCSP,8L + +#define SN_id_pkix_OCSP_valid "valid" +#define NID_id_pkix_OCSP_valid 373 +#define OBJ_id_pkix_OCSP_valid OBJ_id_pkix_OCSP,9L + +#define SN_id_pkix_OCSP_path "path" +#define NID_id_pkix_OCSP_path 374 +#define OBJ_id_pkix_OCSP_path OBJ_id_pkix_OCSP,10L + +#define SN_id_pkix_OCSP_trustRoot "trustRoot" +#define LN_id_pkix_OCSP_trustRoot "Trust Root" +#define NID_id_pkix_OCSP_trustRoot 375 +#define OBJ_id_pkix_OCSP_trustRoot OBJ_id_pkix_OCSP,11L + +#define SN_algorithm "algorithm" +#define LN_algorithm "algorithm" +#define NID_algorithm 376 +#define OBJ_algorithm 1L,3L,14L,3L,2L + +#define SN_md5WithRSA "RSA-NP-MD5" +#define LN_md5WithRSA "md5WithRSA" +#define NID_md5WithRSA 104 +#define OBJ_md5WithRSA OBJ_algorithm,3L + +#define SN_des_ecb "DES-ECB" +#define LN_des_ecb "des-ecb" +#define NID_des_ecb 29 +#define OBJ_des_ecb OBJ_algorithm,6L + +#define SN_des_cbc "DES-CBC" +#define LN_des_cbc "des-cbc" +#define NID_des_cbc 31 +#define OBJ_des_cbc OBJ_algorithm,7L + +#define SN_des_ofb64 "DES-OFB" +#define LN_des_ofb64 "des-ofb" +#define NID_des_ofb64 45 +#define OBJ_des_ofb64 OBJ_algorithm,8L + +#define SN_des_cfb64 "DES-CFB" +#define LN_des_cfb64 "des-cfb" +#define NID_des_cfb64 30 +#define OBJ_des_cfb64 OBJ_algorithm,9L + +#define SN_rsaSignature "rsaSignature" +#define NID_rsaSignature 377 +#define OBJ_rsaSignature OBJ_algorithm,11L + +#define SN_dsa_2 "DSA-old" +#define LN_dsa_2 "dsaEncryption-old" +#define NID_dsa_2 67 +#define OBJ_dsa_2 OBJ_algorithm,12L + +#define SN_dsaWithSHA "DSA-SHA" +#define LN_dsaWithSHA "dsaWithSHA" +#define NID_dsaWithSHA 66 +#define OBJ_dsaWithSHA OBJ_algorithm,13L + +#define SN_shaWithRSAEncryption "RSA-SHA" +#define LN_shaWithRSAEncryption "shaWithRSAEncryption" +#define NID_shaWithRSAEncryption 42 +#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L + +#define SN_des_ede_ecb "DES-EDE" +#define LN_des_ede_ecb "des-ede" +#define NID_des_ede_ecb 32 +#define OBJ_des_ede_ecb OBJ_algorithm,17L + +#define SN_des_ede3_ecb "DES-EDE3" +#define LN_des_ede3_ecb "des-ede3" +#define NID_des_ede3_ecb 33 + +#define SN_des_ede_cbc "DES-EDE-CBC" +#define LN_des_ede_cbc "des-ede-cbc" +#define NID_des_ede_cbc 43 + +#define SN_des_ede_cfb64 "DES-EDE-CFB" +#define LN_des_ede_cfb64 "des-ede-cfb" +#define NID_des_ede_cfb64 60 + +#define SN_des_ede3_cfb64 "DES-EDE3-CFB" +#define LN_des_ede3_cfb64 "des-ede3-cfb" +#define NID_des_ede3_cfb64 61 + +#define SN_des_ede_ofb64 "DES-EDE-OFB" +#define LN_des_ede_ofb64 "des-ede-ofb" +#define NID_des_ede_ofb64 62 + +#define SN_des_ede3_ofb64 "DES-EDE3-OFB" +#define LN_des_ede3_ofb64 "des-ede3-ofb" +#define NID_des_ede3_ofb64 63 + +#define SN_desx_cbc "DESX-CBC" +#define LN_desx_cbc "desx-cbc" +#define NID_desx_cbc 80 + +#define SN_sha "SHA" +#define LN_sha "sha" +#define NID_sha 41 +#define OBJ_sha OBJ_algorithm,18L + +#define SN_sha1 "SHA1" +#define LN_sha1 "sha1" +#define NID_sha1 64 +#define OBJ_sha1 OBJ_algorithm,26L + +#define SN_dsaWithSHA1_2 "DSA-SHA1-old" +#define LN_dsaWithSHA1_2 "dsaWithSHA1-old" +#define NID_dsaWithSHA1_2 70 +#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L + +#define SN_sha1WithRSA "RSA-SHA1-2" +#define LN_sha1WithRSA "sha1WithRSA" +#define NID_sha1WithRSA 115 +#define OBJ_sha1WithRSA OBJ_algorithm,29L + +#define SN_ripemd160 "RIPEMD160" +#define LN_ripemd160 "ripemd160" +#define NID_ripemd160 117 +#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L + +#define SN_ripemd160WithRSA "RSA-RIPEMD160" +#define LN_ripemd160WithRSA "ripemd160WithRSA" +#define NID_ripemd160WithRSA 119 +#define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L + +#define SN_blake2b512 "BLAKE2b512" +#define LN_blake2b512 "blake2b512" +#define NID_blake2b512 1056 +#define OBJ_blake2b512 1L,3L,6L,1L,4L,1L,1722L,12L,2L,1L,16L + +#define SN_blake2s256 "BLAKE2s256" +#define LN_blake2s256 "blake2s256" +#define NID_blake2s256 1057 +#define OBJ_blake2s256 1L,3L,6L,1L,4L,1L,1722L,12L,2L,2L,8L + +#define SN_sxnet "SXNetID" +#define LN_sxnet "Strong Extranet ID" +#define NID_sxnet 143 +#define OBJ_sxnet 1L,3L,101L,1L,4L,1L + +#define SN_X500 "X500" +#define LN_X500 "directory services (X.500)" +#define NID_X500 11 +#define OBJ_X500 2L,5L + +#define SN_X509 "X509" +#define NID_X509 12 +#define OBJ_X509 OBJ_X500,4L + +#define SN_commonName "CN" +#define LN_commonName "commonName" +#define NID_commonName 13 +#define OBJ_commonName OBJ_X509,3L + +#define SN_surname "SN" +#define LN_surname "surname" +#define NID_surname 100 +#define OBJ_surname OBJ_X509,4L + +#define LN_serialNumber "serialNumber" +#define NID_serialNumber 105 +#define OBJ_serialNumber OBJ_X509,5L + +#define SN_countryName "C" +#define LN_countryName "countryName" +#define NID_countryName 14 +#define OBJ_countryName OBJ_X509,6L + +#define SN_localityName "L" +#define LN_localityName "localityName" +#define NID_localityName 15 +#define OBJ_localityName OBJ_X509,7L + +#define SN_stateOrProvinceName "ST" +#define LN_stateOrProvinceName "stateOrProvinceName" +#define NID_stateOrProvinceName 16 +#define OBJ_stateOrProvinceName OBJ_X509,8L + +#define SN_streetAddress "street" +#define LN_streetAddress "streetAddress" +#define NID_streetAddress 660 +#define OBJ_streetAddress OBJ_X509,9L + +#define SN_organizationName "O" +#define LN_organizationName "organizationName" +#define NID_organizationName 17 +#define OBJ_organizationName OBJ_X509,10L + +#define SN_organizationalUnitName "OU" +#define LN_organizationalUnitName "organizationalUnitName" +#define NID_organizationalUnitName 18 +#define OBJ_organizationalUnitName OBJ_X509,11L + +#define SN_title "title" +#define LN_title "title" +#define NID_title 106 +#define OBJ_title OBJ_X509,12L + +#define LN_description "description" +#define NID_description 107 +#define OBJ_description OBJ_X509,13L + +#define LN_searchGuide "searchGuide" +#define NID_searchGuide 859 +#define OBJ_searchGuide OBJ_X509,14L + +#define LN_businessCategory "businessCategory" +#define NID_businessCategory 860 +#define OBJ_businessCategory OBJ_X509,15L + +#define LN_postalAddress "postalAddress" +#define NID_postalAddress 861 +#define OBJ_postalAddress OBJ_X509,16L + +#define LN_postalCode "postalCode" +#define NID_postalCode 661 +#define OBJ_postalCode OBJ_X509,17L + +#define LN_postOfficeBox "postOfficeBox" +#define NID_postOfficeBox 862 +#define OBJ_postOfficeBox OBJ_X509,18L + +#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName" +#define NID_physicalDeliveryOfficeName 863 +#define OBJ_physicalDeliveryOfficeName OBJ_X509,19L + +#define LN_telephoneNumber "telephoneNumber" +#define NID_telephoneNumber 864 +#define OBJ_telephoneNumber OBJ_X509,20L + +#define LN_telexNumber "telexNumber" +#define NID_telexNumber 865 +#define OBJ_telexNumber OBJ_X509,21L + +#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier" +#define NID_teletexTerminalIdentifier 866 +#define OBJ_teletexTerminalIdentifier OBJ_X509,22L + +#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber" +#define NID_facsimileTelephoneNumber 867 +#define OBJ_facsimileTelephoneNumber OBJ_X509,23L + +#define LN_x121Address "x121Address" +#define NID_x121Address 868 +#define OBJ_x121Address OBJ_X509,24L + +#define LN_internationaliSDNNumber "internationaliSDNNumber" +#define NID_internationaliSDNNumber 869 +#define OBJ_internationaliSDNNumber OBJ_X509,25L + +#define LN_registeredAddress "registeredAddress" +#define NID_registeredAddress 870 +#define OBJ_registeredAddress OBJ_X509,26L + +#define LN_destinationIndicator "destinationIndicator" +#define NID_destinationIndicator 871 +#define OBJ_destinationIndicator OBJ_X509,27L + +#define LN_preferredDeliveryMethod "preferredDeliveryMethod" +#define NID_preferredDeliveryMethod 872 +#define OBJ_preferredDeliveryMethod OBJ_X509,28L + +#define LN_presentationAddress "presentationAddress" +#define NID_presentationAddress 873 +#define OBJ_presentationAddress OBJ_X509,29L + +#define LN_supportedApplicationContext "supportedApplicationContext" +#define NID_supportedApplicationContext 874 +#define OBJ_supportedApplicationContext OBJ_X509,30L + +#define SN_member "member" +#define NID_member 875 +#define OBJ_member OBJ_X509,31L + +#define SN_owner "owner" +#define NID_owner 876 +#define OBJ_owner OBJ_X509,32L + +#define LN_roleOccupant "roleOccupant" +#define NID_roleOccupant 877 +#define OBJ_roleOccupant OBJ_X509,33L + +#define SN_seeAlso "seeAlso" +#define NID_seeAlso 878 +#define OBJ_seeAlso OBJ_X509,34L + +#define LN_userPassword "userPassword" +#define NID_userPassword 879 +#define OBJ_userPassword OBJ_X509,35L + +#define LN_userCertificate "userCertificate" +#define NID_userCertificate 880 +#define OBJ_userCertificate OBJ_X509,36L + +#define LN_cACertificate "cACertificate" +#define NID_cACertificate 881 +#define OBJ_cACertificate OBJ_X509,37L + +#define LN_authorityRevocationList "authorityRevocationList" +#define NID_authorityRevocationList 882 +#define OBJ_authorityRevocationList OBJ_X509,38L + +#define LN_certificateRevocationList "certificateRevocationList" +#define NID_certificateRevocationList 883 +#define OBJ_certificateRevocationList OBJ_X509,39L + +#define LN_crossCertificatePair "crossCertificatePair" +#define NID_crossCertificatePair 884 +#define OBJ_crossCertificatePair OBJ_X509,40L + +#define SN_name "name" +#define LN_name "name" +#define NID_name 173 +#define OBJ_name OBJ_X509,41L + +#define SN_givenName "GN" +#define LN_givenName "givenName" +#define NID_givenName 99 +#define OBJ_givenName OBJ_X509,42L + +#define SN_initials "initials" +#define LN_initials "initials" +#define NID_initials 101 +#define OBJ_initials OBJ_X509,43L + +#define LN_generationQualifier "generationQualifier" +#define NID_generationQualifier 509 +#define OBJ_generationQualifier OBJ_X509,44L + +#define LN_x500UniqueIdentifier "x500UniqueIdentifier" +#define NID_x500UniqueIdentifier 503 +#define OBJ_x500UniqueIdentifier OBJ_X509,45L + +#define SN_dnQualifier "dnQualifier" +#define LN_dnQualifier "dnQualifier" +#define NID_dnQualifier 174 +#define OBJ_dnQualifier OBJ_X509,46L + +#define LN_enhancedSearchGuide "enhancedSearchGuide" +#define NID_enhancedSearchGuide 885 +#define OBJ_enhancedSearchGuide OBJ_X509,47L + +#define LN_protocolInformation "protocolInformation" +#define NID_protocolInformation 886 +#define OBJ_protocolInformation OBJ_X509,48L + +#define LN_distinguishedName "distinguishedName" +#define NID_distinguishedName 887 +#define OBJ_distinguishedName OBJ_X509,49L + +#define LN_uniqueMember "uniqueMember" +#define NID_uniqueMember 888 +#define OBJ_uniqueMember OBJ_X509,50L + +#define LN_houseIdentifier "houseIdentifier" +#define NID_houseIdentifier 889 +#define OBJ_houseIdentifier OBJ_X509,51L + +#define LN_supportedAlgorithms "supportedAlgorithms" +#define NID_supportedAlgorithms 890 +#define OBJ_supportedAlgorithms OBJ_X509,52L + +#define LN_deltaRevocationList "deltaRevocationList" +#define NID_deltaRevocationList 891 +#define OBJ_deltaRevocationList OBJ_X509,53L + +#define SN_dmdName "dmdName" +#define NID_dmdName 892 +#define OBJ_dmdName OBJ_X509,54L + +#define LN_pseudonym "pseudonym" +#define NID_pseudonym 510 +#define OBJ_pseudonym OBJ_X509,65L + +#define SN_role "role" +#define LN_role "role" +#define NID_role 400 +#define OBJ_role OBJ_X509,72L + +#define LN_organizationIdentifier "organizationIdentifier" +#define NID_organizationIdentifier 1089 +#define OBJ_organizationIdentifier OBJ_X509,97L + +#define SN_countryCode3c "c3" +#define LN_countryCode3c "countryCode3c" +#define NID_countryCode3c 1090 +#define OBJ_countryCode3c OBJ_X509,98L + +#define SN_countryCode3n "n3" +#define LN_countryCode3n "countryCode3n" +#define NID_countryCode3n 1091 +#define OBJ_countryCode3n OBJ_X509,99L + +#define LN_dnsName "dnsName" +#define NID_dnsName 1092 +#define OBJ_dnsName OBJ_X509,100L + +#define SN_X500algorithms "X500algorithms" +#define LN_X500algorithms "directory services - algorithms" +#define NID_X500algorithms 378 +#define OBJ_X500algorithms OBJ_X500,8L + +#define SN_rsa "RSA" +#define LN_rsa "rsa" +#define NID_rsa 19 +#define OBJ_rsa OBJ_X500algorithms,1L,1L + +#define SN_mdc2WithRSA "RSA-MDC2" +#define LN_mdc2WithRSA "mdc2WithRSA" +#define NID_mdc2WithRSA 96 +#define OBJ_mdc2WithRSA OBJ_X500algorithms,3L,100L + +#define SN_mdc2 "MDC2" +#define LN_mdc2 "mdc2" +#define NID_mdc2 95 +#define OBJ_mdc2 OBJ_X500algorithms,3L,101L + +#define SN_id_ce "id-ce" +#define NID_id_ce 81 +#define OBJ_id_ce OBJ_X500,29L + +#define SN_subject_directory_attributes "subjectDirectoryAttributes" +#define LN_subject_directory_attributes "X509v3 Subject Directory Attributes" +#define NID_subject_directory_attributes 769 +#define OBJ_subject_directory_attributes OBJ_id_ce,9L + +#define SN_subject_key_identifier "subjectKeyIdentifier" +#define LN_subject_key_identifier "X509v3 Subject Key Identifier" +#define NID_subject_key_identifier 82 +#define OBJ_subject_key_identifier OBJ_id_ce,14L + +#define SN_key_usage "keyUsage" +#define LN_key_usage "X509v3 Key Usage" +#define NID_key_usage 83 +#define OBJ_key_usage OBJ_id_ce,15L + +#define SN_private_key_usage_period "privateKeyUsagePeriod" +#define LN_private_key_usage_period "X509v3 Private Key Usage Period" +#define NID_private_key_usage_period 84 +#define OBJ_private_key_usage_period OBJ_id_ce,16L + +#define SN_subject_alt_name "subjectAltName" +#define LN_subject_alt_name "X509v3 Subject Alternative Name" +#define NID_subject_alt_name 85 +#define OBJ_subject_alt_name OBJ_id_ce,17L + +#define SN_issuer_alt_name "issuerAltName" +#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" +#define NID_issuer_alt_name 86 +#define OBJ_issuer_alt_name OBJ_id_ce,18L + +#define SN_basic_constraints "basicConstraints" +#define LN_basic_constraints "X509v3 Basic Constraints" +#define NID_basic_constraints 87 +#define OBJ_basic_constraints OBJ_id_ce,19L + +#define SN_crl_number "crlNumber" +#define LN_crl_number "X509v3 CRL Number" +#define NID_crl_number 88 +#define OBJ_crl_number OBJ_id_ce,20L + +#define SN_crl_reason "CRLReason" +#define LN_crl_reason "X509v3 CRL Reason Code" +#define NID_crl_reason 141 +#define OBJ_crl_reason OBJ_id_ce,21L + +#define SN_invalidity_date "invalidityDate" +#define LN_invalidity_date "Invalidity Date" +#define NID_invalidity_date 142 +#define OBJ_invalidity_date OBJ_id_ce,24L + +#define SN_delta_crl "deltaCRL" +#define LN_delta_crl "X509v3 Delta CRL Indicator" +#define NID_delta_crl 140 +#define OBJ_delta_crl OBJ_id_ce,27L + +#define SN_issuing_distribution_point "issuingDistributionPoint" +#define LN_issuing_distribution_point "X509v3 Issuing Distribution Point" +#define NID_issuing_distribution_point 770 +#define OBJ_issuing_distribution_point OBJ_id_ce,28L + +#define SN_certificate_issuer "certificateIssuer" +#define LN_certificate_issuer "X509v3 Certificate Issuer" +#define NID_certificate_issuer 771 +#define OBJ_certificate_issuer OBJ_id_ce,29L + +#define SN_name_constraints "nameConstraints" +#define LN_name_constraints "X509v3 Name Constraints" +#define NID_name_constraints 666 +#define OBJ_name_constraints OBJ_id_ce,30L + +#define SN_crl_distribution_points "crlDistributionPoints" +#define LN_crl_distribution_points "X509v3 CRL Distribution Points" +#define NID_crl_distribution_points 103 +#define OBJ_crl_distribution_points OBJ_id_ce,31L + +#define SN_certificate_policies "certificatePolicies" +#define LN_certificate_policies "X509v3 Certificate Policies" +#define NID_certificate_policies 89 +#define OBJ_certificate_policies OBJ_id_ce,32L + +#define SN_any_policy "anyPolicy" +#define LN_any_policy "X509v3 Any Policy" +#define NID_any_policy 746 +#define OBJ_any_policy OBJ_certificate_policies,0L + +#define SN_policy_mappings "policyMappings" +#define LN_policy_mappings "X509v3 Policy Mappings" +#define NID_policy_mappings 747 +#define OBJ_policy_mappings OBJ_id_ce,33L + +#define SN_authority_key_identifier "authorityKeyIdentifier" +#define LN_authority_key_identifier "X509v3 Authority Key Identifier" +#define NID_authority_key_identifier 90 +#define OBJ_authority_key_identifier OBJ_id_ce,35L + +#define SN_policy_constraints "policyConstraints" +#define LN_policy_constraints "X509v3 Policy Constraints" +#define NID_policy_constraints 401 +#define OBJ_policy_constraints OBJ_id_ce,36L + +#define SN_ext_key_usage "extendedKeyUsage" +#define LN_ext_key_usage "X509v3 Extended Key Usage" +#define NID_ext_key_usage 126 +#define OBJ_ext_key_usage OBJ_id_ce,37L + +#define SN_freshest_crl "freshestCRL" +#define LN_freshest_crl "X509v3 Freshest CRL" +#define NID_freshest_crl 857 +#define OBJ_freshest_crl OBJ_id_ce,46L + +#define SN_inhibit_any_policy "inhibitAnyPolicy" +#define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" +#define NID_inhibit_any_policy 748 +#define OBJ_inhibit_any_policy OBJ_id_ce,54L + +#define SN_target_information "targetInformation" +#define LN_target_information "X509v3 AC Targeting" +#define NID_target_information 402 +#define OBJ_target_information OBJ_id_ce,55L + +#define SN_no_rev_avail "noRevAvail" +#define LN_no_rev_avail "X509v3 No Revocation Available" +#define NID_no_rev_avail 403 +#define OBJ_no_rev_avail OBJ_id_ce,56L + +#define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" +#define LN_anyExtendedKeyUsage "Any Extended Key Usage" +#define NID_anyExtendedKeyUsage 910 +#define OBJ_anyExtendedKeyUsage OBJ_ext_key_usage,0L + +#define SN_netscape "Netscape" +#define LN_netscape "Netscape Communications Corp." +#define NID_netscape 57 +#define OBJ_netscape 2L,16L,840L,1L,113730L + +#define SN_netscape_cert_extension "nsCertExt" +#define LN_netscape_cert_extension "Netscape Certificate Extension" +#define NID_netscape_cert_extension 58 +#define OBJ_netscape_cert_extension OBJ_netscape,1L + +#define SN_netscape_data_type "nsDataType" +#define LN_netscape_data_type "Netscape Data Type" +#define NID_netscape_data_type 59 +#define OBJ_netscape_data_type OBJ_netscape,2L + +#define SN_netscape_cert_type "nsCertType" +#define LN_netscape_cert_type "Netscape Cert Type" +#define NID_netscape_cert_type 71 +#define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L + +#define SN_netscape_base_url "nsBaseUrl" +#define LN_netscape_base_url "Netscape Base Url" +#define NID_netscape_base_url 72 +#define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L + +#define SN_netscape_revocation_url "nsRevocationUrl" +#define LN_netscape_revocation_url "Netscape Revocation Url" +#define NID_netscape_revocation_url 73 +#define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L + +#define SN_netscape_ca_revocation_url "nsCaRevocationUrl" +#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" +#define NID_netscape_ca_revocation_url 74 +#define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L + +#define SN_netscape_renewal_url "nsRenewalUrl" +#define LN_netscape_renewal_url "Netscape Renewal Url" +#define NID_netscape_renewal_url 75 +#define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L + +#define SN_netscape_ca_policy_url "nsCaPolicyUrl" +#define LN_netscape_ca_policy_url "Netscape CA Policy Url" +#define NID_netscape_ca_policy_url 76 +#define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L + +#define SN_netscape_ssl_server_name "nsSslServerName" +#define LN_netscape_ssl_server_name "Netscape SSL Server Name" +#define NID_netscape_ssl_server_name 77 +#define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L + +#define SN_netscape_comment "nsComment" +#define LN_netscape_comment "Netscape Comment" +#define NID_netscape_comment 78 +#define OBJ_netscape_comment OBJ_netscape_cert_extension,13L + +#define SN_netscape_cert_sequence "nsCertSequence" +#define LN_netscape_cert_sequence "Netscape Certificate Sequence" +#define NID_netscape_cert_sequence 79 +#define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L + +#define SN_ns_sgc "nsSGC" +#define LN_ns_sgc "Netscape Server Gated Crypto" +#define NID_ns_sgc 139 +#define OBJ_ns_sgc OBJ_netscape,4L,1L + +#define SN_org "ORG" +#define LN_org "org" +#define NID_org 379 +#define OBJ_org OBJ_iso,3L + +#define SN_dod "DOD" +#define LN_dod "dod" +#define NID_dod 380 +#define OBJ_dod OBJ_org,6L + +#define SN_iana "IANA" +#define LN_iana "iana" +#define NID_iana 381 +#define OBJ_iana OBJ_dod,1L + +#define OBJ_internet OBJ_iana + +#define SN_Directory "directory" +#define LN_Directory "Directory" +#define NID_Directory 382 +#define OBJ_Directory OBJ_internet,1L + +#define SN_Management "mgmt" +#define LN_Management "Management" +#define NID_Management 383 +#define OBJ_Management OBJ_internet,2L + +#define SN_Experimental "experimental" +#define LN_Experimental "Experimental" +#define NID_Experimental 384 +#define OBJ_Experimental OBJ_internet,3L + +#define SN_Private "private" +#define LN_Private "Private" +#define NID_Private 385 +#define OBJ_Private OBJ_internet,4L + +#define SN_Security "security" +#define LN_Security "Security" +#define NID_Security 386 +#define OBJ_Security OBJ_internet,5L + +#define SN_SNMPv2 "snmpv2" +#define LN_SNMPv2 "SNMPv2" +#define NID_SNMPv2 387 +#define OBJ_SNMPv2 OBJ_internet,6L + +#define LN_Mail "Mail" +#define NID_Mail 388 +#define OBJ_Mail OBJ_internet,7L + +#define SN_Enterprises "enterprises" +#define LN_Enterprises "Enterprises" +#define NID_Enterprises 389 +#define OBJ_Enterprises OBJ_Private,1L + +#define SN_dcObject "dcobject" +#define LN_dcObject "dcObject" +#define NID_dcObject 390 +#define OBJ_dcObject OBJ_Enterprises,1466L,344L + +#define SN_mime_mhs "mime-mhs" +#define LN_mime_mhs "MIME MHS" +#define NID_mime_mhs 504 +#define OBJ_mime_mhs OBJ_Mail,1L + +#define SN_mime_mhs_headings "mime-mhs-headings" +#define LN_mime_mhs_headings "mime-mhs-headings" +#define NID_mime_mhs_headings 505 +#define OBJ_mime_mhs_headings OBJ_mime_mhs,1L + +#define SN_mime_mhs_bodies "mime-mhs-bodies" +#define LN_mime_mhs_bodies "mime-mhs-bodies" +#define NID_mime_mhs_bodies 506 +#define OBJ_mime_mhs_bodies OBJ_mime_mhs,2L + +#define SN_id_hex_partial_message "id-hex-partial-message" +#define LN_id_hex_partial_message "id-hex-partial-message" +#define NID_id_hex_partial_message 507 +#define OBJ_id_hex_partial_message OBJ_mime_mhs_headings,1L + +#define SN_id_hex_multipart_message "id-hex-multipart-message" +#define LN_id_hex_multipart_message "id-hex-multipart-message" +#define NID_id_hex_multipart_message 508 +#define OBJ_id_hex_multipart_message OBJ_mime_mhs_headings,2L + +#define SN_zlib_compression "ZLIB" +#define LN_zlib_compression "zlib compression" +#define NID_zlib_compression 125 +#define OBJ_zlib_compression OBJ_id_smime_alg,8L + +#define OBJ_csor 2L,16L,840L,1L,101L,3L + +#define OBJ_nistAlgorithms OBJ_csor,4L + +#define OBJ_aes OBJ_nistAlgorithms,1L + +#define SN_aes_128_ecb "AES-128-ECB" +#define LN_aes_128_ecb "aes-128-ecb" +#define NID_aes_128_ecb 418 +#define OBJ_aes_128_ecb OBJ_aes,1L + +#define SN_aes_128_cbc "AES-128-CBC" +#define LN_aes_128_cbc "aes-128-cbc" +#define NID_aes_128_cbc 419 +#define OBJ_aes_128_cbc OBJ_aes,2L + +#define SN_aes_128_ofb128 "AES-128-OFB" +#define LN_aes_128_ofb128 "aes-128-ofb" +#define NID_aes_128_ofb128 420 +#define OBJ_aes_128_ofb128 OBJ_aes,3L + +#define SN_aes_128_cfb128 "AES-128-CFB" +#define LN_aes_128_cfb128 "aes-128-cfb" +#define NID_aes_128_cfb128 421 +#define OBJ_aes_128_cfb128 OBJ_aes,4L + +#define SN_id_aes128_wrap "id-aes128-wrap" +#define NID_id_aes128_wrap 788 +#define OBJ_id_aes128_wrap OBJ_aes,5L + +#define SN_aes_128_gcm "id-aes128-GCM" +#define LN_aes_128_gcm "aes-128-gcm" +#define NID_aes_128_gcm 895 +#define OBJ_aes_128_gcm OBJ_aes,6L + +#define SN_aes_128_ccm "id-aes128-CCM" +#define LN_aes_128_ccm "aes-128-ccm" +#define NID_aes_128_ccm 896 +#define OBJ_aes_128_ccm OBJ_aes,7L + +#define SN_id_aes128_wrap_pad "id-aes128-wrap-pad" +#define NID_id_aes128_wrap_pad 897 +#define OBJ_id_aes128_wrap_pad OBJ_aes,8L + +#define SN_aes_192_ecb "AES-192-ECB" +#define LN_aes_192_ecb "aes-192-ecb" +#define NID_aes_192_ecb 422 +#define OBJ_aes_192_ecb OBJ_aes,21L + +#define SN_aes_192_cbc "AES-192-CBC" +#define LN_aes_192_cbc "aes-192-cbc" +#define NID_aes_192_cbc 423 +#define OBJ_aes_192_cbc OBJ_aes,22L + +#define SN_aes_192_ofb128 "AES-192-OFB" +#define LN_aes_192_ofb128 "aes-192-ofb" +#define NID_aes_192_ofb128 424 +#define OBJ_aes_192_ofb128 OBJ_aes,23L + +#define SN_aes_192_cfb128 "AES-192-CFB" +#define LN_aes_192_cfb128 "aes-192-cfb" +#define NID_aes_192_cfb128 425 +#define OBJ_aes_192_cfb128 OBJ_aes,24L + +#define SN_id_aes192_wrap "id-aes192-wrap" +#define NID_id_aes192_wrap 789 +#define OBJ_id_aes192_wrap OBJ_aes,25L + +#define SN_aes_192_gcm "id-aes192-GCM" +#define LN_aes_192_gcm "aes-192-gcm" +#define NID_aes_192_gcm 898 +#define OBJ_aes_192_gcm OBJ_aes,26L + +#define SN_aes_192_ccm "id-aes192-CCM" +#define LN_aes_192_ccm "aes-192-ccm" +#define NID_aes_192_ccm 899 +#define OBJ_aes_192_ccm OBJ_aes,27L + +#define SN_id_aes192_wrap_pad "id-aes192-wrap-pad" +#define NID_id_aes192_wrap_pad 900 +#define OBJ_id_aes192_wrap_pad OBJ_aes,28L + +#define SN_aes_256_ecb "AES-256-ECB" +#define LN_aes_256_ecb "aes-256-ecb" +#define NID_aes_256_ecb 426 +#define OBJ_aes_256_ecb OBJ_aes,41L + +#define SN_aes_256_cbc "AES-256-CBC" +#define LN_aes_256_cbc "aes-256-cbc" +#define NID_aes_256_cbc 427 +#define OBJ_aes_256_cbc OBJ_aes,42L + +#define SN_aes_256_ofb128 "AES-256-OFB" +#define LN_aes_256_ofb128 "aes-256-ofb" +#define NID_aes_256_ofb128 428 +#define OBJ_aes_256_ofb128 OBJ_aes,43L + +#define SN_aes_256_cfb128 "AES-256-CFB" +#define LN_aes_256_cfb128 "aes-256-cfb" +#define NID_aes_256_cfb128 429 +#define OBJ_aes_256_cfb128 OBJ_aes,44L + +#define SN_id_aes256_wrap "id-aes256-wrap" +#define NID_id_aes256_wrap 790 +#define OBJ_id_aes256_wrap OBJ_aes,45L + +#define SN_aes_256_gcm "id-aes256-GCM" +#define LN_aes_256_gcm "aes-256-gcm" +#define NID_aes_256_gcm 901 +#define OBJ_aes_256_gcm OBJ_aes,46L + +#define SN_aes_256_ccm "id-aes256-CCM" +#define LN_aes_256_ccm "aes-256-ccm" +#define NID_aes_256_ccm 902 +#define OBJ_aes_256_ccm OBJ_aes,47L + +#define SN_id_aes256_wrap_pad "id-aes256-wrap-pad" +#define NID_id_aes256_wrap_pad 903 +#define OBJ_id_aes256_wrap_pad OBJ_aes,48L + +#define SN_aes_128_xts "AES-128-XTS" +#define LN_aes_128_xts "aes-128-xts" +#define NID_aes_128_xts 913 +#define OBJ_aes_128_xts OBJ_ieee_siswg,0L,1L,1L + +#define SN_aes_256_xts "AES-256-XTS" +#define LN_aes_256_xts "aes-256-xts" +#define NID_aes_256_xts 914 +#define OBJ_aes_256_xts OBJ_ieee_siswg,0L,1L,2L + +#define SN_aes_128_cfb1 "AES-128-CFB1" +#define LN_aes_128_cfb1 "aes-128-cfb1" +#define NID_aes_128_cfb1 650 + +#define SN_aes_192_cfb1 "AES-192-CFB1" +#define LN_aes_192_cfb1 "aes-192-cfb1" +#define NID_aes_192_cfb1 651 + +#define SN_aes_256_cfb1 "AES-256-CFB1" +#define LN_aes_256_cfb1 "aes-256-cfb1" +#define NID_aes_256_cfb1 652 + +#define SN_aes_128_cfb8 "AES-128-CFB8" +#define LN_aes_128_cfb8 "aes-128-cfb8" +#define NID_aes_128_cfb8 653 + +#define SN_aes_192_cfb8 "AES-192-CFB8" +#define LN_aes_192_cfb8 "aes-192-cfb8" +#define NID_aes_192_cfb8 654 + +#define SN_aes_256_cfb8 "AES-256-CFB8" +#define LN_aes_256_cfb8 "aes-256-cfb8" +#define NID_aes_256_cfb8 655 + +#define SN_aes_128_ctr "AES-128-CTR" +#define LN_aes_128_ctr "aes-128-ctr" +#define NID_aes_128_ctr 904 + +#define SN_aes_192_ctr "AES-192-CTR" +#define LN_aes_192_ctr "aes-192-ctr" +#define NID_aes_192_ctr 905 + +#define SN_aes_256_ctr "AES-256-CTR" +#define LN_aes_256_ctr "aes-256-ctr" +#define NID_aes_256_ctr 906 + +#define SN_aes_128_ocb "AES-128-OCB" +#define LN_aes_128_ocb "aes-128-ocb" +#define NID_aes_128_ocb 958 + +#define SN_aes_192_ocb "AES-192-OCB" +#define LN_aes_192_ocb "aes-192-ocb" +#define NID_aes_192_ocb 959 + +#define SN_aes_256_ocb "AES-256-OCB" +#define LN_aes_256_ocb "aes-256-ocb" +#define NID_aes_256_ocb 960 + +#define SN_des_cfb1 "DES-CFB1" +#define LN_des_cfb1 "des-cfb1" +#define NID_des_cfb1 656 + +#define SN_des_cfb8 "DES-CFB8" +#define LN_des_cfb8 "des-cfb8" +#define NID_des_cfb8 657 + +#define SN_des_ede3_cfb1 "DES-EDE3-CFB1" +#define LN_des_ede3_cfb1 "des-ede3-cfb1" +#define NID_des_ede3_cfb1 658 + +#define SN_des_ede3_cfb8 "DES-EDE3-CFB8" +#define LN_des_ede3_cfb8 "des-ede3-cfb8" +#define NID_des_ede3_cfb8 659 + +#define OBJ_nist_hashalgs OBJ_nistAlgorithms,2L + +#define SN_sha256 "SHA256" +#define LN_sha256 "sha256" +#define NID_sha256 672 +#define OBJ_sha256 OBJ_nist_hashalgs,1L + +#define SN_sha384 "SHA384" +#define LN_sha384 "sha384" +#define NID_sha384 673 +#define OBJ_sha384 OBJ_nist_hashalgs,2L + +#define SN_sha512 "SHA512" +#define LN_sha512 "sha512" +#define NID_sha512 674 +#define OBJ_sha512 OBJ_nist_hashalgs,3L + +#define SN_sha224 "SHA224" +#define LN_sha224 "sha224" +#define NID_sha224 675 +#define OBJ_sha224 OBJ_nist_hashalgs,4L + +#define SN_sha512_224 "SHA512-224" +#define LN_sha512_224 "sha512-224" +#define NID_sha512_224 1094 +#define OBJ_sha512_224 OBJ_nist_hashalgs,5L + +#define SN_sha512_256 "SHA512-256" +#define LN_sha512_256 "sha512-256" +#define NID_sha512_256 1095 +#define OBJ_sha512_256 OBJ_nist_hashalgs,6L + +#define SN_sha3_224 "SHA3-224" +#define LN_sha3_224 "sha3-224" +#define NID_sha3_224 1096 +#define OBJ_sha3_224 OBJ_nist_hashalgs,7L + +#define SN_sha3_256 "SHA3-256" +#define LN_sha3_256 "sha3-256" +#define NID_sha3_256 1097 +#define OBJ_sha3_256 OBJ_nist_hashalgs,8L + +#define SN_sha3_384 "SHA3-384" +#define LN_sha3_384 "sha3-384" +#define NID_sha3_384 1098 +#define OBJ_sha3_384 OBJ_nist_hashalgs,9L + +#define SN_sha3_512 "SHA3-512" +#define LN_sha3_512 "sha3-512" +#define NID_sha3_512 1099 +#define OBJ_sha3_512 OBJ_nist_hashalgs,10L + +#define SN_shake128 "SHAKE128" +#define LN_shake128 "shake128" +#define NID_shake128 1100 +#define OBJ_shake128 OBJ_nist_hashalgs,11L + +#define SN_shake256 "SHAKE256" +#define LN_shake256 "shake256" +#define NID_shake256 1101 +#define OBJ_shake256 OBJ_nist_hashalgs,12L + +#define SN_hmac_sha3_224 "id-hmacWithSHA3-224" +#define LN_hmac_sha3_224 "hmac-sha3-224" +#define NID_hmac_sha3_224 1102 +#define OBJ_hmac_sha3_224 OBJ_nist_hashalgs,13L + +#define SN_hmac_sha3_256 "id-hmacWithSHA3-256" +#define LN_hmac_sha3_256 "hmac-sha3-256" +#define NID_hmac_sha3_256 1103 +#define OBJ_hmac_sha3_256 OBJ_nist_hashalgs,14L + +#define SN_hmac_sha3_384 "id-hmacWithSHA3-384" +#define LN_hmac_sha3_384 "hmac-sha3-384" +#define NID_hmac_sha3_384 1104 +#define OBJ_hmac_sha3_384 OBJ_nist_hashalgs,15L + +#define SN_hmac_sha3_512 "id-hmacWithSHA3-512" +#define LN_hmac_sha3_512 "hmac-sha3-512" +#define NID_hmac_sha3_512 1105 +#define OBJ_hmac_sha3_512 OBJ_nist_hashalgs,16L + +#define OBJ_dsa_with_sha2 OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA224 "dsa_with_SHA224" +#define NID_dsa_with_SHA224 802 +#define OBJ_dsa_with_SHA224 OBJ_dsa_with_sha2,1L + +#define SN_dsa_with_SHA256 "dsa_with_SHA256" +#define NID_dsa_with_SHA256 803 +#define OBJ_dsa_with_SHA256 OBJ_dsa_with_sha2,2L + +#define OBJ_sigAlgs OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA384 "id-dsa-with-sha384" +#define LN_dsa_with_SHA384 "dsa_with_SHA384" +#define NID_dsa_with_SHA384 1106 +#define OBJ_dsa_with_SHA384 OBJ_sigAlgs,3L + +#define SN_dsa_with_SHA512 "id-dsa-with-sha512" +#define LN_dsa_with_SHA512 "dsa_with_SHA512" +#define NID_dsa_with_SHA512 1107 +#define OBJ_dsa_with_SHA512 OBJ_sigAlgs,4L + +#define SN_dsa_with_SHA3_224 "id-dsa-with-sha3-224" +#define LN_dsa_with_SHA3_224 "dsa_with_SHA3-224" +#define NID_dsa_with_SHA3_224 1108 +#define OBJ_dsa_with_SHA3_224 OBJ_sigAlgs,5L + +#define SN_dsa_with_SHA3_256 "id-dsa-with-sha3-256" +#define LN_dsa_with_SHA3_256 "dsa_with_SHA3-256" +#define NID_dsa_with_SHA3_256 1109 +#define OBJ_dsa_with_SHA3_256 OBJ_sigAlgs,6L + +#define SN_dsa_with_SHA3_384 "id-dsa-with-sha3-384" +#define LN_dsa_with_SHA3_384 "dsa_with_SHA3-384" +#define NID_dsa_with_SHA3_384 1110 +#define OBJ_dsa_with_SHA3_384 OBJ_sigAlgs,7L + +#define SN_dsa_with_SHA3_512 "id-dsa-with-sha3-512" +#define LN_dsa_with_SHA3_512 "dsa_with_SHA3-512" +#define NID_dsa_with_SHA3_512 1111 +#define OBJ_dsa_with_SHA3_512 OBJ_sigAlgs,8L + +#define SN_ecdsa_with_SHA3_224 "id-ecdsa-with-sha3-224" +#define LN_ecdsa_with_SHA3_224 "ecdsa_with_SHA3-224" +#define NID_ecdsa_with_SHA3_224 1112 +#define OBJ_ecdsa_with_SHA3_224 OBJ_sigAlgs,9L + +#define SN_ecdsa_with_SHA3_256 "id-ecdsa-with-sha3-256" +#define LN_ecdsa_with_SHA3_256 "ecdsa_with_SHA3-256" +#define NID_ecdsa_with_SHA3_256 1113 +#define OBJ_ecdsa_with_SHA3_256 OBJ_sigAlgs,10L + +#define SN_ecdsa_with_SHA3_384 "id-ecdsa-with-sha3-384" +#define LN_ecdsa_with_SHA3_384 "ecdsa_with_SHA3-384" +#define NID_ecdsa_with_SHA3_384 1114 +#define OBJ_ecdsa_with_SHA3_384 OBJ_sigAlgs,11L + +#define SN_ecdsa_with_SHA3_512 "id-ecdsa-with-sha3-512" +#define LN_ecdsa_with_SHA3_512 "ecdsa_with_SHA3-512" +#define NID_ecdsa_with_SHA3_512 1115 +#define OBJ_ecdsa_with_SHA3_512 OBJ_sigAlgs,12L + +#define SN_RSA_SHA3_224 "id-rsassa-pkcs1-v1_5-with-sha3-224" +#define LN_RSA_SHA3_224 "RSA-SHA3-224" +#define NID_RSA_SHA3_224 1116 +#define OBJ_RSA_SHA3_224 OBJ_sigAlgs,13L + +#define SN_RSA_SHA3_256 "id-rsassa-pkcs1-v1_5-with-sha3-256" +#define LN_RSA_SHA3_256 "RSA-SHA3-256" +#define NID_RSA_SHA3_256 1117 +#define OBJ_RSA_SHA3_256 OBJ_sigAlgs,14L + +#define SN_RSA_SHA3_384 "id-rsassa-pkcs1-v1_5-with-sha3-384" +#define LN_RSA_SHA3_384 "RSA-SHA3-384" +#define NID_RSA_SHA3_384 1118 +#define OBJ_RSA_SHA3_384 OBJ_sigAlgs,15L + +#define SN_RSA_SHA3_512 "id-rsassa-pkcs1-v1_5-with-sha3-512" +#define LN_RSA_SHA3_512 "RSA-SHA3-512" +#define NID_RSA_SHA3_512 1119 +#define OBJ_RSA_SHA3_512 OBJ_sigAlgs,16L + +#define SN_hold_instruction_code "holdInstructionCode" +#define LN_hold_instruction_code "Hold Instruction Code" +#define NID_hold_instruction_code 430 +#define OBJ_hold_instruction_code OBJ_id_ce,23L + +#define OBJ_holdInstruction OBJ_X9_57,2L + +#define SN_hold_instruction_none "holdInstructionNone" +#define LN_hold_instruction_none "Hold Instruction None" +#define NID_hold_instruction_none 431 +#define OBJ_hold_instruction_none OBJ_holdInstruction,1L + +#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer" +#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer" +#define NID_hold_instruction_call_issuer 432 +#define OBJ_hold_instruction_call_issuer OBJ_holdInstruction,2L + +#define SN_hold_instruction_reject "holdInstructionReject" +#define LN_hold_instruction_reject "Hold Instruction Reject" +#define NID_hold_instruction_reject 433 +#define OBJ_hold_instruction_reject OBJ_holdInstruction,3L + +#define SN_data "data" +#define NID_data 434 +#define OBJ_data OBJ_itu_t,9L + +#define SN_pss "pss" +#define NID_pss 435 +#define OBJ_pss OBJ_data,2342L + +#define SN_ucl "ucl" +#define NID_ucl 436 +#define OBJ_ucl OBJ_pss,19200300L + +#define SN_pilot "pilot" +#define NID_pilot 437 +#define OBJ_pilot OBJ_ucl,100L + +#define LN_pilotAttributeType "pilotAttributeType" +#define NID_pilotAttributeType 438 +#define OBJ_pilotAttributeType OBJ_pilot,1L + +#define LN_pilotAttributeSyntax "pilotAttributeSyntax" +#define NID_pilotAttributeSyntax 439 +#define OBJ_pilotAttributeSyntax OBJ_pilot,3L + +#define LN_pilotObjectClass "pilotObjectClass" +#define NID_pilotObjectClass 440 +#define OBJ_pilotObjectClass OBJ_pilot,4L + +#define LN_pilotGroups "pilotGroups" +#define NID_pilotGroups 441 +#define OBJ_pilotGroups OBJ_pilot,10L + +#define LN_iA5StringSyntax "iA5StringSyntax" +#define NID_iA5StringSyntax 442 +#define OBJ_iA5StringSyntax OBJ_pilotAttributeSyntax,4L + +#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax" +#define NID_caseIgnoreIA5StringSyntax 443 +#define OBJ_caseIgnoreIA5StringSyntax OBJ_pilotAttributeSyntax,5L + +#define LN_pilotObject "pilotObject" +#define NID_pilotObject 444 +#define OBJ_pilotObject OBJ_pilotObjectClass,3L + +#define LN_pilotPerson "pilotPerson" +#define NID_pilotPerson 445 +#define OBJ_pilotPerson OBJ_pilotObjectClass,4L + +#define SN_account "account" +#define NID_account 446 +#define OBJ_account OBJ_pilotObjectClass,5L + +#define SN_document "document" +#define NID_document 447 +#define OBJ_document OBJ_pilotObjectClass,6L + +#define SN_room "room" +#define NID_room 448 +#define OBJ_room OBJ_pilotObjectClass,7L + +#define LN_documentSeries "documentSeries" +#define NID_documentSeries 449 +#define OBJ_documentSeries OBJ_pilotObjectClass,9L + +#define SN_Domain "domain" +#define LN_Domain "Domain" +#define NID_Domain 392 +#define OBJ_Domain OBJ_pilotObjectClass,13L + +#define LN_rFC822localPart "rFC822localPart" +#define NID_rFC822localPart 450 +#define OBJ_rFC822localPart OBJ_pilotObjectClass,14L + +#define LN_dNSDomain "dNSDomain" +#define NID_dNSDomain 451 +#define OBJ_dNSDomain OBJ_pilotObjectClass,15L + +#define LN_domainRelatedObject "domainRelatedObject" +#define NID_domainRelatedObject 452 +#define OBJ_domainRelatedObject OBJ_pilotObjectClass,17L + +#define LN_friendlyCountry "friendlyCountry" +#define NID_friendlyCountry 453 +#define OBJ_friendlyCountry OBJ_pilotObjectClass,18L + +#define LN_simpleSecurityObject "simpleSecurityObject" +#define NID_simpleSecurityObject 454 +#define OBJ_simpleSecurityObject OBJ_pilotObjectClass,19L + +#define LN_pilotOrganization "pilotOrganization" +#define NID_pilotOrganization 455 +#define OBJ_pilotOrganization OBJ_pilotObjectClass,20L + +#define LN_pilotDSA "pilotDSA" +#define NID_pilotDSA 456 +#define OBJ_pilotDSA OBJ_pilotObjectClass,21L + +#define LN_qualityLabelledData "qualityLabelledData" +#define NID_qualityLabelledData 457 +#define OBJ_qualityLabelledData OBJ_pilotObjectClass,22L + +#define SN_userId "UID" +#define LN_userId "userId" +#define NID_userId 458 +#define OBJ_userId OBJ_pilotAttributeType,1L + +#define LN_textEncodedORAddress "textEncodedORAddress" +#define NID_textEncodedORAddress 459 +#define OBJ_textEncodedORAddress OBJ_pilotAttributeType,2L + +#define SN_rfc822Mailbox "mail" +#define LN_rfc822Mailbox "rfc822Mailbox" +#define NID_rfc822Mailbox 460 +#define OBJ_rfc822Mailbox OBJ_pilotAttributeType,3L + +#define SN_info "info" +#define NID_info 461 +#define OBJ_info OBJ_pilotAttributeType,4L + +#define LN_favouriteDrink "favouriteDrink" +#define NID_favouriteDrink 462 +#define OBJ_favouriteDrink OBJ_pilotAttributeType,5L + +#define LN_roomNumber "roomNumber" +#define NID_roomNumber 463 +#define OBJ_roomNumber OBJ_pilotAttributeType,6L + +#define SN_photo "photo" +#define NID_photo 464 +#define OBJ_photo OBJ_pilotAttributeType,7L + +#define LN_userClass "userClass" +#define NID_userClass 465 +#define OBJ_userClass OBJ_pilotAttributeType,8L + +#define SN_host "host" +#define NID_host 466 +#define OBJ_host OBJ_pilotAttributeType,9L + +#define SN_manager "manager" +#define NID_manager 467 +#define OBJ_manager OBJ_pilotAttributeType,10L + +#define LN_documentIdentifier "documentIdentifier" +#define NID_documentIdentifier 468 +#define OBJ_documentIdentifier OBJ_pilotAttributeType,11L + +#define LN_documentTitle "documentTitle" +#define NID_documentTitle 469 +#define OBJ_documentTitle OBJ_pilotAttributeType,12L + +#define LN_documentVersion "documentVersion" +#define NID_documentVersion 470 +#define OBJ_documentVersion OBJ_pilotAttributeType,13L + +#define LN_documentAuthor "documentAuthor" +#define NID_documentAuthor 471 +#define OBJ_documentAuthor OBJ_pilotAttributeType,14L + +#define LN_documentLocation "documentLocation" +#define NID_documentLocation 472 +#define OBJ_documentLocation OBJ_pilotAttributeType,15L + +#define LN_homeTelephoneNumber "homeTelephoneNumber" +#define NID_homeTelephoneNumber 473 +#define OBJ_homeTelephoneNumber OBJ_pilotAttributeType,20L + +#define SN_secretary "secretary" +#define NID_secretary 474 +#define OBJ_secretary OBJ_pilotAttributeType,21L + +#define LN_otherMailbox "otherMailbox" +#define NID_otherMailbox 475 +#define OBJ_otherMailbox OBJ_pilotAttributeType,22L + +#define LN_lastModifiedTime "lastModifiedTime" +#define NID_lastModifiedTime 476 +#define OBJ_lastModifiedTime OBJ_pilotAttributeType,23L + +#define LN_lastModifiedBy "lastModifiedBy" +#define NID_lastModifiedBy 477 +#define OBJ_lastModifiedBy OBJ_pilotAttributeType,24L + +#define SN_domainComponent "DC" +#define LN_domainComponent "domainComponent" +#define NID_domainComponent 391 +#define OBJ_domainComponent OBJ_pilotAttributeType,25L + +#define LN_aRecord "aRecord" +#define NID_aRecord 478 +#define OBJ_aRecord OBJ_pilotAttributeType,26L + +#define LN_pilotAttributeType27 "pilotAttributeType27" +#define NID_pilotAttributeType27 479 +#define OBJ_pilotAttributeType27 OBJ_pilotAttributeType,27L + +#define LN_mXRecord "mXRecord" +#define NID_mXRecord 480 +#define OBJ_mXRecord OBJ_pilotAttributeType,28L + +#define LN_nSRecord "nSRecord" +#define NID_nSRecord 481 +#define OBJ_nSRecord OBJ_pilotAttributeType,29L + +#define LN_sOARecord "sOARecord" +#define NID_sOARecord 482 +#define OBJ_sOARecord OBJ_pilotAttributeType,30L + +#define LN_cNAMERecord "cNAMERecord" +#define NID_cNAMERecord 483 +#define OBJ_cNAMERecord OBJ_pilotAttributeType,31L + +#define LN_associatedDomain "associatedDomain" +#define NID_associatedDomain 484 +#define OBJ_associatedDomain OBJ_pilotAttributeType,37L + +#define LN_associatedName "associatedName" +#define NID_associatedName 485 +#define OBJ_associatedName OBJ_pilotAttributeType,38L + +#define LN_homePostalAddress "homePostalAddress" +#define NID_homePostalAddress 486 +#define OBJ_homePostalAddress OBJ_pilotAttributeType,39L + +#define LN_personalTitle "personalTitle" +#define NID_personalTitle 487 +#define OBJ_personalTitle OBJ_pilotAttributeType,40L + +#define LN_mobileTelephoneNumber "mobileTelephoneNumber" +#define NID_mobileTelephoneNumber 488 +#define OBJ_mobileTelephoneNumber OBJ_pilotAttributeType,41L + +#define LN_pagerTelephoneNumber "pagerTelephoneNumber" +#define NID_pagerTelephoneNumber 489 +#define OBJ_pagerTelephoneNumber OBJ_pilotAttributeType,42L + +#define LN_friendlyCountryName "friendlyCountryName" +#define NID_friendlyCountryName 490 +#define OBJ_friendlyCountryName OBJ_pilotAttributeType,43L + +#define SN_uniqueIdentifier "uid" +#define LN_uniqueIdentifier "uniqueIdentifier" +#define NID_uniqueIdentifier 102 +#define OBJ_uniqueIdentifier OBJ_pilotAttributeType,44L + +#define LN_organizationalStatus "organizationalStatus" +#define NID_organizationalStatus 491 +#define OBJ_organizationalStatus OBJ_pilotAttributeType,45L + +#define LN_janetMailbox "janetMailbox" +#define NID_janetMailbox 492 +#define OBJ_janetMailbox OBJ_pilotAttributeType,46L + +#define LN_mailPreferenceOption "mailPreferenceOption" +#define NID_mailPreferenceOption 493 +#define OBJ_mailPreferenceOption OBJ_pilotAttributeType,47L + +#define LN_buildingName "buildingName" +#define NID_buildingName 494 +#define OBJ_buildingName OBJ_pilotAttributeType,48L + +#define LN_dSAQuality "dSAQuality" +#define NID_dSAQuality 495 +#define OBJ_dSAQuality OBJ_pilotAttributeType,49L + +#define LN_singleLevelQuality "singleLevelQuality" +#define NID_singleLevelQuality 496 +#define OBJ_singleLevelQuality OBJ_pilotAttributeType,50L + +#define LN_subtreeMinimumQuality "subtreeMinimumQuality" +#define NID_subtreeMinimumQuality 497 +#define OBJ_subtreeMinimumQuality OBJ_pilotAttributeType,51L + +#define LN_subtreeMaximumQuality "subtreeMaximumQuality" +#define NID_subtreeMaximumQuality 498 +#define OBJ_subtreeMaximumQuality OBJ_pilotAttributeType,52L + +#define LN_personalSignature "personalSignature" +#define NID_personalSignature 499 +#define OBJ_personalSignature OBJ_pilotAttributeType,53L + +#define LN_dITRedirect "dITRedirect" +#define NID_dITRedirect 500 +#define OBJ_dITRedirect OBJ_pilotAttributeType,54L + +#define SN_audio "audio" +#define NID_audio 501 +#define OBJ_audio OBJ_pilotAttributeType,55L + +#define LN_documentPublisher "documentPublisher" +#define NID_documentPublisher 502 +#define OBJ_documentPublisher OBJ_pilotAttributeType,56L + +#define SN_id_set "id-set" +#define LN_id_set "Secure Electronic Transactions" +#define NID_id_set 512 +#define OBJ_id_set OBJ_international_organizations,42L + +#define SN_set_ctype "set-ctype" +#define LN_set_ctype "content types" +#define NID_set_ctype 513 +#define OBJ_set_ctype OBJ_id_set,0L + +#define SN_set_msgExt "set-msgExt" +#define LN_set_msgExt "message extensions" +#define NID_set_msgExt 514 +#define OBJ_set_msgExt OBJ_id_set,1L + +#define SN_set_attr "set-attr" +#define NID_set_attr 515 +#define OBJ_set_attr OBJ_id_set,3L + +#define SN_set_policy "set-policy" +#define NID_set_policy 516 +#define OBJ_set_policy OBJ_id_set,5L + +#define SN_set_certExt "set-certExt" +#define LN_set_certExt "certificate extensions" +#define NID_set_certExt 517 +#define OBJ_set_certExt OBJ_id_set,7L + +#define SN_set_brand "set-brand" +#define NID_set_brand 518 +#define OBJ_set_brand OBJ_id_set,8L + +#define SN_setct_PANData "setct-PANData" +#define NID_setct_PANData 519 +#define OBJ_setct_PANData OBJ_set_ctype,0L + +#define SN_setct_PANToken "setct-PANToken" +#define NID_setct_PANToken 520 +#define OBJ_setct_PANToken OBJ_set_ctype,1L + +#define SN_setct_PANOnly "setct-PANOnly" +#define NID_setct_PANOnly 521 +#define OBJ_setct_PANOnly OBJ_set_ctype,2L + +#define SN_setct_OIData "setct-OIData" +#define NID_setct_OIData 522 +#define OBJ_setct_OIData OBJ_set_ctype,3L + +#define SN_setct_PI "setct-PI" +#define NID_setct_PI 523 +#define OBJ_setct_PI OBJ_set_ctype,4L + +#define SN_setct_PIData "setct-PIData" +#define NID_setct_PIData 524 +#define OBJ_setct_PIData OBJ_set_ctype,5L + +#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned" +#define NID_setct_PIDataUnsigned 525 +#define OBJ_setct_PIDataUnsigned OBJ_set_ctype,6L + +#define SN_setct_HODInput "setct-HODInput" +#define NID_setct_HODInput 526 +#define OBJ_setct_HODInput OBJ_set_ctype,7L + +#define SN_setct_AuthResBaggage "setct-AuthResBaggage" +#define NID_setct_AuthResBaggage 527 +#define OBJ_setct_AuthResBaggage OBJ_set_ctype,8L + +#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage" +#define NID_setct_AuthRevReqBaggage 528 +#define OBJ_setct_AuthRevReqBaggage OBJ_set_ctype,9L + +#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage" +#define NID_setct_AuthRevResBaggage 529 +#define OBJ_setct_AuthRevResBaggage OBJ_set_ctype,10L + +#define SN_setct_CapTokenSeq "setct-CapTokenSeq" +#define NID_setct_CapTokenSeq 530 +#define OBJ_setct_CapTokenSeq OBJ_set_ctype,11L + +#define SN_setct_PInitResData "setct-PInitResData" +#define NID_setct_PInitResData 531 +#define OBJ_setct_PInitResData OBJ_set_ctype,12L + +#define SN_setct_PI_TBS "setct-PI-TBS" +#define NID_setct_PI_TBS 532 +#define OBJ_setct_PI_TBS OBJ_set_ctype,13L + +#define SN_setct_PResData "setct-PResData" +#define NID_setct_PResData 533 +#define OBJ_setct_PResData OBJ_set_ctype,14L + +#define SN_setct_AuthReqTBS "setct-AuthReqTBS" +#define NID_setct_AuthReqTBS 534 +#define OBJ_setct_AuthReqTBS OBJ_set_ctype,16L + +#define SN_setct_AuthResTBS "setct-AuthResTBS" +#define NID_setct_AuthResTBS 535 +#define OBJ_setct_AuthResTBS OBJ_set_ctype,17L + +#define SN_setct_AuthResTBSX "setct-AuthResTBSX" +#define NID_setct_AuthResTBSX 536 +#define OBJ_setct_AuthResTBSX OBJ_set_ctype,18L + +#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS" +#define NID_setct_AuthTokenTBS 537 +#define OBJ_setct_AuthTokenTBS OBJ_set_ctype,19L + +#define SN_setct_CapTokenData "setct-CapTokenData" +#define NID_setct_CapTokenData 538 +#define OBJ_setct_CapTokenData OBJ_set_ctype,20L + +#define SN_setct_CapTokenTBS "setct-CapTokenTBS" +#define NID_setct_CapTokenTBS 539 +#define OBJ_setct_CapTokenTBS OBJ_set_ctype,21L + +#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg" +#define NID_setct_AcqCardCodeMsg 540 +#define OBJ_setct_AcqCardCodeMsg OBJ_set_ctype,22L + +#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS" +#define NID_setct_AuthRevReqTBS 541 +#define OBJ_setct_AuthRevReqTBS OBJ_set_ctype,23L + +#define SN_setct_AuthRevResData "setct-AuthRevResData" +#define NID_setct_AuthRevResData 542 +#define OBJ_setct_AuthRevResData OBJ_set_ctype,24L + +#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS" +#define NID_setct_AuthRevResTBS 543 +#define OBJ_setct_AuthRevResTBS OBJ_set_ctype,25L + +#define SN_setct_CapReqTBS "setct-CapReqTBS" +#define NID_setct_CapReqTBS 544 +#define OBJ_setct_CapReqTBS OBJ_set_ctype,26L + +#define SN_setct_CapReqTBSX "setct-CapReqTBSX" +#define NID_setct_CapReqTBSX 545 +#define OBJ_setct_CapReqTBSX OBJ_set_ctype,27L + +#define SN_setct_CapResData "setct-CapResData" +#define NID_setct_CapResData 546 +#define OBJ_setct_CapResData OBJ_set_ctype,28L + +#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS" +#define NID_setct_CapRevReqTBS 547 +#define OBJ_setct_CapRevReqTBS OBJ_set_ctype,29L + +#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX" +#define NID_setct_CapRevReqTBSX 548 +#define OBJ_setct_CapRevReqTBSX OBJ_set_ctype,30L + +#define SN_setct_CapRevResData "setct-CapRevResData" +#define NID_setct_CapRevResData 549 +#define OBJ_setct_CapRevResData OBJ_set_ctype,31L + +#define SN_setct_CredReqTBS "setct-CredReqTBS" +#define NID_setct_CredReqTBS 550 +#define OBJ_setct_CredReqTBS OBJ_set_ctype,32L + +#define SN_setct_CredReqTBSX "setct-CredReqTBSX" +#define NID_setct_CredReqTBSX 551 +#define OBJ_setct_CredReqTBSX OBJ_set_ctype,33L + +#define SN_setct_CredResData "setct-CredResData" +#define NID_setct_CredResData 552 +#define OBJ_setct_CredResData OBJ_set_ctype,34L + +#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS" +#define NID_setct_CredRevReqTBS 553 +#define OBJ_setct_CredRevReqTBS OBJ_set_ctype,35L + +#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX" +#define NID_setct_CredRevReqTBSX 554 +#define OBJ_setct_CredRevReqTBSX OBJ_set_ctype,36L + +#define SN_setct_CredRevResData "setct-CredRevResData" +#define NID_setct_CredRevResData 555 +#define OBJ_setct_CredRevResData OBJ_set_ctype,37L + +#define SN_setct_PCertReqData "setct-PCertReqData" +#define NID_setct_PCertReqData 556 +#define OBJ_setct_PCertReqData OBJ_set_ctype,38L + +#define SN_setct_PCertResTBS "setct-PCertResTBS" +#define NID_setct_PCertResTBS 557 +#define OBJ_setct_PCertResTBS OBJ_set_ctype,39L + +#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData" +#define NID_setct_BatchAdminReqData 558 +#define OBJ_setct_BatchAdminReqData OBJ_set_ctype,40L + +#define SN_setct_BatchAdminResData "setct-BatchAdminResData" +#define NID_setct_BatchAdminResData 559 +#define OBJ_setct_BatchAdminResData OBJ_set_ctype,41L + +#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS" +#define NID_setct_CardCInitResTBS 560 +#define OBJ_setct_CardCInitResTBS OBJ_set_ctype,42L + +#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS" +#define NID_setct_MeAqCInitResTBS 561 +#define OBJ_setct_MeAqCInitResTBS OBJ_set_ctype,43L + +#define SN_setct_RegFormResTBS "setct-RegFormResTBS" +#define NID_setct_RegFormResTBS 562 +#define OBJ_setct_RegFormResTBS OBJ_set_ctype,44L + +#define SN_setct_CertReqData "setct-CertReqData" +#define NID_setct_CertReqData 563 +#define OBJ_setct_CertReqData OBJ_set_ctype,45L + +#define SN_setct_CertReqTBS "setct-CertReqTBS" +#define NID_setct_CertReqTBS 564 +#define OBJ_setct_CertReqTBS OBJ_set_ctype,46L + +#define SN_setct_CertResData "setct-CertResData" +#define NID_setct_CertResData 565 +#define OBJ_setct_CertResData OBJ_set_ctype,47L + +#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS" +#define NID_setct_CertInqReqTBS 566 +#define OBJ_setct_CertInqReqTBS OBJ_set_ctype,48L + +#define SN_setct_ErrorTBS "setct-ErrorTBS" +#define NID_setct_ErrorTBS 567 +#define OBJ_setct_ErrorTBS OBJ_set_ctype,49L + +#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE" +#define NID_setct_PIDualSignedTBE 568 +#define OBJ_setct_PIDualSignedTBE OBJ_set_ctype,50L + +#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE" +#define NID_setct_PIUnsignedTBE 569 +#define OBJ_setct_PIUnsignedTBE OBJ_set_ctype,51L + +#define SN_setct_AuthReqTBE "setct-AuthReqTBE" +#define NID_setct_AuthReqTBE 570 +#define OBJ_setct_AuthReqTBE OBJ_set_ctype,52L + +#define SN_setct_AuthResTBE "setct-AuthResTBE" +#define NID_setct_AuthResTBE 571 +#define OBJ_setct_AuthResTBE OBJ_set_ctype,53L + +#define SN_setct_AuthResTBEX "setct-AuthResTBEX" +#define NID_setct_AuthResTBEX 572 +#define OBJ_setct_AuthResTBEX OBJ_set_ctype,54L + +#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE" +#define NID_setct_AuthTokenTBE 573 +#define OBJ_setct_AuthTokenTBE OBJ_set_ctype,55L + +#define SN_setct_CapTokenTBE "setct-CapTokenTBE" +#define NID_setct_CapTokenTBE 574 +#define OBJ_setct_CapTokenTBE OBJ_set_ctype,56L + +#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX" +#define NID_setct_CapTokenTBEX 575 +#define OBJ_setct_CapTokenTBEX OBJ_set_ctype,57L + +#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE" +#define NID_setct_AcqCardCodeMsgTBE 576 +#define OBJ_setct_AcqCardCodeMsgTBE OBJ_set_ctype,58L + +#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE" +#define NID_setct_AuthRevReqTBE 577 +#define OBJ_setct_AuthRevReqTBE OBJ_set_ctype,59L + +#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE" +#define NID_setct_AuthRevResTBE 578 +#define OBJ_setct_AuthRevResTBE OBJ_set_ctype,60L + +#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB" +#define NID_setct_AuthRevResTBEB 579 +#define OBJ_setct_AuthRevResTBEB OBJ_set_ctype,61L + +#define SN_setct_CapReqTBE "setct-CapReqTBE" +#define NID_setct_CapReqTBE 580 +#define OBJ_setct_CapReqTBE OBJ_set_ctype,62L + +#define SN_setct_CapReqTBEX "setct-CapReqTBEX" +#define NID_setct_CapReqTBEX 581 +#define OBJ_setct_CapReqTBEX OBJ_set_ctype,63L + +#define SN_setct_CapResTBE "setct-CapResTBE" +#define NID_setct_CapResTBE 582 +#define OBJ_setct_CapResTBE OBJ_set_ctype,64L + +#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE" +#define NID_setct_CapRevReqTBE 583 +#define OBJ_setct_CapRevReqTBE OBJ_set_ctype,65L + +#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX" +#define NID_setct_CapRevReqTBEX 584 +#define OBJ_setct_CapRevReqTBEX OBJ_set_ctype,66L + +#define SN_setct_CapRevResTBE "setct-CapRevResTBE" +#define NID_setct_CapRevResTBE 585 +#define OBJ_setct_CapRevResTBE OBJ_set_ctype,67L + +#define SN_setct_CredReqTBE "setct-CredReqTBE" +#define NID_setct_CredReqTBE 586 +#define OBJ_setct_CredReqTBE OBJ_set_ctype,68L + +#define SN_setct_CredReqTBEX "setct-CredReqTBEX" +#define NID_setct_CredReqTBEX 587 +#define OBJ_setct_CredReqTBEX OBJ_set_ctype,69L + +#define SN_setct_CredResTBE "setct-CredResTBE" +#define NID_setct_CredResTBE 588 +#define OBJ_setct_CredResTBE OBJ_set_ctype,70L + +#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE" +#define NID_setct_CredRevReqTBE 589 +#define OBJ_setct_CredRevReqTBE OBJ_set_ctype,71L + +#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX" +#define NID_setct_CredRevReqTBEX 590 +#define OBJ_setct_CredRevReqTBEX OBJ_set_ctype,72L + +#define SN_setct_CredRevResTBE "setct-CredRevResTBE" +#define NID_setct_CredRevResTBE 591 +#define OBJ_setct_CredRevResTBE OBJ_set_ctype,73L + +#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE" +#define NID_setct_BatchAdminReqTBE 592 +#define OBJ_setct_BatchAdminReqTBE OBJ_set_ctype,74L + +#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE" +#define NID_setct_BatchAdminResTBE 593 +#define OBJ_setct_BatchAdminResTBE OBJ_set_ctype,75L + +#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE" +#define NID_setct_RegFormReqTBE 594 +#define OBJ_setct_RegFormReqTBE OBJ_set_ctype,76L + +#define SN_setct_CertReqTBE "setct-CertReqTBE" +#define NID_setct_CertReqTBE 595 +#define OBJ_setct_CertReqTBE OBJ_set_ctype,77L + +#define SN_setct_CertReqTBEX "setct-CertReqTBEX" +#define NID_setct_CertReqTBEX 596 +#define OBJ_setct_CertReqTBEX OBJ_set_ctype,78L + +#define SN_setct_CertResTBE "setct-CertResTBE" +#define NID_setct_CertResTBE 597 +#define OBJ_setct_CertResTBE OBJ_set_ctype,79L + +#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS" +#define NID_setct_CRLNotificationTBS 598 +#define OBJ_setct_CRLNotificationTBS OBJ_set_ctype,80L + +#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS" +#define NID_setct_CRLNotificationResTBS 599 +#define OBJ_setct_CRLNotificationResTBS OBJ_set_ctype,81L + +#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS" +#define NID_setct_BCIDistributionTBS 600 +#define OBJ_setct_BCIDistributionTBS OBJ_set_ctype,82L + +#define SN_setext_genCrypt "setext-genCrypt" +#define LN_setext_genCrypt "generic cryptogram" +#define NID_setext_genCrypt 601 +#define OBJ_setext_genCrypt OBJ_set_msgExt,1L + +#define SN_setext_miAuth "setext-miAuth" +#define LN_setext_miAuth "merchant initiated auth" +#define NID_setext_miAuth 602 +#define OBJ_setext_miAuth OBJ_set_msgExt,3L + +#define SN_setext_pinSecure "setext-pinSecure" +#define NID_setext_pinSecure 603 +#define OBJ_setext_pinSecure OBJ_set_msgExt,4L + +#define SN_setext_pinAny "setext-pinAny" +#define NID_setext_pinAny 604 +#define OBJ_setext_pinAny OBJ_set_msgExt,5L + +#define SN_setext_track2 "setext-track2" +#define NID_setext_track2 605 +#define OBJ_setext_track2 OBJ_set_msgExt,7L + +#define SN_setext_cv "setext-cv" +#define LN_setext_cv "additional verification" +#define NID_setext_cv 606 +#define OBJ_setext_cv OBJ_set_msgExt,8L + +#define SN_set_policy_root "set-policy-root" +#define NID_set_policy_root 607 +#define OBJ_set_policy_root OBJ_set_policy,0L + +#define SN_setCext_hashedRoot "setCext-hashedRoot" +#define NID_setCext_hashedRoot 608 +#define OBJ_setCext_hashedRoot OBJ_set_certExt,0L + +#define SN_setCext_certType "setCext-certType" +#define NID_setCext_certType 609 +#define OBJ_setCext_certType OBJ_set_certExt,1L + +#define SN_setCext_merchData "setCext-merchData" +#define NID_setCext_merchData 610 +#define OBJ_setCext_merchData OBJ_set_certExt,2L + +#define SN_setCext_cCertRequired "setCext-cCertRequired" +#define NID_setCext_cCertRequired 611 +#define OBJ_setCext_cCertRequired OBJ_set_certExt,3L + +#define SN_setCext_tunneling "setCext-tunneling" +#define NID_setCext_tunneling 612 +#define OBJ_setCext_tunneling OBJ_set_certExt,4L + +#define SN_setCext_setExt "setCext-setExt" +#define NID_setCext_setExt 613 +#define OBJ_setCext_setExt OBJ_set_certExt,5L + +#define SN_setCext_setQualf "setCext-setQualf" +#define NID_setCext_setQualf 614 +#define OBJ_setCext_setQualf OBJ_set_certExt,6L + +#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities" +#define NID_setCext_PGWYcapabilities 615 +#define OBJ_setCext_PGWYcapabilities OBJ_set_certExt,7L + +#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier" +#define NID_setCext_TokenIdentifier 616 +#define OBJ_setCext_TokenIdentifier OBJ_set_certExt,8L + +#define SN_setCext_Track2Data "setCext-Track2Data" +#define NID_setCext_Track2Data 617 +#define OBJ_setCext_Track2Data OBJ_set_certExt,9L + +#define SN_setCext_TokenType "setCext-TokenType" +#define NID_setCext_TokenType 618 +#define OBJ_setCext_TokenType OBJ_set_certExt,10L + +#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities" +#define NID_setCext_IssuerCapabilities 619 +#define OBJ_setCext_IssuerCapabilities OBJ_set_certExt,11L + +#define SN_setAttr_Cert "setAttr-Cert" +#define NID_setAttr_Cert 620 +#define OBJ_setAttr_Cert OBJ_set_attr,0L + +#define SN_setAttr_PGWYcap "setAttr-PGWYcap" +#define LN_setAttr_PGWYcap "payment gateway capabilities" +#define NID_setAttr_PGWYcap 621 +#define OBJ_setAttr_PGWYcap OBJ_set_attr,1L + +#define SN_setAttr_TokenType "setAttr-TokenType" +#define NID_setAttr_TokenType 622 +#define OBJ_setAttr_TokenType OBJ_set_attr,2L + +#define SN_setAttr_IssCap "setAttr-IssCap" +#define LN_setAttr_IssCap "issuer capabilities" +#define NID_setAttr_IssCap 623 +#define OBJ_setAttr_IssCap OBJ_set_attr,3L + +#define SN_set_rootKeyThumb "set-rootKeyThumb" +#define NID_set_rootKeyThumb 624 +#define OBJ_set_rootKeyThumb OBJ_setAttr_Cert,0L + +#define SN_set_addPolicy "set-addPolicy" +#define NID_set_addPolicy 625 +#define OBJ_set_addPolicy OBJ_setAttr_Cert,1L + +#define SN_setAttr_Token_EMV "setAttr-Token-EMV" +#define NID_setAttr_Token_EMV 626 +#define OBJ_setAttr_Token_EMV OBJ_setAttr_TokenType,1L + +#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime" +#define NID_setAttr_Token_B0Prime 627 +#define OBJ_setAttr_Token_B0Prime OBJ_setAttr_TokenType,2L + +#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM" +#define NID_setAttr_IssCap_CVM 628 +#define OBJ_setAttr_IssCap_CVM OBJ_setAttr_IssCap,3L + +#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2" +#define NID_setAttr_IssCap_T2 629 +#define OBJ_setAttr_IssCap_T2 OBJ_setAttr_IssCap,4L + +#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig" +#define NID_setAttr_IssCap_Sig 630 +#define OBJ_setAttr_IssCap_Sig OBJ_setAttr_IssCap,5L + +#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm" +#define LN_setAttr_GenCryptgrm "generate cryptogram" +#define NID_setAttr_GenCryptgrm 631 +#define OBJ_setAttr_GenCryptgrm OBJ_setAttr_IssCap_CVM,1L + +#define SN_setAttr_T2Enc "setAttr-T2Enc" +#define LN_setAttr_T2Enc "encrypted track 2" +#define NID_setAttr_T2Enc 632 +#define OBJ_setAttr_T2Enc OBJ_setAttr_IssCap_T2,1L + +#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt" +#define LN_setAttr_T2cleartxt "cleartext track 2" +#define NID_setAttr_T2cleartxt 633 +#define OBJ_setAttr_T2cleartxt OBJ_setAttr_IssCap_T2,2L + +#define SN_setAttr_TokICCsig "setAttr-TokICCsig" +#define LN_setAttr_TokICCsig "ICC or token signature" +#define NID_setAttr_TokICCsig 634 +#define OBJ_setAttr_TokICCsig OBJ_setAttr_IssCap_Sig,1L + +#define SN_setAttr_SecDevSig "setAttr-SecDevSig" +#define LN_setAttr_SecDevSig "secure device signature" +#define NID_setAttr_SecDevSig 635 +#define OBJ_setAttr_SecDevSig OBJ_setAttr_IssCap_Sig,2L + +#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA" +#define NID_set_brand_IATA_ATA 636 +#define OBJ_set_brand_IATA_ATA OBJ_set_brand,1L + +#define SN_set_brand_Diners "set-brand-Diners" +#define NID_set_brand_Diners 637 +#define OBJ_set_brand_Diners OBJ_set_brand,30L + +#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress" +#define NID_set_brand_AmericanExpress 638 +#define OBJ_set_brand_AmericanExpress OBJ_set_brand,34L + +#define SN_set_brand_JCB "set-brand-JCB" +#define NID_set_brand_JCB 639 +#define OBJ_set_brand_JCB OBJ_set_brand,35L + +#define SN_set_brand_Visa "set-brand-Visa" +#define NID_set_brand_Visa 640 +#define OBJ_set_brand_Visa OBJ_set_brand,4L + +#define SN_set_brand_MasterCard "set-brand-MasterCard" +#define NID_set_brand_MasterCard 641 +#define OBJ_set_brand_MasterCard OBJ_set_brand,5L + +#define SN_set_brand_Novus "set-brand-Novus" +#define NID_set_brand_Novus 642 +#define OBJ_set_brand_Novus OBJ_set_brand,6011L + +#define SN_des_cdmf "DES-CDMF" +#define LN_des_cdmf "des-cdmf" +#define NID_des_cdmf 643 +#define OBJ_des_cdmf OBJ_rsadsi,3L,10L + +#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET" +#define NID_rsaOAEPEncryptionSET 644 +#define OBJ_rsaOAEPEncryptionSET OBJ_rsadsi,1L,1L,6L + +#define SN_ipsec3 "Oakley-EC2N-3" +#define LN_ipsec3 "ipsec3" +#define NID_ipsec3 749 + +#define SN_ipsec4 "Oakley-EC2N-4" +#define LN_ipsec4 "ipsec4" +#define NID_ipsec4 750 + +#define SN_whirlpool "whirlpool" +#define NID_whirlpool 804 +#define OBJ_whirlpool OBJ_iso,0L,10118L,3L,0L,55L + +#define SN_cryptopro "cryptopro" +#define NID_cryptopro 805 +#define OBJ_cryptopro OBJ_member_body,643L,2L,2L + +#define SN_cryptocom "cryptocom" +#define NID_cryptocom 806 +#define OBJ_cryptocom OBJ_member_body,643L,2L,9L + +#define SN_id_tc26 "id-tc26" +#define NID_id_tc26 974 +#define OBJ_id_tc26 OBJ_member_body,643L,7L,1L + +#define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" +#define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" +#define NID_id_GostR3411_94_with_GostR3410_2001 807 +#define OBJ_id_GostR3411_94_with_GostR3410_2001 OBJ_cryptopro,3L + +#define SN_id_GostR3411_94_with_GostR3410_94 "id-GostR3411-94-with-GostR3410-94" +#define LN_id_GostR3411_94_with_GostR3410_94 "GOST R 34.11-94 with GOST R 34.10-94" +#define NID_id_GostR3411_94_with_GostR3410_94 808 +#define OBJ_id_GostR3411_94_with_GostR3410_94 OBJ_cryptopro,4L + +#define SN_id_GostR3411_94 "md_gost94" +#define LN_id_GostR3411_94 "GOST R 34.11-94" +#define NID_id_GostR3411_94 809 +#define OBJ_id_GostR3411_94 OBJ_cryptopro,9L + +#define SN_id_HMACGostR3411_94 "id-HMACGostR3411-94" +#define LN_id_HMACGostR3411_94 "HMAC GOST 34.11-94" +#define NID_id_HMACGostR3411_94 810 +#define OBJ_id_HMACGostR3411_94 OBJ_cryptopro,10L + +#define SN_id_GostR3410_2001 "gost2001" +#define LN_id_GostR3410_2001 "GOST R 34.10-2001" +#define NID_id_GostR3410_2001 811 +#define OBJ_id_GostR3410_2001 OBJ_cryptopro,19L + +#define SN_id_GostR3410_94 "gost94" +#define LN_id_GostR3410_94 "GOST R 34.10-94" +#define NID_id_GostR3410_94 812 +#define OBJ_id_GostR3410_94 OBJ_cryptopro,20L + +#define SN_id_Gost28147_89 "gost89" +#define LN_id_Gost28147_89 "GOST 28147-89" +#define NID_id_Gost28147_89 813 +#define OBJ_id_Gost28147_89 OBJ_cryptopro,21L + +#define SN_gost89_cnt "gost89-cnt" +#define NID_gost89_cnt 814 + +#define SN_gost89_cnt_12 "gost89-cnt-12" +#define NID_gost89_cnt_12 975 + +#define SN_gost89_cbc "gost89-cbc" +#define NID_gost89_cbc 1009 + +#define SN_gost89_ecb "gost89-ecb" +#define NID_gost89_ecb 1010 + +#define SN_gost89_ctr "gost89-ctr" +#define NID_gost89_ctr 1011 + +#define SN_id_Gost28147_89_MAC "gost-mac" +#define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" +#define NID_id_Gost28147_89_MAC 815 +#define OBJ_id_Gost28147_89_MAC OBJ_cryptopro,22L + +#define SN_gost_mac_12 "gost-mac-12" +#define NID_gost_mac_12 976 + +#define SN_id_GostR3411_94_prf "prf-gostr3411-94" +#define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" +#define NID_id_GostR3411_94_prf 816 +#define OBJ_id_GostR3411_94_prf OBJ_cryptopro,23L + +#define SN_id_GostR3410_2001DH "id-GostR3410-2001DH" +#define LN_id_GostR3410_2001DH "GOST R 34.10-2001 DH" +#define NID_id_GostR3410_2001DH 817 +#define OBJ_id_GostR3410_2001DH OBJ_cryptopro,98L + +#define SN_id_GostR3410_94DH "id-GostR3410-94DH" +#define LN_id_GostR3410_94DH "GOST R 34.10-94 DH" +#define NID_id_GostR3410_94DH 818 +#define OBJ_id_GostR3410_94DH OBJ_cryptopro,99L + +#define SN_id_Gost28147_89_CryptoPro_KeyMeshing "id-Gost28147-89-CryptoPro-KeyMeshing" +#define NID_id_Gost28147_89_CryptoPro_KeyMeshing 819 +#define OBJ_id_Gost28147_89_CryptoPro_KeyMeshing OBJ_cryptopro,14L,1L + +#define SN_id_Gost28147_89_None_KeyMeshing "id-Gost28147-89-None-KeyMeshing" +#define NID_id_Gost28147_89_None_KeyMeshing 820 +#define OBJ_id_Gost28147_89_None_KeyMeshing OBJ_cryptopro,14L,0L + +#define SN_id_GostR3411_94_TestParamSet "id-GostR3411-94-TestParamSet" +#define NID_id_GostR3411_94_TestParamSet 821 +#define OBJ_id_GostR3411_94_TestParamSet OBJ_cryptopro,30L,0L + +#define SN_id_GostR3411_94_CryptoProParamSet "id-GostR3411-94-CryptoProParamSet" +#define NID_id_GostR3411_94_CryptoProParamSet 822 +#define OBJ_id_GostR3411_94_CryptoProParamSet OBJ_cryptopro,30L,1L + +#define SN_id_Gost28147_89_TestParamSet "id-Gost28147-89-TestParamSet" +#define NID_id_Gost28147_89_TestParamSet 823 +#define OBJ_id_Gost28147_89_TestParamSet OBJ_cryptopro,31L,0L + +#define SN_id_Gost28147_89_CryptoPro_A_ParamSet "id-Gost28147-89-CryptoPro-A-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_A_ParamSet 824 +#define OBJ_id_Gost28147_89_CryptoPro_A_ParamSet OBJ_cryptopro,31L,1L + +#define SN_id_Gost28147_89_CryptoPro_B_ParamSet "id-Gost28147-89-CryptoPro-B-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_B_ParamSet 825 +#define OBJ_id_Gost28147_89_CryptoPro_B_ParamSet OBJ_cryptopro,31L,2L + +#define SN_id_Gost28147_89_CryptoPro_C_ParamSet "id-Gost28147-89-CryptoPro-C-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_C_ParamSet 826 +#define OBJ_id_Gost28147_89_CryptoPro_C_ParamSet OBJ_cryptopro,31L,3L + +#define SN_id_Gost28147_89_CryptoPro_D_ParamSet "id-Gost28147-89-CryptoPro-D-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_D_ParamSet 827 +#define OBJ_id_Gost28147_89_CryptoPro_D_ParamSet OBJ_cryptopro,31L,4L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 828 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet OBJ_cryptopro,31L,5L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 829 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet OBJ_cryptopro,31L,6L + +#define SN_id_Gost28147_89_CryptoPro_RIC_1_ParamSet "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 830 +#define OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet OBJ_cryptopro,31L,7L + +#define SN_id_GostR3410_94_TestParamSet "id-GostR3410-94-TestParamSet" +#define NID_id_GostR3410_94_TestParamSet 831 +#define OBJ_id_GostR3410_94_TestParamSet OBJ_cryptopro,32L,0L + +#define SN_id_GostR3410_94_CryptoPro_A_ParamSet "id-GostR3410-94-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_A_ParamSet 832 +#define OBJ_id_GostR3410_94_CryptoPro_A_ParamSet OBJ_cryptopro,32L,2L + +#define SN_id_GostR3410_94_CryptoPro_B_ParamSet "id-GostR3410-94-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_B_ParamSet 833 +#define OBJ_id_GostR3410_94_CryptoPro_B_ParamSet OBJ_cryptopro,32L,3L + +#define SN_id_GostR3410_94_CryptoPro_C_ParamSet "id-GostR3410-94-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_C_ParamSet 834 +#define OBJ_id_GostR3410_94_CryptoPro_C_ParamSet OBJ_cryptopro,32L,4L + +#define SN_id_GostR3410_94_CryptoPro_D_ParamSet "id-GostR3410-94-CryptoPro-D-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_D_ParamSet 835 +#define OBJ_id_GostR3410_94_CryptoPro_D_ParamSet OBJ_cryptopro,32L,5L + +#define SN_id_GostR3410_94_CryptoPro_XchA_ParamSet "id-GostR3410-94-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchA_ParamSet 836 +#define OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet OBJ_cryptopro,33L,1L + +#define SN_id_GostR3410_94_CryptoPro_XchB_ParamSet "id-GostR3410-94-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchB_ParamSet 837 +#define OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet OBJ_cryptopro,33L,2L + +#define SN_id_GostR3410_94_CryptoPro_XchC_ParamSet "id-GostR3410-94-CryptoPro-XchC-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchC_ParamSet 838 +#define OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet OBJ_cryptopro,33L,3L + +#define SN_id_GostR3410_2001_TestParamSet "id-GostR3410-2001-TestParamSet" +#define NID_id_GostR3410_2001_TestParamSet 839 +#define OBJ_id_GostR3410_2001_TestParamSet OBJ_cryptopro,35L,0L + +#define SN_id_GostR3410_2001_CryptoPro_A_ParamSet "id-GostR3410-2001-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_A_ParamSet 840 +#define OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet OBJ_cryptopro,35L,1L + +#define SN_id_GostR3410_2001_CryptoPro_B_ParamSet "id-GostR3410-2001-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_B_ParamSet 841 +#define OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet OBJ_cryptopro,35L,2L + +#define SN_id_GostR3410_2001_CryptoPro_C_ParamSet "id-GostR3410-2001-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_C_ParamSet 842 +#define OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet OBJ_cryptopro,35L,3L + +#define SN_id_GostR3410_2001_CryptoPro_XchA_ParamSet "id-GostR3410-2001-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet 843 +#define OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet OBJ_cryptopro,36L,0L + +#define SN_id_GostR3410_2001_CryptoPro_XchB_ParamSet "id-GostR3410-2001-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet 844 +#define OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet OBJ_cryptopro,36L,1L + +#define SN_id_GostR3410_94_a "id-GostR3410-94-a" +#define NID_id_GostR3410_94_a 845 +#define OBJ_id_GostR3410_94_a OBJ_id_GostR3410_94,1L + +#define SN_id_GostR3410_94_aBis "id-GostR3410-94-aBis" +#define NID_id_GostR3410_94_aBis 846 +#define OBJ_id_GostR3410_94_aBis OBJ_id_GostR3410_94,2L + +#define SN_id_GostR3410_94_b "id-GostR3410-94-b" +#define NID_id_GostR3410_94_b 847 +#define OBJ_id_GostR3410_94_b OBJ_id_GostR3410_94,3L + +#define SN_id_GostR3410_94_bBis "id-GostR3410-94-bBis" +#define NID_id_GostR3410_94_bBis 848 +#define OBJ_id_GostR3410_94_bBis OBJ_id_GostR3410_94,4L + +#define SN_id_Gost28147_89_cc "id-Gost28147-89-cc" +#define LN_id_Gost28147_89_cc "GOST 28147-89 Cryptocom ParamSet" +#define NID_id_Gost28147_89_cc 849 +#define OBJ_id_Gost28147_89_cc OBJ_cryptocom,1L,6L,1L + +#define SN_id_GostR3410_94_cc "gost94cc" +#define LN_id_GostR3410_94_cc "GOST 34.10-94 Cryptocom" +#define NID_id_GostR3410_94_cc 850 +#define OBJ_id_GostR3410_94_cc OBJ_cryptocom,1L,5L,3L + +#define SN_id_GostR3410_2001_cc "gost2001cc" +#define LN_id_GostR3410_2001_cc "GOST 34.10-2001 Cryptocom" +#define NID_id_GostR3410_2001_cc 851 +#define OBJ_id_GostR3410_2001_cc OBJ_cryptocom,1L,5L,4L + +#define SN_id_GostR3411_94_with_GostR3410_94_cc "id-GostR3411-94-with-GostR3410-94-cc" +#define LN_id_GostR3411_94_with_GostR3410_94_cc "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_94_cc 852 +#define OBJ_id_GostR3411_94_with_GostR3410_94_cc OBJ_cryptocom,1L,3L,3L + +#define SN_id_GostR3411_94_with_GostR3410_2001_cc "id-GostR3411-94-with-GostR3410-2001-cc" +#define LN_id_GostR3411_94_with_GostR3410_2001_cc "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_2001_cc 853 +#define OBJ_id_GostR3411_94_with_GostR3410_2001_cc OBJ_cryptocom,1L,3L,4L + +#define SN_id_GostR3410_2001_ParamSet_cc "id-GostR3410-2001-ParamSet-cc" +#define LN_id_GostR3410_2001_ParamSet_cc "GOST R 3410-2001 Parameter Set Cryptocom" +#define NID_id_GostR3410_2001_ParamSet_cc 854 +#define OBJ_id_GostR3410_2001_ParamSet_cc OBJ_cryptocom,1L,8L,1L + +#define SN_id_tc26_algorithms "id-tc26-algorithms" +#define NID_id_tc26_algorithms 977 +#define OBJ_id_tc26_algorithms OBJ_id_tc26,1L + +#define SN_id_tc26_sign "id-tc26-sign" +#define NID_id_tc26_sign 978 +#define OBJ_id_tc26_sign OBJ_id_tc26_algorithms,1L + +#define SN_id_GostR3410_2012_256 "gost2012_256" +#define LN_id_GostR3410_2012_256 "GOST R 34.10-2012 with 256 bit modulus" +#define NID_id_GostR3410_2012_256 979 +#define OBJ_id_GostR3410_2012_256 OBJ_id_tc26_sign,1L + +#define SN_id_GostR3410_2012_512 "gost2012_512" +#define LN_id_GostR3410_2012_512 "GOST R 34.10-2012 with 512 bit modulus" +#define NID_id_GostR3410_2012_512 980 +#define OBJ_id_GostR3410_2012_512 OBJ_id_tc26_sign,2L + +#define SN_id_tc26_digest "id-tc26-digest" +#define NID_id_tc26_digest 981 +#define OBJ_id_tc26_digest OBJ_id_tc26_algorithms,2L + +#define SN_id_GostR3411_2012_256 "md_gost12_256" +#define LN_id_GostR3411_2012_256 "GOST R 34.11-2012 with 256 bit hash" +#define NID_id_GostR3411_2012_256 982 +#define OBJ_id_GostR3411_2012_256 OBJ_id_tc26_digest,2L + +#define SN_id_GostR3411_2012_512 "md_gost12_512" +#define LN_id_GostR3411_2012_512 "GOST R 34.11-2012 with 512 bit hash" +#define NID_id_GostR3411_2012_512 983 +#define OBJ_id_GostR3411_2012_512 OBJ_id_tc26_digest,3L + +#define SN_id_tc26_signwithdigest "id-tc26-signwithdigest" +#define NID_id_tc26_signwithdigest 984 +#define OBJ_id_tc26_signwithdigest OBJ_id_tc26_algorithms,3L + +#define SN_id_tc26_signwithdigest_gost3410_2012_256 "id-tc26-signwithdigest-gost3410-2012-256" +#define LN_id_tc26_signwithdigest_gost3410_2012_256 "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_256 985 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_256 OBJ_id_tc26_signwithdigest,2L + +#define SN_id_tc26_signwithdigest_gost3410_2012_512 "id-tc26-signwithdigest-gost3410-2012-512" +#define LN_id_tc26_signwithdigest_gost3410_2012_512 "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_512 986 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_512 OBJ_id_tc26_signwithdigest,3L + +#define SN_id_tc26_mac "id-tc26-mac" +#define NID_id_tc26_mac 987 +#define OBJ_id_tc26_mac OBJ_id_tc26_algorithms,4L + +#define SN_id_tc26_hmac_gost_3411_2012_256 "id-tc26-hmac-gost-3411-2012-256" +#define LN_id_tc26_hmac_gost_3411_2012_256 "HMAC GOST 34.11-2012 256 bit" +#define NID_id_tc26_hmac_gost_3411_2012_256 988 +#define OBJ_id_tc26_hmac_gost_3411_2012_256 OBJ_id_tc26_mac,1L + +#define SN_id_tc26_hmac_gost_3411_2012_512 "id-tc26-hmac-gost-3411-2012-512" +#define LN_id_tc26_hmac_gost_3411_2012_512 "HMAC GOST 34.11-2012 512 bit" +#define NID_id_tc26_hmac_gost_3411_2012_512 989 +#define OBJ_id_tc26_hmac_gost_3411_2012_512 OBJ_id_tc26_mac,2L + +#define SN_id_tc26_cipher "id-tc26-cipher" +#define NID_id_tc26_cipher 990 +#define OBJ_id_tc26_cipher OBJ_id_tc26_algorithms,5L + +#define SN_id_tc26_cipher_gostr3412_2015_magma "id-tc26-cipher-gostr3412-2015-magma" +#define NID_id_tc26_cipher_gostr3412_2015_magma 1173 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma OBJ_id_tc26_cipher,1L + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm "id-tc26-cipher-gostr3412-2015-magma-ctracpkm" +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm 1174 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm OBJ_id_tc26_cipher_gostr3412_2015_magma,1L + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac "id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac" +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac 1175 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_magma,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik "id-tc26-cipher-gostr3412-2015-kuznyechik" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik 1176 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik OBJ_id_tc26_cipher,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm 1177 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac 1178 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,2L + +#define SN_id_tc26_agreement "id-tc26-agreement" +#define NID_id_tc26_agreement 991 +#define OBJ_id_tc26_agreement OBJ_id_tc26_algorithms,6L + +#define SN_id_tc26_agreement_gost_3410_2012_256 "id-tc26-agreement-gost-3410-2012-256" +#define NID_id_tc26_agreement_gost_3410_2012_256 992 +#define OBJ_id_tc26_agreement_gost_3410_2012_256 OBJ_id_tc26_agreement,1L + +#define SN_id_tc26_agreement_gost_3410_2012_512 "id-tc26-agreement-gost-3410-2012-512" +#define NID_id_tc26_agreement_gost_3410_2012_512 993 +#define OBJ_id_tc26_agreement_gost_3410_2012_512 OBJ_id_tc26_agreement,2L + +#define SN_id_tc26_wrap "id-tc26-wrap" +#define NID_id_tc26_wrap 1179 +#define OBJ_id_tc26_wrap OBJ_id_tc26_algorithms,7L + +#define SN_id_tc26_wrap_gostr3412_2015_magma "id-tc26-wrap-gostr3412-2015-magma" +#define NID_id_tc26_wrap_gostr3412_2015_magma 1180 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma OBJ_id_tc26_wrap,1L + +#define SN_id_tc26_wrap_gostr3412_2015_magma_kexp15 "id-tc26-wrap-gostr3412-2015-magma-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 1181 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_magma,1L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik "id-tc26-wrap-gostr3412-2015-kuznyechik" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik 1182 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik OBJ_id_tc26_wrap,2L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 "id-tc26-wrap-gostr3412-2015-kuznyechik-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 1183 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_constants "id-tc26-constants" +#define NID_id_tc26_constants 994 +#define OBJ_id_tc26_constants OBJ_id_tc26,2L + +#define SN_id_tc26_sign_constants "id-tc26-sign-constants" +#define NID_id_tc26_sign_constants 995 +#define OBJ_id_tc26_sign_constants OBJ_id_tc26_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_constants "id-tc26-gost-3410-2012-256-constants" +#define NID_id_tc26_gost_3410_2012_256_constants 1147 +#define OBJ_id_tc26_gost_3410_2012_256_constants OBJ_id_tc26_sign_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetA "id-tc26-gost-3410-2012-256-paramSetA" +#define LN_id_tc26_gost_3410_2012_256_paramSetA "GOST R 34.10-2012 (256 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_256_paramSetA 1148 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetA OBJ_id_tc26_gost_3410_2012_256_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetB "id-tc26-gost-3410-2012-256-paramSetB" +#define LN_id_tc26_gost_3410_2012_256_paramSetB "GOST R 34.10-2012 (256 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_256_paramSetB 1184 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetB OBJ_id_tc26_gost_3410_2012_256_constants,2L + +#define SN_id_tc26_gost_3410_2012_256_paramSetC "id-tc26-gost-3410-2012-256-paramSetC" +#define LN_id_tc26_gost_3410_2012_256_paramSetC "GOST R 34.10-2012 (256 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_256_paramSetC 1185 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetC OBJ_id_tc26_gost_3410_2012_256_constants,3L + +#define SN_id_tc26_gost_3410_2012_256_paramSetD "id-tc26-gost-3410-2012-256-paramSetD" +#define LN_id_tc26_gost_3410_2012_256_paramSetD "GOST R 34.10-2012 (256 bit) ParamSet D" +#define NID_id_tc26_gost_3410_2012_256_paramSetD 1186 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetD OBJ_id_tc26_gost_3410_2012_256_constants,4L + +#define SN_id_tc26_gost_3410_2012_512_constants "id-tc26-gost-3410-2012-512-constants" +#define NID_id_tc26_gost_3410_2012_512_constants 996 +#define OBJ_id_tc26_gost_3410_2012_512_constants OBJ_id_tc26_sign_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetTest "id-tc26-gost-3410-2012-512-paramSetTest" +#define LN_id_tc26_gost_3410_2012_512_paramSetTest "GOST R 34.10-2012 (512 bit) testing parameter set" +#define NID_id_tc26_gost_3410_2012_512_paramSetTest 997 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetTest OBJ_id_tc26_gost_3410_2012_512_constants,0L + +#define SN_id_tc26_gost_3410_2012_512_paramSetA "id-tc26-gost-3410-2012-512-paramSetA" +#define LN_id_tc26_gost_3410_2012_512_paramSetA "GOST R 34.10-2012 (512 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_512_paramSetA 998 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetA OBJ_id_tc26_gost_3410_2012_512_constants,1L + +#define SN_id_tc26_gost_3410_2012_512_paramSetB "id-tc26-gost-3410-2012-512-paramSetB" +#define LN_id_tc26_gost_3410_2012_512_paramSetB "GOST R 34.10-2012 (512 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_512_paramSetB 999 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetB OBJ_id_tc26_gost_3410_2012_512_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetC "id-tc26-gost-3410-2012-512-paramSetC" +#define LN_id_tc26_gost_3410_2012_512_paramSetC "GOST R 34.10-2012 (512 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_512_paramSetC 1149 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetC OBJ_id_tc26_gost_3410_2012_512_constants,3L + +#define SN_id_tc26_digest_constants "id-tc26-digest-constants" +#define NID_id_tc26_digest_constants 1000 +#define OBJ_id_tc26_digest_constants OBJ_id_tc26_constants,2L + +#define SN_id_tc26_cipher_constants "id-tc26-cipher-constants" +#define NID_id_tc26_cipher_constants 1001 +#define OBJ_id_tc26_cipher_constants OBJ_id_tc26_constants,5L + +#define SN_id_tc26_gost_28147_constants "id-tc26-gost-28147-constants" +#define NID_id_tc26_gost_28147_constants 1002 +#define OBJ_id_tc26_gost_28147_constants OBJ_id_tc26_cipher_constants,1L + +#define SN_id_tc26_gost_28147_param_Z "id-tc26-gost-28147-param-Z" +#define LN_id_tc26_gost_28147_param_Z "GOST 28147-89 TC26 parameter set" +#define NID_id_tc26_gost_28147_param_Z 1003 +#define OBJ_id_tc26_gost_28147_param_Z OBJ_id_tc26_gost_28147_constants,1L + +#define SN_INN "INN" +#define LN_INN "INN" +#define NID_INN 1004 +#define OBJ_INN OBJ_member_body,643L,3L,131L,1L,1L + +#define SN_OGRN "OGRN" +#define LN_OGRN "OGRN" +#define NID_OGRN 1005 +#define OBJ_OGRN OBJ_member_body,643L,100L,1L + +#define SN_SNILS "SNILS" +#define LN_SNILS "SNILS" +#define NID_SNILS 1006 +#define OBJ_SNILS OBJ_member_body,643L,100L,3L + +#define SN_subjectSignTool "subjectSignTool" +#define LN_subjectSignTool "Signing Tool of Subject" +#define NID_subjectSignTool 1007 +#define OBJ_subjectSignTool OBJ_member_body,643L,100L,111L + +#define SN_issuerSignTool "issuerSignTool" +#define LN_issuerSignTool "Signing Tool of Issuer" +#define NID_issuerSignTool 1008 +#define OBJ_issuerSignTool OBJ_member_body,643L,100L,112L + +#define SN_grasshopper_ecb "grasshopper-ecb" +#define NID_grasshopper_ecb 1012 + +#define SN_grasshopper_ctr "grasshopper-ctr" +#define NID_grasshopper_ctr 1013 + +#define SN_grasshopper_ofb "grasshopper-ofb" +#define NID_grasshopper_ofb 1014 + +#define SN_grasshopper_cbc "grasshopper-cbc" +#define NID_grasshopper_cbc 1015 + +#define SN_grasshopper_cfb "grasshopper-cfb" +#define NID_grasshopper_cfb 1016 + +#define SN_grasshopper_mac "grasshopper-mac" +#define NID_grasshopper_mac 1017 + +#define SN_magma_ecb "magma-ecb" +#define NID_magma_ecb 1187 + +#define SN_magma_ctr "magma-ctr" +#define NID_magma_ctr 1188 + +#define SN_magma_ofb "magma-ofb" +#define NID_magma_ofb 1189 + +#define SN_magma_cbc "magma-cbc" +#define NID_magma_cbc 1190 + +#define SN_magma_cfb "magma-cfb" +#define NID_magma_cfb 1191 + +#define SN_magma_mac "magma-mac" +#define NID_magma_mac 1192 + +#define SN_camellia_128_cbc "CAMELLIA-128-CBC" +#define LN_camellia_128_cbc "camellia-128-cbc" +#define NID_camellia_128_cbc 751 +#define OBJ_camellia_128_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,2L + +#define SN_camellia_192_cbc "CAMELLIA-192-CBC" +#define LN_camellia_192_cbc "camellia-192-cbc" +#define NID_camellia_192_cbc 752 +#define OBJ_camellia_192_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,3L + +#define SN_camellia_256_cbc "CAMELLIA-256-CBC" +#define LN_camellia_256_cbc "camellia-256-cbc" +#define NID_camellia_256_cbc 753 +#define OBJ_camellia_256_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,4L + +#define SN_id_camellia128_wrap "id-camellia128-wrap" +#define NID_id_camellia128_wrap 907 +#define OBJ_id_camellia128_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,2L + +#define SN_id_camellia192_wrap "id-camellia192-wrap" +#define NID_id_camellia192_wrap 908 +#define OBJ_id_camellia192_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,3L + +#define SN_id_camellia256_wrap "id-camellia256-wrap" +#define NID_id_camellia256_wrap 909 +#define OBJ_id_camellia256_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,4L + +#define OBJ_ntt_ds 0L,3L,4401L,5L + +#define OBJ_camellia OBJ_ntt_ds,3L,1L,9L + +#define SN_camellia_128_ecb "CAMELLIA-128-ECB" +#define LN_camellia_128_ecb "camellia-128-ecb" +#define NID_camellia_128_ecb 754 +#define OBJ_camellia_128_ecb OBJ_camellia,1L + +#define SN_camellia_128_ofb128 "CAMELLIA-128-OFB" +#define LN_camellia_128_ofb128 "camellia-128-ofb" +#define NID_camellia_128_ofb128 766 +#define OBJ_camellia_128_ofb128 OBJ_camellia,3L + +#define SN_camellia_128_cfb128 "CAMELLIA-128-CFB" +#define LN_camellia_128_cfb128 "camellia-128-cfb" +#define NID_camellia_128_cfb128 757 +#define OBJ_camellia_128_cfb128 OBJ_camellia,4L + +#define SN_camellia_128_gcm "CAMELLIA-128-GCM" +#define LN_camellia_128_gcm "camellia-128-gcm" +#define NID_camellia_128_gcm 961 +#define OBJ_camellia_128_gcm OBJ_camellia,6L + +#define SN_camellia_128_ccm "CAMELLIA-128-CCM" +#define LN_camellia_128_ccm "camellia-128-ccm" +#define NID_camellia_128_ccm 962 +#define OBJ_camellia_128_ccm OBJ_camellia,7L + +#define SN_camellia_128_ctr "CAMELLIA-128-CTR" +#define LN_camellia_128_ctr "camellia-128-ctr" +#define NID_camellia_128_ctr 963 +#define OBJ_camellia_128_ctr OBJ_camellia,9L + +#define SN_camellia_128_cmac "CAMELLIA-128-CMAC" +#define LN_camellia_128_cmac "camellia-128-cmac" +#define NID_camellia_128_cmac 964 +#define OBJ_camellia_128_cmac OBJ_camellia,10L + +#define SN_camellia_192_ecb "CAMELLIA-192-ECB" +#define LN_camellia_192_ecb "camellia-192-ecb" +#define NID_camellia_192_ecb 755 +#define OBJ_camellia_192_ecb OBJ_camellia,21L + +#define SN_camellia_192_ofb128 "CAMELLIA-192-OFB" +#define LN_camellia_192_ofb128 "camellia-192-ofb" +#define NID_camellia_192_ofb128 767 +#define OBJ_camellia_192_ofb128 OBJ_camellia,23L + +#define SN_camellia_192_cfb128 "CAMELLIA-192-CFB" +#define LN_camellia_192_cfb128 "camellia-192-cfb" +#define NID_camellia_192_cfb128 758 +#define OBJ_camellia_192_cfb128 OBJ_camellia,24L + +#define SN_camellia_192_gcm "CAMELLIA-192-GCM" +#define LN_camellia_192_gcm "camellia-192-gcm" +#define NID_camellia_192_gcm 965 +#define OBJ_camellia_192_gcm OBJ_camellia,26L + +#define SN_camellia_192_ccm "CAMELLIA-192-CCM" +#define LN_camellia_192_ccm "camellia-192-ccm" +#define NID_camellia_192_ccm 966 +#define OBJ_camellia_192_ccm OBJ_camellia,27L + +#define SN_camellia_192_ctr "CAMELLIA-192-CTR" +#define LN_camellia_192_ctr "camellia-192-ctr" +#define NID_camellia_192_ctr 967 +#define OBJ_camellia_192_ctr OBJ_camellia,29L + +#define SN_camellia_192_cmac "CAMELLIA-192-CMAC" +#define LN_camellia_192_cmac "camellia-192-cmac" +#define NID_camellia_192_cmac 968 +#define OBJ_camellia_192_cmac OBJ_camellia,30L + +#define SN_camellia_256_ecb "CAMELLIA-256-ECB" +#define LN_camellia_256_ecb "camellia-256-ecb" +#define NID_camellia_256_ecb 756 +#define OBJ_camellia_256_ecb OBJ_camellia,41L + +#define SN_camellia_256_ofb128 "CAMELLIA-256-OFB" +#define LN_camellia_256_ofb128 "camellia-256-ofb" +#define NID_camellia_256_ofb128 768 +#define OBJ_camellia_256_ofb128 OBJ_camellia,43L + +#define SN_camellia_256_cfb128 "CAMELLIA-256-CFB" +#define LN_camellia_256_cfb128 "camellia-256-cfb" +#define NID_camellia_256_cfb128 759 +#define OBJ_camellia_256_cfb128 OBJ_camellia,44L + +#define SN_camellia_256_gcm "CAMELLIA-256-GCM" +#define LN_camellia_256_gcm "camellia-256-gcm" +#define NID_camellia_256_gcm 969 +#define OBJ_camellia_256_gcm OBJ_camellia,46L + +#define SN_camellia_256_ccm "CAMELLIA-256-CCM" +#define LN_camellia_256_ccm "camellia-256-ccm" +#define NID_camellia_256_ccm 970 +#define OBJ_camellia_256_ccm OBJ_camellia,47L + +#define SN_camellia_256_ctr "CAMELLIA-256-CTR" +#define LN_camellia_256_ctr "camellia-256-ctr" +#define NID_camellia_256_ctr 971 +#define OBJ_camellia_256_ctr OBJ_camellia,49L + +#define SN_camellia_256_cmac "CAMELLIA-256-CMAC" +#define LN_camellia_256_cmac "camellia-256-cmac" +#define NID_camellia_256_cmac 972 +#define OBJ_camellia_256_cmac OBJ_camellia,50L + +#define SN_camellia_128_cfb1 "CAMELLIA-128-CFB1" +#define LN_camellia_128_cfb1 "camellia-128-cfb1" +#define NID_camellia_128_cfb1 760 + +#define SN_camellia_192_cfb1 "CAMELLIA-192-CFB1" +#define LN_camellia_192_cfb1 "camellia-192-cfb1" +#define NID_camellia_192_cfb1 761 + +#define SN_camellia_256_cfb1 "CAMELLIA-256-CFB1" +#define LN_camellia_256_cfb1 "camellia-256-cfb1" +#define NID_camellia_256_cfb1 762 + +#define SN_camellia_128_cfb8 "CAMELLIA-128-CFB8" +#define LN_camellia_128_cfb8 "camellia-128-cfb8" +#define NID_camellia_128_cfb8 763 + +#define SN_camellia_192_cfb8 "CAMELLIA-192-CFB8" +#define LN_camellia_192_cfb8 "camellia-192-cfb8" +#define NID_camellia_192_cfb8 764 + +#define SN_camellia_256_cfb8 "CAMELLIA-256-CFB8" +#define LN_camellia_256_cfb8 "camellia-256-cfb8" +#define NID_camellia_256_cfb8 765 + +#define OBJ_aria 1L,2L,410L,200046L,1L,1L + +#define SN_aria_128_ecb "ARIA-128-ECB" +#define LN_aria_128_ecb "aria-128-ecb" +#define NID_aria_128_ecb 1065 +#define OBJ_aria_128_ecb OBJ_aria,1L + +#define SN_aria_128_cbc "ARIA-128-CBC" +#define LN_aria_128_cbc "aria-128-cbc" +#define NID_aria_128_cbc 1066 +#define OBJ_aria_128_cbc OBJ_aria,2L + +#define SN_aria_128_cfb128 "ARIA-128-CFB" +#define LN_aria_128_cfb128 "aria-128-cfb" +#define NID_aria_128_cfb128 1067 +#define OBJ_aria_128_cfb128 OBJ_aria,3L + +#define SN_aria_128_ofb128 "ARIA-128-OFB" +#define LN_aria_128_ofb128 "aria-128-ofb" +#define NID_aria_128_ofb128 1068 +#define OBJ_aria_128_ofb128 OBJ_aria,4L + +#define SN_aria_128_ctr "ARIA-128-CTR" +#define LN_aria_128_ctr "aria-128-ctr" +#define NID_aria_128_ctr 1069 +#define OBJ_aria_128_ctr OBJ_aria,5L + +#define SN_aria_192_ecb "ARIA-192-ECB" +#define LN_aria_192_ecb "aria-192-ecb" +#define NID_aria_192_ecb 1070 +#define OBJ_aria_192_ecb OBJ_aria,6L + +#define SN_aria_192_cbc "ARIA-192-CBC" +#define LN_aria_192_cbc "aria-192-cbc" +#define NID_aria_192_cbc 1071 +#define OBJ_aria_192_cbc OBJ_aria,7L + +#define SN_aria_192_cfb128 "ARIA-192-CFB" +#define LN_aria_192_cfb128 "aria-192-cfb" +#define NID_aria_192_cfb128 1072 +#define OBJ_aria_192_cfb128 OBJ_aria,8L + +#define SN_aria_192_ofb128 "ARIA-192-OFB" +#define LN_aria_192_ofb128 "aria-192-ofb" +#define NID_aria_192_ofb128 1073 +#define OBJ_aria_192_ofb128 OBJ_aria,9L + +#define SN_aria_192_ctr "ARIA-192-CTR" +#define LN_aria_192_ctr "aria-192-ctr" +#define NID_aria_192_ctr 1074 +#define OBJ_aria_192_ctr OBJ_aria,10L + +#define SN_aria_256_ecb "ARIA-256-ECB" +#define LN_aria_256_ecb "aria-256-ecb" +#define NID_aria_256_ecb 1075 +#define OBJ_aria_256_ecb OBJ_aria,11L + +#define SN_aria_256_cbc "ARIA-256-CBC" +#define LN_aria_256_cbc "aria-256-cbc" +#define NID_aria_256_cbc 1076 +#define OBJ_aria_256_cbc OBJ_aria,12L + +#define SN_aria_256_cfb128 "ARIA-256-CFB" +#define LN_aria_256_cfb128 "aria-256-cfb" +#define NID_aria_256_cfb128 1077 +#define OBJ_aria_256_cfb128 OBJ_aria,13L + +#define SN_aria_256_ofb128 "ARIA-256-OFB" +#define LN_aria_256_ofb128 "aria-256-ofb" +#define NID_aria_256_ofb128 1078 +#define OBJ_aria_256_ofb128 OBJ_aria,14L + +#define SN_aria_256_ctr "ARIA-256-CTR" +#define LN_aria_256_ctr "aria-256-ctr" +#define NID_aria_256_ctr 1079 +#define OBJ_aria_256_ctr OBJ_aria,15L + +#define SN_aria_128_cfb1 "ARIA-128-CFB1" +#define LN_aria_128_cfb1 "aria-128-cfb1" +#define NID_aria_128_cfb1 1080 + +#define SN_aria_192_cfb1 "ARIA-192-CFB1" +#define LN_aria_192_cfb1 "aria-192-cfb1" +#define NID_aria_192_cfb1 1081 + +#define SN_aria_256_cfb1 "ARIA-256-CFB1" +#define LN_aria_256_cfb1 "aria-256-cfb1" +#define NID_aria_256_cfb1 1082 + +#define SN_aria_128_cfb8 "ARIA-128-CFB8" +#define LN_aria_128_cfb8 "aria-128-cfb8" +#define NID_aria_128_cfb8 1083 + +#define SN_aria_192_cfb8 "ARIA-192-CFB8" +#define LN_aria_192_cfb8 "aria-192-cfb8" +#define NID_aria_192_cfb8 1084 + +#define SN_aria_256_cfb8 "ARIA-256-CFB8" +#define LN_aria_256_cfb8 "aria-256-cfb8" +#define NID_aria_256_cfb8 1085 + +#define SN_aria_128_ccm "ARIA-128-CCM" +#define LN_aria_128_ccm "aria-128-ccm" +#define NID_aria_128_ccm 1120 +#define OBJ_aria_128_ccm OBJ_aria,37L + +#define SN_aria_192_ccm "ARIA-192-CCM" +#define LN_aria_192_ccm "aria-192-ccm" +#define NID_aria_192_ccm 1121 +#define OBJ_aria_192_ccm OBJ_aria,38L + +#define SN_aria_256_ccm "ARIA-256-CCM" +#define LN_aria_256_ccm "aria-256-ccm" +#define NID_aria_256_ccm 1122 +#define OBJ_aria_256_ccm OBJ_aria,39L + +#define SN_aria_128_gcm "ARIA-128-GCM" +#define LN_aria_128_gcm "aria-128-gcm" +#define NID_aria_128_gcm 1123 +#define OBJ_aria_128_gcm OBJ_aria,34L + +#define SN_aria_192_gcm "ARIA-192-GCM" +#define LN_aria_192_gcm "aria-192-gcm" +#define NID_aria_192_gcm 1124 +#define OBJ_aria_192_gcm OBJ_aria,35L + +#define SN_aria_256_gcm "ARIA-256-GCM" +#define LN_aria_256_gcm "aria-256-gcm" +#define NID_aria_256_gcm 1125 +#define OBJ_aria_256_gcm OBJ_aria,36L + +#define SN_kisa "KISA" +#define LN_kisa "kisa" +#define NID_kisa 773 +#define OBJ_kisa OBJ_member_body,410L,200004L + +#define SN_seed_ecb "SEED-ECB" +#define LN_seed_ecb "seed-ecb" +#define NID_seed_ecb 776 +#define OBJ_seed_ecb OBJ_kisa,1L,3L + +#define SN_seed_cbc "SEED-CBC" +#define LN_seed_cbc "seed-cbc" +#define NID_seed_cbc 777 +#define OBJ_seed_cbc OBJ_kisa,1L,4L + +#define SN_seed_cfb128 "SEED-CFB" +#define LN_seed_cfb128 "seed-cfb" +#define NID_seed_cfb128 779 +#define OBJ_seed_cfb128 OBJ_kisa,1L,5L + +#define SN_seed_ofb128 "SEED-OFB" +#define LN_seed_ofb128 "seed-ofb" +#define NID_seed_ofb128 778 +#define OBJ_seed_ofb128 OBJ_kisa,1L,6L + +#define SN_sm4_ecb "SM4-ECB" +#define LN_sm4_ecb "sm4-ecb" +#define NID_sm4_ecb 1133 +#define OBJ_sm4_ecb OBJ_sm_scheme,104L,1L + +#define SN_sm4_cbc "SM4-CBC" +#define LN_sm4_cbc "sm4-cbc" +#define NID_sm4_cbc 1134 +#define OBJ_sm4_cbc OBJ_sm_scheme,104L,2L + +#define SN_sm4_ofb128 "SM4-OFB" +#define LN_sm4_ofb128 "sm4-ofb" +#define NID_sm4_ofb128 1135 +#define OBJ_sm4_ofb128 OBJ_sm_scheme,104L,3L + +#define SN_sm4_cfb128 "SM4-CFB" +#define LN_sm4_cfb128 "sm4-cfb" +#define NID_sm4_cfb128 1137 +#define OBJ_sm4_cfb128 OBJ_sm_scheme,104L,4L + +#define SN_sm4_cfb1 "SM4-CFB1" +#define LN_sm4_cfb1 "sm4-cfb1" +#define NID_sm4_cfb1 1136 +#define OBJ_sm4_cfb1 OBJ_sm_scheme,104L,5L + +#define SN_sm4_cfb8 "SM4-CFB8" +#define LN_sm4_cfb8 "sm4-cfb8" +#define NID_sm4_cfb8 1138 +#define OBJ_sm4_cfb8 OBJ_sm_scheme,104L,6L + +#define SN_sm4_ctr "SM4-CTR" +#define LN_sm4_ctr "sm4-ctr" +#define NID_sm4_ctr 1139 +#define OBJ_sm4_ctr OBJ_sm_scheme,104L,7L + +#define SN_hmac "HMAC" +#define LN_hmac "hmac" +#define NID_hmac 855 + +#define SN_cmac "CMAC" +#define LN_cmac "cmac" +#define NID_cmac 894 + +#define SN_rc4_hmac_md5 "RC4-HMAC-MD5" +#define LN_rc4_hmac_md5 "rc4-hmac-md5" +#define NID_rc4_hmac_md5 915 + +#define SN_aes_128_cbc_hmac_sha1 "AES-128-CBC-HMAC-SHA1" +#define LN_aes_128_cbc_hmac_sha1 "aes-128-cbc-hmac-sha1" +#define NID_aes_128_cbc_hmac_sha1 916 + +#define SN_aes_192_cbc_hmac_sha1 "AES-192-CBC-HMAC-SHA1" +#define LN_aes_192_cbc_hmac_sha1 "aes-192-cbc-hmac-sha1" +#define NID_aes_192_cbc_hmac_sha1 917 + +#define SN_aes_256_cbc_hmac_sha1 "AES-256-CBC-HMAC-SHA1" +#define LN_aes_256_cbc_hmac_sha1 "aes-256-cbc-hmac-sha1" +#define NID_aes_256_cbc_hmac_sha1 918 + +#define SN_aes_128_cbc_hmac_sha256 "AES-128-CBC-HMAC-SHA256" +#define LN_aes_128_cbc_hmac_sha256 "aes-128-cbc-hmac-sha256" +#define NID_aes_128_cbc_hmac_sha256 948 + +#define SN_aes_192_cbc_hmac_sha256 "AES-192-CBC-HMAC-SHA256" +#define LN_aes_192_cbc_hmac_sha256 "aes-192-cbc-hmac-sha256" +#define NID_aes_192_cbc_hmac_sha256 949 + +#define SN_aes_256_cbc_hmac_sha256 "AES-256-CBC-HMAC-SHA256" +#define LN_aes_256_cbc_hmac_sha256 "aes-256-cbc-hmac-sha256" +#define NID_aes_256_cbc_hmac_sha256 950 + +#define SN_chacha20_poly1305 "ChaCha20-Poly1305" +#define LN_chacha20_poly1305 "chacha20-poly1305" +#define NID_chacha20_poly1305 1018 + +#define SN_chacha20 "ChaCha20" +#define LN_chacha20 "chacha20" +#define NID_chacha20 1019 + +#define SN_dhpublicnumber "dhpublicnumber" +#define LN_dhpublicnumber "X9.42 DH" +#define NID_dhpublicnumber 920 +#define OBJ_dhpublicnumber OBJ_ISO_US,10046L,2L,1L + +#define SN_brainpoolP160r1 "brainpoolP160r1" +#define NID_brainpoolP160r1 921 +#define OBJ_brainpoolP160r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,1L + +#define SN_brainpoolP160t1 "brainpoolP160t1" +#define NID_brainpoolP160t1 922 +#define OBJ_brainpoolP160t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,2L + +#define SN_brainpoolP192r1 "brainpoolP192r1" +#define NID_brainpoolP192r1 923 +#define OBJ_brainpoolP192r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,3L + +#define SN_brainpoolP192t1 "brainpoolP192t1" +#define NID_brainpoolP192t1 924 +#define OBJ_brainpoolP192t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,4L + +#define SN_brainpoolP224r1 "brainpoolP224r1" +#define NID_brainpoolP224r1 925 +#define OBJ_brainpoolP224r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,5L + +#define SN_brainpoolP224t1 "brainpoolP224t1" +#define NID_brainpoolP224t1 926 +#define OBJ_brainpoolP224t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,6L + +#define SN_brainpoolP256r1 "brainpoolP256r1" +#define NID_brainpoolP256r1 927 +#define OBJ_brainpoolP256r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,7L + +#define SN_brainpoolP256t1 "brainpoolP256t1" +#define NID_brainpoolP256t1 928 +#define OBJ_brainpoolP256t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,8L + +#define SN_brainpoolP320r1 "brainpoolP320r1" +#define NID_brainpoolP320r1 929 +#define OBJ_brainpoolP320r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,9L + +#define SN_brainpoolP320t1 "brainpoolP320t1" +#define NID_brainpoolP320t1 930 +#define OBJ_brainpoolP320t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,10L + +#define SN_brainpoolP384r1 "brainpoolP384r1" +#define NID_brainpoolP384r1 931 +#define OBJ_brainpoolP384r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,11L + +#define SN_brainpoolP384t1 "brainpoolP384t1" +#define NID_brainpoolP384t1 932 +#define OBJ_brainpoolP384t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,12L + +#define SN_brainpoolP512r1 "brainpoolP512r1" +#define NID_brainpoolP512r1 933 +#define OBJ_brainpoolP512r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,13L + +#define SN_brainpoolP512t1 "brainpoolP512t1" +#define NID_brainpoolP512t1 934 +#define OBJ_brainpoolP512t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,14L + +#define OBJ_x9_63_scheme 1L,3L,133L,16L,840L,63L,0L + +#define OBJ_secg_scheme OBJ_certicom_arc,1L + +#define SN_dhSinglePass_stdDH_sha1kdf_scheme "dhSinglePass-stdDH-sha1kdf-scheme" +#define NID_dhSinglePass_stdDH_sha1kdf_scheme 936 +#define OBJ_dhSinglePass_stdDH_sha1kdf_scheme OBJ_x9_63_scheme,2L + +#define SN_dhSinglePass_stdDH_sha224kdf_scheme "dhSinglePass-stdDH-sha224kdf-scheme" +#define NID_dhSinglePass_stdDH_sha224kdf_scheme 937 +#define OBJ_dhSinglePass_stdDH_sha224kdf_scheme OBJ_secg_scheme,11L,0L + +#define SN_dhSinglePass_stdDH_sha256kdf_scheme "dhSinglePass-stdDH-sha256kdf-scheme" +#define NID_dhSinglePass_stdDH_sha256kdf_scheme 938 +#define OBJ_dhSinglePass_stdDH_sha256kdf_scheme OBJ_secg_scheme,11L,1L + +#define SN_dhSinglePass_stdDH_sha384kdf_scheme "dhSinglePass-stdDH-sha384kdf-scheme" +#define NID_dhSinglePass_stdDH_sha384kdf_scheme 939 +#define OBJ_dhSinglePass_stdDH_sha384kdf_scheme OBJ_secg_scheme,11L,2L + +#define SN_dhSinglePass_stdDH_sha512kdf_scheme "dhSinglePass-stdDH-sha512kdf-scheme" +#define NID_dhSinglePass_stdDH_sha512kdf_scheme 940 +#define OBJ_dhSinglePass_stdDH_sha512kdf_scheme OBJ_secg_scheme,11L,3L + +#define SN_dhSinglePass_cofactorDH_sha1kdf_scheme "dhSinglePass-cofactorDH-sha1kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha1kdf_scheme 941 +#define OBJ_dhSinglePass_cofactorDH_sha1kdf_scheme OBJ_x9_63_scheme,3L + +#define SN_dhSinglePass_cofactorDH_sha224kdf_scheme "dhSinglePass-cofactorDH-sha224kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha224kdf_scheme 942 +#define OBJ_dhSinglePass_cofactorDH_sha224kdf_scheme OBJ_secg_scheme,14L,0L + +#define SN_dhSinglePass_cofactorDH_sha256kdf_scheme "dhSinglePass-cofactorDH-sha256kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha256kdf_scheme 943 +#define OBJ_dhSinglePass_cofactorDH_sha256kdf_scheme OBJ_secg_scheme,14L,1L + +#define SN_dhSinglePass_cofactorDH_sha384kdf_scheme "dhSinglePass-cofactorDH-sha384kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha384kdf_scheme 944 +#define OBJ_dhSinglePass_cofactorDH_sha384kdf_scheme OBJ_secg_scheme,14L,2L + +#define SN_dhSinglePass_cofactorDH_sha512kdf_scheme "dhSinglePass-cofactorDH-sha512kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha512kdf_scheme 945 +#define OBJ_dhSinglePass_cofactorDH_sha512kdf_scheme OBJ_secg_scheme,14L,3L + +#define SN_dh_std_kdf "dh-std-kdf" +#define NID_dh_std_kdf 946 + +#define SN_dh_cofactor_kdf "dh-cofactor-kdf" +#define NID_dh_cofactor_kdf 947 + +#define SN_ct_precert_scts "ct_precert_scts" +#define LN_ct_precert_scts "CT Precertificate SCTs" +#define NID_ct_precert_scts 951 +#define OBJ_ct_precert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,2L + +#define SN_ct_precert_poison "ct_precert_poison" +#define LN_ct_precert_poison "CT Precertificate Poison" +#define NID_ct_precert_poison 952 +#define OBJ_ct_precert_poison 1L,3L,6L,1L,4L,1L,11129L,2L,4L,3L + +#define SN_ct_precert_signer "ct_precert_signer" +#define LN_ct_precert_signer "CT Precertificate Signer" +#define NID_ct_precert_signer 953 +#define OBJ_ct_precert_signer 1L,3L,6L,1L,4L,1L,11129L,2L,4L,4L + +#define SN_ct_cert_scts "ct_cert_scts" +#define LN_ct_cert_scts "CT Certificate SCTs" +#define NID_ct_cert_scts 954 +#define OBJ_ct_cert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,5L + +#define SN_jurisdictionLocalityName "jurisdictionL" +#define LN_jurisdictionLocalityName "jurisdictionLocalityName" +#define NID_jurisdictionLocalityName 955 +#define OBJ_jurisdictionLocalityName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,1L + +#define SN_jurisdictionStateOrProvinceName "jurisdictionST" +#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" +#define NID_jurisdictionStateOrProvinceName 956 +#define OBJ_jurisdictionStateOrProvinceName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,2L + +#define SN_jurisdictionCountryName "jurisdictionC" +#define LN_jurisdictionCountryName "jurisdictionCountryName" +#define NID_jurisdictionCountryName 957 +#define OBJ_jurisdictionCountryName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,3L + +#define SN_id_scrypt "id-scrypt" +#define LN_id_scrypt "scrypt" +#define NID_id_scrypt 973 +#define OBJ_id_scrypt 1L,3L,6L,1L,4L,1L,11591L,4L,11L + +#define SN_tls1_prf "TLS1-PRF" +#define LN_tls1_prf "tls1-prf" +#define NID_tls1_prf 1021 + +#define SN_hkdf "HKDF" +#define LN_hkdf "hkdf" +#define NID_hkdf 1036 + +#define SN_id_pkinit "id-pkinit" +#define NID_id_pkinit 1031 +#define OBJ_id_pkinit 1L,3L,6L,1L,5L,2L,3L + +#define SN_pkInitClientAuth "pkInitClientAuth" +#define LN_pkInitClientAuth "PKINIT Client Auth" +#define NID_pkInitClientAuth 1032 +#define OBJ_pkInitClientAuth OBJ_id_pkinit,4L + +#define SN_pkInitKDC "pkInitKDC" +#define LN_pkInitKDC "Signing KDC Response" +#define NID_pkInitKDC 1033 +#define OBJ_pkInitKDC OBJ_id_pkinit,5L + +#define SN_X25519 "X25519" +#define NID_X25519 1034 +#define OBJ_X25519 1L,3L,101L,110L + +#define SN_X448 "X448" +#define NID_X448 1035 +#define OBJ_X448 1L,3L,101L,111L + +#define SN_ED25519 "ED25519" +#define NID_ED25519 1087 +#define OBJ_ED25519 1L,3L,101L,112L + +#define SN_ED448 "ED448" +#define NID_ED448 1088 +#define OBJ_ED448 1L,3L,101L,113L + +#define SN_kx_rsa "KxRSA" +#define LN_kx_rsa "kx-rsa" +#define NID_kx_rsa 1037 + +#define SN_kx_ecdhe "KxECDHE" +#define LN_kx_ecdhe "kx-ecdhe" +#define NID_kx_ecdhe 1038 + +#define SN_kx_dhe "KxDHE" +#define LN_kx_dhe "kx-dhe" +#define NID_kx_dhe 1039 + +#define SN_kx_ecdhe_psk "KxECDHE-PSK" +#define LN_kx_ecdhe_psk "kx-ecdhe-psk" +#define NID_kx_ecdhe_psk 1040 + +#define SN_kx_dhe_psk "KxDHE-PSK" +#define LN_kx_dhe_psk "kx-dhe-psk" +#define NID_kx_dhe_psk 1041 + +#define SN_kx_rsa_psk "KxRSA_PSK" +#define LN_kx_rsa_psk "kx-rsa-psk" +#define NID_kx_rsa_psk 1042 + +#define SN_kx_psk "KxPSK" +#define LN_kx_psk "kx-psk" +#define NID_kx_psk 1043 + +#define SN_kx_srp "KxSRP" +#define LN_kx_srp "kx-srp" +#define NID_kx_srp 1044 + +#define SN_kx_gost "KxGOST" +#define LN_kx_gost "kx-gost" +#define NID_kx_gost 1045 + +#define SN_kx_any "KxANY" +#define LN_kx_any "kx-any" +#define NID_kx_any 1063 + +#define SN_auth_rsa "AuthRSA" +#define LN_auth_rsa "auth-rsa" +#define NID_auth_rsa 1046 + +#define SN_auth_ecdsa "AuthECDSA" +#define LN_auth_ecdsa "auth-ecdsa" +#define NID_auth_ecdsa 1047 + +#define SN_auth_psk "AuthPSK" +#define LN_auth_psk "auth-psk" +#define NID_auth_psk 1048 + +#define SN_auth_dss "AuthDSS" +#define LN_auth_dss "auth-dss" +#define NID_auth_dss 1049 + +#define SN_auth_gost01 "AuthGOST01" +#define LN_auth_gost01 "auth-gost01" +#define NID_auth_gost01 1050 + +#define SN_auth_gost12 "AuthGOST12" +#define LN_auth_gost12 "auth-gost12" +#define NID_auth_gost12 1051 + +#define SN_auth_srp "AuthSRP" +#define LN_auth_srp "auth-srp" +#define NID_auth_srp 1052 + +#define SN_auth_null "AuthNULL" +#define LN_auth_null "auth-null" +#define NID_auth_null 1053 + +#define SN_auth_any "AuthANY" +#define LN_auth_any "auth-any" +#define NID_auth_any 1064 + +#define SN_poly1305 "Poly1305" +#define LN_poly1305 "poly1305" +#define NID_poly1305 1061 + +#define SN_siphash "SipHash" +#define LN_siphash "siphash" +#define NID_siphash 1062 + +#define SN_ffdhe2048 "ffdhe2048" +#define NID_ffdhe2048 1126 + +#define SN_ffdhe3072 "ffdhe3072" +#define NID_ffdhe3072 1127 + +#define SN_ffdhe4096 "ffdhe4096" +#define NID_ffdhe4096 1128 + +#define SN_ffdhe6144 "ffdhe6144" +#define NID_ffdhe6144 1129 + +#define SN_ffdhe8192 "ffdhe8192" +#define NID_ffdhe8192 1130 + +#define SN_ISO_UA "ISO-UA" +#define NID_ISO_UA 1150 +#define OBJ_ISO_UA OBJ_member_body,804L + +#define SN_ua_pki "ua-pki" +#define NID_ua_pki 1151 +#define OBJ_ua_pki OBJ_ISO_UA,2L,1L,1L,1L + +#define SN_dstu28147 "dstu28147" +#define LN_dstu28147 "DSTU Gost 28147-2009" +#define NID_dstu28147 1152 +#define OBJ_dstu28147 OBJ_ua_pki,1L,1L,1L + +#define SN_dstu28147_ofb "dstu28147-ofb" +#define LN_dstu28147_ofb "DSTU Gost 28147-2009 OFB mode" +#define NID_dstu28147_ofb 1153 +#define OBJ_dstu28147_ofb OBJ_dstu28147,2L + +#define SN_dstu28147_cfb "dstu28147-cfb" +#define LN_dstu28147_cfb "DSTU Gost 28147-2009 CFB mode" +#define NID_dstu28147_cfb 1154 +#define OBJ_dstu28147_cfb OBJ_dstu28147,3L + +#define SN_dstu28147_wrap "dstu28147-wrap" +#define LN_dstu28147_wrap "DSTU Gost 28147-2009 key wrap" +#define NID_dstu28147_wrap 1155 +#define OBJ_dstu28147_wrap OBJ_dstu28147,5L + +#define SN_hmacWithDstu34311 "hmacWithDstu34311" +#define LN_hmacWithDstu34311 "HMAC DSTU Gost 34311-95" +#define NID_hmacWithDstu34311 1156 +#define OBJ_hmacWithDstu34311 OBJ_ua_pki,1L,1L,2L + +#define SN_dstu34311 "dstu34311" +#define LN_dstu34311 "DSTU Gost 34311-95" +#define NID_dstu34311 1157 +#define OBJ_dstu34311 OBJ_ua_pki,1L,2L,1L + +#define SN_dstu4145le "dstu4145le" +#define LN_dstu4145le "DSTU 4145-2002 little endian" +#define NID_dstu4145le 1158 +#define OBJ_dstu4145le OBJ_ua_pki,1L,3L,1L,1L + +#define SN_dstu4145be "dstu4145be" +#define LN_dstu4145be "DSTU 4145-2002 big endian" +#define NID_dstu4145be 1159 +#define OBJ_dstu4145be OBJ_dstu4145le,1L,1L + +#define SN_uacurve0 "uacurve0" +#define LN_uacurve0 "DSTU curve 0" +#define NID_uacurve0 1160 +#define OBJ_uacurve0 OBJ_dstu4145le,2L,0L + +#define SN_uacurve1 "uacurve1" +#define LN_uacurve1 "DSTU curve 1" +#define NID_uacurve1 1161 +#define OBJ_uacurve1 OBJ_dstu4145le,2L,1L + +#define SN_uacurve2 "uacurve2" +#define LN_uacurve2 "DSTU curve 2" +#define NID_uacurve2 1162 +#define OBJ_uacurve2 OBJ_dstu4145le,2L,2L + +#define SN_uacurve3 "uacurve3" +#define LN_uacurve3 "DSTU curve 3" +#define NID_uacurve3 1163 +#define OBJ_uacurve3 OBJ_dstu4145le,2L,3L + +#define SN_uacurve4 "uacurve4" +#define LN_uacurve4 "DSTU curve 4" +#define NID_uacurve4 1164 +#define OBJ_uacurve4 OBJ_dstu4145le,2L,4L + +#define SN_uacurve5 "uacurve5" +#define LN_uacurve5 "DSTU curve 5" +#define NID_uacurve5 1165 +#define OBJ_uacurve5 OBJ_dstu4145le,2L,5L + +#define SN_uacurve6 "uacurve6" +#define LN_uacurve6 "DSTU curve 6" +#define NID_uacurve6 1166 +#define OBJ_uacurve6 OBJ_dstu4145le,2L,6L + +#define SN_uacurve7 "uacurve7" +#define LN_uacurve7 "DSTU curve 7" +#define NID_uacurve7 1167 +#define OBJ_uacurve7 OBJ_dstu4145le,2L,7L + +#define SN_uacurve8 "uacurve8" +#define LN_uacurve8 "DSTU curve 8" +#define NID_uacurve8 1168 +#define OBJ_uacurve8 OBJ_dstu4145le,2L,8L + +#define SN_uacurve9 "uacurve9" +#define LN_uacurve9 "DSTU curve 9" +#define NID_uacurve9 1169 +#define OBJ_uacurve9 OBJ_dstu4145le,2L,9L diff --git a/openSSL/lin64/include/openssl/objects.h b/openSSL/lin64/include/openssl/objects.h new file mode 100644 index 0000000..5e8b576 --- /dev/null +++ b/openSSL/lin64/include/openssl/objects.h @@ -0,0 +1,175 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OBJECTS_H +# define HEADER_OBJECTS_H + +# include +# include +# include +# include + +# define OBJ_NAME_TYPE_UNDEF 0x00 +# define OBJ_NAME_TYPE_MD_METH 0x01 +# define OBJ_NAME_TYPE_CIPHER_METH 0x02 +# define OBJ_NAME_TYPE_PKEY_METH 0x03 +# define OBJ_NAME_TYPE_COMP_METH 0x04 +# define OBJ_NAME_TYPE_NUM 0x05 + +# define OBJ_NAME_ALIAS 0x8000 + +# define OBJ_BSEARCH_VALUE_ON_NOMATCH 0x01 +# define OBJ_BSEARCH_FIRST_VALUE_ON_MATCH 0x02 + + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct obj_name_st { + int type; + int alias; + const char *name; + const char *data; +} OBJ_NAME; + +# define OBJ_create_and_add_object(a,b,c) OBJ_create(a,b,c) + +int OBJ_NAME_init(void); +int OBJ_NAME_new_index(unsigned long (*hash_func) (const char *), + int (*cmp_func) (const char *, const char *), + void (*free_func) (const char *, int, const char *)); +const char *OBJ_NAME_get(const char *name, int type); +int OBJ_NAME_add(const char *name, int type, const char *data); +int OBJ_NAME_remove(const char *name, int type); +void OBJ_NAME_cleanup(int type); /* -1 for everything */ +void OBJ_NAME_do_all(int type, void (*fn) (const OBJ_NAME *, void *arg), + void *arg); +void OBJ_NAME_do_all_sorted(int type, + void (*fn) (const OBJ_NAME *, void *arg), + void *arg); + +ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o); +ASN1_OBJECT *OBJ_nid2obj(int n); +const char *OBJ_nid2ln(int n); +const char *OBJ_nid2sn(int n); +int OBJ_obj2nid(const ASN1_OBJECT *o); +ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name); +int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name); +int OBJ_txt2nid(const char *s); +int OBJ_ln2nid(const char *s); +int OBJ_sn2nid(const char *s); +int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b); +const void *OBJ_bsearch_(const void *key, const void *base, int num, int size, + int (*cmp) (const void *, const void *)); +const void *OBJ_bsearch_ex_(const void *key, const void *base, int num, + int size, + int (*cmp) (const void *, const void *), + int flags); + +# define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *, const void *); \ + static int nm##_cmp(type1 const *, type2 const *); \ + scope type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +# define DECLARE_OBJ_BSEARCH_CMP_FN(type1, type2, cmp) \ + _DECLARE_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp) +# define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +/*- + * Unsolved problem: if a type is actually a pointer type, like + * nid_triple is, then its impossible to get a const where you need + * it. Consider: + * + * typedef int nid_triple[3]; + * const void *a_; + * const nid_triple const *a = a_; + * + * The assignment discards a const because what you really want is: + * + * const int const * const *a = a_; + * + * But if you do that, you lose the fact that a is an array of 3 ints, + * which breaks comparison functions. + * + * Thus we end up having to cast, sadly, or unpack the + * declarations. Or, as I finally did in this case, declare nid_triple + * to be a struct, which it should have been in the first place. + * + * Ben, August 2008. + * + * Also, strictly speaking not all types need be const, but handling + * the non-constness means a lot of complication, and in practice + * comparison routines do always not touch their arguments. + */ + +# define IMPLEMENT_OBJ_BSEARCH_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a,b); \ + } \ + static type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +# define IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a,b); \ + } \ + type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +# define OBJ_bsearch(type1,key,type2,base,num,cmp) \ + ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \ + num,sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \ + (void)CHECKED_PTR_OF(type2,cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN))) + +# define OBJ_bsearch_ex(type1,key,type2,base,num,cmp,flags) \ + ((type2 *)OBJ_bsearch_ex_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \ + num,sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \ + (void)type_2=CHECKED_PTR_OF(type2,cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN)),flags) + +int OBJ_new_nid(int num); +int OBJ_add_object(const ASN1_OBJECT *obj); +int OBJ_create(const char *oid, const char *sn, const char *ln); +#if OPENSSL_API_COMPAT < 0x10100000L +# define OBJ_cleanup() while(0) continue +#endif +int OBJ_create_objects(BIO *in); + +size_t OBJ_length(const ASN1_OBJECT *obj); +const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj); + +int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid); +int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid); +int OBJ_add_sigid(int signid, int dig_id, int pkey_id); +void OBJ_sigid_free(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/objectserr.h b/openSSL/lin64/include/openssl/objectserr.h new file mode 100644 index 0000000..02e166f --- /dev/null +++ b/openSSL/lin64/include/openssl/objectserr.h @@ -0,0 +1,42 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OBJERR_H +# define HEADER_OBJERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OBJ_strings(void); + +/* + * OBJ function codes. + */ +# define OBJ_F_OBJ_ADD_OBJECT 105 +# define OBJ_F_OBJ_ADD_SIGID 107 +# define OBJ_F_OBJ_CREATE 100 +# define OBJ_F_OBJ_DUP 101 +# define OBJ_F_OBJ_NAME_NEW_INDEX 106 +# define OBJ_F_OBJ_NID2LN 102 +# define OBJ_F_OBJ_NID2OBJ 103 +# define OBJ_F_OBJ_NID2SN 104 +# define OBJ_F_OBJ_TXT2OBJ 108 + +/* + * OBJ reason codes. + */ +# define OBJ_R_OID_EXISTS 102 +# define OBJ_R_UNKNOWN_NID 101 + +#endif diff --git a/openSSL/lin64/include/openssl/ocsp.h b/openSSL/lin64/include/openssl/ocsp.h new file mode 100644 index 0000000..4d759a4 --- /dev/null +++ b/openSSL/lin64/include/openssl/ocsp.h @@ -0,0 +1,352 @@ +/* + * Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OCSP_H +# define HEADER_OCSP_H + +#include + +/* + * These definitions are outside the OPENSSL_NO_OCSP guard because although for + * historical reasons they have OCSP_* names, they can actually be used + * independently of OCSP. E.g. see RFC5280 + */ +/*- + * CRLReason ::= ENUMERATED { + * unspecified (0), + * keyCompromise (1), + * cACompromise (2), + * affiliationChanged (3), + * superseded (4), + * cessationOfOperation (5), + * certificateHold (6), + * removeFromCRL (8) } + */ +# define OCSP_REVOKED_STATUS_NOSTATUS -1 +# define OCSP_REVOKED_STATUS_UNSPECIFIED 0 +# define OCSP_REVOKED_STATUS_KEYCOMPROMISE 1 +# define OCSP_REVOKED_STATUS_CACOMPROMISE 2 +# define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED 3 +# define OCSP_REVOKED_STATUS_SUPERSEDED 4 +# define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION 5 +# define OCSP_REVOKED_STATUS_CERTIFICATEHOLD 6 +# define OCSP_REVOKED_STATUS_REMOVEFROMCRL 8 + + +# ifndef OPENSSL_NO_OCSP + +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Various flags and values */ + +# define OCSP_DEFAULT_NONCE_LENGTH 16 + +# define OCSP_NOCERTS 0x1 +# define OCSP_NOINTERN 0x2 +# define OCSP_NOSIGS 0x4 +# define OCSP_NOCHAIN 0x8 +# define OCSP_NOVERIFY 0x10 +# define OCSP_NOEXPLICIT 0x20 +# define OCSP_NOCASIGN 0x40 +# define OCSP_NODELEGATED 0x80 +# define OCSP_NOCHECKS 0x100 +# define OCSP_TRUSTOTHER 0x200 +# define OCSP_RESPID_KEY 0x400 +# define OCSP_NOTIME 0x800 + +typedef struct ocsp_cert_id_st OCSP_CERTID; + +DEFINE_STACK_OF(OCSP_CERTID) + +typedef struct ocsp_one_request_st OCSP_ONEREQ; + +DEFINE_STACK_OF(OCSP_ONEREQ) + +typedef struct ocsp_req_info_st OCSP_REQINFO; +typedef struct ocsp_signature_st OCSP_SIGNATURE; +typedef struct ocsp_request_st OCSP_REQUEST; + +# define OCSP_RESPONSE_STATUS_SUCCESSFUL 0 +# define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST 1 +# define OCSP_RESPONSE_STATUS_INTERNALERROR 2 +# define OCSP_RESPONSE_STATUS_TRYLATER 3 +# define OCSP_RESPONSE_STATUS_SIGREQUIRED 5 +# define OCSP_RESPONSE_STATUS_UNAUTHORIZED 6 + +typedef struct ocsp_resp_bytes_st OCSP_RESPBYTES; + +# define V_OCSP_RESPID_NAME 0 +# define V_OCSP_RESPID_KEY 1 + +DEFINE_STACK_OF(OCSP_RESPID) + +typedef struct ocsp_revoked_info_st OCSP_REVOKEDINFO; + +# define V_OCSP_CERTSTATUS_GOOD 0 +# define V_OCSP_CERTSTATUS_REVOKED 1 +# define V_OCSP_CERTSTATUS_UNKNOWN 2 + +typedef struct ocsp_cert_status_st OCSP_CERTSTATUS; +typedef struct ocsp_single_response_st OCSP_SINGLERESP; + +DEFINE_STACK_OF(OCSP_SINGLERESP) + +typedef struct ocsp_response_data_st OCSP_RESPDATA; + +typedef struct ocsp_basic_response_st OCSP_BASICRESP; + +typedef struct ocsp_crl_id_st OCSP_CRLID; +typedef struct ocsp_service_locator_st OCSP_SERVICELOC; + +# define PEM_STRING_OCSP_REQUEST "OCSP REQUEST" +# define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE" + +# define d2i_OCSP_REQUEST_bio(bp,p) ASN1_d2i_bio_of(OCSP_REQUEST,OCSP_REQUEST_new,d2i_OCSP_REQUEST,bp,p) + +# define d2i_OCSP_RESPONSE_bio(bp,p) ASN1_d2i_bio_of(OCSP_RESPONSE,OCSP_RESPONSE_new,d2i_OCSP_RESPONSE,bp,p) + +# define PEM_read_bio_OCSP_REQUEST(bp,x,cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \ + (char *(*)())d2i_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST, \ + bp,(char **)(x),cb,NULL) + +# define PEM_read_bio_OCSP_RESPONSE(bp,x,cb) (OCSP_RESPONSE *)PEM_ASN1_read_bio(\ + (char *(*)())d2i_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE, \ + bp,(char **)(x),cb,NULL) + +# define PEM_write_bio_OCSP_REQUEST(bp,o) \ + PEM_ASN1_write_bio((int (*)())i2d_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST,\ + bp,(char *)(o), NULL,NULL,0,NULL,NULL) + +# define PEM_write_bio_OCSP_RESPONSE(bp,o) \ + PEM_ASN1_write_bio((int (*)())i2d_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE,\ + bp,(char *)(o), NULL,NULL,0,NULL,NULL) + +# define i2d_OCSP_RESPONSE_bio(bp,o) ASN1_i2d_bio_of(OCSP_RESPONSE,i2d_OCSP_RESPONSE,bp,o) + +# define i2d_OCSP_REQUEST_bio(bp,o) ASN1_i2d_bio_of(OCSP_REQUEST,i2d_OCSP_REQUEST,bp,o) + +# define ASN1_BIT_STRING_digest(data,type,md,len) \ + ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING),type,data,md,len) + +# define OCSP_CERTSTATUS_dup(cs)\ + (OCSP_CERTSTATUS*)ASN1_dup((int(*)())i2d_OCSP_CERTSTATUS,\ + (char *(*)())d2i_OCSP_CERTSTATUS,(char *)(cs)) + +OCSP_CERTID *OCSP_CERTID_dup(OCSP_CERTID *id); + +OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); +OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, OCSP_REQUEST *req, + int maxline); +int OCSP_REQ_CTX_nbio(OCSP_REQ_CTX *rctx); +int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx); +OCSP_REQ_CTX *OCSP_REQ_CTX_new(BIO *io, int maxline); +void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx); +void OCSP_set_max_response_length(OCSP_REQ_CTX *rctx, unsigned long len); +int OCSP_REQ_CTX_i2d(OCSP_REQ_CTX *rctx, const ASN1_ITEM *it, + ASN1_VALUE *val); +int OCSP_REQ_CTX_nbio_d2i(OCSP_REQ_CTX *rctx, ASN1_VALUE **pval, + const ASN1_ITEM *it); +BIO *OCSP_REQ_CTX_get0_mem_bio(OCSP_REQ_CTX *rctx); +int OCSP_REQ_CTX_http(OCSP_REQ_CTX *rctx, const char *op, const char *path); +int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req); +int OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx, + const char *name, const char *value); + +OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, const X509 *subject, + const X509 *issuer); + +OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst, + const X509_NAME *issuerName, + const ASN1_BIT_STRING *issuerKey, + const ASN1_INTEGER *serialNumber); + +OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid); + +int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len); +int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len); +int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs); +int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req); + +int OCSP_request_set1_name(OCSP_REQUEST *req, X509_NAME *nm); +int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert); + +int OCSP_request_sign(OCSP_REQUEST *req, + X509 *signer, + EVP_PKEY *key, + const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); + +int OCSP_response_status(OCSP_RESPONSE *resp); +OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp); + +const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs); +const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs); +const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_signer(OCSP_BASICRESP *bs, X509 **signer, + STACK_OF(X509) *extra_certs); + +int OCSP_resp_count(OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx); +const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(const OCSP_BASICRESP* bs); +const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_id(const OCSP_BASICRESP *bs, + const ASN1_OCTET_STRING **pid, + const X509_NAME **pname); +int OCSP_resp_get1_id(const OCSP_BASICRESP *bs, + ASN1_OCTET_STRING **pid, + X509_NAME **pname); + +int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last); +int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status, + int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, + ASN1_GENERALIZEDTIME *nextupd, long sec, long maxsec); + +int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, + X509_STORE *store, unsigned long flags); + +int OCSP_parse_url(const char *url, char **phost, char **pport, char **ppath, + int *pssl); + +int OCSP_id_issuer_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); +int OCSP_id_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); + +int OCSP_request_onereq_count(OCSP_REQUEST *req); +OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i); +OCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one); +int OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, + ASN1_OCTET_STRING **pikeyHash, + ASN1_INTEGER **pserial, OCSP_CERTID *cid); +int OCSP_request_is_signed(OCSP_REQUEST *req); +OCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp, + OCSP_CERTID *cid, + int status, int reason, + ASN1_TIME *revtime, + ASN1_TIME *thisupd, + ASN1_TIME *nextupd); +int OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert); +int OCSP_basic_sign(OCSP_BASICRESP *brsp, + X509 *signer, EVP_PKEY *key, const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_basic_sign_ctx(OCSP_BASICRESP *brsp, + X509 *signer, EVP_MD_CTX *ctx, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_RESPID_set_by_name(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_match(OCSP_RESPID *respid, X509 *cert); + +X509_EXTENSION *OCSP_crlID_new(const char *url, long *n, char *tim); + +X509_EXTENSION *OCSP_accept_responses_new(char **oids); + +X509_EXTENSION *OCSP_archive_cutoff_new(char *tim); + +X509_EXTENSION *OCSP_url_svcloc_new(X509_NAME *issuer, const char **urls); + +int OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x); +int OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos); +int OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos); +X509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc); +X509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc); +void *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit, + int *idx); +int OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc); + +int OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x); +int OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos); +int OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, const ASN1_OBJECT *obj, int lastpos); +int OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos); +X509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc); +X509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc); +void *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx); +int OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc); + +int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x); +int OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos); +int OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc); +X509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc); +void *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit, + int *idx); +int OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc); + +int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x); +int OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos); +int OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc); +X509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc); +void *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit, + int *idx); +int OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc); +const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x); + +DECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS) +DECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPID) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES) +DECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTID) +DECLARE_ASN1_FUNCTIONS(OCSP_REQUEST) +DECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE) +DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_CRLID) +DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC) + +const char *OCSP_response_status_str(long s); +const char *OCSP_cert_status_str(long s); +const char *OCSP_crl_reason_str(long s); + +int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *a, unsigned long flags); +int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags); + +int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, + X509_STORE *st, unsigned long flags); + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin64/include/openssl/ocsperr.h b/openSSL/lin64/include/openssl/ocsperr.h new file mode 100644 index 0000000..8dd9e01 --- /dev/null +++ b/openSSL/lin64/include/openssl/ocsperr.h @@ -0,0 +1,78 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OCSPERR_H +# define HEADER_OCSPERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_OCSP + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OCSP_strings(void); + +/* + * OCSP function codes. + */ +# define OCSP_F_D2I_OCSP_NONCE 102 +# define OCSP_F_OCSP_BASIC_ADD1_STATUS 103 +# define OCSP_F_OCSP_BASIC_SIGN 104 +# define OCSP_F_OCSP_BASIC_SIGN_CTX 119 +# define OCSP_F_OCSP_BASIC_VERIFY 105 +# define OCSP_F_OCSP_CERT_ID_NEW 101 +# define OCSP_F_OCSP_CHECK_DELEGATED 106 +# define OCSP_F_OCSP_CHECK_IDS 107 +# define OCSP_F_OCSP_CHECK_ISSUER 108 +# define OCSP_F_OCSP_CHECK_VALIDITY 115 +# define OCSP_F_OCSP_MATCH_ISSUERID 109 +# define OCSP_F_OCSP_PARSE_URL 114 +# define OCSP_F_OCSP_REQUEST_SIGN 110 +# define OCSP_F_OCSP_REQUEST_VERIFY 116 +# define OCSP_F_OCSP_RESPONSE_GET1_BASIC 111 +# define OCSP_F_PARSE_HTTP_LINE1 118 + +/* + * OCSP reason codes. + */ +# define OCSP_R_CERTIFICATE_VERIFY_ERROR 101 +# define OCSP_R_DIGEST_ERR 102 +# define OCSP_R_ERROR_IN_NEXTUPDATE_FIELD 122 +# define OCSP_R_ERROR_IN_THISUPDATE_FIELD 123 +# define OCSP_R_ERROR_PARSING_URL 121 +# define OCSP_R_MISSING_OCSPSIGNING_USAGE 103 +# define OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE 124 +# define OCSP_R_NOT_BASIC_RESPONSE 104 +# define OCSP_R_NO_CERTIFICATES_IN_CHAIN 105 +# define OCSP_R_NO_RESPONSE_DATA 108 +# define OCSP_R_NO_REVOKED_TIME 109 +# define OCSP_R_NO_SIGNER_KEY 130 +# define OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 110 +# define OCSP_R_REQUEST_NOT_SIGNED 128 +# define OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA 111 +# define OCSP_R_ROOT_CA_NOT_TRUSTED 112 +# define OCSP_R_SERVER_RESPONSE_ERROR 114 +# define OCSP_R_SERVER_RESPONSE_PARSE_ERROR 115 +# define OCSP_R_SIGNATURE_FAILURE 117 +# define OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND 118 +# define OCSP_R_STATUS_EXPIRED 125 +# define OCSP_R_STATUS_NOT_YET_VALID 126 +# define OCSP_R_STATUS_TOO_OLD 127 +# define OCSP_R_UNKNOWN_MESSAGE_DIGEST 119 +# define OCSP_R_UNKNOWN_NID 120 +# define OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE 129 + +# endif +#endif diff --git a/openSSL/lin64/include/openssl/opensslconf.h b/openSSL/lin64/include/openssl/opensslconf.h new file mode 100644 index 0000000..ed4c3c2 --- /dev/null +++ b/openSSL/lin64/include/openssl/opensslconf.h @@ -0,0 +1,197 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#endif +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +#endif +#ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +#endif +#ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_STATIC_ENGINE +# define OPENSSL_NO_STATIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#ifndef OPENSSL_FILE +# ifdef OPENSSL_NO_FILENAMES +# define OPENSSL_FILE "" +# define OPENSSL_LINE 0 +# else +# define OPENSSL_FILE __FILE__ +# define OPENSSL_LINE __LINE__ +# endif +#endif + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# define SIXTY_FOUR_BIT_LONG +# undef SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#define RC4_INT unsigned int + +#ifdef __cplusplus +} +#endif diff --git a/openSSL/lin64/include/openssl/opensslv.h b/openSSL/lin64/include/openssl/opensslv.h new file mode 100644 index 0000000..fec5f57 --- /dev/null +++ b/openSSL/lin64/include/openssl/opensslv.h @@ -0,0 +1,101 @@ +/* + * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OPENSSLV_H +# define HEADER_OPENSSLV_H + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * Numeric release version identifier: + * MNNFFPPS: major minor fix patch status + * The status nibble has one of the values 0 for development, 1 to e for betas + * 1 to 14, and f for release. The patch level is exactly that. + * For example: + * 0.9.3-dev 0x00903000 + * 0.9.3-beta1 0x00903001 + * 0.9.3-beta2-dev 0x00903002 + * 0.9.3-beta2 0x00903002 (same as ...beta2-dev) + * 0.9.3 0x0090300f + * 0.9.3a 0x0090301f + * 0.9.4 0x0090400f + * 1.2.3z 0x102031af + * + * For continuity reasons (because 0.9.5 is already out, and is coded + * 0x00905100), between 0.9.5 and 0.9.6 the coding of the patch level + * part is slightly different, by setting the highest bit. This means + * that 0.9.5a looks like this: 0x0090581f. At 0.9.6, we can start + * with 0x0090600S... + * + * (Prior to 0.9.3-dev a different scheme was used: 0.9.2b is 0x0922.) + * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for + * major minor fix final patch/beta) + */ +# define OPENSSL_VERSION_NUMBER 0x1010111fL +# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1q 5 Jul 2022" + +/*- + * The macros below are to be used for shared library (.so, .dll, ...) + * versioning. That kind of versioning works a bit differently between + * operating systems. The most usual scheme is to set a major and a minor + * number, and have the runtime loader check that the major number is equal + * to what it was at application link time, while the minor number has to + * be greater or equal to what it was at application link time. With this + * scheme, the version number is usually part of the file name, like this: + * + * libcrypto.so.0.9 + * + * Some unixen also make a softlink with the major version number only: + * + * libcrypto.so.0 + * + * On Tru64 and IRIX 6.x it works a little bit differently. There, the + * shared library version is stored in the file, and is actually a series + * of versions, separated by colons. The rightmost version present in the + * library when linking an application is stored in the application to be + * matched at run time. When the application is run, a check is done to + * see if the library version stored in the application matches any of the + * versions in the version string of the library itself. + * This version string can be constructed in any way, depending on what + * kind of matching is desired. However, to implement the same scheme as + * the one used in the other unixen, all compatible versions, from lowest + * to highest, should be part of the string. Consecutive builds would + * give the following versions strings: + * + * 3.0 + * 3.0:3.1 + * 3.0:3.1:3.2 + * 4.0 + * 4.0:4.1 + * + * Notice how version 4 is completely incompatible with version, and + * therefore give the breach you can see. + * + * There may be other schemes as well that I haven't yet discovered. + * + * So, here's the way it works here: first of all, the library version + * number doesn't need at all to match the overall OpenSSL version. + * However, it's nice and more understandable if it actually does. + * The current library version is stored in the macro SHLIB_VERSION_NUMBER, + * which is just a piece of text in the format "M.m.e" (Major, minor, edit). + * For the sake of Tru64, IRIX, and any other OS that behaves in similar ways, + * we need to keep a history of version numbers, which is done in the + * macro SHLIB_VERSION_HISTORY. The numbers are separated by colons and + * should only keep the versions that are binary compatible with the current. + */ +# define SHLIB_VERSION_HISTORY "" +# define SHLIB_VERSION_NUMBER "1.1" + + +#ifdef __cplusplus +} +#endif +#endif /* HEADER_OPENSSLV_H */ diff --git a/openSSL/lin64/include/openssl/ossl_typ.h b/openSSL/lin64/include/openssl/ossl_typ.h new file mode 100644 index 0000000..e0edfaa --- /dev/null +++ b/openSSL/lin64/include/openssl/ossl_typ.h @@ -0,0 +1,197 @@ +/* + * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OPENSSL_TYPES_H +# define HEADER_OPENSSL_TYPES_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +# ifdef NO_ASN1_TYPEDEFS +# define ASN1_INTEGER ASN1_STRING +# define ASN1_ENUMERATED ASN1_STRING +# define ASN1_BIT_STRING ASN1_STRING +# define ASN1_OCTET_STRING ASN1_STRING +# define ASN1_PRINTABLESTRING ASN1_STRING +# define ASN1_T61STRING ASN1_STRING +# define ASN1_IA5STRING ASN1_STRING +# define ASN1_UTCTIME ASN1_STRING +# define ASN1_GENERALIZEDTIME ASN1_STRING +# define ASN1_TIME ASN1_STRING +# define ASN1_GENERALSTRING ASN1_STRING +# define ASN1_UNIVERSALSTRING ASN1_STRING +# define ASN1_BMPSTRING ASN1_STRING +# define ASN1_VISIBLESTRING ASN1_STRING +# define ASN1_UTF8STRING ASN1_STRING +# define ASN1_BOOLEAN int +# define ASN1_NULL int +# else +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct asn1_string_st ASN1_ENUMERATED; +typedef struct asn1_string_st ASN1_BIT_STRING; +typedef struct asn1_string_st ASN1_OCTET_STRING; +typedef struct asn1_string_st ASN1_PRINTABLESTRING; +typedef struct asn1_string_st ASN1_T61STRING; +typedef struct asn1_string_st ASN1_IA5STRING; +typedef struct asn1_string_st ASN1_GENERALSTRING; +typedef struct asn1_string_st ASN1_UNIVERSALSTRING; +typedef struct asn1_string_st ASN1_BMPSTRING; +typedef struct asn1_string_st ASN1_UTCTIME; +typedef struct asn1_string_st ASN1_TIME; +typedef struct asn1_string_st ASN1_GENERALIZEDTIME; +typedef struct asn1_string_st ASN1_VISIBLESTRING; +typedef struct asn1_string_st ASN1_UTF8STRING; +typedef struct asn1_string_st ASN1_STRING; +typedef int ASN1_BOOLEAN; +typedef int ASN1_NULL; +# endif + +typedef struct asn1_object_st ASN1_OBJECT; + +typedef struct ASN1_ITEM_st ASN1_ITEM; +typedef struct asn1_pctx_st ASN1_PCTX; +typedef struct asn1_sctx_st ASN1_SCTX; + +# ifdef _WIN32 +# undef X509_NAME +# undef X509_EXTENSIONS +# undef PKCS7_ISSUER_AND_SERIAL +# undef PKCS7_SIGNER_INFO +# undef OCSP_REQUEST +# undef OCSP_RESPONSE +# endif + +# ifdef BIGNUM +# undef BIGNUM +# endif +struct dane_st; +typedef struct bio_st BIO; +typedef struct bignum_st BIGNUM; +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; + +typedef struct buf_mem_st BUF_MEM; + +typedef struct evp_cipher_st EVP_CIPHER; +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; +typedef struct evp_md_st EVP_MD; +typedef struct evp_md_ctx_st EVP_MD_CTX; +typedef struct evp_pkey_st EVP_PKEY; + +typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; + +typedef struct evp_pkey_method_st EVP_PKEY_METHOD; +typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; + +typedef struct evp_Encode_Ctx_st EVP_ENCODE_CTX; + +typedef struct hmac_ctx_st HMAC_CTX; + +typedef struct dh_st DH; +typedef struct dh_method DH_METHOD; + +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; + +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; +typedef struct rsa_pss_params_st RSA_PSS_PARAMS; + +typedef struct ec_key_st EC_KEY; +typedef struct ec_key_method_st EC_KEY_METHOD; + +typedef struct rand_meth_st RAND_METHOD; +typedef struct rand_drbg_st RAND_DRBG; + +typedef struct ssl_dane_st SSL_DANE; +typedef struct x509_st X509; +typedef struct X509_algor_st X509_ALGOR; +typedef struct X509_crl_st X509_CRL; +typedef struct x509_crl_method_st X509_CRL_METHOD; +typedef struct x509_revoked_st X509_REVOKED; +typedef struct X509_name_st X509_NAME; +typedef struct X509_pubkey_st X509_PUBKEY; +typedef struct x509_store_st X509_STORE; +typedef struct x509_store_ctx_st X509_STORE_CTX; + +typedef struct x509_object_st X509_OBJECT; +typedef struct x509_lookup_st X509_LOOKUP; +typedef struct x509_lookup_method_st X509_LOOKUP_METHOD; +typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM; + +typedef struct x509_sig_info_st X509_SIG_INFO; + +typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; + +typedef struct v3_ext_ctx X509V3_CTX; +typedef struct conf_st CONF; +typedef struct ossl_init_settings_st OPENSSL_INIT_SETTINGS; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct engine_st ENGINE; +typedef struct ssl_st SSL; +typedef struct ssl_ctx_st SSL_CTX; + +typedef struct comp_ctx_st COMP_CTX; +typedef struct comp_method_st COMP_METHOD; + +typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; +typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; +typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; +typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; + +typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; +typedef struct DIST_POINT_st DIST_POINT; +typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; +typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; + +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; + +typedef struct ocsp_req_ctx_st OCSP_REQ_CTX; +typedef struct ocsp_response_st OCSP_RESPONSE; +typedef struct ocsp_responder_id_st OCSP_RESPID; + +typedef struct sct_st SCT; +typedef struct sct_ctx_st SCT_CTX; +typedef struct ctlog_st CTLOG; +typedef struct ctlog_store_st CTLOG_STORE; +typedef struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX; + +typedef struct ossl_store_info_st OSSL_STORE_INFO; +typedef struct ossl_store_search_st OSSL_STORE_SEARCH; + +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && \ + defined(INTMAX_MAX) && defined(UINTMAX_MAX) +typedef intmax_t ossl_intmax_t; +typedef uintmax_t ossl_uintmax_t; +#else +/* + * Not long long, because the C-library can only be expected to provide + * strtoll(), strtoull() at the same time as intmax_t and strtoimax(), + * strtoumax(). Since we use these for parsing arguments, we need the + * conversion functions, not just the sizes. + */ +typedef long ossl_intmax_t; +typedef unsigned long ossl_uintmax_t; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* def HEADER_OPENSSL_TYPES_H */ diff --git a/openSSL/lin64/include/openssl/pem.h b/openSSL/lin64/include/openssl/pem.h new file mode 100644 index 0000000..2ef5b5d --- /dev/null +++ b/openSSL/lin64/include/openssl/pem.h @@ -0,0 +1,378 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEM_H +# define HEADER_PEM_H + +# include +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define PEM_BUFSIZE 1024 + +# define PEM_STRING_X509_OLD "X509 CERTIFICATE" +# define PEM_STRING_X509 "CERTIFICATE" +# define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +# define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +# define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +# define PEM_STRING_X509_CRL "X509 CRL" +# define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +# define PEM_STRING_PUBLIC "PUBLIC KEY" +# define PEM_STRING_RSA "RSA PRIVATE KEY" +# define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +# define PEM_STRING_DSA "DSA PRIVATE KEY" +# define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +# define PEM_STRING_PKCS7 "PKCS7" +# define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +# define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +# define PEM_STRING_PKCS8INF "PRIVATE KEY" +# define PEM_STRING_DHPARAMS "DH PARAMETERS" +# define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +# define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +# define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +# define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +# define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +# define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +# define PEM_STRING_PARAMETERS "PARAMETERS" +# define PEM_STRING_CMS "CMS" + +# define PEM_TYPE_ENCRYPTED 10 +# define PEM_TYPE_MIC_ONLY 20 +# define PEM_TYPE_MIC_CLEAR 30 +# define PEM_TYPE_CLEAR 40 + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +# ifdef OPENSSL_NO_STDIO + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +# else + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ +type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str,fp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, const type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# endif + +# define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ +type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str,bp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, const type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_read_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb(name, type, str, asn1) + +/* These are the same except they are for the declarations */ + +# if defined(OPENSSL_NO_STDIO) + +# define DECLARE_PEM_read_fp(name, type) /**/ +# define DECLARE_PEM_write_fp(name, type) /**/ +# define DECLARE_PEM_write_fp_const(name, type) /**/ +# define DECLARE_PEM_write_cb_fp(name, type) /**/ +# else + +# define DECLARE_PEM_read_fp(name, type) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x); + +# define DECLARE_PEM_write_fp_const(name, type) \ + int PEM_write_##name(FILE *fp, const type *x); + +# define DECLARE_PEM_write_cb_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# endif + +# define DECLARE_PEM_read_bio(name, type) \ + type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x); + +# define DECLARE_PEM_write_bio_const(name, type) \ + int PEM_write_bio_##name(BIO *bp, const type *x); + +# define DECLARE_PEM_write_cb_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_fp(name, type) +# define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_fp_const(name, type) +# define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_fp(name, type) +# define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_fp(name, type) +# define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write(name, type) +# define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_const(name, type) +# define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_cb(name, type) +typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata); + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +# define PEM_FLAG_SECURE 0x1 +# define PEM_FLAG_EAY_COMPATIBLE 0x2 +# define PEM_FLAG_ONLY_B64 0x4 +int PEM_read_bio_ex(BIO *bp, char **name, char **header, + unsigned char **data, long *len, unsigned int flags); +int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, void *x, + const EVP_CIPHER *enc, unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, + unsigned char *kstr, int klen, + pem_password_cb *cd, void *u); + +#ifndef OPENSSL_NO_STDIO +int PEM_read(FILE *fp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write(FILE *fp, const char *name, const char *hdr, + const unsigned char *data, long len); +void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, + void *x, const EVP_CIPHER *enc, unsigned char *kstr, + int klen, pem_password_cb *callback, void *u); +STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +#endif + +int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +int PEM_SignUpdate(EVP_MD_CTX *ctx, unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +/* The default pem_password_cb that's used internally */ +int PEM_def_callback(char *buf, int num, int rwflag, void *userdata); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, char *str); + +# include + +DECLARE_PEM_rw(X509, X509) +DECLARE_PEM_rw(X509_AUX, X509) +DECLARE_PEM_rw(X509_REQ, X509_REQ) +DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) +DECLARE_PEM_rw(X509_CRL, X509_CRL) +DECLARE_PEM_rw(PKCS7, PKCS7) +DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) +DECLARE_PEM_rw(PKCS8, X509_SIG) +DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) +# ifndef OPENSSL_NO_RSA +DECLARE_PEM_rw_cb(RSAPrivateKey, RSA) +DECLARE_PEM_rw_const(RSAPublicKey, RSA) +DECLARE_PEM_rw(RSA_PUBKEY, RSA) +# endif +# ifndef OPENSSL_NO_DSA +DECLARE_PEM_rw_cb(DSAPrivateKey, DSA) +DECLARE_PEM_rw(DSA_PUBKEY, DSA) +DECLARE_PEM_rw_const(DSAparams, DSA) +# endif +# ifndef OPENSSL_NO_EC +DECLARE_PEM_rw_const(ECPKParameters, EC_GROUP) +DECLARE_PEM_rw_cb(ECPrivateKey, EC_KEY) +DECLARE_PEM_rw(EC_PUBKEY, EC_KEY) +# endif +# ifndef OPENSSL_NO_DH +DECLARE_PEM_rw_const(DHparams, DH) +DECLARE_PEM_write_const(DHxparams, DH) +# endif +DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PrivateKey_traditional(BIO *bp, EVP_PKEY *x, + const EVP_CIPHER *enc, + unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *, + char *, int, pem_password_cb *, void *); +int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +# ifndef OPENSSL_NO_STDIO +int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); + +EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, pem_password_cb *cd, + void *u); +# endif +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x); + +# ifndef OPENSSL_NO_DSA +EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PrivateKey_bio(BIO *in); +EVP_PKEY *b2i_PublicKey_bio(BIO *in); +int i2b_PrivateKey_bio(BIO *out, EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk); +# ifndef OPENSSL_NO_RC4 +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +# endif +# endif + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/pem2.h b/openSSL/lin64/include/openssl/pem2.h new file mode 100644 index 0000000..038fe79 --- /dev/null +++ b/openSSL/lin64/include/openssl/pem2.h @@ -0,0 +1,13 @@ +/* + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEM2_H +# define HEADER_PEM2_H +# include +#endif diff --git a/openSSL/lin64/include/openssl/pemerr.h b/openSSL/lin64/include/openssl/pemerr.h new file mode 100644 index 0000000..4f7e357 --- /dev/null +++ b/openSSL/lin64/include/openssl/pemerr.h @@ -0,0 +1,105 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEMERR_H +# define HEADER_PEMERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PEM_strings(void); + +/* + * PEM function codes. + */ +# define PEM_F_B2I_DSS 127 +# define PEM_F_B2I_PVK_BIO 128 +# define PEM_F_B2I_RSA 129 +# define PEM_F_CHECK_BITLEN_DSA 130 +# define PEM_F_CHECK_BITLEN_RSA 131 +# define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120 +# define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121 +# define PEM_F_DO_B2I 132 +# define PEM_F_DO_B2I_BIO 133 +# define PEM_F_DO_BLOB_HEADER 134 +# define PEM_F_DO_I2B 146 +# define PEM_F_DO_PK8PKEY 126 +# define PEM_F_DO_PK8PKEY_FP 125 +# define PEM_F_DO_PVK_BODY 135 +# define PEM_F_DO_PVK_HEADER 136 +# define PEM_F_GET_HEADER_AND_DATA 143 +# define PEM_F_GET_NAME 144 +# define PEM_F_I2B_PVK 137 +# define PEM_F_I2B_PVK_BIO 138 +# define PEM_F_LOAD_IV 101 +# define PEM_F_PEM_ASN1_READ 102 +# define PEM_F_PEM_ASN1_READ_BIO 103 +# define PEM_F_PEM_ASN1_WRITE 104 +# define PEM_F_PEM_ASN1_WRITE_BIO 105 +# define PEM_F_PEM_DEF_CALLBACK 100 +# define PEM_F_PEM_DO_HEADER 106 +# define PEM_F_PEM_GET_EVP_CIPHER_INFO 107 +# define PEM_F_PEM_READ 108 +# define PEM_F_PEM_READ_BIO 109 +# define PEM_F_PEM_READ_BIO_DHPARAMS 141 +# define PEM_F_PEM_READ_BIO_EX 145 +# define PEM_F_PEM_READ_BIO_PARAMETERS 140 +# define PEM_F_PEM_READ_BIO_PRIVATEKEY 123 +# define PEM_F_PEM_READ_DHPARAMS 142 +# define PEM_F_PEM_READ_PRIVATEKEY 124 +# define PEM_F_PEM_SIGNFINAL 112 +# define PEM_F_PEM_WRITE 113 +# define PEM_F_PEM_WRITE_BIO 114 +# define PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL 147 +# define PEM_F_PEM_WRITE_PRIVATEKEY 139 +# define PEM_F_PEM_X509_INFO_READ 115 +# define PEM_F_PEM_X509_INFO_READ_BIO 116 +# define PEM_F_PEM_X509_INFO_WRITE_BIO 117 + +/* + * PEM reason codes. + */ +# define PEM_R_BAD_BASE64_DECODE 100 +# define PEM_R_BAD_DECRYPT 101 +# define PEM_R_BAD_END_LINE 102 +# define PEM_R_BAD_IV_CHARS 103 +# define PEM_R_BAD_MAGIC_NUMBER 116 +# define PEM_R_BAD_PASSWORD_READ 104 +# define PEM_R_BAD_VERSION_NUMBER 117 +# define PEM_R_BIO_WRITE_FAILURE 118 +# define PEM_R_CIPHER_IS_NULL 127 +# define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +# define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 +# define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +# define PEM_R_HEADER_TOO_LONG 128 +# define PEM_R_INCONSISTENT_HEADER 121 +# define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 +# define PEM_R_KEYBLOB_TOO_SHORT 123 +# define PEM_R_MISSING_DEK_IV 129 +# define PEM_R_NOT_DEK_INFO 105 +# define PEM_R_NOT_ENCRYPTED 106 +# define PEM_R_NOT_PROC_TYPE 107 +# define PEM_R_NO_START_LINE 108 +# define PEM_R_PROBLEMS_GETTING_PASSWORD 109 +# define PEM_R_PVK_DATA_TOO_SHORT 124 +# define PEM_R_PVK_TOO_SHORT 125 +# define PEM_R_READ_KEY 111 +# define PEM_R_SHORT_HEADER 112 +# define PEM_R_UNEXPECTED_DEK_IV 130 +# define PEM_R_UNSUPPORTED_CIPHER 113 +# define PEM_R_UNSUPPORTED_ENCRYPTION 114 +# define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 +# define PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE 110 + +#endif diff --git a/openSSL/lin64/include/openssl/pkcs12.h b/openSSL/lin64/include/openssl/pkcs12.h new file mode 100644 index 0000000..3f43dad --- /dev/null +++ b/openSSL/lin64/include/openssl/pkcs12.h @@ -0,0 +1,223 @@ +/* + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS12_H +# define HEADER_PKCS12_H + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define PKCS12_KEY_ID 1 +# define PKCS12_IV_ID 2 +# define PKCS12_MAC_ID 3 + +/* Default iteration count */ +# ifndef PKCS12_DEFAULT_ITER +# define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER +# endif + +# define PKCS12_MAC_KEY_LENGTH 20 + +# define PKCS12_SALT_LEN 8 + +/* It's not clear if these are actually needed... */ +# define PKCS12_key_gen PKCS12_key_gen_utf8 +# define PKCS12_add_friendlyname PKCS12_add_friendlyname_utf8 + +/* MS key usage constants */ + +# define KEY_EX 0x10 +# define KEY_SIG 0x80 + +typedef struct PKCS12_MAC_DATA_st PKCS12_MAC_DATA; + +typedef struct PKCS12_st PKCS12; + +typedef struct PKCS12_SAFEBAG_st PKCS12_SAFEBAG; + +DEFINE_STACK_OF(PKCS12_SAFEBAG) + +typedef struct pkcs12_bag_st PKCS12_BAGS; + +# define PKCS12_ERROR 0 +# define PKCS12_OK 1 + +/* Compatibility macros */ + +#if OPENSSL_API_COMPAT < 0x10100000L + +# define M_PKCS12_bag_type PKCS12_bag_type +# define M_PKCS12_cert_bag_type PKCS12_cert_bag_type +# define M_PKCS12_crl_bag_type PKCS12_cert_bag_type + +# define PKCS12_certbag2x509 PKCS12_SAFEBAG_get1_cert +# define PKCS12_certbag2scrl PKCS12_SAFEBAG_get1_crl +# define PKCS12_bag_type PKCS12_SAFEBAG_get_nid +# define PKCS12_cert_bag_type PKCS12_SAFEBAG_get_bag_nid +# define PKCS12_x5092certbag PKCS12_SAFEBAG_create_cert +# define PKCS12_x509crl2certbag PKCS12_SAFEBAG_create_crl +# define PKCS12_MAKE_KEYBAG PKCS12_SAFEBAG_create0_p8inf +# define PKCS12_MAKE_SHKEYBAG PKCS12_SAFEBAG_create_pkcs8_encrypt + +#endif + +DEPRECATEDIN_1_1_0(ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, int attr_nid)) + +ASN1_TYPE *PKCS8_get_attr(PKCS8_PRIV_KEY_INFO *p8, int attr_nid); +int PKCS12_mac_present(const PKCS12 *p12); +void PKCS12_get0_mac(const ASN1_OCTET_STRING **pmac, + const X509_ALGOR **pmacalg, + const ASN1_OCTET_STRING **psalt, + const ASN1_INTEGER **piter, + const PKCS12 *p12); + +const ASN1_TYPE *PKCS12_SAFEBAG_get0_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_type(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_nid(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); + +X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); +const STACK_OF(PKCS12_SAFEBAG) * +PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); +const PKCS8_PRIV_KEY_INFO *PKCS12_SAFEBAG_get0_p8inf(const PKCS12_SAFEBAG *bag); +const X509_SIG *PKCS12_SAFEBAG_get0_pkcs8(const PKCS12_SAFEBAG *bag); + +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_cert(X509 *x509); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_crl(X509_CRL *crl); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_p8inf(PKCS8_PRIV_KEY_INFO *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_pkcs8(X509_SIG *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf); + +PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, + int nid1, int nid2); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(const X509_SIG *p8, const char *pass, + int passlen); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen); +X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8); +X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); +PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7); +PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, + int passlen); + +int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes); +STACK_OF(PKCS7) *PKCS12_unpack_authsafes(const PKCS12 *p12); + +int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, + int namelen); +int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_utf8(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag, + const unsigned char *name, int namelen); +int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage); +ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, + int attr_nid); +char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); +const STACK_OF(X509_ATTRIBUTE) * +PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de); +void *PKCS12_item_decrypt_d2i(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf); +PKCS12 *PKCS12_init(int mode); +int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_utf8(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de); +int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *mac, unsigned int *maclen); +int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); +int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type); +int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, + int saltlen, const EVP_MD *md_type); +unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2asc(const unsigned char *uni, int unilen); +unsigned char *OPENSSL_utf82uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2utf8(const unsigned char *uni, int unilen); + +DECLARE_ASN1_FUNCTIONS(PKCS12) +DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA) +DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG) +DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS) + +DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS) +DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) + +void PKCS12_PBE_add(void); +int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, + STACK_OF(X509) **ca); +PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype); + +PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); +PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass); +int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass); +PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); + +int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12); +# ifndef OPENSSL_NO_STDIO +int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12); +# endif +PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); +# ifndef OPENSSL_NO_STDIO +PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); +# endif +int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/pkcs12err.h b/openSSL/lin64/include/openssl/pkcs12err.h new file mode 100644 index 0000000..eff5eb2 --- /dev/null +++ b/openSSL/lin64/include/openssl/pkcs12err.h @@ -0,0 +1,81 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS12ERR_H +# define HEADER_PKCS12ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PKCS12_strings(void); + +/* + * PKCS12 function codes. + */ +# define PKCS12_F_OPENSSL_ASC2UNI 121 +# define PKCS12_F_OPENSSL_UNI2ASC 124 +# define PKCS12_F_OPENSSL_UNI2UTF8 127 +# define PKCS12_F_OPENSSL_UTF82UNI 129 +# define PKCS12_F_PKCS12_CREATE 105 +# define PKCS12_F_PKCS12_GEN_MAC 107 +# define PKCS12_F_PKCS12_INIT 109 +# define PKCS12_F_PKCS12_ITEM_DECRYPT_D2I 106 +# define PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT 108 +# define PKCS12_F_PKCS12_ITEM_PACK_SAFEBAG 117 +# define PKCS12_F_PKCS12_KEY_GEN_ASC 110 +# define PKCS12_F_PKCS12_KEY_GEN_UNI 111 +# define PKCS12_F_PKCS12_KEY_GEN_UTF8 116 +# define PKCS12_F_PKCS12_NEWPASS 128 +# define PKCS12_F_PKCS12_PACK_P7DATA 114 +# define PKCS12_F_PKCS12_PACK_P7ENCDATA 115 +# define PKCS12_F_PKCS12_PARSE 118 +# define PKCS12_F_PKCS12_PBE_CRYPT 119 +# define PKCS12_F_PKCS12_PBE_KEYIVGEN 120 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE0_P8INF 112 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE0_PKCS8 113 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE_PKCS8_ENCRYPT 133 +# define PKCS12_F_PKCS12_SETUP_MAC 122 +# define PKCS12_F_PKCS12_SET_MAC 123 +# define PKCS12_F_PKCS12_UNPACK_AUTHSAFES 130 +# define PKCS12_F_PKCS12_UNPACK_P7DATA 131 +# define PKCS12_F_PKCS12_VERIFY_MAC 126 +# define PKCS12_F_PKCS8_ENCRYPT 125 +# define PKCS12_F_PKCS8_SET0_PBE 132 + +/* + * PKCS12 reason codes. + */ +# define PKCS12_R_CANT_PACK_STRUCTURE 100 +# define PKCS12_R_CONTENT_TYPE_NOT_DATA 121 +# define PKCS12_R_DECODE_ERROR 101 +# define PKCS12_R_ENCODE_ERROR 102 +# define PKCS12_R_ENCRYPT_ERROR 103 +# define PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE 120 +# define PKCS12_R_INVALID_NULL_ARGUMENT 104 +# define PKCS12_R_INVALID_NULL_PKCS12_POINTER 105 +# define PKCS12_R_IV_GEN_ERROR 106 +# define PKCS12_R_KEY_GEN_ERROR 107 +# define PKCS12_R_MAC_ABSENT 108 +# define PKCS12_R_MAC_GENERATION_ERROR 109 +# define PKCS12_R_MAC_SETUP_ERROR 110 +# define PKCS12_R_MAC_STRING_SET_ERROR 111 +# define PKCS12_R_MAC_VERIFY_FAILURE 113 +# define PKCS12_R_PARSE_ERROR 114 +# define PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR 115 +# define PKCS12_R_PKCS12_CIPHERFINAL_ERROR 116 +# define PKCS12_R_PKCS12_PBE_CRYPT_ERROR 117 +# define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118 +# define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119 + +#endif diff --git a/openSSL/lin64/include/openssl/pkcs7.h b/openSSL/lin64/include/openssl/pkcs7.h new file mode 100644 index 0000000..9b66e00 --- /dev/null +++ b/openSSL/lin64/include/openssl/pkcs7.h @@ -0,0 +1,319 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS7_H +# define HEADER_PKCS7_H + +# include +# include +# include + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +Encryption_ID DES-CBC +Digest_ID MD5 +Digest_Encryption_ID rsaEncryption +Key_Encryption_ID rsaEncryption +*/ + +typedef struct pkcs7_issuer_and_serial_st { + X509_NAME *issuer; + ASN1_INTEGER *serial; +} PKCS7_ISSUER_AND_SERIAL; + +typedef struct pkcs7_signer_info_st { + ASN1_INTEGER *version; /* version 1 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *digest_alg; + STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */ + X509_ALGOR *digest_enc_alg; + ASN1_OCTET_STRING *enc_digest; + STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */ + /* The private key to sign with */ + EVP_PKEY *pkey; +} PKCS7_SIGNER_INFO; + +DEFINE_STACK_OF(PKCS7_SIGNER_INFO) + +typedef struct pkcs7_recip_info_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *key_enc_algor; + ASN1_OCTET_STRING *enc_key; + X509 *cert; /* get the pub-key from this */ +} PKCS7_RECIP_INFO; + +DEFINE_STACK_OF(PKCS7_RECIP_INFO) + +typedef struct pkcs7_signed_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + struct pkcs7_st *contents; +} PKCS7_SIGNED; +/* + * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about + * merging the two + */ + +typedef struct pkcs7_enc_content_st { + ASN1_OBJECT *content_type; + X509_ALGOR *algorithm; + ASN1_OCTET_STRING *enc_data; /* [ 0 ] */ + const EVP_CIPHER *cipher; +} PKCS7_ENC_CONTENT; + +typedef struct pkcs7_enveloped_st { + ASN1_INTEGER *version; /* version 0 */ + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENVELOPE; + +typedef struct pkcs7_signedandenveloped_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + PKCS7_ENC_CONTENT *enc_data; + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; +} PKCS7_SIGN_ENVELOPE; + +typedef struct pkcs7_digest_st { + ASN1_INTEGER *version; /* version 0 */ + X509_ALGOR *md; /* md used */ + struct pkcs7_st *contents; + ASN1_OCTET_STRING *digest; +} PKCS7_DIGEST; + +typedef struct pkcs7_encrypted_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENCRYPT; + +typedef struct pkcs7_st { + /* + * The following is non NULL if it contains ASN1 encoding of this + * structure + */ + unsigned char *asn1; + long length; +# define PKCS7_S_HEADER 0 +# define PKCS7_S_BODY 1 +# define PKCS7_S_TAIL 2 + int state; /* used during processing */ + int detached; + ASN1_OBJECT *type; + /* content as defined by the type */ + /* + * all encryption/message digests are applied to the 'contents', leaving + * out the 'type' field. + */ + union { + char *ptr; + /* NID_pkcs7_data */ + ASN1_OCTET_STRING *data; + /* NID_pkcs7_signed */ + PKCS7_SIGNED *sign; + /* NID_pkcs7_enveloped */ + PKCS7_ENVELOPE *enveloped; + /* NID_pkcs7_signedAndEnveloped */ + PKCS7_SIGN_ENVELOPE *signed_and_enveloped; + /* NID_pkcs7_digest */ + PKCS7_DIGEST *digest; + /* NID_pkcs7_encrypted */ + PKCS7_ENCRYPT *encrypted; + /* Anything else */ + ASN1_TYPE *other; + } d; +} PKCS7; + +DEFINE_STACK_OF(PKCS7) + +# define PKCS7_OP_SET_DETACHED_SIGNATURE 1 +# define PKCS7_OP_GET_DETACHED_SIGNATURE 2 + +# define PKCS7_get_signed_attributes(si) ((si)->auth_attr) +# define PKCS7_get_attributes(si) ((si)->unauth_attr) + +# define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed) +# define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted) +# define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped) +# define PKCS7_type_is_signedAndEnveloped(a) \ + (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped) +# define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) +# define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest) + +# define PKCS7_set_detached(p,v) \ + PKCS7_ctrl(p,PKCS7_OP_SET_DETACHED_SIGNATURE,v,NULL) +# define PKCS7_get_detached(p) \ + PKCS7_ctrl(p,PKCS7_OP_GET_DETACHED_SIGNATURE,0,NULL) + +# define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7)) + +/* S/MIME related flags */ + +# define PKCS7_TEXT 0x1 +# define PKCS7_NOCERTS 0x2 +# define PKCS7_NOSIGS 0x4 +# define PKCS7_NOCHAIN 0x8 +# define PKCS7_NOINTERN 0x10 +# define PKCS7_NOVERIFY 0x20 +# define PKCS7_DETACHED 0x40 +# define PKCS7_BINARY 0x80 +# define PKCS7_NOATTR 0x100 +# define PKCS7_NOSMIMECAP 0x200 +# define PKCS7_NOOLDMIMETYPE 0x400 +# define PKCS7_CRLFEOL 0x800 +# define PKCS7_STREAM 0x1000 +# define PKCS7_NOCRL 0x2000 +# define PKCS7_PARTIAL 0x4000 +# define PKCS7_REUSE_DIGEST 0x8000 +# define PKCS7_NO_DUAL_CONTENT 0x10000 + +/* Flags: for compatibility with older code */ + +# define SMIME_TEXT PKCS7_TEXT +# define SMIME_NOCERTS PKCS7_NOCERTS +# define SMIME_NOSIGS PKCS7_NOSIGS +# define SMIME_NOCHAIN PKCS7_NOCHAIN +# define SMIME_NOINTERN PKCS7_NOINTERN +# define SMIME_NOVERIFY PKCS7_NOVERIFY +# define SMIME_DETACHED PKCS7_DETACHED +# define SMIME_BINARY PKCS7_BINARY +# define SMIME_NOATTR PKCS7_NOATTR + +/* CRLF ASCII canonicalisation */ +# define SMIME_ASCIICRLF 0x80000 + +DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) + +int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, + const EVP_MD *type, unsigned char *md, + unsigned int *len); +# ifndef OPENSSL_NO_STDIO +PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7); +int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7); +# endif +PKCS7 *PKCS7_dup(PKCS7 *p7); +PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); +int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7); +int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); +int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); + +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) +DECLARE_ASN1_FUNCTIONS(PKCS7) + +DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN) +DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY) + +DECLARE_ASN1_NDEF_FUNCTION(PKCS7) +DECLARE_ASN1_PRINT_FUNCTION(PKCS7) + +long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); + +int PKCS7_set_type(PKCS7 *p7, int type); +int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other); +int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); +int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, + const EVP_MD *dgst); +int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); +int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); +int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_content_new(PKCS7 *p7, int nid); +int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, + BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, + X509 *x509); + +BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); +int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); +BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert); + +PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, + EVP_PKEY *pkey, const EVP_MD *dgst); +X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md); +STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7); + +PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); +void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk, + X509_ALGOR **pdig, X509_ALGOR **psig); +void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc); +int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); +int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); +int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); +int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7); + +PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); +ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type, + void *data); +int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype, + void *value); +ASN1_TYPE *PKCS7_get_attribute(PKCS7_SIGNER_INFO *si, int nid); +ASN1_TYPE *PKCS7_get_signed_attribute(PKCS7_SIGNER_INFO *si, int nid); +int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); + +PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags); + +PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, + X509 *signcert, EVP_PKEY *pkey, + const EVP_MD *md, int flags); + +int PKCS7_final(PKCS7 *p7, BIO *data, int flags); +int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, + BIO *indata, BIO *out, int flags); +STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, + int flags); +PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, + int flags); +int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, + int flags); + +int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, + STACK_OF(X509_ALGOR) *cap); +STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); +int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg); + +int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid); +int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t); +int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, + const unsigned char *md, int mdlen); + +int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); +PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); + +BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/pkcs7err.h b/openSSL/lin64/include/openssl/pkcs7err.h new file mode 100644 index 0000000..02e0299 --- /dev/null +++ b/openSSL/lin64/include/openssl/pkcs7err.h @@ -0,0 +1,103 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS7ERR_H +# define HEADER_PKCS7ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PKCS7_strings(void); + +/* + * PKCS7 function codes. + */ +# define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 136 +# define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 135 +# define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 118 +# define PKCS7_F_PKCS7_ADD_CERTIFICATE 100 +# define PKCS7_F_PKCS7_ADD_CRL 101 +# define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102 +# define PKCS7_F_PKCS7_ADD_SIGNATURE 131 +# define PKCS7_F_PKCS7_ADD_SIGNER 103 +# define PKCS7_F_PKCS7_BIO_ADD_DIGEST 125 +# define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 138 +# define PKCS7_F_PKCS7_CTRL 104 +# define PKCS7_F_PKCS7_DATADECODE 112 +# define PKCS7_F_PKCS7_DATAFINAL 128 +# define PKCS7_F_PKCS7_DATAINIT 105 +# define PKCS7_F_PKCS7_DATAVERIFY 107 +# define PKCS7_F_PKCS7_DECRYPT 114 +# define PKCS7_F_PKCS7_DECRYPT_RINFO 133 +# define PKCS7_F_PKCS7_ENCODE_RINFO 132 +# define PKCS7_F_PKCS7_ENCRYPT 115 +# define PKCS7_F_PKCS7_FINAL 134 +# define PKCS7_F_PKCS7_FIND_DIGEST 127 +# define PKCS7_F_PKCS7_GET0_SIGNERS 124 +# define PKCS7_F_PKCS7_RECIP_INFO_SET 130 +# define PKCS7_F_PKCS7_SET_CIPHER 108 +# define PKCS7_F_PKCS7_SET_CONTENT 109 +# define PKCS7_F_PKCS7_SET_DIGEST 126 +# define PKCS7_F_PKCS7_SET_TYPE 110 +# define PKCS7_F_PKCS7_SIGN 116 +# define PKCS7_F_PKCS7_SIGNATUREVERIFY 113 +# define PKCS7_F_PKCS7_SIGNER_INFO_SET 129 +# define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 139 +# define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 137 +# define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 119 +# define PKCS7_F_PKCS7_VERIFY 117 + +/* + * PKCS7 reason codes. + */ +# define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117 +# define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144 +# define PKCS7_R_CIPHER_NOT_INITIALIZED 116 +# define PKCS7_R_CONTENT_AND_DATA_PRESENT 118 +# define PKCS7_R_CTRL_ERROR 152 +# define PKCS7_R_DECRYPT_ERROR 119 +# define PKCS7_R_DIGEST_FAILURE 101 +# define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149 +# define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150 +# define PKCS7_R_ERROR_ADDING_RECIPIENT 120 +# define PKCS7_R_ERROR_SETTING_CIPHER 121 +# define PKCS7_R_INVALID_NULL_POINTER 143 +# define PKCS7_R_INVALID_SIGNED_DATA_TYPE 155 +# define PKCS7_R_NO_CONTENT 122 +# define PKCS7_R_NO_DEFAULT_DIGEST 151 +# define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154 +# define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115 +# define PKCS7_R_NO_SIGNATURES_ON_DATA 123 +# define PKCS7_R_NO_SIGNERS 142 +# define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104 +# define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124 +# define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153 +# define PKCS7_R_PKCS7_DATASIGN 145 +# define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127 +# define PKCS7_R_SIGNATURE_FAILURE 105 +# define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128 +# define PKCS7_R_SIGNING_CTRL_FAILURE 147 +# define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148 +# define PKCS7_R_SMIME_TEXT_ERROR 129 +# define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106 +# define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107 +# define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108 +# define PKCS7_R_UNKNOWN_DIGEST_TYPE 109 +# define PKCS7_R_UNKNOWN_OPERATION 110 +# define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111 +# define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112 +# define PKCS7_R_WRONG_CONTENT_TYPE 113 +# define PKCS7_R_WRONG_PKCS7_TYPE 114 + +#endif diff --git a/openSSL/lin64/include/openssl/rand.h b/openSSL/lin64/include/openssl/rand.h new file mode 100644 index 0000000..38a2a27 --- /dev/null +++ b/openSSL/lin64/include/openssl/rand.h @@ -0,0 +1,77 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RAND_H +# define HEADER_RAND_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +struct rand_meth_st { + int (*seed) (const void *buf, int num); + int (*bytes) (unsigned char *buf, int num); + void (*cleanup) (void); + int (*add) (const void *buf, int num, double randomness); + int (*pseudorand) (unsigned char *buf, int num); + int (*status) (void); +}; + +int RAND_set_rand_method(const RAND_METHOD *meth); +const RAND_METHOD *RAND_get_rand_method(void); +# ifndef OPENSSL_NO_ENGINE +int RAND_set_rand_engine(ENGINE *engine); +# endif + +RAND_METHOD *RAND_OpenSSL(void); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define RAND_cleanup() while(0) continue +# endif +int RAND_bytes(unsigned char *buf, int num); +int RAND_priv_bytes(unsigned char *buf, int num); +DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num)) + +void RAND_seed(const void *buf, int num); +void RAND_keep_random_devices_open(int keep); + +# if defined(__ANDROID__) && defined(__NDK_FPABI__) +__NDK_FPABI__ /* __attribute__((pcs("aapcs"))) on ARM */ +# endif +void RAND_add(const void *buf, int num, double randomness); +int RAND_load_file(const char *file, long max_bytes); +int RAND_write_file(const char *file); +const char *RAND_file_name(char *file, size_t num); +int RAND_status(void); + +# ifndef OPENSSL_NO_EGD +int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes); +int RAND_egd(const char *path); +int RAND_egd_bytes(const char *path, int bytes); +# endif + +int RAND_poll(void); + +# if defined(_WIN32) && (defined(BASETYPES) || defined(_WINDEF_H)) +/* application has to include in order to use these */ +DEPRECATEDIN_1_1_0(void RAND_screen(void)) +DEPRECATEDIN_1_1_0(int RAND_event(UINT, WPARAM, LPARAM)) +# endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin64/include/openssl/rand_drbg.h b/openSSL/lin64/include/openssl/rand_drbg.h new file mode 100644 index 0000000..45b731b --- /dev/null +++ b/openSSL/lin64/include/openssl/rand_drbg.h @@ -0,0 +1,130 @@ +/* + * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DRBG_RAND_H +# define HEADER_DRBG_RAND_H + +# include +# include +# include + +/* + * RAND_DRBG flags + * + * Note: if new flags are added, the constant `rand_drbg_used_flags` + * in drbg_lib.c needs to be updated accordingly. + */ + +/* In CTR mode, disable derivation function ctr_df */ +# define RAND_DRBG_FLAG_CTR_NO_DF 0x1 + + +# if OPENSSL_API_COMPAT < 0x10200000L +/* This #define was replaced by an internal constant and should not be used. */ +# define RAND_DRBG_USED_FLAGS (RAND_DRBG_FLAG_CTR_NO_DF) +# endif + +/* + * Default security strength (in the sense of [NIST SP 800-90Ar1]) + * + * NIST SP 800-90Ar1 supports the strength of the DRBG being smaller than that + * of the cipher by collecting less entropy. The current DRBG implementation + * does not take RAND_DRBG_STRENGTH into account and sets the strength of the + * DRBG to that of the cipher. + * + * RAND_DRBG_STRENGTH is currently only used for the legacy RAND + * implementation. + * + * Currently supported ciphers are: NID_aes_128_ctr, NID_aes_192_ctr and + * NID_aes_256_ctr + */ +# define RAND_DRBG_STRENGTH 256 +/* Default drbg type */ +# define RAND_DRBG_TYPE NID_aes_256_ctr +/* Default drbg flags */ +# define RAND_DRBG_FLAGS 0 + + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * Object lifetime functions. + */ +RAND_DRBG *RAND_DRBG_new(int type, unsigned int flags, RAND_DRBG *parent); +RAND_DRBG *RAND_DRBG_secure_new(int type, unsigned int flags, RAND_DRBG *parent); +int RAND_DRBG_set(RAND_DRBG *drbg, int type, unsigned int flags); +int RAND_DRBG_set_defaults(int type, unsigned int flags); +int RAND_DRBG_instantiate(RAND_DRBG *drbg, + const unsigned char *pers, size_t perslen); +int RAND_DRBG_uninstantiate(RAND_DRBG *drbg); +void RAND_DRBG_free(RAND_DRBG *drbg); + +/* + * Object "use" functions. + */ +int RAND_DRBG_reseed(RAND_DRBG *drbg, + const unsigned char *adin, size_t adinlen, + int prediction_resistance); +int RAND_DRBG_generate(RAND_DRBG *drbg, unsigned char *out, size_t outlen, + int prediction_resistance, + const unsigned char *adin, size_t adinlen); +int RAND_DRBG_bytes(RAND_DRBG *drbg, unsigned char *out, size_t outlen); + +int RAND_DRBG_set_reseed_interval(RAND_DRBG *drbg, unsigned int interval); +int RAND_DRBG_set_reseed_time_interval(RAND_DRBG *drbg, time_t interval); + +int RAND_DRBG_set_reseed_defaults( + unsigned int master_reseed_interval, + unsigned int slave_reseed_interval, + time_t master_reseed_time_interval, + time_t slave_reseed_time_interval + ); + +RAND_DRBG *RAND_DRBG_get0_master(void); +RAND_DRBG *RAND_DRBG_get0_public(void); +RAND_DRBG *RAND_DRBG_get0_private(void); + +/* + * EXDATA + */ +# define RAND_DRBG_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DRBG, l, p, newf, dupf, freef) +int RAND_DRBG_set_ex_data(RAND_DRBG *drbg, int idx, void *arg); +void *RAND_DRBG_get_ex_data(const RAND_DRBG *drbg, int idx); + +/* + * Callback function typedefs + */ +typedef size_t (*RAND_DRBG_get_entropy_fn)(RAND_DRBG *drbg, + unsigned char **pout, + int entropy, size_t min_len, + size_t max_len, + int prediction_resistance); +typedef void (*RAND_DRBG_cleanup_entropy_fn)(RAND_DRBG *ctx, + unsigned char *out, size_t outlen); +typedef size_t (*RAND_DRBG_get_nonce_fn)(RAND_DRBG *drbg, unsigned char **pout, + int entropy, size_t min_len, + size_t max_len); +typedef void (*RAND_DRBG_cleanup_nonce_fn)(RAND_DRBG *drbg, + unsigned char *out, size_t outlen); + +int RAND_DRBG_set_callbacks(RAND_DRBG *drbg, + RAND_DRBG_get_entropy_fn get_entropy, + RAND_DRBG_cleanup_entropy_fn cleanup_entropy, + RAND_DRBG_get_nonce_fn get_nonce, + RAND_DRBG_cleanup_nonce_fn cleanup_nonce); + + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/randerr.h b/openSSL/lin64/include/openssl/randerr.h new file mode 100644 index 0000000..79d5790 --- /dev/null +++ b/openSSL/lin64/include/openssl/randerr.h @@ -0,0 +1,94 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RANDERR_H +# define HEADER_RANDERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_RAND_strings(void); + +/* + * RAND function codes. + */ +# define RAND_F_DATA_COLLECT_METHOD 127 +# define RAND_F_DRBG_BYTES 101 +# define RAND_F_DRBG_GET_ENTROPY 105 +# define RAND_F_DRBG_SETUP 117 +# define RAND_F_GET_ENTROPY 106 +# define RAND_F_RAND_BYTES 100 +# define RAND_F_RAND_DRBG_ENABLE_LOCKING 119 +# define RAND_F_RAND_DRBG_GENERATE 107 +# define RAND_F_RAND_DRBG_GET_ENTROPY 120 +# define RAND_F_RAND_DRBG_GET_NONCE 123 +# define RAND_F_RAND_DRBG_INSTANTIATE 108 +# define RAND_F_RAND_DRBG_NEW 109 +# define RAND_F_RAND_DRBG_RESEED 110 +# define RAND_F_RAND_DRBG_RESTART 102 +# define RAND_F_RAND_DRBG_SET 104 +# define RAND_F_RAND_DRBG_SET_DEFAULTS 121 +# define RAND_F_RAND_DRBG_UNINSTANTIATE 118 +# define RAND_F_RAND_LOAD_FILE 111 +# define RAND_F_RAND_POOL_ACQUIRE_ENTROPY 122 +# define RAND_F_RAND_POOL_ADD 103 +# define RAND_F_RAND_POOL_ADD_BEGIN 113 +# define RAND_F_RAND_POOL_ADD_END 114 +# define RAND_F_RAND_POOL_ATTACH 124 +# define RAND_F_RAND_POOL_BYTES_NEEDED 115 +# define RAND_F_RAND_POOL_GROW 125 +# define RAND_F_RAND_POOL_NEW 116 +# define RAND_F_RAND_PSEUDO_BYTES 126 +# define RAND_F_RAND_WRITE_FILE 112 + +/* + * RAND reason codes. + */ +# define RAND_R_ADDITIONAL_INPUT_TOO_LONG 102 +# define RAND_R_ALREADY_INSTANTIATED 103 +# define RAND_R_ARGUMENT_OUT_OF_RANGE 105 +# define RAND_R_CANNOT_OPEN_FILE 121 +# define RAND_R_DRBG_ALREADY_INITIALIZED 129 +# define RAND_R_DRBG_NOT_INITIALISED 104 +# define RAND_R_ENTROPY_INPUT_TOO_LONG 106 +# define RAND_R_ENTROPY_OUT_OF_RANGE 124 +# define RAND_R_ERROR_ENTROPY_POOL_WAS_IGNORED 127 +# define RAND_R_ERROR_INITIALISING_DRBG 107 +# define RAND_R_ERROR_INSTANTIATING_DRBG 108 +# define RAND_R_ERROR_RETRIEVING_ADDITIONAL_INPUT 109 +# define RAND_R_ERROR_RETRIEVING_ENTROPY 110 +# define RAND_R_ERROR_RETRIEVING_NONCE 111 +# define RAND_R_FAILED_TO_CREATE_LOCK 126 +# define RAND_R_FUNC_NOT_IMPLEMENTED 101 +# define RAND_R_FWRITE_ERROR 123 +# define RAND_R_GENERATE_ERROR 112 +# define RAND_R_INTERNAL_ERROR 113 +# define RAND_R_IN_ERROR_STATE 114 +# define RAND_R_NOT_A_REGULAR_FILE 122 +# define RAND_R_NOT_INSTANTIATED 115 +# define RAND_R_NO_DRBG_IMPLEMENTATION_SELECTED 128 +# define RAND_R_PARENT_LOCKING_NOT_ENABLED 130 +# define RAND_R_PARENT_STRENGTH_TOO_WEAK 131 +# define RAND_R_PERSONALISATION_STRING_TOO_LONG 116 +# define RAND_R_PREDICTION_RESISTANCE_NOT_SUPPORTED 133 +# define RAND_R_PRNG_NOT_SEEDED 100 +# define RAND_R_RANDOM_POOL_OVERFLOW 125 +# define RAND_R_RANDOM_POOL_UNDERFLOW 134 +# define RAND_R_REQUEST_TOO_LARGE_FOR_DRBG 117 +# define RAND_R_RESEED_ERROR 118 +# define RAND_R_SELFTEST_FAILURE 119 +# define RAND_R_TOO_LITTLE_NONCE_REQUESTED 135 +# define RAND_R_TOO_MUCH_NONCE_REQUESTED 136 +# define RAND_R_UNSUPPORTED_DRBG_FLAGS 132 +# define RAND_R_UNSUPPORTED_DRBG_TYPE 120 + +#endif diff --git a/openSSL/lin64/include/openssl/rc2.h b/openSSL/lin64/include/openssl/rc2.h new file mode 100644 index 0000000..585f9e4 --- /dev/null +++ b/openSSL/lin64/include/openssl/rc2.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC2_H +# define HEADER_RC2_H + +# include + +# ifndef OPENSSL_NO_RC2 +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned int RC2_INT; + +# define RC2_ENCRYPT 1 +# define RC2_DECRYPT 0 + +# define RC2_BLOCK 8 +# define RC2_KEY_LENGTH 16 + +typedef struct rc2_key_st { + RC2_INT data[64]; +} RC2_KEY; + +void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits); +void RC2_ecb_encrypt(const unsigned char *in, unsigned char *out, + RC2_KEY *key, int enc); +void RC2_encrypt(unsigned long *data, RC2_KEY *key); +void RC2_decrypt(unsigned long *data, RC2_KEY *key); +void RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, + RC2_KEY *ks, unsigned char *iv, int enc); +void RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC2_KEY *schedule, unsigned char *ivec, + int *num, int enc); +void RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC2_KEY *schedule, unsigned char *ivec, + int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/rc4.h b/openSSL/lin64/include/openssl/rc4.h new file mode 100644 index 0000000..86803b3 --- /dev/null +++ b/openSSL/lin64/include/openssl/rc4.h @@ -0,0 +1,36 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC4_H +# define HEADER_RC4_H + +# include + +# ifndef OPENSSL_NO_RC4 +# include +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct rc4_key_st { + RC4_INT x, y; + RC4_INT data[256]; +} RC4_KEY; + +const char *RC4_options(void); +void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data); +void RC4(RC4_KEY *key, size_t len, const unsigned char *indata, + unsigned char *outdata); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/rc5.h b/openSSL/lin64/include/openssl/rc5.h new file mode 100644 index 0000000..793f88e --- /dev/null +++ b/openSSL/lin64/include/openssl/rc5.h @@ -0,0 +1,63 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC5_H +# define HEADER_RC5_H + +# include + +# ifndef OPENSSL_NO_RC5 +# ifdef __cplusplus +extern "C" { +# endif + +# define RC5_ENCRYPT 1 +# define RC5_DECRYPT 0 + +# define RC5_32_INT unsigned int + +# define RC5_32_BLOCK 8 +# define RC5_32_KEY_LENGTH 16/* This is a default, max is 255 */ + +/* + * This are the only values supported. Tweak the code if you want more The + * most supported modes will be RC5-32/12/16 RC5-32/16/8 + */ +# define RC5_8_ROUNDS 8 +# define RC5_12_ROUNDS 12 +# define RC5_16_ROUNDS 16 + +typedef struct rc5_key_st { + /* Number of rounds */ + int rounds; + RC5_32_INT data[2 * (RC5_16_ROUNDS + 1)]; +} RC5_32_KEY; + +void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data, + int rounds); +void RC5_32_ecb_encrypt(const unsigned char *in, unsigned char *out, + RC5_32_KEY *key, int enc); +void RC5_32_encrypt(unsigned long *data, RC5_32_KEY *key); +void RC5_32_decrypt(unsigned long *data, RC5_32_KEY *key); +void RC5_32_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *ks, unsigned char *iv, + int enc); +void RC5_32_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void RC5_32_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *schedule, + unsigned char *ivec, int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/ripemd.h b/openSSL/lin64/include/openssl/ripemd.h new file mode 100644 index 0000000..c42026a --- /dev/null +++ b/openSSL/lin64/include/openssl/ripemd.h @@ -0,0 +1,47 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RIPEMD_H +# define HEADER_RIPEMD_H + +# include + +#ifndef OPENSSL_NO_RMD160 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define RIPEMD160_LONG unsigned int + +# define RIPEMD160_CBLOCK 64 +# define RIPEMD160_LBLOCK (RIPEMD160_CBLOCK/4) +# define RIPEMD160_DIGEST_LENGTH 20 + +typedef struct RIPEMD160state_st { + RIPEMD160_LONG A, B, C, D, E; + RIPEMD160_LONG Nl, Nh; + RIPEMD160_LONG data[RIPEMD160_LBLOCK]; + unsigned int num; +} RIPEMD160_CTX; + +int RIPEMD160_Init(RIPEMD160_CTX *c); +int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, size_t len); +int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); +unsigned char *RIPEMD160(const unsigned char *d, size_t n, unsigned char *md); +void RIPEMD160_Transform(RIPEMD160_CTX *c, const unsigned char *b); + +# ifdef __cplusplus +} +# endif +# endif + + +#endif diff --git a/openSSL/lin64/include/openssl/rsa.h b/openSSL/lin64/include/openssl/rsa.h new file mode 100644 index 0000000..5e76365 --- /dev/null +++ b/openSSL/lin64/include/openssl/rsa.h @@ -0,0 +1,513 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RSA_H +# define HEADER_RSA_H + +# include + +# ifndef OPENSSL_NO_RSA +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* The types RSA and RSA_METHOD are defined in ossl_typ.h */ + +# ifndef OPENSSL_RSA_MAX_MODULUS_BITS +# define OPENSSL_RSA_MAX_MODULUS_BITS 16384 +# endif + +# define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 1024 + +# ifndef OPENSSL_RSA_SMALL_MODULUS_BITS +# define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 +# endif +# ifndef OPENSSL_RSA_MAX_PUBEXP_BITS + +/* exponent limit enforced for "large" modulus only */ +# define OPENSSL_RSA_MAX_PUBEXP_BITS 64 +# endif + +# define RSA_3 0x3L +# define RSA_F4 0x10001L + +/* based on RFC 8017 appendix A.1.2 */ +# define RSA_ASN1_VERSION_DEFAULT 0 +# define RSA_ASN1_VERSION_MULTI 1 + +# define RSA_DEFAULT_PRIME_NUM 2 + +# define RSA_METHOD_FLAG_NO_CHECK 0x0001/* don't check pub/private + * match */ + +# define RSA_FLAG_CACHE_PUBLIC 0x0002 +# define RSA_FLAG_CACHE_PRIVATE 0x0004 +# define RSA_FLAG_BLINDING 0x0008 +# define RSA_FLAG_THREAD_SAFE 0x0010 +/* + * This flag means the private key operations will be handled by rsa_mod_exp + * and that they do not depend on the private key components being present: + * for example a key stored in external hardware. Without this flag + * bn_mod_exp gets called when private key components are absent. + */ +# define RSA_FLAG_EXT_PKEY 0x0020 + +/* + * new with 0.9.6j and 0.9.7b; the built-in + * RSA implementation now uses blinding by + * default (ignoring RSA_FLAG_BLINDING), + * but other engines might not need it + */ +# define RSA_FLAG_NO_BLINDING 0x0080 +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define RSA_FLAG_NO_CONSTTIME 0x0000 +# endif +# if OPENSSL_API_COMPAT < 0x00908000L +/* deprecated name for the flag*/ +/* + * new with 0.9.7h; the built-in RSA + * implementation now uses constant time + * modular exponentiation for secret exponents + * by default. This flag causes the + * faster variable sliding window method to + * be used for all exponents. + */ +# define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME +# endif + +# define EVP_PKEY_CTX_set_rsa_padding(ctx, pad) \ + RSA_pkey_ctx_ctrl(ctx, -1, EVP_PKEY_CTRL_RSA_PADDING, pad, NULL) + +# define EVP_PKEY_CTX_get_rsa_padding(ctx, ppad) \ + RSA_pkey_ctx_ctrl(ctx, -1, EVP_PKEY_CTRL_GET_RSA_PADDING, 0, ppad) + +# define EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, len) \ + RSA_pkey_ctx_ctrl(ctx, (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ + EVP_PKEY_CTRL_RSA_PSS_SALTLEN, len, NULL) +/* Salt length matches digest */ +# define RSA_PSS_SALTLEN_DIGEST -1 +/* Verify only: auto detect salt length */ +# define RSA_PSS_SALTLEN_AUTO -2 +/* Set salt length to maximum possible */ +# define RSA_PSS_SALTLEN_MAX -3 +/* Old compatible max salt length for sign only */ +# define RSA_PSS_SALTLEN_MAX_SIGN -2 + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_PSS_SALTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_rsa_pss_saltlen(ctx, plen) \ + RSA_pkey_ctx_ctrl(ctx, (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ + EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN, 0, plen) + +# define EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, bits) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_BITS, bits, NULL) + +# define EVP_PKEY_CTX_set_rsa_keygen_pubexp(ctx, pubexp) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP, 0, pubexp) + +# define EVP_PKEY_CTX_set_rsa_keygen_primes(ctx, primes) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES, primes, NULL) + +# define EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_MGF1_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_MGF1_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set_rsa_oaep_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_OAEP_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_rsa_mgf1_md(ctx, pmd) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_MGF1_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_get_rsa_oaep_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_OAEP_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set0_rsa_oaep_label(ctx, l, llen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_OAEP_LABEL, llen, (void *)(l)) + +# define EVP_PKEY_CTX_get0_rsa_oaep_label(ctx, l) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL, 0, (void *)(l)) + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, \ + EVP_PKEY_OP_KEYGEN, EVP_PKEY_CTRL_MD, \ + 0, (void *)(md)) + +# define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5) + +# define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8) + +# define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 10) + +# define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 12) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) + +# define RSA_PKCS1_PADDING 1 +# define RSA_SSLV23_PADDING 2 +# define RSA_NO_PADDING 3 +# define RSA_PKCS1_OAEP_PADDING 4 +# define RSA_X931_PADDING 5 +/* EVP_PKEY_ only */ +# define RSA_PKCS1_PSS_PADDING 6 + +# define RSA_PKCS1_PADDING_SIZE 11 + +# define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg) +# define RSA_get_app_data(s) RSA_get_ex_data(s,0) + +RSA *RSA_new(void); +RSA *RSA_new_method(ENGINE *engine); +int RSA_bits(const RSA *rsa); +int RSA_size(const RSA *rsa); +int RSA_security_bits(const RSA *rsa); + +int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); +int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); +int RSA_set0_crt_params(RSA *r,BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp); +int RSA_set0_multi_prime_params(RSA *r, BIGNUM *primes[], BIGNUM *exps[], + BIGNUM *coeffs[], int pnum); +void RSA_get0_key(const RSA *r, + const BIGNUM **n, const BIGNUM **e, const BIGNUM **d); +void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q); +int RSA_get_multi_prime_extra_count(const RSA *r); +int RSA_get0_multi_prime_factors(const RSA *r, const BIGNUM *primes[]); +void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, const BIGNUM **dmq1, + const BIGNUM **iqmp); +int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], + const BIGNUM *coeffs[]); +const BIGNUM *RSA_get0_n(const RSA *d); +const BIGNUM *RSA_get0_e(const RSA *d); +const BIGNUM *RSA_get0_d(const RSA *d); +const BIGNUM *RSA_get0_p(const RSA *d); +const BIGNUM *RSA_get0_q(const RSA *d); +const BIGNUM *RSA_get0_dmp1(const RSA *r); +const BIGNUM *RSA_get0_dmq1(const RSA *r); +const BIGNUM *RSA_get0_iqmp(const RSA *r); +const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); +void RSA_clear_flags(RSA *r, int flags); +int RSA_test_flags(const RSA *r, int flags); +void RSA_set_flags(RSA *r, int flags); +int RSA_get_version(RSA *r); +ENGINE *RSA_get0_engine(const RSA *r); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void + (*callback) (int, int, void *), + void *cb_arg)) + +/* New version */ +int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); +/* Multi-prime version */ +int RSA_generate_multi_prime_key(RSA *rsa, int bits, int primes, + BIGNUM *e, BN_GENCB *cb); + +int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, BIGNUM *q1, + BIGNUM *q2, const BIGNUM *Xp1, const BIGNUM *Xp2, + const BIGNUM *Xp, const BIGNUM *Xq1, const BIGNUM *Xq2, + const BIGNUM *Xq, const BIGNUM *e, BN_GENCB *cb); +int RSA_X931_generate_key_ex(RSA *rsa, int bits, const BIGNUM *e, + BN_GENCB *cb); + +int RSA_check_key(const RSA *); +int RSA_check_key_ex(const RSA *, BN_GENCB *cb); + /* next 4 return -1 on error */ +int RSA_public_encrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_private_encrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_public_decrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_private_decrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +void RSA_free(RSA *r); +/* "up" the RSA object's reference count */ +int RSA_up_ref(RSA *r); + +int RSA_flags(const RSA *r); + +void RSA_set_default_method(const RSA_METHOD *meth); +const RSA_METHOD *RSA_get_default_method(void); +const RSA_METHOD *RSA_null_method(void); +const RSA_METHOD *RSA_get_method(const RSA *rsa); +int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); + +/* these are the actual RSA functions */ +const RSA_METHOD *RSA_PKCS1_OpenSSL(void); + +int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey) + +struct rsa_pss_params_st { + X509_ALGOR *hashAlgorithm; + X509_ALGOR *maskGenAlgorithm; + ASN1_INTEGER *saltLength; + ASN1_INTEGER *trailerField; + /* Decoded hash algorithm from maskGenAlgorithm */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) + +typedef struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; + /* Decoded hash algorithm from maskGenFunc */ + X509_ALGOR *maskHash; +} RSA_OAEP_PARAMS; + +DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) + +# ifndef OPENSSL_NO_STDIO +int RSA_print_fp(FILE *fp, const RSA *r, int offset); +# endif + +int RSA_print(BIO *bp, const RSA *r, int offset); + +/* + * The following 2 functions sign and verify a X509_SIG ASN1 object inside + * PKCS#1 padded RSA encryption + */ +int RSA_sign(int type, const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, RSA *rsa); +int RSA_verify(int type, const unsigned char *m, unsigned int m_length, + const unsigned char *sigbuf, unsigned int siglen, RSA *rsa); + +/* + * The following 2 function sign and verify a ASN1_OCTET_STRING object inside + * PKCS#1 padded RSA encryption + */ +int RSA_sign_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + RSA *rsa); +int RSA_verify_ASN1_OCTET_STRING(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigbuf, + unsigned int siglen, RSA *rsa); + +int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); +void RSA_blinding_off(RSA *rsa); +BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); + +int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int PKCS1_MGF1(unsigned char *mask, long len, const unsigned char *seed, + long seedlen, const EVP_MD *dgst); +int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, + const unsigned char *p, int pl); +int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len, + const unsigned char *p, int pl); +int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + int num, const unsigned char *param, + int plen, const EVP_MD *md, + const EVP_MD *mgf1md); +int RSA_padding_add_SSLv23(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_SSLv23(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_padding_add_none(unsigned char *to, int tlen, const unsigned char *f, + int fl); +int RSA_padding_check_none(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_padding_add_X931(unsigned char *to, int tlen, const unsigned char *f, + int fl); +int RSA_padding_check_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_X931_hash_id(int nid); + +int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const unsigned char *EM, + int sLen); +int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, const EVP_MD *Hash, + int sLen); + +int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + const unsigned char *EM, int sLen); + +int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + int sLen); + +#define RSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, l, p, newf, dupf, freef) +int RSA_set_ex_data(RSA *r, int idx, void *arg); +void *RSA_get_ex_data(const RSA *r, int idx); + +RSA *RSAPublicKey_dup(RSA *rsa); +RSA *RSAPrivateKey_dup(RSA *rsa); + +/* + * If this flag is set the RSA method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define RSA_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define RSA_FLAG_NON_FIPS_ALLOW 0x0400 +/* + * Application has decided PRNG is good enough to generate a key: don't + * check. + */ +# define RSA_FLAG_CHECKED 0x0800 + +RSA_METHOD *RSA_meth_new(const char *name, int flags); +void RSA_meth_free(RSA_METHOD *meth); +RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); +const char *RSA_meth_get0_name(const RSA_METHOD *meth); +int RSA_meth_set1_name(RSA_METHOD *meth, const char *name); +int RSA_meth_get_flags(const RSA_METHOD *meth); +int RSA_meth_set_flags(RSA_METHOD *meth, int flags); +void *RSA_meth_get0_app_data(const RSA_METHOD *meth); +int RSA_meth_set0_app_data(RSA_METHOD *meth, void *app_data); +int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_pub_enc(RSA_METHOD *rsa, + int (*pub_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_pub_dec(RSA_METHOD *rsa, + int (*pub_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_priv_enc(RSA_METHOD *rsa, + int (*priv_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_priv_dec(RSA_METHOD *rsa, + int (*priv_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth)) + (BIGNUM *r0, const BIGNUM *i, RSA *rsa, BN_CTX *ctx); +int RSA_meth_set_mod_exp(RSA_METHOD *rsa, + int (*mod_exp) (BIGNUM *r0, const BIGNUM *i, RSA *rsa, + BN_CTX *ctx)); +int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth)) + (BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx)); +int (*RSA_meth_get_init(const RSA_METHOD *meth)) (RSA *rsa); +int RSA_meth_set_init(RSA_METHOD *rsa, int (*init) (RSA *rsa)); +int (*RSA_meth_get_finish(const RSA_METHOD *meth)) (RSA *rsa); +int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish) (RSA *rsa)); +int (*RSA_meth_get_sign(const RSA_METHOD *meth)) + (int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa); +int RSA_meth_set_sign(RSA_METHOD *rsa, + int (*sign) (int type, const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa)); +int (*RSA_meth_get_verify(const RSA_METHOD *meth)) + (int dtype, const unsigned char *m, + unsigned int m_length, const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa); +int RSA_meth_set_verify(RSA_METHOD *rsa, + int (*verify) (int dtype, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa)); +int (*RSA_meth_get_keygen(const RSA_METHOD *meth)) + (RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); +int RSA_meth_set_keygen(RSA_METHOD *rsa, + int (*keygen) (RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb)); +int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth)) + (RSA *rsa, int bits, int primes, BIGNUM *e, BN_GENCB *cb); +int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, + int (*keygen) (RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb)); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin64/include/openssl/rsaerr.h b/openSSL/lin64/include/openssl/rsaerr.h new file mode 100644 index 0000000..59b15e1 --- /dev/null +++ b/openSSL/lin64/include/openssl/rsaerr.h @@ -0,0 +1,167 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RSAERR_H +# define HEADER_RSAERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_RSA_strings(void); + +/* + * RSA function codes. + */ +# define RSA_F_CHECK_PADDING_MD 140 +# define RSA_F_ENCODE_PKCS1 146 +# define RSA_F_INT_RSA_VERIFY 145 +# define RSA_F_OLD_RSA_PRIV_DECODE 147 +# define RSA_F_PKEY_PSS_INIT 165 +# define RSA_F_PKEY_RSA_CTRL 143 +# define RSA_F_PKEY_RSA_CTRL_STR 144 +# define RSA_F_PKEY_RSA_SIGN 142 +# define RSA_F_PKEY_RSA_VERIFY 149 +# define RSA_F_PKEY_RSA_VERIFYRECOVER 141 +# define RSA_F_RSA_ALGOR_TO_MD 156 +# define RSA_F_RSA_BUILTIN_KEYGEN 129 +# define RSA_F_RSA_CHECK_KEY 123 +# define RSA_F_RSA_CHECK_KEY_EX 160 +# define RSA_F_RSA_CMS_DECRYPT 159 +# define RSA_F_RSA_CMS_VERIFY 158 +# define RSA_F_RSA_ITEM_VERIFY 148 +# define RSA_F_RSA_METH_DUP 161 +# define RSA_F_RSA_METH_NEW 162 +# define RSA_F_RSA_METH_SET1_NAME 163 +# define RSA_F_RSA_MGF1_TO_MD 157 +# define RSA_F_RSA_MULTIP_INFO_NEW 166 +# define RSA_F_RSA_NEW_METHOD 106 +# define RSA_F_RSA_NULL 124 +# define RSA_F_RSA_NULL_PRIVATE_DECRYPT 132 +# define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 133 +# define RSA_F_RSA_NULL_PUBLIC_DECRYPT 134 +# define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 135 +# define RSA_F_RSA_OSSL_PRIVATE_DECRYPT 101 +# define RSA_F_RSA_OSSL_PRIVATE_ENCRYPT 102 +# define RSA_F_RSA_OSSL_PUBLIC_DECRYPT 103 +# define RSA_F_RSA_OSSL_PUBLIC_ENCRYPT 104 +# define RSA_F_RSA_PADDING_ADD_NONE 107 +# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 121 +# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1 154 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 125 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 152 +# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 108 +# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 109 +# define RSA_F_RSA_PADDING_ADD_SSLV23 110 +# define RSA_F_RSA_PADDING_ADD_X931 127 +# define RSA_F_RSA_PADDING_CHECK_NONE 111 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 122 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1 153 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 112 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 113 +# define RSA_F_RSA_PADDING_CHECK_SSLV23 114 +# define RSA_F_RSA_PADDING_CHECK_X931 128 +# define RSA_F_RSA_PARAM_DECODE 164 +# define RSA_F_RSA_PRINT 115 +# define RSA_F_RSA_PRINT_FP 116 +# define RSA_F_RSA_PRIV_DECODE 150 +# define RSA_F_RSA_PRIV_ENCODE 138 +# define RSA_F_RSA_PSS_GET_PARAM 151 +# define RSA_F_RSA_PSS_TO_CTX 155 +# define RSA_F_RSA_PUB_DECODE 139 +# define RSA_F_RSA_SETUP_BLINDING 136 +# define RSA_F_RSA_SIGN 117 +# define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 118 +# define RSA_F_RSA_VERIFY 119 +# define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 120 +# define RSA_F_RSA_VERIFY_PKCS1_PSS_MGF1 126 +# define RSA_F_SETUP_TBUF 167 + +/* + * RSA reason codes. + */ +# define RSA_R_ALGORITHM_MISMATCH 100 +# define RSA_R_BAD_E_VALUE 101 +# define RSA_R_BAD_FIXED_HEADER_DECRYPT 102 +# define RSA_R_BAD_PAD_BYTE_COUNT 103 +# define RSA_R_BAD_SIGNATURE 104 +# define RSA_R_BLOCK_TYPE_IS_NOT_01 106 +# define RSA_R_BLOCK_TYPE_IS_NOT_02 107 +# define RSA_R_DATA_GREATER_THAN_MOD_LEN 108 +# define RSA_R_DATA_TOO_LARGE 109 +# define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110 +# define RSA_R_DATA_TOO_LARGE_FOR_MODULUS 132 +# define RSA_R_DATA_TOO_SMALL 111 +# define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE 122 +# define RSA_R_DIGEST_DOES_NOT_MATCH 158 +# define RSA_R_DIGEST_NOT_ALLOWED 145 +# define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY 112 +# define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124 +# define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125 +# define RSA_R_D_E_NOT_CONGRUENT_TO_1 123 +# define RSA_R_FIRST_OCTET_INVALID 133 +# define RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 144 +# define RSA_R_INVALID_DIGEST 157 +# define RSA_R_INVALID_DIGEST_LENGTH 143 +# define RSA_R_INVALID_HEADER 137 +# define RSA_R_INVALID_LABEL 160 +# define RSA_R_INVALID_MESSAGE_LENGTH 131 +# define RSA_R_INVALID_MGF1_MD 156 +# define RSA_R_INVALID_MULTI_PRIME_KEY 167 +# define RSA_R_INVALID_OAEP_PARAMETERS 161 +# define RSA_R_INVALID_PADDING 138 +# define RSA_R_INVALID_PADDING_MODE 141 +# define RSA_R_INVALID_PSS_PARAMETERS 149 +# define RSA_R_INVALID_PSS_SALTLEN 146 +# define RSA_R_INVALID_SALT_LENGTH 150 +# define RSA_R_INVALID_TRAILER 139 +# define RSA_R_INVALID_X931_DIGEST 142 +# define RSA_R_IQMP_NOT_INVERSE_OF_Q 126 +# define RSA_R_KEY_PRIME_NUM_INVALID 165 +# define RSA_R_KEY_SIZE_TOO_SMALL 120 +# define RSA_R_LAST_OCTET_INVALID 134 +# define RSA_R_MISSING_PRIVATE_KEY 179 +# define RSA_R_MGF1_DIGEST_NOT_ALLOWED 152 +# define RSA_R_MODULUS_TOO_LARGE 105 +# define RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R 168 +# define RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D 169 +# define RSA_R_MP_R_NOT_PRIME 170 +# define RSA_R_NO_PUBLIC_EXPONENT 140 +# define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 +# define RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES 172 +# define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 +# define RSA_R_OAEP_DECODING_ERROR 121 +# define RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 148 +# define RSA_R_PADDING_CHECK_FAILED 114 +# define RSA_R_PKCS_DECODING_ERROR 159 +# define RSA_R_PSS_SALTLEN_TOO_SMALL 164 +# define RSA_R_P_NOT_PRIME 128 +# define RSA_R_Q_NOT_PRIME 129 +# define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130 +# define RSA_R_SLEN_CHECK_FAILED 136 +# define RSA_R_SLEN_RECOVERY_FAILED 135 +# define RSA_R_SSLV3_ROLLBACK_ATTACK 115 +# define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116 +# define RSA_R_UNKNOWN_ALGORITHM_TYPE 117 +# define RSA_R_UNKNOWN_DIGEST 166 +# define RSA_R_UNKNOWN_MASK_DIGEST 151 +# define RSA_R_UNKNOWN_PADDING_TYPE 118 +# define RSA_R_UNSUPPORTED_ENCRYPTION_TYPE 162 +# define RSA_R_UNSUPPORTED_LABEL_SOURCE 163 +# define RSA_R_UNSUPPORTED_MASK_ALGORITHM 153 +# define RSA_R_UNSUPPORTED_MASK_PARAMETER 154 +# define RSA_R_UNSUPPORTED_SIGNATURE_TYPE 155 +# define RSA_R_VALUE_MISSING 147 +# define RSA_R_WRONG_SIGNATURE_LENGTH 119 + +#endif diff --git a/openSSL/lin64/include/openssl/safestack.h b/openSSL/lin64/include/openssl/safestack.h new file mode 100644 index 0000000..38b5578 --- /dev/null +++ b/openSSL/lin64/include/openssl/safestack.h @@ -0,0 +1,207 @@ +/* + * Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SAFESTACK_H +# define HEADER_SAFESTACK_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define STACK_OF(type) struct stack_st_##type + +# define SKM_DEFINE_STACK_OF(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 * const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 *a); \ + typedef t3 * (*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + { \ + return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + { \ + return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_free((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + { \ + return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ + (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + { \ + OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + { \ + return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) * sk_##t1##_dup(const STACK_OF(t1) *sk) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + sk_##t1##_copyfunc copyfunc, \ + sk_##t1##_freefunc freefunc) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, \ + (OPENSSL_sk_copyfunc)copyfunc, \ + (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + { \ + return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ + } + +# define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) +# define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) +# define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ + SKM_DEFINE_STACK_OF(t1, const t2, t2) +# define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) + +/*- + * Strings are special: normally an lhash entry will point to a single + * (somewhat) mutable object. In the case of strings: + * + * a) Instead of a single char, there is an array of chars, NUL-terminated. + * b) The string may have be immutable. + * + * So, they need their own declarations. Especially important for + * type-checking tools, such as Deputy. + * + * In practice, however, it appears to be hard to have a const + * string. For now, I'm settling for dealing with the fact it is a + * string at all. + */ +typedef char *OPENSSL_STRING; +typedef const char *OPENSSL_CSTRING; + +/*- + * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but + * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned + * above, instead of a single char each entry is a NUL-terminated array of + * chars. So, we have to implement STRING specially for STACK_OF. This is + * dealt with in the autogenerated macros below. + */ +DEFINE_SPECIAL_STACK_OF(OPENSSL_STRING, char) +DEFINE_SPECIAL_STACK_OF_CONST(OPENSSL_CSTRING, char) + +/* + * Similarly, we sometimes use a block of characters, NOT nul-terminated. + * These should also be distinguished from "normal" stacks. + */ +typedef void *OPENSSL_BLOCK; +DEFINE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void) + +/* + * If called without higher optimization (min. -xO3) the Oracle Developer + * Studio compiler generates code for the defined (static inline) functions + * above. + * This would later lead to the linker complaining about missing symbols when + * this header file is included but the resulting object is not linked against + * the Crypto library (openssl#6912). + */ +# ifdef __SUNPRO_C +# pragma weak OPENSSL_sk_num +# pragma weak OPENSSL_sk_value +# pragma weak OPENSSL_sk_new +# pragma weak OPENSSL_sk_new_null +# pragma weak OPENSSL_sk_new_reserve +# pragma weak OPENSSL_sk_reserve +# pragma weak OPENSSL_sk_free +# pragma weak OPENSSL_sk_zero +# pragma weak OPENSSL_sk_delete +# pragma weak OPENSSL_sk_delete_ptr +# pragma weak OPENSSL_sk_push +# pragma weak OPENSSL_sk_unshift +# pragma weak OPENSSL_sk_pop +# pragma weak OPENSSL_sk_shift +# pragma weak OPENSSL_sk_pop_free +# pragma weak OPENSSL_sk_insert +# pragma weak OPENSSL_sk_set +# pragma weak OPENSSL_sk_find +# pragma weak OPENSSL_sk_find_ex +# pragma weak OPENSSL_sk_sort +# pragma weak OPENSSL_sk_is_sorted +# pragma weak OPENSSL_sk_dup +# pragma weak OPENSSL_sk_deep_copy +# pragma weak OPENSSL_sk_set_cmp_func +# endif /* __SUNPRO_C */ + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/seed.h b/openSSL/lin64/include/openssl/seed.h new file mode 100644 index 0000000..de10b08 --- /dev/null +++ b/openSSL/lin64/include/openssl/seed.h @@ -0,0 +1,96 @@ +/* + * Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Neither the name of author nor the names of its contributors may + * be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef HEADER_SEED_H +# define HEADER_SEED_H + +# include + +# ifndef OPENSSL_NO_SEED +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* look whether we need 'long' to get 32 bits */ +# ifdef AES_LONG +# ifndef SEED_LONG +# define SEED_LONG 1 +# endif +# endif + +# include + +# define SEED_BLOCK_SIZE 16 +# define SEED_KEY_LENGTH 16 + +typedef struct seed_key_st { +# ifdef SEED_LONG + unsigned long data[32]; +# else + unsigned int data[32]; +# endif +} SEED_KEY_SCHEDULE; + +void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], + SEED_KEY_SCHEDULE *ks); + +void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); + +void SEED_ecb_encrypt(const unsigned char *in, unsigned char *out, + const SEED_KEY_SCHEDULE *ks, int enc); +void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, + const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], int enc); +void SEED_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], int *num, + int enc); +void SEED_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/sha.h b/openSSL/lin64/include/openssl/sha.h new file mode 100644 index 0000000..6a1eb0d --- /dev/null +++ b/openSSL/lin64/include/openssl/sha.h @@ -0,0 +1,119 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SHA_H +# define HEADER_SHA_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! SHA_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define SHA_LONG unsigned int + +# define SHA_LBLOCK 16 +# define SHA_CBLOCK (SHA_LBLOCK*4)/* SHA treats input data as a + * contiguous array of 32 bit wide + * big-endian values. */ +# define SHA_LAST_BLOCK (SHA_CBLOCK-8) +# define SHA_DIGEST_LENGTH 20 + +typedef struct SHAstate_st { + SHA_LONG h0, h1, h2, h3, h4; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num; +} SHA_CTX; + +int SHA1_Init(SHA_CTX *c); +int SHA1_Update(SHA_CTX *c, const void *data, size_t len); +int SHA1_Final(unsigned char *md, SHA_CTX *c); +unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); +void SHA1_Transform(SHA_CTX *c, const unsigned char *data); + +# define SHA256_CBLOCK (SHA_LBLOCK*4)/* SHA-256 treats input data as a + * contiguous array of 32 bit wide + * big-endian values. */ + +typedef struct SHA256state_st { + SHA_LONG h[8]; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num, md_len; +} SHA256_CTX; + +int SHA224_Init(SHA256_CTX *c); +int SHA224_Update(SHA256_CTX *c, const void *data, size_t len); +int SHA224_Final(unsigned char *md, SHA256_CTX *c); +unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); +int SHA256_Init(SHA256_CTX *c); +int SHA256_Update(SHA256_CTX *c, const void *data, size_t len); +int SHA256_Final(unsigned char *md, SHA256_CTX *c); +unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); +void SHA256_Transform(SHA256_CTX *c, const unsigned char *data); + +# define SHA224_DIGEST_LENGTH 28 +# define SHA256_DIGEST_LENGTH 32 +# define SHA384_DIGEST_LENGTH 48 +# define SHA512_DIGEST_LENGTH 64 + +/* + * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64 + * being exactly 64-bit wide. See Implementation Notes in sha512.c + * for further details. + */ +/* + * SHA-512 treats input data as a + * contiguous array of 64 bit + * wide big-endian values. + */ +# define SHA512_CBLOCK (SHA_LBLOCK*8) +# if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__) +# define SHA_LONG64 unsigned __int64 +# define U64(C) C##UI64 +# elif defined(__arch64__) +# define SHA_LONG64 unsigned long +# define U64(C) C##UL +# else +# define SHA_LONG64 unsigned long long +# define U64(C) C##ULL +# endif + +typedef struct SHA512state_st { + SHA_LONG64 h[8]; + SHA_LONG64 Nl, Nh; + union { + SHA_LONG64 d[SHA_LBLOCK]; + unsigned char p[SHA512_CBLOCK]; + } u; + unsigned int num, md_len; +} SHA512_CTX; + +int SHA384_Init(SHA512_CTX *c); +int SHA384_Update(SHA512_CTX *c, const void *data, size_t len); +int SHA384_Final(unsigned char *md, SHA512_CTX *c); +unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md); +int SHA512_Init(SHA512_CTX *c); +int SHA512_Update(SHA512_CTX *c, const void *data, size_t len); +int SHA512_Final(unsigned char *md, SHA512_CTX *c); +unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md); +void SHA512_Transform(SHA512_CTX *c, const unsigned char *data); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin64/include/openssl/srp.h b/openSSL/lin64/include/openssl/srp.h new file mode 100644 index 0000000..aaf1355 --- /dev/null +++ b/openSSL/lin64/include/openssl/srp.h @@ -0,0 +1,135 @@ +/* + * Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2004, EdelKey Project. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + * + * Originally written by Christophe Renou and Peter Sylvester, + * for the EdelKey project. + */ + +#ifndef HEADER_SRP_H +# define HEADER_SRP_H + +#include + +#ifndef OPENSSL_NO_SRP +# include +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct SRP_gN_cache_st { + char *b64_bn; + BIGNUM *bn; +} SRP_gN_cache; + + +DEFINE_STACK_OF(SRP_gN_cache) + +typedef struct SRP_user_pwd_st { + /* Owned by us. */ + char *id; + BIGNUM *s; + BIGNUM *v; + /* Not owned by us. */ + const BIGNUM *g; + const BIGNUM *N; + /* Owned by us. */ + char *info; +} SRP_user_pwd; + +void SRP_user_pwd_free(SRP_user_pwd *user_pwd); + +DEFINE_STACK_OF(SRP_user_pwd) + +typedef struct SRP_VBASE_st { + STACK_OF(SRP_user_pwd) *users_pwd; + STACK_OF(SRP_gN_cache) *gN_cache; +/* to simulate a user */ + char *seed_key; + const BIGNUM *default_g; + const BIGNUM *default_N; +} SRP_VBASE; + +/* + * Internal structure storing N and g pair + */ +typedef struct SRP_gN_st { + char *id; + const BIGNUM *g; + const BIGNUM *N; +} SRP_gN; + +DEFINE_STACK_OF(SRP_gN) + +SRP_VBASE *SRP_VBASE_new(char *seed_key); +void SRP_VBASE_free(SRP_VBASE *vb); +int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); + +/* This method ignores the configured seed and fails for an unknown user. */ +DEPRECATEDIN_1_1_0(SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username)) +/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ +SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); + +char *SRP_create_verifier(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g); +int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g); + +# define SRP_NO_ERROR 0 +# define SRP_ERR_VBASE_INCOMPLETE_FILE 1 +# define SRP_ERR_VBASE_BN_LIB 2 +# define SRP_ERR_OPEN_FILE 3 +# define SRP_ERR_MEMORY 4 + +# define DB_srptype 0 +# define DB_srpverifier 1 +# define DB_srpsalt 2 +# define DB_srpid 3 +# define DB_srpgN 4 +# define DB_srpinfo 5 +# undef DB_NUMBER +# define DB_NUMBER 6 + +# define DB_SRP_INDEX 'I' +# define DB_SRP_VALID 'V' +# define DB_SRP_REVOKED 'R' +# define DB_SRP_MODIF 'v' + +/* see srp.c */ +char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); +SRP_gN *SRP_get_default_gN(const char *id); + +/* server side .... */ +BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, + const BIGNUM *b, const BIGNUM *N); +BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v); +int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); +BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); + +/* client side .... */ +BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); +BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); +BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); +int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); + +# define SRP_MINIMAL_N 1024 + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/srtp.h b/openSSL/lin64/include/openssl/srtp.h new file mode 100644 index 0000000..0b57c23 --- /dev/null +++ b/openSSL/lin64/include/openssl/srtp.h @@ -0,0 +1,50 @@ +/* + * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * DTLS code by Eric Rescorla + * + * Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. + */ + +#ifndef HEADER_D1_SRTP_H +# define HEADER_D1_SRTP_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define SRTP_AES128_CM_SHA1_80 0x0001 +# define SRTP_AES128_CM_SHA1_32 0x0002 +# define SRTP_AES128_F8_SHA1_80 0x0003 +# define SRTP_AES128_F8_SHA1_32 0x0004 +# define SRTP_NULL_SHA1_80 0x0005 +# define SRTP_NULL_SHA1_32 0x0006 + +/* AEAD SRTP protection profiles from RFC 7714 */ +# define SRTP_AEAD_AES_128_GCM 0x0007 +# define SRTP_AEAD_AES_256_GCM 0x0008 + +# ifndef OPENSSL_NO_SRTP + +__owur int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); +__owur int SSL_set_tlsext_use_srtp(SSL *ssl, const char *profiles); + +__owur STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl); +__owur SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); + +# endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin64/include/openssl/ssl.h b/openSSL/lin64/include/openssl/ssl.h new file mode 100644 index 0000000..9af0c89 --- /dev/null +++ b/openSSL/lin64/include/openssl/ssl.h @@ -0,0 +1,2448 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL_H +# define HEADER_SSL_H + +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# endif +# include +# include +# include +# include + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* OpenSSL version number for ASN.1 encoding of the session information */ +/*- + * Version 0 - initial version + * Version 1 - added the optional peer certificate + */ +# define SSL_SESSION_ASN1_VERSION 0x0001 + +# define SSL_MAX_SSL_SESSION_ID_LENGTH 32 +# define SSL_MAX_SID_CTX_LENGTH 32 + +# define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512/8) +# define SSL_MAX_KEY_ARG_LENGTH 8 +# define SSL_MAX_MASTER_KEY_LENGTH 48 + +/* The maximum number of encrypt/decrypt pipelines we can support */ +# define SSL_MAX_PIPELINES 32 + +/* text strings for the ciphers */ + +/* These are used to specify which ciphers to use and not to use */ + +# define SSL_TXT_LOW "LOW" +# define SSL_TXT_MEDIUM "MEDIUM" +# define SSL_TXT_HIGH "HIGH" +# define SSL_TXT_FIPS "FIPS" + +# define SSL_TXT_aNULL "aNULL" +# define SSL_TXT_eNULL "eNULL" +# define SSL_TXT_NULL "NULL" + +# define SSL_TXT_kRSA "kRSA" +# define SSL_TXT_kDHr "kDHr"/* this cipher class has been removed */ +# define SSL_TXT_kDHd "kDHd"/* this cipher class has been removed */ +# define SSL_TXT_kDH "kDH"/* this cipher class has been removed */ +# define SSL_TXT_kEDH "kEDH"/* alias for kDHE */ +# define SSL_TXT_kDHE "kDHE" +# define SSL_TXT_kECDHr "kECDHr"/* this cipher class has been removed */ +# define SSL_TXT_kECDHe "kECDHe"/* this cipher class has been removed */ +# define SSL_TXT_kECDH "kECDH"/* this cipher class has been removed */ +# define SSL_TXT_kEECDH "kEECDH"/* alias for kECDHE */ +# define SSL_TXT_kECDHE "kECDHE" +# define SSL_TXT_kPSK "kPSK" +# define SSL_TXT_kRSAPSK "kRSAPSK" +# define SSL_TXT_kECDHEPSK "kECDHEPSK" +# define SSL_TXT_kDHEPSK "kDHEPSK" +# define SSL_TXT_kGOST "kGOST" +# define SSL_TXT_kSRP "kSRP" + +# define SSL_TXT_aRSA "aRSA" +# define SSL_TXT_aDSS "aDSS" +# define SSL_TXT_aDH "aDH"/* this cipher class has been removed */ +# define SSL_TXT_aECDH "aECDH"/* this cipher class has been removed */ +# define SSL_TXT_aECDSA "aECDSA" +# define SSL_TXT_aPSK "aPSK" +# define SSL_TXT_aGOST94 "aGOST94" +# define SSL_TXT_aGOST01 "aGOST01" +# define SSL_TXT_aGOST12 "aGOST12" +# define SSL_TXT_aGOST "aGOST" +# define SSL_TXT_aSRP "aSRP" + +# define SSL_TXT_DSS "DSS" +# define SSL_TXT_DH "DH" +# define SSL_TXT_DHE "DHE"/* same as "kDHE:-ADH" */ +# define SSL_TXT_EDH "EDH"/* alias for DHE */ +# define SSL_TXT_ADH "ADH" +# define SSL_TXT_RSA "RSA" +# define SSL_TXT_ECDH "ECDH" +# define SSL_TXT_EECDH "EECDH"/* alias for ECDHE" */ +# define SSL_TXT_ECDHE "ECDHE"/* same as "kECDHE:-AECDH" */ +# define SSL_TXT_AECDH "AECDH" +# define SSL_TXT_ECDSA "ECDSA" +# define SSL_TXT_PSK "PSK" +# define SSL_TXT_SRP "SRP" + +# define SSL_TXT_DES "DES" +# define SSL_TXT_3DES "3DES" +# define SSL_TXT_RC4 "RC4" +# define SSL_TXT_RC2 "RC2" +# define SSL_TXT_IDEA "IDEA" +# define SSL_TXT_SEED "SEED" +# define SSL_TXT_AES128 "AES128" +# define SSL_TXT_AES256 "AES256" +# define SSL_TXT_AES "AES" +# define SSL_TXT_AES_GCM "AESGCM" +# define SSL_TXT_AES_CCM "AESCCM" +# define SSL_TXT_AES_CCM_8 "AESCCM8" +# define SSL_TXT_CAMELLIA128 "CAMELLIA128" +# define SSL_TXT_CAMELLIA256 "CAMELLIA256" +# define SSL_TXT_CAMELLIA "CAMELLIA" +# define SSL_TXT_CHACHA20 "CHACHA20" +# define SSL_TXT_GOST "GOST89" +# define SSL_TXT_ARIA "ARIA" +# define SSL_TXT_ARIA_GCM "ARIAGCM" +# define SSL_TXT_ARIA128 "ARIA128" +# define SSL_TXT_ARIA256 "ARIA256" + +# define SSL_TXT_MD5 "MD5" +# define SSL_TXT_SHA1 "SHA1" +# define SSL_TXT_SHA "SHA"/* same as "SHA1" */ +# define SSL_TXT_GOST94 "GOST94" +# define SSL_TXT_GOST89MAC "GOST89MAC" +# define SSL_TXT_GOST12 "GOST12" +# define SSL_TXT_GOST89MAC12 "GOST89MAC12" +# define SSL_TXT_SHA256 "SHA256" +# define SSL_TXT_SHA384 "SHA384" + +# define SSL_TXT_SSLV3 "SSLv3" +# define SSL_TXT_TLSV1 "TLSv1" +# define SSL_TXT_TLSV1_1 "TLSv1.1" +# define SSL_TXT_TLSV1_2 "TLSv1.2" + +# define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +# define SSL_TXT_CMPALL "COMPLEMENTOFALL" +# define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + * This applies to ciphersuites for TLSv1.2 and below. + */ +# define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* This is the default set of TLSv1.3 ciphersuites */ +# if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305) +# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_CHACHA20_POLY1305_SHA256:" \ + "TLS_AES_128_GCM_SHA256" +# else +# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_AES_128_GCM_SHA256" +#endif +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +# define SSL_SENT_SHUTDOWN 1 +# define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +# define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; +typedef struct ssl_comp_st SSL_COMP; + +STACK_OF(SSL_CIPHER); +STACK_OF(SSL_COMP); + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; + +DEFINE_STACK_OF(SRTP_PROTECTION_PROFILE) + +typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + const SSL_CIPHER **cipher, void *arg); + +/* Extension context codes */ +/* This extension is only allowed in TLS */ +#define SSL_EXT_TLS_ONLY 0x0001 +/* This extension is only allowed in DTLS */ +#define SSL_EXT_DTLS_ONLY 0x0002 +/* Some extensions may be allowed in DTLS but we don't implement them for it */ +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ +#define SSL_EXT_SSL3_ALLOWED 0x0008 +/* Extension is only defined for TLS1.2 and below */ +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +/* Extension is only defined for TLS1.3 and above */ +#define SSL_EXT_TLS1_3_ONLY 0x0020 +/* Ignore this extension during parsing if we are resuming */ +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 +#define SSL_EXT_CLIENT_HELLO 0x0080 +/* Really means TLS1.2 or below */ +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type, + const unsigned char **out, size_t *outlen, + int *al, void *add_arg); + +typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type, + const unsigned char *in, size_t inlen, + int *al, void *parse_arg); + + +typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char **out, + size_t *outlen, X509 *x, + size_t chainidx, + int *al, void *add_arg); + +typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *out, + void *add_arg); + +typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *in, + size_t inlen, X509 *x, + size_t chainidx, + int *al, void *parse_arg); + +/* Typedef for verification callback */ +typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); + +/* + * Some values are reserved until OpenSSL 1.2.0 because they were previously + * included in SSL_OP_ALL in a 1.1.x release. + * + * Reserved value (until OpenSSL 1.2.0) 0x00000001U + * Reserved value (until OpenSSL 1.2.0) 0x00000002U + */ +/* Allow initial connection to servers that don't support RI */ +# define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004U + +/* Reserved value (until OpenSSL 1.2.0) 0x00000008U */ +# define SSL_OP_TLSEXT_PADDING 0x00000010U +/* Reserved value (until OpenSSL 1.2.0) 0x00000020U */ +# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040U +/* + * Reserved value (until OpenSSL 1.2.0) 0x00000080U + * Reserved value (until OpenSSL 1.2.0) 0x00000100U + * Reserved value (until OpenSSL 1.2.0) 0x00000200U + */ + +/* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ +# define SSL_OP_ALLOW_NO_DHE_KEX 0x00000400U + +/* + * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added in + * OpenSSL 0.9.6d. Usually (depending on the application protocol) the + * workaround is not needed. Unfortunately some broken SSL/TLS + * implementations cannot handle it at all, which is why we include it in + * SSL_OP_ALL. Added in 0.9.6e + */ +# define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS 0x00000800U + +/* DTLS options */ +# define SSL_OP_NO_QUERY_MTU 0x00001000U +/* Turn on Cookie Exchange (on relevant for servers) */ +# define SSL_OP_COOKIE_EXCHANGE 0x00002000U +/* Don't use RFC4507 ticket extension */ +# define SSL_OP_NO_TICKET 0x00004000U +# ifndef OPENSSL_NO_DTLS1_METHOD +/* Use Cisco's "speshul" version of DTLS_BAD_VER + * (only with deprecated DTLSv1_client_method()) */ +# define SSL_OP_CISCO_ANYCONNECT 0x00008000U +# endif + +/* As server, disallow session resumption on renegotiation */ +# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000U +/* Don't use compression even if supported */ +# define SSL_OP_NO_COMPRESSION 0x00020000U +/* Permit unsafe legacy renegotiation */ +# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x00040000U +/* Disable encrypt-then-mac */ +# define SSL_OP_NO_ENCRYPT_THEN_MAC 0x00080000U + +/* + * Enable TLSv1.3 Compatibility mode. This is on by default. A future version + * of OpenSSL may have this disabled by default. + */ +# define SSL_OP_ENABLE_MIDDLEBOX_COMPAT 0x00100000U + +/* Prioritize Chacha20Poly1305 when client does. + * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE */ +# define SSL_OP_PRIORITIZE_CHACHA 0x00200000U + +/* + * Set on servers to choose the cipher according to the server's preferences + */ +# define SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000U +/* + * If set, a server will allow a client to issue a SSLv3.0 version number as + * latest version supported in the premaster secret, even when TLSv1.0 + * (version 3.1) was announced in the client hello. Normally this is + * forbidden to prevent version rollback attacks. + */ +# define SSL_OP_TLS_ROLLBACK_BUG 0x00800000U + +/* + * Switches off automatic TLSv1.3 anti-replay protection for early data. This + * is a server-side option only (no effect on the client). + */ +# define SSL_OP_NO_ANTI_REPLAY 0x01000000U + +# define SSL_OP_NO_SSLv3 0x02000000U +# define SSL_OP_NO_TLSv1 0x04000000U +# define SSL_OP_NO_TLSv1_2 0x08000000U +# define SSL_OP_NO_TLSv1_1 0x10000000U +# define SSL_OP_NO_TLSv1_3 0x20000000U + +# define SSL_OP_NO_DTLSv1 0x04000000U +# define SSL_OP_NO_DTLSv1_2 0x08000000U + +# define SSL_OP_NO_SSL_MASK (SSL_OP_NO_SSLv3|\ + SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1_2|SSL_OP_NO_TLSv1_3) +# define SSL_OP_NO_DTLS_MASK (SSL_OP_NO_DTLSv1|SSL_OP_NO_DTLSv1_2) + +/* Disallow all renegotiation */ +# define SSL_OP_NO_RENEGOTIATION 0x40000000U + +/* + * Make server add server-hello extension from early version of cryptopro + * draft, when GOST ciphersuite is negotiated. Required for interoperability + * with CryptoPro CSP 3.x + */ +# define SSL_OP_CRYPTOPRO_TLSEXT_BUG 0x80000000U + +/* + * SSL_OP_ALL: various bug workarounds that should be rather harmless. + * This used to be 0x000FFFFFL before 0.9.7. + * This used to be 0x80000BFFU before 1.1.1. + */ +# define SSL_OP_ALL (SSL_OP_CRYPTOPRO_TLSEXT_BUG|\ + SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS|\ + SSL_OP_LEGACY_SERVER_CONNECT|\ + SSL_OP_TLSEXT_PADDING|\ + SSL_OP_SAFARI_ECDHE_ECDSA_BUG) + +/* OBSOLETE OPTIONS: retained for compatibility */ + +/* Removed from OpenSSL 1.1.0. Was 0x00000001L */ +/* Related to removed SSLv2. */ +# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000002L */ +/* Related to removed SSLv2. */ +# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 +/* Removed from OpenSSL 0.9.8q and 1.0.0c. Was 0x00000008L */ +/* Dead forever, see CVE-2010-4180 */ +# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 +/* Removed from OpenSSL 1.0.1h and 1.0.2. Was 0x00000010L */ +/* Refers to ancient SSLREF and SSLv2. */ +# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000020 */ +# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 +/* Removed from OpenSSL 0.9.7h and 0.9.8b. Was 0x00000040L */ +# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000080 */ +/* Ancient SSLeay version. */ +# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000100L */ +# define SSL_OP_TLS_D5_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000200L */ +# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00080000L */ +# define SSL_OP_SINGLE_ECDH_USE 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00100000L */ +# define SSL_OP_SINGLE_DH_USE 0x0 +/* Removed from OpenSSL 1.0.1k and 1.0.2. Was 0x00200000L */ +# define SSL_OP_EPHEMERAL_RSA 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x01000000L */ +# define SSL_OP_NO_SSLv2 0x0 +/* Removed from OpenSSL 1.0.1. Was 0x08000000L */ +# define SSL_OP_PKCS1_CHECK_1 0x0 +/* Removed from OpenSSL 1.0.1. Was 0x10000000L */ +# define SSL_OP_PKCS1_CHECK_2 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x20000000L */ +# define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x40000000L */ +# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0 + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +# define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001U +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U +/* + * Never bother the application with retries if the transport is blocking: + */ +# define SSL_MODE_AUTO_RETRY 0x00000004U +/* Don't attempt to automatically build certificate chain */ +# define SSL_MODE_NO_AUTO_CHAIN 0x00000008U +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) Released buffers are freed. + */ +# define SSL_MODE_RELEASE_BUFFERS 0x00000010U +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U +# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U +/* + * Support Asynchronous operation + */ +# define SSL_MODE_ASYNC 0x00000100U + +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +# define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certificate chain algorithms. When this is set we enforce them. + */ +# define SSL_CERT_FLAG_TLS_STRICT 0x00000001U + +/* Suite B modes, takes same values as certificate verify flags */ +# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +# define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +# define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +# define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +# define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +# define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +# define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +# define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +# define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +# define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +# define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +# define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +# define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +# define CERT_PKEY_SUITEB 0x800 + +# define SSL_CONF_FLAG_CMDLINE 0x1 +# define SSL_CONF_FLAG_FILE 0x2 +# define SSL_CONF_FLAG_CLIENT 0x4 +# define SSL_CONF_FLAG_SERVER 0x8 +# define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +# define SSL_CONF_FLAG_CERTIFICATE 0x20 +# define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40 +/* Configuration value types */ +# define SSL_CONF_TYPE_UNKNOWN 0x0 +# define SSL_CONF_TYPE_STRING 0x1 +# define SSL_CONF_TYPE_FILE 0x2 +# define SSL_CONF_TYPE_DIR 0x3 +# define SSL_CONF_TYPE_NONE 0x4 + +/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */ +# define SSL_COOKIE_LENGTH 4096 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +unsigned long SSL_CTX_get_options(const SSL_CTX *ctx); +unsigned long SSL_get_options(const SSL *s); +unsigned long SSL_CTX_clear_options(SSL_CTX *ctx, unsigned long op); +unsigned long SSL_clear_options(SSL *s, unsigned long op); +unsigned long SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op); +unsigned long SSL_set_options(SSL *s, unsigned long op); + +# define SSL_CTX_set_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) +# define SSL_CTX_clear_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_CTX_get_mode(ctx) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL) +# define SSL_clear_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_set_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL) +# define SSL_get_mode(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL) +# define SSL_set_mtu(ssl, mtu) \ + SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL) +# define DTLS_set_link_mtu(ssl, mtu) \ + SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL) +# define DTLS_get_link_min_mtu(ssl) \ + SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL) + +# define SSL_get_secure_renegotiation_support(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_heartbeat(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT,0,NULL) +# endif + +# define SSL_CTX_set_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_set_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_CTX_clear_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) +# define SSL_clear_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) + +void 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)); +void 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)); +# define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) +# define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) + +# define SSL_get_extms_support(s) \ + SSL_ctrl((s),SSL_CTRL_GET_EXTMS_SUPPORT,0,NULL) + +# ifndef OPENSSL_NO_SRP + +/* see tls_srp.c */ +__owur int SSL_SRP_CTX_init(SSL *s); +__owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +int SSL_SRP_CTX_free(SSL *ctx); +int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +__owur int SSL_srp_server_param_with_username(SSL *s, int *ad); +__owur int SRP_Calc_A_param(SSL *s); + +# endif + +/* 100k max cert list */ +# define SSL_MAX_CERT_LIST_DEFAULT 1024*100 + +# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32 + * bytes. The callback can alter this length to be less if desired. It is + * also an error for the callback to set the size to zero. + */ +typedef int (*GEN_SESSION_CB) (SSL *ssl, unsigned char *id, + unsigned int *id_len); + +# define SSL_SESS_CACHE_OFF 0x0000 +# define SSL_SESS_CACHE_CLIENT 0x0001 +# define SSL_SESS_CACHE_SERVER 0x0002 +# define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER) +# define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +# define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +# define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE) + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +# define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL) +# define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL) +# define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL) +# define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL) +# define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL) +# define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL) +# define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL) +# define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL) +# define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL) +# define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb) (struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb) (struct ssl_ctx_st + *ctx, + SSL_SESSION *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb) (struct ssl_st + *ssl, + const unsigned char + *data, int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + const unsigned char *data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb) (const SSL *ssl, int type, int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +# ifndef OPENSSL_NO_ENGINE +__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +# endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb) (SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb) (SSL *ssl, + const unsigned + char *cookie, + unsigned int + cookie_len)); + +void SSL_CTX_set_stateless_cookie_generate_cb( + SSL_CTX *ctx, + int (*gen_stateless_cookie_cb) (SSL *ssl, + unsigned char *cookie, + size_t *cookie_len)); +void SSL_CTX_set_stateless_cookie_verify_cb( + SSL_CTX *ctx, + int (*verify_stateless_cookie_cb) (SSL *ssl, + const unsigned char *cookie, + size_t cookie_len)); +# ifndef OPENSSL_NO_NEXTPROTONEG + +typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned int *outlen, + void *arg); +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + SSL_CTX_npn_advertised_cb_func cb, + void *arg); +# define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb + +typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + SSL_CTX_npn_select_cb_func cb, + void *arg); +# define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb + +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +# define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated +# endif + +__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *in, unsigned int inlen, + const unsigned char *client, + unsigned int client_len); + +# define OPENSSL_NPN_UNSUPPORTED 0 +# define OPENSSL_NPN_NEGOTIATED 1 +# define OPENSSL_NPN_NO_OVERLAP 2 + +__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned int protos_len); +__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned int protos_len); +typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + SSL_CTX_alpn_select_cb_func cb, + void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned int *len); + +# ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +# define PSK_MAX_IDENTITY_LEN 128 +# define PSK_MAX_PSK_LEN 256 +typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl, + const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); +void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); + +typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl, + const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb); +void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb); + +__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +# endif + +typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl, + const unsigned char *identity, + size_t identity_len, + SSL_SESSION **sess); +typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, + const unsigned char **id, + size_t *idlen, + SSL_SESSION **sess); + +void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb); +void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, + SSL_psk_find_session_cb_func cb); +void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); +void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, + SSL_psk_use_session_cb_func cb); + +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, + unsigned int ext_type); + +__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + unsigned int context, + SSL_custom_ext_add_cb_ex add_cb, + SSL_custom_ext_free_cb_ex free_cb, + void *add_arg, + SSL_custom_ext_parse_cb_ex parse_cb, + void *parse_arg); + +__owur int SSL_extension_supported(unsigned int ext_type); + +# define SSL_NOTHING 1 +# define SSL_WRITING 2 +# define SSL_READING 3 +# define SSL_X509_LOOKUP 4 +# define SSL_ASYNC_PAUSED 5 +# define SSL_ASYNC_NO_JOBS 6 +# define SSL_CLIENT_HELLO_CB 7 + +/* These will only be used when doing non-blocking IO */ +# define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +# define SSL_want_read(s) (SSL_want(s) == SSL_READING) +# define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +# define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) +# define SSL_want_async(s) (SSL_want(s) == SSL_ASYNC_PAUSED) +# define SSL_want_async_job(s) (SSL_want(s) == SSL_ASYNC_NO_JOBS) +# define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB) + +# define SSL_MAC_FLAG_READ_MAC_STREAM 1 +# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 + +/* + * A callback for logging out TLS key material. This callback should log out + * |line| followed by a newline. + */ +typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line); + +/* + * SSL_CTX_set_keylog_callback configures a callback to log key material. This + * is intended for debugging use with tools like Wireshark. The cb function + * should log line followed by a newline. + */ +void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb); + +/* + * SSL_CTX_get_keylog_callback returns the callback configured by + * SSL_CTX_set_keylog_callback. + */ +SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx); + +int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data); +uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx); +int SSL_set_max_early_data(SSL *s, uint32_t max_early_data); +uint32_t SSL_get_max_early_data(const SSL *s); +int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data); +uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx); +int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data); +uint32_t SSL_get_recv_max_early_data(const SSL *s); + +#ifdef __cplusplus +} +#endif + +# include +# include +# include /* This is mostly sslv3 with a few tweaks */ +# include /* Datagram TLS */ +# include /* Support for the use_srtp extension */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These need to be after the above set of includes due to a compiler bug + * in VisualStudio 2015 + */ +DEFINE_STACK_OF_CONST(SSL_CIPHER) +DEFINE_STACK_OF(SSL_COMP) + +/* compatibility */ +# define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)(arg))) +# define SSL_get_app_data(s) (SSL_get_ex_data(s,0)) +# define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0, \ + (char *)(a))) +# define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0)) +# define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0)) +# define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0, \ + (char *)(arg))) +DEPRECATEDIN_1_1_0(void SSL_set_debug(SSL *s, int debug)) + +/* TLSv1.3 KeyUpdate message types */ +/* -1 used so that this is an invalid value for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NONE -1 +/* Values as defined for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NOT_REQUESTED 0 +#define SSL_KEY_UPDATE_REQUESTED 1 + +/* + * The valid handshake states (one for each type message sent and one for each + * type of message received). There are also two "special" states: + * TLS = TLS or DTLS state + * DTLS = DTLS specific state + * CR/SR = Client Read/Server Read + * CW/SW = Client Write/Server Write + * + * The "special" states are: + * TLS_ST_BEFORE = No handshake has been initiated yet + * TLS_ST_OK = A handshake has been successfully completed + */ +typedef enum { + TLS_ST_BEFORE, + TLS_ST_OK, + DTLS_ST_CR_HELLO_VERIFY_REQUEST, + TLS_ST_CR_SRVR_HELLO, + TLS_ST_CR_CERT, + TLS_ST_CR_CERT_STATUS, + TLS_ST_CR_KEY_EXCH, + TLS_ST_CR_CERT_REQ, + TLS_ST_CR_SRVR_DONE, + TLS_ST_CR_SESSION_TICKET, + TLS_ST_CR_CHANGE, + TLS_ST_CR_FINISHED, + TLS_ST_CW_CLNT_HELLO, + TLS_ST_CW_CERT, + TLS_ST_CW_KEY_EXCH, + TLS_ST_CW_CERT_VRFY, + TLS_ST_CW_CHANGE, + TLS_ST_CW_NEXT_PROTO, + TLS_ST_CW_FINISHED, + TLS_ST_SW_HELLO_REQ, + TLS_ST_SR_CLNT_HELLO, + DTLS_ST_SW_HELLO_VERIFY_REQUEST, + TLS_ST_SW_SRVR_HELLO, + TLS_ST_SW_CERT, + TLS_ST_SW_KEY_EXCH, + TLS_ST_SW_CERT_REQ, + TLS_ST_SW_SRVR_DONE, + TLS_ST_SR_CERT, + TLS_ST_SR_KEY_EXCH, + TLS_ST_SR_CERT_VRFY, + TLS_ST_SR_NEXT_PROTO, + TLS_ST_SR_CHANGE, + TLS_ST_SR_FINISHED, + TLS_ST_SW_SESSION_TICKET, + TLS_ST_SW_CERT_STATUS, + TLS_ST_SW_CHANGE, + TLS_ST_SW_FINISHED, + TLS_ST_SW_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_CERT_VRFY, + TLS_ST_SW_CERT_VRFY, + TLS_ST_CR_HELLO_REQ, + TLS_ST_SW_KEY_UPDATE, + TLS_ST_CW_KEY_UPDATE, + TLS_ST_SR_KEY_UPDATE, + TLS_ST_CR_KEY_UPDATE, + TLS_ST_EARLY_DATA, + TLS_ST_PENDING_EARLY_DATA_END, + TLS_ST_CW_END_OF_EARLY_DATA, + TLS_ST_SR_END_OF_EARLY_DATA +} OSSL_HANDSHAKE_STATE; + +/* + * Most of the following state values are no longer used and are defined to be + * the closest equivalent value in the current state machine code. Not all + * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT + * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP, + * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT. + */ + +# define SSL_ST_CONNECT 0x1000 +# define SSL_ST_ACCEPT 0x2000 + +# define SSL_ST_MASK 0x0FFF + +# define SSL_CB_LOOP 0x01 +# define SSL_CB_EXIT 0x02 +# define SSL_CB_READ 0x04 +# define SSL_CB_WRITE 0x08 +# define SSL_CB_ALERT 0x4000/* used in callback */ +# define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ) +# define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE) +# define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP) +# define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT) +# define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP) +# define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT) +# define SSL_CB_HANDSHAKE_START 0x10 +# define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +# define SSL_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a)) +# define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a)) +int SSL_in_init(const SSL *s); +int SSL_in_before(const SSL *s); +int SSL_is_init_finished(const SSL *s); + +/* + * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you + * should not need these + */ +# define SSL_ST_READ_HEADER 0xF0 +# define SSL_ST_READ_BODY 0xF1 +# define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +# define SSL_VERIFY_NONE 0x00 +# define SSL_VERIFY_PEER 0x01 +# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +# define SSL_VERIFY_CLIENT_ONCE 0x04 +# define SSL_VERIFY_POST_HANDSHAKE 0x08 + +# if OPENSSL_API_COMPAT < 0x10100000L +# define OpenSSL_add_ssl_algorithms() SSL_library_init() +# define SSLeay_add_ssl_algorithms() SSL_library_init() +# endif + +/* More backward compatibility */ +# define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_cipher_bits(s,np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np) +# define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +# define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_time(a) SSL_SESSION_get_time(a) +# define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b)) +# define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +# define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b)) + +# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id) +# define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +# define SSL_AD_REASON_OFFSET 1000/* offset to get SSL_R_... value + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +# define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +# define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +# define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +# define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +# define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +# define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +# define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +# define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +# define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +# define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +# define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +# define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +# define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +# define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +# define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +# define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +# define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +# define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +# define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +# define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +# define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +# define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +# define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +# define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +# define SSL_AD_MISSING_EXTENSION TLS13_AD_MISSING_EXTENSION +# define SSL_AD_CERTIFICATE_REQUIRED TLS13_AD_CERTIFICATE_REQUIRED +# define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +# define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +# define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +# define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +# define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +# define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +# define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +# define SSL_AD_NO_APPLICATION_PROTOCOL TLS1_AD_NO_APPLICATION_PROTOCOL +# define SSL_ERROR_NONE 0 +# define SSL_ERROR_SSL 1 +# define SSL_ERROR_WANT_READ 2 +# define SSL_ERROR_WANT_WRITE 3 +# define SSL_ERROR_WANT_X509_LOOKUP 4 +# define SSL_ERROR_SYSCALL 5/* look at error stack/return + * value/errno */ +# define SSL_ERROR_ZERO_RETURN 6 +# define SSL_ERROR_WANT_CONNECT 7 +# define SSL_ERROR_WANT_ACCEPT 8 +# define SSL_ERROR_WANT_ASYNC 9 +# define SSL_ERROR_WANT_ASYNC_JOB 10 +# define SSL_ERROR_WANT_CLIENT_HELLO_CB 11 +# define SSL_CTRL_SET_TMP_DH 3 +# define SSL_CTRL_SET_TMP_ECDH 4 +# define SSL_CTRL_SET_TMP_DH_CB 6 +# define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 +# define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 +# define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +# define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +# define SSL_CTRL_GET_FLAGS 13 +# define SSL_CTRL_EXTRA_CHAIN_CERT 14 +# define SSL_CTRL_SET_MSG_CALLBACK 15 +# define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 +/* only applies to datagram connections */ +# define SSL_CTRL_SET_MTU 17 +/* Stats */ +# define SSL_CTRL_SESS_NUMBER 20 +# define SSL_CTRL_SESS_CONNECT 21 +# define SSL_CTRL_SESS_CONNECT_GOOD 22 +# define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 +# define SSL_CTRL_SESS_ACCEPT 24 +# define SSL_CTRL_SESS_ACCEPT_GOOD 25 +# define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 +# define SSL_CTRL_SESS_HIT 27 +# define SSL_CTRL_SESS_CB_HIT 28 +# define SSL_CTRL_SESS_MISSES 29 +# define SSL_CTRL_SESS_TIMEOUTS 30 +# define SSL_CTRL_SESS_CACHE_FULL 31 +# define SSL_CTRL_MODE 33 +# define SSL_CTRL_GET_READ_AHEAD 40 +# define SSL_CTRL_SET_READ_AHEAD 41 +# define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +# define SSL_CTRL_GET_SESS_CACHE_SIZE 43 +# define SSL_CTRL_SET_SESS_CACHE_MODE 44 +# define SSL_CTRL_GET_SESS_CACHE_MODE 45 +# define SSL_CTRL_GET_MAX_CERT_LIST 50 +# define SSL_CTRL_SET_MAX_CERT_LIST 51 +# define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 +/* see tls1.h for macros based on these */ +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 +# define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 +# define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 +# define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +# define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */ +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 +# define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 +# define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 +# define SSL_CTRL_SET_SRP_ARG 78 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 +# define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 +# define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT 85 +# define SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING 86 +# define SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS 87 +# endif +# define DTLS_CTRL_GET_TIMEOUT 73 +# define DTLS_CTRL_HANDLE_TIMEOUT 74 +# define SSL_CTRL_GET_RI_SUPPORT 76 +# define SSL_CTRL_CLEAR_MODE 78 +# define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79 +# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +# define SSL_CTRL_CHAIN 88 +# define SSL_CTRL_CHAIN_CERT 89 +# define SSL_CTRL_GET_GROUPS 90 +# define SSL_CTRL_SET_GROUPS 91 +# define SSL_CTRL_SET_GROUPS_LIST 92 +# define SSL_CTRL_GET_SHARED_GROUP 93 +# define SSL_CTRL_SET_SIGALGS 97 +# define SSL_CTRL_SET_SIGALGS_LIST 98 +# define SSL_CTRL_CERT_FLAGS 99 +# define SSL_CTRL_CLEAR_CERT_FLAGS 100 +# define SSL_CTRL_SET_CLIENT_SIGALGS 101 +# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +# define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +# define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +# define SSL_CTRL_BUILD_CERT_CHAIN 105 +# define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +# define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +# define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +# define SSL_CTRL_GET_PEER_TMP_KEY 109 +# define SSL_CTRL_GET_RAW_CIPHERLIST 110 +# define SSL_CTRL_GET_EC_POINT_FORMATS 111 +# define SSL_CTRL_GET_CHAIN_CERTS 115 +# define SSL_CTRL_SELECT_CURRENT_CERT 116 +# define SSL_CTRL_SET_CURRENT_CERT 117 +# define SSL_CTRL_SET_DH_AUTO 118 +# define DTLS_CTRL_SET_LINK_MTU 120 +# define DTLS_CTRL_GET_LINK_MIN_MTU 121 +# define SSL_CTRL_GET_EXTMS_SUPPORT 122 +# define SSL_CTRL_SET_MIN_PROTO_VERSION 123 +# define SSL_CTRL_SET_MAX_PROTO_VERSION 124 +# define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125 +# define SSL_CTRL_SET_MAX_PIPELINES 126 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129 +# define SSL_CTRL_GET_MIN_PROTO_VERSION 130 +# define SSL_CTRL_GET_MAX_PROTO_VERSION 131 +# define SSL_CTRL_GET_SIGNATURE_NID 132 +# define SSL_CTRL_GET_TMP_KEY 133 +# define SSL_CTRL_GET_VERIFY_CERT_STORE 137 +# define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CERT_SET_FIRST 1 +# define SSL_CERT_SET_NEXT 2 +# define SSL_CERT_SET_SERVER 3 +# define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)(arg)) +# define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL) +# define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL) +# define SSL_CTX_set_tmp_dh(ctx,dh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) +# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) +# define SSL_CTX_set_dh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_DH_AUTO,onoff,NULL) +# define SSL_set_dh_auto(s, onoff) \ + SSL_ctrl(s,SSL_CTRL_SET_DH_AUTO,onoff,NULL) +# define SSL_set_tmp_dh(ssl,dh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) +# define SSL_set_tmp_ecdh(ssl,ecdh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) +# define SSL_CTX_add_extra_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)(x509)) +# define SSL_CTX_get_extra_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509) +# define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509) +# define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL) +# define SSL_CTX_set0_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)(sk)) +# define SSL_CTX_set1_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)(sk)) +# define SSL_CTX_add0_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)(x509)) +# define SSL_CTX_add1_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)(x509)) +# define SSL_CTX_get0_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx,NULL) +# define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_CTX_select_current_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509)) +# define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_CTX_set0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set1_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st)) +# define SSL_CTX_get0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set1_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st)) +# define SSL_CTX_get0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_set0_chain(s,sk) \ + SSL_ctrl(s,SSL_CTRL_CHAIN,0,(char *)(sk)) +# define SSL_set1_chain(s,sk) \ + SSL_ctrl(s,SSL_CTRL_CHAIN,1,(char *)(sk)) +# define SSL_add0_chain_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,0,(char *)(x509)) +# define SSL_add1_chain_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,1,(char *)(x509)) +# define SSL_get0_chain_certs(s,px509) \ + SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_clear_chain_certs(s) \ + SSL_set0_chain(s,NULL) +# define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_select_current_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509)) +# define SSL_set_current_cert(s,op) \ + SSL_ctrl(s,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_set0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_set1_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st)) +#define SSL_get0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_set0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_set1_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st)) +#define SSL_get0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_get1_groups(s, glist) \ + SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_CTX_set1_groups(ctx, glist, glistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) +# define SSL_CTX_set1_groups_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_set1_groups(s, glist, glistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) +# define SSL_set1_groups_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(str)) +# define SSL_get_shared_group(s, n) \ + SSL_ctrl(s,SSL_CTRL_GET_SHARED_GROUP,n,NULL) +# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist)) +# define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(s)) +# define SSL_set1_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist)) +# define SSL_set1_sigalgs_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(str)) +# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist)) +# define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(s)) +# define SSL_set1_client_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist)) +# define SSL_set1_client_sigalgs_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(str)) +# define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist)) +# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen, \ + (char *)(clist)) +# define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) +# define SSL_get_peer_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_TMP_KEY,0,pk) +# define SSL_get_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_TMP_KEY,0,pk) +# define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,plst) +# define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,plst) +# define SSL_CTX_set_min_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +# define SSL_CTX_set_max_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +# define SSL_CTX_get_min_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +# define SSL_CTX_get_max_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +# define SSL_set_min_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +# define SSL_set_max_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +# define SSL_get_min_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +# define SSL_get_max_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) + +/* Backwards compatibility, original 1.1.0 names */ +# define SSL_CTRL_GET_SERVER_TMP_KEY \ + SSL_CTRL_GET_PEER_TMP_KEY +# define SSL_get_server_tmp_key(s, pk) \ + SSL_get_peer_tmp_key(s, pk) + +/* + * The following symbol names are old and obsolete. They are kept + * for compatibility reasons only and should not be used anymore. + */ +# define SSL_CTRL_GET_CURVES SSL_CTRL_GET_GROUPS +# define SSL_CTRL_SET_CURVES SSL_CTRL_SET_GROUPS +# define SSL_CTRL_SET_CURVES_LIST SSL_CTRL_SET_GROUPS_LIST +# define SSL_CTRL_GET_SHARED_CURVE SSL_CTRL_GET_SHARED_GROUP + +# define SSL_get1_curves SSL_get1_groups +# define SSL_CTX_set1_curves SSL_CTX_set1_groups +# define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list +# define SSL_set1_curves SSL_set1_groups +# define SSL_set1_curves_list SSL_set1_groups_list +# define SSL_get_shared_curve SSL_get_shared_group + + +# if OPENSSL_API_COMPAT < 0x10100000L +/* Provide some compatibility macros for removed functionality. */ +# define SSL_CTX_need_tmp_RSA(ctx) 0 +# define SSL_CTX_set_tmp_rsa(ctx,rsa) 1 +# define SSL_need_tmp_RSA(ssl) 0 +# define SSL_set_tmp_rsa(ssl,rsa) 1 +# define SSL_CTX_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +# define SSL_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +/* + * We "pretend" to call the callback to avoid warnings about unused static + * functions. + */ +# define SSL_CTX_set_tmp_rsa_callback(ctx, cb) while(0) (cb)(NULL, 0, 0) +# define SSL_set_tmp_rsa_callback(ssl, cb) while(0) (cb)(NULL, 0, 0) +# endif +__owur const BIO_METHOD *BIO_f_ssl(void); +__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +int SSL_CTX_up_ref(SSL_CTX *ctx); +void SSL_CTX_free(SSL_CTX *); +__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx); +__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); +__owur int SSL_want(const SSL *s); +__owur int SSL_clear(SSL *s); + +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); + +__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); +__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +__owur const char *OPENSSL_cipher_name(const char *rfc_name); +__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c); +__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c); +__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c); +__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c); + +__owur int SSL_get_fd(const SSL *s); +__owur int SSL_get_rfd(const SSL *s); +__owur int SSL_get_wfd(const SSL *s); +__owur const char *SSL_get_cipher_list(const SSL *s, int n); +__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size); +__owur int SSL_get_read_ahead(const SSL *s); +__owur int SSL_pending(const SSL *s); +__owur int SSL_has_pending(const SSL *s); +# ifndef OPENSSL_NO_SOCK +__owur int SSL_set_fd(SSL *s, int fd); +__owur int SSL_set_rfd(SSL *s, int fd); +__owur int SSL_set_wfd(SSL *s, int fd); +# endif +void SSL_set0_rbio(SSL *s, BIO *rbio); +void SSL_set0_wbio(SSL *s, BIO *wbio); +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +__owur BIO *SSL_get_rbio(const SSL *s); +__owur BIO *SSL_get_wbio(const SSL *s); +__owur int SSL_set_cipher_list(SSL *s, const char *str); +__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str); +__owur int SSL_set_ciphersuites(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +__owur int SSL_get_verify_mode(const SSL *s); +__owur int SSL_get_verify_depth(const SSL *s); +__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s); +void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg); +# ifndef OPENSSL_NO_RSA +__owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, const unsigned char *d, + long len); +# endif +__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +__owur int SSL_use_certificate(SSL *ssl, X509 *x); +__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); +__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + + +/* serverinfo file format versions */ +# define SSL_SERVERINFOV1 1 +# define SSL_SERVERINFOV2 2 + +/* Set serverinfo data for the current active cert. */ +__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, + const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); + +#ifndef OPENSSL_NO_RSA +__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +#endif + +__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type); + +#ifndef OPENSSL_NO_RSA +__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +#endif +__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, + int type); +/* PEM type */ +__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_load_error_strings() \ + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +# endif + +__owur const char *SSL_state_string(const SSL *s); +__owur const char *SSL_rstate_string(const SSL *s); +__owur const char *SSL_state_string_long(const SSL *s); +__owur const char *SSL_rstate_string_long(const SSL *s); +__owur long SSL_SESSION_get_time(const SSL_SESSION *s); +__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); +__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); +__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); + +__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); +__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); +void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, + const unsigned char **alpn, + size_t *len); +__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s, + const unsigned char *alpn, + size_t len); +__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); +__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher); +__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s); +__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s); +void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick, + size_t *len); +__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s); +__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s, + uint32_t max_early_data); +__owur int SSL_copy_session_id(SSL *to, const SSL *from); +__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); +__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, + unsigned int sid_len); +__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s); + +__owur SSL_SESSION *SSL_SESSION_new(void); +__owur SSL_SESSION *SSL_SESSION_dup(SSL_SESSION *src); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, + unsigned int *len); +__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +# ifndef OPENSSL_NO_STDIO +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +# endif +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x); +int SSL_SESSION_up_ref(SSL_SESSION *ses); +void SSL_SESSION_free(SSL_SESSION *ses); +__owur int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); +__owur int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session); +int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session); +__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); +__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb); +__owur int SSL_has_matching_session_id(const SSL *s, + const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); + +# ifdef HEADER_X509_H +__owur X509 *SSL_get_peer_certificate(const SSL *s); +# endif + +__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback); +void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); +void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, + int (*cb) (X509_STORE_CTX *, void *), + void *arg); +void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg), + void *arg); +# ifndef OPENSSL_NO_RSA +__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +# endif +__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); +__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); +pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx); +void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx); +void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb); +void SSL_set_default_passwd_cb_userdata(SSL *s, void *u); +pem_password_cb *SSL_get_default_passwd_cb(SSL *s); +void *SSL_get_default_passwd_cb_userdata(SSL *s); + +__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx); +__owur int SSL_check_private_key(const SSL *ctx); + +__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_up_ref(SSL *s); +int SSL_is_dtls(const SSL *s); +__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose); +__owur int SSL_set_purpose(SSL *ssl, int purpose); +__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); +__owur int SSL_set_trust(SSL *ssl, int trust); + +__owur int SSL_set1_host(SSL *s, const char *hostname); +__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur const char *SSL_get0_peername(SSL *s); +void SSL_set_hostflags(SSL *s, unsigned int flags); + +__owur int SSL_CTX_dane_enable(SSL_CTX *ctx); +__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md, + uint8_t mtype, uint8_t ord); +__owur int SSL_dane_enable(SSL *s, const char *basedomain); +__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector, + uint8_t mtype, unsigned const char *data, size_t dlen); +__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki); +__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector, + uint8_t *mtype, unsigned const char **data, + size_t *dlen); +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +SSL_DANE *SSL_get0_dane(SSL *ssl); +/* + * DANE flags + */ +unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags); +unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags); + +__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +__owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); + +# ifndef OPENSSL_NO_SRP +int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb) (SSL *, void *)); +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb) (SSL *, void *)); +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb) (SSL *, int *, void *)); +int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +__owur BIGNUM *SSL_get_srp_g(SSL *s); +__owur BIGNUM *SSL_get_srp_N(SSL *s); + +__owur char *SSL_get_srp_username(SSL *s); +__owur char *SSL_get_srp_userinfo(SSL *s); +# endif + +/* + * ClientHello callback and helpers. + */ + +# define SSL_CLIENT_HELLO_SUCCESS 1 +# define SSL_CLIENT_HELLO_ERROR 0 +# define SSL_CLIENT_HELLO_RETRY (-1) + +typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); +void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, + void *arg); +int SSL_client_hello_isv2(SSL *s); +unsigned int SSL_client_hello_get0_legacy_version(SSL *s); +size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_compression_methods(SSL *s, + const unsigned char **out); +int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get0_ext(SSL *s, unsigned int type, + const unsigned char **out, size_t *outlen); + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +# ifdef OSSL_ASYNC_FD +/* + * Windows application developer has to include windows.h to use these. + */ +__owur int SSL_waiting_for_async(SSL *s); +__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds); +__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +# endif +__owur int SSL_accept(SSL *ssl); +__owur int SSL_stateless(SSL *s); +__owur int SSL_connect(SSL *ssl); +__owur int SSL_read(SSL *ssl, void *buf, int num); +__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); + +# define SSL_READ_EARLY_DATA_ERROR 0 +# define SSL_READ_EARLY_DATA_SUCCESS 1 +# define SSL_READ_EARLY_DATA_FINISH 2 + +__owur int SSL_read_early_data(SSL *s, void *buf, size_t num, + size_t *readbytes); +__owur int SSL_peek(SSL *ssl, void *buf, int num); +__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); +__owur int SSL_write(SSL *ssl, const void *buf, int num); +__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written); +__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num, + size_t *written); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +# define SSL_EARLY_DATA_NOT_SENT 0 +# define SSL_EARLY_DATA_REJECTED 1 +# define SSL_EARLY_DATA_ACCEPTED 2 + +__owur int SSL_get_early_data_status(const SSL *s); + +__owur int SSL_get_error(const SSL *s, int ret_code); +__owur const char *SSL_get_version(const SSL *s); + +/* This sets the 'default' SSL version that SSL_new() will create */ +__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); + +# ifndef OPENSSL_NO_SSL3_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_method(void)) /* SSLv3 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_client_method(void)) +# endif + +#define SSLv23_method TLS_method +#define SSLv23_server_method TLS_server_method +#define SSLv23_client_method TLS_client_method + +/* Negotiate highest available SSL/TLS version */ +__owur const SSL_METHOD *TLS_method(void); +__owur const SSL_METHOD *TLS_server_method(void); +__owur const SSL_METHOD *TLS_client_method(void); + +# ifndef OPENSSL_NO_TLS1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_method(void)) /* TLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_TLS1_1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_method(void)) /* TLSv1.1 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_TLS1_2_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_method(void)) /* TLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_client_method(void)) +# endif + +# ifndef OPENSSL_NO_DTLS1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_method(void)) /* DTLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_DTLS1_2_METHOD +/* DTLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_client_method(void)) +# endif + +__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +__owur size_t DTLS_get_data_mtu(const SSL *s); + +__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx); +__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); + +__owur int SSL_do_handshake(SSL *s); +int SSL_key_update(SSL *s, int updatetype); +int SSL_get_key_update_type(const SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); +int SSL_shutdown(SSL *s); +__owur int SSL_verify_client_post_handshake(SSL *s); +void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); +void SSL_set_post_handshake_auth(SSL *s, int val); + +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); +__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +__owur const char *SSL_alert_type_string_long(int value); +__owur const char *SSL_alert_type_string(int value); +__owur const char *SSL_alert_desc_string_long(int value); +__owur const char *SSL_alert_desc_string(int value); + +void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s); +__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx); +__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x); +__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x); +__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +__owur int SSL_add_client_CA(SSL *ssl, X509 *x); +__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +__owur long SSL_get_default_timeout(const SSL *s); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_library_init() OPENSSL_init_ssl(0, NULL) +# endif + +__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk); + +__owur SSL *SSL_dup(SSL *ssl); + +__owur X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ +struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +__owur int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +__owur int SSL_get_shutdown(const SSL *ssl); +__owur int SSL_version(const SSL *ssl); +__owur int SSL_client_version(const SSL *s); +__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx); +__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, + const char *CApath); +# define SSL_get0_session SSL_get_session/* just peek at pointer */ +__owur SSL_SESSION *SSL_get_session(const SSL *ssl); +__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb) (const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type, + int val); +__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); + +void SSL_set_verify_result(SSL *ssl, long v); +__owur long SSL_get_verify_result(const SSL *ssl); +__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s); + +__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess, + unsigned char *out, size_t outlen); +__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess, + const unsigned char *in, size_t len); +uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess); + +#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef) +__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef) +__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef) +__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); + +__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +# define SSL_CTX_sess_set_cache_size(ctx,t) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL) +# define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL) +# define SSL_CTX_set_session_cache_mode(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL) +# define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL) + +# define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +# define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m) +# define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) +# define SSL_CTX_set_read_ahead(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL) +# define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_CTX_set_max_cert_list(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) +# define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_set_max_cert_list(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) + +# define SSL_CTX_set_max_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) +# define SSL_set_max_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) +# define SSL_CTX_set_split_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL) +# define SSL_set_split_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL) +# define SSL_CTX_set_max_pipelines(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_PIPELINES,m,NULL) +# define SSL_set_max_pipelines(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_PIPELINES,m,NULL) + +void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len); +void SSL_set_default_read_buffer_len(SSL *s, size_t len); + +# ifndef OPENSSL_NO_DH +/* NB: the |keylength| is only applicable when is_export is true */ +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +# endif + +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); +__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); +__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); +__owur int SSL_COMP_get_id(const SSL_COMP *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_COMP_free_compression_methods() while(0) continue +# endif +__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); +int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c); +int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c); +int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len, + int isv2format, STACK_OF(SSL_CIPHER) **sk, + STACK_OF(SSL_CIPHER) **scsvs); + +/* TLS extensions functions */ +__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +__owur int SSL_set_session_ticket_ext_cb(SSL *s, + tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +__owur int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn session_secret_cb, + void *arg); + +void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, + int (*cb) (SSL *ssl, + int + is_forward_secure)); + +void SSL_set_not_resumable_session_callback(SSL *ssl, + int (*cb) (SSL *ssl, + int is_forward_secure)); + +void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, + size_t (*cb) (SSL *ssl, int type, + size_t len, void *arg)); +void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); +int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); + +void SSL_set_record_padding_callback(SSL *ssl, + size_t (*cb) (SSL *ssl, int type, + size_t len, void *arg)); +void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); +int SSL_set_block_padding(SSL *ssl, size_t block_size); + +int SSL_set_num_tickets(SSL *s, size_t num_tickets); +size_t SSL_get_num_tickets(const SSL *s); +int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_cache_hit(s) SSL_session_reused(s) +# endif + +__owur int SSL_session_reused(const SSL *s); +__owur int SSL_is_server(const SSL *s); + +__owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, + unsigned int flags); +__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +void SSL_add_ssl_module(void); +int SSL_config(SSL *s, const char *name); +int SSL_CTX_config(SSL_CTX *ctx, const char *name); + +# ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +# endif + +# ifndef OPENSSL_NO_SOCK +int DTLSv1_listen(SSL *s, BIO_ADDR *client); +# endif + +# ifndef OPENSSL_NO_CT + +/* + * A callback for verifying that the received SCTs are sufficient. + * Expected to return 1 if they are sufficient, otherwise 0. + * May return a negative integer if an error occurs. + * A connection should be aborted if the SCTs are deemed insufficient. + */ +typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, + const STACK_OF(SCT) *scts, void *arg); + +/* + * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate + * the received SCTs. + * If the callback returns a non-positive result, the connection is terminated. + * Call this function before beginning a handshake. + * If a NULL |callback| is provided, SCT validation is disabled. + * |arg| is arbitrary userdata that will be passed to the callback whenever it + * is invoked. Ownership of |arg| remains with the caller. + * + * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response + * will be requested. + */ +int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, + void *arg); +int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, + ssl_ct_validation_cb callback, + void *arg); +#define SSL_disable_ct(s) \ + ((void) SSL_set_validation_callback((s), NULL, NULL)) +#define SSL_CTX_disable_ct(ctx) \ + ((void) SSL_CTX_set_validation_callback((ctx), NULL, NULL)) + +/* + * The validation type enumerates the available behaviours of the built-in SSL + * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct(). + * The underlying callback is a static function in libssl. + */ +enum { + SSL_CT_VALIDATION_PERMISSIVE = 0, + SSL_CT_VALIDATION_STRICT +}; + +/* + * Enable CT by setting up a callback that implements one of the built-in + * validation variants. The SSL_CT_VALIDATION_PERMISSIVE variant always + * continues the handshake, the application can make appropriate decisions at + * handshake completion. The SSL_CT_VALIDATION_STRICT variant requires at + * least one valid SCT, or else handshake termination will be requested. The + * handshake may continue anyway if SSL_VERIFY_NONE is in effect. + */ +int SSL_enable_ct(SSL *s, int validation_mode); +int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); + +/* + * Report whether a non-NULL callback is enabled. + */ +int SSL_ct_is_enabled(const SSL *s); +int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx); + +/* Gets the SCTs received from a connection */ +const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s); + +/* + * Loads the CT log list from the default location. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx); + +/* + * Loads the CT log list from the specified file path. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path); + +/* + * Sets the CT log list used by all SSL connections created from this SSL_CTX. + * Ownership of the CTLOG_STORE is transferred to the SSL_CTX. + */ +void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs); + +/* + * Gets the CT log list used by all SSL connections created from this SSL_CTX. + * This will be NULL unless one of the following functions has been called: + * - SSL_CTX_set_default_ctlog_list_file + * - SSL_CTX_set_ctlog_list_file + * - SSL_CTX_set_ctlog_store + */ +const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx); + +# endif /* OPENSSL_NO_CT */ + +/* What the "other" parameter contains in security callback */ +/* Mask for type */ +# define SSL_SECOP_OTHER_TYPE 0xffff0000 +# define SSL_SECOP_OTHER_NONE 0 +# define SSL_SECOP_OTHER_CIPHER (1 << 16) +# define SSL_SECOP_OTHER_CURVE (2 << 16) +# define SSL_SECOP_OTHER_DH (3 << 16) +# define SSL_SECOP_OTHER_PKEY (4 << 16) +# define SSL_SECOP_OTHER_SIGALG (5 << 16) +# define SSL_SECOP_OTHER_CERT (6 << 16) + +/* Indicated operation refers to peer key or certificate */ +# define SSL_SECOP_PEER 0x1000 + +/* Values for "op" parameter in security callback */ + +/* Called to filter ciphers */ +/* Ciphers client supports */ +# define SSL_SECOP_CIPHER_SUPPORTED (1 | SSL_SECOP_OTHER_CIPHER) +/* Cipher shared by client/server */ +# define SSL_SECOP_CIPHER_SHARED (2 | SSL_SECOP_OTHER_CIPHER) +/* Sanity check of cipher server selects */ +# define SSL_SECOP_CIPHER_CHECK (3 | SSL_SECOP_OTHER_CIPHER) +/* Curves supported by client */ +# define SSL_SECOP_CURVE_SUPPORTED (4 | SSL_SECOP_OTHER_CURVE) +/* Curves shared by client/server */ +# define SSL_SECOP_CURVE_SHARED (5 | SSL_SECOP_OTHER_CURVE) +/* Sanity check of curve server selects */ +# define SSL_SECOP_CURVE_CHECK (6 | SSL_SECOP_OTHER_CURVE) +/* Temporary DH key */ +# define SSL_SECOP_TMP_DH (7 | SSL_SECOP_OTHER_PKEY) +/* SSL/TLS version */ +# define SSL_SECOP_VERSION (9 | SSL_SECOP_OTHER_NONE) +/* Session tickets */ +# define SSL_SECOP_TICKET (10 | SSL_SECOP_OTHER_NONE) +/* Supported signature algorithms sent to peer */ +# define SSL_SECOP_SIGALG_SUPPORTED (11 | SSL_SECOP_OTHER_SIGALG) +/* Shared signature algorithm */ +# define SSL_SECOP_SIGALG_SHARED (12 | SSL_SECOP_OTHER_SIGALG) +/* Sanity check signature algorithm allowed */ +# define SSL_SECOP_SIGALG_CHECK (13 | SSL_SECOP_OTHER_SIGALG) +/* Used to get mask of supported public key signature algorithms */ +# define SSL_SECOP_SIGALG_MASK (14 | SSL_SECOP_OTHER_SIGALG) +/* Use to see if compression is allowed */ +# define SSL_SECOP_COMPRESSION (15 | SSL_SECOP_OTHER_NONE) +/* EE key in certificate */ +# define SSL_SECOP_EE_KEY (16 | SSL_SECOP_OTHER_CERT) +/* CA key in certificate */ +# define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT) +/* CA digest algorithm in certificate */ +# define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT) +/* Peer EE key in certificate */ +# define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER) +/* Peer CA key in certificate */ +# define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER) +/* Peer CA digest algorithm in certificate */ +# define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER) + +void SSL_set_security_level(SSL *s, int level); +__owur int SSL_get_security_level(const SSL *s); +void SSL_set_security_callback(SSL *s, + int (*cb) (const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_get_security_callback(const SSL *s)) (const SSL *s, + const SSL_CTX *ctx, int op, + int bits, int nid, void *other, + void *ex); +void SSL_set0_security_ex_data(SSL *s, void *ex); +__owur void *SSL_get0_security_ex_data(const SSL *s); + +void SSL_CTX_set_security_level(SSL_CTX *ctx, int level); +__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx); +void SSL_CTX_set_security_callback(SSL_CTX *ctx, + int (*cb) (const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx)) (const SSL *s, + const SSL_CTX *ctx, + int op, int bits, + int nid, + void *other, + void *ex); +void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex); +__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx); + +/* OPENSSL_INIT flag 0x010000 reserved for internal use */ +# define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L +# define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L + +# define OPENSSL_INIT_SSL_DEFAULT \ + (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS) + +int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); + +# ifndef OPENSSL_NO_UNIT_TEST +__owur const struct openssl_ssl_test_functions *SSL_test_functions(void); +# endif + +__owur int SSL_free_buffers(SSL *ssl); +__owur int SSL_alloc_buffers(SSL *ssl); + +/* Status codes passed to the decrypt session ticket callback. Some of these + * are for internal use only and are never passed to the callback. */ +typedef int SSL_TICKET_STATUS; + +/* Support for ticket appdata */ +/* fatal error, malloc failure */ +# define SSL_TICKET_FATAL_ERR_MALLOC 0 +/* fatal error, either from parsing or decrypting the ticket */ +# define SSL_TICKET_FATAL_ERR_OTHER 1 +/* No ticket present */ +# define SSL_TICKET_NONE 2 +/* Empty ticket present */ +# define SSL_TICKET_EMPTY 3 +/* the ticket couldn't be decrypted */ +# define SSL_TICKET_NO_DECRYPT 4 +/* a ticket was successfully decrypted */ +# define SSL_TICKET_SUCCESS 5 +/* same as above but the ticket needs to be renewed */ +# define SSL_TICKET_SUCCESS_RENEW 6 + +/* Return codes for the decrypt session ticket callback */ +typedef int SSL_TICKET_RETURN; + +/* An error occurred */ +#define SSL_TICKET_RETURN_ABORT 0 +/* Do not use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE 1 +/* Do not use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE_RENEW 2 +/* Use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE 3 +/* Use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE_RENEW 4 + +typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg); +typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss, + const unsigned char *keyname, + size_t keyname_length, + SSL_TICKET_STATUS status, + void *arg); +int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, + SSL_CTX_generate_session_ticket_fn gen_cb, + SSL_CTX_decrypt_session_ticket_fn dec_cb, + void *arg); +int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len); +int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); + +extern const char SSL_version_str[]; + +typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); + +void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); + + +typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/ssl2.h b/openSSL/lin64/include/openssl/ssl2.h new file mode 100644 index 0000000..5321bd2 --- /dev/null +++ b/openSSL/lin64/include/openssl/ssl2.h @@ -0,0 +1,24 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL2_H +# define HEADER_SSL2_H + +#ifdef __cplusplus +extern "C" { +#endif + +# define SSL2_VERSION 0x0002 + +# define SSL2_MT_CLIENT_HELLO 1 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin64/include/openssl/ssl3.h b/openSSL/lin64/include/openssl/ssl3.h new file mode 100644 index 0000000..07effba --- /dev/null +++ b/openSSL/lin64/include/openssl/ssl3.h @@ -0,0 +1,342 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL3_H +# define HEADER_SSL3_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Signalling cipher suite value from RFC 5746 + * (TLS_EMPTY_RENEGOTIATION_INFO_SCSV) + */ +# define SSL3_CK_SCSV 0x030000FF + +/* + * Signalling cipher suite value from draft-ietf-tls-downgrade-scsv-00 + * (TLS_FALLBACK_SCSV) + */ +# define SSL3_CK_FALLBACK_SCSV 0x03005600 + +# define SSL3_CK_RSA_NULL_MD5 0x03000001 +# define SSL3_CK_RSA_NULL_SHA 0x03000002 +# define SSL3_CK_RSA_RC4_40_MD5 0x03000003 +# define SSL3_CK_RSA_RC4_128_MD5 0x03000004 +# define SSL3_CK_RSA_RC4_128_SHA 0x03000005 +# define SSL3_CK_RSA_RC2_40_MD5 0x03000006 +# define SSL3_CK_RSA_IDEA_128_SHA 0x03000007 +# define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008 +# define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009 +# define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A + +# define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B +# define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C +# define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D +# define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E +# define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F +# define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010 + +# define SSL3_CK_DHE_DSS_DES_40_CBC_SHA 0x03000011 +# define SSL3_CK_EDH_DSS_DES_40_CBC_SHA SSL3_CK_DHE_DSS_DES_40_CBC_SHA +# define SSL3_CK_DHE_DSS_DES_64_CBC_SHA 0x03000012 +# define SSL3_CK_EDH_DSS_DES_64_CBC_SHA SSL3_CK_DHE_DSS_DES_64_CBC_SHA +# define SSL3_CK_DHE_DSS_DES_192_CBC3_SHA 0x03000013 +# define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA SSL3_CK_DHE_DSS_DES_192_CBC3_SHA +# define SSL3_CK_DHE_RSA_DES_40_CBC_SHA 0x03000014 +# define SSL3_CK_EDH_RSA_DES_40_CBC_SHA SSL3_CK_DHE_RSA_DES_40_CBC_SHA +# define SSL3_CK_DHE_RSA_DES_64_CBC_SHA 0x03000015 +# define SSL3_CK_EDH_RSA_DES_64_CBC_SHA SSL3_CK_DHE_RSA_DES_64_CBC_SHA +# define SSL3_CK_DHE_RSA_DES_192_CBC3_SHA 0x03000016 +# define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA SSL3_CK_DHE_RSA_DES_192_CBC3_SHA + +# define SSL3_CK_ADH_RC4_40_MD5 0x03000017 +# define SSL3_CK_ADH_RC4_128_MD5 0x03000018 +# define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019 +# define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A +# define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +# define SSL3_RFC_RSA_NULL_MD5 "TLS_RSA_WITH_NULL_MD5" +# define SSL3_RFC_RSA_NULL_SHA "TLS_RSA_WITH_NULL_SHA" +# define SSL3_RFC_RSA_DES_192_CBC3_SHA "TLS_RSA_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_ADH_DES_192_CBC_SHA "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_RSA_IDEA_128_SHA "TLS_RSA_WITH_IDEA_CBC_SHA" +# define SSL3_RFC_RSA_RC4_128_MD5 "TLS_RSA_WITH_RC4_128_MD5" +# define SSL3_RFC_RSA_RC4_128_SHA "TLS_RSA_WITH_RC4_128_SHA" +# define SSL3_RFC_ADH_RC4_128_MD5 "TLS_DH_anon_WITH_RC4_128_MD5" + +# define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5" +# define SSL3_TXT_RSA_NULL_SHA "NULL-SHA" +# define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5" +# define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5" +# define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA" +# define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5" +# define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA" +# define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA" +# define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA" +# define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA" + +# define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA" +# define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA" +# define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA" +# define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA" +# define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA" +# define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA" + +# define SSL3_TXT_DHE_DSS_DES_40_CBC_SHA "EXP-DHE-DSS-DES-CBC-SHA" +# define SSL3_TXT_DHE_DSS_DES_64_CBC_SHA "DHE-DSS-DES-CBC-SHA" +# define SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA "DHE-DSS-DES-CBC3-SHA" +# define SSL3_TXT_DHE_RSA_DES_40_CBC_SHA "EXP-DHE-RSA-DES-CBC-SHA" +# define SSL3_TXT_DHE_RSA_DES_64_CBC_SHA "DHE-RSA-DES-CBC-SHA" +# define SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA "DHE-RSA-DES-CBC3-SHA" + +/* + * This next block of six "EDH" labels is for backward compatibility with + * older versions of OpenSSL. New code should use the six "DHE" labels above + * instead: + */ +# define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA" +# define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA" +# define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA" +# define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA" +# define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA" +# define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA" + +# define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5" +# define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5" +# define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA" +# define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA" +# define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" + +# define SSL3_SSL_SESSION_ID_LENGTH 32 +# define SSL3_MAX_SSL_SESSION_ID_LENGTH 32 + +# define SSL3_MASTER_SECRET_SIZE 48 +# define SSL3_RANDOM_SIZE 32 +# define SSL3_SESSION_ID_SIZE 32 +# define SSL3_RT_HEADER_LENGTH 5 + +# define SSL3_HM_HEADER_LENGTH 4 + +# ifndef SSL3_ALIGN_PAYLOAD + /* + * Some will argue that this increases memory footprint, but it's not + * actually true. Point is that malloc has to return at least 64-bit aligned + * pointers, meaning that allocating 5 bytes wastes 3 bytes in either case. + * Suggested pre-gaping simply moves these wasted bytes from the end of + * allocated region to its front, but makes data payload aligned, which + * improves performance:-) + */ +# define SSL3_ALIGN_PAYLOAD 8 +# else +# if (SSL3_ALIGN_PAYLOAD&(SSL3_ALIGN_PAYLOAD-1))!=0 +# error "insane SSL3_ALIGN_PAYLOAD" +# undef SSL3_ALIGN_PAYLOAD +# endif +# endif + +/* + * This is the maximum MAC (digest) size used by the SSL library. Currently + * maximum of 20 is used by SHA1, but we reserve for future extension for + * 512-bit hashes. + */ + +# define SSL3_RT_MAX_MD_SIZE 64 + +/* + * Maximum block size used in all ciphersuites. Currently 16 for AES. + */ + +# define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16 + +# define SSL3_RT_MAX_EXTRA (16384) + +/* Maximum plaintext length: defined by SSL/TLS standards */ +# define SSL3_RT_MAX_PLAIN_LENGTH 16384 +/* Maximum compression overhead: defined by SSL/TLS standards */ +# define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024 + +/* + * The standards give a maximum encryption overhead of 1024 bytes. In + * practice the value is lower than this. The overhead is the maximum number + * of padding bytes (256) plus the mac size. + */ +# define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE) +# define SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD 256 + +/* + * OpenSSL currently only uses a padding length of at most one block so the + * send overhead is smaller. + */ + +# define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \ + (SSL_RT_MAX_CIPHER_BLOCK_SIZE + SSL3_RT_MAX_MD_SIZE) + +/* If compression isn't used don't include the compression overhead */ + +# ifdef OPENSSL_NO_COMP +# define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH +# else +# define SSL3_RT_MAX_COMPRESSED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH+SSL3_RT_MAX_COMPRESSED_OVERHEAD) +# endif +# define SSL3_RT_MAX_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_ENCRYPTED_OVERHEAD+SSL3_RT_MAX_COMPRESSED_LENGTH) +# define SSL3_RT_MAX_TLS13_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD) +# define SSL3_RT_MAX_PACKET_SIZE \ + (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH) + +# define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54" +# define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52" + +# define SSL3_VERSION 0x0300 +# define SSL3_VERSION_MAJOR 0x03 +# define SSL3_VERSION_MINOR 0x00 + +# define SSL3_RT_CHANGE_CIPHER_SPEC 20 +# define SSL3_RT_ALERT 21 +# define SSL3_RT_HANDSHAKE 22 +# define SSL3_RT_APPLICATION_DATA 23 +# define DTLS1_RT_HEARTBEAT 24 + +/* Pseudo content types to indicate additional parameters */ +# define TLS1_RT_CRYPTO 0x1000 +# define TLS1_RT_CRYPTO_PREMASTER (TLS1_RT_CRYPTO | 0x1) +# define TLS1_RT_CRYPTO_CLIENT_RANDOM (TLS1_RT_CRYPTO | 0x2) +# define TLS1_RT_CRYPTO_SERVER_RANDOM (TLS1_RT_CRYPTO | 0x3) +# define TLS1_RT_CRYPTO_MASTER (TLS1_RT_CRYPTO | 0x4) + +# define TLS1_RT_CRYPTO_READ 0x0000 +# define TLS1_RT_CRYPTO_WRITE 0x0100 +# define TLS1_RT_CRYPTO_MAC (TLS1_RT_CRYPTO | 0x5) +# define TLS1_RT_CRYPTO_KEY (TLS1_RT_CRYPTO | 0x6) +# define TLS1_RT_CRYPTO_IV (TLS1_RT_CRYPTO | 0x7) +# define TLS1_RT_CRYPTO_FIXED_IV (TLS1_RT_CRYPTO | 0x8) + +/* Pseudo content types for SSL/TLS header info */ +# define SSL3_RT_HEADER 0x100 +# define SSL3_RT_INNER_CONTENT_TYPE 0x101 + +# define SSL3_AL_WARNING 1 +# define SSL3_AL_FATAL 2 + +# define SSL3_AD_CLOSE_NOTIFY 0 +# define SSL3_AD_UNEXPECTED_MESSAGE 10/* fatal */ +# define SSL3_AD_BAD_RECORD_MAC 20/* fatal */ +# define SSL3_AD_DECOMPRESSION_FAILURE 30/* fatal */ +# define SSL3_AD_HANDSHAKE_FAILURE 40/* fatal */ +# define SSL3_AD_NO_CERTIFICATE 41 +# define SSL3_AD_BAD_CERTIFICATE 42 +# define SSL3_AD_UNSUPPORTED_CERTIFICATE 43 +# define SSL3_AD_CERTIFICATE_REVOKED 44 +# define SSL3_AD_CERTIFICATE_EXPIRED 45 +# define SSL3_AD_CERTIFICATE_UNKNOWN 46 +# define SSL3_AD_ILLEGAL_PARAMETER 47/* fatal */ + +# define TLS1_HB_REQUEST 1 +# define TLS1_HB_RESPONSE 2 + + +# define SSL3_CT_RSA_SIGN 1 +# define SSL3_CT_DSS_SIGN 2 +# define SSL3_CT_RSA_FIXED_DH 3 +# define SSL3_CT_DSS_FIXED_DH 4 +# define SSL3_CT_RSA_EPHEMERAL_DH 5 +# define SSL3_CT_DSS_EPHEMERAL_DH 6 +# define SSL3_CT_FORTEZZA_DMS 20 +/* + * SSL3_CT_NUMBER is used to size arrays and it must be large enough to + * contain all of the cert types defined for *either* SSLv3 and TLSv1. + */ +# define SSL3_CT_NUMBER 10 + +# if defined(TLS_CT_NUMBER) +# if TLS_CT_NUMBER != SSL3_CT_NUMBER +# error "SSL/TLS CT_NUMBER values do not match" +# endif +# endif + +/* No longer used as of OpenSSL 1.1.1 */ +# define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 + +/* Removed from OpenSSL 1.1.0 */ +# define TLS1_FLAGS_TLS_PADDING_BUG 0x0 + +# define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 + +/* Set if we encrypt then mac instead of usual mac then encrypt */ +# define TLS1_FLAGS_ENCRYPT_THEN_MAC_READ 0x0100 +# define TLS1_FLAGS_ENCRYPT_THEN_MAC TLS1_FLAGS_ENCRYPT_THEN_MAC_READ + +/* Set if extended master secret extension received from peer */ +# define TLS1_FLAGS_RECEIVED_EXTMS 0x0200 + +# define TLS1_FLAGS_ENCRYPT_THEN_MAC_WRITE 0x0400 + +# define TLS1_FLAGS_STATELESS 0x0800 + +/* Set if extended master secret extension required on renegotiation */ +# define TLS1_FLAGS_REQUIRED_EXTMS 0x1000 + +# define SSL3_MT_HELLO_REQUEST 0 +# define SSL3_MT_CLIENT_HELLO 1 +# define SSL3_MT_SERVER_HELLO 2 +# define SSL3_MT_NEWSESSION_TICKET 4 +# define SSL3_MT_END_OF_EARLY_DATA 5 +# define SSL3_MT_ENCRYPTED_EXTENSIONS 8 +# define SSL3_MT_CERTIFICATE 11 +# define SSL3_MT_SERVER_KEY_EXCHANGE 12 +# define SSL3_MT_CERTIFICATE_REQUEST 13 +# define SSL3_MT_SERVER_DONE 14 +# define SSL3_MT_CERTIFICATE_VERIFY 15 +# define SSL3_MT_CLIENT_KEY_EXCHANGE 16 +# define SSL3_MT_FINISHED 20 +# define SSL3_MT_CERTIFICATE_URL 21 +# define SSL3_MT_CERTIFICATE_STATUS 22 +# define SSL3_MT_SUPPLEMENTAL_DATA 23 +# define SSL3_MT_KEY_UPDATE 24 +# ifndef OPENSSL_NO_NEXTPROTONEG +# define SSL3_MT_NEXT_PROTO 67 +# endif +# define SSL3_MT_MESSAGE_HASH 254 +# define DTLS1_MT_HELLO_VERIFY_REQUEST 3 + +/* Dummy message type for handling CCS like a normal handshake message */ +# define SSL3_MT_CHANGE_CIPHER_SPEC 0x0101 + +# define SSL3_MT_CCS 1 + +/* These are used when changing over to a new cipher */ +# define SSL3_CC_READ 0x001 +# define SSL3_CC_WRITE 0x002 +# define SSL3_CC_CLIENT 0x010 +# define SSL3_CC_SERVER 0x020 +# define SSL3_CC_EARLY 0x040 +# define SSL3_CC_HANDSHAKE 0x080 +# define SSL3_CC_APPLICATION 0x100 +# define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT|SSL3_CC_WRITE) +# define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER|SSL3_CC_READ) +# define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT|SSL3_CC_READ) +# define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER|SSL3_CC_WRITE) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin64/include/openssl/sslerr.h b/openSSL/lin64/include/openssl/sslerr.h new file mode 100644 index 0000000..701d61c --- /dev/null +++ b/openSSL/lin64/include/openssl/sslerr.h @@ -0,0 +1,776 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSLERR_H +# define HEADER_SSLERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_SSL_strings(void); + +/* + * SSL function codes. + */ +# define SSL_F_ADD_CLIENT_KEY_SHARE_EXT 438 +# define SSL_F_ADD_KEY_SHARE 512 +# define SSL_F_BYTES_TO_CIPHER_LIST 519 +# define SSL_F_CHECK_SUITEB_CIPHER_LIST 331 +# define SSL_F_CIPHERSUITE_CB 622 +# define SSL_F_CONSTRUCT_CA_NAMES 552 +# define SSL_F_CONSTRUCT_KEY_EXCHANGE_TBS 553 +# define SSL_F_CONSTRUCT_STATEFUL_TICKET 636 +# define SSL_F_CONSTRUCT_STATELESS_TICKET 637 +# define SSL_F_CREATE_SYNTHETIC_MESSAGE_HASH 539 +# define SSL_F_CREATE_TICKET_PREQUEL 638 +# define SSL_F_CT_MOVE_SCTS 345 +# define SSL_F_CT_STRICT 349 +# define SSL_F_CUSTOM_EXT_ADD 554 +# define SSL_F_CUSTOM_EXT_PARSE 555 +# define SSL_F_D2I_SSL_SESSION 103 +# define SSL_F_DANE_CTX_ENABLE 347 +# define SSL_F_DANE_MTYPE_SET 393 +# define SSL_F_DANE_TLSA_ADD 394 +# define SSL_F_DERIVE_SECRET_KEY_AND_IV 514 +# define SSL_F_DO_DTLS1_WRITE 245 +# define SSL_F_DO_SSL3_WRITE 104 +# define SSL_F_DTLS1_BUFFER_RECORD 247 +# define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 318 +# define SSL_F_DTLS1_HEARTBEAT 305 +# define SSL_F_DTLS1_HM_FRAGMENT_NEW 623 +# define SSL_F_DTLS1_PREPROCESS_FRAGMENT 288 +# define SSL_F_DTLS1_PROCESS_BUFFERED_RECORDS 424 +# define SSL_F_DTLS1_PROCESS_RECORD 257 +# define SSL_F_DTLS1_READ_BYTES 258 +# define SSL_F_DTLS1_READ_FAILED 339 +# define SSL_F_DTLS1_RETRANSMIT_MESSAGE 390 +# define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 268 +# define SSL_F_DTLS1_WRITE_BYTES 545 +# define SSL_F_DTLSV1_LISTEN 350 +# define SSL_F_DTLS_CONSTRUCT_CHANGE_CIPHER_SPEC 371 +# define SSL_F_DTLS_CONSTRUCT_HELLO_VERIFY_REQUEST 385 +# define SSL_F_DTLS_GET_REASSEMBLED_MESSAGE 370 +# define SSL_F_DTLS_PROCESS_HELLO_VERIFY 386 +# define SSL_F_DTLS_RECORD_LAYER_NEW 635 +# define SSL_F_DTLS_WAIT_FOR_DRY 592 +# define SSL_F_EARLY_DATA_COUNT_OK 532 +# define SSL_F_FINAL_EARLY_DATA 556 +# define SSL_F_FINAL_EC_PT_FORMATS 485 +# define SSL_F_FINAL_EMS 486 +# define SSL_F_FINAL_KEY_SHARE 503 +# define SSL_F_FINAL_MAXFRAGMENTLEN 557 +# define SSL_F_FINAL_PSK 639 +# define SSL_F_FINAL_RENEGOTIATE 483 +# define SSL_F_FINAL_SERVER_NAME 558 +# define SSL_F_FINAL_SIG_ALGS 497 +# define SSL_F_GET_CERT_VERIFY_TBS_DATA 588 +# define SSL_F_NSS_KEYLOG_INT 500 +# define SSL_F_OPENSSL_INIT_SSL 342 +# define SSL_F_OSSL_STATEM_CLIENT13_READ_TRANSITION 436 +# define SSL_F_OSSL_STATEM_CLIENT13_WRITE_TRANSITION 598 +# define SSL_F_OSSL_STATEM_CLIENT_CONSTRUCT_MESSAGE 430 +# define SSL_F_OSSL_STATEM_CLIENT_POST_PROCESS_MESSAGE 593 +# define SSL_F_OSSL_STATEM_CLIENT_PROCESS_MESSAGE 594 +# define SSL_F_OSSL_STATEM_CLIENT_READ_TRANSITION 417 +# define SSL_F_OSSL_STATEM_CLIENT_WRITE_TRANSITION 599 +# define SSL_F_OSSL_STATEM_SERVER13_READ_TRANSITION 437 +# define SSL_F_OSSL_STATEM_SERVER13_WRITE_TRANSITION 600 +# define SSL_F_OSSL_STATEM_SERVER_CONSTRUCT_MESSAGE 431 +# define SSL_F_OSSL_STATEM_SERVER_POST_PROCESS_MESSAGE 601 +# define SSL_F_OSSL_STATEM_SERVER_POST_WORK 602 +# define SSL_F_OSSL_STATEM_SERVER_PRE_WORK 640 +# define SSL_F_OSSL_STATEM_SERVER_PROCESS_MESSAGE 603 +# define SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION 418 +# define SSL_F_OSSL_STATEM_SERVER_WRITE_TRANSITION 604 +# define SSL_F_PARSE_CA_NAMES 541 +# define SSL_F_PITEM_NEW 624 +# define SSL_F_PQUEUE_NEW 625 +# define SSL_F_PROCESS_KEY_SHARE_EXT 439 +# define SSL_F_READ_STATE_MACHINE 352 +# define SSL_F_SET_CLIENT_CIPHERSUITE 540 +# define SSL_F_SRP_GENERATE_CLIENT_MASTER_SECRET 595 +# define SSL_F_SRP_GENERATE_SERVER_MASTER_SECRET 589 +# define SSL_F_SRP_VERIFY_SERVER_PARAM 596 +# define SSL_F_SSL3_CHANGE_CIPHER_STATE 129 +# define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130 +# define SSL_F_SSL3_CTRL 213 +# define SSL_F_SSL3_CTX_CTRL 133 +# define SSL_F_SSL3_DIGEST_CACHED_RECORDS 293 +# define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 292 +# define SSL_F_SSL3_ENC 608 +# define SSL_F_SSL3_FINAL_FINISH_MAC 285 +# define SSL_F_SSL3_FINISH_MAC 587 +# define SSL_F_SSL3_GENERATE_KEY_BLOCK 238 +# define SSL_F_SSL3_GENERATE_MASTER_SECRET 388 +# define SSL_F_SSL3_GET_RECORD 143 +# define SSL_F_SSL3_INIT_FINISHED_MAC 397 +# define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 +# define SSL_F_SSL3_READ_BYTES 148 +# define SSL_F_SSL3_READ_N 149 +# define SSL_F_SSL3_SETUP_KEY_BLOCK 157 +# define SSL_F_SSL3_SETUP_READ_BUFFER 156 +# define SSL_F_SSL3_SETUP_WRITE_BUFFER 291 +# define SSL_F_SSL3_WRITE_BYTES 158 +# define SSL_F_SSL3_WRITE_PENDING 159 +# define SSL_F_SSL_ADD_CERT_CHAIN 316 +# define SSL_F_SSL_ADD_CERT_TO_BUF 319 +# define SSL_F_SSL_ADD_CERT_TO_WPACKET 493 +# define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 298 +# define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 277 +# define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 307 +# define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 215 +# define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 216 +# define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 299 +# define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 278 +# define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 308 +# define SSL_F_SSL_BAD_METHOD 160 +# define SSL_F_SSL_BUILD_CERT_CHAIN 332 +# define SSL_F_SSL_BYTES_TO_CIPHER_LIST 161 +# define SSL_F_SSL_CACHE_CIPHERLIST 520 +# define SSL_F_SSL_CERT_ADD0_CHAIN_CERT 346 +# define SSL_F_SSL_CERT_DUP 221 +# define SSL_F_SSL_CERT_NEW 162 +# define SSL_F_SSL_CERT_SET0_CHAIN 340 +# define SSL_F_SSL_CHECK_PRIVATE_KEY 163 +# define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 280 +# define SSL_F_SSL_CHECK_SRP_EXT_CLIENTHELLO 606 +# define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 279 +# define SSL_F_SSL_CHOOSE_CLIENT_VERSION 607 +# define SSL_F_SSL_CIPHER_DESCRIPTION 626 +# define SSL_F_SSL_CIPHER_LIST_TO_BYTES 425 +# define SSL_F_SSL_CIPHER_PROCESS_RULESTR 230 +# define SSL_F_SSL_CIPHER_STRENGTH_SORT 231 +# define SSL_F_SSL_CLEAR 164 +# define SSL_F_SSL_CLIENT_HELLO_GET1_EXTENSIONS_PRESENT 627 +# define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 165 +# define SSL_F_SSL_CONF_CMD 334 +# define SSL_F_SSL_CREATE_CIPHER_LIST 166 +# define SSL_F_SSL_CTRL 232 +# define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168 +# define SSL_F_SSL_CTX_ENABLE_CT 398 +# define SSL_F_SSL_CTX_MAKE_PROFILES 309 +# define SSL_F_SSL_CTX_NEW 169 +# define SSL_F_SSL_CTX_SET_ALPN_PROTOS 343 +# define SSL_F_SSL_CTX_SET_CIPHER_LIST 269 +# define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 290 +# define SSL_F_SSL_CTX_SET_CT_VALIDATION_CALLBACK 396 +# define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219 +# define SSL_F_SSL_CTX_SET_SSL_VERSION 170 +# define SSL_F_SSL_CTX_SET_TLSEXT_MAX_FRAGMENT_LENGTH 551 +# define SSL_F_SSL_CTX_USE_CERTIFICATE 171 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 173 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY 174 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176 +# define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 272 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179 +# define SSL_F_SSL_CTX_USE_SERVERINFO 336 +# define SSL_F_SSL_CTX_USE_SERVERINFO_EX 543 +# define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 337 +# define SSL_F_SSL_DANE_DUP 403 +# define SSL_F_SSL_DANE_ENABLE 395 +# define SSL_F_SSL_DERIVE 590 +# define SSL_F_SSL_DO_CONFIG 391 +# define SSL_F_SSL_DO_HANDSHAKE 180 +# define SSL_F_SSL_DUP_CA_LIST 408 +# define SSL_F_SSL_ENABLE_CT 402 +# define SSL_F_SSL_GENERATE_PKEY_GROUP 559 +# define SSL_F_SSL_GENERATE_SESSION_ID 547 +# define SSL_F_SSL_GET_NEW_SESSION 181 +# define SSL_F_SSL_GET_PREV_SESSION 217 +# define SSL_F_SSL_GET_SERVER_CERT_INDEX 322 +# define SSL_F_SSL_GET_SIGN_PKEY 183 +# define SSL_F_SSL_HANDSHAKE_HASH 560 +# define SSL_F_SSL_INIT_WBIO_BUFFER 184 +# define SSL_F_SSL_KEY_UPDATE 515 +# define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 +# define SSL_F_SSL_LOG_MASTER_SECRET 498 +# define SSL_F_SSL_LOG_RSA_CLIENT_KEY_EXCHANGE 499 +# define SSL_F_SSL_MODULE_INIT 392 +# define SSL_F_SSL_NEW 186 +# define SSL_F_SSL_NEXT_PROTO_VALIDATE 565 +# define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 300 +# define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 302 +# define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 310 +# define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 301 +# define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 303 +# define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 311 +# define SSL_F_SSL_PEEK 270 +# define SSL_F_SSL_PEEK_EX 432 +# define SSL_F_SSL_PEEK_INTERNAL 522 +# define SSL_F_SSL_READ 223 +# define SSL_F_SSL_READ_EARLY_DATA 529 +# define SSL_F_SSL_READ_EX 434 +# define SSL_F_SSL_READ_INTERNAL 523 +# define SSL_F_SSL_RENEGOTIATE 516 +# define SSL_F_SSL_RENEGOTIATE_ABBREVIATED 546 +# define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 320 +# define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 321 +# define SSL_F_SSL_SESSION_DUP 348 +# define SSL_F_SSL_SESSION_NEW 189 +# define SSL_F_SSL_SESSION_PRINT_FP 190 +# define SSL_F_SSL_SESSION_SET1_ID 423 +# define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 312 +# define SSL_F_SSL_SET_ALPN_PROTOS 344 +# define SSL_F_SSL_SET_CERT 191 +# define SSL_F_SSL_SET_CERT_AND_KEY 621 +# define SSL_F_SSL_SET_CIPHER_LIST 271 +# define SSL_F_SSL_SET_CT_VALIDATION_CALLBACK 399 +# define SSL_F_SSL_SET_FD 192 +# define SSL_F_SSL_SET_PKEY 193 +# define SSL_F_SSL_SET_RFD 194 +# define SSL_F_SSL_SET_SESSION 195 +# define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218 +# define SSL_F_SSL_SET_SESSION_TICKET_EXT 294 +# define SSL_F_SSL_SET_TLSEXT_MAX_FRAGMENT_LENGTH 550 +# define SSL_F_SSL_SET_WFD 196 +# define SSL_F_SSL_SHUTDOWN 224 +# define SSL_F_SSL_SRP_CTX_INIT 313 +# define SSL_F_SSL_START_ASYNC_JOB 389 +# define SSL_F_SSL_UNDEFINED_FUNCTION 197 +# define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 244 +# define SSL_F_SSL_USE_CERTIFICATE 198 +# define SSL_F_SSL_USE_CERTIFICATE_ASN1 199 +# define SSL_F_SSL_USE_CERTIFICATE_FILE 200 +# define SSL_F_SSL_USE_PRIVATEKEY 201 +# define SSL_F_SSL_USE_PRIVATEKEY_ASN1 202 +# define SSL_F_SSL_USE_PRIVATEKEY_FILE 203 +# define SSL_F_SSL_USE_PSK_IDENTITY_HINT 273 +# define SSL_F_SSL_USE_RSAPRIVATEKEY 204 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 205 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 206 +# define SSL_F_SSL_VALIDATE_CT 400 +# define SSL_F_SSL_VERIFY_CERT_CHAIN 207 +# define SSL_F_SSL_VERIFY_CLIENT_POST_HANDSHAKE 616 +# define SSL_F_SSL_WRITE 208 +# define SSL_F_SSL_WRITE_EARLY_DATA 526 +# define SSL_F_SSL_WRITE_EARLY_FINISH 527 +# define SSL_F_SSL_WRITE_EX 433 +# define SSL_F_SSL_WRITE_INTERNAL 524 +# define SSL_F_STATE_MACHINE 353 +# define SSL_F_TLS12_CHECK_PEER_SIGALG 333 +# define SSL_F_TLS12_COPY_SIGALGS 533 +# define SSL_F_TLS13_CHANGE_CIPHER_STATE 440 +# define SSL_F_TLS13_ENC 609 +# define SSL_F_TLS13_FINAL_FINISH_MAC 605 +# define SSL_F_TLS13_GENERATE_SECRET 591 +# define SSL_F_TLS13_HKDF_EXPAND 561 +# define SSL_F_TLS13_RESTORE_HANDSHAKE_DIGEST_FOR_PHA 617 +# define SSL_F_TLS13_SAVE_HANDSHAKE_DIGEST_FOR_PHA 618 +# define SSL_F_TLS13_SETUP_KEY_BLOCK 441 +# define SSL_F_TLS1_CHANGE_CIPHER_STATE 209 +# define SSL_F_TLS1_CHECK_DUPLICATE_EXTENSIONS 341 +# define SSL_F_TLS1_ENC 401 +# define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 314 +# define SSL_F_TLS1_GET_CURVELIST 338 +# define SSL_F_TLS1_PRF 284 +# define SSL_F_TLS1_SAVE_U16 628 +# define SSL_F_TLS1_SETUP_KEY_BLOCK 211 +# define SSL_F_TLS1_SET_GROUPS 629 +# define SSL_F_TLS1_SET_RAW_SIGALGS 630 +# define SSL_F_TLS1_SET_SERVER_SIGALGS 335 +# define SSL_F_TLS1_SET_SHARED_SIGALGS 631 +# define SSL_F_TLS1_SET_SIGALGS 632 +# define SSL_F_TLS_CHOOSE_SIGALG 513 +# define SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK 354 +# define SSL_F_TLS_COLLECT_EXTENSIONS 435 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_AUTHORITIES 542 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST 372 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS 429 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS_BODY 494 +# define SSL_F_TLS_CONSTRUCT_CERT_VERIFY 496 +# define SSL_F_TLS_CONSTRUCT_CHANGE_CIPHER_SPEC 427 +# define SSL_F_TLS_CONSTRUCT_CKE_DHE 404 +# define SSL_F_TLS_CONSTRUCT_CKE_ECDHE 405 +# define SSL_F_TLS_CONSTRUCT_CKE_GOST 406 +# define SSL_F_TLS_CONSTRUCT_CKE_PSK_PREAMBLE 407 +# define SSL_F_TLS_CONSTRUCT_CKE_RSA 409 +# define SSL_F_TLS_CONSTRUCT_CKE_SRP 410 +# define SSL_F_TLS_CONSTRUCT_CLIENT_CERTIFICATE 484 +# define SSL_F_TLS_CONSTRUCT_CLIENT_HELLO 487 +# define SSL_F_TLS_CONSTRUCT_CLIENT_KEY_EXCHANGE 488 +# define SSL_F_TLS_CONSTRUCT_CLIENT_VERIFY 489 +# define SSL_F_TLS_CONSTRUCT_CTOS_ALPN 466 +# define SSL_F_TLS_CONSTRUCT_CTOS_CERTIFICATE 355 +# define SSL_F_TLS_CONSTRUCT_CTOS_COOKIE 535 +# define SSL_F_TLS_CONSTRUCT_CTOS_EARLY_DATA 530 +# define SSL_F_TLS_CONSTRUCT_CTOS_EC_PT_FORMATS 467 +# define SSL_F_TLS_CONSTRUCT_CTOS_EMS 468 +# define SSL_F_TLS_CONSTRUCT_CTOS_ETM 469 +# define SSL_F_TLS_CONSTRUCT_CTOS_HELLO 356 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_EXCHANGE 357 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_SHARE 470 +# define SSL_F_TLS_CONSTRUCT_CTOS_MAXFRAGMENTLEN 549 +# define SSL_F_TLS_CONSTRUCT_CTOS_NPN 471 +# define SSL_F_TLS_CONSTRUCT_CTOS_PADDING 472 +# define SSL_F_TLS_CONSTRUCT_CTOS_POST_HANDSHAKE_AUTH 619 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK 501 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK_KEX_MODES 509 +# define SSL_F_TLS_CONSTRUCT_CTOS_RENEGOTIATE 473 +# define SSL_F_TLS_CONSTRUCT_CTOS_SCT 474 +# define SSL_F_TLS_CONSTRUCT_CTOS_SERVER_NAME 475 +# define SSL_F_TLS_CONSTRUCT_CTOS_SESSION_TICKET 476 +# define SSL_F_TLS_CONSTRUCT_CTOS_SIG_ALGS 477 +# define SSL_F_TLS_CONSTRUCT_CTOS_SRP 478 +# define SSL_F_TLS_CONSTRUCT_CTOS_STATUS_REQUEST 479 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_GROUPS 480 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_VERSIONS 481 +# define SSL_F_TLS_CONSTRUCT_CTOS_USE_SRTP 482 +# define SSL_F_TLS_CONSTRUCT_CTOS_VERIFY 358 +# define SSL_F_TLS_CONSTRUCT_ENCRYPTED_EXTENSIONS 443 +# define SSL_F_TLS_CONSTRUCT_END_OF_EARLY_DATA 536 +# define SSL_F_TLS_CONSTRUCT_EXTENSIONS 447 +# define SSL_F_TLS_CONSTRUCT_FINISHED 359 +# define SSL_F_TLS_CONSTRUCT_HELLO_REQUEST 373 +# define SSL_F_TLS_CONSTRUCT_HELLO_RETRY_REQUEST 510 +# define SSL_F_TLS_CONSTRUCT_KEY_UPDATE 517 +# define SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET 428 +# define SSL_F_TLS_CONSTRUCT_NEXT_PROTO 426 +# define SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE 490 +# define SSL_F_TLS_CONSTRUCT_SERVER_HELLO 491 +# define SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE 492 +# define SSL_F_TLS_CONSTRUCT_STOC_ALPN 451 +# define SSL_F_TLS_CONSTRUCT_STOC_CERTIFICATE 374 +# define SSL_F_TLS_CONSTRUCT_STOC_COOKIE 613 +# define SSL_F_TLS_CONSTRUCT_STOC_CRYPTOPRO_BUG 452 +# define SSL_F_TLS_CONSTRUCT_STOC_DONE 375 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA 531 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA_INFO 525 +# define SSL_F_TLS_CONSTRUCT_STOC_EC_PT_FORMATS 453 +# define SSL_F_TLS_CONSTRUCT_STOC_EMS 454 +# define SSL_F_TLS_CONSTRUCT_STOC_ETM 455 +# define SSL_F_TLS_CONSTRUCT_STOC_HELLO 376 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_EXCHANGE 377 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_SHARE 456 +# define SSL_F_TLS_CONSTRUCT_STOC_MAXFRAGMENTLEN 548 +# define SSL_F_TLS_CONSTRUCT_STOC_NEXT_PROTO_NEG 457 +# define SSL_F_TLS_CONSTRUCT_STOC_PSK 504 +# define SSL_F_TLS_CONSTRUCT_STOC_RENEGOTIATE 458 +# define SSL_F_TLS_CONSTRUCT_STOC_SERVER_NAME 459 +# define SSL_F_TLS_CONSTRUCT_STOC_SESSION_TICKET 460 +# define SSL_F_TLS_CONSTRUCT_STOC_STATUS_REQUEST 461 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_GROUPS 544 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_VERSIONS 611 +# define SSL_F_TLS_CONSTRUCT_STOC_USE_SRTP 462 +# define SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO 521 +# define SSL_F_TLS_FINISH_HANDSHAKE 597 +# define SSL_F_TLS_GET_MESSAGE_BODY 351 +# define SSL_F_TLS_GET_MESSAGE_HEADER 387 +# define SSL_F_TLS_HANDLE_ALPN 562 +# define SSL_F_TLS_HANDLE_STATUS_REQUEST 563 +# define SSL_F_TLS_PARSE_CERTIFICATE_AUTHORITIES 566 +# define SSL_F_TLS_PARSE_CLIENTHELLO_TLSEXT 449 +# define SSL_F_TLS_PARSE_CTOS_ALPN 567 +# define SSL_F_TLS_PARSE_CTOS_COOKIE 614 +# define SSL_F_TLS_PARSE_CTOS_EARLY_DATA 568 +# define SSL_F_TLS_PARSE_CTOS_EC_PT_FORMATS 569 +# define SSL_F_TLS_PARSE_CTOS_EMS 570 +# define SSL_F_TLS_PARSE_CTOS_KEY_SHARE 463 +# define SSL_F_TLS_PARSE_CTOS_MAXFRAGMENTLEN 571 +# define SSL_F_TLS_PARSE_CTOS_POST_HANDSHAKE_AUTH 620 +# define SSL_F_TLS_PARSE_CTOS_PSK 505 +# define SSL_F_TLS_PARSE_CTOS_PSK_KEX_MODES 572 +# define SSL_F_TLS_PARSE_CTOS_RENEGOTIATE 464 +# define SSL_F_TLS_PARSE_CTOS_SERVER_NAME 573 +# define SSL_F_TLS_PARSE_CTOS_SESSION_TICKET 574 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS 575 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS_CERT 615 +# define SSL_F_TLS_PARSE_CTOS_SRP 576 +# define SSL_F_TLS_PARSE_CTOS_STATUS_REQUEST 577 +# define SSL_F_TLS_PARSE_CTOS_SUPPORTED_GROUPS 578 +# define SSL_F_TLS_PARSE_CTOS_USE_SRTP 465 +# define SSL_F_TLS_PARSE_STOC_ALPN 579 +# define SSL_F_TLS_PARSE_STOC_COOKIE 534 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA 538 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA_INFO 528 +# define SSL_F_TLS_PARSE_STOC_EC_PT_FORMATS 580 +# define SSL_F_TLS_PARSE_STOC_KEY_SHARE 445 +# define SSL_F_TLS_PARSE_STOC_MAXFRAGMENTLEN 581 +# define SSL_F_TLS_PARSE_STOC_NPN 582 +# define SSL_F_TLS_PARSE_STOC_PSK 502 +# define SSL_F_TLS_PARSE_STOC_RENEGOTIATE 448 +# define SSL_F_TLS_PARSE_STOC_SCT 564 +# define SSL_F_TLS_PARSE_STOC_SERVER_NAME 583 +# define SSL_F_TLS_PARSE_STOC_SESSION_TICKET 584 +# define SSL_F_TLS_PARSE_STOC_STATUS_REQUEST 585 +# define SSL_F_TLS_PARSE_STOC_SUPPORTED_VERSIONS 612 +# define SSL_F_TLS_PARSE_STOC_USE_SRTP 446 +# define SSL_F_TLS_POST_PROCESS_CLIENT_HELLO 378 +# define SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE 384 +# define SSL_F_TLS_PREPARE_CLIENT_CERTIFICATE 360 +# define SSL_F_TLS_PROCESS_AS_HELLO_RETRY_REQUEST 610 +# define SSL_F_TLS_PROCESS_CERTIFICATE_REQUEST 361 +# define SSL_F_TLS_PROCESS_CERT_STATUS 362 +# define SSL_F_TLS_PROCESS_CERT_STATUS_BODY 495 +# define SSL_F_TLS_PROCESS_CERT_VERIFY 379 +# define SSL_F_TLS_PROCESS_CHANGE_CIPHER_SPEC 363 +# define SSL_F_TLS_PROCESS_CKE_DHE 411 +# define SSL_F_TLS_PROCESS_CKE_ECDHE 412 +# define SSL_F_TLS_PROCESS_CKE_GOST 413 +# define SSL_F_TLS_PROCESS_CKE_PSK_PREAMBLE 414 +# define SSL_F_TLS_PROCESS_CKE_RSA 415 +# define SSL_F_TLS_PROCESS_CKE_SRP 416 +# define SSL_F_TLS_PROCESS_CLIENT_CERTIFICATE 380 +# define SSL_F_TLS_PROCESS_CLIENT_HELLO 381 +# define SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE 382 +# define SSL_F_TLS_PROCESS_ENCRYPTED_EXTENSIONS 444 +# define SSL_F_TLS_PROCESS_END_OF_EARLY_DATA 537 +# define SSL_F_TLS_PROCESS_FINISHED 364 +# define SSL_F_TLS_PROCESS_HELLO_REQ 507 +# define SSL_F_TLS_PROCESS_HELLO_RETRY_REQUEST 511 +# define SSL_F_TLS_PROCESS_INITIAL_SERVER_FLIGHT 442 +# define SSL_F_TLS_PROCESS_KEY_EXCHANGE 365 +# define SSL_F_TLS_PROCESS_KEY_UPDATE 518 +# define SSL_F_TLS_PROCESS_NEW_SESSION_TICKET 366 +# define SSL_F_TLS_PROCESS_NEXT_PROTO 383 +# define SSL_F_TLS_PROCESS_SERVER_CERTIFICATE 367 +# define SSL_F_TLS_PROCESS_SERVER_DONE 368 +# define SSL_F_TLS_PROCESS_SERVER_HELLO 369 +# define SSL_F_TLS_PROCESS_SKE_DHE 419 +# define SSL_F_TLS_PROCESS_SKE_ECDHE 420 +# define SSL_F_TLS_PROCESS_SKE_PSK_PREAMBLE 421 +# define SSL_F_TLS_PROCESS_SKE_SRP 422 +# define SSL_F_TLS_PSK_DO_BINDER 506 +# define SSL_F_TLS_SCAN_CLIENTHELLO_TLSEXT 450 +# define SSL_F_TLS_SETUP_HANDSHAKE 508 +# define SSL_F_USE_CERTIFICATE_CHAIN_FILE 220 +# define SSL_F_WPACKET_INTERN_INIT_LEN 633 +# define SSL_F_WPACKET_START_SUB_PACKET_LEN__ 634 +# define SSL_F_WRITE_STATE_MACHINE 586 + +/* + * SSL reason codes. + */ +# define SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY 291 +# define SSL_R_APP_DATA_IN_HANDSHAKE 100 +# define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 +# define SSL_R_AT_LEAST_TLS_1_0_NEEDED_IN_FIPS_MODE 143 +# define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE 158 +# define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +# define SSL_R_BAD_CIPHER 186 +# define SSL_R_BAD_DATA 390 +# define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 +# define SSL_R_BAD_DECOMPRESSION 107 +# define SSL_R_BAD_DH_VALUE 102 +# define SSL_R_BAD_DIGEST_LENGTH 111 +# define SSL_R_BAD_EARLY_DATA 233 +# define SSL_R_BAD_ECC_CERT 304 +# define SSL_R_BAD_ECPOINT 306 +# define SSL_R_BAD_EXTENSION 110 +# define SSL_R_BAD_HANDSHAKE_LENGTH 332 +# define SSL_R_BAD_HANDSHAKE_STATE 236 +# define SSL_R_BAD_HELLO_REQUEST 105 +# define SSL_R_BAD_HRR_VERSION 263 +# define SSL_R_BAD_KEY_SHARE 108 +# define SSL_R_BAD_KEY_UPDATE 122 +# define SSL_R_BAD_LEGACY_VERSION 292 +# define SSL_R_BAD_LENGTH 271 +# define SSL_R_BAD_PACKET 240 +# define SSL_R_BAD_PACKET_LENGTH 115 +# define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +# define SSL_R_BAD_PSK 219 +# define SSL_R_BAD_PSK_IDENTITY 114 +# define SSL_R_BAD_RECORD_TYPE 443 +# define SSL_R_BAD_RSA_ENCRYPT 119 +# define SSL_R_BAD_SIGNATURE 123 +# define SSL_R_BAD_SRP_A_LENGTH 347 +# define SSL_R_BAD_SRP_PARAMETERS 371 +# define SSL_R_BAD_SRTP_MKI_VALUE 352 +# define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 +# define SSL_R_BAD_SSL_FILETYPE 124 +# define SSL_R_BAD_VALUE 384 +# define SSL_R_BAD_WRITE_RETRY 127 +# define SSL_R_BINDER_DOES_NOT_VERIFY 253 +# define SSL_R_BIO_NOT_SET 128 +# define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 +# define SSL_R_BN_LIB 130 +# define SSL_R_CALLBACK_FAILED 234 +# define SSL_R_CANNOT_CHANGE_CIPHER 109 +# define SSL_R_CA_DN_LENGTH_MISMATCH 131 +# define SSL_R_CA_KEY_TOO_SMALL 397 +# define SSL_R_CA_MD_TOO_WEAK 398 +# define SSL_R_CCS_RECEIVED_EARLY 133 +# define SSL_R_CERTIFICATE_VERIFY_FAILED 134 +# define SSL_R_CERT_CB_ERROR 377 +# define SSL_R_CERT_LENGTH_MISMATCH 135 +# define SSL_R_CIPHERSUITE_DIGEST_HAS_CHANGED 218 +# define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 +# define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138 +# define SSL_R_CLIENTHELLO_TLSEXT 226 +# define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 +# define SSL_R_COMPRESSION_DISABLED 343 +# define SSL_R_COMPRESSION_FAILURE 141 +# define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 +# define SSL_R_COMPRESSION_LIBRARY_ERROR 142 +# define SSL_R_CONNECTION_TYPE_NOT_SET 144 +# define SSL_R_CONTEXT_NOT_DANE_ENABLED 167 +# define SSL_R_COOKIE_GEN_CALLBACK_FAILURE 400 +# define SSL_R_COOKIE_MISMATCH 308 +# define SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED 206 +# define SSL_R_DANE_ALREADY_ENABLED 172 +# define SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL 173 +# define SSL_R_DANE_NOT_ENABLED 175 +# define SSL_R_DANE_TLSA_BAD_CERTIFICATE 180 +# define SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE 184 +# define SSL_R_DANE_TLSA_BAD_DATA_LENGTH 189 +# define SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH 192 +# define SSL_R_DANE_TLSA_BAD_MATCHING_TYPE 200 +# define SSL_R_DANE_TLSA_BAD_PUBLIC_KEY 201 +# define SSL_R_DANE_TLSA_BAD_SELECTOR 202 +# define SSL_R_DANE_TLSA_NULL_DATA 203 +# define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 +# define SSL_R_DATA_LENGTH_TOO_LONG 146 +# define SSL_R_DECRYPTION_FAILED 147 +# define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 +# define SSL_R_DH_KEY_TOO_SMALL 394 +# define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 +# define SSL_R_DIGEST_CHECK_FAILED 149 +# define SSL_R_DTLS_MESSAGE_TOO_BIG 334 +# define SSL_R_DUPLICATE_COMPRESSION_ID 309 +# define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 +# define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 +# define SSL_R_EE_KEY_TOO_SMALL 399 +# define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 +# define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 +# define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 +# define SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN 204 +# define SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE 194 +# define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 +# define SSL_R_EXTENSION_NOT_RECEIVED 279 +# define SSL_R_EXTRA_DATA_IN_MESSAGE 153 +# define SSL_R_EXT_LENGTH_MISMATCH 163 +# define SSL_R_FAILED_TO_INIT_ASYNC 405 +# define SSL_R_FRAGMENTED_CLIENT_HELLO 401 +# define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 +# define SSL_R_HTTPS_PROXY_REQUEST 155 +# define SSL_R_HTTP_REQUEST 156 +# define SSL_R_ILLEGAL_POINT_COMPRESSION 162 +# define SSL_R_ILLEGAL_SUITEB_DIGEST 380 +# define SSL_R_INAPPROPRIATE_FALLBACK 373 +# define SSL_R_INCONSISTENT_COMPRESSION 340 +# define SSL_R_INCONSISTENT_EARLY_DATA_ALPN 222 +# define SSL_R_INCONSISTENT_EARLY_DATA_SNI 231 +# define SSL_R_INCONSISTENT_EXTMS 104 +# define SSL_R_INSUFFICIENT_SECURITY 241 +# define SSL_R_INVALID_ALERT 205 +# define SSL_R_INVALID_CCS_MESSAGE 260 +# define SSL_R_INVALID_CERTIFICATE_OR_ALG 238 +# define SSL_R_INVALID_COMMAND 280 +# define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +# define SSL_R_INVALID_CONFIG 283 +# define SSL_R_INVALID_CONFIGURATION_NAME 113 +# define SSL_R_INVALID_CONTEXT 282 +# define SSL_R_INVALID_CT_VALIDATION_TYPE 212 +# define SSL_R_INVALID_KEY_UPDATE_TYPE 120 +# define SSL_R_INVALID_MAX_EARLY_DATA 174 +# define SSL_R_INVALID_NULL_CMD_NAME 385 +# define SSL_R_INVALID_SEQUENCE_NUMBER 402 +# define SSL_R_INVALID_SERVERINFO_DATA 388 +# define SSL_R_INVALID_SESSION_ID 999 +# define SSL_R_INVALID_SRP_USERNAME 357 +# define SSL_R_INVALID_STATUS_RESPONSE 328 +# define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 +# define SSL_R_LENGTH_MISMATCH 159 +# define SSL_R_LENGTH_TOO_LONG 404 +# define SSL_R_LENGTH_TOO_SHORT 160 +# define SSL_R_LIBRARY_BUG 274 +# define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +# define SSL_R_MISSING_DSA_SIGNING_CERT 165 +# define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 +# define SSL_R_MISSING_FATAL 256 +# define SSL_R_MISSING_PARAMETERS 290 +# define SSL_R_MISSING_PSK_KEX_MODES_EXTENSION 310 +# define SSL_R_MISSING_RSA_CERTIFICATE 168 +# define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 +# define SSL_R_MISSING_RSA_SIGNING_CERT 170 +# define SSL_R_MISSING_SIGALGS_EXTENSION 112 +# define SSL_R_MISSING_SIGNING_CERT 221 +# define SSL_R_MISSING_SRP_PARAM 358 +# define SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION 209 +# define SSL_R_MISSING_TMP_DH_KEY 171 +# define SSL_R_MISSING_TMP_ECDH_KEY 311 +# define SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA 293 +# define SSL_R_NOT_ON_RECORD_BOUNDARY 182 +# define SSL_R_NOT_REPLACING_CERTIFICATE 289 +# define SSL_R_NOT_SERVER 284 +# define SSL_R_NO_APPLICATION_PROTOCOL 235 +# define SSL_R_NO_CERTIFICATES_RETURNED 176 +# define SSL_R_NO_CERTIFICATE_ASSIGNED 177 +# define SSL_R_NO_CERTIFICATE_SET 179 +# define SSL_R_NO_CHANGE_FOLLOWING_HRR 214 +# define SSL_R_NO_CIPHERS_AVAILABLE 181 +# define SSL_R_NO_CIPHERS_SPECIFIED 183 +# define SSL_R_NO_CIPHER_MATCH 185 +# define SSL_R_NO_CLIENT_CERT_METHOD 331 +# define SSL_R_NO_COMPRESSION_SPECIFIED 187 +# define SSL_R_NO_COOKIE_CALLBACK_SET 287 +# define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 +# define SSL_R_NO_METHOD_SPECIFIED 188 +# define SSL_R_NO_PEM_EXTENSIONS 389 +# define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 +# define SSL_R_NO_PROTOCOLS_AVAILABLE 191 +# define SSL_R_NO_RENEGOTIATION 339 +# define SSL_R_NO_REQUIRED_DIGEST 324 +# define SSL_R_NO_SHARED_CIPHER 193 +# define SSL_R_NO_SHARED_GROUPS 410 +# define SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS 376 +# define SSL_R_NO_SRTP_PROFILES 359 +# define SSL_R_NO_SUITABLE_KEY_SHARE 101 +# define SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM 118 +# define SSL_R_NO_VALID_SCTS 216 +# define SSL_R_NO_VERIFY_COOKIE_CALLBACK 403 +# define SSL_R_NULL_SSL_CTX 195 +# define SSL_R_NULL_SSL_METHOD_PASSED 196 +# define SSL_R_OCSP_CALLBACK_FAILURE 294 +# define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 +# define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +# define SSL_R_OVERFLOW_ERROR 237 +# define SSL_R_PACKET_LENGTH_TOO_LONG 198 +# define SSL_R_PARSE_TLSEXT 227 +# define SSL_R_PATH_TOO_LONG 270 +# define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 +# define SSL_R_PEM_NAME_BAD_PREFIX 391 +# define SSL_R_PEM_NAME_TOO_SHORT 392 +# define SSL_R_PIPELINE_FAILURE 406 +# define SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR 278 +# define SSL_R_PRIVATE_KEY_MISMATCH 288 +# define SSL_R_PROTOCOL_IS_SHUTDOWN 207 +# define SSL_R_PSK_IDENTITY_NOT_FOUND 223 +# define SSL_R_PSK_NO_CLIENT_CB 224 +# define SSL_R_PSK_NO_SERVER_CB 225 +# define SSL_R_READ_BIO_NOT_SET 211 +# define SSL_R_READ_TIMEOUT_EXPIRED 312 +# define SSL_R_RECORD_LENGTH_MISMATCH 213 +# define SSL_R_RECORD_TOO_SMALL 298 +# define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 +# define SSL_R_RENEGOTIATION_ENCODING_ERR 336 +# define SSL_R_RENEGOTIATION_MISMATCH 337 +# define SSL_R_REQUEST_PENDING 285 +# define SSL_R_REQUEST_SENT 286 +# define SSL_R_REQUIRED_CIPHER_MISSING 215 +# define SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING 342 +# define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 +# define SSL_R_SCT_VERIFICATION_FAILED 208 +# define SSL_R_SERVERHELLO_TLSEXT 275 +# define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 +# define SSL_R_SHUTDOWN_WHILE_IN_INIT 407 +# define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 +# define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 +# define SSL_R_SRP_A_CALC 361 +# define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 +# define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 +# define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 +# define SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH 232 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 +# define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 +# define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 +# define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 +# define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 +# define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 +# define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 +# define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 +# define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 +# define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 +# define SSL_R_SSL_COMMAND_SECTION_EMPTY 117 +# define SSL_R_SSL_COMMAND_SECTION_NOT_FOUND 125 +# define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 +# define SSL_R_SSL_HANDSHAKE_FAILURE 229 +# define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 +# define SSL_R_SSL_NEGATIVE_LENGTH 372 +# define SSL_R_SSL_SECTION_EMPTY 126 +# define SSL_R_SSL_SECTION_NOT_FOUND 136 +# define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 +# define SSL_R_SSL_SESSION_ID_CONFLICT 302 +# define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 +# define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 +# define SSL_R_SSL_SESSION_ID_TOO_LONG 408 +# define SSL_R_SSL_SESSION_VERSION_MISMATCH 210 +# define SSL_R_STILL_IN_INIT 121 +# define SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED 1116 +# define SSL_R_TLSV13_ALERT_MISSING_EXTENSION 1109 +# define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 +# define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 +# define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 +# define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 +# define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 +# define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 +# define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 +# define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 +# define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 +# define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 +# define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 +# define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 +# define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 +# define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 +# define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 +# define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 +# define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 +# define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 +# define SSL_R_TLS_HEARTBEAT_PEER_DOESNT_ACCEPT 365 +# define SSL_R_TLS_HEARTBEAT_PENDING 366 +# define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 +# define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 +# define SSL_R_TOO_MANY_KEY_UPDATES 132 +# define SSL_R_TOO_MANY_WARN_ALERTS 409 +# define SSL_R_TOO_MUCH_EARLY_DATA 164 +# define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 +# define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 +# define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 +# define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 +# define SSL_R_UNEXPECTED_CCS_MESSAGE 262 +# define SSL_R_UNEXPECTED_END_OF_EARLY_DATA 178 +# define SSL_R_UNEXPECTED_MESSAGE 244 +# define SSL_R_UNEXPECTED_RECORD 245 +# define SSL_R_UNINITIALIZED 276 +# define SSL_R_UNKNOWN_ALERT_TYPE 246 +# define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 +# define SSL_R_UNKNOWN_CIPHER_RETURNED 248 +# define SSL_R_UNKNOWN_CIPHER_TYPE 249 +# define SSL_R_UNKNOWN_CMD_NAME 386 +# define SSL_R_UNKNOWN_COMMAND 139 +# define SSL_R_UNKNOWN_DIGEST 368 +# define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +# define SSL_R_UNKNOWN_PKEY_TYPE 251 +# define SSL_R_UNKNOWN_PROTOCOL 252 +# define SSL_R_UNKNOWN_SSL_VERSION 254 +# define SSL_R_UNKNOWN_STATE 255 +# define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 +# define SSL_R_UNSOLICITED_EXTENSION 217 +# define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 +# define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 +# define SSL_R_UNSUPPORTED_PROTOCOL 258 +# define SSL_R_UNSUPPORTED_SSL_VERSION 259 +# define SSL_R_UNSUPPORTED_STATUS_TYPE 329 +# define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 +# define SSL_R_VERSION_TOO_HIGH 166 +# define SSL_R_VERSION_TOO_LOW 396 +# define SSL_R_WRONG_CERTIFICATE_TYPE 383 +# define SSL_R_WRONG_CIPHER_RETURNED 261 +# define SSL_R_WRONG_CURVE 378 +# define SSL_R_WRONG_SIGNATURE_LENGTH 264 +# define SSL_R_WRONG_SIGNATURE_SIZE 265 +# define SSL_R_WRONG_SIGNATURE_TYPE 370 +# define SSL_R_WRONG_SSL_VERSION 266 +# define SSL_R_WRONG_VERSION_NUMBER 267 +# define SSL_R_X509_LIB 268 +# define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 + +#endif diff --git a/openSSL/lin64/include/openssl/stack.h b/openSSL/lin64/include/openssl/stack.h new file mode 100644 index 0000000..cfc0750 --- /dev/null +++ b/openSSL/lin64/include/openssl/stack.h @@ -0,0 +1,83 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_STACK_H +# define HEADER_STACK_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */ + +typedef int (*OPENSSL_sk_compfunc)(const void *, const void *); +typedef void (*OPENSSL_sk_freefunc)(void *); +typedef void *(*OPENSSL_sk_copyfunc)(const void *); + +int OPENSSL_sk_num(const OPENSSL_STACK *); +void *OPENSSL_sk_value(const OPENSSL_STACK *, int); + +void *OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data); + +OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_new_null(void); +OPENSSL_STACK *OPENSSL_sk_new_reserve(OPENSSL_sk_compfunc c, int n); +int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n); +void OPENSSL_sk_free(OPENSSL_STACK *); +void OPENSSL_sk_pop_free(OPENSSL_STACK *st, void (*func) (void *)); +OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *, + OPENSSL_sk_copyfunc c, + OPENSSL_sk_freefunc f); +int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where); +void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc); +void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p); +int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_unshift(OPENSSL_STACK *st, const void *data); +void *OPENSSL_sk_shift(OPENSSL_STACK *st); +void *OPENSSL_sk_pop(OPENSSL_STACK *st); +void OPENSSL_sk_zero(OPENSSL_STACK *st); +OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, + OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_dup(const OPENSSL_STACK *st); +void OPENSSL_sk_sort(OPENSSL_STACK *st); +int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define _STACK OPENSSL_STACK +# define sk_num OPENSSL_sk_num +# define sk_value OPENSSL_sk_value +# define sk_set OPENSSL_sk_set +# define sk_new OPENSSL_sk_new +# define sk_new_null OPENSSL_sk_new_null +# define sk_free OPENSSL_sk_free +# define sk_pop_free OPENSSL_sk_pop_free +# define sk_deep_copy OPENSSL_sk_deep_copy +# define sk_insert OPENSSL_sk_insert +# define sk_delete OPENSSL_sk_delete +# define sk_delete_ptr OPENSSL_sk_delete_ptr +# define sk_find OPENSSL_sk_find +# define sk_find_ex OPENSSL_sk_find_ex +# define sk_push OPENSSL_sk_push +# define sk_unshift OPENSSL_sk_unshift +# define sk_shift OPENSSL_sk_shift +# define sk_pop OPENSSL_sk_pop +# define sk_zero OPENSSL_sk_zero +# define sk_set_cmp_func OPENSSL_sk_set_cmp_func +# define sk_dup OPENSSL_sk_dup +# define sk_sort OPENSSL_sk_sort +# define sk_is_sorted OPENSSL_sk_is_sorted +# endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin64/include/openssl/store.h b/openSSL/lin64/include/openssl/store.h new file mode 100644 index 0000000..a40a733 --- /dev/null +++ b/openSSL/lin64/include/openssl/store.h @@ -0,0 +1,266 @@ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OSSL_STORE_H +# define HEADER_OSSL_STORE_H + +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * The main OSSL_STORE functions. + * ------------------------------ + * + * These allow applications to open a channel to a resource with supported + * data (keys, certs, crls, ...), read the data a piece at a time and decide + * what to do with it, and finally close. + */ + +typedef struct ossl_store_ctx_st OSSL_STORE_CTX; + +/* + * Typedef for the OSSL_STORE_INFO post processing callback. This can be used + * to massage the given OSSL_STORE_INFO, or to drop it entirely (by returning + * NULL). + */ +typedef OSSL_STORE_INFO *(*OSSL_STORE_post_process_info_fn)(OSSL_STORE_INFO *, + void *); + +/* + * Open a channel given a URI. The given UI method will be used any time the + * loader needs extra input, for example when a password or pin is needed, and + * will be passed the same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + */ +OSSL_STORE_CTX *OSSL_STORE_open(const char *uri, const UI_METHOD *ui_method, + void *ui_data, + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/* + * Control / fine tune the OSSL_STORE channel. |cmd| determines what is to be + * done, and depends on the underlying loader (use OSSL_STORE_get0_scheme to + * determine which loader is used), except for common commands (see below). + * Each command takes different arguments. + */ +int OSSL_STORE_ctrl(OSSL_STORE_CTX *ctx, int cmd, ... /* args */); +int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, va_list args); + +/* + * Common ctrl commands that different loaders may choose to support. + */ +/* int on = 0 or 1; STORE_ctrl(ctx, STORE_C_USE_SECMEM, &on); */ +# define OSSL_STORE_C_USE_SECMEM 1 +/* Where custom commands start */ +# define OSSL_STORE_C_CUSTOM_START 100 + +/* + * Read one data item (a key, a cert, a CRL) that is supported by the OSSL_STORE + * functionality, given a context. + * Returns a OSSL_STORE_INFO pointer, from which OpenSSL typed data can be + * extracted with OSSL_STORE_INFO_get0_PKEY(), OSSL_STORE_INFO_get0_CERT(), ... + * NULL is returned on error, which may include that the data found at the URI + * can't be figured out for certain or is ambiguous. + */ +OSSL_STORE_INFO *OSSL_STORE_load(OSSL_STORE_CTX *ctx); + +/* + * Check if end of data (end of file) is reached + * Returns 1 on end, 0 otherwise. + */ +int OSSL_STORE_eof(OSSL_STORE_CTX *ctx); + +/* + * Check if an error occurred + * Returns 1 if it did, 0 otherwise. + */ +int OSSL_STORE_error(OSSL_STORE_CTX *ctx); + +/* + * Close the channel + * Returns 1 on success, 0 on error. + */ +int OSSL_STORE_close(OSSL_STORE_CTX *ctx); + + +/*- + * Extracting OpenSSL types from and creating new OSSL_STORE_INFOs + * --------------------------------------------------------------- + */ + +/* + * Types of data that can be ossl_stored in a OSSL_STORE_INFO. + * OSSL_STORE_INFO_NAME is typically found when getting a listing of + * available "files" / "tokens" / what have you. + */ +# define OSSL_STORE_INFO_NAME 1 /* char * */ +# define OSSL_STORE_INFO_PARAMS 2 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_PKEY 3 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_CERT 4 /* X509 * */ +# define OSSL_STORE_INFO_CRL 5 /* X509_CRL * */ + +/* + * Functions to generate OSSL_STORE_INFOs, one function for each type we + * support having in them, as well as a generic constructor. + * + * In all cases, ownership of the object is transferred to the OSSL_STORE_INFO + * and will therefore be freed when the OSSL_STORE_INFO is freed. + */ +OSSL_STORE_INFO *OSSL_STORE_INFO_new_NAME(char *name); +int OSSL_STORE_INFO_set0_NAME_description(OSSL_STORE_INFO *info, char *desc); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PARAMS(EVP_PKEY *params); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PKEY(EVP_PKEY *pkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CERT(X509 *x509); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CRL(X509_CRL *crl); + +/* + * Functions to try to extract data from a OSSL_STORE_INFO. + */ +int OSSL_STORE_INFO_get_type(const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME(const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME_description(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME_description(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PKEY(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get0_CERT(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get1_CERT(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get0_CRL(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get1_CRL(const OSSL_STORE_INFO *info); + +const char *OSSL_STORE_INFO_type_string(int type); + +/* + * Free the OSSL_STORE_INFO + */ +void OSSL_STORE_INFO_free(OSSL_STORE_INFO *info); + + +/*- + * Functions to construct a search URI from a base URI and search criteria + * ----------------------------------------------------------------------- + */ + +/* OSSL_STORE search types */ +# define OSSL_STORE_SEARCH_BY_NAME 1 /* subject in certs, issuer in CRLs */ +# define OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 2 +# define OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 3 +# define OSSL_STORE_SEARCH_BY_ALIAS 4 + +/* To check what search types the scheme handler supports */ +int OSSL_STORE_supports_search(OSSL_STORE_CTX *ctx, int search_type); + +/* Search term constructors */ +/* + * The input is considered to be owned by the caller, and must therefore + * remain present throughout the lifetime of the returned OSSL_STORE_SEARCH + */ +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_name(X509_NAME *name); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_issuer_serial(X509_NAME *name, + const ASN1_INTEGER + *serial); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_key_fingerprint(const EVP_MD *digest, + const unsigned char + *bytes, size_t len); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_alias(const char *alias); + +/* Search term destructor */ +void OSSL_STORE_SEARCH_free(OSSL_STORE_SEARCH *search); + +/* Search term accessors */ +int OSSL_STORE_SEARCH_get_type(const OSSL_STORE_SEARCH *criterion); +X509_NAME *OSSL_STORE_SEARCH_get0_name(OSSL_STORE_SEARCH *criterion); +const ASN1_INTEGER *OSSL_STORE_SEARCH_get0_serial(const OSSL_STORE_SEARCH + *criterion); +const unsigned char *OSSL_STORE_SEARCH_get0_bytes(const OSSL_STORE_SEARCH + *criterion, size_t *length); +const char *OSSL_STORE_SEARCH_get0_string(const OSSL_STORE_SEARCH *criterion); +const EVP_MD *OSSL_STORE_SEARCH_get0_digest(const OSSL_STORE_SEARCH *criterion); + +/* + * Add search criterion and expected return type (which can be unspecified) + * to the loading channel. This MUST happen before the first OSSL_STORE_load(). + */ +int OSSL_STORE_expect(OSSL_STORE_CTX *ctx, int expected_type); +int OSSL_STORE_find(OSSL_STORE_CTX *ctx, OSSL_STORE_SEARCH *search); + + +/*- + * Function to register a loader for the given URI scheme. + * ------------------------------------------------------- + * + * The loader receives all the main components of an URI except for the + * scheme. + */ + +typedef struct ossl_store_loader_st OSSL_STORE_LOADER; +OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(ENGINE *e, const char *scheme); +const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader); +const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); +/* struct ossl_store_loader_ctx_st is defined differently by each loader */ +typedef struct ossl_store_loader_ctx_st OSSL_STORE_LOADER_CTX; +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_fn)(const OSSL_STORE_LOADER + *loader, + const char *uri, + const UI_METHOD *ui_method, + void *ui_data); +int OSSL_STORE_LOADER_set_open(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_fn open_function); +typedef int (*OSSL_STORE_ctrl_fn)(OSSL_STORE_LOADER_CTX *ctx, int cmd, + va_list args); +int OSSL_STORE_LOADER_set_ctrl(OSSL_STORE_LOADER *loader, + OSSL_STORE_ctrl_fn ctrl_function); +typedef int (*OSSL_STORE_expect_fn)(OSSL_STORE_LOADER_CTX *ctx, int expected); +int OSSL_STORE_LOADER_set_expect(OSSL_STORE_LOADER *loader, + OSSL_STORE_expect_fn expect_function); +typedef int (*OSSL_STORE_find_fn)(OSSL_STORE_LOADER_CTX *ctx, + OSSL_STORE_SEARCH *criteria); +int OSSL_STORE_LOADER_set_find(OSSL_STORE_LOADER *loader, + OSSL_STORE_find_fn find_function); +typedef OSSL_STORE_INFO *(*OSSL_STORE_load_fn)(OSSL_STORE_LOADER_CTX *ctx, + const UI_METHOD *ui_method, + void *ui_data); +int OSSL_STORE_LOADER_set_load(OSSL_STORE_LOADER *loader, + OSSL_STORE_load_fn load_function); +typedef int (*OSSL_STORE_eof_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_eof(OSSL_STORE_LOADER *loader, + OSSL_STORE_eof_fn eof_function); +typedef int (*OSSL_STORE_error_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_error(OSSL_STORE_LOADER *loader, + OSSL_STORE_error_fn error_function); +typedef int (*OSSL_STORE_close_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *loader, + OSSL_STORE_close_fn close_function); +void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader); + +int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); +OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme); + +/*- + * Functions to list STORE loaders + * ------------------------------- + */ +int OSSL_STORE_do_all_loaders(void (*do_function) (const OSSL_STORE_LOADER + *loader, void *do_arg), + void *do_arg); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/storeerr.h b/openSSL/lin64/include/openssl/storeerr.h new file mode 100644 index 0000000..190eab0 --- /dev/null +++ b/openSSL/lin64/include/openssl/storeerr.h @@ -0,0 +1,91 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OSSL_STOREERR_H +# define HEADER_OSSL_STOREERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OSSL_STORE_strings(void); + +/* + * OSSL_STORE function codes. + */ +# define OSSL_STORE_F_FILE_CTRL 129 +# define OSSL_STORE_F_FILE_FIND 138 +# define OSSL_STORE_F_FILE_GET_PASS 118 +# define OSSL_STORE_F_FILE_LOAD 119 +# define OSSL_STORE_F_FILE_LOAD_TRY_DECODE 124 +# define OSSL_STORE_F_FILE_NAME_TO_URI 126 +# define OSSL_STORE_F_FILE_OPEN 120 +# define OSSL_STORE_F_OSSL_STORE_ATTACH_PEM_BIO 127 +# define OSSL_STORE_F_OSSL_STORE_EXPECT 130 +# define OSSL_STORE_F_OSSL_STORE_FILE_ATTACH_PEM_BIO_INT 128 +# define OSSL_STORE_F_OSSL_STORE_FIND 131 +# define OSSL_STORE_F_OSSL_STORE_GET0_LOADER_INT 100 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CERT 101 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CRL 102 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME 103 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME_DESCRIPTION 135 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PARAMS 104 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PKEY 105 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CERT 106 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CRL 107 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_EMBEDDED 123 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_NAME 109 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PARAMS 110 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PKEY 111 +# define OSSL_STORE_F_OSSL_STORE_INFO_SET0_NAME_DESCRIPTION 134 +# define OSSL_STORE_F_OSSL_STORE_INIT_ONCE 112 +# define OSSL_STORE_F_OSSL_STORE_LOADER_NEW 113 +# define OSSL_STORE_F_OSSL_STORE_OPEN 114 +# define OSSL_STORE_F_OSSL_STORE_OPEN_INT 115 +# define OSSL_STORE_F_OSSL_STORE_REGISTER_LOADER_INT 117 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ALIAS 132 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 133 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 136 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_NAME 137 +# define OSSL_STORE_F_OSSL_STORE_UNREGISTER_LOADER_INT 116 +# define OSSL_STORE_F_TRY_DECODE_PARAMS 121 +# define OSSL_STORE_F_TRY_DECODE_PKCS12 122 +# define OSSL_STORE_F_TRY_DECODE_PKCS8ENCRYPTED 125 + +/* + * OSSL_STORE reason codes. + */ +# define OSSL_STORE_R_AMBIGUOUS_CONTENT_TYPE 107 +# define OSSL_STORE_R_BAD_PASSWORD_READ 115 +# define OSSL_STORE_R_ERROR_VERIFYING_PKCS12_MAC 113 +# define OSSL_STORE_R_FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST 121 +# define OSSL_STORE_R_INVALID_SCHEME 106 +# define OSSL_STORE_R_IS_NOT_A 112 +# define OSSL_STORE_R_LOADER_INCOMPLETE 116 +# define OSSL_STORE_R_LOADING_STARTED 117 +# define OSSL_STORE_R_NOT_A_CERTIFICATE 100 +# define OSSL_STORE_R_NOT_A_CRL 101 +# define OSSL_STORE_R_NOT_A_KEY 102 +# define OSSL_STORE_R_NOT_A_NAME 103 +# define OSSL_STORE_R_NOT_PARAMETERS 104 +# define OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR 114 +# define OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE 108 +# define OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 119 +# define OSSL_STORE_R_UI_PROCESS_INTERRUPTED_OR_CANCELLED 109 +# define OSSL_STORE_R_UNREGISTERED_SCHEME 105 +# define OSSL_STORE_R_UNSUPPORTED_CONTENT_TYPE 110 +# define OSSL_STORE_R_UNSUPPORTED_OPERATION 118 +# define OSSL_STORE_R_UNSUPPORTED_SEARCH_TYPE 120 +# define OSSL_STORE_R_URI_AUTHORITY_UNSUPPORTED 111 + +#endif diff --git a/openSSL/lin64/include/openssl/symhacks.h b/openSSL/lin64/include/openssl/symhacks.h new file mode 100644 index 0000000..156ea6e --- /dev/null +++ b/openSSL/lin64/include/openssl/symhacks.h @@ -0,0 +1,37 @@ +/* + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SYMHACKS_H +# define HEADER_SYMHACKS_H + +# include + +/* Case insensitive linking causes problems.... */ +# if defined(OPENSSL_SYS_VMS) +# undef ERR_load_CRYPTO_strings +# define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings +# undef OCSP_crlID_new +# define OCSP_crlID_new OCSP_crlID2_new + +# undef d2i_ECPARAMETERS +# define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS +# undef i2d_ECPARAMETERS +# define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS +# undef d2i_ECPKPARAMETERS +# define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS +# undef i2d_ECPKPARAMETERS +# define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS + +/* This one clashes with CMS_data_create */ +# undef cms_Data_create +# define cms_Data_create priv_cms_Data_create + +# endif + +#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/openSSL/lin64/include/openssl/tls1.h b/openSSL/lin64/include/openssl/tls1.h new file mode 100644 index 0000000..76d9fda --- /dev/null +++ b/openSSL/lin64/include/openssl/tls1.h @@ -0,0 +1,1237 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TLS1_H +# define HEADER_TLS1_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Default security level if not overridden at config time */ +# ifndef OPENSSL_TLS_SECURITY_LEVEL +# define OPENSSL_TLS_SECURITY_LEVEL 1 +# endif + +# define TLS1_VERSION 0x0301 +# define TLS1_1_VERSION 0x0302 +# define TLS1_2_VERSION 0x0303 +# define TLS1_3_VERSION 0x0304 +# define TLS_MAX_VERSION TLS1_3_VERSION + +/* Special value for method supporting multiple versions */ +# define TLS_ANY_VERSION 0x10000 + +# define TLS1_VERSION_MAJOR 0x03 +# define TLS1_VERSION_MINOR 0x01 + +# define TLS1_1_VERSION_MAJOR 0x03 +# define TLS1_1_VERSION_MINOR 0x02 + +# define TLS1_2_VERSION_MAJOR 0x03 +# define TLS1_2_VERSION_MINOR 0x03 + +# define TLS1_get_version(s) \ + ((SSL_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_version(s) : 0) + +# define TLS1_get_client_version(s) \ + ((SSL_client_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_client_version(s) : 0) + +# define TLS1_AD_DECRYPTION_FAILED 21 +# define TLS1_AD_RECORD_OVERFLOW 22 +# define TLS1_AD_UNKNOWN_CA 48/* fatal */ +# define TLS1_AD_ACCESS_DENIED 49/* fatal */ +# define TLS1_AD_DECODE_ERROR 50/* fatal */ +# define TLS1_AD_DECRYPT_ERROR 51 +# define TLS1_AD_EXPORT_RESTRICTION 60/* fatal */ +# define TLS1_AD_PROTOCOL_VERSION 70/* fatal */ +# define TLS1_AD_INSUFFICIENT_SECURITY 71/* fatal */ +# define TLS1_AD_INTERNAL_ERROR 80/* fatal */ +# define TLS1_AD_INAPPROPRIATE_FALLBACK 86/* fatal */ +# define TLS1_AD_USER_CANCELLED 90 +# define TLS1_AD_NO_RENEGOTIATION 100 +/* TLSv1.3 alerts */ +# define TLS13_AD_MISSING_EXTENSION 109 /* fatal */ +# define TLS13_AD_CERTIFICATE_REQUIRED 116 /* fatal */ +/* codes 110-114 are from RFC3546 */ +# define TLS1_AD_UNSUPPORTED_EXTENSION 110 +# define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 +# define TLS1_AD_UNRECOGNIZED_NAME 112 +# define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 +# define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 +# define TLS1_AD_UNKNOWN_PSK_IDENTITY 115/* fatal */ +# define TLS1_AD_NO_APPLICATION_PROTOCOL 120 /* fatal */ + +/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ +# define TLSEXT_TYPE_server_name 0 +# define TLSEXT_TYPE_max_fragment_length 1 +# define TLSEXT_TYPE_client_certificate_url 2 +# define TLSEXT_TYPE_trusted_ca_keys 3 +# define TLSEXT_TYPE_truncated_hmac 4 +# define TLSEXT_TYPE_status_request 5 +/* ExtensionType values from RFC4681 */ +# define TLSEXT_TYPE_user_mapping 6 +/* ExtensionType values from RFC5878 */ +# define TLSEXT_TYPE_client_authz 7 +# define TLSEXT_TYPE_server_authz 8 +/* ExtensionType values from RFC6091 */ +# define TLSEXT_TYPE_cert_type 9 + +/* ExtensionType values from RFC4492 */ +/* + * Prior to TLSv1.3 the supported_groups extension was known as + * elliptic_curves + */ +# define TLSEXT_TYPE_supported_groups 10 +# define TLSEXT_TYPE_elliptic_curves TLSEXT_TYPE_supported_groups +# define TLSEXT_TYPE_ec_point_formats 11 + + +/* ExtensionType value from RFC5054 */ +# define TLSEXT_TYPE_srp 12 + +/* ExtensionType values from RFC5246 */ +# define TLSEXT_TYPE_signature_algorithms 13 + +/* ExtensionType value from RFC5764 */ +# define TLSEXT_TYPE_use_srtp 14 + +/* ExtensionType value from RFC5620 */ +# define TLSEXT_TYPE_heartbeat 15 + +/* ExtensionType value from RFC7301 */ +# define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * Extension type for Certificate Transparency + * https://tools.ietf.org/html/rfc6962#section-3.3.1 + */ +# define TLSEXT_TYPE_signed_certificate_timestamp 18 + +/* + * ExtensionType value for TLS padding extension. + * http://tools.ietf.org/html/draft-agl-tls-padding + */ +# define TLSEXT_TYPE_padding 21 + +/* ExtensionType value from RFC7366 */ +# define TLSEXT_TYPE_encrypt_then_mac 22 + +/* ExtensionType value from RFC7627 */ +# define TLSEXT_TYPE_extended_master_secret 23 + +/* ExtensionType value from RFC4507 */ +# define TLSEXT_TYPE_session_ticket 35 + +/* As defined for TLS1.3 */ +# define TLSEXT_TYPE_psk 41 +# define TLSEXT_TYPE_early_data 42 +# define TLSEXT_TYPE_supported_versions 43 +# define TLSEXT_TYPE_cookie 44 +# define TLSEXT_TYPE_psk_kex_modes 45 +# define TLSEXT_TYPE_certificate_authorities 47 +# define TLSEXT_TYPE_post_handshake_auth 49 +# define TLSEXT_TYPE_signature_algorithms_cert 50 +# define TLSEXT_TYPE_key_share 51 + +/* Temporary extension type */ +# define TLSEXT_TYPE_renegotiate 0xff01 + +# ifndef OPENSSL_NO_NEXTPROTONEG +/* This is not an IANA defined extension number */ +# define TLSEXT_TYPE_next_proto_neg 13172 +# endif + +/* NameType value from RFC3546 */ +# define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC3546 */ +# define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from RFC4492 */ +# define TLSEXT_ECPOINTFORMAT_first 0 +# define TLSEXT_ECPOINTFORMAT_uncompressed 0 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 +# define TLSEXT_ECPOINTFORMAT_last 2 + +/* Signature and hash algorithms from RFC5246 */ +# define TLSEXT_signature_anonymous 0 +# define TLSEXT_signature_rsa 1 +# define TLSEXT_signature_dsa 2 +# define TLSEXT_signature_ecdsa 3 +# define TLSEXT_signature_gostr34102001 237 +# define TLSEXT_signature_gostr34102012_256 238 +# define TLSEXT_signature_gostr34102012_512 239 + +/* Total number of different signature algorithms */ +# define TLSEXT_signature_num 7 + +# define TLSEXT_hash_none 0 +# define TLSEXT_hash_md5 1 +# define TLSEXT_hash_sha1 2 +# define TLSEXT_hash_sha224 3 +# define TLSEXT_hash_sha256 4 +# define TLSEXT_hash_sha384 5 +# define TLSEXT_hash_sha512 6 +# define TLSEXT_hash_gostr3411 237 +# define TLSEXT_hash_gostr34112012_256 238 +# define TLSEXT_hash_gostr34112012_512 239 + +/* Total number of different digest algorithms */ + +# define TLSEXT_hash_num 10 + +/* Flag set for unrecognised algorithms */ +# define TLSEXT_nid_unknown 0x1000000 + +/* ECC curves */ + +# define TLSEXT_curve_P_256 23 +# define TLSEXT_curve_P_384 24 + +/* OpenSSL value to disable maximum fragment length extension */ +# define TLSEXT_max_fragment_length_DISABLED 0 +/* Allowed values for max fragment length extension */ +# define TLSEXT_max_fragment_length_512 1 +# define TLSEXT_max_fragment_length_1024 2 +# define TLSEXT_max_fragment_length_2048 3 +# define TLSEXT_max_fragment_length_4096 4 + +int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); +int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); + +# define TLSEXT_MAXLEN_host_name 255 + +__owur const char *SSL_get_servername(const SSL *s, const int type); +__owur int SSL_get_servername_type(const SSL *s); +/* + * SSL_export_keying_material exports a value derived from the master secret, + * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and + * optional context. (Since a zero length context is allowed, the |use_context| + * flag controls whether a context is included.) It returns 1 on success and + * 0 or -1 otherwise. + */ +__owur int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *context, + size_t contextlen, int use_context); + +/* + * SSL_export_keying_material_early exports a value derived from the + * early exporter master secret, as specified in + * https://tools.ietf.org/html/draft-ietf-tls-tls13-23. It writes + * |olen| bytes to |out| given a label and optional context. It + * returns 1 on success and 0 otherwise. + */ +__owur int SSL_export_keying_material_early(SSL *s, unsigned char *out, + size_t olen, const char *label, + size_t llen, + const unsigned char *context, + size_t contextlen); + +int SSL_get_peer_signature_type_nid(const SSL *s, int *pnid); +int SSL_get_signature_type_nid(const SSL *s, int *pnid); + +int SSL_get_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +int SSL_get_shared_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +__owur int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); + +# define SSL_set_tlsext_host_name(s,name) \ + SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,\ + (void *)name) + +# define SSL_set_tlsext_debug_callback(ssl, cb) \ + SSL_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_CB,\ + (void (*)(void))cb) + +# define SSL_set_tlsext_debug_arg(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_ARG,0,arg) + +# define SSL_get_tlsext_status_type(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE,0,NULL) + +# define SSL_set_tlsext_status_type(ssl, type) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type,NULL) + +# define SSL_get_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS,0,arg) + +# define SSL_set_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS,0,arg) + +# define SSL_get_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS,0,arg) + +# define SSL_set_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS,0,arg) + +# define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,0,arg) + +# define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,arglen,arg) + +# define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ + SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_CB,\ + (void (*)(void))cb) + +# define SSL_TLSEXT_ERR_OK 0 +# define SSL_TLSEXT_ERR_ALERT_WARNING 1 +# define SSL_TLSEXT_ERR_ALERT_FATAL 2 +# define SSL_TLSEXT_ERR_NOACK 3 + +# define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0,arg) + +# define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_TLSEXT_TICKET_KEYS,keylen,keys) +# define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_TICKET_KEYS,keylen,keys) + +# define SSL_CTX_get_tlsext_status_cb(ssl, cb) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB,0,(void *)cb) +# define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,\ + (void (*)(void))cb) + +# define SSL_CTX_get_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG,0,arg) +# define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0,arg) + +# define SSL_CTX_set_tlsext_status_type(ssl, type) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type,NULL) + +# define SSL_CTX_get_tlsext_status_type(ssl) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE,0,NULL) + +# define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,\ + (void (*)(void))cb) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_DTLSEXT_HB_ENABLED 0x01 +# define SSL_DTLSEXT_HB_DONT_SEND_REQUESTS 0x02 +# define SSL_DTLSEXT_HB_DONT_RECV_REQUESTS 0x04 +# define SSL_get_dtlsext_heartbeat_pending(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING,0,NULL) +# define SSL_set_dtlsext_heartbeat_no_requests(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS,arg,NULL) + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_CTRL_TLS_EXT_SEND_HEARTBEAT \ + SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT +# define SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING \ + SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING +# define SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS \ + SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS +# define SSL_TLSEXT_HB_ENABLED \ + SSL_DTLSEXT_HB_ENABLED +# define SSL_TLSEXT_HB_DONT_SEND_REQUESTS \ + SSL_DTLSEXT_HB_DONT_SEND_REQUESTS +# define SSL_TLSEXT_HB_DONT_RECV_REQUESTS \ + SSL_DTLSEXT_HB_DONT_RECV_REQUESTS +# define SSL_get_tlsext_heartbeat_pending(ssl) \ + SSL_get_dtlsext_heartbeat_pending(ssl) +# define SSL_set_tlsext_heartbeat_no_requests(ssl, arg) \ + SSL_set_dtlsext_heartbeat_no_requests(ssl,arg) +# endif +# endif + +/* PSK ciphersuites from 4279 */ +# define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A +# define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D +# define TLS1_CK_DHE_PSK_WITH_RC4_128_SHA 0x0300008E +# define TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008F +# define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA 0x03000090 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA 0x03000091 +# define TLS1_CK_RSA_PSK_WITH_RC4_128_SHA 0x03000092 +# define TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x03000093 +# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA 0x03000094 +# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA 0x03000095 + +/* PSK ciphersuites from 5487 */ +# define TLS1_CK_PSK_WITH_AES_128_GCM_SHA256 0x030000A8 +# define TLS1_CK_PSK_WITH_AES_256_GCM_SHA384 0x030000A9 +# define TLS1_CK_DHE_PSK_WITH_AES_128_GCM_SHA256 0x030000AA +# define TLS1_CK_DHE_PSK_WITH_AES_256_GCM_SHA384 0x030000AB +# define TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256 0x030000AC +# define TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384 0x030000AD +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA256 0x030000AE +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA384 0x030000AF +# define TLS1_CK_PSK_WITH_NULL_SHA256 0x030000B0 +# define TLS1_CK_PSK_WITH_NULL_SHA384 0x030000B1 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA256 0x030000B2 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384 0x030000B3 +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA256 0x030000B4 +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA384 0x030000B5 +# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256 0x030000B6 +# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384 0x030000B7 +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA256 0x030000B8 +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA384 0x030000B9 + +/* NULL PSK ciphersuites from RFC4785 */ +# define TLS1_CK_PSK_WITH_NULL_SHA 0x0300002C +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA 0x0300002D +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA 0x0300002E + +/* AES ciphersuites from RFC3268 */ +# define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 +# define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 +# define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 +# define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B +# define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C +# define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B +# define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C +# define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 +# define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 +# define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 +# define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 +# define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A +# define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C +# define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D +# define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E +# define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F +# define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 +# define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 +# define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 +# define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 +# define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 +# define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 +# define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 +# define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 + +/* CCM ciphersuites from RFC6655 */ +# define TLS1_CK_RSA_WITH_AES_128_CCM 0x0300C09C +# define TLS1_CK_RSA_WITH_AES_256_CCM 0x0300C09D +# define TLS1_CK_DHE_RSA_WITH_AES_128_CCM 0x0300C09E +# define TLS1_CK_DHE_RSA_WITH_AES_256_CCM 0x0300C09F +# define TLS1_CK_RSA_WITH_AES_128_CCM_8 0x0300C0A0 +# define TLS1_CK_RSA_WITH_AES_256_CCM_8 0x0300C0A1 +# define TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8 0x0300C0A2 +# define TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8 0x0300C0A3 +# define TLS1_CK_PSK_WITH_AES_128_CCM 0x0300C0A4 +# define TLS1_CK_PSK_WITH_AES_256_CCM 0x0300C0A5 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CCM 0x0300C0A6 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CCM 0x0300C0A7 +# define TLS1_CK_PSK_WITH_AES_128_CCM_8 0x0300C0A8 +# define TLS1_CK_PSK_WITH_AES_256_CCM_8 0x0300C0A9 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8 0x0300C0AA +# define TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8 0x0300C0AB + +/* CCM ciphersuites from RFC7251 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM 0x0300C0AC +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM 0x0300C0AD +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM_8 0x0300C0AE +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM_8 0x0300C0AF + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BA +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BB +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BC +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BD +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BE +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA256 0x030000BF + +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C0 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C1 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C2 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C3 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C4 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA256 0x030000C5 + +/* ECC ciphersuites from RFC4492 */ +# define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 +# define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 +# define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 + +# define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 +# define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 +# define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A + +# define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B +# define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C +# define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D +# define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E +# define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F + +# define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 +# define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 +# define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 + +# define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 +# define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 +# define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 +# define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 +# define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 + +/* SRP ciphersuites from RFC 5054 */ +# define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A +# define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B +# define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C +# define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F +# define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 + +/* ECDH HMAC based ciphersuites from RFC5289 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 + +/* ECDHE PSK ciphersuites from RFC5489 */ +# define TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA 0x0300C033 +# define TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300C034 +# define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA 0x0300C035 +# define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA 0x0300C036 + +# define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0x0300C037 +# define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0x0300C038 + +/* NULL PSK ciphersuites from RFC4785 */ +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA 0x0300C039 +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256 0x0300C03A +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384 0x0300C03B + +/* Camellia-CBC ciphersuites from RFC6367 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C072 +# define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C073 +# define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C074 +# define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C075 +# define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C076 +# define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C077 +# define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C078 +# define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C079 + +# define TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C094 +# define TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C095 +# define TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C096 +# define TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C097 +# define TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C098 +# define TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C099 +# define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C09A +# define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C09B + +/* draft-ietf-tls-chacha20-poly1305-03 */ +# define TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCA8 +# define TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 0x0300CCA9 +# define TLS1_CK_DHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCAA +# define TLS1_CK_PSK_WITH_CHACHA20_POLY1305 0x0300CCAB +# define TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAC +# define TLS1_CK_DHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAD +# define TLS1_CK_RSA_PSK_WITH_CHACHA20_POLY1305 0x0300CCAE + +/* TLS v1.3 ciphersuites */ +# define TLS1_3_CK_AES_128_GCM_SHA256 0x03001301 +# define TLS1_3_CK_AES_256_GCM_SHA384 0x03001302 +# define TLS1_3_CK_CHACHA20_POLY1305_SHA256 0x03001303 +# define TLS1_3_CK_AES_128_CCM_SHA256 0x03001304 +# define TLS1_3_CK_AES_128_CCM_8_SHA256 0x03001305 + +/* Aria ciphersuites from RFC6209 */ +# define TLS1_CK_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C050 +# define TLS1_CK_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C051 +# define TLS1_CK_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C052 +# define TLS1_CK_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C053 +# define TLS1_CK_DH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C054 +# define TLS1_CK_DH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C055 +# define TLS1_CK_DHE_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C056 +# define TLS1_CK_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C057 +# define TLS1_CK_DH_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C058 +# define TLS1_CK_DH_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C059 +# define TLS1_CK_DH_anon_WITH_ARIA_128_GCM_SHA256 0x0300C05A +# define TLS1_CK_DH_anon_WITH_ARIA_256_GCM_SHA384 0x0300C05B +# define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05C +# define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05D +# define TLS1_CK_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05E +# define TLS1_CK_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05F +# define TLS1_CK_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C060 +# define TLS1_CK_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C061 +# define TLS1_CK_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C062 +# define TLS1_CK_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C063 +# define TLS1_CK_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06A +# define TLS1_CK_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06B +# define TLS1_CK_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06C +# define TLS1_CK_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06D +# define TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06E +# define TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06F + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +# define TLS1_RFC_RSA_WITH_AES_128_SHA "TLS_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ADH_WITH_AES_128_SHA "TLS_DH_anon_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_RSA_WITH_AES_256_SHA "TLS_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ADH_WITH_AES_256_SHA "TLS_DH_anon_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_RSA_WITH_NULL_SHA256 "TLS_RSA_WITH_NULL_SHA256" +# define TLS1_RFC_RSA_WITH_AES_128_SHA256 "TLS_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_AES_256_SHA256 "TLS_RSA_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256 "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256 "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256 "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256 "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_AES_128_SHA256 "TLS_DH_anon_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_AES_256_SHA256 "TLS_DH_anon_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256 "TLS_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384 "TLS_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256 "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384 "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256 "TLS_DH_anon_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384 "TLS_DH_anon_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_RSA_WITH_AES_128_CCM "TLS_RSA_WITH_AES_128_CCM" +# define TLS1_RFC_RSA_WITH_AES_256_CCM "TLS_RSA_WITH_AES_256_CCM" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM "TLS_DHE_RSA_WITH_AES_128_CCM" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM "TLS_DHE_RSA_WITH_AES_256_CCM" +# define TLS1_RFC_RSA_WITH_AES_128_CCM_8 "TLS_RSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_RSA_WITH_AES_256_CCM_8 "TLS_RSA_WITH_AES_256_CCM_8" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8 "TLS_DHE_RSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8 "TLS_DHE_RSA_WITH_AES_256_CCM_8" +# define TLS1_RFC_PSK_WITH_AES_128_CCM "TLS_PSK_WITH_AES_128_CCM" +# define TLS1_RFC_PSK_WITH_AES_256_CCM "TLS_PSK_WITH_AES_256_CCM" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM "TLS_DHE_PSK_WITH_AES_128_CCM" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM "TLS_DHE_PSK_WITH_AES_256_CCM" +# define TLS1_RFC_PSK_WITH_AES_128_CCM_8 "TLS_PSK_WITH_AES_128_CCM_8" +# define TLS1_RFC_PSK_WITH_AES_256_CCM_8 "TLS_PSK_WITH_AES_256_CCM_8" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8 "TLS_PSK_DHE_WITH_AES_128_CCM_8" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8 "TLS_PSK_DHE_WITH_AES_256_CCM_8" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM "TLS_ECDHE_ECDSA_WITH_AES_128_CCM" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM "TLS_ECDHE_ECDSA_WITH_AES_256_CCM" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8" +# define TLS1_3_RFC_AES_128_GCM_SHA256 "TLS_AES_128_GCM_SHA256" +# define TLS1_3_RFC_AES_256_GCM_SHA384 "TLS_AES_256_GCM_SHA384" +# define TLS1_3_RFC_CHACHA20_POLY1305_SHA256 "TLS_CHACHA20_POLY1305_SHA256" +# define TLS1_3_RFC_AES_128_CCM_SHA256 "TLS_AES_128_CCM_SHA256" +# define TLS1_3_RFC_AES_128_CCM_8_SHA256 "TLS_AES_128_CCM_8_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA "TLS_ECDHE_ECDSA_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA "TLS_ECDHE_RSA_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_NULL_SHA "TLS_ECDH_anon_WITH_NULL_SHA" +# define TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA "TLS_ECDH_anon_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA "TLS_ECDH_anon_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_NULL_SHA "TLS_PSK_WITH_NULL_SHA" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA "TLS_DHE_PSK_WITH_NULL_SHA" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA "TLS_RSA_PSK_WITH_NULL_SHA" +# define TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA "TLS_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA "TLS_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA "TLS_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA "TLS_DHE_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA "TLS_DHE_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA "TLS_RSA_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA "TLS_RSA_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256 "TLS_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384 "TLS_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256 "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384 "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256 "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384 "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256 "TLS_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384 "TLS_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_PSK_WITH_NULL_SHA256 "TLS_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_PSK_WITH_NULL_SHA384 "TLS_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA256 "TLS_DHE_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA384 "TLS_DHE_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256 "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384 "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA256 "TLS_RSA_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA384 "TLS_RSA_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA "TLS_ECDHE_PSK_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256 "TLS_ECDHE_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384 "TLS_ECDHE_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305 "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_PSK_WITH_CHACHA20_POLY1305 "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305 "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305 "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305 "TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_RSA_WITH_SEED_SHA "TLS_RSA_WITH_SEED_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_SEED_SHA "TLS_DHE_DSS_WITH_SEED_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_SEED_SHA "TLS_DHE_RSA_WITH_SEED_CBC_SHA" +# define TLS1_RFC_ADH_WITH_SEED_SHA "TLS_DH_anon_WITH_SEED_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA "TLS_ECDHE_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA "TLS_ECDH_anon_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA "TLS_ECDHE_RSA_WITH_RC4_128_SHA" +# define TLS1_RFC_PSK_WITH_RC4_128_SHA "TLS_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA "TLS_RSA_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA "TLS_DHE_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_anon_WITH_ARIA_128_GCM_SHA256 "TLS_DH_anon_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_anon_WITH_ARIA_256_GCM_SHA384 "TLS_DH_anon_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_PSK_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384" + + +/* + * XXX Backward compatibility alert: Older versions of OpenSSL gave some DHE + * ciphers names with "EDH" instead of "DHE". Going forward, we should be + * using DHE everywhere, though we may indefinitely maintain aliases for + * users or configurations that used "EDH" + */ +# define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" + +# define TLS1_TXT_PSK_WITH_NULL_SHA "PSK-NULL-SHA" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA "DHE-PSK-NULL-SHA" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA "RSA-PSK-NULL-SHA" + +/* AES ciphersuites from RFC3268 */ +# define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" +# define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" + +# define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" +# define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" + +/* ECC ciphersuites from RFC4492 */ +# define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" + +# define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" +# define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" +# define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" + +/* PSK ciphersuites from RFC 4279 */ +# define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" +# define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" + +# define TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA "DHE-PSK-RC4-SHA" +# define TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA "DHE-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA "DHE-PSK-AES128-CBC-SHA" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA "DHE-PSK-AES256-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA "RSA-PSK-RC4-SHA" +# define TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA "RSA-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA "RSA-PSK-AES128-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA "RSA-PSK-AES256-CBC-SHA" + +/* PSK ciphersuites from RFC 5487 */ +# define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256 "DHE-PSK-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384 "DHE-PSK-AES256-GCM-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256 "RSA-PSK-AES128-GCM-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384 "RSA-PSK-AES256-GCM-SHA384" + +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256 "PSK-AES128-CBC-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384 "PSK-AES256-CBC-SHA384" +# define TLS1_TXT_PSK_WITH_NULL_SHA256 "PSK-NULL-SHA256" +# define TLS1_TXT_PSK_WITH_NULL_SHA384 "PSK-NULL-SHA384" + +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256 "DHE-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384 "DHE-PSK-AES256-CBC-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA256 "DHE-PSK-NULL-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA384 "DHE-PSK-NULL-SHA384" + +# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256 "RSA-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384 "RSA-PSK-AES256-CBC-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA256 "RSA-PSK-NULL-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA384 "RSA-PSK-NULL-SHA384" + +/* SRP ciphersuite from RFC 5054 */ +# define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256 "CAMELLIA128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DH-DSS-CAMELLIA128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DH-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DHE-DSS-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DHE-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA256 "ADH-CAMELLIA128-SHA256" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA256 "CAMELLIA256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DH-DSS-CAMELLIA256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DH-RSA-CAMELLIA256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DHE-DSS-CAMELLIA256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DHE-RSA-CAMELLIA256-SHA256" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA256 "ADH-CAMELLIA256-SHA256" + +# define TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256 "PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384 "PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "DHE-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "DHE-PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "RSA-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "RSA-PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-PSK-CAMELLIA256-SHA384" + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" +# define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" +# define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" +# define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" +# define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" +# define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" + +/* TLS v1.2 ciphersuites */ +# define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" +# define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" +# define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" + +/* CCM ciphersuites from RFC6655 */ +# define TLS1_TXT_RSA_WITH_AES_128_CCM "AES128-CCM" +# define TLS1_TXT_RSA_WITH_AES_256_CCM "AES256-CCM" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM "DHE-RSA-AES128-CCM" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM "DHE-RSA-AES256-CCM" + +# define TLS1_TXT_RSA_WITH_AES_128_CCM_8 "AES128-CCM8" +# define TLS1_TXT_RSA_WITH_AES_256_CCM_8 "AES256-CCM8" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8 "DHE-RSA-AES128-CCM8" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8 "DHE-RSA-AES256-CCM8" + +# define TLS1_TXT_PSK_WITH_AES_128_CCM "PSK-AES128-CCM" +# define TLS1_TXT_PSK_WITH_AES_256_CCM "PSK-AES256-CCM" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM "DHE-PSK-AES128-CCM" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM "DHE-PSK-AES256-CCM" + +# define TLS1_TXT_PSK_WITH_AES_128_CCM_8 "PSK-AES128-CCM8" +# define TLS1_TXT_PSK_WITH_AES_256_CCM_8 "PSK-AES256-CCM8" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8 "DHE-PSK-AES128-CCM8" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8 "DHE-PSK-AES256-CCM8" + +/* CCM ciphersuites from RFC7251 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM "ECDHE-ECDSA-AES128-CCM" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM "ECDHE-ECDSA-AES256-CCM" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8 "ECDHE-ECDSA-AES128-CCM8" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 "ECDHE-ECDSA-AES256-CCM8" + +/* ECDH HMAC based ciphersuites from RFC5289 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" + +/* TLS v1.2 PSK GCM ciphersuites from RFC5487 */ +# define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" + +/* ECDHE PSK ciphersuites from RFC 5489 */ +# define TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA "ECDHE-PSK-RC4-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "ECDHE-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA "ECDHE-PSK-AES128-CBC-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA "ECDHE-PSK-AES256-CBC-SHA" + +# define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "ECDHE-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "ECDHE-PSK-AES256-CBC-SHA384" + +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA "ECDHE-PSK-NULL-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256 "ECDHE-PSK-NULL-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384 "ECDHE-PSK-NULL-SHA384" + +/* Camellia-CBC ciphersuites from RFC6367 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-ECDSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-ECDSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-ECDSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-ECDSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-RSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-RSA-CAMELLIA256-SHA384" + +/* draft-ietf-tls-chacha20-poly1305-03 */ +# define TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 "ECDHE-RSA-CHACHA20-POLY1305" +# define TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "ECDHE-ECDSA-CHACHA20-POLY1305" +# define TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305 "DHE-RSA-CHACHA20-POLY1305" +# define TLS1_TXT_PSK_WITH_CHACHA20_POLY1305 "PSK-CHACHA20-POLY1305" +# define TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305 "ECDHE-PSK-CHACHA20-POLY1305" +# define TLS1_TXT_DHE_PSK_WITH_CHACHA20_POLY1305 "DHE-PSK-CHACHA20-POLY1305" +# define TLS1_TXT_RSA_PSK_WITH_CHACHA20_POLY1305 "RSA-PSK-CHACHA20-POLY1305" + +/* Aria ciphersuites from RFC6209 */ +# define TLS1_TXT_RSA_WITH_ARIA_128_GCM_SHA256 "ARIA128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_ARIA_256_GCM_SHA384 "ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "DHE-RSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "DHE-RSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_ARIA_128_GCM_SHA256 "DH-RSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_ARIA_256_GCM_SHA384 "DH-RSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "DHE-DSS-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "DHE-DSS-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_ARIA_128_GCM_SHA256 "DH-DSS-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_ARIA_256_GCM_SHA384 "DH-DSS-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_anon_WITH_ARIA_128_GCM_SHA256 "ADH-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_anon_WITH_ARIA_256_GCM_SHA384 "ADH-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ECDSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ECDSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ECDSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ECDSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ARIA256-GCM-SHA384" +# define TLS1_TXT_PSK_WITH_ARIA_128_GCM_SHA256 "PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_ARIA_256_GCM_SHA384 "PSK-ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "DHE-PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "DHE-PSK-ARIA256-GCM-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "RSA-PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "RSA-PSK-ARIA256-GCM-SHA384" + +# define TLS_CT_RSA_SIGN 1 +# define TLS_CT_DSS_SIGN 2 +# define TLS_CT_RSA_FIXED_DH 3 +# define TLS_CT_DSS_FIXED_DH 4 +# define TLS_CT_ECDSA_SIGN 64 +# define TLS_CT_RSA_FIXED_ECDH 65 +# define TLS_CT_ECDSA_FIXED_ECDH 66 +# define TLS_CT_GOST01_SIGN 22 +# define TLS_CT_GOST12_SIGN 238 +# define TLS_CT_GOST12_512_SIGN 239 + +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +# define TLS_CT_NUMBER 10 + +# if defined(SSL3_CT_NUMBER) +# if TLS_CT_NUMBER != SSL3_CT_NUMBER +# error "SSL/TLS CT_NUMBER values do not match" +# endif +# endif + +# define TLS1_FINISH_MAC_LENGTH 12 + +# define TLS_MD_MAX_CONST_SIZE 22 +# define TLS_MD_CLIENT_FINISH_CONST "client finished" +# define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 +# define TLS_MD_SERVER_FINISH_CONST "server finished" +# define TLS_MD_SERVER_FINISH_CONST_SIZE 15 +# define TLS_MD_KEY_EXPANSION_CONST "key expansion" +# define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 +# define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key" +# define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" +# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_IV_BLOCK_CONST "IV block" +# define TLS_MD_IV_BLOCK_CONST_SIZE 8 +# define TLS_MD_MASTER_SECRET_CONST "master secret" +# define TLS_MD_MASTER_SECRET_CONST_SIZE 13 +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST "extended master secret" +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE 22 + +# ifdef CHARSET_EBCDIC +# undef TLS_MD_CLIENT_FINISH_CONST +/* + * client finished + */ +# define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_FINISH_CONST +/* + * server finished + */ +# define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_KEY_EXPANSION_CONST +/* + * key expansion + */ +# define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" + +# undef TLS_MD_CLIENT_WRITE_KEY_CONST +/* + * client write key + */ +# define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_IV_BLOCK_CONST +/* + * IV block + */ +# define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" + +# undef TLS_MD_MASTER_SECRET_CONST +/* + * master secret + */ +# define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# undef TLS_MD_EXTENDED_MASTER_SECRET_CONST +/* + * extended master secret + */ +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST "\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# endif + +/* TLS Session Ticket extension struct */ +struct tls_session_ticket_ext_st { + unsigned short length; + void *data; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin64/include/openssl/ts.h b/openSSL/lin64/include/openssl/ts.h new file mode 100644 index 0000000..3b58aa5 --- /dev/null +++ b/openSSL/lin64/include/openssl/ts.h @@ -0,0 +1,559 @@ +/* + * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TS_H +# define HEADER_TS_H + +# include + +# ifndef OPENSSL_NO_TS +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# include +# include + +typedef struct TS_msg_imprint_st TS_MSG_IMPRINT; +typedef struct TS_req_st TS_REQ; +typedef struct TS_accuracy_st TS_ACCURACY; +typedef struct TS_tst_info_st TS_TST_INFO; + +/* Possible values for status. */ +# define TS_STATUS_GRANTED 0 +# define TS_STATUS_GRANTED_WITH_MODS 1 +# define TS_STATUS_REJECTION 2 +# define TS_STATUS_WAITING 3 +# define TS_STATUS_REVOCATION_WARNING 4 +# define TS_STATUS_REVOCATION_NOTIFICATION 5 + +/* Possible values for failure_info. */ +# define TS_INFO_BAD_ALG 0 +# define TS_INFO_BAD_REQUEST 2 +# define TS_INFO_BAD_DATA_FORMAT 5 +# define TS_INFO_TIME_NOT_AVAILABLE 14 +# define TS_INFO_UNACCEPTED_POLICY 15 +# define TS_INFO_UNACCEPTED_EXTENSION 16 +# define TS_INFO_ADD_INFO_NOT_AVAILABLE 17 +# define TS_INFO_SYSTEM_FAILURE 25 + + +typedef struct TS_status_info_st TS_STATUS_INFO; +typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL; +typedef struct ESS_cert_id ESS_CERT_ID; +typedef struct ESS_signing_cert ESS_SIGNING_CERT; + +DEFINE_STACK_OF(ESS_CERT_ID) + +typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; +typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; + +DEFINE_STACK_OF(ESS_CERT_ID_V2) + +typedef struct TS_resp_st TS_RESP; + +TS_REQ *TS_REQ_new(void); +void TS_REQ_free(TS_REQ *a); +int i2d_TS_REQ(const TS_REQ *a, unsigned char **pp); +TS_REQ *d2i_TS_REQ(TS_REQ **a, const unsigned char **pp, long length); + +TS_REQ *TS_REQ_dup(TS_REQ *a); + +#ifndef OPENSSL_NO_STDIO +TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a); +int i2d_TS_REQ_fp(FILE *fp, TS_REQ *a); +#endif +TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a); +int i2d_TS_REQ_bio(BIO *fp, TS_REQ *a); + +TS_MSG_IMPRINT *TS_MSG_IMPRINT_new(void); +void TS_MSG_IMPRINT_free(TS_MSG_IMPRINT *a); +int i2d_TS_MSG_IMPRINT(const TS_MSG_IMPRINT *a, unsigned char **pp); +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT(TS_MSG_IMPRINT **a, + const unsigned char **pp, long length); + +TS_MSG_IMPRINT *TS_MSG_IMPRINT_dup(TS_MSG_IMPRINT *a); + +#ifndef OPENSSL_NO_STDIO +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT *a); +#endif +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT *a); + +TS_RESP *TS_RESP_new(void); +void TS_RESP_free(TS_RESP *a); +int i2d_TS_RESP(const TS_RESP *a, unsigned char **pp); +TS_RESP *d2i_TS_RESP(TS_RESP **a, const unsigned char **pp, long length); +TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token); +TS_RESP *TS_RESP_dup(TS_RESP *a); + +#ifndef OPENSSL_NO_STDIO +TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a); +int i2d_TS_RESP_fp(FILE *fp, TS_RESP *a); +#endif +TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a); +int i2d_TS_RESP_bio(BIO *bio, TS_RESP *a); + +TS_STATUS_INFO *TS_STATUS_INFO_new(void); +void TS_STATUS_INFO_free(TS_STATUS_INFO *a); +int i2d_TS_STATUS_INFO(const TS_STATUS_INFO *a, unsigned char **pp); +TS_STATUS_INFO *d2i_TS_STATUS_INFO(TS_STATUS_INFO **a, + const unsigned char **pp, long length); +TS_STATUS_INFO *TS_STATUS_INFO_dup(TS_STATUS_INFO *a); + +TS_TST_INFO *TS_TST_INFO_new(void); +void TS_TST_INFO_free(TS_TST_INFO *a); +int i2d_TS_TST_INFO(const TS_TST_INFO *a, unsigned char **pp); +TS_TST_INFO *d2i_TS_TST_INFO(TS_TST_INFO **a, const unsigned char **pp, + long length); +TS_TST_INFO *TS_TST_INFO_dup(TS_TST_INFO *a); + +#ifndef OPENSSL_NO_STDIO +TS_TST_INFO *d2i_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO **a); +int i2d_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO *a); +#endif +TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO **a); +int i2d_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO *a); + +TS_ACCURACY *TS_ACCURACY_new(void); +void TS_ACCURACY_free(TS_ACCURACY *a); +int i2d_TS_ACCURACY(const TS_ACCURACY *a, unsigned char **pp); +TS_ACCURACY *d2i_TS_ACCURACY(TS_ACCURACY **a, const unsigned char **pp, + long length); +TS_ACCURACY *TS_ACCURACY_dup(TS_ACCURACY *a); + +ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_new(void); +void ESS_ISSUER_SERIAL_free(ESS_ISSUER_SERIAL *a); +int i2d_ESS_ISSUER_SERIAL(const ESS_ISSUER_SERIAL *a, unsigned char **pp); +ESS_ISSUER_SERIAL *d2i_ESS_ISSUER_SERIAL(ESS_ISSUER_SERIAL **a, + const unsigned char **pp, + long length); +ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_dup(ESS_ISSUER_SERIAL *a); + +ESS_CERT_ID *ESS_CERT_ID_new(void); +void ESS_CERT_ID_free(ESS_CERT_ID *a); +int i2d_ESS_CERT_ID(const ESS_CERT_ID *a, unsigned char **pp); +ESS_CERT_ID *d2i_ESS_CERT_ID(ESS_CERT_ID **a, const unsigned char **pp, + long length); +ESS_CERT_ID *ESS_CERT_ID_dup(ESS_CERT_ID *a); + +ESS_SIGNING_CERT *ESS_SIGNING_CERT_new(void); +void ESS_SIGNING_CERT_free(ESS_SIGNING_CERT *a); +int i2d_ESS_SIGNING_CERT(const ESS_SIGNING_CERT *a, unsigned char **pp); +ESS_SIGNING_CERT *d2i_ESS_SIGNING_CERT(ESS_SIGNING_CERT **a, + const unsigned char **pp, long length); +ESS_SIGNING_CERT *ESS_SIGNING_CERT_dup(ESS_SIGNING_CERT *a); + +ESS_CERT_ID_V2 *ESS_CERT_ID_V2_new(void); +void ESS_CERT_ID_V2_free(ESS_CERT_ID_V2 *a); +int i2d_ESS_CERT_ID_V2(const ESS_CERT_ID_V2 *a, unsigned char **pp); +ESS_CERT_ID_V2 *d2i_ESS_CERT_ID_V2(ESS_CERT_ID_V2 **a, + const unsigned char **pp, long length); +ESS_CERT_ID_V2 *ESS_CERT_ID_V2_dup(ESS_CERT_ID_V2 *a); + +ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_new(void); +void ESS_SIGNING_CERT_V2_free(ESS_SIGNING_CERT_V2 *a); +int i2d_ESS_SIGNING_CERT_V2(const ESS_SIGNING_CERT_V2 *a, unsigned char **pp); +ESS_SIGNING_CERT_V2 *d2i_ESS_SIGNING_CERT_V2(ESS_SIGNING_CERT_V2 **a, + const unsigned char **pp, + long length); +ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_dup(ESS_SIGNING_CERT_V2 *a); + +int TS_REQ_set_version(TS_REQ *a, long version); +long TS_REQ_get_version(const TS_REQ *a); + +int TS_STATUS_INFO_set_status(TS_STATUS_INFO *a, int i); +const ASN1_INTEGER *TS_STATUS_INFO_get0_status(const TS_STATUS_INFO *a); + +const STACK_OF(ASN1_UTF8STRING) * +TS_STATUS_INFO_get0_text(const TS_STATUS_INFO *a); + +const ASN1_BIT_STRING * +TS_STATUS_INFO_get0_failure_info(const TS_STATUS_INFO *a); + +int TS_REQ_set_msg_imprint(TS_REQ *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_REQ_get_msg_imprint(TS_REQ *a); + +int TS_MSG_IMPRINT_set_algo(TS_MSG_IMPRINT *a, X509_ALGOR *alg); +X509_ALGOR *TS_MSG_IMPRINT_get_algo(TS_MSG_IMPRINT *a); + +int TS_MSG_IMPRINT_set_msg(TS_MSG_IMPRINT *a, unsigned char *d, int len); +ASN1_OCTET_STRING *TS_MSG_IMPRINT_get_msg(TS_MSG_IMPRINT *a); + +int TS_REQ_set_policy_id(TS_REQ *a, const ASN1_OBJECT *policy); +ASN1_OBJECT *TS_REQ_get_policy_id(TS_REQ *a); + +int TS_REQ_set_nonce(TS_REQ *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_REQ_get_nonce(const TS_REQ *a); + +int TS_REQ_set_cert_req(TS_REQ *a, int cert_req); +int TS_REQ_get_cert_req(const TS_REQ *a); + +STACK_OF(X509_EXTENSION) *TS_REQ_get_exts(TS_REQ *a); +void TS_REQ_ext_free(TS_REQ *a); +int TS_REQ_get_ext_count(TS_REQ *a); +int TS_REQ_get_ext_by_NID(TS_REQ *a, int nid, int lastpos); +int TS_REQ_get_ext_by_OBJ(TS_REQ *a, const ASN1_OBJECT *obj, int lastpos); +int TS_REQ_get_ext_by_critical(TS_REQ *a, int crit, int lastpos); +X509_EXTENSION *TS_REQ_get_ext(TS_REQ *a, int loc); +X509_EXTENSION *TS_REQ_delete_ext(TS_REQ *a, int loc); +int TS_REQ_add_ext(TS_REQ *a, X509_EXTENSION *ex, int loc); +void *TS_REQ_get_ext_d2i(TS_REQ *a, int nid, int *crit, int *idx); + +/* Function declarations for TS_REQ defined in ts/ts_req_print.c */ + +int TS_REQ_print_bio(BIO *bio, TS_REQ *a); + +/* Function declarations for TS_RESP defined in ts/ts_resp_utils.c */ + +int TS_RESP_set_status_info(TS_RESP *a, TS_STATUS_INFO *info); +TS_STATUS_INFO *TS_RESP_get_status_info(TS_RESP *a); + +/* Caller loses ownership of PKCS7 and TS_TST_INFO objects. */ +void TS_RESP_set_tst_info(TS_RESP *a, PKCS7 *p7, TS_TST_INFO *tst_info); +PKCS7 *TS_RESP_get_token(TS_RESP *a); +TS_TST_INFO *TS_RESP_get_tst_info(TS_RESP *a); + +int TS_TST_INFO_set_version(TS_TST_INFO *a, long version); +long TS_TST_INFO_get_version(const TS_TST_INFO *a); + +int TS_TST_INFO_set_policy_id(TS_TST_INFO *a, ASN1_OBJECT *policy_id); +ASN1_OBJECT *TS_TST_INFO_get_policy_id(TS_TST_INFO *a); + +int TS_TST_INFO_set_msg_imprint(TS_TST_INFO *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_TST_INFO_get_msg_imprint(TS_TST_INFO *a); + +int TS_TST_INFO_set_serial(TS_TST_INFO *a, const ASN1_INTEGER *serial); +const ASN1_INTEGER *TS_TST_INFO_get_serial(const TS_TST_INFO *a); + +int TS_TST_INFO_set_time(TS_TST_INFO *a, const ASN1_GENERALIZEDTIME *gtime); +const ASN1_GENERALIZEDTIME *TS_TST_INFO_get_time(const TS_TST_INFO *a); + +int TS_TST_INFO_set_accuracy(TS_TST_INFO *a, TS_ACCURACY *accuracy); +TS_ACCURACY *TS_TST_INFO_get_accuracy(TS_TST_INFO *a); + +int TS_ACCURACY_set_seconds(TS_ACCURACY *a, const ASN1_INTEGER *seconds); +const ASN1_INTEGER *TS_ACCURACY_get_seconds(const TS_ACCURACY *a); + +int TS_ACCURACY_set_millis(TS_ACCURACY *a, const ASN1_INTEGER *millis); +const ASN1_INTEGER *TS_ACCURACY_get_millis(const TS_ACCURACY *a); + +int TS_ACCURACY_set_micros(TS_ACCURACY *a, const ASN1_INTEGER *micros); +const ASN1_INTEGER *TS_ACCURACY_get_micros(const TS_ACCURACY *a); + +int TS_TST_INFO_set_ordering(TS_TST_INFO *a, int ordering); +int TS_TST_INFO_get_ordering(const TS_TST_INFO *a); + +int TS_TST_INFO_set_nonce(TS_TST_INFO *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_TST_INFO_get_nonce(const TS_TST_INFO *a); + +int TS_TST_INFO_set_tsa(TS_TST_INFO *a, GENERAL_NAME *tsa); +GENERAL_NAME *TS_TST_INFO_get_tsa(TS_TST_INFO *a); + +STACK_OF(X509_EXTENSION) *TS_TST_INFO_get_exts(TS_TST_INFO *a); +void TS_TST_INFO_ext_free(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_count(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_by_NID(TS_TST_INFO *a, int nid, int lastpos); +int TS_TST_INFO_get_ext_by_OBJ(TS_TST_INFO *a, const ASN1_OBJECT *obj, + int lastpos); +int TS_TST_INFO_get_ext_by_critical(TS_TST_INFO *a, int crit, int lastpos); +X509_EXTENSION *TS_TST_INFO_get_ext(TS_TST_INFO *a, int loc); +X509_EXTENSION *TS_TST_INFO_delete_ext(TS_TST_INFO *a, int loc); +int TS_TST_INFO_add_ext(TS_TST_INFO *a, X509_EXTENSION *ex, int loc); +void *TS_TST_INFO_get_ext_d2i(TS_TST_INFO *a, int nid, int *crit, int *idx); + +/* + * Declarations related to response generation, defined in ts/ts_resp_sign.c. + */ + +/* Optional flags for response generation. */ + +/* Don't include the TSA name in response. */ +# define TS_TSA_NAME 0x01 + +/* Set ordering to true in response. */ +# define TS_ORDERING 0x02 + +/* + * Include the signer certificate and the other specified certificates in + * the ESS signing certificate attribute beside the PKCS7 signed data. + * Only the signer certificates is included by default. + */ +# define TS_ESS_CERT_ID_CHAIN 0x04 + +/* Forward declaration. */ +struct TS_resp_ctx; + +/* This must return a unique number less than 160 bits long. */ +typedef ASN1_INTEGER *(*TS_serial_cb) (struct TS_resp_ctx *, void *); + +/* + * This must return the seconds and microseconds since Jan 1, 1970 in the sec + * and usec variables allocated by the caller. Return non-zero for success + * and zero for failure. + */ +typedef int (*TS_time_cb) (struct TS_resp_ctx *, void *, long *sec, + long *usec); + +/* + * This must process the given extension. It can modify the TS_TST_INFO + * object of the context. Return values: !0 (processed), 0 (error, it must + * set the status info/failure info of the response). + */ +typedef int (*TS_extension_cb) (struct TS_resp_ctx *, X509_EXTENSION *, + void *); + +typedef struct TS_resp_ctx TS_RESP_CTX; + +DEFINE_STACK_OF_CONST(EVP_MD) + +/* Creates a response context that can be used for generating responses. */ +TS_RESP_CTX *TS_RESP_CTX_new(void); +void TS_RESP_CTX_free(TS_RESP_CTX *ctx); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_cert(TS_RESP_CTX *ctx, X509 *signer); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_key(TS_RESP_CTX *ctx, EVP_PKEY *key); + +int TS_RESP_CTX_set_signer_digest(TS_RESP_CTX *ctx, + const EVP_MD *signer_digest); +int TS_RESP_CTX_set_ess_cert_id_digest(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *def_policy); + +/* No additional certs are included in the response by default. */ +int TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, STACK_OF(X509) *certs); + +/* + * Adds a new acceptable policy, only the default policy is accepted by + * default. + */ +int TS_RESP_CTX_add_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *policy); + +/* + * Adds a new acceptable message digest. Note that no message digests are + * accepted by default. The md argument is shared with the caller. + */ +int TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* Accuracy is not included by default. */ +int TS_RESP_CTX_set_accuracy(TS_RESP_CTX *ctx, + int secs, int millis, int micros); + +/* + * Clock precision digits, i.e. the number of decimal digits: '0' means sec, + * '3' msec, '6' usec, and so on. Default is 0. + */ +int TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx, + unsigned clock_precision_digits); +/* At most we accept usec precision. */ +# define TS_MAX_CLOCK_PRECISION_DIGITS 6 + +/* Maximum status message length */ +# define TS_MAX_STATUS_LENGTH (1024 * 1024) + +/* No flags are set by default. */ +void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags); + +/* Default callback always returns a constant. */ +void TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data); + +/* Default callback uses the gettimeofday() and gmtime() system calls. */ +void TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data); + +/* + * Default callback rejects all extensions. The extension callback is called + * when the TS_TST_INFO object is already set up and not signed yet. + */ +/* FIXME: extension handling is not tested yet. */ +void TS_RESP_CTX_set_extension_cb(TS_RESP_CTX *ctx, + TS_extension_cb cb, void *data); + +/* The following methods can be used in the callbacks. */ +int TS_RESP_CTX_set_status_info(TS_RESP_CTX *ctx, + int status, const char *text); + +/* Sets the status info only if it is still TS_STATUS_GRANTED. */ +int TS_RESP_CTX_set_status_info_cond(TS_RESP_CTX *ctx, + int status, const char *text); + +int TS_RESP_CTX_add_failure_info(TS_RESP_CTX *ctx, int failure); + +/* The get methods below can be used in the extension callback. */ +TS_REQ *TS_RESP_CTX_get_request(TS_RESP_CTX *ctx); + +TS_TST_INFO *TS_RESP_CTX_get_tst_info(TS_RESP_CTX *ctx); + +/* + * Creates the signed TS_TST_INFO and puts it in TS_RESP. + * In case of errors it sets the status info properly. + * Returns NULL only in case of memory allocation/fatal error. + */ +TS_RESP *TS_RESP_create_response(TS_RESP_CTX *ctx, BIO *req_bio); + +/* + * Declarations related to response verification, + * they are defined in ts/ts_resp_verify.c. + */ + +int TS_RESP_verify_signature(PKCS7 *token, STACK_OF(X509) *certs, + X509_STORE *store, X509 **signer_out); + +/* Context structure for the generic verify method. */ + +/* Verify the signer's certificate and the signature of the response. */ +# define TS_VFY_SIGNATURE (1u << 0) +/* Verify the version number of the response. */ +# define TS_VFY_VERSION (1u << 1) +/* Verify if the policy supplied by the user matches the policy of the TSA. */ +# define TS_VFY_POLICY (1u << 2) +/* + * Verify the message imprint provided by the user. This flag should not be + * specified with TS_VFY_DATA. + */ +# define TS_VFY_IMPRINT (1u << 3) +/* + * Verify the message imprint computed by the verify method from the user + * provided data and the MD algorithm of the response. This flag should not + * be specified with TS_VFY_IMPRINT. + */ +# define TS_VFY_DATA (1u << 4) +/* Verify the nonce value. */ +# define TS_VFY_NONCE (1u << 5) +/* Verify if the TSA name field matches the signer certificate. */ +# define TS_VFY_SIGNER (1u << 6) +/* Verify if the TSA name field equals to the user provided name. */ +# define TS_VFY_TSA_NAME (1u << 7) + +/* You can use the following convenience constants. */ +# define TS_VFY_ALL_IMPRINT (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_IMPRINT \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) +# define TS_VFY_ALL_DATA (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_DATA \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) + +typedef struct TS_verify_ctx TS_VERIFY_CTX; + +int TS_RESP_verify_response(TS_VERIFY_CTX *ctx, TS_RESP *response); +int TS_RESP_verify_token(TS_VERIFY_CTX *ctx, PKCS7 *token); + +/* + * Declarations related to response verification context, + */ +TS_VERIFY_CTX *TS_VERIFY_CTX_new(void); +void TS_VERIFY_CTX_init(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_free(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_cleanup(TS_VERIFY_CTX *ctx); +int TS_VERIFY_CTX_set_flags(TS_VERIFY_CTX *ctx, int f); +int TS_VERIFY_CTX_add_flags(TS_VERIFY_CTX *ctx, int f); +BIO *TS_VERIFY_CTX_set_data(TS_VERIFY_CTX *ctx, BIO *b); +unsigned char *TS_VERIFY_CTX_set_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +X509_STORE *TS_VERIFY_CTX_set_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +STACK_OF(X509) *TS_VERIFY_CTS_set_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs); + +/*- + * If ctx is NULL, it allocates and returns a new object, otherwise + * it returns ctx. It initialises all the members as follows: + * flags = TS_VFY_ALL_IMPRINT & ~(TS_VFY_TSA_NAME | TS_VFY_SIGNATURE) + * certs = NULL + * store = NULL + * policy = policy from the request or NULL if absent (in this case + * TS_VFY_POLICY is cleared from flags as well) + * md_alg = MD algorithm from request + * imprint, imprint_len = imprint from request + * data = NULL + * nonce, nonce_len = nonce from the request or NULL if absent (in this case + * TS_VFY_NONCE is cleared from flags as well) + * tsa_name = NULL + * Important: after calling this method TS_VFY_SIGNATURE should be added! + */ +TS_VERIFY_CTX *TS_REQ_to_TS_VERIFY_CTX(TS_REQ *req, TS_VERIFY_CTX *ctx); + +/* Function declarations for TS_RESP defined in ts/ts_resp_print.c */ + +int TS_RESP_print_bio(BIO *bio, TS_RESP *a); +int TS_STATUS_INFO_print_bio(BIO *bio, TS_STATUS_INFO *a); +int TS_TST_INFO_print_bio(BIO *bio, TS_TST_INFO *a); + +/* Common utility functions defined in ts/ts_lib.c */ + +int TS_ASN1_INTEGER_print_bio(BIO *bio, const ASN1_INTEGER *num); +int TS_OBJ_print_bio(BIO *bio, const ASN1_OBJECT *obj); +int TS_ext_print_bio(BIO *bio, const STACK_OF(X509_EXTENSION) *extensions); +int TS_X509_ALGOR_print_bio(BIO *bio, const X509_ALGOR *alg); +int TS_MSG_IMPRINT_print_bio(BIO *bio, TS_MSG_IMPRINT *msg); + +/* + * Function declarations for handling configuration options, defined in + * ts/ts_conf.c + */ + +X509 *TS_CONF_load_cert(const char *file); +STACK_OF(X509) *TS_CONF_load_certs(const char *file); +EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass); +const char *TS_CONF_get_tsa_section(CONF *conf, const char *section); +int TS_CONF_set_serial(CONF *conf, const char *section, TS_serial_cb cb, + TS_RESP_CTX *ctx); +#ifndef OPENSSL_NO_ENGINE +int TS_CONF_set_crypto_device(CONF *conf, const char *section, + const char *device); +int TS_CONF_set_default_engine(const char *name); +#endif +int TS_CONF_set_signer_cert(CONF *conf, const char *section, + const char *cert, TS_RESP_CTX *ctx); +int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_key(CONF *conf, const char *section, + const char *key, const char *pass, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_digest(CONF *conf, const char *section, + const char *md, TS_RESP_CTX *ctx); +int TS_CONF_set_def_policy(CONF *conf, const char *section, + const char *policy, TS_RESP_CTX *ctx); +int TS_CONF_set_policies(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_digests(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_accuracy(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_clock_precision_digits(CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ordering(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_tsa_name(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_chain(CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_digest(CONF *conf, const char *section, + TS_RESP_CTX *ctx); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/lin64/include/openssl/tserr.h b/openSSL/lin64/include/openssl/tserr.h new file mode 100644 index 0000000..07f2333 --- /dev/null +++ b/openSSL/lin64/include/openssl/tserr.h @@ -0,0 +1,132 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TSERR_H +# define HEADER_TSERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_TS + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_TS_strings(void); + +/* + * TS function codes. + */ +# define TS_F_DEF_SERIAL_CB 110 +# define TS_F_DEF_TIME_CB 111 +# define TS_F_ESS_ADD_SIGNING_CERT 112 +# define TS_F_ESS_ADD_SIGNING_CERT_V2 147 +# define TS_F_ESS_CERT_ID_NEW_INIT 113 +# define TS_F_ESS_CERT_ID_V2_NEW_INIT 156 +# define TS_F_ESS_SIGNING_CERT_NEW_INIT 114 +# define TS_F_ESS_SIGNING_CERT_V2_NEW_INIT 157 +# define TS_F_INT_TS_RESP_VERIFY_TOKEN 149 +# define TS_F_PKCS7_TO_TS_TST_INFO 148 +# define TS_F_TS_ACCURACY_SET_MICROS 115 +# define TS_F_TS_ACCURACY_SET_MILLIS 116 +# define TS_F_TS_ACCURACY_SET_SECONDS 117 +# define TS_F_TS_CHECK_IMPRINTS 100 +# define TS_F_TS_CHECK_NONCES 101 +# define TS_F_TS_CHECK_POLICY 102 +# define TS_F_TS_CHECK_SIGNING_CERTS 103 +# define TS_F_TS_CHECK_STATUS_INFO 104 +# define TS_F_TS_COMPUTE_IMPRINT 145 +# define TS_F_TS_CONF_INVALID 151 +# define TS_F_TS_CONF_LOAD_CERT 153 +# define TS_F_TS_CONF_LOAD_CERTS 154 +# define TS_F_TS_CONF_LOAD_KEY 155 +# define TS_F_TS_CONF_LOOKUP_FAIL 152 +# define TS_F_TS_CONF_SET_DEFAULT_ENGINE 146 +# define TS_F_TS_GET_STATUS_TEXT 105 +# define TS_F_TS_MSG_IMPRINT_SET_ALGO 118 +# define TS_F_TS_REQ_SET_MSG_IMPRINT 119 +# define TS_F_TS_REQ_SET_NONCE 120 +# define TS_F_TS_REQ_SET_POLICY_ID 121 +# define TS_F_TS_RESP_CREATE_RESPONSE 122 +# define TS_F_TS_RESP_CREATE_TST_INFO 123 +# define TS_F_TS_RESP_CTX_ADD_FAILURE_INFO 124 +# define TS_F_TS_RESP_CTX_ADD_MD 125 +# define TS_F_TS_RESP_CTX_ADD_POLICY 126 +# define TS_F_TS_RESP_CTX_NEW 127 +# define TS_F_TS_RESP_CTX_SET_ACCURACY 128 +# define TS_F_TS_RESP_CTX_SET_CERTS 129 +# define TS_F_TS_RESP_CTX_SET_DEF_POLICY 130 +# define TS_F_TS_RESP_CTX_SET_SIGNER_CERT 131 +# define TS_F_TS_RESP_CTX_SET_STATUS_INFO 132 +# define TS_F_TS_RESP_GET_POLICY 133 +# define TS_F_TS_RESP_SET_GENTIME_WITH_PRECISION 134 +# define TS_F_TS_RESP_SET_STATUS_INFO 135 +# define TS_F_TS_RESP_SET_TST_INFO 150 +# define TS_F_TS_RESP_SIGN 136 +# define TS_F_TS_RESP_VERIFY_SIGNATURE 106 +# define TS_F_TS_TST_INFO_SET_ACCURACY 137 +# define TS_F_TS_TST_INFO_SET_MSG_IMPRINT 138 +# define TS_F_TS_TST_INFO_SET_NONCE 139 +# define TS_F_TS_TST_INFO_SET_POLICY_ID 140 +# define TS_F_TS_TST_INFO_SET_SERIAL 141 +# define TS_F_TS_TST_INFO_SET_TIME 142 +# define TS_F_TS_TST_INFO_SET_TSA 143 +# define TS_F_TS_VERIFY 108 +# define TS_F_TS_VERIFY_CERT 109 +# define TS_F_TS_VERIFY_CTX_NEW 144 + +/* + * TS reason codes. + */ +# define TS_R_BAD_PKCS7_TYPE 132 +# define TS_R_BAD_TYPE 133 +# define TS_R_CANNOT_LOAD_CERT 137 +# define TS_R_CANNOT_LOAD_KEY 138 +# define TS_R_CERTIFICATE_VERIFY_ERROR 100 +# define TS_R_COULD_NOT_SET_ENGINE 127 +# define TS_R_COULD_NOT_SET_TIME 115 +# define TS_R_DETACHED_CONTENT 134 +# define TS_R_ESS_ADD_SIGNING_CERT_ERROR 116 +# define TS_R_ESS_ADD_SIGNING_CERT_V2_ERROR 139 +# define TS_R_ESS_SIGNING_CERTIFICATE_ERROR 101 +# define TS_R_INVALID_NULL_POINTER 102 +# define TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE 117 +# define TS_R_MESSAGE_IMPRINT_MISMATCH 103 +# define TS_R_NONCE_MISMATCH 104 +# define TS_R_NONCE_NOT_RETURNED 105 +# define TS_R_NO_CONTENT 106 +# define TS_R_NO_TIME_STAMP_TOKEN 107 +# define TS_R_PKCS7_ADD_SIGNATURE_ERROR 118 +# define TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR 119 +# define TS_R_PKCS7_TO_TS_TST_INFO_FAILED 129 +# define TS_R_POLICY_MISMATCH 108 +# define TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 120 +# define TS_R_RESPONSE_SETUP_ERROR 121 +# define TS_R_SIGNATURE_FAILURE 109 +# define TS_R_THERE_MUST_BE_ONE_SIGNER 110 +# define TS_R_TIME_SYSCALL_ERROR 122 +# define TS_R_TOKEN_NOT_PRESENT 130 +# define TS_R_TOKEN_PRESENT 131 +# define TS_R_TSA_NAME_MISMATCH 111 +# define TS_R_TSA_UNTRUSTED 112 +# define TS_R_TST_INFO_SETUP_ERROR 123 +# define TS_R_TS_DATASIGN 124 +# define TS_R_UNACCEPTABLE_POLICY 125 +# define TS_R_UNSUPPORTED_MD_ALGORITHM 126 +# define TS_R_UNSUPPORTED_VERSION 113 +# define TS_R_VAR_BAD_VALUE 135 +# define TS_R_VAR_LOOKUP_FAILURE 136 +# define TS_R_WRONG_CONTENT_TYPE 114 + +# endif +#endif diff --git a/openSSL/lin64/include/openssl/txt_db.h b/openSSL/lin64/include/openssl/txt_db.h new file mode 100644 index 0000000..ec981a4 --- /dev/null +++ b/openSSL/lin64/include/openssl/txt_db.h @@ -0,0 +1,57 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TXT_DB_H +# define HEADER_TXT_DB_H + +# include +# include +# include +# include + +# define DB_ERROR_OK 0 +# define DB_ERROR_MALLOC 1 +# define DB_ERROR_INDEX_CLASH 2 +# define DB_ERROR_INDEX_OUT_OF_RANGE 3 +# define DB_ERROR_NO_INDEX 4 +# define DB_ERROR_INSERT_INDEX_CLASH 5 +# define DB_ERROR_WRONG_NUM_FIELDS 6 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OPENSSL_STRING *OPENSSL_PSTRING; +DEFINE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING) + +typedef struct txt_db_st { + int num_fields; + STACK_OF(OPENSSL_PSTRING) *data; + LHASH_OF(OPENSSL_STRING) **index; + int (**qual) (OPENSSL_STRING *); + long error; + long arg1; + long arg2; + OPENSSL_STRING *arg_row; +} TXT_DB; + +TXT_DB *TXT_DB_read(BIO *in, int num); +long TXT_DB_write(BIO *out, TXT_DB *db); +int TXT_DB_create_index(TXT_DB *db, int field, int (*qual) (OPENSSL_STRING *), + OPENSSL_LH_HASHFUNC hash, OPENSSL_LH_COMPFUNC cmp); +void TXT_DB_free(TXT_DB *db); +OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx, + OPENSSL_STRING *value); +int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *value); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/lin64/include/openssl/ui.h b/openSSL/lin64/include/openssl/ui.h new file mode 100644 index 0000000..7c721ec --- /dev/null +++ b/openSSL/lin64/include/openssl/ui.h @@ -0,0 +1,368 @@ +/* + * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_UI_H +# define HEADER_UI_H + +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# include +# include +# include + +/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ +# if OPENSSL_API_COMPAT < 0x10200000L +# ifdef OPENSSL_NO_UI_CONSOLE +# define OPENSSL_NO_UI +# endif +# endif + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * All the following functions return -1 or NULL on error and in some cases + * (UI_process()) -2 if interrupted or in some other way cancelled. When + * everything is fine, they return 0, a positive value or a non-NULL pointer, + * all depending on their purpose. + */ + +/* Creators and destructor. */ +UI *UI_new(void); +UI *UI_new_method(const UI_METHOD *method); +void UI_free(UI *ui); + +/*- + The following functions are used to add strings to be printed and prompt + strings to prompt for data. The names are UI_{add,dup}__string + and UI_{add,dup}_input_boolean. + + UI_{add,dup}__string have the following meanings: + add add a text or prompt string. The pointers given to these + functions are used verbatim, no copying is done. + dup make a copy of the text or prompt string, then add the copy + to the collection of strings in the user interface. + + The function is a name for the functionality that the given + string shall be used for. It can be one of: + input use the string as data prompt. + verify use the string as verification prompt. This + is used to verify a previous input. + info use the string for informational output. + error use the string for error output. + Honestly, there's currently no difference between info and error for the + moment. + + UI_{add,dup}_input_boolean have the same semantics for "add" and "dup", + and are typically used when one wants to prompt for a yes/no response. + + All of the functions in this group take a UI and a prompt string. + The string input and verify addition functions also take a flag argument, + a buffer for the result to end up with, a minimum input size and a maximum + input size (the result buffer MUST be large enough to be able to contain + the maximum number of characters). Additionally, the verify addition + functions takes another buffer to compare the result against. + The boolean input functions take an action description string (which should + be safe to ignore if the expected user action is obvious, for example with + a dialog box with an OK button and a Cancel button), a string of acceptable + characters to mean OK and to mean Cancel. The two last strings are checked + to make sure they don't have common characters. Additionally, the same + flag argument as for the string input is taken, as well as a result buffer. + The result buffer is required to be at least one byte long. Depending on + the answer, the first character from the OK or the Cancel character strings + will be stored in the first byte of the result buffer. No NUL will be + added, so the result is *not* a string. + + On success, the all return an index of the added information. That index + is useful when retrieving results with UI_get0_result(). */ +int UI_add_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_dup_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_add_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_dup_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_add_info_string(UI *ui, const char *text); +int UI_dup_info_string(UI *ui, const char *text); +int UI_add_error_string(UI *ui, const char *text); +int UI_dup_error_string(UI *ui, const char *text); + +/* These are the possible flags. They can be or'ed together. */ +/* Use to have echoing of input */ +# define UI_INPUT_FLAG_ECHO 0x01 +/* + * Use a default password. Where that password is found is completely up to + * the application, it might for example be in the user data set with + * UI_add_user_data(). It is not recommended to have more than one input in + * each UI being marked with this flag, or the application might get + * confused. + */ +# define UI_INPUT_FLAG_DEFAULT_PWD 0x02 + +/*- + * The user of these routines may want to define flags of their own. The core + * UI won't look at those, but will pass them on to the method routines. They + * must use higher bits so they don't get confused with the UI bits above. + * UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good + * example of use is this: + * + * #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE) + * +*/ +# define UI_INPUT_FLAG_USER_BASE 16 + +/*- + * The following function helps construct a prompt. object_desc is a + * textual short description of the object, for example "pass phrase", + * and object_name is the name of the object (might be a card name or + * a file name. + * The returned string shall always be allocated on the heap with + * OPENSSL_malloc(), and need to be free'd with OPENSSL_free(). + * + * If the ui_method doesn't contain a pointer to a user-defined prompt + * constructor, a default string is built, looking like this: + * + * "Enter {object_desc} for {object_name}:" + * + * So, if object_desc has the value "pass phrase" and object_name has + * the value "foo.key", the resulting string is: + * + * "Enter pass phrase for foo.key:" +*/ +char *UI_construct_prompt(UI *ui_method, + const char *object_desc, const char *object_name); + +/* + * The following function is used to store a pointer to user-specific data. + * Any previous such pointer will be returned and replaced. + * + * For callback purposes, this function makes a lot more sense than using + * ex_data, since the latter requires that different parts of OpenSSL or + * applications share the same ex_data index. + * + * Note that the UI_OpenSSL() method completely ignores the user data. Other + * methods may not, however. + */ +void *UI_add_user_data(UI *ui, void *user_data); +/* + * Alternatively, this function is used to duplicate the user data. + * This uses the duplicator method function. The destroy function will + * be used to free the user data in this case. + */ +int UI_dup_user_data(UI *ui, void *user_data); +/* We need a user data retrieving function as well. */ +void *UI_get0_user_data(UI *ui); + +/* Return the result associated with a prompt given with the index i. */ +const char *UI_get0_result(UI *ui, int i); +int UI_get_result_length(UI *ui, int i); + +/* When all strings have been added, process the whole thing. */ +int UI_process(UI *ui); + +/* + * Give a user interface parameterised control commands. This can be used to + * send down an integer, a data pointer or a function pointer, as well as be + * used to get information from a UI. + */ +int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f) (void)); + +/* The commands */ +/* + * Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the + * OpenSSL error stack before printing any info or added error messages and + * before any prompting. + */ +# define UI_CTRL_PRINT_ERRORS 1 +/* + * Check if a UI_process() is possible to do again with the same instance of + * a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0 + * if not. + */ +# define UI_CTRL_IS_REDOABLE 2 + +/* Some methods may use extra data */ +# define UI_set_app_data(s,arg) UI_set_ex_data(s,0,arg) +# define UI_get_app_data(s) UI_get_ex_data(s,0) + +# define UI_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef) +int UI_set_ex_data(UI *r, int idx, void *arg); +void *UI_get_ex_data(UI *r, int idx); + +/* Use specific methods instead of the built-in one */ +void UI_set_default_method(const UI_METHOD *meth); +const UI_METHOD *UI_get_default_method(void); +const UI_METHOD *UI_get_method(UI *ui); +const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth); + +# ifndef OPENSSL_NO_UI_CONSOLE + +/* The method with all the built-in thingies */ +UI_METHOD *UI_OpenSSL(void); + +# endif + +/* + * NULL method. Literally does nothing, but may serve as a placeholder + * to avoid internal default. + */ +const UI_METHOD *UI_null(void); + +/* ---------- For method writers ---------- */ +/*- + A method contains a number of functions that implement the low level + of the User Interface. The functions are: + + an opener This function starts a session, maybe by opening + a channel to a tty, or by opening a window. + a writer This function is called to write a given string, + maybe to the tty, maybe as a field label in a + window. + a flusher This function is called to flush everything that + has been output so far. It can be used to actually + display a dialog box after it has been built. + a reader This function is called to read a given prompt, + maybe from the tty, maybe from a field in a + window. Note that it's called with all string + structures, not only the prompt ones, so it must + check such things itself. + a closer This function closes the session, maybe by closing + the channel to the tty, or closing the window. + + All these functions are expected to return: + + 0 on error. + 1 on success. + -1 on out-of-band events, for example if some prompting has + been canceled (by pressing Ctrl-C, for example). This is + only checked when returned by the flusher or the reader. + + The way this is used, the opener is first called, then the writer for all + strings, then the flusher, then the reader for all strings and finally the + closer. Note that if you want to prompt from a terminal or other command + line interface, the best is to have the reader also write the prompts + instead of having the writer do it. If you want to prompt from a dialog + box, the writer can be used to build up the contents of the box, and the + flusher to actually display the box and run the event loop until all data + has been given, after which the reader only grabs the given data and puts + them back into the UI strings. + + All method functions take a UI as argument. Additionally, the writer and + the reader take a UI_STRING. +*/ + +/* + * The UI_STRING type is the data structure that contains all the needed info + * about a string or a prompt, including test data for a verification prompt. + */ +typedef struct ui_string_st UI_STRING; +DEFINE_STACK_OF(UI_STRING) + +/* + * The different types of strings that are currently supported. This is only + * needed by method authors. + */ +enum UI_string_types { + UIT_NONE = 0, + UIT_PROMPT, /* Prompt for a string */ + UIT_VERIFY, /* Prompt for a string and verify */ + UIT_BOOLEAN, /* Prompt for a yes/no response */ + UIT_INFO, /* Send info to the user */ + UIT_ERROR /* Send an error message to the user */ +}; + +/* Create and manipulate methods */ +UI_METHOD *UI_create_method(const char *name); +void UI_destroy_method(UI_METHOD *ui_method); +int UI_method_set_opener(UI_METHOD *method, int (*opener) (UI *ui)); +int UI_method_set_writer(UI_METHOD *method, + int (*writer) (UI *ui, UI_STRING *uis)); +int UI_method_set_flusher(UI_METHOD *method, int (*flusher) (UI *ui)); +int UI_method_set_reader(UI_METHOD *method, + int (*reader) (UI *ui, UI_STRING *uis)); +int UI_method_set_closer(UI_METHOD *method, int (*closer) (UI *ui)); +int UI_method_set_data_duplicator(UI_METHOD *method, + void *(*duplicator) (UI *ui, void *ui_data), + void (*destructor)(UI *ui, void *ui_data)); +int UI_method_set_prompt_constructor(UI_METHOD *method, + char *(*prompt_constructor) (UI *ui, + const char + *object_desc, + const char + *object_name)); +int UI_method_set_ex_data(UI_METHOD *method, int idx, void *data); +int (*UI_method_get_opener(const UI_METHOD *method)) (UI *); +int (*UI_method_get_writer(const UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_flusher(const UI_METHOD *method)) (UI *); +int (*UI_method_get_reader(const UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_closer(const UI_METHOD *method)) (UI *); +char *(*UI_method_get_prompt_constructor(const UI_METHOD *method)) + (UI *, const char *, const char *); +void *(*UI_method_get_data_duplicator(const UI_METHOD *method)) (UI *, void *); +void (*UI_method_get_data_destructor(const UI_METHOD *method)) (UI *, void *); +const void *UI_method_get_ex_data(const UI_METHOD *method, int idx); + +/* + * The following functions are helpers for method writers to access relevant + * data from a UI_STRING. + */ + +/* Return type of the UI_STRING */ +enum UI_string_types UI_get_string_type(UI_STRING *uis); +/* Return input flags of the UI_STRING */ +int UI_get_input_flags(UI_STRING *uis); +/* Return the actual string to output (the prompt, info or error) */ +const char *UI_get0_output_string(UI_STRING *uis); +/* + * Return the optional action string to output (the boolean prompt + * instruction) + */ +const char *UI_get0_action_string(UI_STRING *uis); +/* Return the result of a prompt */ +const char *UI_get0_result_string(UI_STRING *uis); +int UI_get_result_string_length(UI_STRING *uis); +/* + * Return the string to test the result against. Only useful with verifies. + */ +const char *UI_get0_test_string(UI_STRING *uis); +/* Return the required minimum size of the result */ +int UI_get_result_minsize(UI_STRING *uis); +/* Return the required maximum size of the result */ +int UI_get_result_maxsize(UI_STRING *uis); +/* Set the result of a UI_STRING. */ +int UI_set_result(UI *ui, UI_STRING *uis, const char *result); +int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len); + +/* A couple of popular utility functions */ +int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt, + int verify); +int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt, + int verify); +UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/uierr.h b/openSSL/lin64/include/openssl/uierr.h new file mode 100644 index 0000000..bd68864 --- /dev/null +++ b/openSSL/lin64/include/openssl/uierr.h @@ -0,0 +1,65 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_UIERR_H +# define HEADER_UIERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_UI_strings(void); + +/* + * UI function codes. + */ +# define UI_F_CLOSE_CONSOLE 115 +# define UI_F_ECHO_CONSOLE 116 +# define UI_F_GENERAL_ALLOCATE_BOOLEAN 108 +# define UI_F_GENERAL_ALLOCATE_PROMPT 109 +# define UI_F_NOECHO_CONSOLE 117 +# define UI_F_OPEN_CONSOLE 114 +# define UI_F_UI_CONSTRUCT_PROMPT 121 +# define UI_F_UI_CREATE_METHOD 112 +# define UI_F_UI_CTRL 111 +# define UI_F_UI_DUP_ERROR_STRING 101 +# define UI_F_UI_DUP_INFO_STRING 102 +# define UI_F_UI_DUP_INPUT_BOOLEAN 110 +# define UI_F_UI_DUP_INPUT_STRING 103 +# define UI_F_UI_DUP_USER_DATA 118 +# define UI_F_UI_DUP_VERIFY_STRING 106 +# define UI_F_UI_GET0_RESULT 107 +# define UI_F_UI_GET_RESULT_LENGTH 119 +# define UI_F_UI_NEW_METHOD 104 +# define UI_F_UI_PROCESS 113 +# define UI_F_UI_SET_RESULT 105 +# define UI_F_UI_SET_RESULT_EX 120 + +/* + * UI reason codes. + */ +# define UI_R_COMMON_OK_AND_CANCEL_CHARACTERS 104 +# define UI_R_INDEX_TOO_LARGE 102 +# define UI_R_INDEX_TOO_SMALL 103 +# define UI_R_NO_RESULT_BUFFER 105 +# define UI_R_PROCESSING_ERROR 107 +# define UI_R_RESULT_TOO_LARGE 100 +# define UI_R_RESULT_TOO_SMALL 101 +# define UI_R_SYSASSIGN_ERROR 109 +# define UI_R_SYSDASSGN_ERROR 110 +# define UI_R_SYSQIOW_ERROR 111 +# define UI_R_UNKNOWN_CONTROL_COMMAND 106 +# define UI_R_UNKNOWN_TTYGET_ERRNO_VALUE 108 +# define UI_R_USER_DATA_DUPLICATION_UNSUPPORTED 112 + +#endif diff --git a/openSSL/lin64/include/openssl/whrlpool.h b/openSSL/lin64/include/openssl/whrlpool.h new file mode 100644 index 0000000..20ea350 --- /dev/null +++ b/openSSL/lin64/include/openssl/whrlpool.h @@ -0,0 +1,48 @@ +/* + * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_WHRLPOOL_H +# define HEADER_WHRLPOOL_H + +#include + +# ifndef OPENSSL_NO_WHIRLPOOL +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define WHIRLPOOL_DIGEST_LENGTH (512/8) +# define WHIRLPOOL_BBLOCK 512 +# define WHIRLPOOL_COUNTER (256/8) + +typedef struct { + union { + unsigned char c[WHIRLPOOL_DIGEST_LENGTH]; + /* double q is here to ensure 64-bit alignment */ + double q[WHIRLPOOL_DIGEST_LENGTH / sizeof(double)]; + } H; + unsigned char data[WHIRLPOOL_BBLOCK / 8]; + unsigned int bitoff; + size_t bitlen[WHIRLPOOL_COUNTER / sizeof(size_t)]; +} WHIRLPOOL_CTX; + +int WHIRLPOOL_Init(WHIRLPOOL_CTX *c); +int WHIRLPOOL_Update(WHIRLPOOL_CTX *c, const void *inp, size_t bytes); +void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, const void *inp, size_t bits); +int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c); +unsigned char *WHIRLPOOL(const void *inp, size_t bytes, unsigned char *md); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/lin64/include/openssl/x509.h b/openSSL/lin64/include/openssl/x509.h new file mode 100644 index 0000000..3ff86ec --- /dev/null +++ b/openSSL/lin64/include/openssl/x509.h @@ -0,0 +1,1050 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509_H +# define HEADER_X509_H + +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Flags for X509_get_signature_info() */ +/* Signature info is valid */ +# define X509_SIG_INFO_VALID 0x1 +/* Signature is suitable for TLS use */ +# define X509_SIG_INFO_TLS 0x2 + +# define X509_FILETYPE_PEM 1 +# define X509_FILETYPE_ASN1 2 +# define X509_FILETYPE_DEFAULT 3 + +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 +# define X509v3_KU_NON_REPUDIATION 0x0040 +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 +# define X509v3_KU_KEY_AGREEMENT 0x0008 +# define X509v3_KU_KEY_CERT_SIGN 0x0004 +# define X509v3_KU_CRL_SIGN 0x0002 +# define X509v3_KU_ENCIPHER_ONLY 0x0001 +# define X509v3_KU_DECIPHER_ONLY 0x8000 +# define X509v3_KU_UNDEF 0xffff + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */ ; + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +typedef struct X509_sig_st X509_SIG; + +typedef struct X509_name_entry_st X509_NAME_ENTRY; + +DEFINE_STACK_OF(X509_NAME_ENTRY) + +DEFINE_STACK_OF(X509_NAME) + +# define X509_EX_V_NETSCAPE_HACK 0x8000 +# define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st X509_EXTENSION; + +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; + +DEFINE_STACK_OF(X509_EXTENSION) + +typedef struct x509_attributes_st X509_ATTRIBUTE; + +DEFINE_STACK_OF(X509_ATTRIBUTE) + +typedef struct X509_req_info_st X509_REQ_INFO; + +typedef struct X509_req_st X509_REQ; + +typedef struct x509_cert_aux_st X509_CERT_AUX; + +typedef struct x509_cinf_st X509_CINF; + +DEFINE_STACK_OF(X509) + +/* This is used for a table of trust checking functions */ + +typedef struct x509_trust_st { + int trust; + int flags; + int (*check_trust) (struct x509_trust_st *, X509 *, int); + char *name; + int arg1; + void *arg2; +} X509_TRUST; + +DEFINE_STACK_OF(X509_TRUST) + +/* standard trust ids */ + +# define X509_TRUST_DEFAULT 0 /* Only valid in purpose settings */ + +# define X509_TRUST_COMPAT 1 +# define X509_TRUST_SSL_CLIENT 2 +# define X509_TRUST_SSL_SERVER 3 +# define X509_TRUST_EMAIL 4 +# define X509_TRUST_OBJECT_SIGN 5 +# define X509_TRUST_OCSP_SIGN 6 +# define X509_TRUST_OCSP_REQUEST 7 +# define X509_TRUST_TSA 8 + +/* Keep these up to date! */ +# define X509_TRUST_MIN 1 +# define X509_TRUST_MAX 8 + +/* trust_flags values */ +# define X509_TRUST_DYNAMIC (1U << 0) +# define X509_TRUST_DYNAMIC_NAME (1U << 1) +/* No compat trust if self-signed, preempts "DO_SS" */ +# define X509_TRUST_NO_SS_COMPAT (1U << 2) +/* Compat trust if no explicit accepted trust EKUs */ +# define X509_TRUST_DO_SS_COMPAT (1U << 3) +/* Accept "anyEKU" as a wildcard trust OID */ +# define X509_TRUST_OK_ANY_EKU (1U << 4) + +/* check_trust return codes */ + +# define X509_TRUST_TRUSTED 1 +# define X509_TRUST_REJECTED 2 +# define X509_TRUST_UNTRUSTED 3 + +/* Flags for X509_print_ex() */ + +# define X509_FLAG_COMPAT 0 +# define X509_FLAG_NO_HEADER 1L +# define X509_FLAG_NO_VERSION (1L << 1) +# define X509_FLAG_NO_SERIAL (1L << 2) +# define X509_FLAG_NO_SIGNAME (1L << 3) +# define X509_FLAG_NO_ISSUER (1L << 4) +# define X509_FLAG_NO_VALIDITY (1L << 5) +# define X509_FLAG_NO_SUBJECT (1L << 6) +# define X509_FLAG_NO_PUBKEY (1L << 7) +# define X509_FLAG_NO_EXTENSIONS (1L << 8) +# define X509_FLAG_NO_SIGDUMP (1L << 9) +# define X509_FLAG_NO_AUX (1L << 10) +# define X509_FLAG_NO_ATTRIBUTES (1L << 11) +# define X509_FLAG_NO_IDS (1L << 12) + +/* Flags specific to X509_NAME_print_ex() */ + +/* The field separator information */ + +# define XN_FLAG_SEP_MASK (0xf << 16) + +# define XN_FLAG_COMPAT 0/* Traditional; use old X509_NAME_print */ +# define XN_FLAG_SEP_COMMA_PLUS (1 << 16)/* RFC2253 ,+ */ +# define XN_FLAG_SEP_CPLUS_SPC (2 << 16)/* ,+ spaced: more readable */ +# define XN_FLAG_SEP_SPLUS_SPC (3 << 16)/* ;+ spaced */ +# define XN_FLAG_SEP_MULTILINE (4 << 16)/* One line per field */ + +# define XN_FLAG_DN_REV (1 << 20)/* Reverse DN order */ + +/* How the field name is shown */ + +# define XN_FLAG_FN_MASK (0x3 << 21) + +# define XN_FLAG_FN_SN 0/* Object short name */ +# define XN_FLAG_FN_LN (1 << 21)/* Object long name */ +# define XN_FLAG_FN_OID (2 << 21)/* Always use OIDs */ +# define XN_FLAG_FN_NONE (3 << 21)/* No field names */ + +# define XN_FLAG_SPC_EQ (1 << 23)/* Put spaces round '=' */ + +/* + * This determines if we dump fields we don't recognise: RFC2253 requires + * this. + */ + +# define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) + +# define XN_FLAG_FN_ALIGN (1 << 25)/* Align field names to 20 + * characters */ + +/* Complete set of RFC2253 flags */ + +# define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \ + XN_FLAG_SEP_COMMA_PLUS | \ + XN_FLAG_DN_REV | \ + XN_FLAG_FN_SN | \ + XN_FLAG_DUMP_UNKNOWN_FIELDS) + +/* readable oneline form */ + +# define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \ + ASN1_STRFLGS_ESC_QUOTE | \ + XN_FLAG_SEP_CPLUS_SPC | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_SN) + +/* readable multiline form */ + +# define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + XN_FLAG_SEP_MULTILINE | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_LN | \ + XN_FLAG_FN_ALIGN) + +DEFINE_STACK_OF(X509_REVOKED) + +typedef struct X509_crl_info_st X509_CRL_INFO; + +DEFINE_STACK_OF(X509_CRL) + +typedef struct private_key_st { + int version; + /* The PKCS#8 data types */ + X509_ALGOR *enc_algor; + ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ + /* When decrypted, the following will not be NULL */ + EVP_PKEY *dec_pkey; + /* used to encrypt and decrypt */ + int key_length; + char *key_data; + int key_free; /* true if we should auto free key_data */ + /* expanded version of 'enc_algor' */ + EVP_CIPHER_INFO cipher; +} X509_PKEY; + +typedef struct X509_info_st { + X509 *x509; + X509_CRL *crl; + X509_PKEY *x_pkey; + EVP_CIPHER_INFO enc_cipher; + int enc_len; + char *enc_data; +} X509_INFO; + +DEFINE_STACK_OF(X509_INFO) + +/* + * The next 2 structures and their 8 routines are used to manipulate Netscape's + * spki structures - useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { +/* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +#ifndef OPENSSL_NO_SCRYPT +typedef struct SCRYPT_PARAMS_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *costParameter; + ASN1_INTEGER *blockSize; + ASN1_INTEGER *parallelizationParameter; + ASN1_INTEGER *keyLength; +} SCRYPT_PARAMS; +#endif + +#ifdef __cplusplus +} +#endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define X509_EXT_PACK_UNKNOWN 1 +# define X509_EXT_PACK_STRING 2 + +# define X509_extract_key(x) X509_get_pubkey(x)/*****/ +# define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +# define X509_name_cmp(a,b) X509_NAME_cmp((a),(b)) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl), + int (*crl_free) (X509_CRL *crl), + int (*crl_lookup) (X509_CRL *crl, + X509_REVOKED **ret, + ASN1_INTEGER *ser, + X509_NAME *issuer), + int (*crl_verify) (X509_CRL *crl, + EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); + +const char *X509_verify_cert_error_string(long n); + +int X509_verify(X509 *a, EVP_PKEY *r); + +int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); +int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); +int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); + +NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); +char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); +EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); +int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); + +int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); + +int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); +int X509_signature_print(BIO *bp, const X509_ALGOR *alg, + const ASN1_STRING *sig); + +int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); +# ifndef OPENSSL_NO_OCSP +int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert); +# endif +int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); +int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); +# ifndef OPENSSL_NO_OCSP +int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl); +# endif +int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); + +int X509_pubkey_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); + +# ifndef OPENSSL_NO_STDIO +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa); +DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); +# endif + +X509 *d2i_X509_bio(BIO *bp, X509 **x509); +int i2d_X509_bio(BIO *bp, X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa); +DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); + +X509 *X509_dup(X509 *x509); +X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa); +X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex); +X509_CRL *X509_CRL_dup(X509_CRL *crl); +X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev); +X509_REQ *X509_REQ_dup(X509_REQ *req); +X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn); +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, + const void **ppval, const X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); +int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src); + +X509_NAME *X509_NAME_dup(X509_NAME *xn); +X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne); + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, + int offset_day, long offset_sec, time_t *t); +ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); + +const char *X509_get_default_cert_area(void); +const char *X509_get_default_cert_dir(void); +const char *X509_get_default_cert_file(void); +const char *X509_get_default_cert_dir_env(void); +const char *X509_get_default_cert_file_env(void); +const char *X509_get_default_private_dir(void); + +X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); + +DECLARE_ASN1_FUNCTIONS(X509_ALGOR) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) +DECLARE_ASN1_FUNCTIONS(X509_VAL) + +DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) + +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get0(X509_PUBKEY *key); +EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +long X509_get_pathlen(X509 *x); +int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp); +EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length); +# ifndef OPENSSL_NO_RSA +int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp); +RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_DSA +int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp); +DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_EC +int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp); +EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length); +# endif + +DECLARE_ASN1_FUNCTIONS(X509_SIG) +void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **palg, + const ASN1_OCTET_STRING **pdigest); +void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **palg, + ASN1_OCTET_STRING **pdigest); + +DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) +DECLARE_ASN1_FUNCTIONS(X509_REQ) + +DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) +X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); + +DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) + +DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) + +DECLARE_ASN1_FUNCTIONS(X509_NAME) + +int X509_NAME_set(X509_NAME **xn, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) + +DECLARE_ASN1_FUNCTIONS(X509) +DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) + +#define X509_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509, l, p, newf, dupf, freef) +int X509_set_ex_data(X509 *r, int idx, void *arg); +void *X509_get_ex_data(X509 *r, int idx); +int i2d_X509_AUX(X509 *a, unsigned char **pp); +X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length); + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid, + int *secbits, uint32_t *flags); +void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid, + int secbits, uint32_t flags); + +int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, + uint32_t *flags); + +void X509_get0_signature(const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg, const X509 *x); +int X509_get_signature_nid(const X509 *x); + +int X509_trusted(const X509 *x); +int X509_alias_set1(X509 *x, const unsigned char *name, int len); +int X509_keyid_set1(X509 *x, const unsigned char *id, int len); +unsigned char *X509_alias_get0(X509 *x, int *len); +unsigned char *X509_keyid_get0(X509 *x, int *len); +int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, + int); +int X509_TRUST_set(int *t, int trust); +int X509_add1_trust_object(X509 *x, const ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, const ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); + +STACK_OF(ASN1_OBJECT) *X509_get0_trust_objects(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_reject_objects(X509 *x); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); + +X509_PKEY *X509_PKEY_new(void); +void X509_PKEY_free(X509_PKEY *a); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(const X509_NAME *a, char *buf, int size); + +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); + +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); + +int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + char *data, EVP_PKEY *pkey, const EVP_MD *type); + +int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, + unsigned char *md, unsigned int *len); + +int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, void *data, EVP_PKEY *pkey); + +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, void *data, + EVP_PKEY *pkey, const EVP_MD *type); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + void *asn, EVP_MD_CTX *ctx); + +long X509_get_version(const X509 *x); +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x); +int X509_set_issuer_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_issuer_name(const X509 *a); +int X509_set_subject_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_subject_name(const X509 *a); +const ASN1_TIME * X509_get0_notBefore(const X509 *x); +ASN1_TIME *X509_getm_notBefore(const X509 *x); +int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm); +const ASN1_TIME *X509_get0_notAfter(const X509 *x); +ASN1_TIME *X509_getm_notAfter(const X509 *x); +int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +int X509_up_ref(X509 *x); +int X509_get_signature_type(const X509 *x); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_get_notBefore X509_getm_notBefore +# define X509_get_notAfter X509_getm_notAfter +# define X509_set_notBefore X509_set1_notBefore +# define X509_set_notAfter X509_set1_notAfter +#endif + + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &buf) + */ +X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x); +const STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x); +void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid, + const ASN1_BIT_STRING **psuid); +const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x); + +EVP_PKEY *X509_get0_pubkey(const X509 *x); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); +int X509_certificate_type(const X509 *x, const EVP_PKEY *pubkey); + +long X509_REQ_get_version(const X509_REQ *req); +int X509_REQ_set_version(X509_REQ *x, long version); +X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req); +int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name); +void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig); +int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg); +int X509_REQ_get_signature_nid(const X509_REQ *req); +int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts, + int nid); +int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts); +int X509_REQ_get_attr_count(const X509_REQ *req); +int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); +int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); +X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); +int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); +int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name); +int X509_CRL_set1_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set1_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); +int X509_CRL_up_ref(X509_CRL *crl); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate +# define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate +#endif + +long X509_CRL_get_version(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl); +DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl)) +DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl)) +X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl); +const STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(const X509_CRL *crl); +STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl); +void X509_CRL_get0_signature(const X509_CRL *crl, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_CRL_get_signature_nid(const X509_CRL *crl); +int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp); + +const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *x); +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *x); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); +const STACK_OF(X509_EXTENSION) * +X509_REVOKED_get0_extensions(const X509_REVOKED *r); + +X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, + EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); + +int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); + +int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_chain_check_suiteb(int *perror_depth, + X509 *x, STACK_OF(X509) *chain, + unsigned long flags); +int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); + +int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_and_serial_hash(X509 *a); + +int X509_issuer_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_name_hash(X509 *a); + +int X509_subject_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_subject_name_hash(X509 *x); + +# ifndef OPENSSL_NO_MD5 +unsigned long X509_issuer_name_hash_old(X509 *a); +unsigned long X509_subject_name_hash_old(X509 *x); +# endif + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +unsigned long X509_NAME_hash(X509_NAME *x); +unsigned long X509_NAME_hash_old(X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +int X509_aux_print(BIO *out, X509 *x, int indent); +# ifndef OPENSSL_NO_STDIO +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent, + unsigned long flags); +# endif + +int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); + +int X509_NAME_entry_count(const X509_NAME *name); +int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len); +int X509_NAME_get_text_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passing -1, not 0 as lastpos. The functions that use + * lastpos, search after that position on. + */ +int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc); +X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); +int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, + const char *field, int type, + const unsigned char *bytes, + int len); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, + int type, + const unsigned char *bytes, + int len); +int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj); +int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, + const unsigned char *bytes, int len); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne); +ASN1_STRING * X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne); +int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne); + +int X509_NAME_get0_der(X509_NAME *nm, const unsigned char **pder, + size_t *pderlen); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + const ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); + +int X509_get_ext_count(const X509 *x); +int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(const X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(const X509_CRL *x); +int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(const X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit, + int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *x, int nid, int *crit, + int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + const ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(const X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *x, + const ASN1_OBJECT *obj, int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_verify_cert(X509_STORE_CTX *ctx); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, X509_NAME *name, + ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) +#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) +#endif + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid); + +#ifndef OPENSSL_NO_SCRYPT +X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, + const unsigned char *salt, int saltlen, + unsigned char *aiv, uint64_t N, uint64_t r, + uint64_t p); +#endif + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen); + +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey); + +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, + int version, int ptype, void *pval, + unsigned char *penc, int penclen); +int PKCS8_pkey_get0(const ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + const X509_ALGOR **pa, const PKCS8_PRIV_KEY_INFO *p8); + +const STACK_OF(X509_ATTRIBUTE) * +PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8); +int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, + const unsigned char *bytes, int len); + +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, + int ptype, void *pval, + unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, X509_PUBKEY *pub); + +int X509_check_trust(X509 *x, int id, int flags); +int X509_TRUST_get_count(void); +X509_TRUST *X509_TRUST_get0(int idx); +int X509_TRUST_get_by_id(int id); +int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int), + const char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(const X509_TRUST *xp); +char *X509_TRUST_get0_name(const X509_TRUST *xp); +int X509_TRUST_get_trust(const X509_TRUST *xp); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/x509_vfy.h b/openSSL/lin64/include/openssl/x509_vfy.h new file mode 100644 index 0000000..25c79f1 --- /dev/null +++ b/openSSL/lin64/include/openssl/x509_vfy.h @@ -0,0 +1,632 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509_VFY_H +# define HEADER_X509_VFY_H + +/* + * Protect against recursion, x509.h and x509_vfy.h each include the other. + */ +# ifndef HEADER_X509_H +# include +# endif + +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +SSL_CTX -> X509_STORE + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + +SSL -> X509_STORE_CTX + ->X509_STORE + +The X509_STORE holds the tables etc for verification stuff. +A X509_STORE_CTX is used while validating a single certificate. +The X509_STORE has X509_LOOKUPs for looking up certs. +The X509_STORE then calls a function to actually verify the +certificate chain. +*/ + +typedef enum { + X509_LU_NONE = 0, + X509_LU_X509, X509_LU_CRL +} X509_LOOKUP_TYPE; + +#if OPENSSL_API_COMPAT < 0x10100000L +#define X509_LU_RETRY -1 +#define X509_LU_FAIL 0 +#endif + +DEFINE_STACK_OF(X509_LOOKUP) +DEFINE_STACK_OF(X509_OBJECT) +DEFINE_STACK_OF(X509_VERIFY_PARAM) + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, + X509_STORE_CTX *ctx, X509 *x); +typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, + X509 *x, X509 *issuer); +typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL **crl, X509 *x); +typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl); +typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL *crl, X509 *x); +typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx); +typedef STACK_OF(X509) *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx, + X509_NAME *nm); +typedef STACK_OF(X509_CRL) *(*X509_STORE_CTX_lookup_crls_fn)(X509_STORE_CTX *ctx, + X509_NAME *nm); +typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx); + + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +# define X509_STORE_CTX_set_app_data(ctx,data) \ + X509_STORE_CTX_set_ex_data(ctx,0,data) +# define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx,0) + +# define X509_L_FILE_LOAD 1 +# define X509_L_ADD_DIR 2 + +# define X509_LOOKUP_load_file(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_FILE_LOAD,(name),(long)(type),NULL) + +# define X509_LOOKUP_add_dir(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_ADD_DIR,(name),(long)(type),NULL) + +# define X509_V_OK 0 +# define X509_V_ERR_UNSPECIFIED 1 +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +# define X509_V_ERR_UNABLE_TO_GET_CRL 3 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +# define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +# define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +# define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +# define X509_V_ERR_CERT_NOT_YET_VALID 9 +# define X509_V_ERR_CERT_HAS_EXPIRED 10 +# define X509_V_ERR_CRL_NOT_YET_VALID 11 +# define X509_V_ERR_CRL_HAS_EXPIRED 12 +# define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +# define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +# define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +# define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +# define X509_V_ERR_OUT_OF_MEM 17 +# define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +# define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +# define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +# define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +# define X509_V_ERR_CERT_REVOKED 23 +# define X509_V_ERR_INVALID_CA 24 +# define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +# define X509_V_ERR_INVALID_PURPOSE 26 +# define X509_V_ERR_CERT_UNTRUSTED 27 +# define X509_V_ERR_CERT_REJECTED 28 +/* These are 'informational' when looking for issuer cert */ +# define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +# define X509_V_ERR_AKID_SKID_MISMATCH 30 +# define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +# define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 +# define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +# define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +# define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +# define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +# define X509_V_ERR_INVALID_NON_CA 37 +# define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +# define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +# define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 +# define X509_V_ERR_INVALID_EXTENSION 41 +# define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +# define X509_V_ERR_NO_EXPLICIT_POLICY 43 +# define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +# define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 +# define X509_V_ERR_UNNESTED_RESOURCE 46 +# define X509_V_ERR_PERMITTED_VIOLATION 47 +# define X509_V_ERR_EXCLUDED_VIOLATION 48 +# define X509_V_ERR_SUBTREE_MINMAX 49 +/* The application is not happy */ +# define X509_V_ERR_APPLICATION_VERIFICATION 50 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +# define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +# define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 +/* Another issuer check debug option */ +# define X509_V_ERR_PATH_LOOP 55 +/* Suite B mode algorithm violation */ +# define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +# define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +# define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +# define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +# define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +# define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 +/* Host, email and IP check errors */ +# define X509_V_ERR_HOSTNAME_MISMATCH 62 +# define X509_V_ERR_EMAIL_MISMATCH 63 +# define X509_V_ERR_IP_ADDRESS_MISMATCH 64 +/* DANE TLSA errors */ +# define X509_V_ERR_DANE_NO_MATCH 65 +/* security level errors */ +# define X509_V_ERR_EE_KEY_TOO_SMALL 66 +# define X509_V_ERR_CA_KEY_TOO_SMALL 67 +# define X509_V_ERR_CA_MD_TOO_WEAK 68 +/* Caller error */ +# define X509_V_ERR_INVALID_CALL 69 +/* Issuer lookup error */ +# define X509_V_ERR_STORE_LOOKUP 70 +/* Certificate transparency */ +# define X509_V_ERR_NO_VALID_SCTS 71 + +# define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72 +/* OCSP status errors */ +# define X509_V_ERR_OCSP_VERIFY_NEEDED 73 /* Need OCSP verification */ +# define X509_V_ERR_OCSP_VERIFY_FAILED 74 /* Couldn't verify cert through OCSP */ +# define X509_V_ERR_OCSP_CERT_UNKNOWN 75 /* Certificate wasn't recognized by the OCSP responder */ +# define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 76 +# define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 77 +# define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 78 +# define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 79 + +/* Certificate verify flags */ + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_V_FLAG_CB_ISSUER_CHECK 0x0 /* Deprecated */ +# endif +/* Use check time instead of current time */ +# define X509_V_FLAG_USE_CHECK_TIME 0x2 +/* Lookup CRLs */ +# define X509_V_FLAG_CRL_CHECK 0x4 +/* Lookup CRLs for whole chain */ +# define X509_V_FLAG_CRL_CHECK_ALL 0x8 +/* Ignore unhandled critical extensions */ +# define X509_V_FLAG_IGNORE_CRITICAL 0x10 +/* Disable workarounds for broken certificates */ +# define X509_V_FLAG_X509_STRICT 0x20 +/* Enable proxy certificate validation */ +# define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 +/* Enable policy checking */ +# define X509_V_FLAG_POLICY_CHECK 0x80 +/* Policy variable require-explicit-policy */ +# define X509_V_FLAG_EXPLICIT_POLICY 0x100 +/* Policy variable inhibit-any-policy */ +# define X509_V_FLAG_INHIBIT_ANY 0x200 +/* Policy variable inhibit-policy-mapping */ +# define X509_V_FLAG_INHIBIT_MAP 0x400 +/* Notify callback that policy is OK */ +# define X509_V_FLAG_NOTIFY_POLICY 0x800 +/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ +# define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 +/* Delta CRL support */ +# define X509_V_FLAG_USE_DELTAS 0x2000 +/* Check self-signed CA signature */ +# define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +# define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +# define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define X509_V_FLAG_SUITEB_128_LOS 0x30000 +/* Allow partial chains if at least one certificate is in trusted store */ +# define X509_V_FLAG_PARTIAL_CHAIN 0x80000 +/* + * If the initial chain is not trusted, do not attempt to build an alternative + * chain. Alternate chain checking was introduced in 1.1.0. Setting this flag + * will force the behaviour to match that of previous versions. + */ +# define X509_V_FLAG_NO_ALT_CHAINS 0x100000 +/* Do not check certificate/CRL validity against current time */ +# define X509_V_FLAG_NO_CHECK_TIME 0x200000 + +# define X509_VP_FLAG_DEFAULT 0x1 +# define X509_VP_FLAG_OVERWRITE 0x2 +# define X509_VP_FLAG_RESET_FLAGS 0x4 +# define X509_VP_FLAG_LOCKED 0x8 +# define X509_VP_FLAG_ONCE 0x10 + +/* Internal use: mask of policy related options */ +# define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ + | X509_V_FLAG_EXPLICIT_POLICY \ + | X509_V_FLAG_INHIBIT_ANY \ + | X509_V_FLAG_INHIBIT_MAP) + +int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, X509_LOOKUP_TYPE type, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + X509_LOOKUP_TYPE type, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +int X509_OBJECT_up_ref_count(X509_OBJECT *a); +X509_OBJECT *X509_OBJECT_new(void); +void X509_OBJECT_free(X509_OBJECT *a); +X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a); +X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a); +int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); +X509_CRL *X509_OBJECT_get0_X509_CRL(X509_OBJECT *a); +int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *v); +int X509_STORE_lock(X509_STORE *ctx); +int X509_STORE_unlock(X509_STORE *ctx); +int X509_STORE_up_ref(X509_STORE *v); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(X509_STORE *v); + +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(X509_STORE_CTX *st, X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); +int X509_STORE_set_trust(X509_STORE *ctx, int trust); +int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(X509_STORE *ctx); + +void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +#define X509_STORE_set_verify_func(ctx, func) \ + X509_STORE_set_verify((ctx),(func)) +void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_fn verify); +X509_STORE_CTX_verify_fn X509_STORE_get_verify(X509_STORE *ctx); +void X509_STORE_set_verify_cb(X509_STORE *ctx, + X509_STORE_CTX_verify_cb verify_cb); +# define X509_STORE_set_verify_cb_func(ctx,func) \ + X509_STORE_set_verify_cb((ctx),(func)) +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(X509_STORE *ctx); +void X509_STORE_set_get_issuer(X509_STORE *ctx, + X509_STORE_CTX_get_issuer_fn get_issuer); +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(X509_STORE *ctx); +void X509_STORE_set_check_issued(X509_STORE *ctx, + X509_STORE_CTX_check_issued_fn check_issued); +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(X509_STORE *ctx); +void X509_STORE_set_check_revocation(X509_STORE *ctx, + X509_STORE_CTX_check_revocation_fn check_revocation); +X509_STORE_CTX_check_revocation_fn X509_STORE_get_check_revocation(X509_STORE *ctx); +void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(X509_STORE *ctx); +void X509_STORE_set_check_crl(X509_STORE *ctx, + X509_STORE_CTX_check_crl_fn check_crl); +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(X509_STORE *ctx); +void X509_STORE_set_cert_crl(X509_STORE *ctx, + X509_STORE_CTX_cert_crl_fn cert_crl); +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(X509_STORE *ctx); +void X509_STORE_set_check_policy(X509_STORE *ctx, + X509_STORE_CTX_check_policy_fn check_policy); +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(X509_STORE *ctx); +void X509_STORE_set_lookup_certs(X509_STORE *ctx, + X509_STORE_CTX_lookup_certs_fn lookup_certs); +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(X509_STORE *ctx); +void X509_STORE_set_lookup_crls(X509_STORE *ctx, + X509_STORE_CTX_lookup_crls_fn lookup_crls); +#define X509_STORE_set_lookup_crls_cb(ctx, func) \ + X509_STORE_set_lookup_crls((ctx), (func)) +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(X509_STORE *ctx); +void X509_STORE_set_cleanup(X509_STORE *ctx, + X509_STORE_CTX_cleanup_fn cleanup); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(X509_STORE *ctx); + +#define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) +int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); +void *X509_STORE_get_ex_data(X509_STORE *ctx, int idx); + +X509_STORE_CTX *X509_STORE_CTX_new(void); + +int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + +void X509_STORE_CTX_free(X509_STORE_CTX *ctx); +int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, + X509 *x509, STACK_OF(X509) *chain); +void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); + +X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_cert(X509_STORE_CTX *ctx); +STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_cb verify); +X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(X509_STORE_CTX *ctx); +X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(X509_STORE_CTX *ctx); +X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(X509_STORE_CTX *ctx); +X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(X509_STORE_CTX *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(X509_STORE_CTX *ctx); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define X509_STORE_CTX_get_chain X509_STORE_CTX_get0_chain +# define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted +# define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack +# define X509_STORE_get_by_subject X509_STORE_CTX_get_by_subject +# define X509_STORE_get1_certs X509_STORE_CTX_get1_certs +# define X509_STORE_get1_crls X509_STORE_CTX_get1_crls +/* the following macro is misspelled; use X509_STORE_get1_certs instead */ +# define X509_STORE_get1_cert X509_STORE_CTX_get1_certs +/* the following macro is misspelled; use X509_STORE_get1_crls instead */ +# define X509_STORE_get1_crl X509_STORE_CTX_get1_crls +#endif + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); + +typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + X509_NAME *name, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + X509_NAME *name, + ASN1_INTEGER *serial, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const unsigned char* bytes, + int len, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const char *str, + int len, + X509_OBJECT *ret); + +X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); +void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method, + int (*new_item) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method, + void (*free_fn) (X509_LOOKUP *ctx)); +void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method, + int (*init) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method, + int (*shutdown) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method, + X509_LOOKUP_ctrl_fn ctrl_fn); +X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_subject_fn fn); +X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_issuer_serial_fn fn); +X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_fingerprint_fn fn); +X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_alias_fn fn); +X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( + const X509_LOOKUP_METHOD *method); + + +int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); +int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); + +int X509_STORE_CTX_get_by_subject(X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, + X509_NAME *name, X509_OBJECT *ret); +X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + X509_NAME *name); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); + +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); + +X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); +void X509_LOOKUP_free(X509_LOOKUP *ctx); +int X509_LOOKUP_init(X509_LOOKUP *ctx); +int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + X509_NAME *name, X509_OBJECT *ret); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + X509_NAME *name, ASN1_INTEGER *serial, + X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const char *str, int len, X509_OBJECT *ret); +int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); +void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); +X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +int X509_STORE_load_locations(X509_STORE *ctx, + const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *ctx); + +#define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) +int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); +void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); +X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); +X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *c, X509 *x); +void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, STACK_OF(X509_CRL) *sk); +int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); +int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, + int purpose, int trust); +void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); +void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, + time_t t); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_num_untrusted(X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); +int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); + +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +void X509_STORE_CTX_set0_dane(X509_STORE_CTX *ctx, SSL_DANE *dane); +#define DANE_FLAG_NO_DANE_EE_NAMECHECKS (1L << 0) + +/* X509_VERIFY_PARAM functions */ + +X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); +void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); +int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); +void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); +void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); +time_t X509_VERIFY_PARAM_get_time(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); +int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, + ASN1_OBJECT *policy); +int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, + STACK_OF(ASN1_OBJECT) *policies); + +int X509_VERIFY_PARAM_set_inh_flags(X509_VERIFY_PARAM *param, + uint32_t flags); +uint32_t X509_VERIFY_PARAM_get_inh_flags(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param); +char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *); +void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, + const unsigned char *ip, size_t iplen); +int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, + const char *ipasc); + +int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param); +const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_count(void); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); +void X509_VERIFY_PARAM_table_cleanup(void); + +/* Non positive return values are errors */ +#define X509_PCY_TREE_FAILURE -2 /* Failure to satisfy explicit policy */ +#define X509_PCY_TREE_INVALID -1 /* Inconsistent or invalid extensions */ +#define X509_PCY_TREE_INTERNAL 0 /* Internal error, most likely malloc */ + +/* + * Positive return values form a bit mask, all but the first are internal to + * the library and don't appear in results from X509_policy_check(). + */ +#define X509_PCY_TREE_VALID 1 /* The policy tree is valid */ +#define X509_PCY_TREE_EMPTY 2 /* The policy tree is empty */ +#define X509_PCY_TREE_EXPLICIT 4 /* Explicit policy required */ + +int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, + STACK_OF(X509) *certs, + STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); + +void X509_policy_tree_free(X509_POLICY_TREE *tree); + +int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); +X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, + int i); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_policies(const + X509_POLICY_TREE + *tree); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_user_policies(const + X509_POLICY_TREE + *tree); + +int X509_policy_level_node_count(X509_POLICY_LEVEL *level); + +X509_POLICY_NODE *X509_policy_level_get0_node(X509_POLICY_LEVEL *level, + int i); + +const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); + +STACK_OF(POLICYQUALINFO) *X509_policy_node_get0_qualifiers(const + X509_POLICY_NODE + *node); +const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE + *node); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/lin64/include/openssl/x509err.h b/openSSL/lin64/include/openssl/x509err.h new file mode 100644 index 0000000..cd08673 --- /dev/null +++ b/openSSL/lin64/include/openssl/x509err.h @@ -0,0 +1,129 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509ERR_H +# define HEADER_X509ERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_X509_strings(void); + +/* + * X509 function codes. + */ +# define X509_F_ADD_CERT_DIR 100 +# define X509_F_BUILD_CHAIN 106 +# define X509_F_BY_FILE_CTRL 101 +# define X509_F_CHECK_NAME_CONSTRAINTS 149 +# define X509_F_CHECK_POLICY 145 +# define X509_F_DANE_I2D 107 +# define X509_F_DIR_CTRL 102 +# define X509_F_GET_CERT_BY_SUBJECT 103 +# define X509_F_I2D_X509_AUX 151 +# define X509_F_LOOKUP_CERTS_SK 152 +# define X509_F_NETSCAPE_SPKI_B64_DECODE 129 +# define X509_F_NETSCAPE_SPKI_B64_ENCODE 130 +# define X509_F_NEW_DIR 153 +# define X509_F_X509AT_ADD1_ATTR 135 +# define X509_F_X509V3_ADD_EXT 104 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140 +# define X509_F_X509_ATTRIBUTE_GET0_DATA 139 +# define X509_F_X509_ATTRIBUTE_SET1_DATA 138 +# define X509_F_X509_CHECK_PRIVATE_KEY 128 +# define X509_F_X509_CRL_DIFF 105 +# define X509_F_X509_CRL_METHOD_NEW 154 +# define X509_F_X509_CRL_PRINT_FP 147 +# define X509_F_X509_EXTENSION_CREATE_BY_NID 108 +# define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109 +# define X509_F_X509_GET_PUBKEY_PARAMETERS 110 +# define X509_F_X509_LOAD_CERT_CRL_FILE 132 +# define X509_F_X509_LOAD_CERT_FILE 111 +# define X509_F_X509_LOAD_CRL_FILE 112 +# define X509_F_X509_LOOKUP_METH_NEW 160 +# define X509_F_X509_LOOKUP_NEW 155 +# define X509_F_X509_NAME_ADD_ENTRY 113 +# define X509_F_X509_NAME_CANON 156 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131 +# define X509_F_X509_NAME_ENTRY_SET_OBJECT 115 +# define X509_F_X509_NAME_ONELINE 116 +# define X509_F_X509_NAME_PRINT 117 +# define X509_F_X509_OBJECT_NEW 150 +# define X509_F_X509_PRINT_EX_FP 118 +# define X509_F_X509_PUBKEY_DECODE 148 +# define X509_F_X509_PUBKEY_GET 161 +# define X509_F_X509_PUBKEY_GET0 119 +# define X509_F_X509_PUBKEY_SET 120 +# define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144 +# define X509_F_X509_REQ_PRINT_EX 121 +# define X509_F_X509_REQ_PRINT_FP 122 +# define X509_F_X509_REQ_TO_X509 123 +# define X509_F_X509_STORE_ADD_CERT 124 +# define X509_F_X509_STORE_ADD_CRL 125 +# define X509_F_X509_STORE_ADD_LOOKUP 157 +# define X509_F_X509_STORE_CTX_GET1_ISSUER 146 +# define X509_F_X509_STORE_CTX_INIT 143 +# define X509_F_X509_STORE_CTX_NEW 142 +# define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134 +# define X509_F_X509_STORE_NEW 158 +# define X509_F_X509_TO_X509_REQ 126 +# define X509_F_X509_TRUST_ADD 133 +# define X509_F_X509_TRUST_SET 141 +# define X509_F_X509_VERIFY_CERT 127 +# define X509_F_X509_VERIFY_PARAM_NEW 159 + +/* + * X509 reason codes. + */ +# define X509_R_AKID_MISMATCH 110 +# define X509_R_BAD_SELECTOR 133 +# define X509_R_BAD_X509_FILETYPE 100 +# define X509_R_BASE64_DECODE_ERROR 118 +# define X509_R_CANT_CHECK_DH_KEY 114 +# define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 +# define X509_R_CRL_ALREADY_DELTA 127 +# define X509_R_CRL_VERIFY_FAILURE 131 +# define X509_R_IDP_MISMATCH 128 +# define X509_R_INVALID_ATTRIBUTES 138 +# define X509_R_INVALID_DIRECTORY 113 +# define X509_R_INVALID_FIELD_NAME 119 +# define X509_R_INVALID_TRUST 123 +# define X509_R_ISSUER_MISMATCH 129 +# define X509_R_KEY_TYPE_MISMATCH 115 +# define X509_R_KEY_VALUES_MISMATCH 116 +# define X509_R_LOADING_CERT_DIR 103 +# define X509_R_LOADING_DEFAULTS 104 +# define X509_R_METHOD_NOT_SUPPORTED 124 +# define X509_R_NAME_TOO_LONG 134 +# define X509_R_NEWER_CRL_NOT_NEWER 132 +# define X509_R_NO_CERTIFICATE_FOUND 135 +# define X509_R_NO_CERTIFICATE_OR_CRL_FOUND 136 +# define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 +# define X509_R_NO_CRL_FOUND 137 +# define X509_R_NO_CRL_NUMBER 130 +# define X509_R_PUBLIC_KEY_DECODE_ERROR 125 +# define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 +# define X509_R_SHOULD_RETRY 106 +# define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 +# define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 +# define X509_R_UNKNOWN_KEY_TYPE 117 +# define X509_R_UNKNOWN_NID 109 +# define X509_R_UNKNOWN_PURPOSE_ID 121 +# define X509_R_UNKNOWN_TRUST_ID 120 +# define X509_R_UNSUPPORTED_ALGORITHM 111 +# define X509_R_WRONG_LOOKUP_TYPE 112 +# define X509_R_WRONG_TYPE 122 + +#endif diff --git a/openSSL/lin64/include/openssl/x509v3.h b/openSSL/lin64/include/openssl/x509v3.h new file mode 100644 index 0000000..90fa359 --- /dev/null +++ b/openSSL/lin64/include/openssl/x509v3.h @@ -0,0 +1,938 @@ +/* + * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509V3_H +# define HEADER_X509V3_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward reference */ +struct v3_ext_method; +struct v3_ext_ctx; + +/* Useful typedefs */ + +typedef void *(*X509V3_EXT_NEW)(void); +typedef void (*X509V3_EXT_FREE) (void *); +typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); +typedef int (*X509V3_EXT_I2D) (void *, unsigned char **); +typedef STACK_OF(CONF_VALUE) * + (*X509V3_EXT_I2V) (const struct v3_ext_method *method, void *ext, + STACK_OF(CONF_VALUE) *extlist); +typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, + STACK_OF(CONF_VALUE) *values); +typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method, + void *ext); +typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); +typedef int (*X509V3_EXT_I2R) (const struct v3_ext_method *method, void *ext, + BIO *out, int indent); +typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); + +/* V3 extension structure */ + +struct v3_ext_method { + int ext_nid; + int ext_flags; +/* If this is set the following four fields are ignored */ + ASN1_ITEM_EXP *it; +/* Old style ASN1 calls */ + X509V3_EXT_NEW ext_new; + X509V3_EXT_FREE ext_free; + X509V3_EXT_D2I d2i; + X509V3_EXT_I2D i2d; +/* The following pair is used for string extensions */ + X509V3_EXT_I2S i2s; + X509V3_EXT_S2I s2i; +/* The following pair is used for multi-valued extensions */ + X509V3_EXT_I2V i2v; + X509V3_EXT_V2I v2i; +/* The following are used for raw extensions */ + X509V3_EXT_I2R i2r; + X509V3_EXT_R2I r2i; + void *usr_data; /* Any extension specific data */ +}; + +typedef struct X509V3_CONF_METHOD_st { + char *(*get_string) (void *db, const char *section, const char *value); + STACK_OF(CONF_VALUE) *(*get_section) (void *db, const char *section); + void (*free_string) (void *db, char *string); + void (*free_section) (void *db, STACK_OF(CONF_VALUE) *section); +} X509V3_CONF_METHOD; + +/* Context specific info */ +struct v3_ext_ctx { +# define CTX_TEST 0x1 +# define X509V3_CTX_REPLACE 0x2 + int flags; + X509 *issuer_cert; + X509 *subject_cert; + X509_REQ *subject_req; + X509_CRL *crl; + X509V3_CONF_METHOD *db_meth; + void *db; +/* Maybe more here */ +}; + +typedef struct v3_ext_method X509V3_EXT_METHOD; + +DEFINE_STACK_OF(X509V3_EXT_METHOD) + +/* ext_flags values */ +# define X509V3_EXT_DYNAMIC 0x1 +# define X509V3_EXT_CTX_DEP 0x2 +# define X509V3_EXT_MULTILINE 0x4 + +typedef BIT_STRING_BITNAME ENUMERATED_NAMES; + +typedef struct BASIC_CONSTRAINTS_st { + int ca; + ASN1_INTEGER *pathlen; +} BASIC_CONSTRAINTS; + +typedef struct PKEY_USAGE_PERIOD_st { + ASN1_GENERALIZEDTIME *notBefore; + ASN1_GENERALIZEDTIME *notAfter; +} PKEY_USAGE_PERIOD; + +typedef struct otherName_st { + ASN1_OBJECT *type_id; + ASN1_TYPE *value; +} OTHERNAME; + +typedef struct EDIPartyName_st { + ASN1_STRING *nameAssigner; + ASN1_STRING *partyName; +} EDIPARTYNAME; + +typedef struct GENERAL_NAME_st { +# define GEN_OTHERNAME 0 +# define GEN_EMAIL 1 +# define GEN_DNS 2 +# define GEN_X400 3 +# define GEN_DIRNAME 4 +# define GEN_EDIPARTY 5 +# define GEN_URI 6 +# define GEN_IPADD 7 +# define GEN_RID 8 + int type; + union { + char *ptr; + OTHERNAME *otherName; /* otherName */ + ASN1_IA5STRING *rfc822Name; + ASN1_IA5STRING *dNSName; + ASN1_TYPE *x400Address; + X509_NAME *directoryName; + EDIPARTYNAME *ediPartyName; + ASN1_IA5STRING *uniformResourceIdentifier; + ASN1_OCTET_STRING *iPAddress; + ASN1_OBJECT *registeredID; + /* Old names */ + ASN1_OCTET_STRING *ip; /* iPAddress */ + X509_NAME *dirn; /* dirn */ + ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, + * uniformResourceIdentifier */ + ASN1_OBJECT *rid; /* registeredID */ + ASN1_TYPE *other; /* x400Address */ + } d; +} GENERAL_NAME; + +typedef struct ACCESS_DESCRIPTION_st { + ASN1_OBJECT *method; + GENERAL_NAME *location; +} ACCESS_DESCRIPTION; + +typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; + +typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; + +typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; + +DEFINE_STACK_OF(GENERAL_NAME) +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; +DEFINE_STACK_OF(GENERAL_NAMES) + +DEFINE_STACK_OF(ACCESS_DESCRIPTION) + +typedef struct DIST_POINT_NAME_st { + int type; + union { + GENERAL_NAMES *fullname; + STACK_OF(X509_NAME_ENTRY) *relativename; + } name; +/* If relativename then this contains the full distribution point name */ + X509_NAME *dpname; +} DIST_POINT_NAME; +/* All existing reasons */ +# define CRLDP_ALL_REASONS 0x807f + +# define CRL_REASON_NONE -1 +# define CRL_REASON_UNSPECIFIED 0 +# define CRL_REASON_KEY_COMPROMISE 1 +# define CRL_REASON_CA_COMPROMISE 2 +# define CRL_REASON_AFFILIATION_CHANGED 3 +# define CRL_REASON_SUPERSEDED 4 +# define CRL_REASON_CESSATION_OF_OPERATION 5 +# define CRL_REASON_CERTIFICATE_HOLD 6 +# define CRL_REASON_REMOVE_FROM_CRL 8 +# define CRL_REASON_PRIVILEGE_WITHDRAWN 9 +# define CRL_REASON_AA_COMPROMISE 10 + +struct DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + GENERAL_NAMES *CRLissuer; + int dp_reasons; +}; + +typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; + +DEFINE_STACK_OF(DIST_POINT) + +struct AUTHORITY_KEYID_st { + ASN1_OCTET_STRING *keyid; + GENERAL_NAMES *issuer; + ASN1_INTEGER *serial; +}; + +/* Strong extranet structures */ + +typedef struct SXNET_ID_st { + ASN1_INTEGER *zone; + ASN1_OCTET_STRING *user; +} SXNETID; + +DEFINE_STACK_OF(SXNETID) + +typedef struct SXNET_st { + ASN1_INTEGER *version; + STACK_OF(SXNETID) *ids; +} SXNET; + +typedef struct NOTICEREF_st { + ASN1_STRING *organization; + STACK_OF(ASN1_INTEGER) *noticenos; +} NOTICEREF; + +typedef struct USERNOTICE_st { + NOTICEREF *noticeref; + ASN1_STRING *exptext; +} USERNOTICE; + +typedef struct POLICYQUALINFO_st { + ASN1_OBJECT *pqualid; + union { + ASN1_IA5STRING *cpsuri; + USERNOTICE *usernotice; + ASN1_TYPE *other; + } d; +} POLICYQUALINFO; + +DEFINE_STACK_OF(POLICYQUALINFO) + +typedef struct POLICYINFO_st { + ASN1_OBJECT *policyid; + STACK_OF(POLICYQUALINFO) *qualifiers; +} POLICYINFO; + +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; + +DEFINE_STACK_OF(POLICYINFO) + +typedef struct POLICY_MAPPING_st { + ASN1_OBJECT *issuerDomainPolicy; + ASN1_OBJECT *subjectDomainPolicy; +} POLICY_MAPPING; + +DEFINE_STACK_OF(POLICY_MAPPING) + +typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; + +typedef struct GENERAL_SUBTREE_st { + GENERAL_NAME *base; + ASN1_INTEGER *minimum; + ASN1_INTEGER *maximum; +} GENERAL_SUBTREE; + +DEFINE_STACK_OF(GENERAL_SUBTREE) + +struct NAME_CONSTRAINTS_st { + STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; + STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; +}; + +typedef struct POLICY_CONSTRAINTS_st { + ASN1_INTEGER *requireExplicitPolicy; + ASN1_INTEGER *inhibitPolicyMapping; +} POLICY_CONSTRAINTS; + +/* Proxy certificate structures, see RFC 3820 */ +typedef struct PROXY_POLICY_st { + ASN1_OBJECT *policyLanguage; + ASN1_OCTET_STRING *policy; +} PROXY_POLICY; + +typedef struct PROXY_CERT_INFO_EXTENSION_st { + ASN1_INTEGER *pcPathLengthConstraint; + PROXY_POLICY *proxyPolicy; +} PROXY_CERT_INFO_EXTENSION; + +DECLARE_ASN1_FUNCTIONS(PROXY_POLICY) +DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) + +struct ISSUING_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + int onlyuser; + int onlyCA; + ASN1_BIT_STRING *onlysomereasons; + int indirectCRL; + int onlyattr; +}; + +/* Values in idp_flags field */ +/* IDP present */ +# define IDP_PRESENT 0x1 +/* IDP values inconsistent */ +# define IDP_INVALID 0x2 +/* onlyuser true */ +# define IDP_ONLYUSER 0x4 +/* onlyCA true */ +# define IDP_ONLYCA 0x8 +/* onlyattr true */ +# define IDP_ONLYATTR 0x10 +/* indirectCRL true */ +# define IDP_INDIRECT 0x20 +/* onlysomereasons present */ +# define IDP_REASONS 0x40 + +# define X509V3_conf_err(val) ERR_add_error_data(6, \ + "section:", (val)->section, \ + ",name:", (val)->name, ",value:", (val)->value) + +# define X509V3_set_ctx_test(ctx) \ + X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST) +# define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL; + +# define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \ + 0,0,0,0, \ + 0,0, \ + (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ + (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ + NULL, NULL, \ + table} + +# define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \ + 0,0,0,0, \ + (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ + 0,0,0,0, \ + NULL} + +# define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + +/* X509_PURPOSE stuff */ + +# define EXFLAG_BCONS 0x1 +# define EXFLAG_KUSAGE 0x2 +# define EXFLAG_XKUSAGE 0x4 +# define EXFLAG_NSCERT 0x8 + +# define EXFLAG_CA 0x10 +/* Really self issued not necessarily self signed */ +# define EXFLAG_SI 0x20 +# define EXFLAG_V1 0x40 +# define EXFLAG_INVALID 0x80 +/* EXFLAG_SET is set to indicate that some values have been precomputed */ +# define EXFLAG_SET 0x100 +# define EXFLAG_CRITICAL 0x200 +# define EXFLAG_PROXY 0x400 + +# define EXFLAG_INVALID_POLICY 0x800 +# define EXFLAG_FRESHEST 0x1000 +# define EXFLAG_SS 0x2000 /* cert is apparently self-signed */ + +# define EXFLAG_NO_FINGERPRINT 0x100000 + +# define KU_DIGITAL_SIGNATURE 0x0080 +# define KU_NON_REPUDIATION 0x0040 +# define KU_KEY_ENCIPHERMENT 0x0020 +# define KU_DATA_ENCIPHERMENT 0x0010 +# define KU_KEY_AGREEMENT 0x0008 +# define KU_KEY_CERT_SIGN 0x0004 +# define KU_CRL_SIGN 0x0002 +# define KU_ENCIPHER_ONLY 0x0001 +# define KU_DECIPHER_ONLY 0x8000 + +# define NS_SSL_CLIENT 0x80 +# define NS_SSL_SERVER 0x40 +# define NS_SMIME 0x20 +# define NS_OBJSIGN 0x10 +# define NS_SSL_CA 0x04 +# define NS_SMIME_CA 0x02 +# define NS_OBJSIGN_CA 0x01 +# define NS_ANY_CA (NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA) + +# define XKU_SSL_SERVER 0x1 +# define XKU_SSL_CLIENT 0x2 +# define XKU_SMIME 0x4 +# define XKU_CODE_SIGN 0x8 +# define XKU_SGC 0x10 +# define XKU_OCSP_SIGN 0x20 +# define XKU_TIMESTAMP 0x40 +# define XKU_DVCS 0x80 +# define XKU_ANYEKU 0x100 + +# define X509_PURPOSE_DYNAMIC 0x1 +# define X509_PURPOSE_DYNAMIC_NAME 0x2 + +typedef struct x509_purpose_st { + int purpose; + int trust; /* Default trust ID */ + int flags; + int (*check_purpose) (const struct x509_purpose_st *, const X509 *, int); + char *name; + char *sname; + void *usr_data; +} X509_PURPOSE; + +# define X509_PURPOSE_SSL_CLIENT 1 +# define X509_PURPOSE_SSL_SERVER 2 +# define X509_PURPOSE_NS_SSL_SERVER 3 +# define X509_PURPOSE_SMIME_SIGN 4 +# define X509_PURPOSE_SMIME_ENCRYPT 5 +# define X509_PURPOSE_CRL_SIGN 6 +# define X509_PURPOSE_ANY 7 +# define X509_PURPOSE_OCSP_HELPER 8 +# define X509_PURPOSE_TIMESTAMP_SIGN 9 + +# define X509_PURPOSE_MIN 1 +# define X509_PURPOSE_MAX 9 + +/* Flags for X509V3_EXT_print() */ + +# define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) +/* Return error for unknown extensions */ +# define X509V3_EXT_DEFAULT 0 +/* Print error for unknown extensions */ +# define X509V3_EXT_ERROR_UNKNOWN (1L << 16) +/* ASN1 parse unknown extensions */ +# define X509V3_EXT_PARSE_UNKNOWN (2L << 16) +/* BIO_dump unknown extensions */ +# define X509V3_EXT_DUMP_UNKNOWN (3L << 16) + +/* Flags for X509V3_add1_i2d */ + +# define X509V3_ADD_OP_MASK 0xfL +# define X509V3_ADD_DEFAULT 0L +# define X509V3_ADD_APPEND 1L +# define X509V3_ADD_REPLACE 2L +# define X509V3_ADD_REPLACE_EXISTING 3L +# define X509V3_ADD_KEEP_EXISTING 4L +# define X509V3_ADD_DELETE 5L +# define X509V3_ADD_SILENT 0x10 + +DEFINE_STACK_OF(X509_PURPOSE) + +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) + +DECLARE_ASN1_FUNCTIONS(SXNET) +DECLARE_ASN1_FUNCTIONS(SXNETID) + +int SXNET_add_id_asc(SXNET **psx, const char *zone, const char *user, int userlen); +int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, const char *user, + int userlen); +int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, const char *user, + int userlen); + +ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, const char *zone); +ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); +ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); + +DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID) + +DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) +GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a); +int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b); + +ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, + STACK_OF(CONF_VALUE) *nval); +STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + ASN1_BIT_STRING *bits, + STACK_OF(CONF_VALUE) *extlist); +char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); +ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, + GENERAL_NAME *gen, + STACK_OF(CONF_VALUE) *ret); +int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, + GENERAL_NAMES *gen, + STACK_OF(CONF_VALUE) *extlist); +GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); + +DECLARE_ASN1_FUNCTIONS(OTHERNAME) +DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) +int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b); +void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value); +void *GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype); +int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, + ASN1_OBJECT *oid, ASN1_TYPE *value); +int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen, + ASN1_OBJECT **poid, ASN1_TYPE **pvalue); + +char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + const ASN1_OCTET_STRING *ia5); +ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) +int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE) + +DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) +DECLARE_ASN1_FUNCTIONS(POLICYINFO) +DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) +DECLARE_ASN1_FUNCTIONS(USERNOTICE) +DECLARE_ASN1_FUNCTIONS(NOTICEREF) + +DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) +DECLARE_ASN1_FUNCTIONS(DIST_POINT) +DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) +DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT) + +int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, X509_NAME *iname); + +int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc); +int NAME_CONSTRAINTS_check_CN(X509 *x, NAME_CONSTRAINTS *nc); + +DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) +DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) + +DECLARE_ASN1_ITEM(POLICY_MAPPING) +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) +DECLARE_ASN1_ITEM(POLICY_MAPPINGS) + +DECLARE_ASN1_ITEM(GENERAL_SUBTREE) +DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE) + +DECLARE_ASN1_ITEM(NAME_CONSTRAINTS) +DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS) + +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS) +DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS) + +GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, int gen_type, + const char *value, int is_nc); + +# ifdef HEADER_CONF_H +GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf); +GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf, + int is_nc); +void X509V3_conf_free(CONF_VALUE *val); + +X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name, + const char *value); +int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section, + STACK_OF(X509_EXTENSION) **sk); +int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509 *cert); +int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_REQ *req); +int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_CRL *crl); + +X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, + X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *name, const char *value); +int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509 *cert); +int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_REQ *req); +int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_CRL *crl); + +int X509V3_add_value_bool_nf(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool); +int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint); +void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); +void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash); +# endif + +char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section); +STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section); +void X509V3_string_free(X509V3_CTX *ctx, char *str); +void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section); +void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, + X509_REQ *req, X509_CRL *crl, int flags); + +int X509V3_add_value(const char *name, const char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_uchar(const char *name, const unsigned char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_bool(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint, + STACK_OF(CONF_VALUE) **extlist); +char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint); +ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value); +char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint); +char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, + const ASN1_ENUMERATED *aint); +int X509V3_EXT_add(X509V3_EXT_METHOD *ext); +int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist); +int X509V3_EXT_add_alias(int nid_to, int nid_from); +void X509V3_EXT_cleanup(void); + +const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); +const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); +int X509V3_add_standard_extensions(void); +STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); +void *X509V3_EXT_d2i(X509_EXTENSION *ext); +void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, + int *idx); + +X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); +int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, + int crit, unsigned long flags); + +#if OPENSSL_API_COMPAT < 0x10100000L +/* The new declarations are in crypto.h, but the old ones were here. */ +# define hex_to_string OPENSSL_buf2hexstr +# define string_to_hex OPENSSL_hexstr2buf +#endif + +void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, + int ml); +int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, + int indent); +#ifndef OPENSSL_NO_STDIO +int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); +#endif +int X509V3_extensions_print(BIO *out, const char *title, + const STACK_OF(X509_EXTENSION) *exts, + unsigned long flag, int indent); + +int X509_check_ca(X509 *x); +int X509_check_purpose(X509 *x, int id, int ca); +int X509_supported_extension(X509_EXTENSION *ex); +int X509_PURPOSE_set(int *p, int purpose); +int X509_check_issued(X509 *issuer, X509 *subject); +int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid); +void X509_set_proxy_flag(X509 *x); +void X509_set_proxy_pathlen(X509 *x, long l); +long X509_get_proxy_pathlen(X509 *x); + +uint32_t X509_get_extension_flags(X509 *x); +uint32_t X509_get_key_usage(X509 *x); +uint32_t X509_get_extended_key_usage(X509 *x); +const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x); +const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x); +const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); +const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); + +int X509_PURPOSE_get_count(void); +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_by_sname(const char *sname); +int X509_PURPOSE_get_by_id(int id); +int X509_PURPOSE_add(int id, int trust, int flags, + int (*ck) (const X509_PURPOSE *, const X509 *, int), + const char *name, const char *sname, void *arg); +char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); +char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); +int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); +void X509_PURPOSE_cleanup(void); +int X509_PURPOSE_get_id(const X509_PURPOSE *); + +STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); +STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); +void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); +STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); +/* Flags for X509_check_* functions */ + +/* + * Always check subject name for host match even if subject alt names present + */ +# define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1 +/* Disable wildcard matching for dnsName fields and common name. */ +# define X509_CHECK_FLAG_NO_WILDCARDS 0x2 +/* Wildcards must not match a partial label. */ +# define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4 +/* Allow (non-partial) wildcards to match multiple labels. */ +# define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8 +/* Constraint verifier subdomain patterns to match a single labels. */ +# define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10 +/* Never check the subject CN */ +# define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20 +/* + * Match reference identifiers starting with "." to any sub-domain. + * This is a non-public flag, turned on implicitly when the subject + * reference identity is a DNS name. + */ +# define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000 + +int X509_check_host(X509 *x, const char *chk, size_t chklen, + unsigned int flags, char **peername); +int X509_check_email(X509 *x, const char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags); + +ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); +ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); +int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk, + unsigned long chtype); + +void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); +DEFINE_STACK_OF(X509_POLICY_NODE) + +#ifndef OPENSSL_NO_RFC3779 +typedef struct ASRange_st { + ASN1_INTEGER *min, *max; +} ASRange; + +# define ASIdOrRange_id 0 +# define ASIdOrRange_range 1 + +typedef struct ASIdOrRange_st { + int type; + union { + ASN1_INTEGER *id; + ASRange *range; + } u; +} ASIdOrRange; + +typedef STACK_OF(ASIdOrRange) ASIdOrRanges; +DEFINE_STACK_OF(ASIdOrRange) + +# define ASIdentifierChoice_inherit 0 +# define ASIdentifierChoice_asIdsOrRanges 1 + +typedef struct ASIdentifierChoice_st { + int type; + union { + ASN1_NULL *inherit; + ASIdOrRanges *asIdsOrRanges; + } u; +} ASIdentifierChoice; + +typedef struct ASIdentifiers_st { + ASIdentifierChoice *asnum, *rdi; +} ASIdentifiers; + +DECLARE_ASN1_FUNCTIONS(ASRange) +DECLARE_ASN1_FUNCTIONS(ASIdOrRange) +DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice) +DECLARE_ASN1_FUNCTIONS(ASIdentifiers) + +typedef struct IPAddressRange_st { + ASN1_BIT_STRING *min, *max; +} IPAddressRange; + +# define IPAddressOrRange_addressPrefix 0 +# define IPAddressOrRange_addressRange 1 + +typedef struct IPAddressOrRange_st { + int type; + union { + ASN1_BIT_STRING *addressPrefix; + IPAddressRange *addressRange; + } u; +} IPAddressOrRange; + +typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; +DEFINE_STACK_OF(IPAddressOrRange) + +# define IPAddressChoice_inherit 0 +# define IPAddressChoice_addressesOrRanges 1 + +typedef struct IPAddressChoice_st { + int type; + union { + ASN1_NULL *inherit; + IPAddressOrRanges *addressesOrRanges; + } u; +} IPAddressChoice; + +typedef struct IPAddressFamily_st { + ASN1_OCTET_STRING *addressFamily; + IPAddressChoice *ipAddressChoice; +} IPAddressFamily; + +typedef STACK_OF(IPAddressFamily) IPAddrBlocks; +DEFINE_STACK_OF(IPAddressFamily) + +DECLARE_ASN1_FUNCTIONS(IPAddressRange) +DECLARE_ASN1_FUNCTIONS(IPAddressOrRange) +DECLARE_ASN1_FUNCTIONS(IPAddressChoice) +DECLARE_ASN1_FUNCTIONS(IPAddressFamily) + +/* + * API tag for elements of the ASIdentifer SEQUENCE. + */ +# define V3_ASID_ASNUM 0 +# define V3_ASID_RDI 1 + +/* + * AFI values, assigned by IANA. It'd be nice to make the AFI + * handling code totally generic, but there are too many little things + * that would need to be defined for other address families for it to + * be worth the trouble. + */ +# define IANA_AFI_IPV4 1 +# define IANA_AFI_IPV6 2 + +/* + * Utilities to construct and extract values from RFC3779 extensions, + * since some of the encodings (particularly for IP address prefixes + * and ranges) are a bit tedious to work with directly. + */ +int X509v3_asid_add_inherit(ASIdentifiers *asid, int which); +int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which, + ASN1_INTEGER *min, ASN1_INTEGER *max); +int X509v3_addr_add_inherit(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi); +int X509v3_addr_add_prefix(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *a, const int prefixlen); +int X509v3_addr_add_range(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *min, unsigned char *max); +unsigned X509v3_addr_get_afi(const IPAddressFamily *f); +int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi, + unsigned char *min, unsigned char *max, + const int length); + +/* + * Canonical forms. + */ +int X509v3_asid_is_canonical(ASIdentifiers *asid); +int X509v3_addr_is_canonical(IPAddrBlocks *addr); +int X509v3_asid_canonize(ASIdentifiers *asid); +int X509v3_addr_canonize(IPAddrBlocks *addr); + +/* + * Tests for inheritance and containment. + */ +int X509v3_asid_inherits(ASIdentifiers *asid); +int X509v3_addr_inherits(IPAddrBlocks *addr); +int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b); +int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b); + +/* + * Check whether RFC 3779 extensions nest properly in chains. + */ +int X509v3_asid_validate_path(X509_STORE_CTX *); +int X509v3_addr_validate_path(X509_STORE_CTX *); +int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain, + ASIdentifiers *ext, + int allow_inheritance); +int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain, + IPAddrBlocks *ext, int allow_inheritance); + +#endif /* OPENSSL_NO_RFC3779 */ + +DEFINE_STACK_OF(ASN1_STRING) + +/* + * Admission Syntax + */ +typedef struct NamingAuthority_st NAMING_AUTHORITY; +typedef struct ProfessionInfo_st PROFESSION_INFO; +typedef struct Admissions_st ADMISSIONS; +typedef struct AdmissionSyntax_st ADMISSION_SYNTAX; +DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY) +DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO) +DECLARE_ASN1_FUNCTIONS(ADMISSIONS) +DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX) +DEFINE_STACK_OF(ADMISSIONS) +DEFINE_STACK_OF(PROFESSION_INFO) +typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS; + +const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId( + const NAMING_AUTHORITY *n); +const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL( + const NAMING_AUTHORITY *n); +const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText( + const NAMING_AUTHORITY *n); +void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n, + ASN1_OBJECT* namingAuthorityId); +void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n, + ASN1_IA5STRING* namingAuthorityUrl); +void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n, + ASN1_STRING* namingAuthorityText); + +const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_admissionAuthority( + ADMISSION_SYNTAX *as, GENERAL_NAME *aa); +const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_contentsOfAdmissions( + ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a); +const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa); +const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na); +const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a); +void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi); +const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_addProfessionInfo( + PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos); +const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_namingAuthority( + PROFESSION_INFO *pi, NAMING_AUTHORITY *na); +const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionItems( + PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as); +const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionOIDs( + PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po); +const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_registrationNumber( + PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/lin64/include/openssl/x509v3err.h b/openSSL/lin64/include/openssl/x509v3err.h new file mode 100644 index 0000000..3b9f713 --- /dev/null +++ b/openSSL/lin64/include/openssl/x509v3err.h @@ -0,0 +1,164 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509V3ERR_H +# define HEADER_X509V3ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_X509V3_strings(void); + +/* + * X509V3 function codes. + */ +# define X509V3_F_A2I_GENERAL_NAME 164 +# define X509V3_F_ADDR_VALIDATE_PATH_INTERNAL 166 +# define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 161 +# define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 162 +# define X509V3_F_BIGNUM_TO_STRING 167 +# define X509V3_F_COPY_EMAIL 122 +# define X509V3_F_COPY_ISSUER 123 +# define X509V3_F_DO_DIRNAME 144 +# define X509V3_F_DO_EXT_I2D 135 +# define X509V3_F_DO_EXT_NCONF 151 +# define X509V3_F_GNAMES_FROM_SECTNAME 156 +# define X509V3_F_I2S_ASN1_ENUMERATED 121 +# define X509V3_F_I2S_ASN1_IA5STRING 149 +# define X509V3_F_I2S_ASN1_INTEGER 120 +# define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 138 +# define X509V3_F_I2V_AUTHORITY_KEYID 173 +# define X509V3_F_LEVEL_ADD_NODE 168 +# define X509V3_F_NOTICE_SECTION 132 +# define X509V3_F_NREF_NOS 133 +# define X509V3_F_POLICY_CACHE_CREATE 169 +# define X509V3_F_POLICY_CACHE_NEW 170 +# define X509V3_F_POLICY_DATA_NEW 171 +# define X509V3_F_POLICY_SECTION 131 +# define X509V3_F_PROCESS_PCI_VALUE 150 +# define X509V3_F_R2I_CERTPOL 130 +# define X509V3_F_R2I_PCI 155 +# define X509V3_F_S2I_ASN1_IA5STRING 100 +# define X509V3_F_S2I_ASN1_INTEGER 108 +# define X509V3_F_S2I_ASN1_OCTET_STRING 112 +# define X509V3_F_S2I_SKEY_ID 115 +# define X509V3_F_SET_DIST_POINT_NAME 158 +# define X509V3_F_SXNET_ADD_ID_ASC 125 +# define X509V3_F_SXNET_ADD_ID_INTEGER 126 +# define X509V3_F_SXNET_ADD_ID_ULONG 127 +# define X509V3_F_SXNET_GET_ID_ASC 128 +# define X509V3_F_SXNET_GET_ID_ULONG 129 +# define X509V3_F_TREE_INIT 172 +# define X509V3_F_V2I_ASIDENTIFIERS 163 +# define X509V3_F_V2I_ASN1_BIT_STRING 101 +# define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 139 +# define X509V3_F_V2I_AUTHORITY_KEYID 119 +# define X509V3_F_V2I_BASIC_CONSTRAINTS 102 +# define X509V3_F_V2I_CRLD 134 +# define X509V3_F_V2I_EXTENDED_KEY_USAGE 103 +# define X509V3_F_V2I_GENERAL_NAMES 118 +# define X509V3_F_V2I_GENERAL_NAME_EX 117 +# define X509V3_F_V2I_IDP 157 +# define X509V3_F_V2I_IPADDRBLOCKS 159 +# define X509V3_F_V2I_ISSUER_ALT 153 +# define X509V3_F_V2I_NAME_CONSTRAINTS 147 +# define X509V3_F_V2I_POLICY_CONSTRAINTS 146 +# define X509V3_F_V2I_POLICY_MAPPINGS 145 +# define X509V3_F_V2I_SUBJECT_ALT 154 +# define X509V3_F_V2I_TLS_FEATURE 165 +# define X509V3_F_V3_GENERIC_EXTENSION 116 +# define X509V3_F_X509V3_ADD1_I2D 140 +# define X509V3_F_X509V3_ADD_LEN_VALUE 174 +# define X509V3_F_X509V3_ADD_VALUE 105 +# define X509V3_F_X509V3_EXT_ADD 104 +# define X509V3_F_X509V3_EXT_ADD_ALIAS 106 +# define X509V3_F_X509V3_EXT_I2D 136 +# define X509V3_F_X509V3_EXT_NCONF 152 +# define X509V3_F_X509V3_GET_SECTION 142 +# define X509V3_F_X509V3_GET_STRING 143 +# define X509V3_F_X509V3_GET_VALUE_BOOL 110 +# define X509V3_F_X509V3_PARSE_LIST 109 +# define X509V3_F_X509_PURPOSE_ADD 137 +# define X509V3_F_X509_PURPOSE_SET 141 + +/* + * X509V3 reason codes. + */ +# define X509V3_R_BAD_IP_ADDRESS 118 +# define X509V3_R_BAD_OBJECT 119 +# define X509V3_R_BN_DEC2BN_ERROR 100 +# define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 +# define X509V3_R_DIRNAME_ERROR 149 +# define X509V3_R_DISTPOINT_ALREADY_SET 160 +# define X509V3_R_DUPLICATE_ZONE_ID 133 +# define X509V3_R_ERROR_CONVERTING_ZONE 131 +# define X509V3_R_ERROR_CREATING_EXTENSION 144 +# define X509V3_R_ERROR_IN_EXTENSION 128 +# define X509V3_R_EXPECTED_A_SECTION_NAME 137 +# define X509V3_R_EXTENSION_EXISTS 145 +# define X509V3_R_EXTENSION_NAME_ERROR 115 +# define X509V3_R_EXTENSION_NOT_FOUND 102 +# define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103 +# define X509V3_R_EXTENSION_VALUE_ERROR 116 +# define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151 +# define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152 +# define X509V3_R_INVALID_ASNUMBER 162 +# define X509V3_R_INVALID_ASRANGE 163 +# define X509V3_R_INVALID_BOOLEAN_STRING 104 +# define X509V3_R_INVALID_EXTENSION_STRING 105 +# define X509V3_R_INVALID_INHERITANCE 165 +# define X509V3_R_INVALID_IPADDRESS 166 +# define X509V3_R_INVALID_MULTIPLE_RDNS 161 +# define X509V3_R_INVALID_NAME 106 +# define X509V3_R_INVALID_NULL_ARGUMENT 107 +# define X509V3_R_INVALID_NULL_NAME 108 +# define X509V3_R_INVALID_NULL_VALUE 109 +# define X509V3_R_INVALID_NUMBER 140 +# define X509V3_R_INVALID_NUMBERS 141 +# define X509V3_R_INVALID_OBJECT_IDENTIFIER 110 +# define X509V3_R_INVALID_OPTION 138 +# define X509V3_R_INVALID_POLICY_IDENTIFIER 134 +# define X509V3_R_INVALID_PROXY_POLICY_SETTING 153 +# define X509V3_R_INVALID_PURPOSE 146 +# define X509V3_R_INVALID_SAFI 164 +# define X509V3_R_INVALID_SECTION 135 +# define X509V3_R_INVALID_SYNTAX 143 +# define X509V3_R_ISSUER_DECODE_ERROR 126 +# define X509V3_R_MISSING_VALUE 124 +# define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142 +# define X509V3_R_NO_CONFIG_DATABASE 136 +# define X509V3_R_NO_ISSUER_CERTIFICATE 121 +# define X509V3_R_NO_ISSUER_DETAILS 127 +# define X509V3_R_NO_POLICY_IDENTIFIER 139 +# define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154 +# define X509V3_R_NO_PUBLIC_KEY 114 +# define X509V3_R_NO_SUBJECT_DETAILS 125 +# define X509V3_R_OPERATION_NOT_DEFINED 148 +# define X509V3_R_OTHERNAME_ERROR 147 +# define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155 +# define X509V3_R_POLICY_PATH_LENGTH 156 +# define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED 157 +# define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159 +# define X509V3_R_SECTION_NOT_FOUND 150 +# define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122 +# define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123 +# define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111 +# define X509V3_R_UNKNOWN_EXTENSION 129 +# define X509V3_R_UNKNOWN_EXTENSION_NAME 130 +# define X509V3_R_UNKNOWN_OPTION 120 +# define X509V3_R_UNSUPPORTED_OPTION 117 +# define X509V3_R_UNSUPPORTED_TYPE 167 +# define X509V3_R_USER_TOO_LONG 132 + +#endif diff --git a/openSSL/lin64/libcrypto.so.1.1 b/openSSL/lin64/libcrypto.so.1.1 new file mode 100755 index 0000000000000000000000000000000000000000..87dd86b5022822b7198dfdb54f225cc79169e5fe GIT binary patch literal 3394496 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

    &^kI<)afgdn1w%+tW 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≪KoFKh>_a^c2@x;r^i&$7#5QL)S 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

    R@5Hwkz{(1Q}E%Bm%)GctTD!ePI zJq}W~!(2pIJ7Jl6D~Vokr%a>qNU(f{c|u>HQ^p>9V_v}F!Vyg0^_IKsOQTgciTCJa z)4S8#Fl-;1HLk~!y@E+`P^l>%( z5K+QhnxrVfYd5dP`p`Fgid-43A2tXsGfU~~ZhPn~m<_kwQB3*U0i0*`bSa?#e?}c+ zdb54VpuV40s^>z}`Y3%`Q$)vokFYV4`J_Bwc;4aDk={3)%Z5xw*OE-y?>rx!_cEE~ z&qTVX_KU*IbLqO+3<|4t#Oe2*h$xMr>KCC*{8k;VPqieHy#Z1MH>2zp*#1*sXmTxP{51nr*8viA%3 zHM<{R{)7KgsBbLWxi|!CO3-Y!M1mffSG2#v_wq&e0|3Wm;4s=}Qqp&hh=2^K^1-4*j|K3?0f9WO}ZLZ8NIGj@9Yd zb~cU9AOFhk7ahmmH9qY8z!1blYSNsIhR^1L5F-klcL6b%&NLfG5!h28Z?V7 z+N4Nw>r5!C*&QbgH}m};h1^p2QXb{921)51)UY(vz9G@afz`H?MZG;DdrcHr9%YF9}^_TOFaxo&$^6 zb;t@kgv7)lG^XM`F6Q(g#w!oz7t?vP&@Z@S-p1a~_oB(;tRU-igsu&W;PE5;DCW^* z#BM&0A+nQMoP0k-RC)+?1<*vOdzBa2)3ki7iJC*UCq9wfeO>xcd5c!m*6_jZ*>pk3#R^I? z94{HO;HGHG`6$jef7nF(M_=QE|E$LEmDfpg!(hTqcNh!3_(emXv-E)X$XgIVuZBCI zcuECQlYY?HPq$d)n>_qVv1bXVe$gDy2)5(*T<9&G#K&hp!l5B=`21aF$Zfw!e^@=ytHi4_?YvQ@?ewx$qhgJ-l%6y|c$!Y3Gc;)MpNa8oX_*xoGew{_*p8Ul> z=kF->(ZQYvn@MATCltKC(-ZA!C=$G;l|mNwnoKL7vG5<{l>d;BXu_51O-#A+E51*& zvs*u$>&P11f0v{mKgRxIDd1m=op#xpR zrwpG-_|J=98NZL>)|BE>)Nn)xu4b>b{z7#}0Cv_F<6p7~*UTOVX+dWqmCdwEFNixl z>!XEz9^|R}lJ?!4$2YF~iim0xroCJZ>q{bGQ+WkTpXJaGYbA`9yMcoT-eGRi4EBjF zq>;se5UHF_LAqr~+PWHZ-mgNQp5W0WdNcnKv811_gojJd;>eu)Z2Iig(D|$(gnAXJ z*H-ATH6MlE>PEumD!P!-f&a!V$IbnZ_^}U8prkg- zBXRX@9hnVg^zPbj-dh;llpFr57n4aEzebLjoiKr^SVW3Dxa5!bh#Eh{-f zX2ZrXhZzH@e3>#^>2d;}bw3FM_jXi1WgnaTNZ`TWlDN&D({Mbij4vZ@k%ntLR`D`Q z7mI`bmvB;Al*ikB>hRqviLX!_ii_ojIP}UJ3h&%mm}`e{S$8I)Hav!9u`BW-VljJj z0)A(Yrh>Pxx#EJ6_=$#qroY{SJi($g}z__rQ`YXmn^Qii-QW-Rc0LSM!}d*c_w$ zz(@4@!ZnO`zs!S$e8&3A0?v3jlfv0nzW2Z?dU<3w+c8QNh2q=U(z$lD>!_e#rnbZS z&{^gbn}dv19jr7YjjjrvqV}5_)csG4;`VY<=sL+YR1)!R+cbXc&PBLXETBWSS7=Ha zhikev6>OPEi%<5$XZ}%k@q9XEjrc`>EiPkiu^3M)H7EHQD$MCc5~S}=$FZ!lcwRFQ zu^+2oJa;GAE9cYd-1l^2az9M3tfvF=Sy*dQ!`51a2s!#{mSOdne%k(GY3_R{G4CFZ z-SUJbx1qr90DVIO<31QVm|}fstqaBqudHzhcw!^+@G(GQKQR;Eufa6MB+IXbZLhy z9EE<~;&;(_lE(PZI4dNu$>bB$LNd|yY)987)U!QQR>ELA;53udnvE|XFVnUDSCnTm z4E8H}@b+p1b<4Wb`+ZjY!DA6P$xG9dSa-7Du!S|w-$C0Rhw}!#E%-cMmuUn|#CDO5 zJo)t(w6q$RnVI49Z36iGD~j%OR_FwX_JK#CX`yTjsMQ0Oxp;j zhnirGXa@WHcooJvuO(krgyBc^nWb1L{cE_#Mj5AL-PQGc{+8LKEM34SJR1e6mMZ>R z$ntCvI{(p+7MsdQm5R~|W%q8|+4X2!FiawU(?b{&kc+6Xq`h9j0tvSc0V7byGaAO5`X zJ|%8C!8H}TP{qo5@^x8+d{<_2>U(HZPZ2f!caUymlyM^+V<^7YMn&9wy6s?tQ7$7O zGjtXCAL%9Ko*h_vYZQrA%0MLB3*Xw_Fz?4!LYK0P75E9h>$VEv|4|vM3ZtoV!@tEc+@Rwc#Y)ujg&Dz^cVwWjso0J^R}^u^dlq%er^dc-P_7 z^kyz4seh(@rn_m1)PB0%y#-B{XUMqjH*HU`W4;j)=nNRan#yHSv3~;FKJ+tOtF7xYUN%+g#%m+wboqmU=MK2n?wGX6;AJOXQSUtsI7gWP>v zD*b&5e&vN0w2k|iwxAb@F51O6ZquL-w|=uze)et^WcL|A38$iG9bumFEjNJ$qg`L+6R$wKKJX_B9&wB!Cbt8Cc4#sK2 zFf@PcBgY2~?D~?oh|86uGuuzlC4q=8^9V3HEKx4_Gc8 z!)%+E(`rKlDr)*9_$iijUDytAJ@A&lRv1pl?gYTLIv-o-Y=p3sLJg9&{Q8pJ)YNQB z3h!!gwJDNMxhIJ$*~6KrwJp`BTjA=<7J7VK1AcbzD7fGgKehKLxute+wffPdJ35t` z_Y`3ChpGIbcsiQ+aTYXVCn8OrQ&s0j%&Ye2T{?$wt;mM@#D9@=)B+NX5{2ohEb{Cr z!-TgrSRnMS&I(#}>ojvRQ+~}F7f9e$osYnGh40~p6F+8ilJ+c+qbx7M8~ba7`rq;> zx7xvu3Y@T`X$W&tDUC+f>>+46jb4bjuFx-LP;JNMDB)_?RY=qD!p9YPk* zCbGZ*u8_Yx6`wYKrTf>)>HLre0q3cqFfokUq;Ap9(;Boxd?Nc-nt+FO14-lVS@Mp# z!Y%!@Xtk$4iD}Qo_?bRrnfw#45{yutGML`JEaJvC@l-r*2Pp|>=&=uJ__1>mmMr-o z^dv`;pN=9wWugs>NKI(jUBcOsncQx_(7hbzPCpXA(eOJ#$Z~p0_Cgm>>7O#<&kw{Y z_bzN^()`PXmy|5*>#29$z`mJnDEy--yo@gV_`#WEzk4xi&ySGV^7IiC5r;)G)$>Uw49>*+Hv_;0(Q zb>G8Vx9c=r-jkOuU4toy-tZL@uh1Q#1G?<-UpSim$0SN;;HCZpHlcGP&ee^8?#3D# zZg!h|TMyE{r=iT_rXd-hyotsLCwQ!Nq>5lAI1J07XWIfva+?C|iWBMSw{R?|2&I7D zeqnD<3?qN#;`9&>xzcfD_3S-1`fAXaJ2E)aT*ZEU{!Oh*r|=thf~fPE20LY{1c@7U zeCqeb=y7SsY}sMdw9kwUTsDFfcHYMjH+3>I701FQ26RcznM}Tk&`0Hdc6$7CczRc| zNxYK=9X(7N8)_+T)P1b)UXGwVGd}y?H~l z_G;q1&I|nyJ3Qp2d~IYLJd{FtdD?19Z2S+7QeWxk;R^bwTLZVcVw^Yriux(zxR~`P zDyUw>^tScVI_dRbnR|rp^HjDn=K(yvH6ripM9ST^mVJ>op?`r=XzM))J*R9u96kbj z48Jg+y}Hm>j7NrJHwMhfC-o5_C^~hEg8n$dep3V0MLZFnr#qQOEylsqZz$qt7f#M9 z5yv@$(^($zsceB&2lxB+e@*`%CYpT=?LHAVNTV8-y@!#jZl*`zTtuxy}6r& zUG2IgJMFu0uDMd|5mQ#4AqvGYC%NN+W<0h#K>_!YDJUlt^H4A0ed*(m$lNPQhd+s-RdWdBAegxXI1utdn7?TW1-m8(lA;@UstON_#sD+!b;+sihOltRK&H@p&d@P2q_vaKSH z$m+4DexXzP(qtCke!H?()kPG) zDUmh4Y9%?(GnhA2N#Kk>nUg~TR_t=(ngg}SIxCWiczV;1K^xe1hi`+5sxOW0sv?sPUve=iCw*gkdR*5}vueu` z5c-64TEp0vttALsF3We9jHVpZDq6eaIC^*Az;p>cl3KA(=-aQROI@QWVrDYtdrg9A zb|8K73ZnE%2l{^S9#RvZq56O-Chs<+xP}}i<}n5}Gx~_XZ>HM`B?!2uibEB9$RlGN z4XgBGs;NR>by*-g{&p_qYz*OQ{~1Hp{U^EJX(HVdQ*dJTRqWfL$A{KLB2IKK6*(HC z{@4M^GTnrye`>f*;a&2h>AboiO4z;{O{2F7@7wc4v~(_~s1+iVY*~w#f&fbNU5;+k z0Lpr4Mo*2e^1|c9$O8PBcG~fNC;BQJ`GR8F-Lj%YSaG!+opGcx1bUoH~bd&BMYz4ckU4;REpG z&>;#L@dhIkg&b19u+H@75ILO-qnwdtn53VCy7NPMy`M6bwi26XU`aOj?fJfbF-+aL ziA{JB0_hhc`51Lox^wOTy;S-D`RQ>yzG@aN8Mm2oUJa$6ZYRj_p*mKMFz0K8eEYBj zIo9mlgl`hoY`jJ_2EQLcr@rf8gy1Lk-o8&Y_m@)ZsMBB%AJNIwIkae@6BAE)MK98| znbqje*SB%3e}=kh}OxmgiAPO>d8ItDPMb=RA(& z5}j#d$2&6od;l&|Ke%Z71Wdg>m=Cz$gEtp7`Aj_{O73uhSKeXjJpF>^9o9g-Zv|gd zE_g@d&hj^kyXi<-Je~?3-hj)1{N@6Bptb^gge!Gil0^B&H$n8&@H#~n3BBfj!sgj_ zFFd>N49%i}FjG|KvfIzlh}|W^CQcjuU3Q1vaNdX0B5rK2$!SPkEM}YL{Do%QSf(ZU z1uC+4siWE#12$Li($2@EEBN+dN}o_vr$Hj`N8qGZ7GL+}1=?Orhnj{uCGOooqROvn z!SzXSN$7?9{*83hLJvu2pTctFcZ`*3W|@1#$oE<+|9iogLO&?M=+huNxbrYy-+PXn z<)e9}$VMy)U4Uls1e*7*k7reFgn8IUzBKF(Y^of&`1tGibVmVq4+c~JNLSkFY=eH| zYj`m3JxPlQd4HQ`TnK;6_gou`-@+M|b!Y@-@$G!xKm+)^x{2GH!=dapj{D#5!u%5}yNBK}q+FI16oQ3$v>6lu%l`JItSg}M0)!k`@ z+LasR;%-l09lyX-cN1UQH=JbCRxl~|C1^O5KsOC#X?=PxlvcRV;j`3a-in`7V7 ztf%i-W=}l*6!eS(kAOio&-l?J+3@+=OA&E(WGO$I2X{WeuwjKlQ|lupD~JNe7gCFH z6;}w{M62IaFh@BH8ZoGldNTCseu@gq4iBfj_fB!2v?&l-`IpzqjY8o>X+}#U$l2E& zPi^{e^28#pU^EyP4m2Qkg*OU?Oo+R#E$NR?Vquw=pb~x`;=U_7~YBb-pM*5IHn3ArCnW-{3uw^Z|7oMX0>m~e+i#GDSU!(7` z1~hKk(34>sNn1IQ`^P+``EAb7c)5Z8A&w2Ryp7P~vzhI|pIBFr%EC952zOLDLdGr~ z?^-q3uU}v2M7k!)jwz>QO|MwnT7jplHVGZ}Tq^1RE8q)3E7^98jFa=>ALK(P9qp+z zH<`XWT2RpIk96wnR}`FxWNWm8X?;o(6|Ejm^%6HpVq~GPby7_sjZskhks&;T43gRs z&B#E=cU8@!o*yFgM=S!Dt?KB~i$LDrHVG;h`zcjBm%8Q(*@%q_Foeg@5}&!fuHu|JTrmhJF5^IfDg%BAZ#*M$v}KwY)_m zg=#v$UTHT|kVh1`J}HFx6-_=k$`F!q0&lh7h+~6Rvs<2;!zPjb%{^8?v)}tM_ zb?n)kC;60=;K7u)9>y4l!8|n5jy$ylPu0N@XIx}>?zujEd98xqW#>r8ZY+8}Tt)k@ zHd>Y{MLT||k;M)hTH^JCt!*5MnWjqA_dJPeHOBA#ooNUt9jT_ARY^-^czPxJ7NXj@0beOL=bVh3(>@=$fq0zFG#5PuK}wp8Q_Woqi&E z=UCKN$I`B)(sbg@E&66rLVgEdQpnH?bnpLJi49pGaaDeB^GiHCNx)Y^Gu_pcf;LCMsc zb%94OS%EhF&3vc7E~c##@~$`hXqe-8zOrOHwKG@j7Wn+WRwD!#3Hz;=<9XQNHI(wm zo~^s>2cydkO!w<&+B|*&wPo1TaIfFoO121ZZ~o;ggni71P0LxXb1bQ~$FrlFbFfy- ziwf_}hibYT`H!0lMbSVucJ6rU9)5$Ib;96wri)$L=1y7`tMDvWlI9FFrq!-9iW^toRRp#qfn1#9aM@guuX^;S0w9BIQNe6#HW^rt4_4on_`Y8eW0H zJ49*4NdvN9vz1<@Pb2lf733V{$6YMaVDWe*|E=pvLtkgHVYltjIdLfeA8~IUO;z~+ zeP7o(dpdicb9Twttb_)MRFq7iS(-}}5=msr5TOYr88bv8m81xzWN0KIk*Qh8kdg*U zs(n5CyPox|bwAHqzvsT!`rT{Y+d6CiV;}phv+TXE&-?v;y{|ld10HsT0sB?`sAJn$ zxbC$YYA=5bUsm~}wS^Sl(OU-!o^9qv{?10bx4OZ9Woan7B@LzXKBalLtf5@h0~D+5 z0UIC!pZ3f|SvtMoY!|P|OjH6RZ^uDnKBv7V;1Mu>)P`2g8VxsoGX>SRek0?iCL~fm z1D7tc1bGh@p-7%r>ySPOy6bhpBBhm_<%0)6Mp(tApYsAoqkh4CHhO4bKLbPGg`oqP zdtt!La-L&Q$5|FFL-jx3!_oR8knv0vM7nMRFW5#DZs7*(Gj}67OMi5&;1&#y!uT2M zI<94u1lfL3hH3HLDEN>8nv0$zgUHX^*#*4MQf(02D;?qUv-5!chPCKg&0;Q2djYEb zbQkDU41z5)8@X|JeL-o@8DO$D16bcrha;VSAYefUxIKCqICh!l31#;j;5KQNp`*7H(6oXC zH23&FP-QU*$UAF;!}mYX-ns#|!A*I$5ZA(+PbQ^#K@g0Ui4YQ1$ok zK>yAV_%`Y>dheaa-95Msz2Ec<_)qIWog&_&mpp*{dtY)Z-PeH~Vm)qdi!+LUV+SAG ztANx7F-JG)fS0`9)^w#8y^!VS;Ui%@2RN96y#M>OiaDJB=n2~F4Y*G^31D1iAE*wy z0qS=EE+Ewg+%i}Rj(;iwwe1MCL_9|VFA7Z%?*lri5d4$-gQi`a#EB0#f;}?xxEVXo z0O`xc+zZAURaLliajK7j%3nXuC3`jhS^^SY8`#a({+adbC2r*qI1xAH#Jj81Q7d7EXhDiZ)jya?jVb zqM_kmC}h|iwEx-+to+PD^N=-=9P0p@H*sj4>5Pbp$GF~t#i;wVB9hTc10Ng~bKXDx zpw%m_;o8@6XjLZ1MK=Egz0;C7yIBt4$uw=)G^hu1b8eyEE8M}Q)QRBTTRZf_W;yp~ zmjin7(gtxSN_g&$4q8-`kE*uo058upbTMf+4BFX&e9jI+m#R_VzEv0SC$@mp$u``< zZ;d>U=`6Zbo**{>=Y6fiW0MgQ^27dnX=u^ZTSgA1u6={!yN1ks(v*(9^yZ~pOUv9xI z85}@E^PM;g)$d4P&FA`ZH=_u{XrQ=v9Gc=N1E0?Hp! z=VXA@u5NT_0$(hr!oc2J3xEQ$MH$oYBg2SyfGzw1kOPa>%?ks^^-jZ`U#}qf?hl;S zjdf`8x|zUj=p}f3a50$uPX|O+yatWu?t=yX&fG28Lm=Dt3aTlHKw;`d=&Ga|85hL! z%%7Ryz`S6%B4ZBdYzg5uF+Y&QCK3*rhN8tYBYGBp8l_(bU|UEIBF2y5n0>#1T1f&r z(R&)~H!wwpFG|s;zRBDKy>z4`{sy!4?}EukB2oXj0JObgJLk;_k#(UR=Wl0?uDDBq z-05L3+$jW>wyt31y%kVw)qyhhn8JF`U|x4c+={U)(67P-&i|x7h%@Is5$YKzqm=h5 z7>A+nUVnjsW;M9Mqdg8U=m!@^-$8Wt1CZ+a3b~&QK)XZQxcpOlk^i*UC}gz^+P7B$ zZo9V<JCQ$8FTVR&%2AWm1 zxN(-vz~`VRFgIU<*i*~Vkpso(hpaYtxL+MSKX(#VBpUO1WfSl)$O?@5@)`P+I3l6q zF;rsK4RkB4VYAtGWObcNd*RSx3b%z%&@NZ&rhU_EMnoeiZcQxuRF) z&4IS5H`; zP84~;Q?{|-SojBECzAjc{4oJ19WhYtln5q{8Afw?jii$=c4g_zrmfXA&&Wibfx1jp0I;^n#Y(E?jub zCUkW6bx>B)iR$G~f|reaj&1E7E@EU7m}pc9!%`eTdYuASa=sCbDm4ULy%yNG;V$@g z?>kBkih+IS&!cX;7tkmy2$aXSK^-s?jaMs!M&VyT-lJk*-_eYM&ke$kJbjS<@f5tl z`_|2pw!%rfzl2b1G)pmrw!8G3aio2*I{)%*q(rj9{MCI>)E`b#9x zFhG0O#By_w??js&diX3L-=lOJqFm8I-jA07RXiin96swf#Pdk-+_#*eX9@~ikPa;; zg@K@vLiqWW29O=k`wHWhgWqLG;pnn^sO?lGS|-b)k$L?b%gBInjUHUHi!REIi$%6U zbAZBqS2*qbcJTP@Z%#3!1U=O%;A}3;Kr?+m!7aD?(W~bWxo|T;H@y>`2OZ#b|2Cc_ zT?6X1cW`y}JJ7GYTRFGBHR$5vA3*kiJNo&vm~+Acz{j24@b$L8=qAnw`u{~&%K61VIQ(zWzAX6?*{mX9&Vmu8}iWg zfwD&-%6a}7=zdE>cf7_Rsw)@FnFXMy=Osie??6wt4ua#IE8*}pU9iIMC+90<&|1Gr z6n?-S#eRDWT_0GWwr}RJr79cQm1`nRr(CqtdKu^Q@dmm-^&>a7YchKGw~}AWEk%#{ zXYNqPad0 zQXg%I)`z2|>&61}P63$w$sgXFeg-TJ?c&`yDqwmN4$c@ZM^lOdf&beCG`6-GPQS`O z6P=Aku7_p8QkN?9!?BE?gT`>Px9kU0T_?Ef_7Ay+$a0|@=c42M_4&mVd30n{J@P+& z1$d58fR`*MA&;*IKyTp)Fm=1ZJ-^}$+V);R&(?fI)bN^)tAT#F#np;ZnZ1>|_d`BU;=~9nEC#^$?yEM?D>UQvcSsa+d zvke~_)p7l=(!d`6_x_cAL{98z^uP{*0*!30vONW;&DoE__ILq1)tewe(-^Hk+{OJ= zJp`-=&T!jy27`=!%IM3>@90SJLw?4bhNdUH0!OotfUO(;!W{DulsR0(LG2qTaMecm zhxd){G#Nl=`is!ppkv&M+MUQa&KK>}%|dHL(dU7Lo0VN5xkhN}VBKV!l1xIS>+KL$m6*P)8uVsxwgBw8-! zP=xGvbj4}_*_o7}p_^gcJ6?ky!sl`|nie2w*9)**;UM5_mEou7%hAk+Es#9q3J&c4 zz+L%X1HRXWq3ZD;kuebr&P6W;4kvd2iv$VyM(?A+meVUy>!$&bbxsj!ChkQp4W-~?&rWVUKj+DvdIGsAnj(SO zP2l3V4mkFcz*?mry* z$&j-hdli*vGO$&K&v0+p%J)u%fbAaqy5vwjvSZhCqVc6*Ky(4Pp1fOQZCVdy+Ji{4EyORKk z9|4iO&!A=@0gik)j|v^e!=8YRs7~4j|Jil})uhwV{y2Z1d&+CtNri|wb{wRcokSkz z&!8JWuA*^eUMOnz8`K=yj)Eqbfzp}B;dgTpu&PC<=Smz<&>h3+9z2WY6uv@hivA(h zrn`LJFA&%!jt61!<>2XWHBQGi95u}fM@t%xpudL|(CZLcRLReu_wHhNA9pM?ARW-n z&)d22V|mY_Jns#4Tm!1_b-}9Ztzf#*Aga4<0kSj|KjtmfAcptoez(Mu8xv0l_1TNwIfO7HQz!kG~$X})hS$hh>ZG&#m{$w++ z*`G%@zrO+3O5VZ_gDXfk=q21Q=|qLI_<2HP3W|Qa9(-!32Qx-rgn!l^1A#+NIJ-tg zw7%sMIHMv$!h(#K@lus*iZete8{*+JAq3r_TVb%p0rWlvqIEoHq#(5(-BHp) z?}X1`S3)`3$Y%+sZ-_+812%9rqZ5GdnDKD3d@CBSP>W7|(?K6}4uT1*o`Ke^5iajS zH(2n@8M>AXp^RB?;PhP~C~MSqVAJA)e3k*ua&aH>&*OO>*?)kYS{yg>NDEyobmQ90 zOOX7jgYXRBv*vSs2BdS7L8`SQxGc#)QKKe!e)I z3>;jH2=)dS@D|wncLl5)I|n_T{}VM1RUq^Z( z(G1O6VBxIz|%+>^-nB$4RLiFjZVr;H~3j6@BQ-e|Y`B(NppDp=pz z&1vpS1RAP3@Tf*DI1%E?ecT_4ew1J1zJ2}*)&+m&)Y~$UTTwd-$Q=M--(%q1hBF{R z=*7Lf@E0veHRI>>2=y-4fU;wnkZr{x&i0QoP<^}{8eRQ`_IvB152Iy(!3ih$v+DvH z^m)Q^DK(T>;?93^x$^p@6%y*9R>ea|W%;Hb9YMmz_n9{yL+7XbJR}cR_WNG3!j1j7g!2b6v;vV2~*Lxi6po2RSP0FByelT z?MLb7k~kB^x2TiWhmm29puQ{t?k}_kN9DtjAJ6BNJG6!?5*dS6nc3iHTqSZ*jfNI^ zPf-g#!f9@qfG%j(qL~W_bR_f{=k3q}Y)`I)d)`EYhm*&{t7~!exKIa8+fW0pxaR@} z+Xl=A$HDzatbuY;9y*!qg8qcfN?6j-2lEEo&Y|!1i{4}jzBLHgO&T{B8@c`(CaykUWt@YT0|vkTvx(b9$OF29_ofa zj)fxi@KIp3%NlfRqczO0tp=G(<4}@WIk-Bv6plQl5x6i7D=XEN8Md>$A zPc{+^#%jVkhq>UOOFTF3;cAfd&kB-J(P-|pNni@EOOh2nAi1;=B+7boL&iGj#y>Zx znco01c8=y5D%Id%;a?aqKM2L>-31Ho_yhXK3GkHn10GEM#>J-=qs}p48#5{fjom@ zEO?q@g@)(6fRWR>Q6TTLOuIZ0wG7Jv_YxAVJT`zxv76(adG8SrX# z1GIBpiw2bok)DnopHqI0elKl6r?S6*w6bKB%QCpgQ6t5MPu z0W^Fx1>h5JgPiMUfd8U8pvwESu3E0b&;YH4do_ zD8NMjxhOed7|?yW$mb`R6zpp&^-)tCOPw+FME;Jj6L8F&w( zIB-E}AFwL5LbX^0P;chvytYTtmJ>I)53zyh_Rn9yc>gB!&+$3O`Ky5AUP7d=_yUB= zOaO~I?7;O?O99!C0m?Sa74uRce(@?SA12EN~2fZ2I3&cGIAj)zZJYus8 zMXL!Q8Yuwy=+9il?`(Zk?mdG`EEt348uW9u zd^gvFUVU(N%2`x4>Ne*j+<_uLs&Lbl7$o=b67U()085%rqjO>zRC1vcrYqqDe89D;+9|OM?JSXk>wj%@W3S) z2J;+~**X>Qd5#L&BD6xfiIISh_M#aURe&=$hl2+%gId!QFtF7eIGR*(qjf%j{cobU zn&AMTE0c@vBwj#sd+TBP2VQ%gpaf0J4Z+rL1svVQ^Jm}A;3mp8fpsB5FsI=M@bx!B z+MTJ0A4)=}anb)}v-tINDcATU6s0Lffneu(z*bxavReP}eSaa`o?Y!|;$IBJigW+V z8Kz5b|FKOH4|)FE)IgS#PF#$OQr?+x<1|MB$-{byqV z_h0P!x}5*l&;Rp2|GW18IhX&=_TN4Jzw@{MbL_M00V|qYysECzSyNkI%>DQ;AysDA zN|}Dm-geHG3Ho7Wd~cpcN<{`?n+m`sRLKtF<^NC3FMR}Q%=7> z3Ou<-)Z~nVux3*WS-Yi~JpMh9@;rP%sHA8r)L3c)8zP?(@{=Bjz85&aydwibiOo7- zbtWFHy;n^rCYiF&Rli9^SAC@)6Jo^$?-!E&ol`_VcixA64vyO|k5u*?4U5GVJ%GGi0i_4WslDF_XLHBr|^72~PWElL2~) zW}bf{^(JmSyi>ditUl_F6*m77J)82Ed7@Z~{m@es zW&8W!vqd*ppKafy#+FlPueB@40N+Q_*55F-tT8RD}dGW5%xMVxCNgQw4g1@nfhogRvB6lfH zk$yUvB7HLRzIdKR47E0U1asAF620KF^AY1msKA|3%xwosq;~Km)tyoa|MvZo_WkiA zH|p9@Lq%fzMst$>OQLNAWU2}+Xf4y6Ja;2we@jf8g9^piKmC@qkE87^?z*XRsce23u z$wR^N(6^FgI+OhrY$YxctYqYtzL17uza%F%DG5uuRueD2v*hV73y4oanYe9xB>up7 zfzUiE3D#WPE44E}FL;?#2aPy@mu(gaD`Y;hGv+^p&m)}J<9>?xrraZuD7xb82x1yCYjCd<{o7O9l&#j%2Hm$UZ)>iW( zvpSjxO~YEuIVDpRwaSP-Pg_&Vjw#b{v?>#zrh+Bpju-EKevqVJIa7T{K2zte-(#|8 z_ENzDJBd@>S<%+23v|2TIYwLSs`UBkO8D%0F)Ptri%<8TgT3FPKqP@Zn4eb&ZKD1~ zIPxJ$(C}oH@JpeV*`Qx%#EpZRqIhYxL`MR zMd=jv@nny%DRe7PceMqYP@OGYE`UM(2VqLyROYA=f9){c1mfuwW-$MYcrX5v-oBqB z=Z!0tq|TFLOfQb5y*Da>v2la+z}R+H#cnqlG*C?HUz;eAJIPWNJM!qy?Lk<3fTuK+ z=NU{KUnzVxS)0oK+bDXp_?Wn6Y=d}0@N(f{t@cm_}k)FUYXKsVj=L7(q#5o zn3YsZLk`!f-Yu=Ve@Ad=%qnKFwv?Hc+f2G_oxr}o5hw~V%atliQrM8IlSSq-M#5je zLfDqgH$_JmxKgwC2f)InnV`gEp-9hMm6@LJMNh#6S_Y7rw;d4+#Zvlj=aNZ{PhH2d_0C#E)q!Ea1z z62zX^%T5Y#5j?Xd;ap5Xs9aLS_`k9jT#Jd9uF}PD!X0@K%)V^@57O+5;Cl{g#@qyvTNIUdJQY~Q{ z4W!Gy8RS)a6QFwCjb45*g%rRI!u@+>giH0DSrs=&(T*l(!RRF(?D%71$^8))ChE*5 zABMOQ*KNhHe#IpA7rT@)3bTe69DT(fo7WQW9AouZ$DA4Jxz!)DLNr zT?U!@af5WHg%3VvvxHJ9H5UauSW8ZC|A^HcZ5fUzIBH?tdT->2DW>`zOQ2r~4Uo)}B* zA3)pcBI-f+F+pDQ2y;0jA0O}WnMw+t3g_(nDOO#(3mSe=5WVOhAm?hzVOMPCh~5MR zg7NNNf;EnpKtAZe{r%ingQd^KY1``Y(9NM@g&k|)>Fj+(!}DPA`;bqR#+f)Q`M!xL zeWi-vnZ1B@>QNS+`dLl*9_$hsmQfD7kIE4?}ZK;F#V-cxu0hZ5(lsydH3dEmvJ7w~mKPMTaj-x4g9$E)RC4_Fs6) zghz)7YTiB-t~?z?!7Nw!^h&JsyxT@m;_xJiOMW$FxW7&8nXJp)`{#;H?7u7>JYIqQ z4&tyMpK&TB_qO1ox4P&BWi42>s)_ojt0zePnIqPT+0QOod5Sc@{D6oGZ4h6H&mirV zny^+=>ZP|G^hMt=9SYAmHGa6ZHPgtnljr7xG&53~+AqLgL@;QJ8e=OX2IS zpP`1Lq4-Gz2|*4D(_S}`P2)%``q|1Fk$Jk?Kl7hYxy%Jb-5HQMm@G=HffnlI*_uNU^e zT0jj3I)ZY$N+~AzDCoakjyo;iBz1o4D_N@$%IvnEjme8GMdtO9;9sV$F!1JD#syhZ z2bVt*U(gA}T^4^6;G^fTee32^m*Z-&>820G?j55j!D^O>So>5sf5UM)pr#a)@o1ny z?koC&`3?efCC~*I^Wib=snnVdL+s)AcKStvGx6Kmn9yd|i#P9iM%Kr&;w3NTsLG9d zgoTTf*>??9RFu{)wzvJgfWEFFTDdS>Lg;nUhkAwtuJ`5%UeCyaS5n=CJzHn9vPweX zshby|DfJ%Dz3U}ex8o1tvvrVpr>})utrL@K%k>@S6Fe|gz%%^(6UFYNUh_GK&f!E^qS6CLc7I-iRjCe zK1lio&$PW~{>+mX_q=e$x|*j+{!Nu*iKeq+!=H1BB`e;8VM7n8a?5v+=q4s&6x%@X z)6H~=C4pZgRM?}H|D@3-1S9X?fXQC(gE?^zgrPec#FAfLf{mY31x7oq$qoyQ?2wxy zI#{w%ow*Ec9wOsdu?QB=g>QF)74-2vnzjueSOVPtGpB6`Edg% z_f(f^8GZo9Npq!7@^MMhze5tHVuTQtg&9jIz2gB>i+~SUhWApwzGL6PB*}Of)%LB09RwSNx%% zLy{|}FV?c1K)N4PV1r`QB>xh01t-76Q`g3RfJTcJN!^V@iSHaH7=Hf_PgPZ-9Q~h2 z$1MHB__gVt|7TvI1N9j|BBh?I}a<>*A{49l#+j(>#-(0gS-;@SkhAU zn)n>wC{{v&Fl<^ZI216zE*okCiANly4kls5wfSw5j#@*(F<(3Bih?-tJ;#Nj(BRkD zXs1T@t!ka*pvEq8iFyXpS{Ezn37ts#ruNYRYvu`^^&I)A?`5JS(w<&FeF15CJzee2xwL;zaL8-*L4?9{A$5#?+qm6WG}vDj?H+eaM?nPuo6Lwdk9l3ZW5kJT16i?XCkfl3!`^i zjS}HA?_ntOEGSy<2-P$)U>Uhqk~7|y{!J}qoDGEn$3;bqoTn6eDb zTP}%+pM&B{^W$;#i~6`idndU%c_pDUMAF61H^fWNrip&+{v+a2s~*`qk~C!V}$W`ubyNx-iE z{(!~1juXBZx=$;5O=fJYgK5c8F^~7wGf{cx}Ta* z9n7w}eoZo8IA44_V+(xQsmoR#<$YqEsl+w63~`Wi1HQQZGoINJ!S?0d6#TUbC-?f= z3UU?Zi(98SiwxdOX7;$73j}^+X;Xm;Ze@8%d^j;iV(+3ND9k<}5yUKkvrM{0W4@h` z;xjezagpKTm&X6tXrChdxBQSqea&>d_^%A+85>4Nj(4S}7bO9!P)ktNn8Q~1>(bY| zTE$a!Sa^8qdT4Tv@29QaEWEYG6f+Bmp~jg8i2_x&vKn%7)Fog~Z+H#~b(1r|yD0wD0mL>*3fv}ML90PX%OScU z+zcE3KnW6~X(p&bg0Hug5lkH&CU~k4Ch&jBXVi{dXWI-3>0aClGv4zSTWM=U&+oXv zP^GWkbP_q~Yf5sw;)GLG zv@pAh=b&?zDX#o|JVpe+qL26XQ}fz8Bry~1V6n#q%IwT*wqeu)V6ki`?mlO`K&fiH z5C_9_Vd5;}Q@=X>Wo{N5Uit|JnH`pH-IpTW(UwlcN-$z@jfA$;{!P5D%fdE4yp10l zo*>y$zmKxL;3eJ4xk|2GkHQvPjAPXozK1@MbA-v`!{{nEAE;3x5pLh83$NV^#RDJ5 zNPp{$mB>c-f@_oxv2EWDFm9@y{8|4PHpt|&ldA4hRc|dw`H(2~?2MC`jccs*3|EPr zb}hq&3p%lt1(jGW9s{gD;gV?9R14fu%L1T!Z_fGG-uFtn(E{a|R!D4!RI zY#UXnUp-FJP4&aV;~)3K>(eZWPrLkJ!!>8&=#d9ftK)g}x=&+-rLn_+!LLc;ALrw; zpH~sfJ`W4Kq8Z7SQNwgeq8`=0q+BZ3{X@jsouwPYXN$kQxJqWq=)xS$6if?i5o^CT zr}jpkBrgUlfVHJfbVvPC5Z={5Wk$#`KRW#-S8Og20pU5~xPW9n!+D-H>02tU&d((W z_RWM@Me%UAnz1M@XDYk4@hdy-R~}rI(My)fQ~-s0_ld588K7^8Jv1?ds%hkRhwS(_qnrhUc(mrZEGydLQ{p8TLJ|= z_ch>!Z+ZgjzuwYCD_yXY7m>P#|kS(hk$QiQ;3Qc z*JvZ(0`TOT6FqkSMbZ4V$FMzfGO;b|WQ2da-N`mN3ku(|k{o|0Kq50LPdH^Dgw|Pj zl&L$GN?}G9v2rsr@!p_$;OFQx(IvUl&^7J{bQ`OK4KMa5M}j?waJy0Xv8V#zNT*08 z?_#NAmn^WC+5g~-gVVs}suhB9*L%qYW2$jx(KEvR;(Tc%DbHraOs8^!Q-l>pTL^bw zEx~W|MoC^*l4wWORjm8rL8fIPq`YgdFn2@tlg4}cC_ka0biL9DF5BWQK4Zk;OW*rq z!P@IEFWWz)rJ@mCb!9xR)Kf&p)Lo)-OlHDcE2fi9)lw?u(jvjV{`GWk$6Lvfkv(FI zd{P*((@<=0WQ<+foQXZr*uuPsUoE|LTAs{H^@8n@9dv<~3Ji=sOeB>S30smUNf%{j zQ&q{8Vzo=>$f~1vurYtc%o*e50>4|2pwXH~qQyCb68*HX;_ieYk-XPbR+7py=~80o z^&cT#JLo91zy46He??Yk(b*zg?W>Gu-CHY($f=Y{2@BC-@B$k*U0E`5U?U^bKfoxO zJ;B?aFBW$<-4=`vprs2vUr@F;)8OmeLUvuwIEnblC#aR>E*KMB4vS?1h1lbp)KmF# zygmG~hVQzh>`;5FOpG{CJ12YRtw2)62jpD6y@EY%a;0QFQKB#pTPw;YJmEsuVmEK6nxH*CNXwo6DJL4q|oFFT7knyBP2Nn@)OvBml>Ys`HTSu|o zsd>b)+xJB+A18@UI}Wl{+9yD{_j0_y?lAGMQvxljk4Q{>?oqWFKAt~m)z*OES+7KOF!??6dITG2vyROBoQg6z(s!!D!)7;jhDa8ELm<%&YvVt|9zk={&F`Kvl04A z?Hu0%r4ze|OQKL=PKs38zhDZeIvp+u8;ZwLr=%0NX(@;_t2;Qf3+K5fUwz4M{%nMPpglTNatU`C;x z_XL)GA#-KI#J~3Kklb(i14iF?MOT$=R{RVBF<;y zKVxoSw>F-Tii8=&K-gLeDmyVzDHjl^&y&EwGG-`)F9H9h7$72 zN3-EJ@2LE&5+br{fpl)uZ5XuqgYceoEqn2l1m8N4E&2XL6Pqk63s;e4LJQyB%&psY zc;=WkS<=p405<^`srRw7uG6oPXc!on(n0{uoXz;f)uH8n&TBEes`Bg}UhTVd%A7m4cqE!f0s zN~G%&9lGz}Xi~mAK=k98Kb5MS3O176!sQMdiF@x(((za0M0v04F{|(~8$Fp~(>w1cWO%>I+B$HyZD-zk8 zDSA>zp4*REnUeRW>$1)dchRcLeqkq6CJ0ZJ4@h)^4-vEPZWm4PUQQ$y$}@Y+%_XuQ z%7yOp-mt^d%!G4qED=HnLs6fLKXhK#E4WY*4f@x~&@+uaiFZA&%+d*yVWLAfTgz*Q zcK0ukFV}2jo;|!HF)`dPqSgF_1_nt|&!nT&w}FRr^ro-uqCP2WWBC?7@N}h}jZFj& z+P7hs(M=ML*-bw^RtQ^HdeZ^)7!h@Fh9FdD4E^LwKbGB_0H-@?FoShkpdjT0VzMm96@{zRK7!wOr?lOrUR_qRQBSF1d zp4ca-n9*|`P2KIkfnBMg$bDO0K+6@U*r+eVU`mS(reyU_68L_z=-&N(()93u%&XM# z*vSpsSZ1XTo?MHQ%)!%w#T%oA?t8Yd5B0aO)3vveAELblhqK1g3cjbwXQI1s-41O` z=k8DOGlOd3gNAK{{(L<_;g7qbd%xU7Ve=KF3nwK4?z%dDI=zYdD;okHOXdsRF$Cl$|mfGUm!XDtS+4%Hi|5BEoSe( z(h()9%EJ)pQfm3NCUJstDgH3bQUW)vmj*9qL0Gsmc`eBkzj+}`;?s6fdVJbh{`(S3 zBRYRb&)CWc+f5VbS6ikrcA8r;^B@TvnlOu+3ao_}Me5jQ-+%PYQaQmGld<&1wqilK z>I&kKVRbW*m}1$c4kH|ED8J6ctx4pSC=pem{z z1z&r87#mkJYG?Z_raF6;@L5g_8!_`79|Y5t;iZSa`4Bj=6C95G>F+N~O-aHdRyUxjz1pYN- zL|rX{&%NfP*`+Y5_nJhq;O%?Kr!Td%%kB+)?z&WT_rW*vH>N9S4Po%vvkfpd$OPlA zEP>mO<%n}vY{g;eXS#Y;KJ{=W1x26U31s)@3d%3kik8+V5N^dLaL+VcoPYi~9dXMP zYOaY9?%wx>d0~@Hc30U+jxGrn7nFSiMH9QQ7s}@JfpQ1-9<3?n0{jWE^|3JLKm%D3 zaaHVPa2#%P+)Xm`jiB#uC((tgyO|GGN<`7|QD9onF*s#(54#|tiLyIi3Ql}%B{zQE zKr0Nkz~9f`h~ru(VGHixrr$5`f-YaCkt4o|1i3!Pu58_1BK!>n=i3~5h77rmhB0#WE5LX65AL$0iMl&rzv6dW@MiS}auGe7;N%;m(FN0(@1GcH&d=-Q<@c{7 z3oRy4wdgT%L~JaSU6Mv!n|?_AR3lb+zPS_p&`K5T`w$~py7i>=srqB$p5run+pbap zrL`V<##alnUpSD4D<|UV*hiu%HW8{FE|rWaT~BFz<8#e|qhMZa7`AlDVWQrC*m$ckhKmI;v**E*pfpel^_kkbsBzPf+IiK4>H%p zQ5`cV6R9eE-ZlZo?#>cvUB@L+DW`}feMexz-#me%9L0nO){)!ym@{9x37lM1EP*ON z1;fX5g-SP`NTZ|oQC3T8*oubJlHZ}0Ov^-9o+;HuGFM_ro7iu-$F2avMWIrZQw6`NQ0R2bFb&de&_AWS*k zBdxAdq7)M?*pH}&mN};*x^%EcP}Gx)hyGoI8~Y?m-k6urE45Yew7acTVe%Kjpqo49 zzqXIm(|4m+UoWR^N2yEhZ@xjqJ$9r&F6m%Dxb0=wcYeaSnuns5N*{!=Q>wuW{eE`L zC4F)swhgLvq_6@1viWSAhIH}!o5Eif(L|GH9-e&V9A-U^6}RJ!%)@i>)BQfr`@R4F@g3hfuD#aUYyI}Q z&S9;!_rCVt>x9x3h=N@**c`10cJI`ObjcT2D&o2)Y9ZAP*H@c@FU>$On7z zOO9n`_bA~W)8z>yk$?}MtYH?tPRF+IcYw!2X0@-Hwf%snK%nq2}0JohJ zrn0NXv+ZN5__h0QLdBm1&y@9MQq5v#u!Q<6z}(nzTvg8^EP7H3mgsU9lk>NSjE2)t z@BAM0Yf?40^`sDC5nRosE|DjlZ+b%;_!rRRZ4>a9p7r3^=PPmkdN}?zLIzAqsG+t$ z*vt5K&LSVD%mF{!Hv%Uod;=7#45&-ZMzC~yJ$P~4ZD^mO8z$yx2!y_lLknZuNK8GP z`oSt8PtwiF0AfA0{A3|vXz4^NKM{QQ;Os_9FDa#?2g)vzibbbc*V=Xili z`QDEuo)rfu-!qWOqEfzqeL>QFfyAZfFBl2Yjr7+_Ga$!ZA8|h2iq=Z%F@xU&ar+p5 z^gXx>O3E6csfHh zS^=Al(*lG-W#B!|e(?F+5^%`Jhuye4p3=V?i=US2fsB{##$GgCgGB0!(Nqm%{LuFK zwCxsSAjUDC54}^v2YzUUmm1AtZnS-&GiDdkrV=8&iQ9hk$?oO&MO9zYdC7b3b%iy0 zDtH2MjEaYLrO;sM2L)=EJixcuyuda-y+(E-;hg^Rg;X@5MKZkhH)2EW4=DPwY z{HQkWt#Sx<0u#`;60?x>os$5Y;dT^OoW@o6L~}u{J*d$6Fs_Te!R|PW(pT*=`S4dq zf#BVNc=qNsgvMki@Z+gKXnX!Ny zRRPp-O>xL)T{F1zUHG8<+l-; z_g)fH)L$@fKfUBrpHAZ9OcTMCkIo@)Kbq0?p6UF6^I0+=x*dA&=n5)6e}lDc@`Ly4 zbd%EKL>XRw8`rPzLEq`jg6{!eX#eoZIAghyXqcUg)CRMRQ>rfS(>E5dTvUX;+dhYE z6Zn9ptCEqqek*|o$+rM+(-fez?E!8az6Z50o&zXPD}bsUHeuk&0)3NCC7yS4w-cS?qiFq!&3h!?Ez}>sA$%fr{i+$GG zi)`FY0+Mf>*t0gJEF+KW>w_YiX&(Nead`ltGzRzepW=q!J;YjVQ4S2Xv1zqWCi}87CyCl;OxkS*+UhEqN2H1aGY^LST9o6>MXH z(pMHPOSB1<*CcZD?CZs(;PF+5Yt@P66>p#mO zV|TiOU);;NmzsfqaKwD>S>i2ViK7bD7v%%`N%Z6C10jsU>LPNSR}eV+Q!1lko=BG9 zFTs~~h2ZK87)(yM$qjil@>bhzv5ym$vm!G;qxQ}XXv(oU=uOAVU}1$ROUo?Bjb0}5 z=ADzl%D45fG<^o`j4)znr8#5Ek7NV7o!_t>dsiYpn@+)#jvPb87T;$j<<0;zCxXb} zymUYqOw-AM8Wt#X20G>$oWw_ zxlMR2{Vu{EU<=oBwdFJLt=*^KZ|gVWuhYt~`yPXo;?^th_i#s|+;9w(-*gAaiG5Bl zUVfhLJNJek80!dX49608X?sLx%>=T}4}~J1niI23%(>SWY*C3Z4Wx3&H28h>dnoG> z2)gIbBNm@GfE2!n5l@6I*euUpG(9vFm2a^JFFrHmCzy|+PlX1up~q}l+wqD-XKfc~ zS71bIJe`XSgiR&-7wO`Y(wo^0M;*{@eu0R)&~svX;yP+vX$O#<=Y&pa(g$-a=dopr z5N0=Qjl7(qg|{p{$JqqW;f=24Knq*ysqg_OX2SW6tl`v^T>gHPj=U|5B;JvwGq#OE z)_=&ttZNq1Cu~EpNNt*tFAhfI4+ev{2}kPJdLg2e6P%*|49ra0K%X6QX9m+fp%maL zQF#fY_P#qrtQ&d8qMU2OCnOaT7Z`sugMH zd+>lwYZ-}y+E89}9FZ*yb>Oqoy3;v+Mz6PGGesgTS&d|`P$Ct~>$J|YrB z4X!#4g=nont+wAlZVZ10(req9MW1J3e&rBbPHW*}z+Plu;#k3Y+vU)eBvBH!-a`iW z9)LH{^-xp=BlsWc8(1flkGvhe2ujZQ23DAKfvZz)kli;Pq3c&+Ts1hKxv^LYF{8V{ z_}kZ+?}G2GYOZbueZ&XZD6tvLxym_|{3ByrZO=O9#o$-O<#+-1BV;uTAuD5Nuv@f=1e4n7&&HbAwSzNg<0n2?wSqR&-%`z5g|!p!BBkl` zswddI%XPrC`t`uu-uXmVf+ug*smFR=fY9>-zq~tD7g1ARb+X!+1MVWe8giN$$GIC{ zL=AiDsYy3m@aD}4jya7EsYM62sSwl~Zl;gVVqT%=~l6ey>4o&)E%3g5Q0hbwQVGZ@u7;C1B zyC@w6M~$@NYxh27ZSD6U&7J{#$bux=V%A)we2pjWT6`ZY7x<_%)NVzE`l0~QT3eEt62Fp}%ZKVkyWBg`XU+_OURwrBtl zwl$BM{P-R`J}8_NE_9({W4y2lvQ5;H$w6qks|UGM*&9`kcO%xVOhZ-fouiE_-(f@k zAIR5`A0!)o6DCSu!Txq)@HsI@vTVfxe!9w1aMI`bkW94)t+z^v@#i|JWN#s;CHoX1 zeYX-t6WD=*pc6x!tzCzANQ?60RVG11z%e!w+JY9}8{xMYeJ94H#sPzGd0<;sf#Cff zb3*5q3A#&oC!JT4%EY?G(3Jx?s@=>negoJpoDHSmX&KhZ0dCKFr72qQoECFr4&=`7y= zhDmv;P46iE0Y8RN;1azEaa1ZqZ5?iMy_^E>5_^JK615FFn-jzNHSU3wHx97nXAo>U z)&h}sW2pI99ADMrMVk2aaRVo>VvFj7V5!!NX!w%l^d#{K^jZ5VFsxFX^6g)RAh&F& z_yt+y;SKs!!I)D>ZkshMa#|9w^_!2+s;D9nww>-RKBfZXY|Y@ z=k*u@bsc9Bg||g)$5IJm5K2Lb^$)?BZ&tH)k5}N!*7k8bDx7d13vn(h;v0HjZ6Q0R0l2=xrS^pzCrFYn-BHs*^s-Ut-u5wf{|RggPBnTLPxay0JpY5G)Bt-88Ioq zCb=Ku0*}XHd&h`y1wq<)ecV=Xm24a?TlpC}d0-WhPHB-lrY`|=#*D=WOL`FG(Fh~I zp^pJ)Er(SOg<-R^F2iG%bnrf_+hv8%;35NP{KG0rb|bNsnl#z z7_nx7$_Y@yReNlzKE&;DPCZn=ybxOXAjfTZ4NjTWkqX^t>7Ln)g} zsToeuP*z<$^m>9Bpjo(-xwCvf{z-K)u+^fBdb05tjQJMu8X?EP?5J~K{JKlH(3wU+ zo~orLb(6rYnJ=*qG4fnr2aL*1k|jdUnB#U*Zuq?2vw*j$H>ga!KJ?1D z4K)>!>la@GtG6xVL{VqBskIdvN^)mqnI%-0h%cq^Z6acxtW5;k_E5D>m+>WgR9QAh z9De{O6TUqI{CKCgOxd~@l)uqzWaBbM^c&7;>h9rA+%BT7h})v!IRVT$&0WM2`+TZwBoDpK6|g}T zp~%KLyC^+A=iQ;sI-+wkRMX3$RcJ2VLSCG*4McR zJP2AK>BXr)YR6RQ(W+hG*M|GN1HFYV=)X>CiKJle(b4cYu|dEyLz*<$rwT7TFpfJ` z{hBbXeu+wk&gBxmEkoW%c95kji^1Kw^T^IdKc3rvfO@_u2E4dK5{xox;^rqlz!pfo zVth>R18zT(__g4L!3?>D9(VH(b~ ze{~q=mbaEGlCOkMl_*i_E%wZfd@+1c%mPgP>p5wL&cA#k2cTi)$ z4a&cQNI6e^psz#(y4RG)J8HY4?>8MmN;*y`t+16!FpRmni$$LaV%nJvhH5?}tMsSPx~u%F#$ zI*BR>PsBd*mHd1!l=s|w0<$^vk`(E2C4rN@%+3Rz6nokjfgAN;?r0Hf?P`Eb)%prN zKAVGvWEik_Dz>nyrvr&LDwI|}*T<<&*n(@hy+fzPPQ@JtN{F$lI+$YF89-cjE%59$ zMm`;yOO+W6!)tq8ISI3Atig?~aG`@aq_+U#RMwqf4j71GiT8HlGsSEKeomvP5pp4P z@Z}iF>QXCYbM6pbqqz*(MJpq>ZifOg5g6CneT_ZSzl>9vEyVB6Nn}50rZehu4nhf+ zH292hEZH@9g@>4Y>fwp&)WMo)&@0xB{LnRqyQ{1XA2vCHVT(LDtqV(`9LG)gbXgy; zSiwi|&6zp~9Esu#Z?yvPl6MhhyQNrsxGLUxehJL|8I;$P$7 z%z+#5^}OxC@Wgto%R-wP%oL6O_L& zjcaA;ryG*k9ezv6V<*}fi3449*R_G2Quh(dZ)u?Z(0+z35f-ecwGN7LAK+WHGe9Y} zg;J3jTCXQLDKZ{HIU_*FKFea7r-jJ(9jTqKWiu;lE5qCAsz(SgMpz85d{_$RW=Iv}D zB5m4IX#3OY;HJIz`Nocoto}e3fH&;G_Uk>v?hT2cp*>~n+)2^!if(N-%T5w-4?Y2U zKkTPPBFD3rZ(W3_b5DTAr37p$&(oRjJdy8LTqvC<7RdA$wcuwnV>WoG8W?WKXRFqo z!tU-UBN}x~uz7bUa+6=3AQuGW;KSwGiW6{f(P8{~WGi#`@_bTr!gRnqwhy-%NCN6|-tf&4 zv1o;L9+nY&lM#9M1PEGN0coxBf~Lu}aL*!h&_xYxtj#M6MrZOl;C=frUeF%}Ug=*) znlB6o7TFX+D`aLsPi+oyTH%Y4wO7T653^PY9O)RLV^4oYG2>#!G+B&E{@~1dFUv>6 zih_u+W-(^!jx@sKfxut+*K9Cs>pe8IHV|=KxCS4qFo7t%^Z{gRec8L+?Yz<<3CcG4 z8(hfDVRx?{=5KmyaypCD*gf+5L2&XB@O5M~@*`_2KmN)cqGwexn7eQWRJq9t?QL$s zlP~ROPsrr5lNU^+@n;l!?3yfJ-@KB@Cq%gi0$)>du>f#W@Xo=(C!uWENfVL^+(Z_- z-RE)^yo2v7Ekhr_8)VBH5}^R!H2yx_4(xw0mTztkAa~!f=X_RtB-6A^L8syiq-&cr z5pBPlZS6ZvT&xvC8qZ48&pvJEC4+{5oBbI;lTig(_|*&%iJuQqGfq&7VJ`6f`E!x{ zMY5!S@-SPvK88;$K+)E;T4qef0pJuGf#t`{#>ERivnBP}@c5)W?njjr{m_)9g4Y)k zz+fY*#~ZV1nlx|F-Az3)_J>0)0+~-OyJ)lX&FB|alAY%9ma$NB`Mw9 z&*b`e4f>w+2*SjMVb@$@nT1P_;;gkKzfN=x@#Wbk>Zq0+AK{hDK6l}WJzr07@f}+T zcv?SGLY$z|iF{tP`vTZtcAoBZkRY~;HzRA-F5qhIeHtbiqxUIm4?X+msV1HRh}X)uci>L z^HA`)p(41J?4zU<@1v`R&LdVgrLn;?HGpEkE5fGh4jB_Ri&5Sl$%%z7W(F62BCk#D zg48ROgKo&GL06sn`HK?eQ1E>RQtx007LvS>Xqesx3~jj2q;45t zmqv8c#;M_u($F_@c~mOxvV{jj+Em$xOWLu5qHdyQmkpR`B7xizZ$pCULR3V%4sEhs zLq{sPq9uhBIN2pBnB*fR!c3(B_+e4VG+EUV2abM&=Z>?YZCf7`cg*gw<#EN7+lNx* zW%nmsQEmvnl+_Q*+6|KvpF+Uyqf?2-R1ai$T`c2!e=WTtqY!poH5W?$TE(O(?&2lf ztHCQ|B^k6W8_Aw?32jjprKFrs5o}2`8G1$)m|L=qG8hS^+Lwc9op(PZ{aK94mN|v_ zoky^9nI34?-EVl+g2nK9m%HHc$@dwp8$x`SU=7d9y~9}h{vBjoQUs+CluG%`IgBi< zILfYi;R3u!nZ?Z(LGjMC?Chq`$QcuFdbsX66(hzI3tDO@|8zCJXMqZmwmh7V zRA0w%eUn+eOWkPo``N@3lZV8ZJXc;^;ROq3t6ZPmKsO#frehD+lTpkhU?czOLooMtct5B3{X8-TY5_C9 zUB`o8$Ad@TE#RW+6q!EpTVU3g5>#=iHb2N7MouP`~-14jJ5i522Zu4GJ zwg#nJ=QU#Y^Gw-?%56-Qy9K{rrje(f+$MI-w}dXAc#G`SRpGnG+{E91+JRnNn-7Xv zPe!)rKBZ%~gt3=&5;J(9Uj!0e% z8c9{7(oX)Mmh=uHWZx!A*5(EtGT#(G(OZV8cZ}eA#t^@FJje%Tx8uj^KO%I&Mfk|G z$&i+nF4sR+9PtSgBcHPxoap3*WQ|`Z_`#K?j_b3Gs!}O*``u#5f1M?okUf!3@S22; zPiw(Mu)~yckPY@x!w#A#@Nu)F`4t{tcnS=^vLDoPzk!48VXO{Qf~@=8is?tHqT+=^ zyto`^RvMsF+U5%;xQ;7|D)h|g+KippJ%zN9umQ9oYMPknd8 zyB8(HU&_KM?~@lGp)02;v1|ftlL}@7TQXTf$d9d7QA2eFzHCRVCD}yr8fcEAE!^uN zgfw4E;WOYhylnRkXz=I>;@hQSP~Bt@4!#q|WS{GVrljrUH%i`Q4R5EQyLUdpra8v3 z;~`lpQx4-Ii^>_p(kI;HJSE15MS;9|wV3U(c(5()2C*{LhfV!hL#xb?dSTHX&MpC_}P zDcjJk3&((4h27bCS9n4(wuY7Q6~-^l{DEBPaYU4t#S^-~0ep_39cGMm^EIE&&^&Y# z@z|CRc)sZ)4P@lN3QZp}UTG@4K|zQs`fMb4r*smgJtmZY@X>`Z=kK9l+(h;~J`QcX z-2jwll=Cn1LA+?ZQ(xHU zZNu!BNp8T9?LxAm+n8N%sY|Y3d<65V%0an|-CVYR2QKNJMo)W#fH7UQSk1D7uzSKG zWT5sQb=ymbQM0@N%sM(5RCac!YENE+<~8UedrzMwSFZ^Lw&ps*0oSbYOS+}-N9(b? zM}8>X^W!6V;L8>qyBmTZS{qCD4Q_<{G%isAQ5V?bpNjx}Gar8aT{BkaZYMjoO^eA~ zT}&<+V@7yG9~cU~jXyrUPw>sN3x6jd9ETcTvkv;n=q81E^p{c%G`o8{r{($_EOin? zjJ+9J&1gE{{GyDF$4yIZEjQp{A0afg~mqb5L2ikYbLbqC9^XaopkRFTG z^s~JI+|8qdaP-S_Tt&VO_|j)LXn0ncDmPfgkeNzcVrwy@rKm%921wzHPVNLOfgE1U zR1O*$ZUnWgBiT011B|BOA%2-hGu1s)haK^9!u{HI8r-hW-w%W z6t-4vJo-INm-bd~=Vp01!&ddH*wmB|re|v&8WPGQg#tfvcTG&O{0-?)mdh@x#{eal zZ!`k6k)3?}j+2na5d=10DF(HM#!zlgEQoUo+vxiC8n!6S9$wmt0Y|{O^b*sLoP!1c z2k7Ntt%CPR$Jc42)&cABk6$CWh*(`l_*x74`BMQdG$;%{R`+2(EGj11u_}nSggsC< z{Sy%*Gf3^7I*FIhID@>vjOmDiSM+PVi=CLP zAS(81LPBeB@Y>$P=%yk^DkW1DmuYKaBe$fneAaFvvOypU*O@$-9ckA`C?Qd7PEQl}T__RM9=riZFi$}t=pkR> zmurHI&I(j*e;r}x5Q*H4-9s%;dIRqk?qiy!y7OngxAT+k>ynh73P03{VY@31!#lS; zLE!*x^7P4IZbNho7P`EZ=ep(C{d!{Ht>H4}ldTwU^?Dl^=OTpOtl!BLTzLx(9Tmfz zm-LeZ%tXMr-3?6YU&^l%2gqK_&3M!I3z+MeUf|x2ZZ-~Af<4sd(c5iTFnTPwP;=ayZNJ@G+zFZ@KcDe1rYJP3tW8MmZt>181j#b`_Y@xU8}Yh0m_4OyG929HD!0X8lO4UMnDTeDWM zZvss4lzzcl5{tj0IeAIY#Fzerkd+g0S!^kjR;K~!)!Eb0OKW&b`yb>PY#5i`cMsN9 z1A*L-Ca5RwHRk*DF|DmblDUHK_GP~{!jdFWzZ-&lxQGAs#2o>)POMPrQQ$8&(b$S(HD z%nE2}%{bJz!H}Qao5~Bn^Tqt1X7aMx+leC{i-@SNAZDFZ!LD-9rF(85jPKTZ>fx>e z_At8>KifA6*uJ}wUl?$U+PL#Bv3T}fWYD*dYrpygOU@{vCOq;WWunL9w;N4}x8IED zh@<(yWQ|th!?|~)?8kgu;^}Voy1hO$KPQvxV~jAz2?XrnaFC7ke}N-;mY{d%b9!+4 zWq5O=5s-1p5m%NHNB63PldGGPsYRy-@vXxEany1JuvA-y`m&Hmo^H1w*=ASPYy1J~ zSoKAO_*#okJ@tuRtFVwOU$7Q$(pRM^wU_iwSw+b7dndPd_zhx{8-S!VUP8Jx72s)| z8!=Av9=z({1~f-R4eXtAfRze~AY!KPBcqGg(I=xtdEuZ{IKR6MY@8(Uvp3@r{{?r0 z(5E7NT}dNyOv;Cd=spkMI{1J?<2=ey9dx%%WJ z!4j)=o2xe09uW#-6Dec+(dZfcinA=h(x59Ih=1ii0|W2G7-k|eYa@RaU{PZgBn zjdtIV5bIXr*uJftXL2J{27vh1DbeT1>q8_0j#Wd4>N zgMkBXz(c&1ig9d)B+{Z#mi~aCu%oHS0=#TS#aVZbMWY8SSE%9FhCIEOcw;wdL8_lZ7s`FcIx89x*Haas#5$nryL zRli~~-zXq0UyObtDh%uNz9T1gt)}l7eIlu}RBYWEYwC*NU4v)cZTPL(>8RW03uL5C z6+IL*4d}|ExRDdp#5$D>=xm7&e{Z-FyXO7|+A=SSxIH`-t%N7h9yZl%ZAA~fzCr;h zeZCbInq1Awlx>He*|Fe=K?-kp*9ehQUXh%oUVjWFPQ z5m?91<_tTZV~=7V0*#%r{LL3b;IU&H>9Lp*CNDjKSnDzouKqH>#nc@lnJObLBqIeY z_ZUW%pB|^iLJ7n)TQyK7tC{kDDo$Ph?#fPXxkt}(EP{`em=fI{DnM9~DDo^|7iR06 zgr%-I2AbzbkYU9OfyMj0p;-q`B7x`UVLB<#sCTtJz_qop#H~ZEz$Ysn7Ii($r#zny zw3@cF-u<2Usg9knRog{m=CTqDiwfXgEjR>Ack3hWYfiD#<~>B($E2gj&g$XHOAhdF zm>zJJR~!ApD}Y-x!GpgvI}TW;mrHJY=E#rPv>vNEJRa!PTXFti`DRJ$*xUR3$~~qZ zPyQ2w^Z)hwsQ=sc*QTT(wg)X+ z8xk*-8O!!=Svl!_wB(Bo?ELySYy2Kg%+d?Fm2O;ibaJ-Oqc;Ub7UHuCBnQ>cK`Ksu z!9D@rbDf<8KP3lmrvP~;;Lm0Lo<1IbDRgl3bPjM86zc2hS!&CfIr{x9aQ5>DX3X~Y z30$W^{g&}_+a$>8>jKMtoV_e9mx=4^iaUC^c>B2pxO)CF+#hL<)rTLS1>4V5-1_&_ z?2oiwkh@JMPh@Sv&VWPJz#~pgPM|quC;}Y{vUY*BmHH1 zf|}nDR>3~bfRDU@70;ikldGejLqL$XAnP6A>g@OH@FfDmx&qdWEUk=m9jt5x&Isha zy>uM?-TVc)0H0qupFeWHw`!(uYNc(u+{8$G8L(0LPyO7%$<^6u<6ryvZ?Xysb>tM) zlm)Sp@^A6{pRtO9x*%4arwADTR%`rQtsoZE8vj;n{9CP=oT9oCU?!)er1CRXRTIR@ z^MB@5l@tL>eO<%3wpPn5#eZu{+k z()>|Kj)GHD_#514e2xkhusRA|_0dH7SDZjkqqJ`-u=L#j6g+DC0?q&DbOi<)1uUTZ zH+%?8`QPAIsLQJ3V0rwXhy2CRqoGH^DJiS}E7iYaVRWsGYClEg-^i|W z^K$eH{?#Xcnq;(oq5Qi({tO<~E{dZ<|Dos6h^vjpiGcX%^hZVigZ^K1JSuo}y6U5G z@ejJA@GY1zTtewp#lD*OliKl3e^bVeurH+aG1^*_Q3rn%Aaqx3()RQa#i z(QxyAACP|%a5S9yC~c2|Q&RYSg8O&$Mpf)+^yd9OI{zI#Wrg48ihqk!9YyD(w5zQ4 zpUI&z+Q1p@R5FS=fYETHO-7^OMxFBi6*u}kPLW1tmV&EIBV+x!%N;j*I0ygHktLP? zaqd%9{g?hDPm!kH0pk9FZUK(#Je4*iCIuItf(r9MXa4{fc@d0G1|yIV=7>>%ZyeSCsU}je)qJ;Ad8F|M$Bq z5<%uy_=)|M7o`7P{jf~Ox71^4Yg9~Dr5ZnUCeQRH@BT93eC)yIqGD~61TJ3bR+g-o zNQ8*PVZ^{){a!+BD}AG91O3`}mHuw!WdRjM^VClE^#>hYSzO(^(QUfrqjS4L?#wpS zf?g`Uov!}*_+Q)igI{i(eg~andA*NRuhW+N$?HFdU-D@Q3V+I%*?jD3Q^&2C#kFl& z%J+ux`wIK=^6u4ePo0id`Y02=+e}h`lsm3ESyd-yx21=-$wd5^D;IeuN+xry%?gbr zz5mPOKZjf|`l>heTY=Z418-b+ylYF5z?5x$V4@C7e zzSb|FVR_kkliKb{+)3L>E;^d)x$4#9Ht(8vt*j8cUw(R|FlvX?irbzqj$I1er(UYK zD6-Jpe|3}Qsl%B;XPzc#tRG14acJ?zu1v|4PWpC0wb9PfxGwQaHh=Q&!Fe7#F1)^O zsvuGztWr8wal+9oxVobue)^7*Pt!L(o7U6#a_8xp3SJMtdR~vY@cK}`C@`3(^l#+% zvDRFzz3iN{i1toLk+2J645wXs5<%EEHecD56nXR<;P%h9`I-MeZJ*5w>54IH7wm3P z^3}f}x$Jhr{pNj(z6y^ytD;@`{*Y6VT$lZ-vokbKQ1adPVvgLs5;k_?nK?Zb*V@Z2 zm;?*X8PubQqTe{`99d{kGO&y@z@ zvdatBee8Qg?*FksY;((_+I?n^UAM+x+vX7BX=bS9zQ#31Re~(KHYl;}#e91kC#4Ui z?{A!YxLM+R4>r4CEh*i{VIezwD6OBxt?*O%_5&vNMKg64bnWtVnQ+#$xy>!!Q!#IAgalAp--l{vM#*>T326|Rc6A#Fg zUJxC=y30p(mGWiZkCR>;%8|R4j`d_$`Kb=fjz|eVKd$qs|7R|5krnZ${o( zw08ot(2t<1(d^^pB`5bU&z-qTD9-s)Vcb`KPe#O2GmY9#*_)-t3!!R_YyP;b|!r@TQ+vu)b*cTAL{=&d0Hc)pltER zXv6gO(C+1}O<|QIO!1g^@1$R;s692v{In~##jrM8bWh2&K=H5Tr&eF;+@JWc&SG5w zJ!|B{iuJFLqRYR=&642^45kOgMU2&ngtes?T2A;sr9T;gQh)ZpCuSP>0bWF5;%9NB+eTSTy zo1^fTksmuQU2chd#mAj1I(Eic+v(koAN#BS{7>cAY^7~t3v&jyKj^IWT)g1w$up`# zUpj*uH;8aKQ9sW09qbJ}w{0hP*@D=faO``L&XbEGJGET*c)wn(t&(VU`N#vs=T*`A z>Ji>+E?&>Kz_IQ7{Ja+QOV&w?%ZLjtnI`6C8T4=J12)Jy-cqPHJvFl7jQ=8fQ^Ae+ z&Rf}Yjb^yNjQ~eF<{;_sIv18bY%lPa5X#kXb~MU9p>u0XcF~;R6LB{3LTI1dVUI`^ z_1m6dTP0o_=xK+#73IHBe>4-AcK%(j-HdxBe`()$ulknsD~_iJ4v2D*$xCd`2*mhP z_+?*lLFv!_{g>naMZRsT$iQJ)1>2APfePANezXsTTbD^cU+vMc)L5@q;Y!0l=dV8t zxskX-c-HEH*VP*zJfHMqFPB ztI$E!n~k@=Cl4A-9`88qUU`tdkX+Y(tJTx2D&`_?$$#PRKbCLmAM!mbQ^}Op-LP}^ zB!wA)kDu+zNyBZE8+U&Ry<7U@zo{EGR^Aq`jZ|&@G;>Nn()fYU0>h5XKnO8 z_e-sM)iZv~Ptq|B8yUYz{=U)R!9ArFYiC`q3x@+bzKqwj*;})Cu}KJPEUJC?0Xx;b z*kQ6k)3QIc_h{(QW8orW&lg4M8E4|t1nmA6e%a?g;omi*P4-;1$JAMe;L~N6w7Kb| z+4VWd?3I-@X}UAQ`xicZqdk8YE_CUfq+6@zbk&*-O?iIvJ+x@{z^se1p{x5;2+7>D z+wSa5UDi5rnW)$IkK;C!5AYRsR$ICkdqa z*}rZ=ebeG+t5uyzH&BRwyssd(+R*d$*>%Z(Q=TAH=l$)&W>-uaVeM3I57K4rQR`MN5R{?7a)`$B(gKllF#;(w%npnetqyHvE}ZxBD587;8?d;{C{ zHAJr|O-j6Q_{^GL{QcA)EZF|pXQbBel>Rf`aAm<)75@^p{!0k}-i0!Mg^J#a=qZnO z#-8=~SKRL!NJ$Z02I|z2<)LoX*48qr@-|@Ap-XR<19{n6xBS#g1vXoZf(JiehIZe-)wgT}-*}LI$-uoO* zmRkqdFVvr+ARBMcQ1B+Iz37eD#+724vF^?HbBdPDP1v&S_1Tnl_UFHdm!2D>{?8yh*TUlUu+{9WX z>VUrNCTc}jmBQU-EM=jJ{``6Argh8}qlvG}$I9(^yuMFwaKLaU;tq_7Y6-NAc>bWZ z%zDeWG3B32%Oh8g6;aFW7QBxOi6wnWc5QTe0I|wOxbDKZO2M=BNICj$JvywoI_iQ8f}Tkb0Wb zwrQ8mgo!KcPAJRW2^WxVSqTiw7=O^*Sd$vBAJ5#K6VcraRH*xPkB$ zmm0~8S2i|7RtJR7ZLrC(mGWzOBobnzwpgtFOMVk>Z;_v{O~`)lDgAJJ^&%A;X(DM? zz#OMp?O3>^Nc6%P`+Jcfm-en#-QP2V8$Zt1R&y7U7uKk*?UDjt9^Lr-#i4iYcA&9d@YGEVepVsG%YdL&7GN$>Kkt$n6vC7qvdb{(;OlO@+OR$-NvFH#I< z%WSNi+_SUj#6M^54aIJZx^1&tR{Tt7((-oS)PTMNf%_KxSrfndpI~SM@+1FQ{{sjd z_|Cd18l9NbZ{GI2EnGZmUZ_K~+!S+KPZ$U&lL_CfwhB(V+ZF*7HzmKd&Y%wL*Ugz4 zyg#Gy^yXO6lfkCLUwk)QEz?q8D{39-uT=twY{hr1Noi?tZ{i&mhROaY-lBOmf8^%s zu%}_t&HXZ~)-MmBq{joV(@F}w*b~0yp%1mDn8~Dk9zRAY+G0zJw)>bh;nK8K+Vd#~ zO9cXgV4aQa?DH4G|0@H@t&VG+xH$HTW25U~VLe@R+V6V!CI8Pq4zd4!{QWUBX&~-+ z+~)-jg-dfE^c^*Amf&+_eC2dX0_VtTktT&zS9T7G1HLYw?#;<+=LEzgLA*)xdsY?#N^in+P zcUM>#{-&R~_3$3yt+Ar(5~u&!-hbWuHGV_|6_j90#l213yj)xZ9nAw@i>5UPeHGUZ z|LZ}&_J0l<5R}{%u)*DBljnv_1Do46<+~l8xM4%vt__~MHr#Pfb59TnDok_NH9ve| z*c=P3+x11{_J=FlSKnxleKAeTr@!NoiOf;c-Ej+BE$QzaaPl^tO9pl7H>SKWJ$g`n z6_@R`MhLwIm{hOko{g+bw;_7x&$}yJPY3roG7tU~E*OogX?S@+^J{d>9&VYylD~(4 zmJbsY%|3l-?#olZ<_CLemzguSh5v#5m*hA3bQHiK+cPfT-bfy@NeOV8QEMrbjc<@% zA6#H#)#hL}@4d5j(!sK zANJlmKB^+>AHJc3N)e@q=%oi_A)N%IB%442X=D?c!m`=jBulojyJ<+ZASenJ6cj}f z1q+CRfS`gMQS1#1U_}I}DxgT-@0q!C%kBn!pXdF&zkhzwVQ0=cbEeOnIdf+2`Rb2f zl(u|vEdCGwO8Mg4RZYj0C+227d+LQphOB$&iz)r5KY35-xLL)P(|>up&)$`Id5Pig zT3_rfy;j8kaBlzQBYPInbjSYm<%6k@^vRe9)b`sw{Y81lu?>^wa?;3uS@{xTT8wW# zvpD|J!6Ub}SW-Uj4|B$_JNn#OReS09+GncknzT51^s7^MZ@|YTHl_`X`#oXi#gCo3 z`t_UM=>F8A4&(3kFZ=7B0W(|O_sKuk`Msxq`s3Ac-&M|@Ilu8OMTffDzC2o3^ZM{3 zf1Y@>viBW7x?X=fl>g+D(;X|{e$r-dDjW0DCNHD@yPSSG_ng@MdD)Mn1X7I8E&yal znV&Ryt+|L2?RS^$;ZG-({@iUqyQxVJU-Q?^nQ4EW>o@!(`{IYCh5!8hYaC6R}SpG{_?r{2&%tP%!szJ zHF-5PZ*M8{v@iSBEKl!Ku&_SnV5eqslRIKxdb#oDo-3Ajx@P90kM5UVFMVTLOlr&L zx4hRS_Pt5B-aT#IP5;E!K0NRHcYfH>wxiiRztnTtsjrWBoVvH$;9*yunsLNDtL!#e zO-qsr3m0u&>5T1ppb`)L>HhTjC;2(Q{qEvEnWFwn2KISi(am#p^qRL(Ol+CuhVt?v z`?QKboWQ zNt3@C)#??;W&7@YHF16Hq3vIsJJRYv{YmML4zJBGU$$8~d;IoIYk!$~s_&u$qsK3k ze5)-hOzXb=eA^2hX4y8Se7E3fL>vHzG?DL1Si+f$u=5It| zFTQ+A$6vD#4?i{i_Ju?Lc%bQrjg=h@&M2=qdRd!xt?KV<-{8)f=OsMS-g&>ZUf86 z{hqMv-sF8n8PYprXEpn*=Ox$Hr@lQ#-n=Kz_t2+%n?LJXwsd6Mp>+u>-y0fQ&?a&F zFOA=gIntwBmx*QTe(gH^*3-XE$Xg-leDv{B>)KY2&vyr_SKN8T)Vc8uCxaPZ z*&p=0SATxXP}diW++cd9R07HrYNZ@Tf&_JP0Tt7|t^DYY;CQTwv>gN6RL|NMW}mjBy~i1;y$yj#{zynFad zH+H%&{!H89KR&Z!)&0_?pM5&D=iKa=o3C7L_AkBpp68qXJnE~syiM2k2yBECu{k=suJ#yv3K;xWm=FTbDF{ohlult7VUK*eG*`gyW<7O1szjf6) z$#Yx(hjQw6K9jkAO~EVMUpyUH|IKE3!xcBIdA3VJlek?IJKy|g%%0rKhMjo(F&az% z_Se2s;ddtZL6uC-s^H77lFbKI9>e)>Eu^{Tt}ZMyz^&0_n^wlQLSCV?689I^a` z)#J~8zOt^{(3ZJl_T*)hcDv}mq{Z?wm;FosD7``r{})e;)a~)tb{$=L`1&yqR1LXd zROOt{GX|VE^=-Ji`Ud8(jref$mWi>)z}v!{Nz;MlI^(< zp051q)HOTS+|={8w$rLpUVL-S%bo9tnebFW@q!N*r;aVSdjFV$5g&Kzk}~gg$F@en zx0^LwpqTHU`uvGYPbD^g#kzXtwGTHPc+)(`oG(P@+s>}aU-{CYd z($wQt=VGX^20yp3&GehQwf?8&tv@v1mD}f;54N8DbLMMrOzrgW3r{^&dbIn1=Qfs% z_~1~ZK_g>+a5cSXW`4#q+qyopqe3ehZm4LrYwJYMQ?>H^lVzMJGOkg^{OR+TG}<)Qce+t>>u)#QSYEfQ{qg-- zugtsj_sF^W*pjsSrk=a!wj~{|YtnD#v2`2ShDh`;D*u0*fB#ciFHj9CDyC`UZo_ML zXD%3i#gKWWCl>r<+0)zFuiUpkFk_T$9Tl>DT2wwiCdPmGD^4u{qc_^_&`_vHFH_hwzy?5Yme+SF9TJfi%h z-=Ol(Rq-QKpXzCN5UV5&dSd!MvU%;TPu_GW*mA)WxAs~4{71dt$bId-8~Qm*I>#k{ zQyt%;$%z5Q4}KkUW!t!g2b0@A^L*90_$k$iWe^U9Ve}_I>d3;V~`q0*oj!7CLull;lgN3h0n^UMR*x!ZA93z!EX76(+ z_Mfw;WsmI>x(!JjA|HA`W8V38)>(^}tdstFXaBp;+|+)1x3m-6tE|VIFQr|5d&-$J zhlA7qDY-pHn$}`<=f=s+YJa*V_LUvCU3BbB`I_A+(|xmJ&a^EGOSt`^(7}PXxw<#* z+Pm=w2fh&53va*wMOg&P=)W;BfrM?h44xgl;zZw*1Ao74seN_l*DC*LmHUwQ*g9M9 zn6E9fj{MSj%jq^Hlgi)dvv$veCvH3Z;J5>?wjKA^&yVT46>)F&&~-0f{?e!3zpwc0 zMDXeT(G%oQF+X)ikjmC}%O)YWj~%q@QQwDOb#E7~%piq!(|&5w*g>zoKkSL$=9hQA z=%P1O7!v`L4#N z9=>Asjk_;%)Vu_-M|CjdGW1r{C|=RG)w8?Ng&`7H1BA@9x&y zanDy%X;q0>o2Yg_B^2uK&jE)=W7mLeCg^QxrxRk zC?xv-1@qT@^Md|Q9a~$lw7CA}*q0Z4Kl0<+e&085Z!_)rW>c%D@2&i*@9w)!4?a8L z*}aWj_uqH_)8>UW3&)i&95<(SMs4*I#gci-*BQs2eSX`8*PRk81wR`5N=3m^iFW)oe`g@Q5(r97xHXA0V z)=x;ddcfSKDW9dj_Z7|sRi=$%TC6(o-X+V=Jbp}tsU9)D+5tlSaM^XAtlRdf7-EyU zZ5n+44`FQ{b4lZ$)-LS)#qM)E(yh&3>*x$V-(+j=X(QhpH~yJm?hlJ&7I(Y5@wjik zJbAV-ex1|QV`-O-Wow&dANS0!8}WFG=i%Oy4;}8=M&vKXRlF*($%9WWR>@U9ccHa)QXFo}o=50HB z_5NjvZ?sv_slC~L)AHtvyt5x$BwZcc)qYHu{IlN`iu^T-@3D07y^a_14B1ixB7bcF zVe?a@eqpjpkIbHQ$>;lbK2`FzwDi!EM;`2Z!>2n^4ovJ+5cBwqX*cxV zJ>`#qd$x8Mb-%Q6-8=aooiERA_Vdzh+qx>FHKs-FgFWwi_8x70Q`0}#PaJ&vyko^L6Xes%z@fK$NDl>VzU1GZzO4Bd z$)&HhksgnY>r*%3=*=I+Px++Nd@)<>eecL^X+QZi`($DN6E2FV6@?xhhSS^0pWoE9 z)h!n{+4%Gy=?UWsGdFDcV#k-;`dpM|?om>|X-n&iU#{G=V@^W*B`=O{{OTv;UTfDq zDPivC?XK_I?d3uC1uvZL@po?b{Xg$9S3NSR`6x%`XY-cdBF#=Rrq^NBfvv}fwg0wn z*7eu-8!GZ8>_ce&V1+YALg?Jw2D+wTq5EyD^Q&G_XDWa^=mz31X3smf9r%9V_|ZF} z%x@xp)V>k<`{$tG5%o7LH(H8}TI3++$gd?=d^xBAixH8&j5x#~qIxs{+Vk8%#`=H$ zPxHE0%4VPaX8SWGkCZNb|JI9|H+t~g*QWPl_f9-H@460WIxfo|{8dfw$KG&GUj6sE z*6muX{ioxm>?dw1?!02uhl~Gi`{`CKJIr@}+xl;Qem47&Av->vvgpH<^z`toiSp5L zXGHz#n4xe#dBP+A=WtW$(X8td^NugyA9pVHQP=A7LqGbfo@_JQ*?RMq)z?e2Tde$T z&bFkC8+ZTx`RN}zpWeCQ<%!?#9`kjH$M(3f)ndN+<>Mo^n|B|7a(ea3=T2+mPuPd) zvMjvF`q4rEIjfwo@z(_>TJIcxXnpSuvl`9a@_SO($3J@R*8}cZ4-OpYSurkl&CTid z4=;aZe$t2=pIWeY%D{(2V)#AZ`{cQfZCoR#h4%e(2h}gh-(q~d_~7yl%QyBo(5K~U zF-wgN?^MX}Gr?#;zqIMQq)+~yc=-0G$M?x;QkFOAkH!nONk!jmNa{Pd-R!FiPIQSo z-T9&T%=bOg`Df3c{2~72eFvuhb;;Rf{m-xYboc;WT_#_3aQ@m(ryhN@^1?L}p8vL% zJwNtWCs@mnQ)d#h!n0aG2el9lcuu;; ze*|MkI$R4YUcddt_V1p%QR?wTY)O2@y|X5M^UkGBdW;=3OTJ8^G_6_{=>7y>-xexG;DKeNN#HXA7(sy_v)C3tK(9B|Kr=d+1sUi7M)FwU;NE) zm9O16-_kMh_2btT9M$D@>t7xAKmEY&4x2Y>oP^c1Eh(4R|nzk@+@X_hb&d;^JJ|=TGIL(23Md}%7*8T;~0miFuP>_$_qq_1s&& zXgTJwRxkW=_onY04}Ey|eDk_JBmY=1V9=<2r@TwO_owV{_3W2hznD1l(Wdf;V?>tp z>9hLz}$uD ztzGfcv$yu#xoTMJHm9p3C0=#x{%4%FH^bAH0ig8XcqpaC{DV#InO0W&UHgZ6Z<)7p z_7c=5**j=G5&?qg|1N+(H|ee9FP|EG&%up{UoNR$Hvc7O*Jc~uvuyZt$otn0>+|u{ zF_j%ZI{97yj8SJ^`uQjO>JcYv8qb<%I-K~(?~kTseYxzl`wD)@`2PGAa~{0&;Nj6T z+dSOin)egOSH@3y|J}_aDhBNs`v>I%>8p8q>F2-Jt?Bsi&8J@6{n|Nuud#${=ugx? z={Kl=vx1=xi_a%b-`wh!>iLh}TlL9~RjjXzvd&?ixr`n6^M4swq10i|^%~#wuYPf5 z#n1izZsX6_6h3xwub4)kF1xkk-ffpZ?HN{HvHs3Z+wcD11L^vEA6WI)-fYWF`0;k{yqlLl+v$hj+^53Qy?^rI^o>t6 zoq4Uf+sGoPTITTb{jw>hLz9-4#=D2iUB2v^11sNs;O7ouoKO^92`*gvbGA88S0s#g zZ$JOpCCiWZTrvFUgcrv=(s2bCkDQCyyJ23!$`?xZd4HeUV^;m`KW@|K3ibT~&vrS+BWWxBN z!~6XG@{ns^eCpX*hkyC;P^-!7y(5ZuTP}KJWbwv|PVaZGOgs1P4UJB$56jiVQyy43 zdCBy@KPu|IV97%lg_lprCvUhaGL!dhtbJqi^-oT`s^55f(+39B8~?B*Mg0@-bKNf; z`dZqgrn}c<3|;@;JENwq`LwiGO#hva; zeX>n=dvH+Vn4E7mPxI_Ld;e{_tFxapZ_uYQqx8f0UBff({d2^T_9E}}E80ioKmN%9 z-#1$M(Irc|v>Ud(dE4V3U-8yvJsupKi~i2^_9JTTycrrvHGWF7pDzg z)uCdq<>;zy2fxdy%{aNQ#`VFWcNXpptaJIY8;^E|KI-b)d}K!XHCy|&7<%&LhMQ*{ z@;|@ta$N%FtQmE*^FJ}_iwlk0D@Zt6d)%id*wWaf;2FteiLvoCk-Gpwxt{YL}Kr~KY~#G8dL z#tdKA+?IT;fBve#YamvCgYzbd?rPD-W)|amJo!g8$M;tUroA@h`N5 z4yQl2F@E5h?}r`yaoL?sD}Oj+>fEX83h()O>6bRXti|HO_P0)YYh2nLw+;B{p?+bHa+}?E1ozJ~})hT&h$lG;D>FsMCTsHA^`hgpZ`=ypNIyreqNniKi z;whQ-A)I_?{NU+@0D$qz5varfQd^gZ)?*Oy}-xNPR3uj1RkaD3~|R#TsQzw7LI z56v)low?-K*4Bo~@U}f~-tU7<`zKs+$@AG8*339^r1P}*-s~F`WsmkN>R0G5UY?#b zYWZhxpZg~3g_V!J`1Imw_ul?yczQZM;SH`I`~Syu8oK;N%wKU?>wUX220DHlzcluf zdGfE{b-VAgu=454phpS#IY+mqoqt*}_h6efhn^1fjLSK{b>ER!N51%6r#sfR-VnFs z&zU>q!{$d9NWa&&`sc>_wwE^Ve9hAOU0>DO+qV0yvge-9f@fcG zt9<9VO&`a`m)ab1&{giWg{lHhsT95{kL;@o$-Xip?Q(g*SLK(z&KkM2PNqlA)EMlcEji@#$!=Q!`719=@aU6tIwTf3A!>TA z1V=+zae3`NkKYz@(c>k)(rHe6C@7)WHn+(s#Lj6v>OIC@O z;RG3;^b6U%K99@hmP^^YYbu66BWIuv1zZMNx6OexQQTlit$YCsXzihZf+440CG)s~ zK@?9ez>{%aC+dtEGUyDUN!c58L5cc^O{SNR`1@&+&+iPN?oo@n?t`}U+gPQ0tK4o` z?LU&fZ4-D6i5|t8N4BvC44omDUCoq&psrlz^14EG5{IDIQIbfRz5gNw-3XN-J*mp; zaDo*1FL!z=d%l1U#+#(dTj}-HAg-^>X6FPPz;Xq09umaLxByGuWM!*qZThH zaWIdRk#7z8tYuEO(?cW4iYNQDC;b$_m`ITJP@uzyI99wKXvI@?=(;o}t#(h)>Tt5B z2Q>hi$Qs0Ret1FiSh7rjF!NvkX5^axIP0?=7!Wp$MhqL&DD04kBsp@L8a zQ6OyasWerkVI%+;C@75tmK^e>RkKo;ksxcCp9pm=qLD@bi5N4Z)$0m|X5g6|YdKoL zRz{u92*<#+dVCHmx`Ywosd9&q0Lsl;$%tefJZJ??7(Bq6kJYvz{Ti3o;j2OW^EkEC z>Q*0RvX+Wbt}`l@0NS6cbZ%g2$^u7|Pi?xM_FM~zJIpewLW#K7om)!_&}typRH zX$XboBa9o~MonO44o5Ix0?<(rqK1$&KWf<z zW6%aN7QK1>qS-GT%VVo_YNLQvjlwUifmME5`(maWRa8(?$R7*ENYn?ddT~RC^Z99p zQYdK%@=A^bAukD@D5R7}BiP|A4>+Ah7)F{la~qf&r6Xf3bzQddHC&Czr%EN)2v|$& zc*d zS<~1gr|)6J9@VEKr@2pX@e`aCiilW41#$_KuLDWTWBO%Bh3b?fp-%*eV6%Ceb!B9ZOh7nW8QgM}zvT$bLiJ`4humPe6u$;5K6&eTSQ*$Fp zTpEtpN>U8kGbv)bekY0s^+KXn_LSJSI(*m@R(VRXe^DkF_S_^0FfE~hmb-Nltt>i~1J2bEuYomizPQw{y`4#*~hNZoGL$ZnxNOY2Jcoy~iXvAHJ zpDM-tJ3poRSzj?EsigOB&CJ`;C~_F*czwSy(p?~TYI_*E#|4@@EFb^c+_Wlik%*d5 zrxQ@*2@S6b3I;(XI$o#D5jrrWLrXSg2wMZpv1|ctpwl9fx+*o$wf+UqWt4yC!(=nc zqk-ROf51m79!!Ax&Y%+O=^JPam0xsxWd0hY^HcV;{1Kg|aMEY*ztX8`|3|*8*oN|4 zsD2C|EWkt`{v>~;^63ffn-bJ9WJQiM#CE$%!(-F>9u9*50uTnOSVt5Y#=y(3BrC{h zuPQlf`PU8*8A~uNR32IZ*mBG@HngvHQa!!5`bhm5xK58BslN+u3*1|9d*M#NHF@Gl z{VTv<3wH_pe#K8=;TOLI)5GT@Y|JdFV#11vOpy!_4uy=+0GO7FW+W%s$Yd3m5v_bzDO@SV|u(%d%8RpMV%F zWw5{~p(B%Hwa(jjuv9>*%fYgw!&fm?E7zxjLWilSD-F0DfSDD28X{V-ml$mL5(M8A zhn119Kv99DS^?r;{tQM7QE25$nzd}&q)DTu&6+lE(wP35Hfhj@qV45^- z(zJ2oMy*;lYSa|}HI|w;Z$=mGmA_R->t0!!+w-O;d@tv$s9QdA;*rX0(w@(XmB;Np zb+75WGJX1beLWop5DPtw{QCankMdm@EJ2aqg{fuRDO3hN19NRo{k{HW2!8tKCb30X_h%P(THJWg)BEXLCr7I_#6NNM8WA~9598dSTcE>Xzpti$!Z^mzSHxb|@8 z+8wX|7H%utvv84lMJ5odTG>eAv3l$#7*i>0T%om)R##dpp$A|^$uF>uGiPU+$4Hqu zMb_Mc^i1YqxxV6f{c^Ysa6iFGU5?}R+2i$#Iv=mk6Kk& zGPX4A&37h1Q+gz>2j$pOpU>^IdHd?qwRuG{IC|lyKX^=D$*45G0tx|0_Q({r&p1XP z1T^YO&Xl}jdUXc8IQeixc_qij4fXo^#}BP@2Ky%r^A4dw4U7lEe`S z)w-xbCp*q$36y>QY4p`RR*=7h-BnMeF!bD^b9&mqP;#l z)(S^4iIiiocMVps93%66T#i06dRHInXMJSl=n7|O`tHLs2Q3Rf45SJs6`KLTwwo%5 z_Q(9NO9f#!jY^fM_IQtlmyMHv&y52oFRLPgVcg>g1s>iBb(ny&%o%`K<0Ndb3LQ$B zAF8~%29fP9KYfVF2vp7>#W>WCJ6&!%4C82Pl^-Jm=d#M&$dnEuKywf25TP8XRVgTs zYJenHm4f$SuHs^o1}P}fmlQag+4&vMSsV0Dl(R{$ML2XNbrVJ|*ap~o{#34Ni9Eus+^l0OZ=fD>v;UUa4};f-ab z{>-XH9}YM@_^^~9r&?tPE~FiSh;4+cyDI~j6is%w3uDr1XWBrXGSjAVuaCZrG>2ueZNWMd6D%TYk|KLuLlb^CB==fDYqzLlUOKzGLIKz3;b zK$yx6RU9;@U1CL1Y$#y zo|`KbrRQf#=A6Q8`jlE`&ZsO)u|;AFuDNJpVQ~TXllUBEwJ)=gB#(+38U;!D0yc87 zH*S42*@1coA{5|DX!szXmG>WuI56VQcdaM5CLa{Ypt12!15+K+Fl6 z;s?MoEw&h?p!in7iwe{?7hQ`ccL?udvSi|a6#61_QePRS9;8Zkg{U9K_QlfW#+=)V zPVBu%U9v!+s==ADG8L(EL}ZDn`=Mk32WjY}9L%t8xhRvWUQA<=aafm%sJ~Dtoh^FU z2M&#KfZ;KFmxqtf`rCYIxg1{ECJ%U#u1qPd#;0!~}d=jDF3Mhxy1 zm+GD{xL1(>F9A5Xm%CQ))cgbj1A#_1f^`@!9+IV`jC}S}WJzbgnc3_I(jUi`jAXwB z8Kc>6VOAddosf)gMNxFNzatMmQY*uFb_a8;11IC5@H<^LYGvAR)G~3FBVJwx|y&<<$77W=!swoHRm5IDstFfSBI|bb*L?>rZ3IuJk z8pw3vOy6nBcDmh=!!$U0BEFX7M)$9Fx-pI`av4t?si)IDfPKny#{M=BX_Ld6z*G6t z7nIZhEbwT;#g0PAh;p5;3L7wA71T8(O%egka}ji*3R_67u?4Xg3DT#xzy#Dd8$gSi zs0t*^XJWE)z|%^doT~i;OIqM>J!p0=RS%Y3^0h-{uS7f1lq7Ut#hwkh zkfKmSUNj9uSGM}f%H(V1Sj+)^gRU7)Us9G9$zf33O@r(TNOQjdc5AnZ-DzAZ}NPpgYy#Df~$Lp`hFZmmCgFrJGt{gOb;3htP zy#Dm+M0T#iOXRMdN68C&;^+=>JyPvO~B@737D8KCo?OZB}^X3Y)%_K8<~~K zK;*&4(UN!|FG&h|lB9q=ft)EmAyq0eCzw(=nm{Q@43ZSbA`m1gPRba`LK!2a(lV*k z?W-xHjgL9qQk={X1S6v?G~{W)SrJ~6zXKt2Idh?VH!r8V9cR3 zFOqgJFMWbFFB6}Po|L6e28LA5ARp7Q-yE+$^L4{+F7R6~Kr`Xn{M-LRVq{E`dMYyfW81@IT*-4O0L<>#6c^&j>>QNI?y$4w{dYX@-uBls0_Bl{JP zbtu0nVSm%Y{+3uy)XyzGQ9l*G8%j>pj~K`O75LT7>*!G!edtoDwiER&F5ngbxAOw{ ziqaGH2jH^pNDof%TH@gTIHv{^xPSYVk>0LKD{T0ndO{pbQrva%iE+t%>{5HmOHR};SlqDl z1OMR#XdXe_!n;n?w}sR5IgU8LU4XBiHry{EuA$HU-vFzDi}A0aT}cKBZ)+^+)Vh)L zyqhL2{_cd@LQQOHnMPxiC=ki-2QN?A5cT7FYjy)n;N^s%Jtj9Vzo2kzk)^m~-1rF-C)rBvI1ntaa80Xpd%QmXbZC&Ps%vWN zW(@e(_gMZXT(vx1Gtkfts{P8zW|_+mDufK&?O8-9wQ?|UFs<$7xL$bM7GI$ZSK zRaAOi{}g+xzR~!G(?J7lbBo>=nGeQ`tM9O1B&{(QafS|+w%`93Z>KJ{Pl@eoBL zcCjQkaiy=-Ts*-FqfI_|Xjj@d>IkCI2!V>JkD>j>X&v7YGjTN%O4sYeEgSNa)>*l= zB^H3lNW6gBZ6`(TraygCuMy!C&tE49=!`D>Y|a7A6CD|aSUPl>C5WRQ0n^!|Gj*Ie zUBvAqe^6$<3I;UPr=T!~;)+!3#E8slG$^UM!ho`)A`%pZ3|IZaV~T|@0ujWimJJ7Y z6akt$+)u0_zi0s$v?S%wrQt#$)>*Ck=n@~@mSZ&oH8yU;L2Pya%1`sOq6&zsS~QY? zKsCpYDJ3Kbi&B;*-CtDHbZ%T>qytwwOjW?zgPVf3a$JXGM^5a3mhO{r11OdetpO=p z6ADJs5u`{>=^=DF$PV(TRV0L{u!>jB5CizUZX6Fo>sSG18f#7jtxb5*mHUG=OoK#w z?lNp7p@4;s2RbCM0?2Li`>EBr1~Mr5OJO{fpma6eK`Zrd%sx>NOe>@!)bm%C8*~{} zp~`DX4f>!%^m)~wAIIdX?FFD}@fv`ll9c+>)3T~Vvl|#F7Q%GZl}@XJ2BbewW(Wsu z?vPC52bc3~el|8(Nl;;QVM@8O$0j(LOoE!%=Iz#jD16gWBIv>V?tC0?)%m^U60V)HffN6@>g$MxeSK(w< z+~m-cvWpTrA__;uWI*aSbQ4>PjXrBkSpkH_7f?gWSm)xbnb{gM4zQ$$L14S9ZvZkA zi?h;d9Y!Y>*Dx?NS78uku{A)gSaFR;38He597pOb69f)}2rH(>h=;=p&y-=t9>PFk ztg|Kz4_M7OY~j`sA~BFOoJ$oMC6{ba8}cb2VL9caKdk#I_U>U&bcOf`13u~>kU(sh z!f7#4`xLtnV+e&Mj5(0qq!vZx;iyC~tgzD>u5nk06}T430t;d`r7+TQED0Va3k!(B zY_|1PvL71N$!tbI8@j5gwm7Idp+P8)xe};}!pQmjp&^)M3RMlO6l{!fd9EC`nV4m% zA3#N(%vX(oH8H^&kN;CxAz14N6Vu{qNzbXRR52{DEg0V4en3H589!o0GFUPcoz@w&K&F89QZFgg={`PN(Z+VI%{| zAzV&jH?5STS7G}_to3wy0ZfyQ*gT_Xn6Q>0U(xjoUSMc@L*0$^#xy_X!W;m0ulS4H zCwU&SD)3F@!}xi&j8zFwbUHw~jrRMd2)>Gz8&-J7RR)Ng|O98UQC@atVzMj$kz zIw&dL964ZeO8h^VCpS+gr^sFn}EuuJh~7@S?a{COC4kHL?F-i* z{>$*&8oyWK_uSJb>yN@6fTPnprV|nAlH{uu8QY1NoA=Vw~8CKQq_ znE(~!=Rz)GFe~#{IBRJuA>o(VqexQi>&O$F^v22hIQ&+?2^$+}Z%c5G2Xl7Jg` zm@1epP9#C;AiBN< z3_z8}qbPH}D!cJHpEVxmRE0GMhn{-4o}Cguf*~y%*oV_yWEK?$L3r9A5S~31tmml$ z8CNxgaU>d@npy4bXf%3|2DVPMND=m|FpiVfzIU>|)1H&{3*ffG`4L_Mhc76w`9K`Q zkPR9CYdeB|m2OK3h=kFXsDJR5VLmhpwyDfAGKecT+TTzawi~S&(u@6f1X97#_7qzt z9R(sPI4TUby&6wh$CM)>NiYsXq(hQ*e*o{@XmO(;wYWMYX>f4(;fCqI@~1GfgmHQ;qf3=mlR<6$fHFACC11A`Ih zki48IPeeIMS<)+|N;VCXdnKYJ(2S5ms0FL&c`4=bEovjekV!1ea_Em)gZFX_=oN=Y ztYp-F72R&2O9Ki}o#Wk<`at$CdX)Mn9;a72VoZ;$@`X?DId=Y=ZOf{Q6WS{MkvcYd zAR*TTMO01WwH zIugX2M6`d6!ZkLQGGroJ7@&G>edXSAY^(@z-SMztjALJr#rN$iLzNt-R7hk2@PL<$ z{8KK-%Q68EH*4mZK-|c9-N@25Bd0i)QTC_EQSF(==M-n>(Kr02VPvIF<)T(0Ew~}JMk3ViQSu)P{Y*ga*RQWeZ5oFAbP8k2 zX4G;=Ep{~iRGYm~|N82WLWik=tc^iUrS8ufu0OS|XoLpjM(PEq07Ne%yLL~VwY19N zsEcL)ayC)hquYfNf> z*V%7)$BsfTh99B`Z+NU|{aQB$)nVTNooJ!|K&KcAi+LnUedybT>K1)~szr1KwPhNr zABsa6(dGX-#$htWh^(JTI%)vo5}lqfrpS4QCBgc5L{HR};sWDP*B$K@csefn2#CzT zVZ^hT>h6NhaDoG&w}nL%rgSmKGbmKb9Lnoa{M%IVJTYR!Pnkc`I1mK1bwC~l zV9At9@^N^J-Lmp{A6a5Mf-Z?{>N9D}Z^5-VY?A8w%Q-N2gv@9UHiVQ(zae=XWTOXL zy`W9exY7XyS$pMWCJ=T!wp<8CAd`VijzmJIN-<3^AH=bWlL!z@_d3XQk!zcuo4-8OHBI#i^cL~IKhM{U3#42x)iS})Zmo|}32i3Cz5T@;V z7$-t`vJ|^_J(3>>891<>r{fBf&I;^!)9HyVx`W7#H-$l`V$5kC$qhX1Wu?r}lT0Bo z7RcaJ{3bFBO=cU(4L1>mc6}y_!ysfO${=JS3bhoYB|A+*P?+Eprqmc7F)3W2gnbCZ zIFR)g*anh6vO_2)tE}ynEV6_YeIguUPtVaEg~+3vIz*4ZSa@k0ba%5^!QbIn3HEg7gq%<5Ii~ ziI)U$C&O-oHdA zd@~4*Qc%R3xZSQ8$^=5!W}SkKWm17MHjG%|rLd1@oOs0;tAnbFSBE!A+r^^~fWeQz62D?7ZBE0Van92^%LAdO71`@F1 zP=&}6bXzbrIRmWgskx^+9~>?-1d5ODLgQE^5ddB@7U%RT9FOQai>@Dnm4ZcIsbxb2 zX2~F?8za?;vZabG6QnMabJTk?bdX;{hxCGs&>W!XRsmq)LMX-Y{9KT;Nq6(<4_m$} zXF!B-55i?Pqo-q63?)WTFhx7zK8zk=54iLBO<^T_=Av9#f!MXd#i|ka%mpKTc~zXP z3fGrtB|}zqB`Ymsl>kd|nxqh-Ig0GYF=_~hk%SP92!v?f@Hk+E&X+SYt!H+zpwX&F zM&~rK!3>>d&~hAn@rA{bk2=8(dv*_+nN?uA!QD^{d$flxKPYl0q&GHMpqm!bb5d-@ zHRTs#9n>$9Qpgp;MFFx{PiDz+!*(hMhfz^Dj7p=>p$HsCW#TY49g3xuR!%dqq_vgC zGYv%D7>}2b3l7A3ZDO|Ey7|F4^c9P4vgW2LE6TyWt4s=UOKBq5-?qQgkVxfXf6vs8>gg3)C%K8N7;8(kna5SkfC4kv^NX~8N&x3JCd z%Ob$mA4nA;#S|^eL<KrT9xnvy4I8D-XyD09jvW@lk01+@>XvPN1kO%kO#yF?>|5-4QDU=;P4Nnx2r zC-O$MgR5i+6|ozif{4%@fNFx654n;HlV=%xgtsg3;x-1NgWoXlq{b7Fo(-wk1z zE63$c^goANC$G}vmMPU@GS^LlQV=4&KFsh~u8>_z0{+DjLcByL0%D=1fiNBSVEjQz zS);~6f5z`nnhWWEHKD6;#0N<_lB5J9NY3X-nhtSKho(bIUQS+?$(#-bmVxA#%{ITS zl%7cVz=eHHKp>jr2pXET^fXL*pyo5S0Esv>uc4#YhKiiib>o3e3GC4o zz^mv1dM77wc-68~xgmw&U)-6si3KGGw`SAr*ii%}8uo0F!8o9Y>G{E=f}|^wm~nI1 zVi?3MEDJAT#Eif$Qi?#1r9g58F)*RAcLq$QK1ZDdn4HJLa)uH%l~@?K#A3iqNHZl5 zk|v}LVE@`Z+$)>& zzsqy9kGm6VPrfA{u)!2vuh6D@r^&GQo;&%n7k{ z2JOXSjW#f)wAiOYB5K)DZ4a98kB%IdB(p4;*)`Zmu|-HLln#R#&KQMA*;PsdImjY` z#N8Mfmog(L?GBUMflHbyKa6HxaWvltbc5M|P!z;ZPk5Xgw7U)0GtxywF*6F~bmAWSdY5uo!|5 z^=@|Ao-z^g*?nv-pe*?8K{Yk%LLvqpzD|gPjth6tarPf@+1YfJAwp~|lBU}sMMASm zvV&x^n`~7MS11dzES@t$Fht*nAO7uw-X$4d z&~hVDG3yhw3Y6XuiM%{{owW#_h!iPd-;3jKdf36|)lKn~H3Nn(4hpMEp5sD#?jDh% zLRq_mO~6@AswaO%07?yoQj7sK8y;!Gn?SsNcxb%M6{6`$fkHSb$4(~?t1fNlK?>U{ zGg<%N!ZT><>OobXo+;DVmsR~idZv}6QxM8*0b!~*+Ht5XxDt+SLR1(F@qTCyxG_c< zfVT7S+jtA%$qGS_ZIB9+4V>sxR%ZH^1m}?NlX=L-=LIts7Q8vaq9{{^tiZ4Y(4kE( zX>XxhU?ilN08AD@tT)uc4qE4`U==TPJe-&Vq2CXNihRD1#8o8Bi=!%Sa)72W4ig5q z3=B#IMWdw50=#UBJyA}2e!7Hr#B5TgI8Bl~<(`m~2Us~jT!HKX6)3H;c;zWeA5b)< z!U~bL^-SECuo!X=9_jK|CrFn3yh8ls(K}Dz;|w5X5Q|xs&hN1EgFeY&FJKy5WDuGo zFBC%P3W%kIk%}9tB`12LDr|(<(r8f-vU)VZ6zF)M74OSol0u*7TFxXWIg>~+U_7+L zqzUPpzL)miXNFjVcTG3WMEWL%D5}VRO48@!u7$5=0T6)Qi_hL&@JH| zp<-2n@%o^nPp_u>!({6+VIQ1=w=wc9IWjiG@S;NTFbQ6S!chf{P|U|@v>=u=Q>ezL zAdpX|ov&xK_^>#500U!E^(veQn#iFEiD`m>yb1w%1wnEO2=JzM&}JfGpKDSv0-17O z)8GNZ_5JC}!y}{&h1E8D7lahM!cU47K|=~r0Vk!XfRo}>z)7Rc;CS0Zhp&3IiCLxZA^f@BRnoGU#Unox{3g&3-PXHL1-7jWi;VOT6> zR$zV{%3#f;nVOl!I(&Ba7On(I1z*WiLYPfS2^Sb?PEAN)XWtM=F^%L~GTF?cOejT8 zH&$DR!d@sK&BPdr3I16IF`?=6P@p?3=jFoLg2c8)p*p5Gz>8aKU4vmCwhc((gC%^ zd`+fz;Z#sDJ5do;f*T&}6hVa3nRZVlX6p`mAo_;KS&Zovsd}AC4lujJ9+F;rW_ksY zWqLF<51+F{stzWW>j4?qi51~83XYYH{e!wp!XU{rLBV>Vdtzk4f^@}a&&TUNiXUCa zXLnIEDNUyV*epZ&Ekupj)RS)^Rq^tBe9*~8l*mt&7hcS;4#3zOZ6K7@cpB;MMJ-^Z za+A)7KhMjz15#;~%S{3!^5gg z;|{_lPCUwK)2atnV{_5~Jd7Sk4J@NL09W$?^BnLs!hF7u`4KP8M zNtUWcB=Vt4Re&_2bo+F(E#RO9FE25ozkGRRQTLA;T83SEM^& z)oG;E!wp%YHpt<5hpA;U8l`5#xy3V z?{>N(>cP6C)DEU2RlAd#Wj+c}C^caQ(ec5)oz$}Ibz7_pTCWO27hP?10NXxz;;yV}gZ|xKvDB4$;sA~`%3n;1M)si|=O~~aC4r^?6a(Ipyu^|}- zK{7}KC(&fa6%mP5Gq%XZ6|mK!Byl?K;G1_f1B|CBD{ovFBqOen_Tnm(r(`mZ%L@k; zv$oe|$AtM$B^ssl!gA=p6%ooA))RTz60oO$Rz=a6%B)w(8tdW&rv3<#I7E67>c5dh zzRDc484`MCXurgG?xxMYW?pXF98SKB42m8#hj-u`*Dam~dsvNiR+}!BLSE zP$u5ShJr)`q@#aA?e2wMDL^`04Ko_r0WCBRFBt2BdDwJdCxpdJ2h8_XLrKOAA~N$v zGDBIr1Lt8-h83h|6{4DG9AkW0vWlhA^o>>%EDuaM#U-XCj}%d zc~FOB3XY#hHKan4n3_Z+_-T+NIUd8j!iJv)N$_!SmQX?zE|dYFUCQAPG^+Y;&NokX zpT`7Uwp4@363$cu*&RiUqGBY)J5;R+es5`fN+L9ZsuwTp3TUF@9YiWadqN1bY4Lh5 z(JD})^>KnE&6^A_l1PY4tx-5|1tp8d6_l!1;XqJ@19=69K?#flm?g#~31*4Or0rx$ zB&MiIBqhcN;xW_M{qgY$Iv>rlfF+~~7<>vWC9YD5krF4c@G01|1OY9)D_0ol`hcR>7E&T)1C{ct%E;o(L}M7#7$n z-Of5_tP}E0i4wClNR;$I40p0zz;M9CMXzJ?B>)6Ai0K`++ED9;bwJ2Cq zxM{X{j~hIU6aW|~h^c{s00s&SE2cg-q(XXmEgxV?3U-ZxvaY8frUnXD7CnWM3dX#l zLTEJ$Pe)I~6VlNrDd}jGq;xb&TH4d(+WH%wmY#;Em8#`ONlQngq@|;wwCGU6P%Ju` zFr;LpKtcuz;%cBE08uEXW9pe938KnfAd;xDi_mYan8m+d7YC6TQny$_4eK?>jLCr} zy^=&e_If_`lb{pp6ZH?~q5jEGlsyKaZ1Jb|1%x^RrW}xFsGG_PU_mc!sY=d&t4)r#~5*IUKWLIg_5SVg{LOSfmAtuSU z%7Fk-0NR3fm#Y}!IIZ5;s*cnjqLJd8F2&%mKo1rlSu_G6P+%c99>Jll!XPA37->j= z5Ju8;6GQk(LIFd45ZrV@Vx)!CS&pX_;IF42sjdH zY8od@NR3Y#WI~7oP59ss^WxHi-AKVY3Z4})5oJK+BrLabVbMs+@hBy?JO?mS)X{O6 z%xxDn!nCAtvb3ZyBB~ElF-+;0VU-2)v67T1MN}l!T3kahRU|V~)aS-z%YZy*C<{_& zL&`u_sv}eLVaH7&R6$x2JZd{pCS;~rfe9cswIHDOF_I8OM`TE!a2U_f!=UUiBEcs! zaiJCabgByNpqWA0Js9jC>2pxfk_4F%kg@`gR6umSgG$JaaB!FgXFPNPj+Vpj`sW&b+`-$GatNZ0qss5 z$FNNvK7?jCX`^tha_UBYY}t#E7kXY&mpy#G8i$inj93jw94GEiY6{ciePbcz0f_RoNx;cZa9r79%NM)oNY^Q8)nwm|5u9*& zhf~l6AC)Hr9Gw{_qea=G&{Bm(&{FD=v;;NMlKm5Il|wm3MRW!WY)*X5sKU=4$n^4i zs?g=(0d1_?g}B>@{hT2jGKAA;Z>+<^bVZi5AsEg(%1|E=-!R!i#AD%T4Tq|Y+H?eu z)_5v?Sn~;b{2Cfi&=XwWgao(a!Px+A4+Zd05}xFe%*9Y5varyCS4Roth}-2D zl%oaMABe$-M@`fkSK+8-0jC-iaPkve+Y%|Wu9#2Q{){F&0|m`@1`3+=j1-u*j1-u= zj1;u(Fp`kOsnHC$gi+{o!YK4PVHAd(FcQiM=6wDDANfM|gcO~ujs{Z2b@D3|w4w@gR{^4)tjL^r zKNj4z0Bv6c8Gn96>_-$zWp{#*o|HJ!jz@_iI8dI$Hz)~s+(t&4^fXv>Bp5TK;DR#% zvf2?roBGy?fWS@$!X~Mr1%&d0sVW@Ivlj)ylZb*K$=t+c`ABv;Bus#89@8W#CqG{* z7*&)HJKvmK*qU%lSqrjLO#40ZK!B1dKyU0SmbA*@TZ3eZmVnYrO=B7<#Y+) zjf#?>D4EZMT+)gfUYiH!(D zDqhI+I8LTpPcY%eWhTW>U^-iYg`Xa)fb>)aOu%PxxmOoehZ8Y52>ll~X>fv$E4*Zy z!gIl?g9q(^DMX!? zU8tsvk)Z&~8Wog%BbS4ihK5lQLqC>#2kJB#+0Ul;U_TV ziNPpW1mN#D!egS3G)oz|>0`1IN@ZtD~=q>yl69>a*J8)nSFRjh^_N9 zBdJ(Q(fH02u+Vh3G6l__hSwIcY zI8GO2r0~@+7||+*w1p~$<^mN%>!gZdI}pYVtD%-C0$QT9PO6C_pe0Hel{Erdq6lb- zQXDl=ii4?&Wrr3%HBkzviBdpKlmcp^3?mYyfSM=;)I?bvktmBJ5>-^w=u4u0Q3muT zQ42^(;3%&uj&W3RjHQZGc;eJp$5a2gPj(8;aGa-tQ+O)z6rQPuhsbpMZRKVYoeC$~ zB`?nWxP-_6UdiDNGFcJkuW8unk*OSiNF~S)PEDle6kf;#mTZgxWSn4?PVz7aGQlC_ zLI2h1J`))Wwyi@P9*UqqEFDD@9zvl?*Y*-k6bk1-!&2j+$RX;T3yOwFdZnwvL{CDo z^d!-^u;L(beLR$k=h+C1l0u?M;i*$JtJT6_s*+f(st8h~6+z0=4=1G@gp(?{3MZv} zg_9Btb1|LB^W10wq^AamqZ*(%+O$E67}kTab0Cpd8!#${`nJGOXJ+aWibDYvLxY8> zSOhl`u~lvw2HaE(F;FoSAWT^q)~STJq*U%pj2o1|eK?{`;l7mkq$KW3g@Q=J6-aZs zWX>}iOebi8AQ`%j@I@RCgFPt2xG}e^5m@k1V|GU4Nn(=~K5We9DT1>D8iZ*MqA;6C z7y-=_3WPp|%qC4GjN!)t7=9E7Qx*eYwjzrib3S_;#GEhdUk&jE?YL?m^kBD8ftzda zCGu9wOC*1TCK71Sf%;h>nyG}+`ivAk13emEYQRXYl);j8sS092r3<4iRK+A|DHGoi zlt*EambqjNWpfmO;-2gWe z?mXz0z@?*%8E|H}Ot=`}iV)udR}5DIHx6z*+yuBg;MODFo%me@*9i2D;T}La%MqRk zcNqRj_`M5svk3kiigt|weCxZZGm;9}wW!u5l@2ChGx32p$~K)5)# zc(??(M7SilWVjT#L2#*XX>fz#hQM75HxzCd+;F%NaOrRvaAvqnxGcDlaHHU|;d0hbw?9gc}Q21ZROOhAV*^2R9yW0^CHnNpRP}T@N=IZVH?m&I9L#^TAo+ zro!3aO5yBq4mc-V8C*GB1)K|R8eApZOt`sl^WbK|&4!x;SA~Ap3vJjN?tQr5;Euu_ zgF6nl745tf?S2c~8Mq3ByTV-!XM(#5t`2ZBely_u!O3v+Nc9M~k#Iq{D!449wHUwm z;P)e>{W0ACL*9GGM^&s3+`HLLB|zvku=EZ|XaPY;gM<=7l0{H-N!f%*%928{(u;IN zMMb5l*b%W^8&yycP*Jg6LF}TU;uV!E@AsKA=jN2YX;Iyb1^4AiM^L;4pj$AHm1)Z}7o% zD2EEDgesT;^WYOW38&ywI1Qh{=kNu5317k2(2+WtL3x5PyFgdy2Hl|t^n_l}2Vx)= z;^0mA6sS7e^AJiJH)H;W!|yN?`$PCY43EI0@HjjH+u=!=$@6EyY`6}thn>XjhhJY9 z3+XTpGN3;UfPoMXgJ3XR218&dTn@uvI3z$KBtbHyzz7%#sgMSvU^I+@x8NN(0UyG@ z;S;!%g3Y z>BJ0%5D0}Z2!{x$1Cek$58O`JKd@hbLD+x7?N9gxc9Z@d*bDpMXWTBre_%iNufhR1 z20CkOR4p z2l?QI0$2rwFcpg6T39db4R^y1s^=+~hI=tIAniz~3u|C4495R5cn1Gx;W>C7x=Fo3 z59kTKpf~h^7>I>9=nMUzKMa6@kO%qTg(;8&xo|t&0e8Y(a1Y!EH^4^N1e@V=^7RFL z2{&^8EoL!!l*1qDVXqG%*h67Cd6n~=5?}#kz5~Bi@F1*)4Y=I{_riTJoAj=O)`SlS zImu@mJOmFzGNiyJ*bGgeDKvxT&;nXQ48%el^o4%V9|pich=)hvL3j~1z&-E~d3YEe zflcInB6(bdc@=(dV80Ce5Eu%V!!Q^Q36KaSPzq(>gXvHX6;KIPFau`7ouqdc+zlJx z9=I3ogN?8WHp3R!3irbUuniuA&7`pfw!;0;7`K~Y4$OrIaC;E8!9&mlw|Ouh7Qn-} zJpzxyW6%`0g|G+~!$zqC*bG}>1nn{sQXvgS!Dtu*V<8>JK?aP6_N37PGO=etHn?E| zTmchd5?l#a!DP4^t^p5>q|Q?z4MxFe7z1M=9mc^jc%8f-g2V6z9D$>74Bmvd;B7b# z@4&n89-M&p;RE;(K7x;7G5i}ofs=3wK84fp8GH_3z?bk9d=1|~0eSfr^9+0k-@^}Z z7Jh`E;Ac1ozrcUsU+@CF2rt3Q@CxjL-LM4qz+Tt~`{7kM00-eUm_uDHfQ9f9d3YIK zfnBg0_P}1a7w&_Nuo~9DTDTR~!ENveEP}?4i+@G2aDgYX)>4u{|{ya7kxC>(<~;VpO@8j@yv(&+$=uy@2f zj{7_CF1!aP;C=W2K7^0pWB50G0w>`Vd`_SPHkmGFT2PU?r@A)vyNSpXim_K;+O$(h=SBB<>=kqTwm*qH|0=EbS?6 zD{U<8J6{qZEz#rhY-va7YtpXLzS6eR=l*G)L@(ULbEQu&AZc^oVTHn=!A%eJkeuFqg0?xXT<6t6IO*l+U6!AB69TH=jUu!Uur_ zp2z(y5X^lDIKctoaF*~tz$${SB#g{4=V6}<3qf>a1mWsHB=>8%|AsWL#C`=7!bDgB z4&qM2Tn;zEB<{};b^`Vw>{*z1aepgmtbuQ_XXEAuJN}uN>oK3hd>%yZw}ZB@0$d<6 zxfre?uISr!gx?9GXYc3!7Tj0B67EGOiw=Gnwqlog+=H06VLlC_dqo#7Bm7EO%KZb} zi(Y;OwqX~Yd^`4MKy>kA+%G5WD!7Gv(c7Y@cY)|`nJ3P|l==8>QAyw5@OSXb^_Kr?6w ztsokjLsMuC<>c`y>i24x4A+1Qcadv%;&&JPU*|!hUndjKTyvRgteWdHS&NzLE?IL0 zuGa$BXtE}g_1JXM6kRX6Z4Y)?FQ11$U?2B;LDtf{G5^FA{r4(%Sv&s*7vLcG2SC=< z`!Qv0Ejsdb?6Qvj9sUc4xjzK5#+J3U4P-u0jI|U>pbSJu+)tQbs36QA@H-5^{SLw} zgW34qgj-$Q?AYTl`$HmioCNi-i=L?@OlRl>G8d7#h0IfSz#_OF_qK$S^==!?)tGA_ z8oLX6z!10`+Cfhk3Tp{-D-6Tl3#LIKX=PwOg}DP-W0$$>+LM;dOKZ+Y z&3S4!;x)s6BW4TCme2}XLvyG(Z;c_%S(Lj9zj*9eueY!3!H=B;6D&adRK@Eb)n|`I~unwq}v9wEx4c^ zJVd;Q;R~KE^WV2%HtsSPy%FNE4}!sP8T5srFa$1#elQSHAq_^sXcz+{VK^i}A|ydF zq`(Lm24f)|#z6)Qfc_A{v-2Pq@?jNtp#Zj1j>d$U3r#@QFHK=Fgy4T8W)kKINP%Qn zhTC#j0g>Dn!L=|I#*?1x<%D8Shbv(eWWYGcf=oz-G#C#PLG}W!fU)3)36KqAU?hx& zMm(=0^}8PX1^5G;&>OnLK37mve@Fx5l zzJ~QY_fEJAWS`UAm-!UGci=1d2F$(A53#=mr{M(LO`Ll{_HH)7J<{4nAZ&##unq2q@9=vYNZu9-cI?XmFIzcGg)s2I6qrW9E6HCF z^yPjP_rDYVH~0!p!DG0~-p=*d6G*55_upb~h*`z`huDjW_aJ5 z@4#<0e2V>U+&f^lhmP?-PyqSR8ivDQXbSb=G8h8Q zpgBZA0z^XtXak9m1Z`m`w1A1w8#15|jE5^=0whBUxS$=hhY>ImQlSHMgieqKEukS? z4#S`o#J~XP3t5m2{h&X%VHAvp&d>$A!Wb9}>Cg?jLk}1S1EC(oLIi|DID|n@=mmA4 zF+@ULh=)PY2%119#KB~^3a*B3wCixFfCSir+kLPRHb5$4E)7P(XxN0?J+K)@a6cPH z!gX*jZrw@4+#~IW{Z;zrS?G-a3|I#3XYKg|6u%ttZTV*Y=* zX8tGZ7@32}yyH8b{XLlT3v+H^&M9Oru?}Qzkqk25kU7RCNP*38Gsv7p<^j3b zAAtXh-WGi=x>@E~GRKm6)fAWtqQ^ycC4k66k%1!rMAnI16FDa`PUM!U&ui*PQ@?-3$V^jCnlkb4nT&XYwzCd)Z4g_Y)#%l^tex;Y{0kn1$KY{z0-lB!;6->Dw!@RK1D=6r z;W>B-UIEz$nohc>N&hMG*#P@RkcssRxUI)}Kj9p>O~PJ*IRNtx{FcEy?9&Ka4D+$a zL4UXt3SlBt5~nkCf`7qt@GLwJ=SX8O`~W*(5iBRp_4rMbG%%ln9nhNl$1op%`%m_XmJnwjv?opnm_xbd!CWaHEQH0d2%6!)k+3Z= zTS6;n4b35j=PiIL>}UXg)kM&J)ueX?Z@vM*g*LIV)nu9 z81#TFcpHvGFZdC9!%_GdeuAEm3BSU5_yx|vZ}1;j!1JOpw~&4t%(mcyc3|!YZRfd< z!xQi%d;#ynTQHk&|H7<~84rVCFkA+GVJHlN%b_0(gz=CHX)p>#!x)$VBOw-sLjoj1 z5+p+kjDTS<7SdrHWI!AYfd0@0+|U)Wp*z%r2=bW+xsVU5zzYSio$}8i%+1gk=E8iK z2TfoBEP{p56c$4W@ovOS!W;o9kPORkTMjEAlKUdK7N){@p0kay6pB3^u7pvL0plPG zG9eYxU_4BONpJ;>1vgB9Y#0M0VKg-2c^zrbY;eN_koW24{^feY)ZC-IfZHEXbC1x8 zTW{zN1ECM}gaObG`a(SPg8tA0Vj&Kq$VUw39Lm}pvmrEr*3bZ2K_h4kEukqigBB15 zR}%j!%y5_jIWQSKa5X$Zx}lUS7<&-Zh5AqrqTqJwcRkzD^A(Ku-~;#=&cgffZ}_z>QL z({KXbhYz5(y|1mbqwICbd)qf?>oeSYsq4jJ5@#j$&ba@Hy$fbnn1I_^?t|bA_b*|- z058Jr_+`PzxPJuqU_XiZ0O>ynTOn{i>o9)b!Q1dI@!x}PFb$p|ZeO?=zw_`r{03ja z65JQVBDe(}fu*p7d@qG0o^y(DvbS{?_tUZ83aQ+Wfl)9R#=%HPhs$6zq`@*63l9-j z_Qbv=Zs1v!&$e7R+GoL%<0RC?daep#s0@7v{kn2nIU@ffGF7gJPHo zWl#w-pbARhdYA>X;X0^*awvsqPzY1uS}1}%$bl)43tlLId}s~BVK6j>`fwQxfo9Mg zq96gHp#ijkL`Z_RFcezAMCc6}&XQ2Hl|tjDvwt4`Lw#LLnT&peOW#I?xy* zp)SP3AZP?lAQR%?8khuE!eqD#u7-Z}hgazjXF>L&=3}nI-Hp4QezcPNOzb~k{|Wn# za2@t*VJ-G4n7NPxhq&(q3kiQMT)^#N(wd2z>_07mrEm)@gXK`$w@W(-UqJj>#2<(m z3qI^`;$DVXh4}#KJ_w({m+%#Q4JY9gdYjlz3n=H-L6B}?WR|-=@sm7yPa;Q!|e=lJ44;hFt;KiFIRLC%$T)1hPnF%*D6K*~!+{{e4nVE1iGvQ`g!maeerz}dfFFK#74ZAi~ zHd^Y3*@GoNb>$MNor3F_mPm1KWkxsS+k;FOhiP$|mQd3YW?CXmOI>XV3U)`kqwBe& z>${_)+|do((GA_vjoi_V-O(<0bO%*!cew3A?l6ZJ^4-qvZYRyyBYbV=rMLdnGvD6R z9o<%PM#BcXosn**>NEejF*GqkaxNAr%aM4eLxM#cc6*PGjv%=>%r4`wYAVVR=8o>f zql1G(jjKZ&c5Mb}({y+0`!GzWecr$zdlSpnRNErx7=~|zL*hxe2!~l$PP;q0l{>nL zJGyxfFMhhxBdyLEY39=&X*WASq}9tK?PeEg zW1WrgCZ?sSnX~YwR)1_}x&@oVHMpJ;p3bjok(xG4D~|5-_F%IQ2bM1-`oy=^;t@au>R_E_^Z$1uRd$s)3yBR2K&6{+4RV>X{l&4 zAEpzw>6C3cX`4>lrW3d6)NML>o0)!H{hWH*tgp=|!?f$?+Vyko`nf1Gm0P=hu3bOZ zuAghy&kZuAxDM~o;nBw`zC-8Bsmtlq&qJRmf2V$)Q^$Ae_)Z<)sh{W6&vTmT>2f-C zIi0$kPF+r?E@!ZQZm@oCu-$YpOCD?%J=iRJuvz$Ev-H8H3=R&`>4fNHLd<(zo)BH0 zQ0*V8{X?~XsOhiE8>-72s>>Uy%WHO;P+eZL+l1U@Ule1_|MhU}Cjl>jDB&NtAF+~W8De~^fP@U6x0~@HRq}SoJ zTNX8^6c;t86pNZCiKU559L3Vqv@|m<%}q-;)6(6v^e`>V7Df6Wi8pc|uT&m)j&LeT z*OOUYrfD}V4%6Z^EfJ>0VL3U1O*f}Myyffk`-WKILM@x*LQQL(^(e?eyI5{rEn7Fs*4?uC z7aYATx89bmk7bLoY_XOt&a(BjZ2c@-f6F$&vJJFs@or}?8QU`GSv{(&41Vm|Dah^Y z>2@X*b}#I1E9`DB?CvP+9$eTxw6J>^E;!k6vjqVjHYea~3ju=IBuqF&KplvLx=;_I zpaC?5M$j0VKvQT2&7lRfgjUcRqM;461sAk~_Rs-3LMP}9U7#y;1Ic+0=n1``H}ruR zh=n-l3;m!!41j?U4})MZTn0m6C|nN1U^q}OwnRvRWJrM#FcMNB4MxFe7z1M=9mYWh zjE79Bl{&Oje|GB6PW{=bJ3Dn3O#Oxm_=i%*p@az~OekSOspC+>g%U25Iu50dL#bm2 z;T?o`5Z*y}Hbvy3T+~Imi-&`h91fCluufI?##IFfR`y`*Vc5c`^sx5O0f-hxtgy$g zN7gYdJ;b0TlArzLKXDb#~Zp&n!kb!MYI<~j>|6!wr=t>_g)b6{EyhN{6uD;2f6LW!uQ zm6)cxRyJxyCGJ|;*bHUkPzxz>msN?FQX^tY5yVt`1ej6)xtC>#n6gk6Qx+g%%IZT* zS$c>m>kcs+Qxs;nTtem2S}xIY371QlT-wN`tz2AkX(yKmxwMx{2e~-q5-gXda%m

    ey$~1lG_{4gaJxw@OY! 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 literal 0 HcmV?d00001 diff --git a/openSSL/win64/include/openssl/aes.h b/openSSL/win64/include/openssl/aes.h new file mode 100644 index 0000000..245c552 --- /dev/null +++ b/openSSL/win64/include/openssl/aes.h @@ -0,0 +1,92 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_AES_H +# define HEADER_AES_H + +# include + +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define AES_ENCRYPT 1 +# define AES_DECRYPT 0 + +/* + * Because array size can't be a const in C, the following two are macros. + * Both sizes are in bytes. + */ +# define AES_MAXNR 14 +# define AES_BLOCK_SIZE 16 + +/* This should be a hidden type, but EVP requires that the size be known */ +struct aes_key_st { +# ifdef AES_LONG + unsigned long rd_key[4 * (AES_MAXNR + 1)]; +# else + unsigned int rd_key[4 * (AES_MAXNR + 1)]; +# endif + int rounds; +}; +typedef struct aes_key_st AES_KEY; + +const char *AES_options(void); + +int AES_set_encrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); +int AES_set_decrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); + +void AES_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); +void AES_decrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); + +void AES_ecb_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key, const int enc); +void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, const int enc); +void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num, const int enc); +void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num, const int enc); +void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num, const int enc); +void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, int *num); +/* NB: the IV is _two_ blocks long */ +void AES_ige_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, const int enc); +/* NB: the IV is _four_ blocks long */ +void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + const AES_KEY *key2, const unsigned char *ivec, + const int enc); + +int AES_wrap_key(AES_KEY *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, unsigned int inlen); +int AES_unwrap_key(AES_KEY *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, unsigned int inlen); + + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/openSSL/win64/include/openssl/asn1.h b/openSSL/win64/include/openssl/asn1.h new file mode 100644 index 0000000..9522eec --- /dev/null +++ b/openSSL/win64/include/openssl/asn1.h @@ -0,0 +1,886 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1_H +# define HEADER_ASN1_H + +# include +# include +# include +# include +# include +# include +# include + +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define V_ASN1_UNIVERSAL 0x00 +# define V_ASN1_APPLICATION 0x40 +# define V_ASN1_CONTEXT_SPECIFIC 0x80 +# define V_ASN1_PRIVATE 0xc0 + +# define V_ASN1_CONSTRUCTED 0x20 +# define V_ASN1_PRIMITIVE_TAG 0x1f +# define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG + +# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ +# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ +# define V_ASN1_ANY -4/* used in ASN1 template code */ + +# define V_ASN1_UNDEF -1 +/* ASN.1 tag values */ +# define V_ASN1_EOC 0 +# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_INTEGER 2 +# define V_ASN1_BIT_STRING 3 +# define V_ASN1_OCTET_STRING 4 +# define V_ASN1_NULL 5 +# define V_ASN1_OBJECT 6 +# define V_ASN1_OBJECT_DESCRIPTOR 7 +# define V_ASN1_EXTERNAL 8 +# define V_ASN1_REAL 9 +# define V_ASN1_ENUMERATED 10 +# define V_ASN1_UTF8STRING 12 +# define V_ASN1_SEQUENCE 16 +# define V_ASN1_SET 17 +# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_PRINTABLESTRING 19 +# define V_ASN1_T61STRING 20 +# define V_ASN1_TELETEXSTRING 20/* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_IA5STRING 22 +# define V_ASN1_UTCTIME 23 +# define V_ASN1_GENERALIZEDTIME 24 /**/ +# define V_ASN1_GRAPHICSTRING 25 /**/ +# define V_ASN1_ISO64STRING 26 /**/ +# define V_ASN1_VISIBLESTRING 26/* alias */ +# define V_ASN1_GENERALSTRING 27 /**/ +# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_BMPSTRING 30 + +/* + * NB the constants below are used internally by ASN1_INTEGER + * and ASN1_ENUMERATED to indicate the sign. They are *not* on + * the wire tag values. + */ + +# define V_ASN1_NEG 0x100 +# define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) +# define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) + +/* For use with d2i_ASN1_type_bytes() */ +# define B_ASN1_NUMERICSTRING 0x0001 +# define B_ASN1_PRINTABLESTRING 0x0002 +# define B_ASN1_T61STRING 0x0004 +# define B_ASN1_TELETEXSTRING 0x0004 +# define B_ASN1_VIDEOTEXSTRING 0x0008 +# define B_ASN1_IA5STRING 0x0010 +# define B_ASN1_GRAPHICSTRING 0x0020 +# define B_ASN1_ISO64STRING 0x0040 +# define B_ASN1_VISIBLESTRING 0x0040 +# define B_ASN1_GENERALSTRING 0x0080 +# define B_ASN1_UNIVERSALSTRING 0x0100 +# define B_ASN1_OCTET_STRING 0x0200 +# define B_ASN1_BIT_STRING 0x0400 +# define B_ASN1_BMPSTRING 0x0800 +# define B_ASN1_UNKNOWN 0x1000 +# define B_ASN1_UTF8STRING 0x2000 +# define B_ASN1_UTCTIME 0x4000 +# define B_ASN1_GENERALIZEDTIME 0x8000 +# define B_ASN1_SEQUENCE 0x10000 +/* For use with ASN1_mbstring_copy() */ +# define MBSTRING_FLAG 0x1000 +# define MBSTRING_UTF8 (MBSTRING_FLAG) +# define MBSTRING_ASC (MBSTRING_FLAG|1) +# define MBSTRING_BMP (MBSTRING_FLAG|2) +# define MBSTRING_UNIV (MBSTRING_FLAG|4) +# define SMIME_OLDMIME 0x400 +# define SMIME_CRLFEOL 0x800 +# define SMIME_STREAM 0x1000 + struct X509_algor_st; +DEFINE_STACK_OF(X509_ALGOR) + +# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +/* + * This indicates that the ASN1_STRING is not a real value but just a place + * holder for the location where indefinite length constructed data should be + * inserted in the memory buffer + */ +# define ASN1_STRING_FLAG_NDEF 0x010 + +/* + * This flag is used by the CMS code to indicate that a string is not + * complete and is a place holder for content when it had all been accessed. + * The flag will be reset when content has been written to it. + */ + +# define ASN1_STRING_FLAG_CONT 0x020 +/* + * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING + * type. + */ +# define ASN1_STRING_FLAG_MSTRING 0x040 +/* String is embedded and only content should be freed */ +# define ASN1_STRING_FLAG_EMBED 0x080 +/* String should be parsed in RFC 5280's time format */ +# define ASN1_STRING_FLAG_X509_TIME 0x100 +/* This is the base type that holds just about everything :-) */ +struct asn1_string_st { + int length; + int type; + unsigned char *data; + /* + * The value of the following field depends on the type being held. It + * is mostly being used for BIT_STRING so if the input data has a + * non-zero 'unused bits' value, it will be handled correctly + */ + long flags; +}; + +/* + * ASN1_ENCODING structure: this is used to save the received encoding of an + * ASN1 type. This is useful to get round problems with invalid encodings + * which can break signatures. + */ + +typedef struct ASN1_ENCODING_st { + unsigned char *enc; /* DER encoding */ + long len; /* Length of encoding */ + int modified; /* set to 1 if 'enc' is invalid */ +} ASN1_ENCODING; + +/* Used with ASN1 LONG type: if a long is set to this it is omitted */ +# define ASN1_LONG_UNDEF 0x7fffffffL + +# define STABLE_FLAGS_MALLOC 0x01 +/* + * A zero passed to ASN1_STRING_TABLE_new_add for the flags is interpreted + * as "don't change" and STABLE_FLAGS_MALLOC is always set. By setting + * STABLE_FLAGS_MALLOC only we can clear the existing value. Use the alias + * STABLE_FLAGS_CLEAR to reflect this. + */ +# define STABLE_FLAGS_CLEAR STABLE_FLAGS_MALLOC +# define STABLE_NO_MASK 0x02 +# define DIRSTRING_TYPE \ + (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING) +# define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING) + +typedef struct asn1_string_table_st { + int nid; + long minsize; + long maxsize; + unsigned long mask; + unsigned long flags; +} ASN1_STRING_TABLE; + +DEFINE_STACK_OF(ASN1_STRING_TABLE) + +/* size limits: this stuff is taken straight from RFC2459 */ + +# define ub_name 32768 +# define ub_common_name 64 +# define ub_locality_name 128 +# define ub_state_name 128 +# define ub_organization_name 64 +# define ub_organization_unit_name 64 +# define ub_title 64 +# define ub_email_address 128 + +/* + * Declarations for template structures: for full definitions see asn1t.h + */ +typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE; +typedef struct ASN1_TLC_st ASN1_TLC; +/* This is just an opaque pointer */ +typedef struct ASN1_VALUE_st ASN1_VALUE; + +/* Declare ASN1 functions: the implement macro in in asn1t.h */ + +# define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) + +# define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(itname) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(const type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(name) + +# define DECLARE_ASN1_NDEF_FUNCTION(name) \ + int i2d_##name##_NDEF(name *a, unsigned char **out); + +# define DECLARE_ASN1_FUNCTIONS_const(name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS(name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + type *name##_new(void); \ + void name##_free(type *a); + +# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname) + +# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ + int fname##_print_ctx(BIO *out, stname *x, int indent, \ + const ASN1_PCTX *pctx); + +# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) +# define I2D_OF(type) int (*)(type *,unsigned char **) +# define I2D_OF_const(type) int (*)(const type *,unsigned char **) + +# define CHECKED_D2I_OF(type, d2i) \ + ((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0))) +# define CHECKED_I2D_OF(type, i2d) \ + ((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0))) +# define CHECKED_NEW_OF(type, xnew) \ + ((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0))) +# define CHECKED_PTR_OF(type, p) \ + ((void*) (1 ? p : (type*)0)) +# define CHECKED_PPTR_OF(type, p) \ + ((void**) (1 ? p : (type**)0)) + +# define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long) +# define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **) +# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) + +TYPEDEF_D2I2D_OF(void); + +/*- + * The following macros and typedefs allow an ASN1_ITEM + * to be embedded in a structure and referenced. Since + * the ASN1_ITEM pointers need to be globally accessible + * (possibly from shared libraries) they may exist in + * different forms. On platforms that support it the + * ASN1_ITEM structure itself will be globally exported. + * Other platforms will export a function that returns + * an ASN1_ITEM pointer. + * + * To handle both cases transparently the macros below + * should be used instead of hard coding an ASN1_ITEM + * pointer in a structure. + * + * The structure will look like this: + * + * typedef struct SOMETHING_st { + * ... + * ASN1_ITEM_EXP *iptr; + * ... + * } SOMETHING; + * + * It would be initialised as e.g.: + * + * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...}; + * + * and the actual pointer extracted with: + * + * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr); + * + * Finally an ASN1_ITEM pointer can be extracted from an + * appropriate reference with: ASN1_ITEM_rptr(X509). This + * would be used when a function takes an ASN1_ITEM * argument. + * + */ + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM ASN1_ITEM_EXP; + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (&(iptr##_it)) + +# define ASN1_ITEM_rptr(ref) (&(ref##_it)) + +# define DECLARE_ASN1_ITEM(name) \ + OPENSSL_EXTERN const ASN1_ITEM name##_it; + +# else + +/* + * Platforms that can't easily handle shared global variables are declared as + * functions returning ASN1_ITEM pointers. + */ + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM *ASN1_ITEM_EXP (void); + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr()) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (iptr##_it) + +# define ASN1_ITEM_rptr(ref) (ref##_it()) + +# define DECLARE_ASN1_ITEM(name) \ + const ASN1_ITEM * name##_it(void); + +# endif + +/* Parameters used by ASN1_STRING_print_ex() */ + +/* + * These determine which characters to escape: RFC2253 special characters, + * control characters and MSB set characters + */ + +# define ASN1_STRFLGS_ESC_2253 1 +# define ASN1_STRFLGS_ESC_CTRL 2 +# define ASN1_STRFLGS_ESC_MSB 4 + +/* + * This flag determines how we do escaping: normally RC2253 backslash only, + * set this to use backslash and quote. + */ + +# define ASN1_STRFLGS_ESC_QUOTE 8 + +/* These three flags are internal use only. */ + +/* Character is a valid PrintableString character */ +# define CHARTYPE_PRINTABLESTRING 0x10 +/* Character needs escaping if it is the first character */ +# define CHARTYPE_FIRST_ESC_2253 0x20 +/* Character needs escaping if it is the last character */ +# define CHARTYPE_LAST_ESC_2253 0x40 + +/* + * NB the internal flags are safely reused below by flags handled at the top + * level. + */ + +/* + * If this is set we convert all character strings to UTF8 first + */ + +# define ASN1_STRFLGS_UTF8_CONVERT 0x10 + +/* + * If this is set we don't attempt to interpret content: just assume all + * strings are 1 byte per character. This will produce some pretty odd + * looking output! + */ + +# define ASN1_STRFLGS_IGNORE_TYPE 0x20 + +/* If this is set we include the string type in the output */ +# define ASN1_STRFLGS_SHOW_TYPE 0x40 + +/* + * This determines which strings to display and which to 'dump' (hex dump of + * content octets or DER encoding). We can only dump non character strings or + * everything. If we don't dump 'unknown' they are interpreted as character + * strings with 1 octet per character and are subject to the usual escaping + * options. + */ + +# define ASN1_STRFLGS_DUMP_ALL 0x80 +# define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 + +/* + * These determine what 'dumping' does, we can dump the content octets or the + * DER encoding: both use the RFC2253 #XXXXX notation. + */ + +# define ASN1_STRFLGS_DUMP_DER 0x200 + +/* + * This flag specifies that RC2254 escaping shall be performed. + */ +#define ASN1_STRFLGS_ESC_2254 0x400 + +/* + * All the string flags consistent with RFC2253, escaping control characters + * isn't essential in RFC2253 but it is advisable anyway. + */ + +# define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \ + ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + ASN1_STRFLGS_UTF8_CONVERT | \ + ASN1_STRFLGS_DUMP_UNKNOWN | \ + ASN1_STRFLGS_DUMP_DER) + +DEFINE_STACK_OF(ASN1_INTEGER) + +DEFINE_STACK_OF(ASN1_GENERALSTRING) + +DEFINE_STACK_OF(ASN1_UTF8STRING) + +typedef struct asn1_type_st { + int type; + union { + char *ptr; + ASN1_BOOLEAN boolean; + ASN1_STRING *asn1_string; + ASN1_OBJECT *object; + ASN1_INTEGER *integer; + ASN1_ENUMERATED *enumerated; + ASN1_BIT_STRING *bit_string; + ASN1_OCTET_STRING *octet_string; + ASN1_PRINTABLESTRING *printablestring; + ASN1_T61STRING *t61string; + ASN1_IA5STRING *ia5string; + ASN1_GENERALSTRING *generalstring; + ASN1_BMPSTRING *bmpstring; + ASN1_UNIVERSALSTRING *universalstring; + ASN1_UTCTIME *utctime; + ASN1_GENERALIZEDTIME *generalizedtime; + ASN1_VISIBLESTRING *visiblestring; + ASN1_UTF8STRING *utf8string; + /* + * set and sequence are left complete and still contain the set or + * sequence bytes + */ + ASN1_STRING *set; + ASN1_STRING *sequence; + ASN1_VALUE *asn1_value; + } value; +} ASN1_TYPE; + +DEFINE_STACK_OF(ASN1_TYPE) + +typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SET_ANY) + +/* This is used to contain a list of bit names */ +typedef struct BIT_STRING_BITNAME_st { + int bitnum; + const char *lname; + const char *sname; +} BIT_STRING_BITNAME; + +# define B_ASN1_TIME \ + B_ASN1_UTCTIME | \ + B_ASN1_GENERALIZEDTIME + +# define B_ASN1_PRINTABLE \ + B_ASN1_NUMERICSTRING| \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_T61STRING| \ + B_ASN1_IA5STRING| \ + B_ASN1_BIT_STRING| \ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING|\ + B_ASN1_SEQUENCE|\ + B_ASN1_UNKNOWN + +# define B_ASN1_DIRECTORYSTRING \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_TELETEXSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_UTF8STRING + +# define B_ASN1_DISPLAYTEXT \ + B_ASN1_IA5STRING| \ + B_ASN1_VISIBLESTRING| \ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING + +DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) + +int ASN1_TYPE_get(const ASN1_TYPE *a); +void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); +int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value); +int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b); + +ASN1_TYPE *ASN1_TYPE_pack_sequence(const ASN1_ITEM *it, void *s, ASN1_TYPE **t); +void *ASN1_TYPE_unpack_sequence(const ASN1_ITEM *it, const ASN1_TYPE *t); + +ASN1_OBJECT *ASN1_OBJECT_new(void); +void ASN1_OBJECT_free(ASN1_OBJECT *a); +int i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp); +ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, + long length); + +DECLARE_ASN1_ITEM(ASN1_OBJECT) + +DEFINE_STACK_OF(ASN1_OBJECT) + +ASN1_STRING *ASN1_STRING_new(void); +void ASN1_STRING_free(ASN1_STRING *a); +void ASN1_STRING_clear_free(ASN1_STRING *a); +int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); +ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a); +ASN1_STRING *ASN1_STRING_type_new(int type); +int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); + /* + * Since this is used to store all sorts of things, via macros, for now, + * make its data void * + */ +int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); +void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); +int ASN1_STRING_length(const ASN1_STRING *x); +void ASN1_STRING_length_set(ASN1_STRING *x, int n); +int ASN1_STRING_type(const ASN1_STRING *x); +DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x)) +const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x); + +DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING) +int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length); +int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); +int ASN1_BIT_STRING_get_bit(const ASN1_BIT_STRING *a, int n); +int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *a, + const unsigned char *flags, int flags_len); + +int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, + BIT_STRING_BITNAME *tbl, int indent); +int ASN1_BIT_STRING_num_asc(const char *name, BIT_STRING_BITNAME *tbl); +int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value, + BIT_STRING_BITNAME *tbl); + +DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) +ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x); +int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y); + +DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED) + +int ASN1_UTCTIME_check(const ASN1_UTCTIME *a); +ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); +ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); +int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); + +int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, + time_t t); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, + time_t t, int offset_day, + long offset_sec); +int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str); + +int ASN1_TIME_diff(int *pday, int *psec, + const ASN1_TIME *from, const ASN1_TIME *to); + +DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING) +ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a); +int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, + const ASN1_OCTET_STRING *b); +int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, + int len); + +DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_NULL) +DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING) + +int UTF8_getc(const unsigned char *str, int len, unsigned long *val); +int UTF8_putc(unsigned char *str, int len, unsigned long value); + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE) + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING) +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT) +DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_TIME) + +DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF) + +ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); +ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_TIME_check(const ASN1_TIME *t); +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(const ASN1_TIME *t, + ASN1_GENERALIZEDTIME **out); +int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); +int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str); +int ASN1_TIME_to_tm(const ASN1_TIME *s, struct tm *tm); +int ASN1_TIME_normalize(ASN1_TIME *s); +int ASN1_TIME_cmp_time_t(const ASN1_TIME *s, time_t t); +int ASN1_TIME_compare(const ASN1_TIME *a, const ASN1_TIME *b); + +int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a); +int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); +int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a); +int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); +int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a); +int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); +int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type); +int i2t_ASN1_OBJECT(char *buf, int buf_len, const ASN1_OBJECT *a); + +int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); +ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len, + const char *sn, const char *ln); + +int ASN1_INTEGER_get_int64(int64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_int64(ASN1_INTEGER *a, int64_t r); +int ASN1_INTEGER_get_uint64(uint64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_uint64(ASN1_INTEGER *a, uint64_t r); + +int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); +long ASN1_INTEGER_get(const ASN1_INTEGER *a); +ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); +BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); + +int ASN1_ENUMERATED_get_int64(int64_t *pr, const ASN1_ENUMERATED *a); +int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *a, int64_t r); + + +int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); +long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a); +ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai); +BIGNUM *ASN1_ENUMERATED_to_BN(const ASN1_ENUMERATED *ai, BIGNUM *bn); + +/* General */ +/* given a string, return the correct type, max is the maximum length */ +int ASN1_PRINTABLE_type(const unsigned char *s, int max); + +unsigned long ASN1_tag2bit(int tag); + +/* SPECIALS */ +int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, + int *pclass, long omax); +int ASN1_check_infinite_end(unsigned char **p, long len); +int ASN1_const_check_infinite_end(const unsigned char **p, long len); +void ASN1_put_object(unsigned char **pp, int constructed, int length, + int tag, int xclass); +int ASN1_put_eoc(unsigned char **pp); +int ASN1_object_size(int constructed, int length, int tag); + +/* Used to implement other functions */ +void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x); + +# define ASN1_dup_of(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_dup_of_const(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(const type, x))) + +void *ASN1_item_dup(const ASN1_ITEM *it, void *x); + +/* ASN1 alloc/free macros for when a type is only used internally */ + +# define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type)) +# define M_ASN1_free_of(x, type) \ + ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type)) + +# ifndef OPENSSL_NO_STDIO +void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x); + +# define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); +int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x); + +# define ASN1_i2d_fp_of(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_fp_of_const(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x); +int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags); +# endif + +int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in); + +void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x); + +# define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); +int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x); + +# define ASN1_i2d_bio_of(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_bio_of_const(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); +int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a); +int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a); +int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a); +int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v); +int ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str, unsigned long flags); +int ASN1_buf_print(BIO *bp, const unsigned char *buf, size_t buflen, int off); +int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, + unsigned char *buf, int off); +int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent); +int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, + int dump); +const char *ASN1_tag2str(int tag); + +/* Used to load and write Netscape format cert */ + +int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); + +int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); +int ASN1_TYPE_get_octetstring(const ASN1_TYPE *a, unsigned char *data, int max_len); +int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, + unsigned char *data, int len); +int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, + unsigned char *data, int max_len); + +void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); + +ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, + ASN1_OCTET_STRING **oct); + +void ASN1_STRING_set_default_mask(unsigned long mask); +int ASN1_STRING_set_default_mask_asc(const char *p); +unsigned long ASN1_STRING_get_default_mask(void); +int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask); +int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask, + long minsize, long maxsize); + +ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, + const unsigned char *in, int inlen, + int inform, int nid); +ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); +int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); +void ASN1_STRING_TABLE_cleanup(void); + +/* ASN1 template functions */ + +/* Old API compatible functions */ +ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); +void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); +ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it); +int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); +int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out, + const ASN1_ITEM *it); + +void ASN1_add_oid_module(void); +void ASN1_add_stable_module(void); + +ASN1_TYPE *ASN1_generate_nconf(const char *str, CONF *nconf); +ASN1_TYPE *ASN1_generate_v3(const char *str, X509V3_CTX *cnf); +int ASN1_str2mask(const char *str, unsigned long *pmask); + +/* ASN1 Print flags */ + +/* Indicate missing OPTIONAL fields */ +# define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001 +/* Mark start and end of SEQUENCE */ +# define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002 +/* Mark start and end of SEQUENCE/SET OF */ +# define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004 +/* Show the ASN1 type of primitives */ +# define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008 +/* Don't show ASN1 type of ANY */ +# define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010 +/* Don't show ASN1 type of MSTRINGs */ +# define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020 +/* Don't show field names in SEQUENCE */ +# define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040 +/* Show structure names of each SEQUENCE field */ +# define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080 +/* Don't show structure name even at top level */ +# define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100 + +int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent, + const ASN1_ITEM *it, const ASN1_PCTX *pctx); +ASN1_PCTX *ASN1_PCTX_new(void); +void ASN1_PCTX_free(ASN1_PCTX *p); +unsigned long ASN1_PCTX_get_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_nm_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_cert_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_oid_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_str_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags); + +ASN1_SCTX *ASN1_SCTX_new(int (*scan_cb) (ASN1_SCTX *ctx)); +void ASN1_SCTX_free(ASN1_SCTX *p); +const ASN1_ITEM *ASN1_SCTX_get_item(ASN1_SCTX *p); +const ASN1_TEMPLATE *ASN1_SCTX_get_template(ASN1_SCTX *p); +unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p); +void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data); +void *ASN1_SCTX_get_app_data(ASN1_SCTX *p); + +const BIO_METHOD *BIO_f_asn1(void); + +BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it); + +int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const ASN1_ITEM *it); +int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const char *hdr, const ASN1_ITEM *it); +int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, + int ctype_nid, int econt_nid, + STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it); +ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); +int SMIME_crlf_copy(BIO *in, BIO *out, int flags); +int SMIME_text(BIO *in, BIO *out); + +const ASN1_ITEM *ASN1_ITEM_lookup(const char *name); +const ASN1_ITEM *ASN1_ITEM_get(size_t i); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/asn1_mac.h b/openSSL/win64/include/openssl/asn1_mac.h new file mode 100644 index 0000000..7ac1782 --- /dev/null +++ b/openSSL/win64/include/openssl/asn1_mac.h @@ -0,0 +1,10 @@ +/* + * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#error "This file is obsolete; please update your software." diff --git a/openSSL/win64/include/openssl/asn1err.h b/openSSL/win64/include/openssl/asn1err.h new file mode 100644 index 0000000..e1ad1fe --- /dev/null +++ b/openSSL/win64/include/openssl/asn1err.h @@ -0,0 +1,256 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1ERR_H +# define HEADER_ASN1ERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ASN1_strings(void); + +/* + * ASN1 function codes. + */ +# define ASN1_F_A2D_ASN1_OBJECT 100 +# define ASN1_F_A2I_ASN1_INTEGER 102 +# define ASN1_F_A2I_ASN1_STRING 103 +# define ASN1_F_APPEND_EXP 176 +# define ASN1_F_ASN1_BIO_INIT 113 +# define ASN1_F_ASN1_BIT_STRING_SET_BIT 183 +# define ASN1_F_ASN1_CB 177 +# define ASN1_F_ASN1_CHECK_TLEN 104 +# define ASN1_F_ASN1_COLLECT 106 +# define ASN1_F_ASN1_D2I_EX_PRIMITIVE 108 +# define ASN1_F_ASN1_D2I_FP 109 +# define ASN1_F_ASN1_D2I_READ_BIO 107 +# define ASN1_F_ASN1_DIGEST 184 +# define ASN1_F_ASN1_DO_ADB 110 +# define ASN1_F_ASN1_DO_LOCK 233 +# define ASN1_F_ASN1_DUP 111 +# define ASN1_F_ASN1_ENC_SAVE 115 +# define ASN1_F_ASN1_EX_C2I 204 +# define ASN1_F_ASN1_FIND_END 190 +# define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 216 +# define ASN1_F_ASN1_GENERATE_V3 178 +# define ASN1_F_ASN1_GET_INT64 224 +# define ASN1_F_ASN1_GET_OBJECT 114 +# define ASN1_F_ASN1_GET_UINT64 225 +# define ASN1_F_ASN1_I2D_BIO 116 +# define ASN1_F_ASN1_I2D_FP 117 +# define ASN1_F_ASN1_ITEM_D2I_FP 206 +# define ASN1_F_ASN1_ITEM_DUP 191 +# define ASN1_F_ASN1_ITEM_EMBED_D2I 120 +# define ASN1_F_ASN1_ITEM_EMBED_NEW 121 +# define ASN1_F_ASN1_ITEM_EX_I2D 144 +# define ASN1_F_ASN1_ITEM_FLAGS_I2D 118 +# define ASN1_F_ASN1_ITEM_I2D_BIO 192 +# define ASN1_F_ASN1_ITEM_I2D_FP 193 +# define ASN1_F_ASN1_ITEM_PACK 198 +# define ASN1_F_ASN1_ITEM_SIGN 195 +# define ASN1_F_ASN1_ITEM_SIGN_CTX 220 +# define ASN1_F_ASN1_ITEM_UNPACK 199 +# define ASN1_F_ASN1_ITEM_VERIFY 197 +# define ASN1_F_ASN1_MBSTRING_NCOPY 122 +# define ASN1_F_ASN1_OBJECT_NEW 123 +# define ASN1_F_ASN1_OUTPUT_DATA 214 +# define ASN1_F_ASN1_PCTX_NEW 205 +# define ASN1_F_ASN1_PRIMITIVE_NEW 119 +# define ASN1_F_ASN1_SCTX_NEW 221 +# define ASN1_F_ASN1_SIGN 128 +# define ASN1_F_ASN1_STR2TYPE 179 +# define ASN1_F_ASN1_STRING_GET_INT64 227 +# define ASN1_F_ASN1_STRING_GET_UINT64 230 +# define ASN1_F_ASN1_STRING_SET 186 +# define ASN1_F_ASN1_STRING_TABLE_ADD 129 +# define ASN1_F_ASN1_STRING_TO_BN 228 +# define ASN1_F_ASN1_STRING_TYPE_NEW 130 +# define ASN1_F_ASN1_TEMPLATE_EX_D2I 132 +# define ASN1_F_ASN1_TEMPLATE_NEW 133 +# define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131 +# define ASN1_F_ASN1_TIME_ADJ 217 +# define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134 +# define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135 +# define ASN1_F_ASN1_UTCTIME_ADJ 218 +# define ASN1_F_ASN1_VERIFY 137 +# define ASN1_F_B64_READ_ASN1 209 +# define ASN1_F_B64_WRITE_ASN1 210 +# define ASN1_F_BIO_NEW_NDEF 208 +# define ASN1_F_BITSTR_CB 180 +# define ASN1_F_BN_TO_ASN1_STRING 229 +# define ASN1_F_C2I_ASN1_BIT_STRING 189 +# define ASN1_F_C2I_ASN1_INTEGER 194 +# define ASN1_F_C2I_ASN1_OBJECT 196 +# define ASN1_F_C2I_IBUF 226 +# define ASN1_F_C2I_UINT64_INT 101 +# define ASN1_F_COLLECT_DATA 140 +# define ASN1_F_D2I_ASN1_OBJECT 147 +# define ASN1_F_D2I_ASN1_UINTEGER 150 +# define ASN1_F_D2I_AUTOPRIVATEKEY 207 +# define ASN1_F_D2I_PRIVATEKEY 154 +# define ASN1_F_D2I_PUBLICKEY 155 +# define ASN1_F_DO_BUF 142 +# define ASN1_F_DO_CREATE 124 +# define ASN1_F_DO_DUMP 125 +# define ASN1_F_DO_TCREATE 222 +# define ASN1_F_I2A_ASN1_OBJECT 126 +# define ASN1_F_I2D_ASN1_BIO_STREAM 211 +# define ASN1_F_I2D_ASN1_OBJECT 143 +# define ASN1_F_I2D_DSA_PUBKEY 161 +# define ASN1_F_I2D_EC_PUBKEY 181 +# define ASN1_F_I2D_PRIVATEKEY 163 +# define ASN1_F_I2D_PUBLICKEY 164 +# define ASN1_F_I2D_RSA_PUBKEY 165 +# define ASN1_F_LONG_C2I 166 +# define ASN1_F_NDEF_PREFIX 127 +# define ASN1_F_NDEF_SUFFIX 136 +# define ASN1_F_OID_MODULE_INIT 174 +# define ASN1_F_PARSE_TAGGING 182 +# define ASN1_F_PKCS5_PBE2_SET_IV 167 +# define ASN1_F_PKCS5_PBE2_SET_SCRYPT 231 +# define ASN1_F_PKCS5_PBE_SET 202 +# define ASN1_F_PKCS5_PBE_SET0_ALGOR 215 +# define ASN1_F_PKCS5_PBKDF2_SET 219 +# define ASN1_F_PKCS5_SCRYPT_SET 232 +# define ASN1_F_SMIME_READ_ASN1 212 +# define ASN1_F_SMIME_TEXT 213 +# define ASN1_F_STABLE_GET 138 +# define ASN1_F_STBL_MODULE_INIT 223 +# define ASN1_F_UINT32_C2I 105 +# define ASN1_F_UINT32_NEW 139 +# define ASN1_F_UINT64_C2I 112 +# define ASN1_F_UINT64_NEW 141 +# define ASN1_F_X509_CRL_ADD0_REVOKED 169 +# define ASN1_F_X509_INFO_NEW 170 +# define ASN1_F_X509_NAME_ENCODE 203 +# define ASN1_F_X509_NAME_EX_D2I 158 +# define ASN1_F_X509_NAME_EX_NEW 171 +# define ASN1_F_X509_PKEY_NEW 173 + +/* + * ASN1 reason codes. + */ +# define ASN1_R_ADDING_OBJECT 171 +# define ASN1_R_ASN1_PARSE_ERROR 203 +# define ASN1_R_ASN1_SIG_PARSE_ERROR 204 +# define ASN1_R_AUX_ERROR 100 +# define ASN1_R_BAD_OBJECT_HEADER 102 +# define ASN1_R_BAD_TEMPLATE 230 +# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214 +# define ASN1_R_BN_LIB 105 +# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106 +# define ASN1_R_BUFFER_TOO_SMALL 107 +# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108 +# define ASN1_R_CONTEXT_NOT_INITIALISED 217 +# define ASN1_R_DATA_IS_WRONG 109 +# define ASN1_R_DECODE_ERROR 110 +# define ASN1_R_DEPTH_EXCEEDED 174 +# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198 +# define ASN1_R_ENCODE_ERROR 112 +# define ASN1_R_ERROR_GETTING_TIME 173 +# define ASN1_R_ERROR_LOADING_SECTION 172 +# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114 +# define ASN1_R_EXPECTING_AN_INTEGER 115 +# define ASN1_R_EXPECTING_AN_OBJECT 116 +# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119 +# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120 +# define ASN1_R_FIELD_MISSING 121 +# define ASN1_R_FIRST_NUM_TOO_LARGE 122 +# define ASN1_R_HEADER_TOO_LONG 123 +# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175 +# define ASN1_R_ILLEGAL_BOOLEAN 176 +# define ASN1_R_ILLEGAL_CHARACTERS 124 +# define ASN1_R_ILLEGAL_FORMAT 177 +# define ASN1_R_ILLEGAL_HEX 178 +# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179 +# define ASN1_R_ILLEGAL_INTEGER 180 +# define ASN1_R_ILLEGAL_NEGATIVE_VALUE 226 +# define ASN1_R_ILLEGAL_NESTED_TAGGING 181 +# define ASN1_R_ILLEGAL_NULL 125 +# define ASN1_R_ILLEGAL_NULL_VALUE 182 +# define ASN1_R_ILLEGAL_OBJECT 183 +# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126 +# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170 +# define ASN1_R_ILLEGAL_PADDING 221 +# define ASN1_R_ILLEGAL_TAGGED_ANY 127 +# define ASN1_R_ILLEGAL_TIME_VALUE 184 +# define ASN1_R_ILLEGAL_ZERO_CONTENT 222 +# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185 +# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128 +# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220 +# define ASN1_R_INVALID_BMPSTRING_LENGTH 129 +# define ASN1_R_INVALID_DIGIT 130 +# define ASN1_R_INVALID_MIME_TYPE 205 +# define ASN1_R_INVALID_MODIFIER 186 +# define ASN1_R_INVALID_NUMBER 187 +# define ASN1_R_INVALID_OBJECT_ENCODING 216 +# define ASN1_R_INVALID_SCRYPT_PARAMETERS 227 +# define ASN1_R_INVALID_SEPARATOR 131 +# define ASN1_R_INVALID_STRING_TABLE_VALUE 218 +# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133 +# define ASN1_R_INVALID_UTF8STRING 134 +# define ASN1_R_INVALID_VALUE 219 +# define ASN1_R_LIST_ERROR 188 +# define ASN1_R_MIME_NO_CONTENT_TYPE 206 +# define ASN1_R_MIME_PARSE_ERROR 207 +# define ASN1_R_MIME_SIG_PARSE_ERROR 208 +# define ASN1_R_MISSING_EOC 137 +# define ASN1_R_MISSING_SECOND_NUMBER 138 +# define ASN1_R_MISSING_VALUE 189 +# define ASN1_R_MSTRING_NOT_UNIVERSAL 139 +# define ASN1_R_MSTRING_WRONG_TAG 140 +# define ASN1_R_NESTED_ASN1_STRING 197 +# define ASN1_R_NESTED_TOO_DEEP 201 +# define ASN1_R_NON_HEX_CHARACTERS 141 +# define ASN1_R_NOT_ASCII_FORMAT 190 +# define ASN1_R_NOT_ENOUGH_DATA 142 +# define ASN1_R_NO_CONTENT_TYPE 209 +# define ASN1_R_NO_MATCHING_CHOICE_TYPE 143 +# define ASN1_R_NO_MULTIPART_BODY_FAILURE 210 +# define ASN1_R_NO_MULTIPART_BOUNDARY 211 +# define ASN1_R_NO_SIG_CONTENT_TYPE 212 +# define ASN1_R_NULL_IS_WRONG_LENGTH 144 +# define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191 +# define ASN1_R_ODD_NUMBER_OF_CHARS 145 +# define ASN1_R_SECOND_NUMBER_TOO_LARGE 147 +# define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148 +# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149 +# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192 +# define ASN1_R_SHORT_LINE 150 +# define ASN1_R_SIG_INVALID_MIME_TYPE 213 +# define ASN1_R_STREAMING_NOT_SUPPORTED 202 +# define ASN1_R_STRING_TOO_LONG 151 +# define ASN1_R_STRING_TOO_SHORT 152 +# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154 +# define ASN1_R_TIME_NOT_ASCII_FORMAT 193 +# define ASN1_R_TOO_LARGE 223 +# define ASN1_R_TOO_LONG 155 +# define ASN1_R_TOO_SMALL 224 +# define ASN1_R_TYPE_NOT_CONSTRUCTED 156 +# define ASN1_R_TYPE_NOT_PRIMITIVE 195 +# define ASN1_R_UNEXPECTED_EOC 159 +# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215 +# define ASN1_R_UNKNOWN_FORMAT 160 +# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161 +# define ASN1_R_UNKNOWN_OBJECT_TYPE 162 +# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163 +# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199 +# define ASN1_R_UNKNOWN_TAG 194 +# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164 +# define ASN1_R_UNSUPPORTED_CIPHER 228 +# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167 +# define ASN1_R_UNSUPPORTED_TYPE 196 +# define ASN1_R_WRONG_INTEGER_TYPE 225 +# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +# define ASN1_R_WRONG_TAG 168 + +#endif diff --git a/openSSL/win64/include/openssl/asn1t.h b/openSSL/win64/include/openssl/asn1t.h new file mode 100644 index 0000000..a450ba0 --- /dev/null +++ b/openSSL/win64/include/openssl/asn1t.h @@ -0,0 +1,945 @@ +/* + * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1T_H +# define HEADER_ASN1T_H + +# include +# include +# include + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +/* ASN1 template defines, structures and functions */ + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */ +# define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)(iptr)) + +/* Macros for start and end of ASN1_ITEM definition */ + +# define ASN1_ITEM_start(itname) \ + const ASN1_ITEM itname##_it = { + +# define static_ASN1_ITEM_start(itname) \ + static const ASN1_ITEM itname##_it = { + +# define ASN1_ITEM_end(itname) \ + }; + +# else + +/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */ +# define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)((iptr)())) + +/* Macros for start and end of ASN1_ITEM definition */ + +# define ASN1_ITEM_start(itname) \ + const ASN1_ITEM * itname##_it(void) \ + { \ + static const ASN1_ITEM local_it = { + +# define static_ASN1_ITEM_start(itname) \ + static ASN1_ITEM_start(itname) + +# define ASN1_ITEM_end(itname) \ + }; \ + return &local_it; \ + } + +# endif + +/* Macros to aid ASN1 template writing */ + +# define ASN1_ITEM_TEMPLATE(tname) \ + static const ASN1_TEMPLATE tname##_item_tt + +# define ASN1_ITEM_TEMPLATE_END(tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_PRIMITIVE,\ + -1,\ + &tname##_item_tt,\ + 0,\ + NULL,\ + 0,\ + #tname \ + ASN1_ITEM_end(tname) +# define static_ASN1_ITEM_TEMPLATE_END(tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_PRIMITIVE,\ + -1,\ + &tname##_item_tt,\ + 0,\ + NULL,\ + 0,\ + #tname \ + ASN1_ITEM_end(tname) + +/* This is a ASN1 type which just embeds a template */ + +/*- + * This pair helps declare a SEQUENCE. We can do: + * + * ASN1_SEQUENCE(stname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END(stname) + * + * This will produce an ASN1_ITEM called stname_it + * for a structure called stname. + * + * If you want the same structure but a different + * name then use: + * + * ASN1_SEQUENCE(itname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END_name(stname, itname) + * + * This will create an item called itname_it using + * a structure called stname. + */ + +# define ASN1_SEQUENCE(tname) \ + static const ASN1_TEMPLATE tname##_seq_tt[] + +# define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname) + +# define static_ASN1_SEQUENCE_END(stname) static_ASN1_SEQUENCE_END_name(stname, stname) + +# define ASN1_SEQUENCE_END_name(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #tname \ + ASN1_ITEM_end(tname) + +# define static_ASN1_SEQUENCE_END_name(stname, tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_NDEF_SEQUENCE(tname) \ + ASN1_SEQUENCE(tname) + +# define ASN1_NDEF_SEQUENCE_cb(tname, cb) \ + ASN1_SEQUENCE_cb(tname, cb) + +# define ASN1_SEQUENCE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_BROKEN_SEQUENCE(tname) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_BROKEN, 0, 0, 0, 0}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_SEQUENCE_ref(tname, cb) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), offsetof(tname, lock), cb, 0}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_SEQUENCE_enc(tname, enc, cb) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc)}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_NDEF_SEQUENCE_END(tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(tname),\ + #tname \ + ASN1_ITEM_end(tname) +# define static_ASN1_NDEF_SEQUENCE_END(tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(tname),\ + #tname \ + ASN1_ITEM_end(tname) + +# define ASN1_BROKEN_SEQUENCE_END(stname) ASN1_SEQUENCE_END_ref(stname, stname) +# define static_ASN1_BROKEN_SEQUENCE_END(stname) \ + static_ASN1_SEQUENCE_END_ref(stname, stname) + +# define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) + +# define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) +# define static_ASN1_SEQUENCE_END_cb(stname, tname) static_ASN1_SEQUENCE_END_ref(stname, tname) + +# define ASN1_SEQUENCE_END_ref(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #tname \ + ASN1_ITEM_end(tname) +# define static_ASN1_SEQUENCE_END_ref(stname, tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +/*- + * This pair helps declare a CHOICE type. We can do: + * + * ASN1_CHOICE(chname) = { + * ... CHOICE options ... + * ASN1_CHOICE_END(chname) + * + * This will produce an ASN1_ITEM called chname_it + * for a structure called chname. The structure + * definition must look like this: + * typedef struct { + * int type; + * union { + * ASN1_SOMETHING *opt1; + * ASN1_SOMEOTHER *opt2; + * } value; + * } chname; + * + * the name of the selector must be 'type'. + * to use an alternative selector name use the + * ASN1_CHOICE_END_selector() version. + */ + +# define ASN1_CHOICE(tname) \ + static const ASN1_TEMPLATE tname##_ch_tt[] + +# define ASN1_CHOICE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0}; \ + ASN1_CHOICE(tname) + +# define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname) + +# define static_ASN1_CHOICE_END(stname) static_ASN1_CHOICE_END_name(stname, stname) + +# define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type) + +# define static_ASN1_CHOICE_END_name(stname, tname) static_ASN1_CHOICE_END_selector(stname, tname, type) + +# define ASN1_CHOICE_END_selector(stname, tname, selname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE,\ + offsetof(stname,selname) ,\ + tname##_ch_tt,\ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define static_ASN1_CHOICE_END_selector(stname, tname, selname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE,\ + offsetof(stname,selname) ,\ + tname##_ch_tt,\ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_CHOICE_END_cb(stname, tname, selname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_CHOICE,\ + offsetof(stname,selname) ,\ + tname##_ch_tt,\ + sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +/* This helps with the template wrapper form of ASN1_ITEM */ + +# define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type) { \ + (flags), (tag), 0,\ + #name, ASN1_ITEM_ref(type) } + +/* These help with SEQUENCE or CHOICE components */ + +/* used to declare other types */ + +# define ASN1_EX_TYPE(flags, tag, stname, field, type) { \ + (flags), (tag), offsetof(stname, field),\ + #field, ASN1_ITEM_ref(type) } + +/* implicit and explicit helper macros */ + +# define ASN1_IMP_EX(stname, field, type, tag, ex) \ + ASN1_EX_TYPE(ASN1_TFLG_IMPLICIT | (ex), tag, stname, field, type) + +# define ASN1_EXP_EX(stname, field, type, tag, ex) \ + ASN1_EX_TYPE(ASN1_TFLG_EXPLICIT | (ex), tag, stname, field, type) + +/* Any defined by macros: the field used is in the table itself */ + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION +# define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) } +# define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) } +# else +# define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, tblname##_adb } +# define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, tblname##_adb } +# endif +/* Plain simple type */ +# define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0,0, stname, field, type) +/* Embedded simple type */ +# define ASN1_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_EMBED,0, stname, field, type) + +/* OPTIONAL simple type */ +# define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type) +# define ASN1_OPT_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED, 0, stname, field, type) + +/* IMPLICIT tagged simple type */ +# define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0) +# define ASN1_IMP_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_EMBED) + +/* IMPLICIT tagged OPTIONAL simple type */ +# define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) +# define ASN1_IMP_OPT_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED) + +/* Same as above but EXPLICIT */ + +# define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0) +# define ASN1_EXP_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_EMBED) +# define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL) +# define ASN1_EXP_OPT_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED) + +/* SEQUENCE OF type */ +# define ASN1_SEQUENCE_OF(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, stname, field, type) + +/* OPTIONAL SEQUENCE OF */ +# define ASN1_SEQUENCE_OF_OPT(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type) + +/* Same as above but for SET OF */ + +# define ASN1_SET_OF(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SET_OF, 0, stname, field, type) + +# define ASN1_SET_OF_OPT(stname, field, type) \ + ASN1_EX_TYPE(ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type) + +/* Finally compound types of SEQUENCE, SET, IMPLICIT, EXPLICIT and OPTIONAL */ + +# define ASN1_IMP_SET_OF(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF) + +# define ASN1_EXP_SET_OF(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF) + +# define ASN1_IMP_SET_OF_OPT(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL) + +# define ASN1_EXP_SET_OF_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL) + +# define ASN1_IMP_SEQUENCE_OF(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF) + +# define ASN1_IMP_SEQUENCE_OF_OPT(stname, field, type, tag) \ + ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL) + +# define ASN1_EXP_SEQUENCE_OF(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF) + +# define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL) + +/* EXPLICIT using indefinite length constructed form */ +# define ASN1_NDEF_EXP(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF) + +/* EXPLICIT OPTIONAL using indefinite length constructed form */ +# define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \ + ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_NDEF) + +/* Macros for the ASN1_ADB structure */ + +# define ASN1_ADB(name) \ + static const ASN1_ADB_TABLE name##_adbtbl[] + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +# define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \ + ;\ + static const ASN1_ADB name##_adb = {\ + flags,\ + offsetof(name, field),\ + adb_cb,\ + name##_adbtbl,\ + sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\ + def,\ + none\ + } + +# else + +# define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \ + ;\ + static const ASN1_ITEM *name##_adb(void) \ + { \ + static const ASN1_ADB internal_adb = \ + {\ + flags,\ + offsetof(name, field),\ + adb_cb,\ + name##_adbtbl,\ + sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\ + def,\ + none\ + }; \ + return (const ASN1_ITEM *) &internal_adb; \ + } \ + void dummy_function(void) + +# endif + +# define ADB_ENTRY(val, template) {val, template} + +# define ASN1_ADB_TEMPLATE(name) \ + static const ASN1_TEMPLATE name##_tt + +/* + * This is the ASN1 template structure that defines a wrapper round the + * actual type. It determines the actual position of the field in the value + * structure, various flags such as OPTIONAL and the field name. + */ + +struct ASN1_TEMPLATE_st { + unsigned long flags; /* Various flags */ + long tag; /* tag, not used if no tagging */ + unsigned long offset; /* Offset of this field in structure */ + const char *field_name; /* Field name */ + ASN1_ITEM_EXP *item; /* Relevant ASN1_ITEM or ASN1_ADB */ +}; + +/* Macro to extract ASN1_ITEM and ASN1_ADB pointer from ASN1_TEMPLATE */ + +# define ASN1_TEMPLATE_item(t) (t->item_ptr) +# define ASN1_TEMPLATE_adb(t) (t->item_ptr) + +typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE; +typedef struct ASN1_ADB_st ASN1_ADB; + +struct ASN1_ADB_st { + unsigned long flags; /* Various flags */ + unsigned long offset; /* Offset of selector field */ + int (*adb_cb)(long *psel); /* Application callback */ + const ASN1_ADB_TABLE *tbl; /* Table of possible types */ + long tblcount; /* Number of entries in tbl */ + const ASN1_TEMPLATE *default_tt; /* Type to use if no match */ + const ASN1_TEMPLATE *null_tt; /* Type to use if selector is NULL */ +}; + +struct ASN1_ADB_TABLE_st { + long value; /* NID for an object or value for an int */ + const ASN1_TEMPLATE tt; /* item for this value */ +}; + +/* template flags */ + +/* Field is optional */ +# define ASN1_TFLG_OPTIONAL (0x1) + +/* Field is a SET OF */ +# define ASN1_TFLG_SET_OF (0x1 << 1) + +/* Field is a SEQUENCE OF */ +# define ASN1_TFLG_SEQUENCE_OF (0x2 << 1) + +/* + * Special case: this refers to a SET OF that will be sorted into DER order + * when encoded *and* the corresponding STACK will be modified to match the + * new order. + */ +# define ASN1_TFLG_SET_ORDER (0x3 << 1) + +/* Mask for SET OF or SEQUENCE OF */ +# define ASN1_TFLG_SK_MASK (0x3 << 1) + +/* + * These flags mean the tag should be taken from the tag field. If EXPLICIT + * then the underlying type is used for the inner tag. + */ + +/* IMPLICIT tagging */ +# define ASN1_TFLG_IMPTAG (0x1 << 3) + +/* EXPLICIT tagging, inner tag from underlying type */ +# define ASN1_TFLG_EXPTAG (0x2 << 3) + +# define ASN1_TFLG_TAG_MASK (0x3 << 3) + +/* context specific IMPLICIT */ +# define ASN1_TFLG_IMPLICIT (ASN1_TFLG_IMPTAG|ASN1_TFLG_CONTEXT) + +/* context specific EXPLICIT */ +# define ASN1_TFLG_EXPLICIT (ASN1_TFLG_EXPTAG|ASN1_TFLG_CONTEXT) + +/* + * If tagging is in force these determine the type of tag to use. Otherwise + * the tag is determined by the underlying type. These values reflect the + * actual octet format. + */ + +/* Universal tag */ +# define ASN1_TFLG_UNIVERSAL (0x0<<6) +/* Application tag */ +# define ASN1_TFLG_APPLICATION (0x1<<6) +/* Context specific tag */ +# define ASN1_TFLG_CONTEXT (0x2<<6) +/* Private tag */ +# define ASN1_TFLG_PRIVATE (0x3<<6) + +# define ASN1_TFLG_TAG_CLASS (0x3<<6) + +/* + * These are for ANY DEFINED BY type. In this case the 'item' field points to + * an ASN1_ADB structure which contains a table of values to decode the + * relevant type + */ + +# define ASN1_TFLG_ADB_MASK (0x3<<8) + +# define ASN1_TFLG_ADB_OID (0x1<<8) + +# define ASN1_TFLG_ADB_INT (0x1<<9) + +/* + * This flag when present in a SEQUENCE OF, SET OF or EXPLICIT causes + * indefinite length constructed encoding to be used if required. + */ + +# define ASN1_TFLG_NDEF (0x1<<11) + +/* Field is embedded and not a pointer */ +# define ASN1_TFLG_EMBED (0x1 << 12) + +/* This is the actual ASN1 item itself */ + +struct ASN1_ITEM_st { + char itype; /* The item type, primitive, SEQUENCE, CHOICE + * or extern */ + long utype; /* underlying type */ + const ASN1_TEMPLATE *templates; /* If SEQUENCE or CHOICE this contains + * the contents */ + long tcount; /* Number of templates if SEQUENCE or CHOICE */ + const void *funcs; /* functions that handle this type */ + long size; /* Structure size (usually) */ + const char *sname; /* Structure name */ +}; + +/*- + * These are values for the itype field and + * determine how the type is interpreted. + * + * For PRIMITIVE types the underlying type + * determines the behaviour if items is NULL. + * + * Otherwise templates must contain a single + * template and the type is treated in the + * same way as the type specified in the template. + * + * For SEQUENCE types the templates field points + * to the members, the size field is the + * structure size. + * + * For CHOICE types the templates field points + * to each possible member (typically a union) + * and the 'size' field is the offset of the + * selector. + * + * The 'funcs' field is used for application + * specific functions. + * + * The EXTERN type uses a new style d2i/i2d. + * The new style should be used where possible + * because it avoids things like the d2i IMPLICIT + * hack. + * + * MSTRING is a multiple string type, it is used + * for a CHOICE of character strings where the + * actual strings all occupy an ASN1_STRING + * structure. In this case the 'utype' field + * has a special meaning, it is used as a mask + * of acceptable types using the B_ASN1 constants. + * + * NDEF_SEQUENCE is the same as SEQUENCE except + * that it will use indefinite length constructed + * encoding if requested. + * + */ + +# define ASN1_ITYPE_PRIMITIVE 0x0 + +# define ASN1_ITYPE_SEQUENCE 0x1 + +# define ASN1_ITYPE_CHOICE 0x2 + +# define ASN1_ITYPE_EXTERN 0x4 + +# define ASN1_ITYPE_MSTRING 0x5 + +# define ASN1_ITYPE_NDEF_SEQUENCE 0x6 + +/* + * Cache for ASN1 tag and length, so we don't keep re-reading it for things + * like CHOICE + */ + +struct ASN1_TLC_st { + char valid; /* Values below are valid */ + int ret; /* return value */ + long plen; /* length */ + int ptag; /* class value */ + int pclass; /* class value */ + int hdrlen; /* header length */ +}; + +/* Typedefs for ASN1 function pointers */ +typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx); + +typedef int ASN1_ex_i2d(ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); +typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it); +typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it); + +typedef int ASN1_ex_print_func(BIO *out, ASN1_VALUE **pval, + int indent, const char *fname, + const ASN1_PCTX *pctx); + +typedef int ASN1_primitive_i2c(ASN1_VALUE **pval, unsigned char *cont, + int *putype, const ASN1_ITEM *it); +typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont, + int len, int utype, char *free_cont, + const ASN1_ITEM *it); +typedef int ASN1_primitive_print(BIO *out, ASN1_VALUE **pval, + const ASN1_ITEM *it, int indent, + const ASN1_PCTX *pctx); + +typedef struct ASN1_EXTERN_FUNCS_st { + void *app_data; + ASN1_ex_new_func *asn1_ex_new; + ASN1_ex_free_func *asn1_ex_free; + ASN1_ex_free_func *asn1_ex_clear; + ASN1_ex_d2i *asn1_ex_d2i; + ASN1_ex_i2d *asn1_ex_i2d; + ASN1_ex_print_func *asn1_ex_print; +} ASN1_EXTERN_FUNCS; + +typedef struct ASN1_PRIMITIVE_FUNCS_st { + void *app_data; + unsigned long flags; + ASN1_ex_new_func *prim_new; + ASN1_ex_free_func *prim_free; + ASN1_ex_free_func *prim_clear; + ASN1_primitive_c2i *prim_c2i; + ASN1_primitive_i2c *prim_i2c; + ASN1_primitive_print *prim_print; +} ASN1_PRIMITIVE_FUNCS; + +/* + * This is the ASN1_AUX structure: it handles various miscellaneous + * requirements. For example the use of reference counts and an informational + * callback. The "informational callback" is called at various points during + * the ASN1 encoding and decoding. It can be used to provide minor + * customisation of the structures used. This is most useful where the + * supplied routines *almost* do the right thing but need some extra help at + * a few points. If the callback returns zero then it is assumed a fatal + * error has occurred and the main operation should be abandoned. If major + * changes in the default behaviour are required then an external type is + * more appropriate. + */ + +typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it, + void *exarg); + +typedef struct ASN1_AUX_st { + void *app_data; + int flags; + int ref_offset; /* Offset of reference value */ + int ref_lock; /* Lock type to use */ + ASN1_aux_cb *asn1_cb; + int enc_offset; /* Offset of ASN1_ENCODING structure */ +} ASN1_AUX; + +/* For print related callbacks exarg points to this structure */ +typedef struct ASN1_PRINT_ARG_st { + BIO *out; + int indent; + const ASN1_PCTX *pctx; +} ASN1_PRINT_ARG; + +/* For streaming related callbacks exarg points to this structure */ +typedef struct ASN1_STREAM_ARG_st { + /* BIO to stream through */ + BIO *out; + /* BIO with filters appended */ + BIO *ndef_bio; + /* Streaming I/O boundary */ + unsigned char **boundary; +} ASN1_STREAM_ARG; + +/* Flags in ASN1_AUX */ + +/* Use a reference count */ +# define ASN1_AFLG_REFCOUNT 1 +/* Save the encoding of structure (useful for signatures) */ +# define ASN1_AFLG_ENCODING 2 +/* The Sequence length is invalid */ +# define ASN1_AFLG_BROKEN 4 + +/* operation values for asn1_cb */ + +# define ASN1_OP_NEW_PRE 0 +# define ASN1_OP_NEW_POST 1 +# define ASN1_OP_FREE_PRE 2 +# define ASN1_OP_FREE_POST 3 +# define ASN1_OP_D2I_PRE 4 +# define ASN1_OP_D2I_POST 5 +# define ASN1_OP_I2D_PRE 6 +# define ASN1_OP_I2D_POST 7 +# define ASN1_OP_PRINT_PRE 8 +# define ASN1_OP_PRINT_POST 9 +# define ASN1_OP_STREAM_PRE 10 +# define ASN1_OP_STREAM_POST 11 +# define ASN1_OP_DETACHED_PRE 12 +# define ASN1_OP_DETACHED_POST 13 + +/* Macro to implement a primitive type */ +# define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0) +# define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \ + ASN1_ITEM_start(itname) \ + ASN1_ITYPE_PRIMITIVE, V_##vname, NULL, 0, NULL, ex, #itname \ + ASN1_ITEM_end(itname) + +/* Macro to implement a multi string type */ +# define IMPLEMENT_ASN1_MSTRING(itname, mask) \ + ASN1_ITEM_start(itname) \ + ASN1_ITYPE_MSTRING, mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname \ + ASN1_ITEM_end(itname) + +# define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \ + ASN1_ITEM_start(sname) \ + ASN1_ITYPE_EXTERN, \ + tag, \ + NULL, \ + 0, \ + &fptrs, \ + 0, \ + #sname \ + ASN1_ITEM_end(sname) + +/* Macro to implement standard functions in terms of ASN1_ITEM structures */ + +# define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname) + +# define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, itname) + +# define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \ + IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname) + +# define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname) + +# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname) + +# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \ + pre stname *fname##_new(void) \ + { \ + return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \ + } \ + pre void fname##_free(stname *a) \ + { \ + ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \ + } + +# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \ + stname *fname##_new(void) \ + { \ + return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \ + } \ + void fname##_free(stname *a) \ + { \ + ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \ + } + +# define IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) + +# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \ + stname *d2i_##fname(stname **a, const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\ + } \ + int i2d_##fname(stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ + } + +# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \ + int i2d_##stname##_NDEF(stname *a, unsigned char **out) \ + { \ + return ASN1_item_ndef_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname));\ + } + +# define IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(stname) \ + static stname *d2i_##stname(stname **a, \ + const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, \ + ASN1_ITEM_rptr(stname)); \ + } \ + static int i2d_##stname(stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((ASN1_VALUE *)a, out, \ + ASN1_ITEM_rptr(stname)); \ + } + +/* + * This includes evil casts to remove const: they will go away when full ASN1 + * constification is done. + */ +# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ + stname *d2i_##fname(stname **a, const unsigned char **in, long len) \ + { \ + return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\ + } \ + int i2d_##fname(const stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ + } + +# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \ + stname * stname##_dup(stname *x) \ + { \ + return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \ + } + +# define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \ + IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname) + +# define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \ + int fname##_print_ctx(BIO *out, stname *x, int indent, \ + const ASN1_PCTX *pctx) \ + { \ + return ASN1_item_print(out, (ASN1_VALUE *)x, indent, \ + ASN1_ITEM_rptr(itname), pctx); \ + } + +# define IMPLEMENT_ASN1_FUNCTIONS_const(name) \ + IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name) + +# define IMPLEMENT_ASN1_FUNCTIONS_const_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) + +/* external definitions for primitive types */ + +DECLARE_ASN1_ITEM(ASN1_BOOLEAN) +DECLARE_ASN1_ITEM(ASN1_TBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_FBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_SEQUENCE) +DECLARE_ASN1_ITEM(CBIGNUM) +DECLARE_ASN1_ITEM(BIGNUM) +DECLARE_ASN1_ITEM(INT32) +DECLARE_ASN1_ITEM(ZINT32) +DECLARE_ASN1_ITEM(UINT32) +DECLARE_ASN1_ITEM(ZUINT32) +DECLARE_ASN1_ITEM(INT64) +DECLARE_ASN1_ITEM(ZINT64) +DECLARE_ASN1_ITEM(UINT64) +DECLARE_ASN1_ITEM(ZUINT64) + +# if OPENSSL_API_COMPAT < 0x10200000L +/* + * LONG and ZLONG are strongly discouraged for use as stored data, as the + * underlying C type (long) differs in size depending on the architecture. + * They are designed with 32-bit longs in mind. + */ +DECLARE_ASN1_ITEM(LONG) +DECLARE_ASN1_ITEM(ZLONG) +# endif + +DEFINE_STACK_OF(ASN1_VALUE) + +/* Functions used internally by the ASN1 code */ + +int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it); +void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it); + +int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx); + +int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/win64/include/openssl/async.h b/openSSL/win64/include/openssl/async.h new file mode 100644 index 0000000..7052b89 --- /dev/null +++ b/openSSL/win64/include/openssl/async.h @@ -0,0 +1,76 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifndef HEADER_ASYNC_H +# define HEADER_ASYNC_H + +#if defined(_WIN32) +# if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include to use this */ +#define OSSL_ASYNC_FD HANDLE +#define OSSL_BAD_ASYNC_FD INVALID_HANDLE_VALUE +# endif +#else +#define OSSL_ASYNC_FD int +#define OSSL_BAD_ASYNC_FD -1 +#endif +# include + + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct async_job_st ASYNC_JOB; +typedef struct async_wait_ctx_st ASYNC_WAIT_CTX; + +#define ASYNC_ERR 0 +#define ASYNC_NO_JOBS 1 +#define ASYNC_PAUSE 2 +#define ASYNC_FINISH 3 + +int ASYNC_init_thread(size_t max_size, size_t init_size); +void ASYNC_cleanup_thread(void); + +#ifdef OSSL_ASYNC_FD +ASYNC_WAIT_CTX *ASYNC_WAIT_CTX_new(void); +void ASYNC_WAIT_CTX_free(ASYNC_WAIT_CTX *ctx); +int ASYNC_WAIT_CTX_set_wait_fd(ASYNC_WAIT_CTX *ctx, const void *key, + OSSL_ASYNC_FD fd, + void *custom_data, + void (*cleanup)(ASYNC_WAIT_CTX *, const void *, + OSSL_ASYNC_FD, void *)); +int ASYNC_WAIT_CTX_get_fd(ASYNC_WAIT_CTX *ctx, const void *key, + OSSL_ASYNC_FD *fd, void **custom_data); +int ASYNC_WAIT_CTX_get_all_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *fd, + size_t *numfds); +int ASYNC_WAIT_CTX_get_changed_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key); +#endif + +int ASYNC_is_capable(void); + +int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret, + int (*func)(void *), void *args, size_t size); +int ASYNC_pause_job(void); + +ASYNC_JOB *ASYNC_get_current_job(void); +ASYNC_WAIT_CTX *ASYNC_get_wait_ctx(ASYNC_JOB *job); +void ASYNC_block_pause(void); +void ASYNC_unblock_pause(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/asyncerr.h b/openSSL/win64/include/openssl/asyncerr.h new file mode 100644 index 0000000..91afbbb --- /dev/null +++ b/openSSL/win64/include/openssl/asyncerr.h @@ -0,0 +1,42 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASYNCERR_H +# define HEADER_ASYNCERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ASYNC_strings(void); + +/* + * ASYNC function codes. + */ +# define ASYNC_F_ASYNC_CTX_NEW 100 +# define ASYNC_F_ASYNC_INIT_THREAD 101 +# define ASYNC_F_ASYNC_JOB_NEW 102 +# define ASYNC_F_ASYNC_PAUSE_JOB 103 +# define ASYNC_F_ASYNC_START_FUNC 104 +# define ASYNC_F_ASYNC_START_JOB 105 +# define ASYNC_F_ASYNC_WAIT_CTX_SET_WAIT_FD 106 + +/* + * ASYNC reason codes. + */ +# define ASYNC_R_FAILED_TO_SET_POOL 101 +# define ASYNC_R_FAILED_TO_SWAP_CONTEXT 102 +# define ASYNC_R_INIT_FAILED 105 +# define ASYNC_R_INVALID_POOL_SIZE 103 + +#endif diff --git a/openSSL/win64/include/openssl/bio.h b/openSSL/win64/include/openssl/bio.h new file mode 100644 index 0000000..ae559a5 --- /dev/null +++ b/openSSL/win64/include/openssl/bio.h @@ -0,0 +1,801 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BIO_H +# define HEADER_BIO_H + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* There are the classes of BIOs */ +# define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */ +# define BIO_TYPE_FILTER 0x0200 +# define BIO_TYPE_SOURCE_SINK 0x0400 + +/* These are the 'types' of BIOs */ +# define BIO_TYPE_NONE 0 +# define BIO_TYPE_MEM ( 1|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_FILE ( 2|BIO_TYPE_SOURCE_SINK) + +# define BIO_TYPE_FD ( 4|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_SOCKET ( 5|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_NULL ( 6|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_SSL ( 7|BIO_TYPE_FILTER) +# define BIO_TYPE_MD ( 8|BIO_TYPE_FILTER) +# define BIO_TYPE_BUFFER ( 9|BIO_TYPE_FILTER) +# define BIO_TYPE_CIPHER (10|BIO_TYPE_FILTER) +# define BIO_TYPE_BASE64 (11|BIO_TYPE_FILTER) +# define BIO_TYPE_CONNECT (12|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_ACCEPT (13|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) + +# define BIO_TYPE_NBIO_TEST (16|BIO_TYPE_FILTER)/* server proxy BIO */ +# define BIO_TYPE_NULL_FILTER (17|BIO_TYPE_FILTER) +# define BIO_TYPE_BIO (19|BIO_TYPE_SOURCE_SINK)/* half a BIO pair */ +# define BIO_TYPE_LINEBUFFER (20|BIO_TYPE_FILTER) +# define BIO_TYPE_DGRAM (21|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_ASN1 (22|BIO_TYPE_FILTER) +# define BIO_TYPE_COMP (23|BIO_TYPE_FILTER) +# ifndef OPENSSL_NO_SCTP +# define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# endif + +#define BIO_TYPE_START 128 + +/* + * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. + * BIO_set_fp(in,stdin,BIO_NOCLOSE); + */ +# define BIO_NOCLOSE 0x00 +# define BIO_CLOSE 0x01 + +/* + * These are used in the following macros and are passed to BIO_ctrl() + */ +# define BIO_CTRL_RESET 1/* opt - rewind/zero etc */ +# define BIO_CTRL_EOF 2/* opt - are we at the eof */ +# define BIO_CTRL_INFO 3/* opt - extra tit-bits */ +# define BIO_CTRL_SET 4/* man - set the 'IO' type */ +# define BIO_CTRL_GET 5/* man - get the 'IO' type */ +# define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */ +# define BIO_CTRL_POP 7/* opt - internal, used to signify change */ +# define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */ +# define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */ +# define BIO_CTRL_PENDING 10/* opt - is their more data buffered */ +# define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */ +# define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */ +# define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */ +# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */ +# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */ + +# define BIO_CTRL_PEEK 29/* BIO_f_buffer special */ +# define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */ + +/* dgram BIO stuff */ +# define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */ +# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected + * socket to be passed in */ +# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */ +# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */ + +# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation tiemd out */ + +/* #ifdef IP_MTU_DISCOVER */ +# define BIO_CTRL_DGRAM_MTU_DISCOVER 39/* set DF bit on egress packets */ +/* #endif */ + +# define BIO_CTRL_DGRAM_QUERY_MTU 40/* as kernel for current MTU */ +# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47 +# define BIO_CTRL_DGRAM_GET_MTU 41/* get cached value for MTU */ +# define BIO_CTRL_DGRAM_SET_MTU 42/* set cached value for MTU. + * want to use this if asking + * the kernel fails */ + +# define BIO_CTRL_DGRAM_MTU_EXCEEDED 43/* check whether the MTU was + * exceed in the previous write + * operation */ + +# define BIO_CTRL_DGRAM_GET_PEER 46 +# define BIO_CTRL_DGRAM_SET_PEER 44/* Destination for the data */ + +# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45/* Next DTLS handshake timeout + * to adjust socket timeouts */ +# define BIO_CTRL_DGRAM_SET_DONT_FRAG 48 + +# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49 + +/* Deliberately outside of OPENSSL_NO_SCTP - used in bss_dgram.c */ +# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 +# ifndef OPENSSL_NO_SCTP +/* SCTP stuff */ +# define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51 +# define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52 +# define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53 +# define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60 +# define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61 +# define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62 +# define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63 +# define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64 +# define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65 +# define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70 +# endif + +# define BIO_CTRL_DGRAM_SET_PEEK_MODE 71 + +/* modifiers */ +# define BIO_FP_READ 0x02 +# define BIO_FP_WRITE 0x04 +# define BIO_FP_APPEND 0x08 +# define BIO_FP_TEXT 0x10 + +# define BIO_FLAGS_READ 0x01 +# define BIO_FLAGS_WRITE 0x02 +# define BIO_FLAGS_IO_SPECIAL 0x04 +# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL) +# define BIO_FLAGS_SHOULD_RETRY 0x08 +# ifndef BIO_FLAGS_UPLINK +/* + * "UPLINK" flag denotes file descriptors provided by application. It + * defaults to 0, as most platforms don't require UPLINK interface. + */ +# define BIO_FLAGS_UPLINK 0 +# endif + +# define BIO_FLAGS_BASE64_NO_NL 0x100 + +/* + * This is used with memory BIOs: + * BIO_FLAGS_MEM_RDONLY means we shouldn't free up or change the data in any way; + * BIO_FLAGS_NONCLEAR_RST means we shouldn't clear data on reset. + */ +# define BIO_FLAGS_MEM_RDONLY 0x200 +# define BIO_FLAGS_NONCLEAR_RST 0x400 +# define BIO_FLAGS_IN_EOF 0x800 + +typedef union bio_addr_st BIO_ADDR; +typedef struct bio_addrinfo_st BIO_ADDRINFO; + +int BIO_get_new_index(void); +void BIO_set_flags(BIO *b, int flags); +int BIO_test_flags(const BIO *b, int flags); +void BIO_clear_flags(BIO *b, int flags); + +# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0)) +# define BIO_set_retry_special(b) \ + BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_read(b) \ + BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_write(b) \ + BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY)) + +/* These are normally used internally in BIOs */ +# define BIO_clear_retry_flags(b) \ + BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_get_retry_flags(b) \ + BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) + +/* These should be used by the application to tell why we should retry */ +# define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ) +# define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE) +# define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL) +# define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS) +# define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY) + +/* + * The next three are used in conjunction with the BIO_should_io_special() + * condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int + * *reason); will walk the BIO stack and return the 'reason' for the special + * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return + * the code. + */ +/* + * Returned from the SSL bio when the certificate retrieval code had an error + */ +# define BIO_RR_SSL_X509_LOOKUP 0x01 +/* Returned from the connect BIO when a connect would have blocked */ +# define BIO_RR_CONNECT 0x02 +/* Returned from the accept BIO when an accept would have blocked */ +# define BIO_RR_ACCEPT 0x03 + +/* These are passed by the BIO callback */ +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 + +/* + * The callback is called before and after the underling operation, The + * BIO_CB_RETURN flag indicates if it is after the call + */ +# define BIO_CB_RETURN 0x80 +# define BIO_CB_return(a) ((a)|BIO_CB_RETURN) +# define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN)) +# define BIO_cb_post(a) ((a)&BIO_CB_RETURN) + +typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, + long argl, long ret); +typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp, + size_t len, int argi, + long argl, int ret, size_t *processed); +BIO_callback_fn BIO_get_callback(const BIO *b); +void BIO_set_callback(BIO *b, BIO_callback_fn callback); + +BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b); +void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); + +char *BIO_get_callback_arg(const BIO *b); +void BIO_set_callback_arg(BIO *b, char *arg); + +typedef struct bio_method_st BIO_METHOD; + +const char *BIO_method_name(const BIO *b); +int BIO_method_type(const BIO *b); + +typedef int BIO_info_cb(BIO *, int, int); +typedef BIO_info_cb bio_info_cb; /* backward compatibility */ + +DEFINE_STACK_OF(BIO) + +/* Prefix and suffix callback in ASN1 BIO */ +typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, + void *parg); + +# ifndef OPENSSL_NO_SCTP +/* SCTP parameter structs */ +struct bio_dgram_sctp_sndinfo { + uint16_t snd_sid; + uint16_t snd_flags; + uint32_t snd_ppid; + uint32_t snd_context; +}; + +struct bio_dgram_sctp_rcvinfo { + uint16_t rcv_sid; + uint16_t rcv_ssn; + uint16_t rcv_flags; + uint32_t rcv_ppid; + uint32_t rcv_tsn; + uint32_t rcv_cumtsn; + uint32_t rcv_context; +}; + +struct bio_dgram_sctp_prinfo { + uint16_t pr_policy; + uint32_t pr_value; +}; +# endif + +/* + * #define BIO_CONN_get_param_hostname BIO_ctrl + */ + +# define BIO_C_SET_CONNECT 100 +# define BIO_C_DO_STATE_MACHINE 101 +# define BIO_C_SET_NBIO 102 +/* # define BIO_C_SET_PROXY_PARAM 103 */ +# define BIO_C_SET_FD 104 +# define BIO_C_GET_FD 105 +# define BIO_C_SET_FILE_PTR 106 +# define BIO_C_GET_FILE_PTR 107 +# define BIO_C_SET_FILENAME 108 +# define BIO_C_SET_SSL 109 +# define BIO_C_GET_SSL 110 +# define BIO_C_SET_MD 111 +# define BIO_C_GET_MD 112 +# define BIO_C_GET_CIPHER_STATUS 113 +# define BIO_C_SET_BUF_MEM 114 +# define BIO_C_GET_BUF_MEM_PTR 115 +# define BIO_C_GET_BUFF_NUM_LINES 116 +# define BIO_C_SET_BUFF_SIZE 117 +# define BIO_C_SET_ACCEPT 118 +# define BIO_C_SSL_MODE 119 +# define BIO_C_GET_MD_CTX 120 +/* # define BIO_C_GET_PROXY_PARAM 121 */ +# define BIO_C_SET_BUFF_READ_DATA 122/* data to read first */ +# define BIO_C_GET_CONNECT 123 +# define BIO_C_GET_ACCEPT 124 +# define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125 +# define BIO_C_GET_SSL_NUM_RENEGOTIATES 126 +# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127 +# define BIO_C_FILE_SEEK 128 +# define BIO_C_GET_CIPHER_CTX 129 +# define BIO_C_SET_BUF_MEM_EOF_RETURN 130/* return end of input + * value */ +# define BIO_C_SET_BIND_MODE 131 +# define BIO_C_GET_BIND_MODE 132 +# define BIO_C_FILE_TELL 133 +# define BIO_C_GET_SOCKS 134 +# define BIO_C_SET_SOCKS 135 + +# define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */ +# define BIO_C_GET_WRITE_BUF_SIZE 137 +# define BIO_C_MAKE_BIO_PAIR 138 +# define BIO_C_DESTROY_BIO_PAIR 139 +# define BIO_C_GET_WRITE_GUARANTEE 140 +# define BIO_C_GET_READ_REQUEST 141 +# define BIO_C_SHUTDOWN_WR 142 +# define BIO_C_NREAD0 143 +# define BIO_C_NREAD 144 +# define BIO_C_NWRITE0 145 +# define BIO_C_NWRITE 146 +# define BIO_C_RESET_READ_REQUEST 147 +# define BIO_C_SET_MD_CTX 148 + +# define BIO_C_SET_PREFIX 149 +# define BIO_C_GET_PREFIX 150 +# define BIO_C_SET_SUFFIX 151 +# define BIO_C_GET_SUFFIX 152 + +# define BIO_C_SET_EX_ARG 153 +# define BIO_C_GET_EX_ARG 154 + +# define BIO_C_SET_CONNECT_MODE 155 + +# define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) +# define BIO_get_app_data(s) BIO_get_ex_data(s,0) + +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) + +# ifndef OPENSSL_NO_SOCK +/* IP families we support, for BIO_s_connect() and BIO_s_accept() */ +/* Note: the underlying operating system may not support some of them */ +# define BIO_FAMILY_IPV4 4 +# define BIO_FAMILY_IPV6 6 +# define BIO_FAMILY_IPANY 256 + +/* BIO_s_connect() */ +# define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0, \ + (char *)(name)) +# define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1, \ + (char *)(port)) +# define BIO_set_conn_address(b,addr) BIO_ctrl(b,BIO_C_SET_CONNECT,2, \ + (char *)(addr)) +# define BIO_set_conn_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_CONNECT,3,f) +# define BIO_get_conn_hostname(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0)) +# define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) +# define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) +# define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) + +/* BIO_s_accept() */ +# define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ + (char *)(name)) +# define BIO_set_accept_port(b,port) BIO_ctrl(b,BIO_C_SET_ACCEPT,1, \ + (char *)(port)) +# define BIO_get_accept_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0)) +# define BIO_get_accept_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,1)) +# define BIO_get_peer_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,2)) +# define BIO_get_peer_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,3)) +/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */ +# define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(n)?(void *)"a":NULL) +# define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,3, \ + (char *)(bio)) +# define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) +# define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) + +/* Aliases kept for backward compatibility */ +# define BIO_BIND_NORMAL 0 +# define BIO_BIND_REUSEADDR BIO_SOCK_REUSEADDR +# define BIO_BIND_REUSEADDR_IF_UNUSED BIO_SOCK_REUSEADDR +# define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL) +# define BIO_get_bind_mode(b) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL) + +/* BIO_s_accept() and BIO_s_connect() */ +# define BIO_do_connect(b) BIO_do_handshake(b) +# define BIO_do_accept(b) BIO_do_handshake(b) +# endif /* OPENSSL_NO_SOCK */ + +# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) + +/* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */ +# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) +# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)(c)) + +/* BIO_s_file() */ +# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)(fp)) +# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)(fpp)) + +/* BIO_s_fd() and BIO_s_file() */ +# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL) +# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL) + +/* + * name is cast to lose const, but might be better to route through a + * function so we can do it safely + */ +# ifdef CONST_STRICT +/* + * If you are wondering why this isn't defined, its because CONST_STRICT is + * purely a compile-time kludge to allow const to be checked. + */ +int BIO_read_filename(BIO *b, const char *name); +# else +# define BIO_read_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ,(char *)(name)) +# endif +# define BIO_write_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_WRITE,name) +# define BIO_append_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_APPEND,name) +# define BIO_rw_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name) + +/* + * WARNING WARNING, this ups the reference count on the read bio of the SSL + * structure. This is because the ssl read BIO is now pointed to by the + * next_bio field in the bio. So when you free the BIO, make sure you are + * doing a BIO_free_all() to catch the underlying BIO. + */ +# define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)(ssl)) +# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)(sslp)) +# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL) +# define BIO_set_ssl_renegotiate_bytes(b,num) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL) +# define BIO_get_num_renegotiates(b) \ + BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL) +# define BIO_set_ssl_renegotiate_timeout(b,seconds) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL) + +/* defined in evp.h */ +/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)(md)) */ + +# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)(pp)) +# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)(bm)) +# define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0, \ + (char *)(pp)) +# define BIO_set_mem_eof_return(b,v) \ + BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL) + +/* For the BIO_f_buffer() type */ +# define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL) +# define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL) +# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0) +# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1) +# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf) + +/* Don't use the next one unless you know what you are doing :-) */ +# define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret)) + +# define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL) +# define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL) +# define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL) +# define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL) +# define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) +# define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL) +/* ...pending macros have inappropriate return type */ +size_t BIO_ctrl_pending(BIO *b); +size_t BIO_ctrl_wpending(BIO *b); +# define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL) +# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \ + cbp) +# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb) + +/* For the BIO_f_buffer() type */ +# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL) +# define BIO_buffer_peek(b,s,l) BIO_ctrl(b,BIO_CTRL_PEEK,(l),(s)) + +/* For BIO_s_bio() */ +# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL) +# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL) +# define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2) +# define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL) +# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL) +/* macros with inappropriate type -- but ...pending macros use int too: */ +# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL) +# define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL) +size_t BIO_ctrl_get_write_guarantee(BIO *b); +size_t BIO_ctrl_get_read_request(BIO *b); +int BIO_ctrl_reset_read_request(BIO *b); + +/* ctrl macros for dgram */ +# define BIO_ctrl_dgram_connect(b,peer) \ + (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)(peer)) +# define BIO_ctrl_set_connected(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, 0, (char *)(peer)) +# define BIO_dgram_recv_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) +# define BIO_dgram_send_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) +# define BIO_dgram_get_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) +# define BIO_dgram_set_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) + +#define BIO_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_BIO, l, p, newf, dupf, freef) +int BIO_set_ex_data(BIO *bio, int idx, void *data); +void *BIO_get_ex_data(BIO *bio, int idx); +uint64_t BIO_number_read(BIO *bio); +uint64_t BIO_number_written(BIO *bio); + +/* For BIO_f_asn1() */ +int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix, + asn1_ps_func *prefix_free); +int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix, + asn1_ps_func **pprefix_free); +int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix, + asn1_ps_func *suffix_free); +int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, + asn1_ps_func **psuffix_free); + +const BIO_METHOD *BIO_s_file(void); +BIO *BIO_new_file(const char *filename, const char *mode); +# ifndef OPENSSL_NO_STDIO +BIO *BIO_new_fp(FILE *stream, int close_flag); +# endif +BIO *BIO_new(const BIO_METHOD *type); +int BIO_free(BIO *a); +void BIO_set_data(BIO *a, void *ptr); +void *BIO_get_data(BIO *a); +void BIO_set_init(BIO *a, int init); +int BIO_get_init(BIO *a); +void BIO_set_shutdown(BIO *a, int shut); +int BIO_get_shutdown(BIO *a); +void BIO_vfree(BIO *a); +int BIO_up_ref(BIO *a); +int BIO_read(BIO *b, void *data, int dlen); +int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +int BIO_gets(BIO *bp, char *buf, int size); +int BIO_write(BIO *b, const void *data, int dlen); +int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +int BIO_puts(BIO *bp, const char *buf); +int BIO_indent(BIO *b, int indent, int max); +long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); +long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp); +void *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); +long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); +BIO *BIO_push(BIO *b, BIO *append); +BIO *BIO_pop(BIO *b); +void BIO_free_all(BIO *a); +BIO *BIO_find_type(BIO *b, int bio_type); +BIO *BIO_next(BIO *b); +void BIO_set_next(BIO *b, BIO *next); +BIO *BIO_get_retry_BIO(BIO *bio, int *reason); +int BIO_get_retry_reason(BIO *bio); +void BIO_set_retry_reason(BIO *bio, int reason); +BIO *BIO_dup_chain(BIO *in); + +int BIO_nread0(BIO *bio, char **buf); +int BIO_nread(BIO *bio, char **buf, int num); +int BIO_nwrite0(BIO *bio, char **buf); +int BIO_nwrite(BIO *bio, char **buf, int num); + +long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, + long argl, long ret); + +const BIO_METHOD *BIO_s_mem(void); +const BIO_METHOD *BIO_s_secmem(void); +BIO *BIO_new_mem_buf(const void *buf, int len); +# ifndef OPENSSL_NO_SOCK +const BIO_METHOD *BIO_s_socket(void); +const BIO_METHOD *BIO_s_connect(void); +const BIO_METHOD *BIO_s_accept(void); +# endif +const BIO_METHOD *BIO_s_fd(void); +const BIO_METHOD *BIO_s_log(void); +const BIO_METHOD *BIO_s_bio(void); +const BIO_METHOD *BIO_s_null(void); +const BIO_METHOD *BIO_f_null(void); +const BIO_METHOD *BIO_f_buffer(void); +const BIO_METHOD *BIO_f_linebuffer(void); +const BIO_METHOD *BIO_f_nbio_test(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_datagram(void); +int BIO_dgram_non_fatal_error(int error); +BIO *BIO_new_dgram(int fd, int close_flag); +# ifndef OPENSSL_NO_SCTP +const BIO_METHOD *BIO_s_datagram_sctp(void); +BIO *BIO_new_dgram_sctp(int fd, int close_flag); +int BIO_dgram_is_sctp(BIO *bio); +int BIO_dgram_sctp_notification_cb(BIO *b, + void (*handle_notifications) (BIO *bio, + void *context, + void *buf), + void *context); +int BIO_dgram_sctp_wait_for_dry(BIO *b); +int BIO_dgram_sctp_msg_waiting(BIO *b); +# endif +# endif + +# ifndef OPENSSL_NO_SOCK +int BIO_sock_should_retry(int i); +int BIO_sock_non_fatal_error(int error); +# endif + +int BIO_fd_should_retry(int i); +int BIO_fd_non_fatal_error(int error); +int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len); +int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len, int indent); +int BIO_dump(BIO *b, const char *bytes, int len); +int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent); +# ifndef OPENSSL_NO_STDIO +int BIO_dump_fp(FILE *fp, const char *s, int len); +int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent); +# endif +int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data, + int datalen); + +# ifndef OPENSSL_NO_SOCK +BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, + const void *where, size_t wherelen, unsigned short port); +void BIO_ADDR_free(BIO_ADDR *); +void BIO_ADDR_clear(BIO_ADDR *ap); +int BIO_ADDR_family(const BIO_ADDR *ap); +int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l); +unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap); +char *BIO_ADDR_hostname_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_service_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_path_string(const BIO_ADDR *ap); + +const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai); +const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai); +void BIO_ADDRINFO_free(BIO_ADDRINFO *bai); + +enum BIO_hostserv_priorities { + BIO_PARSE_PRIO_HOST, BIO_PARSE_PRIO_SERV +}; +int BIO_parse_hostserv(const char *hostserv, char **host, char **service, + enum BIO_hostserv_priorities hostserv_prio); +enum BIO_lookup_type { + BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER +}; +int BIO_lookup(const char *host, const char *service, + enum BIO_lookup_type lookup_type, + int family, int socktype, BIO_ADDRINFO **res); +int BIO_lookup_ex(const char *host, const char *service, + int lookup_type, int family, int socktype, int protocol, + BIO_ADDRINFO **res); +int BIO_sock_error(int sock); +int BIO_socket_ioctl(int fd, long type, void *arg); +int BIO_socket_nbio(int fd, int mode); +int BIO_sock_init(void); +# if OPENSSL_API_COMPAT < 0x10100000L +# define BIO_sock_cleanup() while(0) continue +# endif +int BIO_set_tcp_ndelay(int sock, int turn_on); + +DEPRECATEDIN_1_1_0(struct hostent *BIO_gethostbyname(const char *name)) +DEPRECATEDIN_1_1_0(int BIO_get_port(const char *str, unsigned short *port_ptr)) +DEPRECATEDIN_1_1_0(int BIO_get_host_ip(const char *str, unsigned char *ip)) +DEPRECATEDIN_1_1_0(int BIO_get_accept_socket(char *host_port, int mode)) +DEPRECATEDIN_1_1_0(int BIO_accept(int sock, char **ip_port)) + +union BIO_sock_info_u { + BIO_ADDR *addr; +}; +enum BIO_sock_info_type { + BIO_SOCK_INFO_ADDRESS +}; +int BIO_sock_info(int sock, + enum BIO_sock_info_type type, union BIO_sock_info_u *info); + +# define BIO_SOCK_REUSEADDR 0x01 +# define BIO_SOCK_V6_ONLY 0x02 +# define BIO_SOCK_KEEPALIVE 0x04 +# define BIO_SOCK_NONBLOCK 0x08 +# define BIO_SOCK_NODELAY 0x10 + +int BIO_socket(int domain, int socktype, int protocol, int options); +int BIO_connect(int sock, const BIO_ADDR *addr, int options); +int BIO_bind(int sock, const BIO_ADDR *addr, int options); +int BIO_listen(int sock, const BIO_ADDR *addr, int options); +int BIO_accept_ex(int accept_sock, BIO_ADDR *addr, int options); +int BIO_closesocket(int sock); + +BIO *BIO_new_socket(int sock, int close_flag); +BIO *BIO_new_connect(const char *host_port); +BIO *BIO_new_accept(const char *host_port); +# endif /* OPENSSL_NO_SOCK*/ + +BIO *BIO_new_fd(int fd, int close_flag); + +int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +/* + * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. + * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default + * value. + */ + +void BIO_copy_next_retry(BIO *b); + +/* + * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); + */ + +# define ossl_bio__attr__(x) +# if defined(__GNUC__) && defined(__STDC_VERSION__) \ + && !defined(__APPLE__) + /* + * Because we support the 'z' modifier, which made its appearance in C99, + * we can't use __attribute__ with pre C99 dialects. + */ +# if __STDC_VERSION__ >= 199901L +# undef ossl_bio__attr__ +# define ossl_bio__attr__ __attribute__ +# if __GNUC__*10 + __GNUC_MINOR__ >= 44 +# define ossl_bio__printf__ __gnu_printf__ +# else +# define ossl_bio__printf__ __printf__ +# endif +# endif +# endif +int BIO_printf(BIO *bio, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 3))); +int BIO_vprintf(BIO *bio, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 0))); +int BIO_snprintf(char *buf, size_t n, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 4))); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); +# undef ossl_bio__attr__ +# undef ossl_bio__printf__ + + +BIO_METHOD *BIO_meth_new(int type, const char *name); +void BIO_meth_free(BIO_METHOD *biom); +int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); +int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, + size_t *); +int BIO_meth_set_write(BIO_METHOD *biom, + int (*write) (BIO *, const char *, int)); +int BIO_meth_set_write_ex(BIO_METHOD *biom, + int (*bwrite) (BIO *, const char *, size_t, size_t *)); +int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_read(BIO_METHOD *biom, + int (*read) (BIO *, char *, int)); +int BIO_meth_set_read_ex(BIO_METHOD *biom, + int (*bread) (BIO *, char *, size_t, size_t *)); +int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts) (BIO *, const char *)); +int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*gets) (BIO *, char *, int)); +long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); +int BIO_meth_set_ctrl(BIO_METHOD *biom, + long (*ctrl) (BIO *, int, long, void *)); +int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); +int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); +long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) + (BIO *, int, BIO_info_cb *); +int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, + long (*callback_ctrl) (BIO *, int, + BIO_info_cb *)); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/bioerr.h b/openSSL/win64/include/openssl/bioerr.h new file mode 100644 index 0000000..46e2c96 --- /dev/null +++ b/openSSL/win64/include/openssl/bioerr.h @@ -0,0 +1,124 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BIOERR_H +# define HEADER_BIOERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BIO_strings(void); + +/* + * BIO function codes. + */ +# define BIO_F_ACPT_STATE 100 +# define BIO_F_ADDRINFO_WRAP 148 +# define BIO_F_ADDR_STRINGS 134 +# define BIO_F_BIO_ACCEPT 101 +# define BIO_F_BIO_ACCEPT_EX 137 +# define BIO_F_BIO_ACCEPT_NEW 152 +# define BIO_F_BIO_ADDR_NEW 144 +# define BIO_F_BIO_BIND 147 +# define BIO_F_BIO_CALLBACK_CTRL 131 +# define BIO_F_BIO_CONNECT 138 +# define BIO_F_BIO_CONNECT_NEW 153 +# define BIO_F_BIO_CTRL 103 +# define BIO_F_BIO_GETS 104 +# define BIO_F_BIO_GET_HOST_IP 106 +# define BIO_F_BIO_GET_NEW_INDEX 102 +# define BIO_F_BIO_GET_PORT 107 +# define BIO_F_BIO_LISTEN 139 +# define BIO_F_BIO_LOOKUP 135 +# define BIO_F_BIO_LOOKUP_EX 143 +# define BIO_F_BIO_MAKE_PAIR 121 +# define BIO_F_BIO_METH_NEW 146 +# define BIO_F_BIO_NEW 108 +# define BIO_F_BIO_NEW_DGRAM_SCTP 145 +# define BIO_F_BIO_NEW_FILE 109 +# define BIO_F_BIO_NEW_MEM_BUF 126 +# define BIO_F_BIO_NREAD 123 +# define BIO_F_BIO_NREAD0 124 +# define BIO_F_BIO_NWRITE 125 +# define BIO_F_BIO_NWRITE0 122 +# define BIO_F_BIO_PARSE_HOSTSERV 136 +# define BIO_F_BIO_PUTS 110 +# define BIO_F_BIO_READ 111 +# define BIO_F_BIO_READ_EX 105 +# define BIO_F_BIO_READ_INTERN 120 +# define BIO_F_BIO_SOCKET 140 +# define BIO_F_BIO_SOCKET_NBIO 142 +# define BIO_F_BIO_SOCK_INFO 141 +# define BIO_F_BIO_SOCK_INIT 112 +# define BIO_F_BIO_WRITE 113 +# define BIO_F_BIO_WRITE_EX 119 +# define BIO_F_BIO_WRITE_INTERN 128 +# define BIO_F_BUFFER_CTRL 114 +# define BIO_F_CONN_CTRL 127 +# define BIO_F_CONN_STATE 115 +# define BIO_F_DGRAM_SCTP_NEW 149 +# define BIO_F_DGRAM_SCTP_READ 132 +# define BIO_F_DGRAM_SCTP_WRITE 133 +# define BIO_F_DOAPR_OUTCH 150 +# define BIO_F_FILE_CTRL 116 +# define BIO_F_FILE_READ 130 +# define BIO_F_LINEBUFFER_CTRL 129 +# define BIO_F_LINEBUFFER_NEW 151 +# define BIO_F_MEM_WRITE 117 +# define BIO_F_NBIOF_NEW 154 +# define BIO_F_SLG_WRITE 155 +# define BIO_F_SSL_NEW 118 + +/* + * BIO reason codes. + */ +# define BIO_R_ACCEPT_ERROR 100 +# define BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET 141 +# define BIO_R_AMBIGUOUS_HOST_OR_SERVICE 129 +# define BIO_R_BAD_FOPEN_MODE 101 +# define BIO_R_BROKEN_PIPE 124 +# define BIO_R_CONNECT_ERROR 103 +# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107 +# define BIO_R_GETSOCKNAME_ERROR 132 +# define BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS 133 +# define BIO_R_GETTING_SOCKTYPE 134 +# define BIO_R_INVALID_ARGUMENT 125 +# define BIO_R_INVALID_SOCKET 135 +# define BIO_R_IN_USE 123 +# define BIO_R_LENGTH_TOO_LONG 102 +# define BIO_R_LISTEN_V6_ONLY 136 +# define BIO_R_LOOKUP_RETURNED_NOTHING 142 +# define BIO_R_MALFORMED_HOST_OR_SERVICE 130 +# define BIO_R_NBIO_CONNECT_ERROR 110 +# define BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED 143 +# define BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED 144 +# define BIO_R_NO_PORT_DEFINED 113 +# define BIO_R_NO_SUCH_FILE 128 +# define BIO_R_NULL_PARAMETER 115 +# define BIO_R_UNABLE_TO_BIND_SOCKET 117 +# define BIO_R_UNABLE_TO_CREATE_SOCKET 118 +# define BIO_R_UNABLE_TO_KEEPALIVE 137 +# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 +# define BIO_R_UNABLE_TO_NODELAY 138 +# define BIO_R_UNABLE_TO_REUSEADDR 139 +# define BIO_R_UNAVAILABLE_IP_FAMILY 145 +# define BIO_R_UNINITIALIZED 120 +# define BIO_R_UNKNOWN_INFO_TYPE 140 +# define BIO_R_UNSUPPORTED_IP_FAMILY 146 +# define BIO_R_UNSUPPORTED_METHOD 121 +# define BIO_R_UNSUPPORTED_PROTOCOL_FAMILY 131 +# define BIO_R_WRITE_TO_READ_ONLY_BIO 126 +# define BIO_R_WSASTARTUP 122 + +#endif diff --git a/openSSL/win64/include/openssl/blowfish.h b/openSSL/win64/include/openssl/blowfish.h new file mode 100644 index 0000000..cd3e460 --- /dev/null +++ b/openSSL/win64/include/openssl/blowfish.h @@ -0,0 +1,61 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BLOWFISH_H +# define HEADER_BLOWFISH_H + +# include + +# ifndef OPENSSL_NO_BF +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define BF_ENCRYPT 1 +# define BF_DECRYPT 0 + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! BF_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define BF_LONG unsigned int + +# define BF_ROUNDS 16 +# define BF_BLOCK 8 + +typedef struct bf_key_st { + BF_LONG P[BF_ROUNDS + 2]; + BF_LONG S[4 * 256]; +} BF_KEY; + +void BF_set_key(BF_KEY *key, int len, const unsigned char *data); + +void BF_encrypt(BF_LONG *data, const BF_KEY *key); +void BF_decrypt(BF_LONG *data, const BF_KEY *key); + +void BF_ecb_encrypt(const unsigned char *in, unsigned char *out, + const BF_KEY *key, int enc); +void BF_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, + const BF_KEY *schedule, unsigned char *ivec, int enc); +void BF_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const BF_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void BF_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const BF_KEY *schedule, + unsigned char *ivec, int *num); +const char *BF_options(void); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/bn.h b/openSSL/win64/include/openssl/bn.h new file mode 100644 index 0000000..d877660 --- /dev/null +++ b/openSSL/win64/include/openssl/bn.h @@ -0,0 +1,539 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BN_H +# define HEADER_BN_H + +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * 64-bit processor with LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT_LONG +# define BN_ULONG unsigned long +# define BN_BYTES 8 +# endif + +/* + * 64-bit processor other than LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT +# define BN_ULONG unsigned long long +# define BN_BYTES 8 +# endif + +# ifdef THIRTY_TWO_BIT +# define BN_ULONG unsigned int +# define BN_BYTES 4 +# endif + +# define BN_BITS2 (BN_BYTES * 8) +# define BN_BITS (BN_BITS2 * 2) +# define BN_TBIT ((BN_ULONG)1 << (BN_BITS2 - 1)) + +# define BN_FLG_MALLOCED 0x01 +# define BN_FLG_STATIC_DATA 0x02 + +/* + * avoid leaking exponent information through timing, + * BN_mod_exp_mont() will call BN_mod_exp_mont_consttime, + * BN_div() will call BN_div_no_branch, + * BN_mod_inverse() will call bn_mod_inverse_no_branch. + */ +# define BN_FLG_CONSTTIME 0x04 +# define BN_FLG_SECURE 0x08 + +# if OPENSSL_API_COMPAT < 0x00908000L +/* deprecated name for the flag */ +# define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME +# define BN_FLG_FREE 0x8000 /* used for debugging */ +# endif + +void BN_set_flags(BIGNUM *b, int n); +int BN_get_flags(const BIGNUM *b, int n); + +/* Values for |top| in BN_rand() */ +#define BN_RAND_TOP_ANY -1 +#define BN_RAND_TOP_ONE 0 +#define BN_RAND_TOP_TWO 1 + +/* Values for |bottom| in BN_rand() */ +#define BN_RAND_BOTTOM_ANY 0 +#define BN_RAND_BOTTOM_ODD 1 + +/* + * get a clone of a BIGNUM with changed flags, for *temporary* use only (the + * two BIGNUMs cannot be used in parallel!). Also only for *read only* use. The + * value |dest| should be a newly allocated BIGNUM obtained via BN_new() that + * has not been otherwise initialised or used. + */ +void BN_with_flags(BIGNUM *dest, const BIGNUM *b, int flags); + +/* Wrapper function to make using BN_GENCB easier */ +int BN_GENCB_call(BN_GENCB *cb, int a, int b); + +BN_GENCB *BN_GENCB_new(void); +void BN_GENCB_free(BN_GENCB *cb); + +/* Populate a BN_GENCB structure with an "old"-style callback */ +void BN_GENCB_set_old(BN_GENCB *gencb, void (*callback) (int, int, void *), + void *cb_arg); + +/* Populate a BN_GENCB structure with a "new"-style callback */ +void BN_GENCB_set(BN_GENCB *gencb, int (*callback) (int, int, BN_GENCB *), + void *cb_arg); + +void *BN_GENCB_get_arg(BN_GENCB *cb); + +# define BN_prime_checks 0 /* default: select number of iterations based + * on the size of the number */ + +/* + * BN_prime_checks_for_size() returns the number of Miller-Rabin iterations + * that will be done for checking that a random number is probably prime. The + * error rate for accepting a composite number as prime depends on the size of + * the prime |b|. The error rates used are for calculating an RSA key with 2 primes, + * and so the level is what you would expect for a key of double the size of the + * prime. + * + * This table is generated using the algorithm of FIPS PUB 186-4 + * Digital Signature Standard (DSS), section F.1, page 117. + * (https://dx.doi.org/10.6028/NIST.FIPS.186-4) + * + * The following magma script was used to generate the output: + * securitybits:=125; + * k:=1024; + * for t:=1 to 65 do + * for M:=3 to Floor(2*Sqrt(k-1)-1) do + * S:=0; + * // Sum over m + * for m:=3 to M do + * s:=0; + * // Sum over j + * for j:=2 to m do + * s+:=(RealField(32)!2)^-(j+(k-1)/j); + * end for; + * S+:=2^(m-(m-1)*t)*s; + * end for; + * A:=2^(k-2-M*t); + * B:=8*(Pi(RealField(32))^2-6)/3*2^(k-2)*S; + * pkt:=2.00743*Log(2)*k*2^-k*(A+B); + * seclevel:=Floor(-Log(2,pkt)); + * if seclevel ge securitybits then + * printf "k: %5o, security: %o bits (t: %o, M: %o)\n",k,seclevel,t,M; + * break; + * end if; + * end for; + * if seclevel ge securitybits then break; end if; + * end for; + * + * It can be run online at: + * http://magma.maths.usyd.edu.au/calc + * + * And will output: + * k: 1024, security: 129 bits (t: 6, M: 23) + * + * k is the number of bits of the prime, securitybits is the level we want to + * reach. + * + * prime length | RSA key size | # MR tests | security level + * -------------+--------------|------------+--------------- + * (b) >= 6394 | >= 12788 | 3 | 256 bit + * (b) >= 3747 | >= 7494 | 3 | 192 bit + * (b) >= 1345 | >= 2690 | 4 | 128 bit + * (b) >= 1080 | >= 2160 | 5 | 128 bit + * (b) >= 852 | >= 1704 | 5 | 112 bit + * (b) >= 476 | >= 952 | 5 | 80 bit + * (b) >= 400 | >= 800 | 6 | 80 bit + * (b) >= 347 | >= 694 | 7 | 80 bit + * (b) >= 308 | >= 616 | 8 | 80 bit + * (b) >= 55 | >= 110 | 27 | 64 bit + * (b) >= 6 | >= 12 | 34 | 64 bit + */ + +# define BN_prime_checks_for_size(b) ((b) >= 3747 ? 3 : \ + (b) >= 1345 ? 4 : \ + (b) >= 476 ? 5 : \ + (b) >= 400 ? 6 : \ + (b) >= 347 ? 7 : \ + (b) >= 308 ? 8 : \ + (b) >= 55 ? 27 : \ + /* b >= 6 */ 34) + +# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8) + +int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w); +int BN_is_zero(const BIGNUM *a); +int BN_is_one(const BIGNUM *a); +int BN_is_word(const BIGNUM *a, const BN_ULONG w); +int BN_is_odd(const BIGNUM *a); + +# define BN_one(a) (BN_set_word((a),1)) + +void BN_zero_ex(BIGNUM *a); + +# if OPENSSL_API_COMPAT >= 0x00908000L +# define BN_zero(a) BN_zero_ex(a) +# else +# define BN_zero(a) (BN_set_word((a),0)) +# endif + +const BIGNUM *BN_value_one(void); +char *BN_options(void); +BN_CTX *BN_CTX_new(void); +BN_CTX *BN_CTX_secure_new(void); +void BN_CTX_free(BN_CTX *c); +void BN_CTX_start(BN_CTX *ctx); +BIGNUM *BN_CTX_get(BN_CTX *ctx); +void BN_CTX_end(BN_CTX *ctx); +int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_priv_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_num_bits(const BIGNUM *a); +int BN_num_bits_word(BN_ULONG l); +int BN_security_bits(int L, int N); +BIGNUM *BN_new(void); +BIGNUM *BN_secure_new(void); +void BN_clear_free(BIGNUM *a); +BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); +void BN_swap(BIGNUM *a, BIGNUM *b); +BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2bin(const BIGNUM *a, unsigned char *to); +int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2mpi(const BIGNUM *a, unsigned char *to); +int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); +/** BN_set_negative sets sign of a BIGNUM + * \param b pointer to the BIGNUM object + * \param n 0 if the BIGNUM b should be positive and a value != 0 otherwise + */ +void BN_set_negative(BIGNUM *b, int n); +/** BN_is_negative returns 1 if the BIGNUM is negative + * \param b pointer to the BIGNUM object + * \return 1 if a < 0 and 0 otherwise + */ +int BN_is_negative(const BIGNUM *b); + +int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, + BN_CTX *ctx); +# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx)) +int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); +int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m); +int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m); + +BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w); +BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w); +int BN_mul_word(BIGNUM *a, BN_ULONG w); +int BN_add_word(BIGNUM *a, BN_ULONG w); +int BN_sub_word(BIGNUM *a, BN_ULONG w); +int BN_set_word(BIGNUM *a, BN_ULONG w); +BN_ULONG BN_get_word(const BIGNUM *a); + +int BN_cmp(const BIGNUM *a, const BIGNUM *b); +void BN_free(BIGNUM *a); +int BN_is_bit_set(const BIGNUM *a, int n); +int BN_lshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_lshift1(BIGNUM *r, const BIGNUM *a); +int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *in_mont); +int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1, + const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m, + BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); + +int BN_mask_bits(BIGNUM *a, int n); +# ifndef OPENSSL_NO_STDIO +int BN_print_fp(FILE *fp, const BIGNUM *a); +# endif +int BN_print(BIO *bio, const BIGNUM *a); +int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx); +int BN_rshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_rshift1(BIGNUM *r, const BIGNUM *a); +void BN_clear(BIGNUM *a); +BIGNUM *BN_dup(const BIGNUM *a); +int BN_ucmp(const BIGNUM *a, const BIGNUM *b); +int BN_set_bit(BIGNUM *a, int n); +int BN_clear_bit(BIGNUM *a, int n); +char *BN_bn2hex(const BIGNUM *a); +char *BN_bn2dec(const BIGNUM *a); +int BN_hex2bn(BIGNUM **a, const char *str); +int BN_dec2bn(BIGNUM **a, const char *str); +int BN_asc2bn(BIGNUM **a, const char *str); +int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns + * -2 for + * error */ +BIGNUM *BN_mod_inverse(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); +BIGNUM *BN_mod_sqrt(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); + +void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords); + +/* Deprecated versions */ +DEPRECATEDIN_0_9_8(BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe, + const BIGNUM *add, + const BIGNUM *rem, + void (*callback) (int, int, + void *), + void *cb_arg)) +DEPRECATEDIN_0_9_8(int + BN_is_prime(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg)) +DEPRECATEDIN_0_9_8(int + BN_is_prime_fasttest(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg, + int do_trial_division)) + +/* Newer versions */ +int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, + const BIGNUM *rem, BN_GENCB *cb); +int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb); +int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, + int do_trial_division, BN_GENCB *cb); + +int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx); + +int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, + const BIGNUM *Xp, const BIGNUM *Xp1, + const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx, + BN_GENCB *cb); +int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1, + BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e, + BN_CTX *ctx, BN_GENCB *cb); + +BN_MONT_CTX *BN_MONT_CTX_new(void); +int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + BN_MONT_CTX *mont, BN_CTX *ctx); +int BN_to_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, + BN_CTX *ctx); +int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, + BN_CTX *ctx); +void BN_MONT_CTX_free(BN_MONT_CTX *mont); +int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx); +BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from); +BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_RWLOCK *lock, + const BIGNUM *mod, BN_CTX *ctx); + +/* BN_BLINDING flags */ +# define BN_BLINDING_NO_UPDATE 0x00000001 +# define BN_BLINDING_NO_RECREATE 0x00000002 + +BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod); +void BN_BLINDING_free(BN_BLINDING *b); +int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *); +int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, + BN_CTX *); + +int BN_BLINDING_is_current_thread(BN_BLINDING *b); +void BN_BLINDING_set_current_thread(BN_BLINDING *b); +int BN_BLINDING_lock(BN_BLINDING *b); +int BN_BLINDING_unlock(BN_BLINDING *b); + +unsigned long BN_BLINDING_get_flags(const BN_BLINDING *); +void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long); +BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b, + const BIGNUM *e, BIGNUM *m, BN_CTX *ctx, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx), + BN_MONT_CTX *m_ctx); + +DEPRECATEDIN_0_9_8(void BN_set_params(int mul, int high, int low, int mont)) +DEPRECATEDIN_0_9_8(int BN_get_params(int which)) /* 0, mul, 1 high, 2 low, 3 + * mont */ + +BN_RECP_CTX *BN_RECP_CTX_new(void); +void BN_RECP_CTX_free(BN_RECP_CTX *recp); +int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx); +int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y, + BN_RECP_CTX *recp, BN_CTX *ctx); +int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, + BN_RECP_CTX *recp, BN_CTX *ctx); + +# ifndef OPENSSL_NO_EC2M + +/* + * Functions for arithmetic over binary polynomials represented by BIGNUMs. + * The BIGNUM::neg property of BIGNUMs representing binary polynomials is + * ignored. Note that input arguments are not const so that their bit arrays + * can be expanded to the appropriate size if needed. + */ + +/* + * r = a + b + */ +int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +# define BN_GF2m_sub(r, a, b) BN_GF2m_add(r, a, b) +/* + * r=a mod p + */ +int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +# define BN_GF2m_cmp(a, b) BN_ucmp((a), (b)) +/*- + * Some functions allow for representation of the irreducible polynomials + * as an unsigned int[], say p. The irreducible f(t) is then of the form: + * t^p[0] + t^p[1] + ... + t^p[k] + * where m = p[0] > p[1] > ... > p[k] = 0. + */ +/* r = a mod p */ +int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], + BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[], + BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max); +int BN_GF2m_arr2poly(const int p[], BIGNUM *a); + +# endif + +/* + * faster mod functions for the 'NIST primes' 0 <= a < p^2 + */ +int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +const BIGNUM *BN_get0_nist_prime_192(void); +const BIGNUM *BN_get0_nist_prime_224(void); +const BIGNUM *BN_get0_nist_prime_256(void); +const BIGNUM *BN_get0_nist_prime_384(void); +const BIGNUM *BN_get0_nist_prime_521(void); + +int (*BN_nist_mod_func(const BIGNUM *p)) (BIGNUM *r, const BIGNUM *a, + const BIGNUM *field, BN_CTX *ctx); + +int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range, + const BIGNUM *priv, const unsigned char *message, + size_t message_len, BN_CTX *ctx); + +/* Primes from RFC 2409 */ +BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn); +BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn); + +/* Primes from RFC 3526 */ +BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_4096(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_6144(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_8192(BIGNUM *bn); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define get_rfc2409_prime_768 BN_get_rfc2409_prime_768 +# define get_rfc2409_prime_1024 BN_get_rfc2409_prime_1024 +# define get_rfc3526_prime_1536 BN_get_rfc3526_prime_1536 +# define get_rfc3526_prime_2048 BN_get_rfc3526_prime_2048 +# define get_rfc3526_prime_3072 BN_get_rfc3526_prime_3072 +# define get_rfc3526_prime_4096 BN_get_rfc3526_prime_4096 +# define get_rfc3526_prime_6144 BN_get_rfc3526_prime_6144 +# define get_rfc3526_prime_8192 BN_get_rfc3526_prime_8192 +# endif + +int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/bnerr.h b/openSSL/win64/include/openssl/bnerr.h new file mode 100644 index 0000000..9f3c7cf --- /dev/null +++ b/openSSL/win64/include/openssl/bnerr.h @@ -0,0 +1,100 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BNERR_H +# define HEADER_BNERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BN_strings(void); + +/* + * BN function codes. + */ +# define BN_F_BNRAND 127 +# define BN_F_BNRAND_RANGE 138 +# define BN_F_BN_BLINDING_CONVERT_EX 100 +# define BN_F_BN_BLINDING_CREATE_PARAM 128 +# define BN_F_BN_BLINDING_INVERT_EX 101 +# define BN_F_BN_BLINDING_NEW 102 +# define BN_F_BN_BLINDING_UPDATE 103 +# define BN_F_BN_BN2DEC 104 +# define BN_F_BN_BN2HEX 105 +# define BN_F_BN_COMPUTE_WNAF 142 +# define BN_F_BN_CTX_GET 116 +# define BN_F_BN_CTX_NEW 106 +# define BN_F_BN_CTX_START 129 +# define BN_F_BN_DIV 107 +# define BN_F_BN_DIV_RECP 130 +# define BN_F_BN_EXP 123 +# define BN_F_BN_EXPAND_INTERNAL 120 +# define BN_F_BN_GENCB_NEW 143 +# define BN_F_BN_GENERATE_DSA_NONCE 140 +# define BN_F_BN_GENERATE_PRIME_EX 141 +# define BN_F_BN_GF2M_MOD 131 +# define BN_F_BN_GF2M_MOD_EXP 132 +# define BN_F_BN_GF2M_MOD_MUL 133 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD 134 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 135 +# define BN_F_BN_GF2M_MOD_SQR 136 +# define BN_F_BN_GF2M_MOD_SQRT 137 +# define BN_F_BN_LSHIFT 145 +# define BN_F_BN_MOD_EXP2_MONT 118 +# define BN_F_BN_MOD_EXP_MONT 109 +# define BN_F_BN_MOD_EXP_MONT_CONSTTIME 124 +# define BN_F_BN_MOD_EXP_MONT_WORD 117 +# define BN_F_BN_MOD_EXP_RECP 125 +# define BN_F_BN_MOD_EXP_SIMPLE 126 +# define BN_F_BN_MOD_INVERSE 110 +# define BN_F_BN_MOD_INVERSE_NO_BRANCH 139 +# define BN_F_BN_MOD_LSHIFT_QUICK 119 +# define BN_F_BN_MOD_SQRT 121 +# define BN_F_BN_MONT_CTX_NEW 149 +# define BN_F_BN_MPI2BN 112 +# define BN_F_BN_NEW 113 +# define BN_F_BN_POOL_GET 147 +# define BN_F_BN_RAND 114 +# define BN_F_BN_RAND_RANGE 122 +# define BN_F_BN_RECP_CTX_NEW 150 +# define BN_F_BN_RSHIFT 146 +# define BN_F_BN_SET_WORDS 144 +# define BN_F_BN_STACK_PUSH 148 +# define BN_F_BN_USUB 115 + +/* + * BN reason codes. + */ +# define BN_R_ARG2_LT_ARG3 100 +# define BN_R_BAD_RECIPROCAL 101 +# define BN_R_BIGNUM_TOO_LONG 114 +# define BN_R_BITS_TOO_SMALL 118 +# define BN_R_CALLED_WITH_EVEN_MODULUS 102 +# define BN_R_DIV_BY_ZERO 103 +# define BN_R_ENCODING_ERROR 104 +# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 +# define BN_R_INPUT_NOT_REDUCED 110 +# define BN_R_INVALID_LENGTH 106 +# define BN_R_INVALID_RANGE 115 +# define BN_R_INVALID_SHIFT 119 +# define BN_R_NOT_A_SQUARE 111 +# define BN_R_NOT_INITIALIZED 107 +# define BN_R_NO_INVERSE 108 +# define BN_R_NO_SOLUTION 116 +# define BN_R_PRIVATE_KEY_TOO_LARGE 117 +# define BN_R_P_IS_NOT_PRIME 112 +# define BN_R_TOO_MANY_ITERATIONS 113 +# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 + +#endif diff --git a/openSSL/win64/include/openssl/buffer.h b/openSSL/win64/include/openssl/buffer.h new file mode 100644 index 0000000..d276576 --- /dev/null +++ b/openSSL/win64/include/openssl/buffer.h @@ -0,0 +1,58 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BUFFER_H +# define HEADER_BUFFER_H + +# include +# ifndef HEADER_CRYPTO_H +# include +# endif +# include + + +#ifdef __cplusplus +extern "C" { +#endif + +# include +# include + +/* + * These names are outdated as of OpenSSL 1.1; a future release + * will move them to be deprecated. + */ +# define BUF_strdup(s) OPENSSL_strdup(s) +# define BUF_strndup(s, size) OPENSSL_strndup(s, size) +# define BUF_memdup(data, size) OPENSSL_memdup(data, size) +# define BUF_strlcpy(dst, src, size) OPENSSL_strlcpy(dst, src, size) +# define BUF_strlcat(dst, src, size) OPENSSL_strlcat(dst, src, size) +# define BUF_strnlen(str, maxlen) OPENSSL_strnlen(str, maxlen) + +struct buf_mem_st { + size_t length; /* current number of bytes */ + char *data; + size_t max; /* size of buffer */ + unsigned long flags; +}; + +# define BUF_MEM_FLAG_SECURE 0x01 + +BUF_MEM *BUF_MEM_new(void); +BUF_MEM *BUF_MEM_new_ex(unsigned long flags); +void BUF_MEM_free(BUF_MEM *a); +size_t BUF_MEM_grow(BUF_MEM *str, size_t len); +size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len); +void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/buffererr.h b/openSSL/win64/include/openssl/buffererr.h new file mode 100644 index 0000000..04f6ff7 --- /dev/null +++ b/openSSL/win64/include/openssl/buffererr.h @@ -0,0 +1,34 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BUFERR_H +# define HEADER_BUFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BUF_strings(void); + +/* + * BUF function codes. + */ +# define BUF_F_BUF_MEM_GROW 100 +# define BUF_F_BUF_MEM_GROW_CLEAN 105 +# define BUF_F_BUF_MEM_NEW 101 + +/* + * BUF reason codes. + */ + +#endif diff --git a/openSSL/win64/include/openssl/camellia.h b/openSSL/win64/include/openssl/camellia.h new file mode 100644 index 0000000..151f3c1 --- /dev/null +++ b/openSSL/win64/include/openssl/camellia.h @@ -0,0 +1,83 @@ +/* + * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CAMELLIA_H +# define HEADER_CAMELLIA_H + +# include + +# ifndef OPENSSL_NO_CAMELLIA +# include +#ifdef __cplusplus +extern "C" { +#endif + +# define CAMELLIA_ENCRYPT 1 +# define CAMELLIA_DECRYPT 0 + +/* + * Because array size can't be a const in C, the following two are macros. + * Both sizes are in bytes. + */ + +/* This should be a hidden type, but EVP requires that the size be known */ + +# define CAMELLIA_BLOCK_SIZE 16 +# define CAMELLIA_TABLE_BYTE_LEN 272 +# define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / 4) + +typedef unsigned int KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN]; /* to match + * with WORD */ + +struct camellia_key_st { + union { + double d; /* ensures 64-bit align */ + KEY_TABLE_TYPE rd_key; + } u; + int grand_rounds; +}; +typedef struct camellia_key_st CAMELLIA_KEY; + +int Camellia_set_key(const unsigned char *userKey, const int bits, + CAMELLIA_KEY *key); + +void Camellia_encrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key); +void Camellia_decrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key); + +void Camellia_ecb_encrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key, const int enc); +void Camellia_cbc_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, const int enc); +void Camellia_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num, const int enc); +void Camellia_cfb1_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num, const int enc); +void Camellia_cfb8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num, const int enc); +void Camellia_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num); +void Camellia_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char ivec[CAMELLIA_BLOCK_SIZE], + unsigned char ecount_buf[CAMELLIA_BLOCK_SIZE], + unsigned int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/cast.h b/openSSL/win64/include/openssl/cast.h new file mode 100644 index 0000000..2cc89ae --- /dev/null +++ b/openSSL/win64/include/openssl/cast.h @@ -0,0 +1,53 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CAST_H +# define HEADER_CAST_H + +# include + +# ifndef OPENSSL_NO_CAST +# ifdef __cplusplus +extern "C" { +# endif + +# define CAST_ENCRYPT 1 +# define CAST_DECRYPT 0 + +# define CAST_LONG unsigned int + +# define CAST_BLOCK 8 +# define CAST_KEY_LENGTH 16 + +typedef struct cast_key_st { + CAST_LONG data[32]; + int short_key; /* Use reduced rounds for short key */ +} CAST_KEY; + +void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data); +void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out, + const CAST_KEY *key, int enc); +void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key); +void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key); +void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *ks, unsigned char *iv, + int enc); +void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *schedule, + unsigned char *ivec, int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/cmac.h b/openSSL/win64/include/openssl/cmac.h new file mode 100644 index 0000000..3535a9a --- /dev/null +++ b/openSSL/win64/include/openssl/cmac.h @@ -0,0 +1,41 @@ +/* + * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMAC_H +# define HEADER_CMAC_H + +# ifndef OPENSSL_NO_CMAC + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +/* Opaque */ +typedef struct CMAC_CTX_st CMAC_CTX; + +CMAC_CTX *CMAC_CTX_new(void); +void CMAC_CTX_cleanup(CMAC_CTX *ctx); +void CMAC_CTX_free(CMAC_CTX *ctx); +EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx); +int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in); + +int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen, + const EVP_CIPHER *cipher, ENGINE *impl); +int CMAC_Update(CMAC_CTX *ctx, const void *data, size_t dlen); +int CMAC_Final(CMAC_CTX *ctx, unsigned char *out, size_t *poutlen); +int CMAC_resume(CMAC_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +# endif +#endif diff --git a/openSSL/win64/include/openssl/cms.h b/openSSL/win64/include/openssl/cms.h new file mode 100644 index 0000000..c762796 --- /dev/null +++ b/openSSL/win64/include/openssl/cms.h @@ -0,0 +1,339 @@ +/* + * Copyright 2008-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMS_H +# define HEADER_CMS_H + +# include + +# ifndef OPENSSL_NO_CMS +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct CMS_ContentInfo_st CMS_ContentInfo; +typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_CertificateChoices CMS_CertificateChoices; +typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; +typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; +typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest; +typedef struct CMS_Receipt_st CMS_Receipt; +typedef struct CMS_RecipientEncryptedKey_st CMS_RecipientEncryptedKey; +typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute; + +DEFINE_STACK_OF(CMS_SignerInfo) +DEFINE_STACK_OF(CMS_RecipientEncryptedKey) +DEFINE_STACK_OF(CMS_RecipientInfo) +DEFINE_STACK_OF(CMS_RevocationInfoChoice) +DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) +DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) +DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) + +# define CMS_SIGNERINFO_ISSUER_SERIAL 0 +# define CMS_SIGNERINFO_KEYIDENTIFIER 1 + +# define CMS_RECIPINFO_NONE -1 +# define CMS_RECIPINFO_TRANS 0 +# define CMS_RECIPINFO_AGREE 1 +# define CMS_RECIPINFO_KEK 2 +# define CMS_RECIPINFO_PASS 3 +# define CMS_RECIPINFO_OTHER 4 + +/* S/MIME related flags */ + +# define CMS_TEXT 0x1 +# define CMS_NOCERTS 0x2 +# define CMS_NO_CONTENT_VERIFY 0x4 +# define CMS_NO_ATTR_VERIFY 0x8 +# define CMS_NOSIGS \ + (CMS_NO_CONTENT_VERIFY|CMS_NO_ATTR_VERIFY) +# define CMS_NOINTERN 0x10 +# define CMS_NO_SIGNER_CERT_VERIFY 0x20 +# define CMS_NOVERIFY 0x20 +# define CMS_DETACHED 0x40 +# define CMS_BINARY 0x80 +# define CMS_NOATTR 0x100 +# define CMS_NOSMIMECAP 0x200 +# define CMS_NOOLDMIMETYPE 0x400 +# define CMS_CRLFEOL 0x800 +# define CMS_STREAM 0x1000 +# define CMS_NOCRL 0x2000 +# define CMS_PARTIAL 0x4000 +# define CMS_REUSE_DIGEST 0x8000 +# define CMS_USE_KEYID 0x10000 +# define CMS_DEBUG_DECRYPT 0x20000 +# define CMS_KEY_PARAM 0x40000 +# define CMS_ASCIICRLF 0x80000 + +const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms); + +BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont); +int CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio); + +ASN1_OCTET_STRING **CMS_get0_content(CMS_ContentInfo *cms); +int CMS_is_detached(CMS_ContentInfo *cms); +int CMS_set_detached(CMS_ContentInfo *cms, int detached); + +# ifdef HEADER_PEM_H +DECLARE_PEM_rw_const(CMS, CMS_ContentInfo) +# endif +int CMS_stream(unsigned char ***boundary, CMS_ContentInfo *cms); +CMS_ContentInfo *d2i_CMS_bio(BIO *bp, CMS_ContentInfo **cms); +int i2d_CMS_bio(BIO *bp, CMS_ContentInfo *cms); + +BIO *BIO_new_CMS(BIO *out, CMS_ContentInfo *cms); +int i2d_CMS_bio_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, int flags); +int PEM_write_bio_CMS_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, + int flags); +CMS_ContentInfo *SMIME_read_CMS(BIO *bio, BIO **bcont); +int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); + +int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, + unsigned int flags); + +CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, BIO *data, + unsigned int flags); + +CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, + X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, unsigned int flags); + +int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); +CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); + +int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, + unsigned int flags); +CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, + unsigned int flags); + +int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, + const unsigned char *key, size_t keylen, + BIO *dcont, BIO *out, unsigned int flags); + +CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, + const unsigned char *key, + size_t keylen, unsigned int flags); + +int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, + const unsigned char *key, size_t keylen); + +int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs, + X509_STORE *store, BIO *dcont, BIO *out, unsigned int flags); + +int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms, + STACK_OF(X509) *certs, + X509_STORE *store, unsigned int flags); + +STACK_OF(X509) *CMS_get0_signers(CMS_ContentInfo *cms); + +CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, unsigned int flags); + +int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, + BIO *dcont, BIO *out, unsigned int flags); + +int CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert); +int CMS_decrypt_set1_key(CMS_ContentInfo *cms, + unsigned char *key, size_t keylen, + const unsigned char *id, size_t idlen); +int CMS_decrypt_set1_password(CMS_ContentInfo *cms, + unsigned char *pass, ossl_ssize_t passlen); + +STACK_OF(CMS_RecipientInfo) *CMS_get0_RecipientInfos(CMS_ContentInfo *cms); +int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); +EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); +CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); +CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, + X509 *recip, unsigned int flags); +int CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey); +int CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert); +int CMS_RecipientInfo_ktri_get0_algs(CMS_RecipientInfo *ri, + EVP_PKEY **pk, X509 **recip, + X509_ALGOR **palg); +int CMS_RecipientInfo_ktri_get0_signer_id(CMS_RecipientInfo *ri, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, + ASN1_INTEGER **sno); + +CMS_RecipientInfo *CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid, + unsigned char *key, size_t keylen, + unsigned char *id, size_t idlen, + ASN1_GENERALIZEDTIME *date, + ASN1_OBJECT *otherTypeId, + ASN1_TYPE *otherType); + +int CMS_RecipientInfo_kekri_get0_id(CMS_RecipientInfo *ri, + X509_ALGOR **palg, + ASN1_OCTET_STRING **pid, + ASN1_GENERALIZEDTIME **pdate, + ASN1_OBJECT **potherid, + ASN1_TYPE **pothertype); + +int CMS_RecipientInfo_set0_key(CMS_RecipientInfo *ri, + unsigned char *key, size_t keylen); + +int CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo *ri, + const unsigned char *id, size_t idlen); + +int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri, + unsigned char *pass, + ossl_ssize_t passlen); + +CMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms, + int iter, int wrap_nid, + int pbe_nid, + unsigned char *pass, + ossl_ssize_t passlen, + const EVP_CIPHER *kekciph); + +int CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri); +int CMS_RecipientInfo_encrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri); + +int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out, + unsigned int flags); +CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags); + +int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid); +const ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms); + +CMS_CertificateChoices *CMS_add0_CertificateChoices(CMS_ContentInfo *cms); +int CMS_add0_cert(CMS_ContentInfo *cms, X509 *cert); +int CMS_add1_cert(CMS_ContentInfo *cms, X509 *cert); +STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms); + +CMS_RevocationInfoChoice *CMS_add0_RevocationInfoChoice(CMS_ContentInfo *cms); +int CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl); +int CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl); +STACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms); + +int CMS_SignedData_init(CMS_ContentInfo *cms); +CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms, + X509 *signer, EVP_PKEY *pk, const EVP_MD *md, + unsigned int flags); +EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si); +EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si); +STACK_OF(CMS_SignerInfo) *CMS_get0_SignerInfos(CMS_ContentInfo *cms); + +void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer); +int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert); +int CMS_set1_signers_certs(CMS_ContentInfo *cms, STACK_OF(X509) *certs, + unsigned int flags); +void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk, + X509 **signer, X509_ALGOR **pdig, + X509_ALGOR **psig); +ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); +int CMS_SignerInfo_sign(CMS_SignerInfo *si); +int CMS_SignerInfo_verify(CMS_SignerInfo *si); +int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); + +int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); +int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, + int algnid, int keysize); +int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap); + +int CMS_signed_get_attr_count(const CMS_SignerInfo *si); +int CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_signed_get0_data_by_OBJ(CMS_SignerInfo *si, const ASN1_OBJECT *oid, + int lastpos, int type); + +int CMS_unsigned_get_attr_count(const CMS_SignerInfo *si); +int CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid, + int lastpos, int type); + +int CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr); +CMS_ReceiptRequest *CMS_ReceiptRequest_create0(unsigned char *id, int idlen, + int allorfirst, + STACK_OF(GENERAL_NAMES) + *receiptList, STACK_OF(GENERAL_NAMES) + *receiptsTo); +int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); +void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, + ASN1_STRING **pcid, + int *pallorfirst, + STACK_OF(GENERAL_NAMES) **plist, + STACK_OF(GENERAL_NAMES) **prto); +int CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri, + X509_ALGOR **palg, + ASN1_OCTET_STRING **pukm); +STACK_OF(CMS_RecipientEncryptedKey) +*CMS_RecipientInfo_kari_get0_reks(CMS_RecipientInfo *ri); + +int CMS_RecipientInfo_kari_get0_orig_id(CMS_RecipientInfo *ri, + X509_ALGOR **pubalg, + ASN1_BIT_STRING **pubkey, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, + ASN1_INTEGER **sno); + +int CMS_RecipientInfo_kari_orig_id_cmp(CMS_RecipientInfo *ri, X509 *cert); + +int CMS_RecipientEncryptedKey_get0_id(CMS_RecipientEncryptedKey *rek, + ASN1_OCTET_STRING **keyid, + ASN1_GENERALIZEDTIME **tm, + CMS_OtherKeyAttribute **other, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_RecipientEncryptedKey_cert_cmp(CMS_RecipientEncryptedKey *rek, + X509 *cert); +int CMS_RecipientInfo_kari_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk); +EVP_CIPHER_CTX *CMS_RecipientInfo_kari_get0_ctx(CMS_RecipientInfo *ri); +int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms, + CMS_RecipientInfo *ri, + CMS_RecipientEncryptedKey *rek); + +int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg, + ASN1_OCTET_STRING *ukm, int keylen); + +/* Backward compatibility for spelling errors. */ +# define CMS_R_UNKNOWN_DIGEST_ALGORITM CMS_R_UNKNOWN_DIGEST_ALGORITHM +# define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE \ + CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/win64/include/openssl/cmserr.h b/openSSL/win64/include/openssl/cmserr.h new file mode 100644 index 0000000..7dbc13d --- /dev/null +++ b/openSSL/win64/include/openssl/cmserr.h @@ -0,0 +1,202 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMSERR_H +# define HEADER_CMSERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_CMS + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CMS_strings(void); + +/* + * CMS function codes. + */ +# define CMS_F_CHECK_CONTENT 99 +# define CMS_F_CMS_ADD0_CERT 164 +# define CMS_F_CMS_ADD0_RECIPIENT_KEY 100 +# define CMS_F_CMS_ADD0_RECIPIENT_PASSWORD 165 +# define CMS_F_CMS_ADD1_RECEIPTREQUEST 158 +# define CMS_F_CMS_ADD1_RECIPIENT_CERT 101 +# define CMS_F_CMS_ADD1_SIGNER 102 +# define CMS_F_CMS_ADD1_SIGNINGTIME 103 +# define CMS_F_CMS_COMPRESS 104 +# define CMS_F_CMS_COMPRESSEDDATA_CREATE 105 +# define CMS_F_CMS_COMPRESSEDDATA_INIT_BIO 106 +# define CMS_F_CMS_COPY_CONTENT 107 +# define CMS_F_CMS_COPY_MESSAGEDIGEST 108 +# define CMS_F_CMS_DATA 109 +# define CMS_F_CMS_DATAFINAL 110 +# define CMS_F_CMS_DATAINIT 111 +# define CMS_F_CMS_DECRYPT 112 +# define CMS_F_CMS_DECRYPT_SET1_KEY 113 +# define CMS_F_CMS_DECRYPT_SET1_PASSWORD 166 +# define CMS_F_CMS_DECRYPT_SET1_PKEY 114 +# define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX 115 +# define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO 116 +# define CMS_F_CMS_DIGESTEDDATA_DO_FINAL 117 +# define CMS_F_CMS_DIGEST_VERIFY 118 +# define CMS_F_CMS_ENCODE_RECEIPT 161 +# define CMS_F_CMS_ENCRYPT 119 +# define CMS_F_CMS_ENCRYPTEDCONTENT_INIT 179 +# define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO 120 +# define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT 121 +# define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT 122 +# define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY 123 +# define CMS_F_CMS_ENVELOPEDDATA_CREATE 124 +# define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO 125 +# define CMS_F_CMS_ENVELOPED_DATA_INIT 126 +# define CMS_F_CMS_ENV_ASN1_CTRL 171 +# define CMS_F_CMS_FINAL 127 +# define CMS_F_CMS_GET0_CERTIFICATE_CHOICES 128 +# define CMS_F_CMS_GET0_CONTENT 129 +# define CMS_F_CMS_GET0_ECONTENT_TYPE 130 +# define CMS_F_CMS_GET0_ENVELOPED 131 +# define CMS_F_CMS_GET0_REVOCATION_CHOICES 132 +# define CMS_F_CMS_GET0_SIGNED 133 +# define CMS_F_CMS_MSGSIGDIGEST_ADD1 162 +# define CMS_F_CMS_RECEIPTREQUEST_CREATE0 159 +# define CMS_F_CMS_RECEIPT_VERIFY 160 +# define CMS_F_CMS_RECIPIENTINFO_DECRYPT 134 +# define CMS_F_CMS_RECIPIENTINFO_ENCRYPT 169 +# define CMS_F_CMS_RECIPIENTINFO_KARI_ENCRYPT 178 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ALG 175 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ORIG_ID 173 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_REKS 172 +# define CMS_F_CMS_RECIPIENTINFO_KARI_ORIG_ID_CMP 174 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT 135 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT 136 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID 137 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP 138 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP 139 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT 140 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT 141 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS 142 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID 143 +# define CMS_F_CMS_RECIPIENTINFO_PWRI_CRYPT 167 +# define CMS_F_CMS_RECIPIENTINFO_SET0_KEY 144 +# define CMS_F_CMS_RECIPIENTINFO_SET0_PASSWORD 168 +# define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY 145 +# define CMS_F_CMS_SD_ASN1_CTRL 170 +# define CMS_F_CMS_SET1_IAS 176 +# define CMS_F_CMS_SET1_KEYID 177 +# define CMS_F_CMS_SET1_SIGNERIDENTIFIER 146 +# define CMS_F_CMS_SET_DETACHED 147 +# define CMS_F_CMS_SIGN 148 +# define CMS_F_CMS_SIGNED_DATA_INIT 149 +# define CMS_F_CMS_SIGNERINFO_CONTENT_SIGN 150 +# define CMS_F_CMS_SIGNERINFO_SIGN 151 +# define CMS_F_CMS_SIGNERINFO_VERIFY 152 +# define CMS_F_CMS_SIGNERINFO_VERIFY_CERT 153 +# define CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT 154 +# define CMS_F_CMS_SIGN_RECEIPT 163 +# define CMS_F_CMS_SI_CHECK_ATTRIBUTES 183 +# define CMS_F_CMS_STREAM 155 +# define CMS_F_CMS_UNCOMPRESS 156 +# define CMS_F_CMS_VERIFY 157 +# define CMS_F_KEK_UNWRAP_KEY 180 + +/* + * CMS reason codes. + */ +# define CMS_R_ADD_SIGNER_ERROR 99 +# define CMS_R_ATTRIBUTE_ERROR 161 +# define CMS_R_CERTIFICATE_ALREADY_PRESENT 175 +# define CMS_R_CERTIFICATE_HAS_NO_KEYID 160 +# define CMS_R_CERTIFICATE_VERIFY_ERROR 100 +# define CMS_R_CIPHER_INITIALISATION_ERROR 101 +# define CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR 102 +# define CMS_R_CMS_DATAFINAL_ERROR 103 +# define CMS_R_CMS_LIB 104 +# define CMS_R_CONTENTIDENTIFIER_MISMATCH 170 +# define CMS_R_CONTENT_NOT_FOUND 105 +# define CMS_R_CONTENT_TYPE_MISMATCH 171 +# define CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA 106 +# define CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA 107 +# define CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA 108 +# define CMS_R_CONTENT_VERIFY_ERROR 109 +# define CMS_R_CTRL_ERROR 110 +# define CMS_R_CTRL_FAILURE 111 +# define CMS_R_DECRYPT_ERROR 112 +# define CMS_R_ERROR_GETTING_PUBLIC_KEY 113 +# define CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE 114 +# define CMS_R_ERROR_SETTING_KEY 115 +# define CMS_R_ERROR_SETTING_RECIPIENTINFO 116 +# define CMS_R_INVALID_ENCRYPTED_KEY_LENGTH 117 +# define CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER 176 +# define CMS_R_INVALID_KEY_LENGTH 118 +# define CMS_R_MD_BIO_INIT_ERROR 119 +# define CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH 120 +# define CMS_R_MESSAGEDIGEST_WRONG_LENGTH 121 +# define CMS_R_MSGSIGDIGEST_ERROR 172 +# define CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE 162 +# define CMS_R_MSGSIGDIGEST_WRONG_LENGTH 163 +# define CMS_R_NEED_ONE_SIGNER 164 +# define CMS_R_NOT_A_SIGNED_RECEIPT 165 +# define CMS_R_NOT_ENCRYPTED_DATA 122 +# define CMS_R_NOT_KEK 123 +# define CMS_R_NOT_KEY_AGREEMENT 181 +# define CMS_R_NOT_KEY_TRANSPORT 124 +# define CMS_R_NOT_PWRI 177 +# define CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 125 +# define CMS_R_NO_CIPHER 126 +# define CMS_R_NO_CONTENT 127 +# define CMS_R_NO_CONTENT_TYPE 173 +# define CMS_R_NO_DEFAULT_DIGEST 128 +# define CMS_R_NO_DIGEST_SET 129 +# define CMS_R_NO_KEY 130 +# define CMS_R_NO_KEY_OR_CERT 174 +# define CMS_R_NO_MATCHING_DIGEST 131 +# define CMS_R_NO_MATCHING_RECIPIENT 132 +# define CMS_R_NO_MATCHING_SIGNATURE 166 +# define CMS_R_NO_MSGSIGDIGEST 167 +# define CMS_R_NO_PASSWORD 178 +# define CMS_R_NO_PRIVATE_KEY 133 +# define CMS_R_NO_PUBLIC_KEY 134 +# define CMS_R_NO_RECEIPT_REQUEST 168 +# define CMS_R_NO_SIGNERS 135 +# define CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 136 +# define CMS_R_RECEIPT_DECODE_ERROR 169 +# define CMS_R_RECIPIENT_ERROR 137 +# define CMS_R_SIGNER_CERTIFICATE_NOT_FOUND 138 +# define CMS_R_SIGNFINAL_ERROR 139 +# define CMS_R_SMIME_TEXT_ERROR 140 +# define CMS_R_STORE_INIT_ERROR 141 +# define CMS_R_TYPE_NOT_COMPRESSED_DATA 142 +# define CMS_R_TYPE_NOT_DATA 143 +# define CMS_R_TYPE_NOT_DIGESTED_DATA 144 +# define CMS_R_TYPE_NOT_ENCRYPTED_DATA 145 +# define CMS_R_TYPE_NOT_ENVELOPED_DATA 146 +# define CMS_R_UNABLE_TO_FINALIZE_CONTEXT 147 +# define CMS_R_UNKNOWN_CIPHER 148 +# define CMS_R_UNKNOWN_DIGEST_ALGORITHM 149 +# define CMS_R_UNKNOWN_ID 150 +# define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM 151 +# define CMS_R_UNSUPPORTED_CONTENT_TYPE 152 +# define CMS_R_UNSUPPORTED_KEK_ALGORITHM 153 +# define CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM 179 +# define CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE 155 +# define CMS_R_UNSUPPORTED_RECIPIENT_TYPE 154 +# define CMS_R_UNSUPPORTED_TYPE 156 +# define CMS_R_UNWRAP_ERROR 157 +# define CMS_R_UNWRAP_FAILURE 180 +# define CMS_R_VERIFICATION_FAILURE 158 +# define CMS_R_WRAP_ERROR 159 + +# endif +#endif diff --git a/openSSL/win64/include/openssl/comp.h b/openSSL/win64/include/openssl/comp.h new file mode 100644 index 0000000..d814d3c --- /dev/null +++ b/openSSL/win64/include/openssl/comp.h @@ -0,0 +1,53 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_COMP_H +# define HEADER_COMP_H + +# include + +# ifndef OPENSSL_NO_COMP +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); + +#if OPENSSL_API_COMPAT < 0x10100000L +#define COMP_zlib_cleanup() while(0) continue +#endif + +# ifdef HEADER_BIO_H +# ifdef ZLIB +const BIO_METHOD *BIO_f_zlib(void); +# endif +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/win64/include/openssl/comperr.h b/openSSL/win64/include/openssl/comperr.h new file mode 100644 index 0000000..90231e9 --- /dev/null +++ b/openSSL/win64/include/openssl/comperr.h @@ -0,0 +1,44 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_COMPERR_H +# define HEADER_COMPERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_COMP + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_COMP_strings(void); + +/* + * COMP function codes. + */ +# define COMP_F_BIO_ZLIB_FLUSH 99 +# define COMP_F_BIO_ZLIB_NEW 100 +# define COMP_F_BIO_ZLIB_READ 101 +# define COMP_F_BIO_ZLIB_WRITE 102 +# define COMP_F_COMP_CTX_NEW 103 + +/* + * COMP reason codes. + */ +# define COMP_R_ZLIB_DEFLATE_ERROR 99 +# define COMP_R_ZLIB_INFLATE_ERROR 100 +# define COMP_R_ZLIB_NOT_SUPPORTED 101 + +# endif +#endif diff --git a/openSSL/win64/include/openssl/conf.h b/openSSL/win64/include/openssl/conf.h new file mode 100644 index 0000000..7336cd2 --- /dev/null +++ b/openSSL/win64/include/openssl/conf.h @@ -0,0 +1,168 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CONF_H +# define HEADER_CONF_H + +# include +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char *section; + char *name; + char *value; +} CONF_VALUE; + +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_LHASH_OF(CONF_VALUE); + +struct conf_st; +struct conf_method_st; +typedef struct conf_method_st CONF_METHOD; + +struct conf_method_st { + const char *name; + CONF *(*create) (CONF_METHOD *meth); + int (*init) (CONF *conf); + int (*destroy) (CONF *conf); + int (*destroy_data) (CONF *conf); + int (*load_bio) (CONF *conf, BIO *bp, long *eline); + int (*dump) (const CONF *conf, BIO *bp); + int (*is_number) (const CONF *conf, char c); + int (*to_int) (const CONF *conf, char c); + int (*load) (CONF *conf, const char *name, long *eline); +}; + +/* Module definitions */ + +typedef struct conf_imodule_st CONF_IMODULE; +typedef struct conf_module_st CONF_MODULE; + +DEFINE_STACK_OF(CONF_MODULE) +DEFINE_STACK_OF(CONF_IMODULE) + +/* DSO module function typedefs */ +typedef int conf_init_func (CONF_IMODULE *md, const CONF *cnf); +typedef void conf_finish_func (CONF_IMODULE *md); + +# define CONF_MFLAGS_IGNORE_ERRORS 0x1 +# define CONF_MFLAGS_IGNORE_RETURN_CODES 0x2 +# define CONF_MFLAGS_SILENT 0x4 +# define CONF_MFLAGS_NO_DSO 0x8 +# define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10 +# define CONF_MFLAGS_DEFAULT_SECTION 0x20 + +int CONF_set_default_method(CONF_METHOD *meth); +void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash); +LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file, + long *eline); +# ifndef OPENSSL_NO_STDIO +LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp, + long *eline); +# endif +LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp, + long *eline); +STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf, + const char *section); +char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf, const char *group, + const char *name); +long CONF_get_number(LHASH_OF(CONF_VALUE) *conf, const char *group, + const char *name); +void CONF_free(LHASH_OF(CONF_VALUE) *conf); +#ifndef OPENSSL_NO_STDIO +int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out); +#endif +int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out); + +DEPRECATEDIN_1_1_0(void OPENSSL_config(const char *config_name)) + +#if OPENSSL_API_COMPAT < 0x10100000L +# define OPENSSL_no_config() \ + OPENSSL_init_crypto(OPENSSL_INIT_NO_LOAD_CONFIG, NULL) +#endif + +/* + * New conf code. The semantics are different from the functions above. If + * that wasn't the case, the above functions would have been replaced + */ + +struct conf_st { + CONF_METHOD *meth; + void *meth_data; + LHASH_OF(CONF_VALUE) *data; +}; + +CONF *NCONF_new(CONF_METHOD *meth); +CONF_METHOD *NCONF_default(void); +CONF_METHOD *NCONF_WIN32(void); +void NCONF_free(CONF *conf); +void NCONF_free_data(CONF *conf); + +int NCONF_load(CONF *conf, const char *file, long *eline); +# ifndef OPENSSL_NO_STDIO +int NCONF_load_fp(CONF *conf, FILE *fp, long *eline); +# endif +int NCONF_load_bio(CONF *conf, BIO *bp, long *eline); +STACK_OF(CONF_VALUE) *NCONF_get_section(const CONF *conf, + const char *section); +char *NCONF_get_string(const CONF *conf, const char *group, const char *name); +int NCONF_get_number_e(const CONF *conf, const char *group, const char *name, + long *result); +#ifndef OPENSSL_NO_STDIO +int NCONF_dump_fp(const CONF *conf, FILE *out); +#endif +int NCONF_dump_bio(const CONF *conf, BIO *out); + +#define NCONF_get_number(c,g,n,r) NCONF_get_number_e(c,g,n,r) + +/* Module functions */ + +int CONF_modules_load(const CONF *cnf, const char *appname, + unsigned long flags); +int CONF_modules_load_file(const char *filename, const char *appname, + unsigned long flags); +void CONF_modules_unload(int all); +void CONF_modules_finish(void); +#if OPENSSL_API_COMPAT < 0x10100000L +# define CONF_modules_free() while(0) continue +#endif +int CONF_module_add(const char *name, conf_init_func *ifunc, + conf_finish_func *ffunc); + +const char *CONF_imodule_get_name(const CONF_IMODULE *md); +const char *CONF_imodule_get_value(const CONF_IMODULE *md); +void *CONF_imodule_get_usr_data(const CONF_IMODULE *md); +void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data); +CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md); +unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md); +void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags); +void *CONF_module_get_usr_data(CONF_MODULE *pmod); +void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data); + +char *CONF_get1_default_config_file(void); + +int CONF_parse_list(const char *list, int sep, int nospc, + int (*list_cb) (const char *elem, int len, void *usr), + void *arg); + +void OPENSSL_load_builtin_modules(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/conf_api.h b/openSSL/win64/include/openssl/conf_api.h new file mode 100644 index 0000000..a0275ad --- /dev/null +++ b/openSSL/win64/include/openssl/conf_api.h @@ -0,0 +1,40 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CONF_API_H +# define HEADER_CONF_API_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Up until OpenSSL 0.9.5a, this was new_section */ +CONF_VALUE *_CONF_new_section(CONF *conf, const char *section); +/* Up until OpenSSL 0.9.5a, this was get_section */ +CONF_VALUE *_CONF_get_section(const CONF *conf, const char *section); +/* Up until OpenSSL 0.9.5a, this was CONF_get_section */ +STACK_OF(CONF_VALUE) *_CONF_get_section_values(const CONF *conf, + const char *section); + +int _CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value); +char *_CONF_get_string(const CONF *conf, const char *section, + const char *name); +long _CONF_get_number(const CONF *conf, const char *section, + const char *name); + +int _CONF_new_data(CONF *conf); +void _CONF_free_data(CONF *conf); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/win64/include/openssl/conferr.h b/openSSL/win64/include/openssl/conferr.h new file mode 100644 index 0000000..32b9229 --- /dev/null +++ b/openSSL/win64/include/openssl/conferr.h @@ -0,0 +1,76 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CONFERR_H +# define HEADER_CONFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CONF_strings(void); + +/* + * CONF function codes. + */ +# define CONF_F_CONF_DUMP_FP 104 +# define CONF_F_CONF_LOAD 100 +# define CONF_F_CONF_LOAD_FP 103 +# define CONF_F_CONF_PARSE_LIST 119 +# define CONF_F_DEF_LOAD 120 +# define CONF_F_DEF_LOAD_BIO 121 +# define CONF_F_GET_NEXT_FILE 107 +# define CONF_F_MODULE_ADD 122 +# define CONF_F_MODULE_INIT 115 +# define CONF_F_MODULE_LOAD_DSO 117 +# define CONF_F_MODULE_RUN 118 +# define CONF_F_NCONF_DUMP_BIO 105 +# define CONF_F_NCONF_DUMP_FP 106 +# define CONF_F_NCONF_GET_NUMBER_E 112 +# define CONF_F_NCONF_GET_SECTION 108 +# define CONF_F_NCONF_GET_STRING 109 +# define CONF_F_NCONF_LOAD 113 +# define CONF_F_NCONF_LOAD_BIO 110 +# define CONF_F_NCONF_LOAD_FP 114 +# define CONF_F_NCONF_NEW 111 +# define CONF_F_PROCESS_INCLUDE 116 +# define CONF_F_SSL_MODULE_INIT 123 +# define CONF_F_STR_COPY 101 + +/* + * CONF reason codes. + */ +# define CONF_R_ERROR_LOADING_DSO 110 +# define CONF_R_LIST_CANNOT_BE_NULL 115 +# define CONF_R_MISSING_CLOSE_SQUARE_BRACKET 100 +# define CONF_R_MISSING_EQUAL_SIGN 101 +# define CONF_R_MISSING_INIT_FUNCTION 112 +# define CONF_R_MODULE_INITIALIZATION_ERROR 109 +# define CONF_R_NO_CLOSE_BRACE 102 +# define CONF_R_NO_CONF 105 +# define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106 +# define CONF_R_NO_SECTION 107 +# define CONF_R_NO_SUCH_FILE 114 +# define CONF_R_NO_VALUE 108 +# define CONF_R_NUMBER_TOO_LARGE 121 +# define CONF_R_RECURSIVE_DIRECTORY_INCLUDE 111 +# define CONF_R_SSL_COMMAND_SECTION_EMPTY 117 +# define CONF_R_SSL_COMMAND_SECTION_NOT_FOUND 118 +# define CONF_R_SSL_SECTION_EMPTY 119 +# define CONF_R_SSL_SECTION_NOT_FOUND 120 +# define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103 +# define CONF_R_UNKNOWN_MODULE_NAME 113 +# define CONF_R_VARIABLE_EXPANSION_TOO_LONG 116 +# define CONF_R_VARIABLE_HAS_NO_VALUE 104 + +#endif diff --git a/openSSL/win64/include/openssl/crypto.h b/openSSL/win64/include/openssl/crypto.h new file mode 100644 index 0000000..7d0b526 --- /dev/null +++ b/openSSL/win64/include/openssl/crypto.h @@ -0,0 +1,445 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CRYPTO_H +# define HEADER_CRYPTO_H + +# include +# include + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif + +# include +# include +# include +# include +# include + +# ifdef CHARSET_EBCDIC +# include +# endif + +/* + * Resolve problems on some operating systems with symbol names that clash + * one way or another + */ +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSLeay OpenSSL_version_num +# define SSLeay_version OpenSSL_version +# define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER +# define SSLEAY_VERSION OPENSSL_VERSION +# define SSLEAY_CFLAGS OPENSSL_CFLAGS +# define SSLEAY_BUILT_ON OPENSSL_BUILT_ON +# define SSLEAY_PLATFORM OPENSSL_PLATFORM +# define SSLEAY_DIR OPENSSL_DIR + +/* + * Old type for allocating dynamic locks. No longer used. Use the new thread + * API instead. + */ +typedef struct { + int dummy; +} CRYPTO_dynlock; + +# endif /* OPENSSL_API_COMPAT */ + +typedef void CRYPTO_RWLOCK; + +CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); +int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock); +int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock); +int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); +void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); + +int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); + +/* + * The following can be used to detect memory leaks in the library. If + * used, it turns on malloc checking + */ +# define CRYPTO_MEM_CHECK_OFF 0x0 /* Control only */ +# define CRYPTO_MEM_CHECK_ON 0x1 /* Control and mode bit */ +# define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ +# define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ + +struct crypto_ex_data_st { + STACK_OF(void) *sk; +}; +DEFINE_STACK_OF(void) + +/* + * Per class, we have a STACK of function pointers. + */ +# define CRYPTO_EX_INDEX_SSL 0 +# define CRYPTO_EX_INDEX_SSL_CTX 1 +# define CRYPTO_EX_INDEX_SSL_SESSION 2 +# define CRYPTO_EX_INDEX_X509 3 +# define CRYPTO_EX_INDEX_X509_STORE 4 +# define CRYPTO_EX_INDEX_X509_STORE_CTX 5 +# define CRYPTO_EX_INDEX_DH 6 +# define CRYPTO_EX_INDEX_DSA 7 +# define CRYPTO_EX_INDEX_EC_KEY 8 +# define CRYPTO_EX_INDEX_RSA 9 +# define CRYPTO_EX_INDEX_ENGINE 10 +# define CRYPTO_EX_INDEX_UI 11 +# define CRYPTO_EX_INDEX_BIO 12 +# define CRYPTO_EX_INDEX_APP 13 +# define CRYPTO_EX_INDEX_UI_METHOD 14 +# define CRYPTO_EX_INDEX_DRBG 15 +# define CRYPTO_EX_INDEX__COUNT 16 + +/* No longer needed, so this is a no-op */ +#define OPENSSL_malloc_init() while(0) continue + +int CRYPTO_mem_ctrl(int mode); + +# define OPENSSL_malloc(num) \ + CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_zalloc(num) \ + CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_realloc(addr, num) \ + CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_realloc(addr, old_num, num) \ + CRYPTO_clear_realloc(addr, old_num, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_free(addr, num) \ + CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_free(addr) \ + CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_memdup(str, s) \ + CRYPTO_memdup((str), s, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strdup(str) \ + CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strndup(str, n) \ + CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_malloc(num) \ + CRYPTO_secure_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_zalloc(num) \ + CRYPTO_secure_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_free(addr) \ + CRYPTO_secure_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_clear_free(addr, num) \ + CRYPTO_secure_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_actual_size(ptr) \ + CRYPTO_secure_actual_size(ptr) + +size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); +size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); +size_t OPENSSL_strnlen(const char *str, size_t maxlen); +char *OPENSSL_buf2hexstr(const unsigned char *buffer, long len); +unsigned char *OPENSSL_hexstr2buf(const char *str, long *len); +int OPENSSL_hexchar2int(unsigned char c); + +# define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U<<(sizeof(int)*8-1))-1)/sizeof(type)) + +unsigned long OpenSSL_version_num(void); +const char *OpenSSL_version(int type); +# define OPENSSL_VERSION 0 +# define OPENSSL_CFLAGS 1 +# define OPENSSL_BUILT_ON 2 +# define OPENSSL_PLATFORM 3 +# define OPENSSL_DIR 4 +# define OPENSSL_ENGINES_DIR 5 + +int OPENSSL_issetugid(void); + +typedef void CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp); +__owur int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, + CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); +/* No longer use an index. */ +int CRYPTO_free_ex_index(int class_index, int idx); + +/* + * Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a + * given class (invokes whatever per-class callbacks are applicable) + */ +int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); +int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, + const CRYPTO_EX_DATA *from); + +void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); + +/* + * Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular + * index (relative to the class type involved) + */ +int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); +void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx); + +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * This function cleans up all "ex_data" state. It mustn't be called under + * potential race-conditions. + */ +# define CRYPTO_cleanup_all_ex_data() while(0) continue + +/* + * The old locking functions have been removed completely without compatibility + * macros. This is because the old functions either could not properly report + * errors, or the returned error values were not clearly documented. + * Replacing the locking functions with no-ops would cause race condition + * issues in the affected applications. It is far better for them to fail at + * compile time. + * On the other hand, the locking callbacks are no longer used. Consequently, + * the callback management functions can be safely replaced with no-op macros. + */ +# define CRYPTO_num_locks() (1) +# define CRYPTO_set_locking_callback(func) +# define CRYPTO_get_locking_callback() (NULL) +# define CRYPTO_set_add_lock_callback(func) +# define CRYPTO_get_add_lock_callback() (NULL) + +/* + * These defines where used in combination with the old locking callbacks, + * they are not called anymore, but old code that's not called might still + * use them. + */ +# define CRYPTO_LOCK 1 +# define CRYPTO_UNLOCK 2 +# define CRYPTO_READ 4 +# define CRYPTO_WRITE 8 + +/* This structure is no longer used */ +typedef struct crypto_threadid_st { + int dummy; +} CRYPTO_THREADID; +/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */ +# define CRYPTO_THREADID_set_numeric(id, val) +# define CRYPTO_THREADID_set_pointer(id, ptr) +# define CRYPTO_THREADID_set_callback(threadid_func) (0) +# define CRYPTO_THREADID_get_callback() (NULL) +# define CRYPTO_THREADID_current(id) +# define CRYPTO_THREADID_cmp(a, b) (-1) +# define CRYPTO_THREADID_cpy(dest, src) +# define CRYPTO_THREADID_hash(id) (0UL) + +# if OPENSSL_API_COMPAT < 0x10000000L +# define CRYPTO_set_id_callback(func) +# define CRYPTO_get_id_callback() (NULL) +# define CRYPTO_thread_id() (0UL) +# endif /* OPENSSL_API_COMPAT < 0x10000000L */ + +# define CRYPTO_set_dynlock_create_callback(dyn_create_function) +# define CRYPTO_set_dynlock_lock_callback(dyn_lock_function) +# define CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function) +# define CRYPTO_get_dynlock_create_callback() (NULL) +# define CRYPTO_get_dynlock_lock_callback() (NULL) +# define CRYPTO_get_dynlock_destroy_callback() (NULL) +# endif /* OPENSSL_API_COMPAT < 0x10100000L */ + +int CRYPTO_set_mem_functions( + void *(*m) (size_t, const char *, int), + void *(*r) (void *, size_t, const char *, int), + void (*f) (void *, const char *, int)); +int CRYPTO_set_mem_debug(int flag); +void CRYPTO_get_mem_functions( + void *(**m) (size_t, const char *, int), + void *(**r) (void *, size_t, const char *, int), + void (**f) (void *, const char *, int)); + +void *CRYPTO_malloc(size_t num, const char *file, int line); +void *CRYPTO_zalloc(size_t num, const char *file, int line); +void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +char *CRYPTO_strdup(const char *str, const char *file, int line); +char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +void CRYPTO_free(void *ptr, const char *file, int line); +void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); +void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); +void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, + const char *file, int line); + +int CRYPTO_secure_malloc_init(size_t sz, int minsize); +int CRYPTO_secure_malloc_done(void); +void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +void CRYPTO_secure_free(void *ptr, const char *file, int line); +void CRYPTO_secure_clear_free(void *ptr, size_t num, + const char *file, int line); +int CRYPTO_secure_allocated(const void *ptr); +int CRYPTO_secure_malloc_initialized(void); +size_t CRYPTO_secure_actual_size(void *ptr); +size_t CRYPTO_secure_used(void); + +void OPENSSL_cleanse(void *ptr, size_t len); + +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_mem_debug_push(info) \ + CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_mem_debug_pop() \ + CRYPTO_mem_debug_pop() +int CRYPTO_mem_debug_push(const char *info, const char *file, int line); +int CRYPTO_mem_debug_pop(void); +void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); + +/*- + * Debugging functions (enabled by CRYPTO_set_mem_debug(1)) + * The flag argument has the following significance: + * 0: called before the actual memory allocation has taken place + * 1: called after the actual memory allocation has taken place + */ +void CRYPTO_mem_debug_malloc(void *addr, size_t num, int flag, + const char *file, int line); +void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, size_t num, int flag, + const char *file, int line); +void CRYPTO_mem_debug_free(void *addr, int flag, + const char *file, int line); + +int CRYPTO_mem_leaks_cb(int (*cb) (const char *str, size_t len, void *u), + void *u); +# ifndef OPENSSL_NO_STDIO +int CRYPTO_mem_leaks_fp(FILE *); +# endif +int CRYPTO_mem_leaks(BIO *bio); +# endif + +/* die if we have to */ +ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line); +# if OPENSSL_API_COMPAT < 0x10100000L +# define OpenSSLDie(f,l,a) OPENSSL_die((a),(f),(l)) +# endif +# define OPENSSL_assert(e) \ + (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1)) + +int OPENSSL_isservice(void); + +int FIPS_mode(void); +int FIPS_mode_set(int r); + +void OPENSSL_init(void); +# ifdef OPENSSL_SYS_UNIX +void OPENSSL_fork_prepare(void); +void OPENSSL_fork_parent(void); +void OPENSSL_fork_child(void); +# endif + +struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result); +int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec); +int OPENSSL_gmtime_diff(int *pday, int *psec, + const struct tm *from, const struct tm *to); + +/* + * CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal. + * It takes an amount of time dependent on |len|, but independent of the + * contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements + * into a defined order as the return value when a != b is undefined, other + * than to be non-zero. + */ +int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len); + +/* Standard initialisation options */ +# define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L +# define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L +# define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L +# define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L +# define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0x00000010L +# define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0x00000020L +# define OPENSSL_INIT_LOAD_CONFIG 0x00000040L +# define OPENSSL_INIT_NO_LOAD_CONFIG 0x00000080L +# define OPENSSL_INIT_ASYNC 0x00000100L +# define OPENSSL_INIT_ENGINE_RDRAND 0x00000200L +# define OPENSSL_INIT_ENGINE_DYNAMIC 0x00000400L +# define OPENSSL_INIT_ENGINE_OPENSSL 0x00000800L +# define OPENSSL_INIT_ENGINE_CRYPTODEV 0x00001000L +# define OPENSSL_INIT_ENGINE_CAPI 0x00002000L +# define OPENSSL_INIT_ENGINE_PADLOCK 0x00004000L +# define OPENSSL_INIT_ENGINE_AFALG 0x00008000L +/* OPENSSL_INIT_ZLIB 0x00010000L */ +# define OPENSSL_INIT_ATFORK 0x00020000L +/* OPENSSL_INIT_BASE_ONLY 0x00040000L */ +# define OPENSSL_INIT_NO_ATEXIT 0x00080000L +/* OPENSSL_INIT flag range 0xfff00000 reserved for OPENSSL_init_ssl() */ +/* Max OPENSSL_INIT flag value is 0x80000000 */ + +/* openssl and dasync not counted as builtin */ +# define OPENSSL_INIT_ENGINE_ALL_BUILTIN \ + (OPENSSL_INIT_ENGINE_RDRAND | OPENSSL_INIT_ENGINE_DYNAMIC \ + | OPENSSL_INIT_ENGINE_CRYPTODEV | OPENSSL_INIT_ENGINE_CAPI | \ + OPENSSL_INIT_ENGINE_PADLOCK) + + +/* Library initialisation functions */ +void OPENSSL_cleanup(void); +int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); +int OPENSSL_atexit(void (*handler)(void)); +void OPENSSL_thread_stop(void); + +/* Low-level control of initialization */ +OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void); +# ifndef OPENSSL_NO_STDIO +int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings, + const char *config_filename); +void OPENSSL_INIT_set_config_file_flags(OPENSSL_INIT_SETTINGS *settings, + unsigned long flags); +int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings, + const char *config_appname); +# endif +void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings); + +# if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG) +# if defined(_WIN32) +# if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include in order to use this */ +typedef DWORD CRYPTO_THREAD_LOCAL; +typedef DWORD CRYPTO_THREAD_ID; + +typedef LONG CRYPTO_ONCE; +# define CRYPTO_ONCE_STATIC_INIT 0 +# endif +# else +# include +typedef pthread_once_t CRYPTO_ONCE; +typedef pthread_key_t CRYPTO_THREAD_LOCAL; +typedef pthread_t CRYPTO_THREAD_ID; + +# define CRYPTO_ONCE_STATIC_INIT PTHREAD_ONCE_INIT +# endif +# endif + +# if !defined(CRYPTO_ONCE_STATIC_INIT) +typedef unsigned int CRYPTO_ONCE; +typedef unsigned int CRYPTO_THREAD_LOCAL; +typedef unsigned int CRYPTO_THREAD_ID; +# define CRYPTO_ONCE_STATIC_INIT 0 +# endif + +int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void (*init)(void)); + +int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *)); +void *CRYPTO_THREAD_get_local(CRYPTO_THREAD_LOCAL *key); +int CRYPTO_THREAD_set_local(CRYPTO_THREAD_LOCAL *key, void *val); +int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key); + +CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void); +int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/cryptoerr.h b/openSSL/win64/include/openssl/cryptoerr.h new file mode 100644 index 0000000..3db5a4e --- /dev/null +++ b/openSSL/win64/include/openssl/cryptoerr.h @@ -0,0 +1,57 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CRYPTOERR_H +# define HEADER_CRYPTOERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CRYPTO_strings(void); + +/* + * CRYPTO function codes. + */ +# define CRYPTO_F_CMAC_CTX_NEW 120 +# define CRYPTO_F_CRYPTO_DUP_EX_DATA 110 +# define CRYPTO_F_CRYPTO_FREE_EX_DATA 111 +# define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100 +# define CRYPTO_F_CRYPTO_MEMDUP 115 +# define CRYPTO_F_CRYPTO_NEW_EX_DATA 112 +# define CRYPTO_F_CRYPTO_OCB128_COPY_CTX 121 +# define CRYPTO_F_CRYPTO_OCB128_INIT 122 +# define CRYPTO_F_CRYPTO_SET_EX_DATA 102 +# define CRYPTO_F_FIPS_MODE_SET 109 +# define CRYPTO_F_GET_AND_LOCK 113 +# define CRYPTO_F_OPENSSL_ATEXIT 114 +# define CRYPTO_F_OPENSSL_BUF2HEXSTR 117 +# define CRYPTO_F_OPENSSL_FOPEN 119 +# define CRYPTO_F_OPENSSL_HEXSTR2BUF 118 +# define CRYPTO_F_OPENSSL_INIT_CRYPTO 116 +# define CRYPTO_F_OPENSSL_LH_NEW 126 +# define CRYPTO_F_OPENSSL_SK_DEEP_COPY 127 +# define CRYPTO_F_OPENSSL_SK_DUP 128 +# define CRYPTO_F_PKEY_HMAC_INIT 123 +# define CRYPTO_F_PKEY_POLY1305_INIT 124 +# define CRYPTO_F_PKEY_SIPHASH_INIT 125 +# define CRYPTO_F_SK_RESERVE 129 + +/* + * CRYPTO reason codes. + */ +# define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED 101 +# define CRYPTO_R_ILLEGAL_HEX_DIGIT 102 +# define CRYPTO_R_ODD_NUMBER_OF_DIGITS 103 + +#endif diff --git a/openSSL/win64/include/openssl/ct.h b/openSSL/win64/include/openssl/ct.h new file mode 100644 index 0000000..ebdba34 --- /dev/null +++ b/openSSL/win64/include/openssl/ct.h @@ -0,0 +1,474 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CT_H +# define HEADER_CT_H + +# include + +# ifndef OPENSSL_NO_CT +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + +/* Minimum RSA key size, from RFC6962 */ +# define SCT_MIN_RSA_BITS 2048 + +/* All hashes are SHA256 in v1 of Certificate Transparency */ +# define CT_V1_HASHLEN SHA256_DIGEST_LENGTH + +typedef enum { + CT_LOG_ENTRY_TYPE_NOT_SET = -1, + CT_LOG_ENTRY_TYPE_X509 = 0, + CT_LOG_ENTRY_TYPE_PRECERT = 1 +} ct_log_entry_type_t; + +typedef enum { + SCT_VERSION_NOT_SET = -1, + SCT_VERSION_V1 = 0 +} sct_version_t; + +typedef enum { + SCT_SOURCE_UNKNOWN, + SCT_SOURCE_TLS_EXTENSION, + SCT_SOURCE_X509V3_EXTENSION, + SCT_SOURCE_OCSP_STAPLED_RESPONSE +} sct_source_t; + +typedef enum { + SCT_VALIDATION_STATUS_NOT_SET, + SCT_VALIDATION_STATUS_UNKNOWN_LOG, + SCT_VALIDATION_STATUS_VALID, + SCT_VALIDATION_STATUS_INVALID, + SCT_VALIDATION_STATUS_UNVERIFIED, + SCT_VALIDATION_STATUS_UNKNOWN_VERSION +} sct_validation_status_t; + +DEFINE_STACK_OF(SCT) +DEFINE_STACK_OF(CTLOG) + +/****************************************** + * CT policy evaluation context functions * + ******************************************/ + +/* + * Creates a new, empty policy evaluation context. + * The caller is responsible for calling CT_POLICY_EVAL_CTX_free when finished + * with the CT_POLICY_EVAL_CTX. + */ +CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new(void); + +/* Deletes a policy evaluation context and anything it owns. */ +void CT_POLICY_EVAL_CTX_free(CT_POLICY_EVAL_CTX *ctx); + +/* Gets the peer certificate that the SCTs are for */ +X509* CT_POLICY_EVAL_CTX_get0_cert(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the certificate associated with the received SCTs. + * Increments the reference count of cert. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert); + +/* Gets the issuer of the aforementioned certificate */ +X509* CT_POLICY_EVAL_CTX_get0_issuer(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the issuer of the certificate associated with the received SCTs. + * Increments the reference count of issuer. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer); + +/* Gets the CT logs that are trusted sources of SCTs */ +const CTLOG_STORE *CT_POLICY_EVAL_CTX_get0_log_store(const CT_POLICY_EVAL_CTX *ctx); + +/* Sets the log store that is in use. It must outlive the CT_POLICY_EVAL_CTX. */ +void CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE(CT_POLICY_EVAL_CTX *ctx, + CTLOG_STORE *log_store); + +/* + * Gets the time, in milliseconds since the Unix epoch, that will be used as the + * current time when checking whether an SCT was issued in the future. + * Such SCTs will fail validation, as required by RFC6962. + */ +uint64_t CT_POLICY_EVAL_CTX_get_time(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the time to evaluate SCTs against, in milliseconds since the Unix epoch. + * If an SCT's timestamp is after this time, it will be interpreted as having + * been issued in the future. RFC6962 states that "TLS clients MUST reject SCTs + * whose timestamp is in the future", so an SCT will not validate in this case. + */ +void CT_POLICY_EVAL_CTX_set_time(CT_POLICY_EVAL_CTX *ctx, uint64_t time_in_ms); + +/***************** + * SCT functions * + *****************/ + +/* + * Creates a new, blank SCT. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new(void); + +/* + * Creates a new SCT from some base64-encoded strings. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new_from_base64(unsigned char version, + const char *logid_base64, + ct_log_entry_type_t entry_type, + uint64_t timestamp, + const char *extensions_base64, + const char *signature_base64); + +/* + * Frees the SCT and the underlying data structures. + */ +void SCT_free(SCT *sct); + +/* + * Free a stack of SCTs, and the underlying SCTs themselves. + * Intended to be compatible with X509V3_EXT_FREE. + */ +void SCT_LIST_free(STACK_OF(SCT) *a); + +/* + * Returns the version of the SCT. + */ +sct_version_t SCT_get_version(const SCT *sct); + +/* + * Set the version of an SCT. + * Returns 1 on success, 0 if the version is unrecognized. + */ +__owur int SCT_set_version(SCT *sct, sct_version_t version); + +/* + * Returns the log entry type of the SCT. + */ +ct_log_entry_type_t SCT_get_log_entry_type(const SCT *sct); + +/* + * Set the log entry type of an SCT. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_log_entry_type(SCT *sct, ct_log_entry_type_t entry_type); + +/* + * Gets the ID of the log that an SCT came from. + * Ownership of the log ID remains with the SCT. + * Returns the length of the log ID. + */ +size_t SCT_get0_log_id(const SCT *sct, unsigned char **log_id); + +/* + * Set the log ID of an SCT to point directly to the *log_id specified. + * The SCT takes ownership of the specified pointer. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set0_log_id(SCT *sct, unsigned char *log_id, size_t log_id_len); + +/* + * Set the log ID of an SCT. + * This makes a copy of the log_id. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_log_id(SCT *sct, const unsigned char *log_id, + size_t log_id_len); + +/* + * Returns the timestamp for the SCT (epoch time in milliseconds). + */ +uint64_t SCT_get_timestamp(const SCT *sct); + +/* + * Set the timestamp of an SCT (epoch time in milliseconds). + */ +void SCT_set_timestamp(SCT *sct, uint64_t timestamp); + +/* + * Return the NID for the signature used by the SCT. + * For CT v1, this will be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256 (or NID_undef if incorrect/unset). + */ +int SCT_get_signature_nid(const SCT *sct); + +/* + * Set the signature type of an SCT + * For CT v1, this should be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_signature_nid(SCT *sct, int nid); + +/* + * Set *ext to point to the extension data for the SCT. ext must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_extensions(const SCT *sct, unsigned char **ext); + +/* + * Set the extensions of an SCT to point directly to the *ext specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_extensions(SCT *sct, unsigned char *ext, size_t ext_len); + +/* + * Set the extensions of an SCT. + * This takes a copy of the ext. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_extensions(SCT *sct, const unsigned char *ext, + size_t ext_len); + +/* + * Set *sig to point to the signature for the SCT. sig must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_signature(const SCT *sct, unsigned char **sig); + +/* + * Set the signature of an SCT to point directly to the *sig specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_signature(SCT *sct, unsigned char *sig, size_t sig_len); + +/* + * Set the signature of an SCT to be a copy of the *sig specified. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_signature(SCT *sct, const unsigned char *sig, + size_t sig_len); + +/* + * The origin of this SCT, e.g. TLS extension, OCSP response, etc. + */ +sct_source_t SCT_get_source(const SCT *sct); + +/* + * Set the origin of this SCT, e.g. TLS extension, OCSP response, etc. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_source(SCT *sct, sct_source_t source); + +/* + * Returns a text string describing the validation status of |sct|. + */ +const char *SCT_validation_status_string(const SCT *sct); + +/* + * Pretty-prints an |sct| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * If |logs| is not NULL, it will be used to lookup the CT log that the SCT came + * from, so that the log name can be printed. + */ +void SCT_print(const SCT *sct, BIO *out, int indent, const CTLOG_STORE *logs); + +/* + * Pretty-prints an |sct_list| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * SCTs will be delimited by |separator|. + * If |logs| is not NULL, it will be used to lookup the CT log that each SCT + * came from, so that the log names can be printed. + */ +void SCT_LIST_print(const STACK_OF(SCT) *sct_list, BIO *out, int indent, + const char *separator, const CTLOG_STORE *logs); + +/* + * Gets the last result of validating this SCT. + * If it has not been validated yet, returns SCT_VALIDATION_STATUS_NOT_SET. + */ +sct_validation_status_t SCT_get_validation_status(const SCT *sct); + +/* + * Validates the given SCT with the provided context. + * Sets the "validation_status" field of the SCT. + * Returns 1 if the SCT is valid and the signature verifies. + * Returns 0 if the SCT is invalid or could not be verified. + * Returns -1 if an error occurs. + */ +__owur int SCT_validate(SCT *sct, const CT_POLICY_EVAL_CTX *ctx); + +/* + * Validates the given list of SCTs with the provided context. + * Sets the "validation_status" field of each SCT. + * Returns 1 if there are no invalid SCTs and all signatures verify. + * Returns 0 if at least one SCT is invalid or could not be verified. + * Returns a negative integer if an error occurs. + */ +__owur int SCT_LIST_validate(const STACK_OF(SCT) *scts, + CT_POLICY_EVAL_CTX *ctx); + + +/********************************* + * SCT parsing and serialisation * + *********************************/ + +/* + * Serialize (to TLS format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just return the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2o_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Convert TLS format SCT list to a stack of SCTs. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *o2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + size_t len); + +/* + * Serialize (to DER format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just returns the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2d_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Parses an SCT list in DER format and returns it. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *d2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + long len); + +/* + * Serialize (to TLS format) an |sct| and write it to |out|. + * If |out| is null, no SCT will be output but the length will still be returned. + * If |out| points to a null pointer, a string will be allocated to hold the + * TLS-format SCT. It is the responsibility of the caller to free it. + * If |out| points to an allocated string, the TLS-format SCT will be written + * to it. + * The length of the SCT in TLS format will be returned. + */ +__owur int i2o_SCT(const SCT *sct, unsigned char **out); + +/* + * Parses an SCT in TLS format and returns it. + * If |psct| is not null, it will end up pointing to the parsed SCT. If it + * already points to a non-null pointer, the pointer will be free'd. + * |in| should be a pointer to a string containing the TLS-format SCT. + * |in| will be advanced to the end of the SCT if parsing succeeds. + * |len| should be the length of the SCT in |in|. + * Returns NULL if an error occurs. + * If the SCT is an unsupported version, only the SCT's 'sct' and 'sct_len' + * fields will be populated (with |in| and |len| respectively). + */ +SCT *o2i_SCT(SCT **psct, const unsigned char **in, size_t len); + +/******************** + * CT log functions * + ********************/ + +/* + * Creates a new CT log instance with the given |public_key| and |name|. + * Takes ownership of |public_key| but copies |name|. + * Returns NULL if malloc fails or if |public_key| cannot be converted to DER. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name); + +/* + * Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER + * in |pkey_base64|. The |name| is a string to help users identify this log. + * Returns 1 on success, 0 on failure. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +int CTLOG_new_from_base64(CTLOG ** ct_log, + const char *pkey_base64, const char *name); + +/* + * Deletes a CT log instance and its fields. + */ +void CTLOG_free(CTLOG *log); + +/* Gets the name of the CT log */ +const char *CTLOG_get0_name(const CTLOG *log); +/* Gets the ID of the CT log */ +void CTLOG_get0_log_id(const CTLOG *log, const uint8_t **log_id, + size_t *log_id_len); +/* Gets the public key of the CT log */ +EVP_PKEY *CTLOG_get0_public_key(const CTLOG *log); + +/************************** + * CT log store functions * + **************************/ + +/* + * Creates a new CT log store. + * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. + */ +CTLOG_STORE *CTLOG_STORE_new(void); + +/* + * Deletes a CT log store and all of the CT log instances held within. + */ +void CTLOG_STORE_free(CTLOG_STORE *store); + +/* + * Finds a CT log in the store based on its log ID. + * Returns the CT log, or NULL if no match is found. + */ +const CTLOG *CTLOG_STORE_get0_log_by_id(const CTLOG_STORE *store, + const uint8_t *log_id, + size_t log_id_len); + +/* + * Loads a CT log list into a |store| from a |file|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_file(CTLOG_STORE *store, const char *file); + +/* + * Loads the default CT log list into a |store|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_default_file(CTLOG_STORE *store); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/win64/include/openssl/cterr.h b/openSSL/win64/include/openssl/cterr.h new file mode 100644 index 0000000..feb7bc5 --- /dev/null +++ b/openSSL/win64/include/openssl/cterr.h @@ -0,0 +1,80 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CTERR_H +# define HEADER_CTERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_CT + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CT_strings(void); + +/* + * CT function codes. + */ +# define CT_F_CTLOG_NEW 117 +# define CT_F_CTLOG_NEW_FROM_BASE64 118 +# define CT_F_CTLOG_NEW_FROM_CONF 119 +# define CT_F_CTLOG_STORE_LOAD_CTX_NEW 122 +# define CT_F_CTLOG_STORE_LOAD_FILE 123 +# define CT_F_CTLOG_STORE_LOAD_LOG 130 +# define CT_F_CTLOG_STORE_NEW 131 +# define CT_F_CT_BASE64_DECODE 124 +# define CT_F_CT_POLICY_EVAL_CTX_NEW 133 +# define CT_F_CT_V1_LOG_ID_FROM_PKEY 125 +# define CT_F_I2O_SCT 107 +# define CT_F_I2O_SCT_LIST 108 +# define CT_F_I2O_SCT_SIGNATURE 109 +# define CT_F_O2I_SCT 110 +# define CT_F_O2I_SCT_LIST 111 +# define CT_F_O2I_SCT_SIGNATURE 112 +# define CT_F_SCT_CTX_NEW 126 +# define CT_F_SCT_CTX_VERIFY 128 +# define CT_F_SCT_NEW 100 +# define CT_F_SCT_NEW_FROM_BASE64 127 +# define CT_F_SCT_SET0_LOG_ID 101 +# define CT_F_SCT_SET1_EXTENSIONS 114 +# define CT_F_SCT_SET1_LOG_ID 115 +# define CT_F_SCT_SET1_SIGNATURE 116 +# define CT_F_SCT_SET_LOG_ENTRY_TYPE 102 +# define CT_F_SCT_SET_SIGNATURE_NID 103 +# define CT_F_SCT_SET_VERSION 104 + +/* + * CT reason codes. + */ +# define CT_R_BASE64_DECODE_ERROR 108 +# define CT_R_INVALID_LOG_ID_LENGTH 100 +# define CT_R_LOG_CONF_INVALID 109 +# define CT_R_LOG_CONF_INVALID_KEY 110 +# define CT_R_LOG_CONF_MISSING_DESCRIPTION 111 +# define CT_R_LOG_CONF_MISSING_KEY 112 +# define CT_R_LOG_KEY_INVALID 113 +# define CT_R_SCT_FUTURE_TIMESTAMP 116 +# define CT_R_SCT_INVALID 104 +# define CT_R_SCT_INVALID_SIGNATURE 107 +# define CT_R_SCT_LIST_INVALID 105 +# define CT_R_SCT_LOG_ID_MISMATCH 114 +# define CT_R_SCT_NOT_SET 106 +# define CT_R_SCT_UNSUPPORTED_VERSION 115 +# define CT_R_UNRECOGNIZED_SIGNATURE_NID 101 +# define CT_R_UNSUPPORTED_ENTRY_TYPE 102 +# define CT_R_UNSUPPORTED_VERSION 103 + +# endif +#endif diff --git a/openSSL/win64/include/openssl/des.h b/openSSL/win64/include/openssl/des.h new file mode 100644 index 0000000..be4abbd --- /dev/null +++ b/openSSL/win64/include/openssl/des.h @@ -0,0 +1,174 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DES_H +# define HEADER_DES_H + +# include + +# ifndef OPENSSL_NO_DES +# ifdef __cplusplus +extern "C" { +# endif +# include + +typedef unsigned int DES_LONG; + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +typedef unsigned char DES_cblock[8]; +typedef /* const */ unsigned char const_DES_cblock[8]; +/* + * With "const", gcc 2.8.1 on Solaris thinks that DES_cblock * and + * const_DES_cblock * are incompatible pointer types. + */ + +typedef struct DES_ks { + union { + DES_cblock cblock; + /* + * make sure things are correct size on machines with 8 byte longs + */ + DES_LONG deslong[2]; + } ks[16]; +} DES_key_schedule; + +# define DES_KEY_SZ (sizeof(DES_cblock)) +# define DES_SCHEDULE_SZ (sizeof(DES_key_schedule)) + +# define DES_ENCRYPT 1 +# define DES_DECRYPT 0 + +# define DES_CBC_MODE 0 +# define DES_PCBC_MODE 1 + +# define DES_ecb2_encrypt(i,o,k1,k2,e) \ + DES_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e)) + +# define DES_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \ + DES_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e)) + +# define DES_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \ + DES_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e)) + +# define DES_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \ + DES_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n)) + +OPENSSL_DECLARE_GLOBAL(int, DES_check_key); /* defaults to false */ +# define DES_check_key OPENSSL_GLOBAL_REF(DES_check_key) + +const char *DES_options(void); +void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output, + DES_key_schedule *ks1, DES_key_schedule *ks2, + DES_key_schedule *ks3, int enc); +DES_LONG DES_cbc_cksum(const unsigned char *input, DES_cblock *output, + long length, DES_key_schedule *schedule, + const_DES_cblock *ivec); +/* DES_cbc_encrypt does not update the IV! Use DES_ncbc_encrypt instead. */ +void DES_cbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_ncbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_xcbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, const_DES_cblock *inw, + const_DES_cblock *outw, int enc); +void DES_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output, + DES_key_schedule *ks, int enc); + +/* + * This is the DES encryption function that gets called by just about every + * other DES routine in the library. You should not use this function except + * to implement 'modes' of DES. I say this because the functions that call + * this routine do the conversion from 'char *' to long, and this needs to be + * done to make sure 'non-aligned' memory access do not occur. The + * characters are loaded 'little endian'. Data is a pointer to 2 unsigned + * long's and ks is the DES_key_schedule to use. enc, is non zero specifies + * encryption, zero if decryption. + */ +void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc); + +/* + * This functions is the same as DES_encrypt1() except that the DES initial + * permutation (IP) and final permutation (FP) have been left out. As for + * DES_encrypt1(), you should not use this function. It is used by the + * routines in the library that implement triple DES. IP() DES_encrypt2() + * DES_encrypt2() DES_encrypt2() FP() is the same as DES_encrypt1() + * DES_encrypt1() DES_encrypt1() except faster :-). + */ +void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc); + +void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3); +void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3); +void DES_ede3_cbc_encrypt(const unsigned char *input, unsigned char *output, + long length, + DES_key_schedule *ks1, DES_key_schedule *ks2, + DES_key_schedule *ks3, DES_cblock *ivec, int enc); +void DES_ede3_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3, + DES_cblock *ivec, int *num, int enc); +void DES_ede3_cfb_encrypt(const unsigned char *in, unsigned char *out, + int numbits, long length, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3, + DES_cblock *ivec, int enc); +void DES_ede3_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3, + DES_cblock *ivec, int *num); +char *DES_fcrypt(const char *buf, const char *salt, char *ret); +char *DES_crypt(const char *buf, const char *salt); +void DES_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits, + long length, DES_key_schedule *schedule, + DES_cblock *ivec); +void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +DES_LONG DES_quad_cksum(const unsigned char *input, DES_cblock output[], + long length, int out_count, DES_cblock *seed); +int DES_random_key(DES_cblock *ret); +void DES_set_odd_parity(DES_cblock *key); +int DES_check_key_parity(const_DES_cblock *key); +int DES_is_weak_key(const_DES_cblock *key); +/* + * DES_set_key (= set_key = DES_key_sched = key_sched) calls + * DES_set_key_checked if global variable DES_check_key is set, + * DES_set_key_unchecked otherwise. + */ +int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule); +int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule); +int DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule); +void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule); +void DES_string_to_key(const char *str, DES_cblock *key); +void DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2); +void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int *num, int enc); +void DES_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int *num); + +# define DES_fixup_key_parity DES_set_odd_parity + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/dh.h b/openSSL/win64/include/openssl/dh.h new file mode 100644 index 0000000..3527540 --- /dev/null +++ b/openSSL/win64/include/openssl/dh.h @@ -0,0 +1,340 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DH_H +# define HEADER_DH_H + +# include + +# ifndef OPENSSL_NO_DH +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_DH_MAX_MODULUS_BITS +# define OPENSSL_DH_MAX_MODULUS_BITS 10000 +# endif + +# define OPENSSL_DH_FIPS_MIN_MODULUS_BITS 1024 + +# define DH_FLAG_CACHE_MONT_P 0x01 + +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DH_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +/* + * If this flag is set the DH method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define DH_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define DH_FLAG_NON_FIPS_ALLOW 0x0400 + +/* Already defined in ossl_typ.h */ +/* typedef struct dh_st DH; */ +/* typedef struct dh_method DH_METHOD; */ + +DECLARE_ASN1_ITEM(DHparams) + +# define DH_GENERATOR_2 2 +/* #define DH_GENERATOR_3 3 */ +# define DH_GENERATOR_5 5 + +/* DH_check error codes */ +# define DH_CHECK_P_NOT_PRIME 0x01 +# define DH_CHECK_P_NOT_SAFE_PRIME 0x02 +# define DH_UNABLE_TO_CHECK_GENERATOR 0x04 +# define DH_NOT_SUITABLE_GENERATOR 0x08 +# define DH_CHECK_Q_NOT_PRIME 0x10 +# define DH_CHECK_INVALID_Q_VALUE 0x20 +# define DH_CHECK_INVALID_J_VALUE 0x40 + +/* DH_check_pub_key error codes */ +# define DH_CHECK_PUBKEY_TOO_SMALL 0x01 +# define DH_CHECK_PUBKEY_TOO_LARGE 0x02 +# define DH_CHECK_PUBKEY_INVALID 0x04 + +/* + * primes p where (p-1)/2 is prime too are called "safe"; we define this for + * backward compatibility: + */ +# define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME + +# define d2i_DHparams_fp(fp,x) \ + (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHparams, \ + (fp), \ + (unsigned char **)(x)) +# define i2d_DHparams_fp(fp,x) \ + ASN1_i2d_fp(i2d_DHparams,(fp), (unsigned char *)(x)) +# define d2i_DHparams_bio(bp,x) \ + ASN1_d2i_bio_of(DH, DH_new, d2i_DHparams, bp, x) +# define i2d_DHparams_bio(bp,x) \ + ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x) + +# define d2i_DHxparams_fp(fp,x) \ + (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHxparams, \ + (fp), \ + (unsigned char **)(x)) +# define i2d_DHxparams_fp(fp,x) \ + ASN1_i2d_fp(i2d_DHxparams,(fp), (unsigned char *)(x)) +# define d2i_DHxparams_bio(bp,x) \ + ASN1_d2i_bio_of(DH, DH_new, d2i_DHxparams, bp, x) +# define i2d_DHxparams_bio(bp,x) \ + ASN1_i2d_bio_of_const(DH, i2d_DHxparams, bp, x) + +DH *DHparams_dup(DH *); + +const DH_METHOD *DH_OpenSSL(void); + +void DH_set_default_method(const DH_METHOD *meth); +const DH_METHOD *DH_get_default_method(void); +int DH_set_method(DH *dh, const DH_METHOD *meth); +DH *DH_new_method(ENGINE *engine); + +DH *DH_new(void); +void DH_free(DH *dh); +int DH_up_ref(DH *dh); +int DH_bits(const DH *dh); +int DH_size(const DH *dh); +int DH_security_bits(const DH *dh); +#define DH_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DH, l, p, newf, dupf, freef) +int DH_set_ex_data(DH *d, int idx, void *arg); +void *DH_get_ex_data(DH *d, int idx); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(DH *DH_generate_parameters(int prime_len, int generator, + void (*callback) (int, int, + void *), + void *cb_arg)) + +/* New version */ +int DH_generate_parameters_ex(DH *dh, int prime_len, int generator, + BN_GENCB *cb); + +int DH_check_params_ex(const DH *dh); +int DH_check_ex(const DH *dh); +int DH_check_pub_key_ex(const DH *dh, const BIGNUM *pub_key); +int DH_check_params(const DH *dh, int *ret); +int DH_check(const DH *dh, int *codes); +int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes); +int DH_generate_key(DH *dh); +int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh); +DH *d2i_DHparams(DH **a, const unsigned char **pp, long length); +int i2d_DHparams(const DH *a, unsigned char **pp); +DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length); +int i2d_DHxparams(const DH *a, unsigned char **pp); +# ifndef OPENSSL_NO_STDIO +int DHparams_print_fp(FILE *fp, const DH *x); +# endif +int DHparams_print(BIO *bp, const DH *x); + +/* RFC 5114 parameters */ +DH *DH_get_1024_160(void); +DH *DH_get_2048_224(void); +DH *DH_get_2048_256(void); + +/* Named parameters, currently RFC7919 */ +DH *DH_new_by_nid(int nid); +int DH_get_nid(const DH *dh); + +# ifndef OPENSSL_NO_CMS +/* RFC2631 KDF */ +int DH_KDF_X9_42(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + ASN1_OBJECT *key_oid, + const unsigned char *ukm, size_t ukmlen, const EVP_MD *md); +# endif + +void DH_get0_pqg(const DH *dh, + const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); +int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g); +void DH_get0_key(const DH *dh, + const BIGNUM **pub_key, const BIGNUM **priv_key); +int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key); +const BIGNUM *DH_get0_p(const DH *dh); +const BIGNUM *DH_get0_q(const DH *dh); +const BIGNUM *DH_get0_g(const DH *dh); +const BIGNUM *DH_get0_priv_key(const DH *dh); +const BIGNUM *DH_get0_pub_key(const DH *dh); +void DH_clear_flags(DH *dh, int flags); +int DH_test_flags(const DH *dh, int flags); +void DH_set_flags(DH *dh, int flags); +ENGINE *DH_get0_engine(DH *d); +long DH_get_length(const DH *dh); +int DH_set_length(DH *dh, long length); + +DH_METHOD *DH_meth_new(const char *name, int flags); +void DH_meth_free(DH_METHOD *dhm); +DH_METHOD *DH_meth_dup(const DH_METHOD *dhm); +const char *DH_meth_get0_name(const DH_METHOD *dhm); +int DH_meth_set1_name(DH_METHOD *dhm, const char *name); +int DH_meth_get_flags(const DH_METHOD *dhm); +int DH_meth_set_flags(DH_METHOD *dhm, int flags); +void *DH_meth_get0_app_data(const DH_METHOD *dhm); +int DH_meth_set0_app_data(DH_METHOD *dhm, void *app_data); +int (*DH_meth_get_generate_key(const DH_METHOD *dhm)) (DH *); +int DH_meth_set_generate_key(DH_METHOD *dhm, int (*generate_key) (DH *)); +int (*DH_meth_get_compute_key(const DH_METHOD *dhm)) + (unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_meth_set_compute_key(DH_METHOD *dhm, + int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh)); +int (*DH_meth_get_bn_mod_exp(const DH_METHOD *dhm)) + (const DH *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + BN_CTX *, BN_MONT_CTX *); +int DH_meth_set_bn_mod_exp(DH_METHOD *dhm, + int (*bn_mod_exp) (const DH *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, BN_CTX *, BN_MONT_CTX *)); +int (*DH_meth_get_init(const DH_METHOD *dhm))(DH *); +int DH_meth_set_init(DH_METHOD *dhm, int (*init)(DH *)); +int (*DH_meth_get_finish(const DH_METHOD *dhm)) (DH *); +int DH_meth_set_finish(DH_METHOD *dhm, int (*finish) (DH *)); +int (*DH_meth_get_generate_params(const DH_METHOD *dhm)) + (DH *, int, int, BN_GENCB *); +int DH_meth_set_generate_params(DH_METHOD *dhm, + int (*generate_params) (DH *, int, int, BN_GENCB *)); + + +# define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_subprime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_type(ctx, typ) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_TYPE, typ, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_generator(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dhx_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, \ + EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_DH_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_dh_pad(ctx, pad) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_PAD, pad, NULL) + +# define EVP_PKEY_CTX_set_dh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set0_dh_kdf_oid(ctx, oid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OID, 0, (void *)(oid)) + +# define EVP_PKEY_CTX_get0_dh_kdf_oid(ctx, poid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OID, 0, (void *)(poid)) + +# define EVP_PKEY_CTX_set_dh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_dh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_dh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN, 0, (void *)(plen)) + +# define EVP_PKEY_CTX_set0_dh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_UKM, plen, (void *)(p)) + +# define EVP_PKEY_CTX_get0_dh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_UKM, 0, (void *)(p)) + +# define EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DH_RFC5114 (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_DH_PARAMGEN_TYPE (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_DH_KDF_TYPE (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 13) +# define EVP_PKEY_CTRL_GET_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 14) +# define EVP_PKEY_CTRL_DH_NID (EVP_PKEY_ALG_CTRL + 15) +# define EVP_PKEY_CTRL_DH_PAD (EVP_PKEY_ALG_CTRL + 16) + +/* KDF types */ +# define EVP_PKEY_DH_KDF_NONE 1 +# ifndef OPENSSL_NO_CMS +# define EVP_PKEY_DH_KDF_X9_42 2 +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/win64/include/openssl/dherr.h b/openSSL/win64/include/openssl/dherr.h new file mode 100644 index 0000000..916b3be --- /dev/null +++ b/openSSL/win64/include/openssl/dherr.h @@ -0,0 +1,88 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DHERR_H +# define HEADER_DHERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_DH + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_DH_strings(void); + +/* + * DH function codes. + */ +# define DH_F_COMPUTE_KEY 102 +# define DH_F_DHPARAMS_PRINT_FP 101 +# define DH_F_DH_BUILTIN_GENPARAMS 106 +# define DH_F_DH_CHECK_EX 121 +# define DH_F_DH_CHECK_PARAMS_EX 122 +# define DH_F_DH_CHECK_PUB_KEY_EX 123 +# define DH_F_DH_CMS_DECRYPT 114 +# define DH_F_DH_CMS_SET_PEERKEY 115 +# define DH_F_DH_CMS_SET_SHARED_INFO 116 +# define DH_F_DH_METH_DUP 117 +# define DH_F_DH_METH_NEW 118 +# define DH_F_DH_METH_SET1_NAME 119 +# define DH_F_DH_NEW_BY_NID 104 +# define DH_F_DH_NEW_METHOD 105 +# define DH_F_DH_PARAM_DECODE 107 +# define DH_F_DH_PKEY_PUBLIC_CHECK 124 +# define DH_F_DH_PRIV_DECODE 110 +# define DH_F_DH_PRIV_ENCODE 111 +# define DH_F_DH_PUB_DECODE 108 +# define DH_F_DH_PUB_ENCODE 109 +# define DH_F_DO_DH_PRINT 100 +# define DH_F_GENERATE_KEY 103 +# define DH_F_PKEY_DH_CTRL_STR 120 +# define DH_F_PKEY_DH_DERIVE 112 +# define DH_F_PKEY_DH_INIT 125 +# define DH_F_PKEY_DH_KEYGEN 113 + +/* + * DH reason codes. + */ +# define DH_R_BAD_GENERATOR 101 +# define DH_R_BN_DECODE_ERROR 109 +# define DH_R_BN_ERROR 106 +# define DH_R_CHECK_INVALID_J_VALUE 115 +# define DH_R_CHECK_INVALID_Q_VALUE 116 +# define DH_R_CHECK_PUBKEY_INVALID 122 +# define DH_R_CHECK_PUBKEY_TOO_LARGE 123 +# define DH_R_CHECK_PUBKEY_TOO_SMALL 124 +# define DH_R_CHECK_P_NOT_PRIME 117 +# define DH_R_CHECK_P_NOT_SAFE_PRIME 118 +# define DH_R_CHECK_Q_NOT_PRIME 119 +# define DH_R_DECODE_ERROR 104 +# define DH_R_INVALID_PARAMETER_NAME 110 +# define DH_R_INVALID_PARAMETER_NID 114 +# define DH_R_INVALID_PUBKEY 102 +# define DH_R_KDF_PARAMETER_ERROR 112 +# define DH_R_KEYS_NOT_SET 108 +# define DH_R_MISSING_PUBKEY 125 +# define DH_R_MODULUS_TOO_LARGE 103 +# define DH_R_NOT_SUITABLE_GENERATOR 120 +# define DH_R_NO_PARAMETERS_SET 107 +# define DH_R_NO_PRIVATE_VALUE 100 +# define DH_R_PARAMETER_ENCODING_ERROR 105 +# define DH_R_PEER_KEY_ERROR 111 +# define DH_R_SHARED_INFO_ERROR 113 +# define DH_R_UNABLE_TO_CHECK_GENERATOR 121 + +# endif +#endif diff --git a/openSSL/win64/include/openssl/dsa.h b/openSSL/win64/include/openssl/dsa.h new file mode 100644 index 0000000..6d8a18a --- /dev/null +++ b/openSSL/win64/include/openssl/dsa.h @@ -0,0 +1,244 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DSA_H +# define HEADER_DSA_H + +# include + +# ifndef OPENSSL_NO_DSA +# ifdef __cplusplus +extern "C" { +# endif +# include +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include + +# ifndef OPENSSL_DSA_MAX_MODULUS_BITS +# define OPENSSL_DSA_MAX_MODULUS_BITS 10000 +# endif + +# define OPENSSL_DSA_FIPS_MIN_MODULUS_BITS 1024 + +# define DSA_FLAG_CACHE_MONT_P 0x01 +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DSA_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +/* + * If this flag is set the DSA method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define DSA_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define DSA_FLAG_NON_FIPS_ALLOW 0x0400 +# define DSA_FLAG_FIPS_CHECKED 0x0800 + +/* Already defined in ossl_typ.h */ +/* typedef struct dsa_st DSA; */ +/* typedef struct dsa_method DSA_METHOD; */ + +typedef struct DSA_SIG_st DSA_SIG; + +# define d2i_DSAparams_fp(fp,x) (DSA *)ASN1_d2i_fp((char *(*)())DSA_new, \ + (char *(*)())d2i_DSAparams,(fp),(unsigned char **)(x)) +# define i2d_DSAparams_fp(fp,x) ASN1_i2d_fp(i2d_DSAparams,(fp), \ + (unsigned char *)(x)) +# define d2i_DSAparams_bio(bp,x) ASN1_d2i_bio_of(DSA,DSA_new,d2i_DSAparams,bp,x) +# define i2d_DSAparams_bio(bp,x) ASN1_i2d_bio_of_const(DSA,i2d_DSAparams,bp,x) + +DSA *DSAparams_dup(DSA *x); +DSA_SIG *DSA_SIG_new(void); +void DSA_SIG_free(DSA_SIG *a); +int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp); +DSA_SIG *d2i_DSA_SIG(DSA_SIG **v, const unsigned char **pp, long length); +void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); +int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); +int DSA_do_verify(const unsigned char *dgst, int dgst_len, + DSA_SIG *sig, DSA *dsa); + +const DSA_METHOD *DSA_OpenSSL(void); + +void DSA_set_default_method(const DSA_METHOD *); +const DSA_METHOD *DSA_get_default_method(void); +int DSA_set_method(DSA *dsa, const DSA_METHOD *); +const DSA_METHOD *DSA_get_method(DSA *d); + +DSA *DSA_new(void); +DSA *DSA_new_method(ENGINE *engine); +void DSA_free(DSA *r); +/* "up" the DSA object's reference count */ +int DSA_up_ref(DSA *r); +int DSA_size(const DSA *); +int DSA_bits(const DSA *d); +int DSA_security_bits(const DSA *d); + /* next 4 return -1 on error */ +DEPRECATEDIN_1_2_0(int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)) +int DSA_sign(int type, const unsigned char *dgst, int dlen, + unsigned char *sig, unsigned int *siglen, DSA *dsa); +int DSA_verify(int type, const unsigned char *dgst, int dgst_len, + const unsigned char *sigbuf, int siglen, DSA *dsa); +#define DSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DSA, l, p, newf, dupf, freef) +int DSA_set_ex_data(DSA *d, int idx, void *arg); +void *DSA_get_ex_data(DSA *d, int idx); + +DSA *d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length); +DSA *d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length); +DSA *d2i_DSAparams(DSA **a, const unsigned char **pp, long length); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(DSA *DSA_generate_parameters(int bits, + unsigned char *seed, + int seed_len, + int *counter_ret, + unsigned long *h_ret, void + (*callback) (int, int, + void *), + void *cb_arg)) + +/* New version */ +int DSA_generate_parameters_ex(DSA *dsa, int bits, + const unsigned char *seed, int seed_len, + int *counter_ret, unsigned long *h_ret, + BN_GENCB *cb); + +int DSA_generate_key(DSA *a); +int i2d_DSAPublicKey(const DSA *a, unsigned char **pp); +int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp); +int i2d_DSAparams(const DSA *a, unsigned char **pp); + +int DSAparams_print(BIO *bp, const DSA *x); +int DSA_print(BIO *bp, const DSA *x, int off); +# ifndef OPENSSL_NO_STDIO +int DSAparams_print_fp(FILE *fp, const DSA *x); +int DSA_print_fp(FILE *bp, const DSA *x, int off); +# endif + +# define DSS_prime_checks 64 +/* + * Primality test according to FIPS PUB 186-4, Appendix C.3. Since we only + * have one value here we set the number of checks to 64 which is the 128 bit + * security level that is the highest level and valid for creating a 3072 bit + * DSA key. + */ +# define DSA_is_prime(n, callback, cb_arg) \ + BN_is_prime(n, DSS_prime_checks, callback, NULL, cb_arg) + +# ifndef OPENSSL_NO_DH +/* + * Convert DSA structure (key or just parameters) into DH structure (be + * careful to avoid small subgroup attacks when using this!) + */ +DH *DSA_dup_DH(const DSA *r); +# endif + +# define EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx, nbits) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_BITS, nbits, NULL) +# define EVP_PKEY_CTX_set_dsa_paramgen_q_bits(ctx, qbits) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS, qbits, NULL) +# define EVP_PKEY_CTX_set_dsa_paramgen_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTRL_DSA_PARAMGEN_BITS (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_MD (EVP_PKEY_ALG_CTRL + 3) + +void DSA_get0_pqg(const DSA *d, + const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); +int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g); +void DSA_get0_key(const DSA *d, + const BIGNUM **pub_key, const BIGNUM **priv_key); +int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key); +const BIGNUM *DSA_get0_p(const DSA *d); +const BIGNUM *DSA_get0_q(const DSA *d); +const BIGNUM *DSA_get0_g(const DSA *d); +const BIGNUM *DSA_get0_pub_key(const DSA *d); +const BIGNUM *DSA_get0_priv_key(const DSA *d); +void DSA_clear_flags(DSA *d, int flags); +int DSA_test_flags(const DSA *d, int flags); +void DSA_set_flags(DSA *d, int flags); +ENGINE *DSA_get0_engine(DSA *d); + +DSA_METHOD *DSA_meth_new(const char *name, int flags); +void DSA_meth_free(DSA_METHOD *dsam); +DSA_METHOD *DSA_meth_dup(const DSA_METHOD *dsam); +const char *DSA_meth_get0_name(const DSA_METHOD *dsam); +int DSA_meth_set1_name(DSA_METHOD *dsam, const char *name); +int DSA_meth_get_flags(const DSA_METHOD *dsam); +int DSA_meth_set_flags(DSA_METHOD *dsam, int flags); +void *DSA_meth_get0_app_data(const DSA_METHOD *dsam); +int DSA_meth_set0_app_data(DSA_METHOD *dsam, void *app_data); +DSA_SIG *(*DSA_meth_get_sign(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA *); +int DSA_meth_set_sign(DSA_METHOD *dsam, + DSA_SIG *(*sign) (const unsigned char *, int, DSA *)); +int (*DSA_meth_get_sign_setup(const DSA_METHOD *dsam)) + (DSA *, BN_CTX *, BIGNUM **, BIGNUM **); +int DSA_meth_set_sign_setup(DSA_METHOD *dsam, + int (*sign_setup) (DSA *, BN_CTX *, BIGNUM **, BIGNUM **)); +int (*DSA_meth_get_verify(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA_SIG *, DSA *); +int DSA_meth_set_verify(DSA_METHOD *dsam, + int (*verify) (const unsigned char *, int, DSA_SIG *, DSA *)); +int (*DSA_meth_get_mod_exp(const DSA_METHOD *dsam)) + (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *); +int DSA_meth_set_mod_exp(DSA_METHOD *dsam, + int (*mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *, + BN_MONT_CTX *)); +int (*DSA_meth_get_bn_mod_exp(const DSA_METHOD *dsam)) + (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + BN_CTX *, BN_MONT_CTX *); +int DSA_meth_set_bn_mod_exp(DSA_METHOD *dsam, + int (*bn_mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, BN_CTX *, BN_MONT_CTX *)); +int (*DSA_meth_get_init(const DSA_METHOD *dsam))(DSA *); +int DSA_meth_set_init(DSA_METHOD *dsam, int (*init)(DSA *)); +int (*DSA_meth_get_finish(const DSA_METHOD *dsam)) (DSA *); +int DSA_meth_set_finish(DSA_METHOD *dsam, int (*finish) (DSA *)); +int (*DSA_meth_get_paramgen(const DSA_METHOD *dsam)) + (DSA *, int, const unsigned char *, int, int *, unsigned long *, + BN_GENCB *); +int DSA_meth_set_paramgen(DSA_METHOD *dsam, + int (*paramgen) (DSA *, int, const unsigned char *, int, int *, + unsigned long *, BN_GENCB *)); +int (*DSA_meth_get_keygen(const DSA_METHOD *dsam)) (DSA *); +int DSA_meth_set_keygen(DSA_METHOD *dsam, int (*keygen) (DSA *)); + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/win64/include/openssl/dsaerr.h b/openSSL/win64/include/openssl/dsaerr.h new file mode 100644 index 0000000..495a1ac --- /dev/null +++ b/openSSL/win64/include/openssl/dsaerr.h @@ -0,0 +1,72 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DSAERR_H +# define HEADER_DSAERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_DSA + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_DSA_strings(void); + +/* + * DSA function codes. + */ +# define DSA_F_DSAPARAMS_PRINT 100 +# define DSA_F_DSAPARAMS_PRINT_FP 101 +# define DSA_F_DSA_BUILTIN_PARAMGEN 125 +# define DSA_F_DSA_BUILTIN_PARAMGEN2 126 +# define DSA_F_DSA_DO_SIGN 112 +# define DSA_F_DSA_DO_VERIFY 113 +# define DSA_F_DSA_METH_DUP 127 +# define DSA_F_DSA_METH_NEW 128 +# define DSA_F_DSA_METH_SET1_NAME 129 +# define DSA_F_DSA_NEW_METHOD 103 +# define DSA_F_DSA_PARAM_DECODE 119 +# define DSA_F_DSA_PRINT_FP 105 +# define DSA_F_DSA_PRIV_DECODE 115 +# define DSA_F_DSA_PRIV_ENCODE 116 +# define DSA_F_DSA_PUB_DECODE 117 +# define DSA_F_DSA_PUB_ENCODE 118 +# define DSA_F_DSA_SIGN 106 +# define DSA_F_DSA_SIGN_SETUP 107 +# define DSA_F_DSA_SIG_NEW 102 +# define DSA_F_OLD_DSA_PRIV_DECODE 122 +# define DSA_F_PKEY_DSA_CTRL 120 +# define DSA_F_PKEY_DSA_CTRL_STR 104 +# define DSA_F_PKEY_DSA_KEYGEN 121 + +/* + * DSA reason codes. + */ +# define DSA_R_BAD_Q_VALUE 102 +# define DSA_R_BN_DECODE_ERROR 108 +# define DSA_R_BN_ERROR 109 +# define DSA_R_DECODE_ERROR 104 +# define DSA_R_INVALID_DIGEST_TYPE 106 +# define DSA_R_INVALID_PARAMETERS 112 +# define DSA_R_MISSING_PARAMETERS 101 +# define DSA_R_MISSING_PRIVATE_KEY 111 +# define DSA_R_MODULUS_TOO_LARGE 103 +# define DSA_R_NO_PARAMETERS_SET 107 +# define DSA_R_PARAMETER_ENCODING_ERROR 105 +# define DSA_R_Q_NOT_PRIME 113 +# define DSA_R_SEED_LEN_SMALL 110 + +# endif +#endif diff --git a/openSSL/win64/include/openssl/dtls1.h b/openSSL/win64/include/openssl/dtls1.h new file mode 100644 index 0000000..d55ca9c --- /dev/null +++ b/openSSL/win64/include/openssl/dtls1.h @@ -0,0 +1,55 @@ +/* + * Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DTLS1_H +# define HEADER_DTLS1_H + +#ifdef __cplusplus +extern "C" { +#endif + +# define DTLS1_VERSION 0xFEFF +# define DTLS1_2_VERSION 0xFEFD +# define DTLS_MIN_VERSION DTLS1_VERSION +# define DTLS_MAX_VERSION DTLS1_2_VERSION +# define DTLS1_VERSION_MAJOR 0xFE + +# define DTLS1_BAD_VER 0x0100 + +/* Special value for method supporting multiple versions */ +# define DTLS_ANY_VERSION 0x1FFFF + +/* lengths of messages */ +/* + * Actually the max cookie length in DTLS is 255. But we can't change this now + * due to compatibility concerns. + */ +# define DTLS1_COOKIE_LENGTH 256 + +# define DTLS1_RT_HEADER_LENGTH 13 + +# define DTLS1_HM_HEADER_LENGTH 12 + +# define DTLS1_HM_BAD_FRAGMENT -2 +# define DTLS1_HM_FRAGMENT_RETRY -3 + +# define DTLS1_CCS_HEADER_LENGTH 1 + +# define DTLS1_AL_HEADER_LENGTH 2 + +/* Timeout multipliers */ +# define DTLS1_TMO_READ_COUNT 2 +# define DTLS1_TMO_WRITE_COUNT 2 + +# define DTLS1_TMO_ALERT_COUNT 12 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/win64/include/openssl/e_os2.h b/openSSL/win64/include/openssl/e_os2.h new file mode 100644 index 0000000..5c88e51 --- /dev/null +++ b/openSSL/win64/include/openssl/e_os2.h @@ -0,0 +1,301 @@ +/* + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_E_OS2_H +# define HEADER_E_OS2_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * Detect operating systems. This probably needs completing. + * The result is that at least one OPENSSL_SYS_os macro should be defined. + * However, if none is defined, Unix is assumed. + **/ + +# define OPENSSL_SYS_UNIX + +/* --------------------- Microsoft operating systems ---------------------- */ + +/* + * Note that MSDOS actually denotes 32-bit environments running on top of + * MS-DOS, such as DJGPP one. + */ +# if defined(OPENSSL_SYS_MSDOS) +# undef OPENSSL_SYS_UNIX +# endif + +/* + * For 32 bit environment, there seems to be the CygWin environment and then + * all the others that try to do the same thing Microsoft does... + */ +/* + * UEFI lives here because it might be built with a Microsoft toolchain and + * we need to avoid the false positive match on Windows. + */ +# if defined(OPENSSL_SYS_UEFI) +# undef OPENSSL_SYS_UNIX +# elif defined(OPENSSL_SYS_UWIN) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32_UWIN +# else +# if defined(__CYGWIN__) || defined(OPENSSL_SYS_CYGWIN) +# define OPENSSL_SYS_WIN32_CYGWIN +# else +# if defined(_WIN32) || defined(OPENSSL_SYS_WIN32) +# undef OPENSSL_SYS_UNIX +# if !defined(OPENSSL_SYS_WIN32) +# define OPENSSL_SYS_WIN32 +# endif +# endif +# if defined(_WIN64) || defined(OPENSSL_SYS_WIN64) +# undef OPENSSL_SYS_UNIX +# if !defined(OPENSSL_SYS_WIN64) +# define OPENSSL_SYS_WIN64 +# endif +# endif +# if defined(OPENSSL_SYS_WINNT) +# undef OPENSSL_SYS_UNIX +# endif +# if defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# endif +# endif +# endif + +/* Anything that tries to look like Microsoft is "Windows" */ +# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN64) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_SYS_MSDOS +# define OPENSSL_SYS_MSDOS +# endif +# endif + +/* + * DLL settings. This part is a bit tough, because it's up to the + * application implementor how he or she will link the application, so it + * requires some macro to be used. + */ +# ifdef OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_OPT_WINDLL +# if defined(_WINDLL) /* This is used when building OpenSSL to + * indicate that DLL linkage should be used */ +# define OPENSSL_OPT_WINDLL +# endif +# endif +# endif + +/* ------------------------------- OpenVMS -------------------------------- */ +# if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYS_VMS) +# if !defined(OPENSSL_SYS_VMS) +# undef OPENSSL_SYS_UNIX +# endif +# define OPENSSL_SYS_VMS +# if defined(__DECC) +# define OPENSSL_SYS_VMS_DECC +# elif defined(__DECCXX) +# define OPENSSL_SYS_VMS_DECC +# define OPENSSL_SYS_VMS_DECCXX +# else +# define OPENSSL_SYS_VMS_NODECC +# endif +# endif + +/* -------------------------------- Unix ---------------------------------- */ +# ifdef OPENSSL_SYS_UNIX +# if defined(linux) || defined(__linux__) && !defined(OPENSSL_SYS_LINUX) +# define OPENSSL_SYS_LINUX +# endif +# if defined(_AIX) && !defined(OPENSSL_SYS_AIX) +# define OPENSSL_SYS_AIX +# endif +# endif + +/* -------------------------------- VOS ----------------------------------- */ +# if defined(__VOS__) && !defined(OPENSSL_SYS_VOS) +# define OPENSSL_SYS_VOS +# ifdef __HPPA__ +# define OPENSSL_SYS_VOS_HPPA +# endif +# ifdef __IA32__ +# define OPENSSL_SYS_VOS_IA32 +# endif +# endif + +/** + * That's it for OS-specific stuff + *****************************************************************************/ + +/* Specials for I/O an exit */ +# ifdef OPENSSL_SYS_MSDOS +# define OPENSSL_UNISTD_IO +# define OPENSSL_DECLARE_EXIT extern void exit(int); +# else +# define OPENSSL_UNISTD_IO OPENSSL_UNISTD +# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */ +# endif + +/*- + * OPENSSL_EXTERN is normally used to declare a symbol with possible extra + * attributes to handle its presence in a shared library. + * OPENSSL_EXPORT is used to define a symbol with extra possible attributes + * to make it visible in a shared library. + * Care needs to be taken when a header file is used both to declare and + * define symbols. Basically, for any library that exports some global + * variables, the following code must be present in the header file that + * declares them, before OPENSSL_EXTERN is used: + * + * #ifdef SOME_BUILD_FLAG_MACRO + * # undef OPENSSL_EXTERN + * # define OPENSSL_EXTERN OPENSSL_EXPORT + * #endif + * + * The default is to have OPENSSL_EXPORT and OPENSSL_EXTERN + * have some generally sensible values. + */ + +# if defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) +# define OPENSSL_EXPORT extern __declspec(dllexport) +# define OPENSSL_EXTERN extern __declspec(dllimport) +# else +# define OPENSSL_EXPORT extern +# define OPENSSL_EXTERN extern +# endif + +/*- + * Macros to allow global variables to be reached through function calls when + * required (if a shared library version requires it, for example. + * The way it's done allows definitions like this: + * + * // in foobar.c + * OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0) + * // in foobar.h + * OPENSSL_DECLARE_GLOBAL(int,foobar); + * #define foobar OPENSSL_GLOBAL_REF(foobar) + */ +# ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) \ + type *_shadow_##name(void) \ + { static type _hide_##name=value; return &_hide_##name; } +# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void) +# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name())) +# else +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) type _shadow_##name=value; +# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name +# define OPENSSL_GLOBAL_REF(name) _shadow_##name +# endif + +# ifdef _WIN32 +# ifdef _WIN64 +# define ossl_ssize_t __int64 +# define OSSL_SSIZE_MAX _I64_MAX +# else +# define ossl_ssize_t int +# define OSSL_SSIZE_MAX INT_MAX +# endif +# endif + +# if defined(OPENSSL_SYS_UEFI) && !defined(ossl_ssize_t) +# define ossl_ssize_t INTN +# define OSSL_SSIZE_MAX MAX_INTN +# endif + +# ifndef ossl_ssize_t +# define ossl_ssize_t ssize_t +# if defined(SSIZE_MAX) +# define OSSL_SSIZE_MAX SSIZE_MAX +# elif defined(_POSIX_SSIZE_MAX) +# define OSSL_SSIZE_MAX _POSIX_SSIZE_MAX +# else +# define OSSL_SSIZE_MAX ((ssize_t)(SIZE_MAX>>1)) +# endif +# endif + +# ifdef DEBUG_UNUSED +# define __owur __attribute__((__warn_unused_result__)) +# else +# define __owur +# endif + +/* Standard integer types */ +# if defined(OPENSSL_SYS_UEFI) +typedef INT8 int8_t; +typedef UINT8 uint8_t; +typedef INT16 int16_t; +typedef UINT16 uint16_t; +typedef INT32 int32_t; +typedef UINT32 uint32_t; +typedef INT64 int64_t; +typedef UINT64 uint64_t; +# elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + defined(__osf__) || defined(__sgi) || defined(__hpux) || \ + defined(OPENSSL_SYS_VMS) || defined (__OpenBSD__) +# include +# elif defined(_MSC_VER) && _MSC_VER<1600 +/* + * minimally required typdefs for systems not supporting inttypes.h or + * stdint.h: currently just older VC++ + */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; +typedef unsigned short uint16_t; +typedef int int32_t; +typedef unsigned int uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +# else +# include +# endif + +/* ossl_inline: portable inline definition usable in public headers */ +# if !defined(inline) && !defined(__cplusplus) +# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L + /* just use inline */ +# define ossl_inline inline +# elif defined(__GNUC__) && __GNUC__>=2 +# define ossl_inline __inline__ +# elif defined(_MSC_VER) + /* + * Visual Studio: inline is available in C++ only, however + * __inline is available for C, see + * http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx + */ +# define ossl_inline __inline +# else +# define ossl_inline +# endif +# else +# define ossl_inline inline +# endif + +# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && \ + !defined(__cplusplus) +# define ossl_noreturn _Noreturn +# elif defined(__GNUC__) && __GNUC__ >= 2 +# define ossl_noreturn __attribute__((noreturn)) +# else +# define ossl_noreturn +# endif + +/* ossl_unused: portable unused attribute for use in public headers */ +# if defined(__GNUC__) +# define ossl_unused __attribute__((unused)) +# else +# define ossl_unused +# endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/win64/include/openssl/ebcdic.h b/openSSL/win64/include/openssl/ebcdic.h new file mode 100644 index 0000000..aa01285 --- /dev/null +++ b/openSSL/win64/include/openssl/ebcdic.h @@ -0,0 +1,33 @@ +/* + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EBCDIC_H +# define HEADER_EBCDIC_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Avoid name clashes with other applications */ +# define os_toascii _openssl_os_toascii +# define os_toebcdic _openssl_os_toebcdic +# define ebcdic2ascii _openssl_ebcdic2ascii +# define ascii2ebcdic _openssl_ascii2ebcdic + +extern const unsigned char os_toascii[256]; +extern const unsigned char os_toebcdic[256]; +void *ebcdic2ascii(void *dest, const void *srce, size_t count); +void *ascii2ebcdic(void *dest, const void *srce, size_t count); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/win64/include/openssl/ec.h b/openSSL/win64/include/openssl/ec.h new file mode 100644 index 0000000..24baf53 --- /dev/null +++ b/openSSL/win64/include/openssl/ec.h @@ -0,0 +1,1484 @@ +/* + * Copyright 2002-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EC_H +# define HEADER_EC_H + +# include + +# ifndef OPENSSL_NO_EC +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_ECC_MAX_FIELD_BITS +# define OPENSSL_ECC_MAX_FIELD_BITS 661 +# endif + +/** Enum for the point conversion form as defined in X9.62 (ECDSA) + * for the encoding of a elliptic curve point (x,y) */ +typedef enum { + /** the point is encoded as z||x, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_COMPRESSED = 2, + /** the point is encoded as z||x||y, where z is the octet 0x04 */ + POINT_CONVERSION_UNCOMPRESSED = 4, + /** the point is encoded as z||x||y, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_HYBRID = 6 +} point_conversion_form_t; + +typedef struct ec_method_st EC_METHOD; +typedef struct ec_group_st EC_GROUP; +typedef struct ec_point_st EC_POINT; +typedef struct ecpk_parameters_st ECPKPARAMETERS; +typedef struct ec_parameters_st ECPARAMETERS; + +/********************************************************************/ +/* EC_METHODs for curves over GF(p) */ +/********************************************************************/ + +/** Returns the basic GFp ec methods which provides the basis for the + * optimized methods. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_simple_method(void); + +/** Returns GFp methods using montgomery multiplication. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_mont_method(void); + +/** Returns GFp methods using optimized methods for NIST recommended curves + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nist_method(void); + +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +/** Returns 64-bit optimized methods for nistp224 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp224_method(void); + +/** Returns 64-bit optimized methods for nistp256 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp256_method(void); + +/** Returns 64-bit optimized methods for nistp521 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp521_method(void); +# endif + +# ifndef OPENSSL_NO_EC2M +/********************************************************************/ +/* EC_METHOD for curves over GF(2^m) */ +/********************************************************************/ + +/** Returns the basic GF2m ec method + * \return EC_METHOD object + */ +const EC_METHOD *EC_GF2m_simple_method(void); + +# endif + +/********************************************************************/ +/* EC_GROUP functions */ +/********************************************************************/ + +/** Creates a new EC_GROUP object + * \param meth EC_METHOD to use + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); + +/** Frees a EC_GROUP object + * \param group EC_GROUP object to be freed. + */ +void EC_GROUP_free(EC_GROUP *group); + +/** Clears and frees a EC_GROUP object + * \param group EC_GROUP object to be cleared and freed. + */ +void EC_GROUP_clear_free(EC_GROUP *group); + +/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. + * \param dst destination EC_GROUP object + * \param src source EC_GROUP object + * \return 1 on success and 0 if an error occurred. + */ +int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); + +/** Creates a new EC_GROUP object and copies the copies the content + * form src to the newly created EC_KEY object + * \param src source EC_GROUP object + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); + +/** Returns the EC_METHOD of the EC_GROUP object. + * \param group EC_GROUP object + * \return EC_METHOD used in this EC_GROUP object. + */ +const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); + +/** Returns the field type of the EC_METHOD. + * \param meth EC_METHOD object + * \return NID of the underlying field type OID. + */ +int EC_METHOD_get_field_type(const EC_METHOD *meth); + +/** Sets the generator and its order/cofactor of a EC_GROUP object. + * \param group EC_GROUP object + * \param generator EC_POINT object with the generator. + * \param order the order of the group generated by the generator. + * \param cofactor the index of the sub-group generated by the generator + * in the group of all points on the elliptic curve. + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, + const BIGNUM *order, const BIGNUM *cofactor); + +/** Returns the generator of a EC_GROUP object. + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). + */ +const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); + +/** Returns the montgomery data for order(Generator) + * \param group EC_GROUP object + * \return the currently used montgomery data (possibly NULL). +*/ +BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); + +/** Gets the order of a EC_GROUP + * \param group EC_GROUP object + * \param order BIGNUM to which the order is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); + +/** Gets the order of an EC_GROUP + * \param group EC_GROUP object + * \return the group order + */ +const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group); + +/** Gets the number of bits of the order of an EC_GROUP + * \param group EC_GROUP object + * \return number of bits of group order. + */ +int EC_GROUP_order_bits(const EC_GROUP *group); + +/** Gets the cofactor of a EC_GROUP + * \param group EC_GROUP object + * \param cofactor BIGNUM to which the cofactor is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, + BN_CTX *ctx); + +/** Gets the cofactor of an EC_GROUP + * \param group EC_GROUP object + * \return the group cofactor + */ +const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group); + +/** Sets the name of a EC_GROUP object + * \param group EC_GROUP object + * \param nid NID of the curve name OID + */ +void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); + +/** Returns the curve name of a EC_GROUP object + * \param group EC_GROUP object + * \return NID of the curve name OID or 0 if not set. + */ +int EC_GROUP_get_curve_name(const EC_GROUP *group); + +void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); +int EC_GROUP_get_asn1_flag(const EC_GROUP *group); + +void EC_GROUP_set_point_conversion_form(EC_GROUP *group, + point_conversion_form_t form); +point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); + +unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); +size_t EC_GROUP_get_seed_len(const EC_GROUP *); +size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); + +/** Sets the parameters of a ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameters of the ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +/** Sets the parameters of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, + const BIGNUM *a, const BIGNUM *b, + BN_CTX *ctx)) + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx)) + +# ifndef OPENSSL_NO_EC2M +/** Sets the parameter of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, + const BIGNUM *a, const BIGNUM *b, + BN_CTX *ctx)) + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx)) +# endif +/** Returns the number of bits needed to represent a field element + * \param group EC_GROUP object + * \return number of bits needed to represent a field element + */ +int EC_GROUP_get_degree(const EC_GROUP *group); + +/** Checks whether the parameter in the EC_GROUP define a valid ec group + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if group is a valid ec group and 0 otherwise + */ +int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); + +/** Checks whether the discriminant of the elliptic curve is zero or not + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if the discriminant is not zero and 0 otherwise + */ +int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); + +/** Compares two EC_GROUP objects + * \param a first EC_GROUP object + * \param b second EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 0 if the groups are equal, 1 if not, or -1 on error + */ +int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); + +/* + * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after + * choosing an appropriate EC_METHOD + */ + +/** Creates a new EC_GROUP object with the specified parameters defined + * over GFp (defined by the equation y^2 = x^3 + a*x + b) + * \param p BIGNUM with the prime number + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# ifndef OPENSSL_NO_EC2M +/** Creates a new EC_GROUP object with the specified parameters defined + * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b) + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# endif + +/** Creates a EC_GROUP object with a curve specified by a NID + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name(int nid); + +/** Creates a new EC_GROUP object from an ECPARAMETERS object + * \param params pointer to the ECPARAMETERS object + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params); + +/** Creates an ECPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPARAMETERS object or NULL + * \return pointer to the new ECPARAMETERS object or NULL + * if an error occurred. + */ +ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, + ECPARAMETERS *params); + +/** Creates a new EC_GROUP object from an ECPKPARAMETERS object + * \param params pointer to an existing ECPKPARAMETERS object, or NULL + * \return newly created EC_GROUP object with specified curve, or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params); + +/** Creates an ECPKPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPKPARAMETERS object or NULL + * \return pointer to the new ECPKPARAMETERS object or NULL + * if an error occurred. + */ +ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group, + ECPKPARAMETERS *params); + +/********************************************************************/ +/* handling of internal curves */ +/********************************************************************/ + +typedef struct { + int nid; + const char *comment; +} EC_builtin_curve; + +/* + * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all + * available curves or zero if a error occurred. In case r is not zero, + * nitems EC_builtin_curve structures are filled with the data of the first + * nitems internal groups + */ +size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); + +const char *EC_curve_nid2nist(int nid); +int EC_curve_nist2nid(const char *name); + +/********************************************************************/ +/* EC_POINT functions */ +/********************************************************************/ + +/** Creates a new EC_POINT object for the specified EC_GROUP + * \param group EC_GROUP the underlying EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_new(const EC_GROUP *group); + +/** Frees a EC_POINT object + * \param point EC_POINT object to be freed + */ +void EC_POINT_free(EC_POINT *point); + +/** Clears and frees a EC_POINT object + * \param point EC_POINT object to be cleared and freed + */ +void EC_POINT_clear_free(EC_POINT *point); + +/** Copies EC_POINT object + * \param dst destination EC_POINT object + * \param src source EC_POINT object + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); + +/** Creates a new EC_POINT object and copies the content of the supplied + * EC_POINT + * \param src source EC_POINT object + * \param group underlying the EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); + +/** Returns the EC_METHOD used in EC_POINT object + * \param point EC_POINT object + * \return the EC_METHOD used + */ +const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); + +/** Sets a point to infinity (neutral element) + * \param group underlying EC_GROUP object + * \param point EC_POINT to set to infinity + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); + +/** Sets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param z BIGNUM with the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, const BIGNUM *x, + const BIGNUM *y, const BIGNUM *z, + BN_CTX *ctx); + +/** Gets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param z BIGNUM for the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BIGNUM *z, + BN_CTX *ctx); + +/** Sets the affine coordinates of an EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + const BIGNUM *y, + BN_CTX *ctx)) + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, + BIGNUM *x, + BIGNUM *y, + BN_CTX *ctx)) + +/** Sets the x9.62 compressed coordinates of a EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, + BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + int y_bit, + BN_CTX *ctx)) +# ifndef OPENSSL_NO_EC2M +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + const BIGNUM *y, + BN_CTX *ctx)) + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, + const EC_POINT *p, + BIGNUM *x, + BIGNUM *y, + BN_CTX *ctx)) + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + int y_bit, + BN_CTX *ctx)) +# endif +/** Encodes a EC_POINT object to a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param form point conversion form + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, + point_conversion_form_t form, + unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Decodes a EC_POINT from a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, + const unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Encodes an EC_POINT object to an allocated octet string + * \param group underlying EC_GROUP object + * \param point EC_POINT object + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2buf(const EC_GROUP *group, const EC_POINT *point, + point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/* other interfaces to point2oct/oct2point: */ +BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BIGNUM *, BN_CTX *); +EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, + EC_POINT *, BN_CTX *); +char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BN_CTX *); +EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, + EC_POINT *, BN_CTX *); + +/********************************************************************/ +/* functions for doing EC_POINT arithmetic */ +/********************************************************************/ + +/** Computes the sum of two EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = a + b) + * \param a EC_POINT object with the first summand + * \param b EC_POINT object with the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + const EC_POINT *b, BN_CTX *ctx); + +/** Computes the double of a EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = 2 * a) + * \param a EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + BN_CTX *ctx); + +/** Computes the inverse of a EC_POINT + * \param group underlying EC_GROUP object + * \param a EC_POINT object to be inverted (it's used for the result as well) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); + +/** Checks whether the point is the neutral element of the group + * \param group the underlying EC_GROUP object + * \param p EC_POINT object + * \return 1 if the point is the neutral element and 0 otherwise + */ +int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); + +/** Checks whether the point is on the curve + * \param group underlying EC_GROUP object + * \param point EC_POINT object to check + * \param ctx BN_CTX object (optional) + * \return 1 if the point is on the curve, 0 if not, or -1 on error + */ +int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, + BN_CTX *ctx); + +/** Compares two EC_POINTs + * \param group underlying EC_GROUP object + * \param a first EC_POINT object + * \param b second EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 if the points are not equal, 0 if they are, or -1 on error + */ +int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, + BN_CTX *ctx); + +int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); +int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, + EC_POINT *points[], BN_CTX *ctx); + +/** Computes r = generator * n + sum_{i=0}^{num-1} p[i] * m[i] + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param num number further summands + * \param p array of size num of EC_POINT objects + * \param m array of size num of BIGNUM objects + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + size_t num, const EC_POINT *p[], const BIGNUM *m[], + BN_CTX *ctx); + +/** Computes r = generator * n + q * m + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param q EC_POINT object with the first factor of the second summand + * \param m BIGNUM with the second factor of the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); + +/** Stores multiples of generator for faster point multiplication + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); + +/** Reports whether a precomputation has been done + * \param group EC_GROUP object + * \return 1 if a pre-computation has been done and 0 otherwise + */ +int EC_GROUP_have_precompute_mult(const EC_GROUP *group); + +/********************************************************************/ +/* ASN1 stuff */ +/********************************************************************/ + +DECLARE_ASN1_ITEM(ECPKPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPKPARAMETERS) +DECLARE_ASN1_ITEM(ECPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPARAMETERS) + +/* + * EC_GROUP_get_basis_type() returns the NID of the basis type used to + * represent the field elements + */ +int EC_GROUP_get_basis_type(const EC_GROUP *); +# ifndef OPENSSL_NO_EC2M +int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); +int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, + unsigned int *k2, unsigned int *k3); +# endif + +# define OPENSSL_EC_EXPLICIT_CURVE 0x000 +# define OPENSSL_EC_NAMED_CURVE 0x001 + +EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); +int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); + +# define d2i_ECPKParameters_bio(bp,x) \ + ASN1_d2i_bio_of(EC_GROUP, NULL, d2i_ECPKParameters, bp, x) +# define i2d_ECPKParameters_bio(bp,x) \ + ASN1_i2d_bio_of_const(EC_GROUP, i2d_ECPKParameters, bp, x) +# define d2i_ECPKParameters_fp(fp,x) \ + (EC_GROUP *)ASN1_d2i_fp(NULL, (d2i_of_void *)d2i_ECPKParameters, (fp), \ + (void **)(x)) +# define i2d_ECPKParameters_fp(fp,x) \ + ASN1_i2d_fp((i2d_of_void *)i2d_ECPKParameters, (fp), (void *)(x)) + +int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); +# ifndef OPENSSL_NO_STDIO +int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); +# endif + +/********************************************************************/ +/* EC_KEY functions */ +/********************************************************************/ + +/* some values for the encoding_flag */ +# define EC_PKEY_NO_PARAMETERS 0x001 +# define EC_PKEY_NO_PUBKEY 0x002 + +/* some values for the flags field */ +# define EC_FLAG_NON_FIPS_ALLOW 0x1 +# define EC_FLAG_FIPS_CHECKED 0x2 +# define EC_FLAG_COFACTOR_ECDH 0x1000 + +/** Creates a new EC_KEY object. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new(void); + +int EC_KEY_get_flags(const EC_KEY *key); + +void EC_KEY_set_flags(EC_KEY *key, int flags); + +void EC_KEY_clear_flags(EC_KEY *key, int flags); + +int EC_KEY_decoded_from_explicit_params(const EC_KEY *key); + +/** Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new_by_curve_name(int nid); + +/** Frees a EC_KEY object. + * \param key EC_KEY object to be freed. + */ +void EC_KEY_free(EC_KEY *key); + +/** Copies a EC_KEY object. + * \param dst destination EC_KEY object + * \param src src EC_KEY object + * \return dst or NULL if an error occurred. + */ +EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); + +/** Creates a new EC_KEY object and copies the content from src to it. + * \param src the source EC_KEY object + * \return newly created EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_dup(const EC_KEY *src); + +/** Increases the internal reference count of a EC_KEY object. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_up_ref(EC_KEY *key); + +/** Returns the ENGINE object of a EC_KEY object + * \param eckey EC_KEY object + * \return the ENGINE object (possibly NULL). + */ +ENGINE *EC_KEY_get0_engine(const EC_KEY *eckey); + +/** Returns the EC_GROUP object of a EC_KEY object + * \param key EC_KEY object + * \return the EC_GROUP object (possibly NULL). + */ +const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); + +/** Sets the EC_GROUP of a EC_KEY object. + * \param key EC_KEY object + * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY + * object will use an own copy of the EC_GROUP). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); + +/** Returns the private key of a EC_KEY object. + * \param key EC_KEY object + * \return a BIGNUM with the private key (possibly NULL). + */ +const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); + +/** Sets the private key of a EC_KEY object. + * \param key EC_KEY object + * \param prv BIGNUM with the private key (note: the EC_KEY object + * will use an own copy of the BIGNUM). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); + +/** Returns the public key of a EC_KEY object. + * \param key the EC_KEY object + * \return a EC_POINT object with the public key (possibly NULL) + */ +const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); + +/** Sets the public key of a EC_KEY object. + * \param key EC_KEY object + * \param pub EC_POINT object with the public key (note: the EC_KEY object + * will use an own copy of the EC_POINT object). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + +unsigned EC_KEY_get_enc_flags(const EC_KEY *key); +void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); +point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); + +#define EC_KEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EC_KEY, l, p, newf, dupf, freef) +int EC_KEY_set_ex_data(EC_KEY *key, int idx, void *arg); +void *EC_KEY_get_ex_data(const EC_KEY *key, int idx); + +/* wrapper functions for the underlying EC_GROUP object */ +void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); + +/** Creates a table of pre-computed multiples of the generator to + * accelerate further EC_KEY operations. + * \param key EC_KEY object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); + +/** Creates a new ec private (and optional a new public) key. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_generate_key(EC_KEY *key); + +/** Verifies that a private and/or public key is valid. + * \param key the EC_KEY object + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_check_key(const EC_KEY *key); + +/** Indicates if an EC_KEY can be used for signing. + * \param eckey the EC_KEY object + * \return 1 if can can sign and 0 otherwise. + */ +int EC_KEY_can_sign(const EC_KEY *eckey); + +/** Sets a public key from affine coordinates performing + * necessary NIST PKV tests. + * \param key the EC_KEY object + * \param x public key x coordinate + * \param y public key y coordinate + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, + BIGNUM *y); + +/** Encodes an EC_KEY public key to an allocated octet string + * \param key key to encode + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_KEY_key2buf(const EC_KEY *key, point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/** Decodes a EC_KEY public key from a octet string + * \param key key to decode + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ + +int EC_KEY_oct2key(EC_KEY *key, const unsigned char *buf, size_t len, + BN_CTX *ctx); + +/** Decodes an EC_KEY private key from an octet string + * \param key key to decode + * \param buf memory buffer with the encoded private key + * \param len length of the encoded key + * \return 1 on success and 0 if an error occurred + */ + +int EC_KEY_oct2priv(EC_KEY *key, const unsigned char *buf, size_t len); + +/** Encodes a EC_KEY private key to an octet string + * \param key key to encode + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ + +size_t EC_KEY_priv2oct(const EC_KEY *key, unsigned char *buf, size_t len); + +/** Encodes an EC_KEY private key to an allocated octet string + * \param eckey key to encode + * \param pbuf returns pointer to allocated buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_KEY_priv2buf(const EC_KEY *eckey, unsigned char **pbuf); + +/********************************************************************/ +/* de- and encoding functions for SEC1 ECPrivateKey */ +/********************************************************************/ + +/** Decodes a private key from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded private key + * \param len length of the DER encoded private key + * \return the decoded private key or NULL if an error occurred. + */ +EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a private key object and stores the result in a buffer. + * \param key the EC_KEY object to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC parameters */ +/********************************************************************/ + +/** Decodes ec parameter from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded ec parameters + * \param len length of the DER encoded ec parameters + * \return a EC_KEY object with the decoded parameters or NULL if an error + * occurred. + */ +EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes ec parameter and stores the result in a buffer. + * \param key the EC_KEY object with ec parameters to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECParameters(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC public key */ +/* (octet string, not DER -- hence 'o2i' and 'i2o') */ +/********************************************************************/ + +/** Decodes a ec public key from a octet string. + * \param key a pointer to a EC_KEY object which should be used + * \param in memory buffer with the encoded public key + * \param len length of the encoded public key + * \return EC_KEY object with decoded public key or NULL if an error + * occurred. + */ +EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a ec public key in an octet string. + * \param key the EC_KEY object with the public key + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred + */ +int i2o_ECPublicKey(const EC_KEY *key, unsigned char **out); + +/** Prints out the ec parameters on human readable form. + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print(BIO *bp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); + +# ifndef OPENSSL_NO_STDIO +/** Prints out the ec parameters on human readable form. + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print_fp(FILE *fp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); + +# endif + +const EC_KEY_METHOD *EC_KEY_OpenSSL(void); +const EC_KEY_METHOD *EC_KEY_get_default_method(void); +void EC_KEY_set_default_method(const EC_KEY_METHOD *meth); +const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); +int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); +EC_KEY *EC_KEY_new_method(ENGINE *engine); + +/** The old name for ecdh_KDF_X9_63 + * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +int ECDH_KDF_X9_62(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + const unsigned char *sinfo, size_t sinfolen, + const EVP_MD *md); + +int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, + const EC_KEY *ecdh, + void *(*KDF) (const void *in, size_t inlen, + void *out, size_t *outlen)); + +typedef struct ECDSA_SIG_st ECDSA_SIG; + +/** Allocates and initialize a ECDSA_SIG structure + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_SIG_new(void); + +/** frees a ECDSA_SIG structure + * \param sig pointer to the ECDSA_SIG structure + */ +void ECDSA_SIG_free(ECDSA_SIG *sig); + +/** DER encode content of ECDSA_SIG object (note: this function modifies *pp + * (*pp += length of the DER encoded signature)). + * \param sig pointer to the ECDSA_SIG object + * \param pp pointer to a unsigned char pointer for the output or NULL + * \return the length of the DER encoded ECDSA_SIG object or a negative value + * on error + */ +int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp); + +/** Decodes a DER encoded ECDSA signature (note: this function changes *pp + * (*pp += len)). + * \param sig pointer to ECDSA_SIG pointer (may be NULL) + * \param pp memory buffer with the DER encoded signature + * \param len length of the buffer + * \return pointer to the decoded ECDSA_SIG structure (or NULL) + */ +ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len); + +/** Accessor for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param pr pointer to BIGNUM pointer for r (may be NULL) + * \param ps pointer to BIGNUM pointer for s (may be NULL) + */ +void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); + +/** Accessor for r field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_r(const ECDSA_SIG *sig); + +/** Accessor for s field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_s(const ECDSA_SIG *sig); + +/** Setter for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param r pointer to BIGNUM for r (may be NULL) + * \param s pointer to BIGNUM for s (may be NULL) + */ +int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +/** Computes the ECDSA signature of the given hash value using + * the supplied private key and returns the created signature. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len, + EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dgstlen, + const BIGNUM *kinv, const BIGNUM *rp, + EC_KEY *eckey); + +/** Verifies that the supplied signature is a valid ECDSA + * signature of the supplied hash value using the supplied public key. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param sig ECDSA_SIG structure + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, + const ECDSA_SIG *sig, EC_KEY *eckey); + +/** Precompute parts of the signing operation + * \param eckey EC_KEY object containing a private EC key + * \param ctx BN_CTX object (optional) + * \param kinv BIGNUM pointer for the inverse of k + * \param rp BIGNUM pointer for x coordinate of k * generator + * \return 1 on success and 0 otherwise + */ +int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, BIGNUM **rp); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig memory for the DER encoded created signature + * \param siglen pointer to the length of the returned signature + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen, + unsigned char *sig, unsigned int *siglen, EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig buffer to hold the DER encoded signature + * \param siglen pointer to the length of the returned signature + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen, + unsigned char *sig, unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey); + +/** Verifies that the given signature is valid ECDSA signature + * of the supplied hash value using the specified public key. + * \param type this parameter is ignored + * \param dgst pointer to the hash value + * \param dgstlen length of the hash value + * \param sig pointer to the DER encoded signature + * \param siglen length of the DER encoded signature + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen, + const unsigned char *sig, int siglen, EC_KEY *eckey); + +/** Returns the maximum length of the DER encoded signature + * \param eckey EC_KEY object + * \return numbers of bytes required for the DER encoded signature + */ +int ECDSA_size(const EC_KEY *eckey); + +/********************************************************************/ +/* EC_KEY_METHOD constructors, destructors, writers and accessors */ +/********************************************************************/ + +EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth); +void EC_KEY_METHOD_free(EC_KEY_METHOD *meth); +void EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth, + int (*init)(EC_KEY *key), + void (*finish)(EC_KEY *key), + int (*copy)(EC_KEY *dest, const EC_KEY *src), + int (*set_group)(EC_KEY *key, const EC_GROUP *grp), + int (*set_private)(EC_KEY *key, + const BIGNUM *priv_key), + int (*set_public)(EC_KEY *key, + const EC_POINT *pub_key)); + +void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth, + int (*keygen)(EC_KEY *key)); + +void EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth, + int (*ckey)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +void EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth, + int (*sign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (*sign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(*sign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +void EC_KEY_METHOD_set_verify(EC_KEY_METHOD *meth, + int (*verify)(int type, const unsigned + char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (*verify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); + +void EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth, + int (**pinit)(EC_KEY *key), + void (**pfinish)(EC_KEY *key), + int (**pcopy)(EC_KEY *dest, const EC_KEY *src), + int (**pset_group)(EC_KEY *key, + const EC_GROUP *grp), + int (**pset_private)(EC_KEY *key, + const BIGNUM *priv_key), + int (**pset_public)(EC_KEY *key, + const EC_POINT *pub_key)); + +void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth, + int (**pkeygen)(EC_KEY *key)); + +void EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth, + int (**pck)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +void EC_KEY_METHOD_get_sign(const EC_KEY_METHOD *meth, + int (**psign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(**psign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +void EC_KEY_METHOD_get_verify(const EC_KEY_METHOD *meth, + int (**pverify)(int type, const unsigned + char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (**pverify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); + +# define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x) + +# ifndef __cplusplus +# if defined(__SUNPRO_C) +# if __SUNPRO_C >= 0x520 +# pragma error_messages (default,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) +# endif +# endif +# endif + +# define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_ec_param_enc(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAM_ENC, flag, NULL) + +# define EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, flag, NULL) + +# define EVP_PKEY_CTX_get_ecdh_cofactor_mode(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_ecdh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_ecdh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN, 0, \ + (void *)(plen)) + +# define EVP_PKEY_CTX_set0_ecdh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_UKM, plen, (void *)(p)) + +# define EVP_PKEY_CTX_get0_ecdh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_UKM, 0, (void *)(p)) + +/* SM2 will skip the operation check so no need to pass operation here */ +# define EVP_PKEY_CTX_set1_id(ctx, id, id_len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_SET1_ID, (int)id_len, (void*)(id)) + +# define EVP_PKEY_CTX_get1_id(ctx, id) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_GET1_ID, 0, (void*)(id)) + +# define EVP_PKEY_CTX_get1_id_len(ctx, id_len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_GET1_ID_LEN, 0, (void*)(id_len)) + +# define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_SET1_ID (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET1_ID (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_GET1_ID_LEN (EVP_PKEY_ALG_CTRL + 13) +/* KDF types */ +# define EVP_PKEY_ECDH_KDF_NONE 1 +# define EVP_PKEY_ECDH_KDF_X9_63 2 +/** The old name for EVP_PKEY_ECDH_KDF_X9_63 + * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +# define EVP_PKEY_ECDH_KDF_X9_62 EVP_PKEY_ECDH_KDF_X9_63 + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/win64/include/openssl/ecdh.h b/openSSL/win64/include/openssl/ecdh.h new file mode 100644 index 0000000..681f3d5 --- /dev/null +++ b/openSSL/win64/include/openssl/ecdh.h @@ -0,0 +1,10 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include diff --git a/openSSL/win64/include/openssl/ecdsa.h b/openSSL/win64/include/openssl/ecdsa.h new file mode 100644 index 0000000..681f3d5 --- /dev/null +++ b/openSSL/win64/include/openssl/ecdsa.h @@ -0,0 +1,10 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include diff --git a/openSSL/win64/include/openssl/ecerr.h b/openSSL/win64/include/openssl/ecerr.h new file mode 100644 index 0000000..5173811 --- /dev/null +++ b/openSSL/win64/include/openssl/ecerr.h @@ -0,0 +1,276 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ECERR_H +# define HEADER_ECERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_EC + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_EC_strings(void); + +/* + * EC function codes. + */ +# define EC_F_BN_TO_FELEM 224 +# define EC_F_D2I_ECPARAMETERS 144 +# define EC_F_D2I_ECPKPARAMETERS 145 +# define EC_F_D2I_ECPRIVATEKEY 146 +# define EC_F_DO_EC_KEY_PRINT 221 +# define EC_F_ECDH_CMS_DECRYPT 238 +# define EC_F_ECDH_CMS_SET_SHARED_INFO 239 +# define EC_F_ECDH_COMPUTE_KEY 246 +# define EC_F_ECDH_SIMPLE_COMPUTE_KEY 257 +# define EC_F_ECDSA_DO_SIGN_EX 251 +# define EC_F_ECDSA_DO_VERIFY 252 +# define EC_F_ECDSA_SIGN_EX 254 +# define EC_F_ECDSA_SIGN_SETUP 248 +# define EC_F_ECDSA_SIG_NEW 265 +# define EC_F_ECDSA_VERIFY 253 +# define EC_F_ECD_ITEM_VERIFY 270 +# define EC_F_ECKEY_PARAM2TYPE 223 +# define EC_F_ECKEY_PARAM_DECODE 212 +# define EC_F_ECKEY_PRIV_DECODE 213 +# define EC_F_ECKEY_PRIV_ENCODE 214 +# define EC_F_ECKEY_PUB_DECODE 215 +# define EC_F_ECKEY_PUB_ENCODE 216 +# define EC_F_ECKEY_TYPE2PARAM 220 +# define EC_F_ECPARAMETERS_PRINT 147 +# define EC_F_ECPARAMETERS_PRINT_FP 148 +# define EC_F_ECPKPARAMETERS_PRINT 149 +# define EC_F_ECPKPARAMETERS_PRINT_FP 150 +# define EC_F_ECP_NISTZ256_GET_AFFINE 240 +# define EC_F_ECP_NISTZ256_INV_MOD_ORD 275 +# define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 243 +# define EC_F_ECP_NISTZ256_POINTS_MUL 241 +# define EC_F_ECP_NISTZ256_PRE_COMP_NEW 244 +# define EC_F_ECP_NISTZ256_WINDOWED_MUL 242 +# define EC_F_ECX_KEY_OP 266 +# define EC_F_ECX_PRIV_ENCODE 267 +# define EC_F_ECX_PUB_ENCODE 268 +# define EC_F_EC_ASN1_GROUP2CURVE 153 +# define EC_F_EC_ASN1_GROUP2FIELDID 154 +# define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 +# define EC_F_EC_GF2M_SIMPLE_FIELD_INV 296 +# define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159 +# define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 +# define EC_F_EC_GF2M_SIMPLE_LADDER_POST 285 +# define EC_F_EC_GF2M_SIMPLE_LADDER_PRE 288 +# define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160 +# define EC_F_EC_GF2M_SIMPLE_POINT2OCT 161 +# define EC_F_EC_GF2M_SIMPLE_POINTS_MUL 289 +# define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 162 +# define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 163 +# define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164 +# define EC_F_EC_GFP_MONT_FIELD_DECODE 133 +# define EC_F_EC_GFP_MONT_FIELD_ENCODE 134 +# define EC_F_EC_GFP_MONT_FIELD_INV 297 +# define EC_F_EC_GFP_MONT_FIELD_MUL 131 +# define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209 +# define EC_F_EC_GFP_MONT_FIELD_SQR 132 +# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 189 +# define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 225 +# define EC_F_EC_GFP_NISTP224_POINTS_MUL 228 +# define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 226 +# define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 230 +# define EC_F_EC_GFP_NISTP256_POINTS_MUL 231 +# define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 232 +# define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 233 +# define EC_F_EC_GFP_NISTP521_POINTS_MUL 234 +# define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 235 +# define EC_F_EC_GFP_NIST_FIELD_MUL 200 +# define EC_F_EC_GFP_NIST_FIELD_SQR 201 +# define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202 +# define EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES 287 +# define EC_F_EC_GFP_SIMPLE_FIELD_INV 298 +# define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166 +# define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102 +# define EC_F_EC_GFP_SIMPLE_OCT2POINT 103 +# define EC_F_EC_GFP_SIMPLE_POINT2OCT 104 +# define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 137 +# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 167 +# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 168 +# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 169 +# define EC_F_EC_GROUP_CHECK 170 +# define EC_F_EC_GROUP_CHECK_DISCRIMINANT 171 +# define EC_F_EC_GROUP_COPY 106 +# define EC_F_EC_GROUP_GET_CURVE 291 +# define EC_F_EC_GROUP_GET_CURVE_GF2M 172 +# define EC_F_EC_GROUP_GET_CURVE_GFP 130 +# define EC_F_EC_GROUP_GET_DEGREE 173 +# define EC_F_EC_GROUP_GET_ECPARAMETERS 261 +# define EC_F_EC_GROUP_GET_ECPKPARAMETERS 262 +# define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 193 +# define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 194 +# define EC_F_EC_GROUP_NEW 108 +# define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 174 +# define EC_F_EC_GROUP_NEW_FROM_DATA 175 +# define EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS 263 +# define EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS 264 +# define EC_F_EC_GROUP_SET_CURVE 292 +# define EC_F_EC_GROUP_SET_CURVE_GF2M 176 +# define EC_F_EC_GROUP_SET_CURVE_GFP 109 +# define EC_F_EC_GROUP_SET_GENERATOR 111 +# define EC_F_EC_GROUP_SET_SEED 286 +# define EC_F_EC_KEY_CHECK_KEY 177 +# define EC_F_EC_KEY_COPY 178 +# define EC_F_EC_KEY_GENERATE_KEY 179 +# define EC_F_EC_KEY_NEW 182 +# define EC_F_EC_KEY_NEW_METHOD 245 +# define EC_F_EC_KEY_OCT2PRIV 255 +# define EC_F_EC_KEY_PRINT 180 +# define EC_F_EC_KEY_PRINT_FP 181 +# define EC_F_EC_KEY_PRIV2BUF 279 +# define EC_F_EC_KEY_PRIV2OCT 256 +# define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 229 +# define EC_F_EC_KEY_SIMPLE_CHECK_KEY 258 +# define EC_F_EC_KEY_SIMPLE_OCT2PRIV 259 +# define EC_F_EC_KEY_SIMPLE_PRIV2OCT 260 +# define EC_F_EC_PKEY_CHECK 273 +# define EC_F_EC_PKEY_PARAM_CHECK 274 +# define EC_F_EC_POINTS_MAKE_AFFINE 136 +# define EC_F_EC_POINTS_MUL 290 +# define EC_F_EC_POINT_ADD 112 +# define EC_F_EC_POINT_BN2POINT 280 +# define EC_F_EC_POINT_CMP 113 +# define EC_F_EC_POINT_COPY 114 +# define EC_F_EC_POINT_DBL 115 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES 293 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 183 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 116 +# define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 117 +# define EC_F_EC_POINT_INVERT 210 +# define EC_F_EC_POINT_IS_AT_INFINITY 118 +# define EC_F_EC_POINT_IS_ON_CURVE 119 +# define EC_F_EC_POINT_MAKE_AFFINE 120 +# define EC_F_EC_POINT_NEW 121 +# define EC_F_EC_POINT_OCT2POINT 122 +# define EC_F_EC_POINT_POINT2BUF 281 +# define EC_F_EC_POINT_POINT2OCT 123 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES 294 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 185 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 124 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES 295 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 186 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 125 +# define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 126 +# define EC_F_EC_POINT_SET_TO_INFINITY 127 +# define EC_F_EC_PRE_COMP_NEW 196 +# define EC_F_EC_SCALAR_MUL_LADDER 284 +# define EC_F_EC_WNAF_MUL 187 +# define EC_F_EC_WNAF_PRECOMPUTE_MULT 188 +# define EC_F_I2D_ECPARAMETERS 190 +# define EC_F_I2D_ECPKPARAMETERS 191 +# define EC_F_I2D_ECPRIVATEKEY 192 +# define EC_F_I2O_ECPUBLICKEY 151 +# define EC_F_NISTP224_PRE_COMP_NEW 227 +# define EC_F_NISTP256_PRE_COMP_NEW 236 +# define EC_F_NISTP521_PRE_COMP_NEW 237 +# define EC_F_O2I_ECPUBLICKEY 152 +# define EC_F_OLD_EC_PRIV_DECODE 222 +# define EC_F_OSSL_ECDH_COMPUTE_KEY 247 +# define EC_F_OSSL_ECDSA_SIGN_SIG 249 +# define EC_F_OSSL_ECDSA_VERIFY_SIG 250 +# define EC_F_PKEY_ECD_CTRL 271 +# define EC_F_PKEY_ECD_DIGESTSIGN 272 +# define EC_F_PKEY_ECD_DIGESTSIGN25519 276 +# define EC_F_PKEY_ECD_DIGESTSIGN448 277 +# define EC_F_PKEY_ECX_DERIVE 269 +# define EC_F_PKEY_EC_CTRL 197 +# define EC_F_PKEY_EC_CTRL_STR 198 +# define EC_F_PKEY_EC_DERIVE 217 +# define EC_F_PKEY_EC_INIT 282 +# define EC_F_PKEY_EC_KDF_DERIVE 283 +# define EC_F_PKEY_EC_KEYGEN 199 +# define EC_F_PKEY_EC_PARAMGEN 219 +# define EC_F_PKEY_EC_SIGN 218 +# define EC_F_VALIDATE_ECX_DERIVE 278 + +/* + * EC reason codes. + */ +# define EC_R_ASN1_ERROR 115 +# define EC_R_BAD_SIGNATURE 156 +# define EC_R_BIGNUM_OUT_OF_RANGE 144 +# define EC_R_BUFFER_TOO_SMALL 100 +# define EC_R_CANNOT_INVERT 165 +# define EC_R_COORDINATES_OUT_OF_RANGE 146 +# define EC_R_CURVE_DOES_NOT_SUPPORT_ECDH 160 +# define EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING 159 +# define EC_R_D2I_ECPKPARAMETERS_FAILURE 117 +# define EC_R_DECODE_ERROR 142 +# define EC_R_DISCRIMINANT_IS_ZERO 118 +# define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119 +# define EC_R_FIELD_TOO_LARGE 143 +# define EC_R_GF2M_NOT_SUPPORTED 147 +# define EC_R_GROUP2PKPARAMETERS_FAILURE 120 +# define EC_R_I2D_ECPKPARAMETERS_FAILURE 121 +# define EC_R_INCOMPATIBLE_OBJECTS 101 +# define EC_R_INVALID_ARGUMENT 112 +# define EC_R_INVALID_COMPRESSED_POINT 110 +# define EC_R_INVALID_COMPRESSION_BIT 109 +# define EC_R_INVALID_CURVE 141 +# define EC_R_INVALID_DIGEST 151 +# define EC_R_INVALID_DIGEST_TYPE 138 +# define EC_R_INVALID_ENCODING 102 +# define EC_R_INVALID_FIELD 103 +# define EC_R_INVALID_FORM 104 +# define EC_R_INVALID_GROUP_ORDER 122 +# define EC_R_INVALID_KEY 116 +# define EC_R_INVALID_OUTPUT_LENGTH 161 +# define EC_R_INVALID_PEER_KEY 133 +# define EC_R_INVALID_PENTANOMIAL_BASIS 132 +# define EC_R_INVALID_PRIVATE_KEY 123 +# define EC_R_INVALID_TRINOMIAL_BASIS 137 +# define EC_R_KDF_PARAMETER_ERROR 148 +# define EC_R_KEYS_NOT_SET 140 +# define EC_R_LADDER_POST_FAILURE 136 +# define EC_R_LADDER_PRE_FAILURE 153 +# define EC_R_LADDER_STEP_FAILURE 162 +# define EC_R_MISSING_OID 167 +# define EC_R_MISSING_PARAMETERS 124 +# define EC_R_MISSING_PRIVATE_KEY 125 +# define EC_R_NEED_NEW_SETUP_VALUES 157 +# define EC_R_NOT_A_NIST_PRIME 135 +# define EC_R_NOT_IMPLEMENTED 126 +# define EC_R_NOT_INITIALIZED 111 +# define EC_R_NO_PARAMETERS_SET 139 +# define EC_R_NO_PRIVATE_VALUE 154 +# define EC_R_OPERATION_NOT_SUPPORTED 152 +# define EC_R_PASSED_NULL_PARAMETER 134 +# define EC_R_PEER_KEY_ERROR 149 +# define EC_R_PKPARAMETERS2GROUP_FAILURE 127 +# define EC_R_POINT_ARITHMETIC_FAILURE 155 +# define EC_R_POINT_AT_INFINITY 106 +# define EC_R_POINT_COORDINATES_BLIND_FAILURE 163 +# define EC_R_POINT_IS_NOT_ON_CURVE 107 +# define EC_R_RANDOM_NUMBER_GENERATION_FAILED 158 +# define EC_R_SHARED_INFO_ERROR 150 +# define EC_R_SLOT_FULL 108 +# define EC_R_UNDEFINED_GENERATOR 113 +# define EC_R_UNDEFINED_ORDER 128 +# define EC_R_UNKNOWN_COFACTOR 164 +# define EC_R_UNKNOWN_GROUP 129 +# define EC_R_UNKNOWN_ORDER 114 +# define EC_R_UNSUPPORTED_FIELD 131 +# define EC_R_WRONG_CURVE_PARAMETERS 145 +# define EC_R_WRONG_ORDER 130 + +# endif +#endif diff --git a/openSSL/win64/include/openssl/engine.h b/openSSL/win64/include/openssl/engine.h new file mode 100644 index 0000000..d707eae --- /dev/null +++ b/openSSL/win64/include/openssl/engine.h @@ -0,0 +1,752 @@ +/* + * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENGINE_H +# define HEADER_ENGINE_H + +# include + +# ifndef OPENSSL_NO_ENGINE +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# include +# include +# include +# include +# include +# endif +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* + * These flags are used to control combinations of algorithm (methods) by + * bitwise "OR"ing. + */ +# define ENGINE_METHOD_RSA (unsigned int)0x0001 +# define ENGINE_METHOD_DSA (unsigned int)0x0002 +# define ENGINE_METHOD_DH (unsigned int)0x0004 +# define ENGINE_METHOD_RAND (unsigned int)0x0008 +# define ENGINE_METHOD_CIPHERS (unsigned int)0x0040 +# define ENGINE_METHOD_DIGESTS (unsigned int)0x0080 +# define ENGINE_METHOD_PKEY_METHS (unsigned int)0x0200 +# define ENGINE_METHOD_PKEY_ASN1_METHS (unsigned int)0x0400 +# define ENGINE_METHOD_EC (unsigned int)0x0800 +/* Obvious all-or-nothing cases. */ +# define ENGINE_METHOD_ALL (unsigned int)0xFFFF +# define ENGINE_METHOD_NONE (unsigned int)0x0000 + +/* + * This(ese) flag(s) controls behaviour of the ENGINE_TABLE mechanism used + * internally to control registration of ENGINE implementations, and can be + * set by ENGINE_set_table_flags(). The "NOINIT" flag prevents attempts to + * initialise registered ENGINEs if they are not already initialised. + */ +# define ENGINE_TABLE_FLAG_NOINIT (unsigned int)0x0001 + +/* ENGINE flags that can be set by ENGINE_set_flags(). */ +/* Not used */ +/* #define ENGINE_FLAGS_MALLOCED 0x0001 */ + +/* + * This flag is for ENGINEs that wish to handle the various 'CMD'-related + * control commands on their own. Without this flag, ENGINE_ctrl() handles + * these control commands on behalf of the ENGINE using their "cmd_defns" + * data. + */ +# define ENGINE_FLAGS_MANUAL_CMD_CTRL (int)0x0002 + +/* + * This flag is for ENGINEs who return new duplicate structures when found + * via "ENGINE_by_id()". When an ENGINE must store state (eg. if + * ENGINE_ctrl() commands are called in sequence as part of some stateful + * process like key-generation setup and execution), it can set this flag - + * then each attempt to obtain the ENGINE will result in it being copied into + * a new structure. Normally, ENGINEs don't declare this flag so + * ENGINE_by_id() just increments the existing ENGINE's structural reference + * count. + */ +# define ENGINE_FLAGS_BY_ID_COPY (int)0x0004 + +/* + * This flag if for an ENGINE that does not want its methods registered as + * part of ENGINE_register_all_complete() for example if the methods are not + * usable as default methods. + */ + +# define ENGINE_FLAGS_NO_REGISTER_ALL (int)0x0008 + +/* + * ENGINEs can support their own command types, and these flags are used in + * ENGINE_CTRL_GET_CMD_FLAGS to indicate to the caller what kind of input + * each command expects. Currently only numeric and string input is + * supported. If a control command supports none of the _NUMERIC, _STRING, or + * _NO_INPUT options, then it is regarded as an "internal" control command - + * and not for use in config setting situations. As such, they're not + * available to the ENGINE_ctrl_cmd_string() function, only raw ENGINE_ctrl() + * access. Changes to this list of 'command types' should be reflected + * carefully in ENGINE_cmd_is_executable() and ENGINE_ctrl_cmd_string(). + */ + +/* accepts a 'long' input value (3rd parameter to ENGINE_ctrl) */ +# define ENGINE_CMD_FLAG_NUMERIC (unsigned int)0x0001 +/* + * accepts string input (cast from 'void*' to 'const char *', 4th parameter + * to ENGINE_ctrl) + */ +# define ENGINE_CMD_FLAG_STRING (unsigned int)0x0002 +/* + * Indicates that the control command takes *no* input. Ie. the control + * command is unparameterised. + */ +# define ENGINE_CMD_FLAG_NO_INPUT (unsigned int)0x0004 +/* + * Indicates that the control command is internal. This control command won't + * be shown in any output, and is only usable through the ENGINE_ctrl_cmd() + * function. + */ +# define ENGINE_CMD_FLAG_INTERNAL (unsigned int)0x0008 + +/* + * NB: These 3 control commands are deprecated and should not be used. + * ENGINEs relying on these commands should compile conditional support for + * compatibility (eg. if these symbols are defined) but should also migrate + * the same functionality to their own ENGINE-specific control functions that + * can be "discovered" by calling applications. The fact these control + * commands wouldn't be "executable" (ie. usable by text-based config) + * doesn't change the fact that application code can find and use them + * without requiring per-ENGINE hacking. + */ + +/* + * These flags are used to tell the ctrl function what should be done. All + * command numbers are shared between all engines, even if some don't make + * sense to some engines. In such a case, they do nothing but return the + * error ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED. + */ +# define ENGINE_CTRL_SET_LOGSTREAM 1 +# define ENGINE_CTRL_SET_PASSWORD_CALLBACK 2 +# define ENGINE_CTRL_HUP 3/* Close and reinitialise + * any handles/connections + * etc. */ +# define ENGINE_CTRL_SET_USER_INTERFACE 4/* Alternative to callback */ +# define ENGINE_CTRL_SET_CALLBACK_DATA 5/* User-specific data, used + * when calling the password + * callback and the user + * interface */ +# define ENGINE_CTRL_LOAD_CONFIGURATION 6/* Load a configuration, + * given a string that + * represents a file name + * or so */ +# define ENGINE_CTRL_LOAD_SECTION 7/* Load data from a given + * section in the already + * loaded configuration */ + +/* + * These control commands allow an application to deal with an arbitrary + * engine in a dynamic way. Warn: Negative return values indicate errors FOR + * THESE COMMANDS because zero is used to indicate 'end-of-list'. Other + * commands, including ENGINE-specific command types, return zero for an + * error. An ENGINE can choose to implement these ctrl functions, and can + * internally manage things however it chooses - it does so by setting the + * ENGINE_FLAGS_MANUAL_CMD_CTRL flag (using ENGINE_set_flags()). Otherwise + * the ENGINE_ctrl() code handles this on the ENGINE's behalf using the + * cmd_defns data (set using ENGINE_set_cmd_defns()). This means an ENGINE's + * ctrl() handler need only implement its own commands - the above "meta" + * commands will be taken care of. + */ + +/* + * Returns non-zero if the supplied ENGINE has a ctrl() handler. If "not", + * then all the remaining control commands will return failure, so it is + * worth checking this first if the caller is trying to "discover" the + * engine's capabilities and doesn't want errors generated unnecessarily. + */ +# define ENGINE_CTRL_HAS_CTRL_FUNCTION 10 +/* + * Returns a positive command number for the first command supported by the + * engine. Returns zero if no ctrl commands are supported. + */ +# define ENGINE_CTRL_GET_FIRST_CMD_TYPE 11 +/* + * The 'long' argument specifies a command implemented by the engine, and the + * return value is the next command supported, or zero if there are no more. + */ +# define ENGINE_CTRL_GET_NEXT_CMD_TYPE 12 +/* + * The 'void*' argument is a command name (cast from 'const char *'), and the + * return value is the command that corresponds to it. + */ +# define ENGINE_CTRL_GET_CMD_FROM_NAME 13 +/* + * The next two allow a command to be converted into its corresponding string + * form. In each case, the 'long' argument supplies the command. In the + * NAME_LEN case, the return value is the length of the command name (not + * counting a trailing EOL). In the NAME case, the 'void*' argument must be a + * string buffer large enough, and it will be populated with the name of the + * command (WITH a trailing EOL). + */ +# define ENGINE_CTRL_GET_NAME_LEN_FROM_CMD 14 +# define ENGINE_CTRL_GET_NAME_FROM_CMD 15 +/* The next two are similar but give a "short description" of a command. */ +# define ENGINE_CTRL_GET_DESC_LEN_FROM_CMD 16 +# define ENGINE_CTRL_GET_DESC_FROM_CMD 17 +/* + * With this command, the return value is the OR'd combination of + * ENGINE_CMD_FLAG_*** values that indicate what kind of input a given + * engine-specific ctrl command expects. + */ +# define ENGINE_CTRL_GET_CMD_FLAGS 18 + +/* + * ENGINE implementations should start the numbering of their own control + * commands from this value. (ie. ENGINE_CMD_BASE, ENGINE_CMD_BASE + 1, etc). + */ +# define ENGINE_CMD_BASE 200 + +/* + * NB: These 2 nCipher "chil" control commands are deprecated, and their + * functionality is now available through ENGINE-specific control commands + * (exposed through the above-mentioned 'CMD'-handling). Code using these 2 + * commands should be migrated to the more general command handling before + * these are removed. + */ + +/* Flags specific to the nCipher "chil" engine */ +# define ENGINE_CTRL_CHIL_SET_FORKCHECK 100 + /* + * Depending on the value of the (long)i argument, this sets or + * unsets the SimpleForkCheck flag in the CHIL API to enable or + * disable checking and workarounds for applications that fork(). + */ +# define ENGINE_CTRL_CHIL_NO_LOCKING 101 + /* + * This prevents the initialisation function from providing mutex + * callbacks to the nCipher library. + */ + +/* + * If an ENGINE supports its own specific control commands and wishes the + * framework to handle the above 'ENGINE_CMD_***'-manipulation commands on + * its behalf, it should supply a null-terminated array of ENGINE_CMD_DEFN + * entries to ENGINE_set_cmd_defns(). It should also implement a ctrl() + * handler that supports the stated commands (ie. the "cmd_num" entries as + * described by the array). NB: The array must be ordered in increasing order + * of cmd_num. "null-terminated" means that the last ENGINE_CMD_DEFN element + * has cmd_num set to zero and/or cmd_name set to NULL. + */ +typedef struct ENGINE_CMD_DEFN_st { + unsigned int cmd_num; /* The command number */ + const char *cmd_name; /* The command name itself */ + const char *cmd_desc; /* A short description of the command */ + unsigned int cmd_flags; /* The input the command expects */ +} ENGINE_CMD_DEFN; + +/* Generic function pointer */ +typedef int (*ENGINE_GEN_FUNC_PTR) (void); +/* Generic function pointer taking no arguments */ +typedef int (*ENGINE_GEN_INT_FUNC_PTR) (ENGINE *); +/* Specific control function pointer */ +typedef int (*ENGINE_CTRL_FUNC_PTR) (ENGINE *, int, long, void *, + void (*f) (void)); +/* Generic load_key function pointer */ +typedef EVP_PKEY *(*ENGINE_LOAD_KEY_PTR)(ENGINE *, const char *, + UI_METHOD *ui_method, + void *callback_data); +typedef int (*ENGINE_SSL_CLIENT_CERT_PTR) (ENGINE *, SSL *ssl, + STACK_OF(X509_NAME) *ca_dn, + X509 **pcert, EVP_PKEY **pkey, + STACK_OF(X509) **pother, + UI_METHOD *ui_method, + void *callback_data); +/*- + * These callback types are for an ENGINE's handler for cipher and digest logic. + * These handlers have these prototypes; + * int foo(ENGINE *e, const EVP_CIPHER **cipher, const int **nids, int nid); + * int foo(ENGINE *e, const EVP_MD **digest, const int **nids, int nid); + * Looking at how to implement these handlers in the case of cipher support, if + * the framework wants the EVP_CIPHER for 'nid', it will call; + * foo(e, &p_evp_cipher, NULL, nid); (return zero for failure) + * If the framework wants a list of supported 'nid's, it will call; + * foo(e, NULL, &p_nids, 0); (returns number of 'nids' or -1 for error) + */ +/* + * Returns to a pointer to the array of supported cipher 'nid's. If the + * second parameter is non-NULL it is set to the size of the returned array. + */ +typedef int (*ENGINE_CIPHERS_PTR) (ENGINE *, const EVP_CIPHER **, + const int **, int); +typedef int (*ENGINE_DIGESTS_PTR) (ENGINE *, const EVP_MD **, const int **, + int); +typedef int (*ENGINE_PKEY_METHS_PTR) (ENGINE *, EVP_PKEY_METHOD **, + const int **, int); +typedef int (*ENGINE_PKEY_ASN1_METHS_PTR) (ENGINE *, EVP_PKEY_ASN1_METHOD **, + const int **, int); +/* + * STRUCTURE functions ... all of these functions deal with pointers to + * ENGINE structures where the pointers have a "structural reference". This + * means that their reference is to allowed access to the structure but it + * does not imply that the structure is functional. To simply increment or + * decrement the structural reference count, use ENGINE_by_id and + * ENGINE_free. NB: This is not required when iterating using ENGINE_get_next + * as it will automatically decrement the structural reference count of the + * "current" ENGINE and increment the structural reference count of the + * ENGINE it returns (unless it is NULL). + */ + +/* Get the first/last "ENGINE" type available. */ +ENGINE *ENGINE_get_first(void); +ENGINE *ENGINE_get_last(void); +/* Iterate to the next/previous "ENGINE" type (NULL = end of the list). */ +ENGINE *ENGINE_get_next(ENGINE *e); +ENGINE *ENGINE_get_prev(ENGINE *e); +/* Add another "ENGINE" type into the array. */ +int ENGINE_add(ENGINE *e); +/* Remove an existing "ENGINE" type from the array. */ +int ENGINE_remove(ENGINE *e); +/* Retrieve an engine from the list by its unique "id" value. */ +ENGINE *ENGINE_by_id(const char *id); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define ENGINE_load_openssl() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_OPENSSL, NULL) +# define ENGINE_load_dynamic() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_DYNAMIC, NULL) +# ifndef OPENSSL_NO_STATIC_ENGINE +# define ENGINE_load_padlock() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_PADLOCK, NULL) +# define ENGINE_load_capi() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_CAPI, NULL) +# define ENGINE_load_afalg() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_AFALG, NULL) +# endif +# define ENGINE_load_cryptodev() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_CRYPTODEV, NULL) +# define ENGINE_load_rdrand() \ + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_RDRAND, NULL) +#endif +void ENGINE_load_builtin_engines(void); + +/* + * Get and set global flags (ENGINE_TABLE_FLAG_***) for the implementation + * "registry" handling. + */ +unsigned int ENGINE_get_table_flags(void); +void ENGINE_set_table_flags(unsigned int flags); + +/*- Manage registration of ENGINEs per "table". For each type, there are 3 + * functions; + * ENGINE_register_***(e) - registers the implementation from 'e' (if it has one) + * ENGINE_unregister_***(e) - unregister the implementation from 'e' + * ENGINE_register_all_***() - call ENGINE_register_***() for each 'e' in the list + * Cleanup is automatically registered from each table when required. + */ + +int ENGINE_register_RSA(ENGINE *e); +void ENGINE_unregister_RSA(ENGINE *e); +void ENGINE_register_all_RSA(void); + +int ENGINE_register_DSA(ENGINE *e); +void ENGINE_unregister_DSA(ENGINE *e); +void ENGINE_register_all_DSA(void); + +int ENGINE_register_EC(ENGINE *e); +void ENGINE_unregister_EC(ENGINE *e); +void ENGINE_register_all_EC(void); + +int ENGINE_register_DH(ENGINE *e); +void ENGINE_unregister_DH(ENGINE *e); +void ENGINE_register_all_DH(void); + +int ENGINE_register_RAND(ENGINE *e); +void ENGINE_unregister_RAND(ENGINE *e); +void ENGINE_register_all_RAND(void); + +int ENGINE_register_ciphers(ENGINE *e); +void ENGINE_unregister_ciphers(ENGINE *e); +void ENGINE_register_all_ciphers(void); + +int ENGINE_register_digests(ENGINE *e); +void ENGINE_unregister_digests(ENGINE *e); +void ENGINE_register_all_digests(void); + +int ENGINE_register_pkey_meths(ENGINE *e); +void ENGINE_unregister_pkey_meths(ENGINE *e); +void ENGINE_register_all_pkey_meths(void); + +int ENGINE_register_pkey_asn1_meths(ENGINE *e); +void ENGINE_unregister_pkey_asn1_meths(ENGINE *e); +void ENGINE_register_all_pkey_asn1_meths(void); + +/* + * These functions register all support from the above categories. Note, use + * of these functions can result in static linkage of code your application + * may not need. If you only need a subset of functionality, consider using + * more selective initialisation. + */ +int ENGINE_register_complete(ENGINE *e); +int ENGINE_register_all_complete(void); + +/* + * Send parameterised control commands to the engine. The possibilities to + * send down an integer, a pointer to data or a function pointer are + * provided. Any of the parameters may or may not be NULL, depending on the + * command number. In actuality, this function only requires a structural + * (rather than functional) reference to an engine, but many control commands + * may require the engine be functional. The caller should be aware of trying + * commands that require an operational ENGINE, and only use functional + * references in such situations. + */ +int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void)); + +/* + * This function tests if an ENGINE-specific command is usable as a + * "setting". Eg. in an application's config file that gets processed through + * ENGINE_ctrl_cmd_string(). If this returns zero, it is not available to + * ENGINE_ctrl_cmd_string(), only ENGINE_ctrl(). + */ +int ENGINE_cmd_is_executable(ENGINE *e, int cmd); + +/* + * This function works like ENGINE_ctrl() with the exception of taking a + * command name instead of a command number, and can handle optional + * commands. See the comment on ENGINE_ctrl_cmd_string() for an explanation + * on how to use the cmd_name and cmd_optional. + */ +int ENGINE_ctrl_cmd(ENGINE *e, const char *cmd_name, + long i, void *p, void (*f) (void), int cmd_optional); + +/* + * This function passes a command-name and argument to an ENGINE. The + * cmd_name is converted to a command number and the control command is + * called using 'arg' as an argument (unless the ENGINE doesn't support such + * a command, in which case no control command is called). The command is + * checked for input flags, and if necessary the argument will be converted + * to a numeric value. If cmd_optional is non-zero, then if the ENGINE + * doesn't support the given cmd_name the return value will be success + * anyway. This function is intended for applications to use so that users + * (or config files) can supply engine-specific config data to the ENGINE at + * run-time to control behaviour of specific engines. As such, it shouldn't + * be used for calling ENGINE_ctrl() functions that return data, deal with + * binary data, or that are otherwise supposed to be used directly through + * ENGINE_ctrl() in application code. Any "return" data from an ENGINE_ctrl() + * operation in this function will be lost - the return value is interpreted + * as failure if the return value is zero, success otherwise, and this + * function returns a boolean value as a result. In other words, vendors of + * 'ENGINE'-enabled devices should write ENGINE implementations with + * parameterisations that work in this scheme, so that compliant ENGINE-based + * applications can work consistently with the same configuration for the + * same ENGINE-enabled devices, across applications. + */ +int ENGINE_ctrl_cmd_string(ENGINE *e, const char *cmd_name, const char *arg, + int cmd_optional); + +/* + * These functions are useful for manufacturing new ENGINE structures. They + * don't address reference counting at all - one uses them to populate an + * ENGINE structure with personalised implementations of things prior to + * using it directly or adding it to the builtin ENGINE list in OpenSSL. + * These are also here so that the ENGINE structure doesn't have to be + * exposed and break binary compatibility! + */ +ENGINE *ENGINE_new(void); +int ENGINE_free(ENGINE *e); +int ENGINE_up_ref(ENGINE *e); +int ENGINE_set_id(ENGINE *e, const char *id); +int ENGINE_set_name(ENGINE *e, const char *name); +int ENGINE_set_RSA(ENGINE *e, const RSA_METHOD *rsa_meth); +int ENGINE_set_DSA(ENGINE *e, const DSA_METHOD *dsa_meth); +int ENGINE_set_EC(ENGINE *e, const EC_KEY_METHOD *ecdsa_meth); +int ENGINE_set_DH(ENGINE *e, const DH_METHOD *dh_meth); +int ENGINE_set_RAND(ENGINE *e, const RAND_METHOD *rand_meth); +int ENGINE_set_destroy_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR destroy_f); +int ENGINE_set_init_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR init_f); +int ENGINE_set_finish_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR finish_f); +int ENGINE_set_ctrl_function(ENGINE *e, ENGINE_CTRL_FUNC_PTR ctrl_f); +int ENGINE_set_load_privkey_function(ENGINE *e, + ENGINE_LOAD_KEY_PTR loadpriv_f); +int ENGINE_set_load_pubkey_function(ENGINE *e, ENGINE_LOAD_KEY_PTR loadpub_f); +int ENGINE_set_load_ssl_client_cert_function(ENGINE *e, + ENGINE_SSL_CLIENT_CERT_PTR + loadssl_f); +int ENGINE_set_ciphers(ENGINE *e, ENGINE_CIPHERS_PTR f); +int ENGINE_set_digests(ENGINE *e, ENGINE_DIGESTS_PTR f); +int ENGINE_set_pkey_meths(ENGINE *e, ENGINE_PKEY_METHS_PTR f); +int ENGINE_set_pkey_asn1_meths(ENGINE *e, ENGINE_PKEY_ASN1_METHS_PTR f); +int ENGINE_set_flags(ENGINE *e, int flags); +int ENGINE_set_cmd_defns(ENGINE *e, const ENGINE_CMD_DEFN *defns); +/* These functions allow control over any per-structure ENGINE data. */ +#define ENGINE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_ENGINE, l, p, newf, dupf, freef) +int ENGINE_set_ex_data(ENGINE *e, int idx, void *arg); +void *ENGINE_get_ex_data(const ENGINE *e, int idx); + +#if OPENSSL_API_COMPAT < 0x10100000L +/* + * This function previously cleaned up anything that needs it. Auto-deinit will + * now take care of it so it is no longer required to call this function. + */ +# define ENGINE_cleanup() while(0) continue +#endif + +/* + * These return values from within the ENGINE structure. These can be useful + * with functional references as well as structural references - it depends + * which you obtained. Using the result for functional purposes if you only + * obtained a structural reference may be problematic! + */ +const char *ENGINE_get_id(const ENGINE *e); +const char *ENGINE_get_name(const ENGINE *e); +const RSA_METHOD *ENGINE_get_RSA(const ENGINE *e); +const DSA_METHOD *ENGINE_get_DSA(const ENGINE *e); +const EC_KEY_METHOD *ENGINE_get_EC(const ENGINE *e); +const DH_METHOD *ENGINE_get_DH(const ENGINE *e); +const RAND_METHOD *ENGINE_get_RAND(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_destroy_function(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_init_function(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_finish_function(const ENGINE *e); +ENGINE_CTRL_FUNC_PTR ENGINE_get_ctrl_function(const ENGINE *e); +ENGINE_LOAD_KEY_PTR ENGINE_get_load_privkey_function(const ENGINE *e); +ENGINE_LOAD_KEY_PTR ENGINE_get_load_pubkey_function(const ENGINE *e); +ENGINE_SSL_CLIENT_CERT_PTR ENGINE_get_ssl_client_cert_function(const ENGINE + *e); +ENGINE_CIPHERS_PTR ENGINE_get_ciphers(const ENGINE *e); +ENGINE_DIGESTS_PTR ENGINE_get_digests(const ENGINE *e); +ENGINE_PKEY_METHS_PTR ENGINE_get_pkey_meths(const ENGINE *e); +ENGINE_PKEY_ASN1_METHS_PTR ENGINE_get_pkey_asn1_meths(const ENGINE *e); +const EVP_CIPHER *ENGINE_get_cipher(ENGINE *e, int nid); +const EVP_MD *ENGINE_get_digest(ENGINE *e, int nid); +const EVP_PKEY_METHOD *ENGINE_get_pkey_meth(ENGINE *e, int nid); +const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth(ENGINE *e, int nid); +const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth_str(ENGINE *e, + const char *str, + int len); +const EVP_PKEY_ASN1_METHOD *ENGINE_pkey_asn1_find_str(ENGINE **pe, + const char *str, + int len); +const ENGINE_CMD_DEFN *ENGINE_get_cmd_defns(const ENGINE *e); +int ENGINE_get_flags(const ENGINE *e); + +/* + * FUNCTIONAL functions. These functions deal with ENGINE structures that + * have (or will) be initialised for use. Broadly speaking, the structural + * functions are useful for iterating the list of available engine types, + * creating new engine types, and other "list" operations. These functions + * actually deal with ENGINEs that are to be used. As such these functions + * can fail (if applicable) when particular engines are unavailable - eg. if + * a hardware accelerator is not attached or not functioning correctly. Each + * ENGINE has 2 reference counts; structural and functional. Every time a + * functional reference is obtained or released, a corresponding structural + * reference is automatically obtained or released too. + */ + +/* + * Initialise a engine type for use (or up its reference count if it's + * already in use). This will fail if the engine is not currently operational + * and cannot initialise. + */ +int ENGINE_init(ENGINE *e); +/* + * Free a functional reference to a engine type. This does not require a + * corresponding call to ENGINE_free as it also releases a structural + * reference. + */ +int ENGINE_finish(ENGINE *e); + +/* + * The following functions handle keys that are stored in some secondary + * location, handled by the engine. The storage may be on a card or + * whatever. + */ +EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id, + UI_METHOD *ui_method, void *callback_data); +EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id, + UI_METHOD *ui_method, void *callback_data); +int ENGINE_load_ssl_client_cert(ENGINE *e, SSL *s, + STACK_OF(X509_NAME) *ca_dn, X509 **pcert, + EVP_PKEY **ppkey, STACK_OF(X509) **pother, + UI_METHOD *ui_method, void *callback_data); + +/* + * This returns a pointer for the current ENGINE structure that is (by + * default) performing any RSA operations. The value returned is an + * incremented reference, so it should be free'd (ENGINE_finish) before it is + * discarded. + */ +ENGINE *ENGINE_get_default_RSA(void); +/* Same for the other "methods" */ +ENGINE *ENGINE_get_default_DSA(void); +ENGINE *ENGINE_get_default_EC(void); +ENGINE *ENGINE_get_default_DH(void); +ENGINE *ENGINE_get_default_RAND(void); +/* + * These functions can be used to get a functional reference to perform + * ciphering or digesting corresponding to "nid". + */ +ENGINE *ENGINE_get_cipher_engine(int nid); +ENGINE *ENGINE_get_digest_engine(int nid); +ENGINE *ENGINE_get_pkey_meth_engine(int nid); +ENGINE *ENGINE_get_pkey_asn1_meth_engine(int nid); + +/* + * This sets a new default ENGINE structure for performing RSA operations. If + * the result is non-zero (success) then the ENGINE structure will have had + * its reference count up'd so the caller should still free their own + * reference 'e'. + */ +int ENGINE_set_default_RSA(ENGINE *e); +int ENGINE_set_default_string(ENGINE *e, const char *def_list); +/* Same for the other "methods" */ +int ENGINE_set_default_DSA(ENGINE *e); +int ENGINE_set_default_EC(ENGINE *e); +int ENGINE_set_default_DH(ENGINE *e); +int ENGINE_set_default_RAND(ENGINE *e); +int ENGINE_set_default_ciphers(ENGINE *e); +int ENGINE_set_default_digests(ENGINE *e); +int ENGINE_set_default_pkey_meths(ENGINE *e); +int ENGINE_set_default_pkey_asn1_meths(ENGINE *e); + +/* + * The combination "set" - the flags are bitwise "OR"d from the + * ENGINE_METHOD_*** defines above. As with the "ENGINE_register_complete()" + * function, this function can result in unnecessary static linkage. If your + * application requires only specific functionality, consider using more + * selective functions. + */ +int ENGINE_set_default(ENGINE *e, unsigned int flags); + +void ENGINE_add_conf_module(void); + +/* Deprecated functions ... */ +/* int ENGINE_clear_defaults(void); */ + +/**************************/ +/* DYNAMIC ENGINE SUPPORT */ +/**************************/ + +/* Binary/behaviour compatibility levels */ +# define OSSL_DYNAMIC_VERSION (unsigned long)0x00030000 +/* + * Binary versions older than this are too old for us (whether we're a loader + * or a loadee) + */ +# define OSSL_DYNAMIC_OLDEST (unsigned long)0x00030000 + +/* + * When compiling an ENGINE entirely as an external shared library, loadable + * by the "dynamic" ENGINE, these types are needed. The 'dynamic_fns' + * structure type provides the calling application's (or library's) error + * functionality and memory management function pointers to the loaded + * library. These should be used/set in the loaded library code so that the + * loading application's 'state' will be used/changed in all operations. The + * 'static_state' pointer allows the loaded library to know if it shares the + * same static data as the calling application (or library), and thus whether + * these callbacks need to be set or not. + */ +typedef void *(*dyn_MEM_malloc_fn) (size_t, const char *, int); +typedef void *(*dyn_MEM_realloc_fn) (void *, size_t, const char *, int); +typedef void (*dyn_MEM_free_fn) (void *, const char *, int); +typedef struct st_dynamic_MEM_fns { + dyn_MEM_malloc_fn malloc_fn; + dyn_MEM_realloc_fn realloc_fn; + dyn_MEM_free_fn free_fn; +} dynamic_MEM_fns; +/* + * FIXME: Perhaps the memory and locking code (crypto.h) should declare and + * use these types so we (and any other dependent code) can simplify a bit?? + */ +/* The top-level structure */ +typedef struct st_dynamic_fns { + void *static_state; + dynamic_MEM_fns mem_fns; +} dynamic_fns; + +/* + * The version checking function should be of this prototype. NB: The + * ossl_version value passed in is the OSSL_DYNAMIC_VERSION of the loading + * code. If this function returns zero, it indicates a (potential) version + * incompatibility and the loaded library doesn't believe it can proceed. + * Otherwise, the returned value is the (latest) version supported by the + * loading library. The loader may still decide that the loaded code's + * version is unsatisfactory and could veto the load. The function is + * expected to be implemented with the symbol name "v_check", and a default + * implementation can be fully instantiated with + * IMPLEMENT_DYNAMIC_CHECK_FN(). + */ +typedef unsigned long (*dynamic_v_check_fn) (unsigned long ossl_version); +# define IMPLEMENT_DYNAMIC_CHECK_FN() \ + OPENSSL_EXPORT unsigned long v_check(unsigned long v); \ + OPENSSL_EXPORT unsigned long v_check(unsigned long v) { \ + if (v >= OSSL_DYNAMIC_OLDEST) return OSSL_DYNAMIC_VERSION; \ + return 0; } + +/* + * This function is passed the ENGINE structure to initialise with its own + * function and command settings. It should not adjust the structural or + * functional reference counts. If this function returns zero, (a) the load + * will be aborted, (b) the previous ENGINE state will be memcpy'd back onto + * the structure, and (c) the shared library will be unloaded. So + * implementations should do their own internal cleanup in failure + * circumstances otherwise they could leak. The 'id' parameter, if non-NULL, + * represents the ENGINE id that the loader is looking for. If this is NULL, + * the shared library can choose to return failure or to initialise a + * 'default' ENGINE. If non-NULL, the shared library must initialise only an + * ENGINE matching the passed 'id'. The function is expected to be + * implemented with the symbol name "bind_engine". A standard implementation + * can be instantiated with IMPLEMENT_DYNAMIC_BIND_FN(fn) where the parameter + * 'fn' is a callback function that populates the ENGINE structure and + * returns an int value (zero for failure). 'fn' should have prototype; + * [static] int fn(ENGINE *e, const char *id); + */ +typedef int (*dynamic_bind_engine) (ENGINE *e, const char *id, + const dynamic_fns *fns); +# define IMPLEMENT_DYNAMIC_BIND_FN(fn) \ + OPENSSL_EXPORT \ + int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns); \ + OPENSSL_EXPORT \ + int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns) { \ + if (ENGINE_get_static_state() == fns->static_state) goto skip_cbs; \ + CRYPTO_set_mem_functions(fns->mem_fns.malloc_fn, \ + fns->mem_fns.realloc_fn, \ + fns->mem_fns.free_fn); \ + OPENSSL_init_crypto(OPENSSL_INIT_NO_ATEXIT, NULL); \ + skip_cbs: \ + if (!fn(e, id)) return 0; \ + return 1; } + +/* + * If the loading application (or library) and the loaded ENGINE library + * share the same static data (eg. they're both dynamically linked to the + * same libcrypto.so) we need a way to avoid trying to set system callbacks - + * this would fail, and for the same reason that it's unnecessary to try. If + * the loaded ENGINE has (or gets from through the loader) its own copy of + * the libcrypto static data, we will need to set the callbacks. The easiest + * way to detect this is to have a function that returns a pointer to some + * static data and let the loading application and loaded ENGINE compare + * their respective values. + */ +void *ENGINE_get_static_state(void); + +# if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) +DEPRECATEDIN_1_1_0(void ENGINE_setup_bsd_cryptodev(void)) +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/win64/include/openssl/engineerr.h b/openSSL/win64/include/openssl/engineerr.h new file mode 100644 index 0000000..05e84bd --- /dev/null +++ b/openSSL/win64/include/openssl/engineerr.h @@ -0,0 +1,111 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENGINEERR_H +# define HEADER_ENGINEERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_ENGINE + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ENGINE_strings(void); + +/* + * ENGINE function codes. + */ +# define ENGINE_F_DIGEST_UPDATE 198 +# define ENGINE_F_DYNAMIC_CTRL 180 +# define ENGINE_F_DYNAMIC_GET_DATA_CTX 181 +# define ENGINE_F_DYNAMIC_LOAD 182 +# define ENGINE_F_DYNAMIC_SET_DATA_CTX 183 +# define ENGINE_F_ENGINE_ADD 105 +# define ENGINE_F_ENGINE_BY_ID 106 +# define ENGINE_F_ENGINE_CMD_IS_EXECUTABLE 170 +# define ENGINE_F_ENGINE_CTRL 142 +# define ENGINE_F_ENGINE_CTRL_CMD 178 +# define ENGINE_F_ENGINE_CTRL_CMD_STRING 171 +# define ENGINE_F_ENGINE_FINISH 107 +# define ENGINE_F_ENGINE_GET_CIPHER 185 +# define ENGINE_F_ENGINE_GET_DIGEST 186 +# define ENGINE_F_ENGINE_GET_FIRST 195 +# define ENGINE_F_ENGINE_GET_LAST 196 +# define ENGINE_F_ENGINE_GET_NEXT 115 +# define ENGINE_F_ENGINE_GET_PKEY_ASN1_METH 193 +# define ENGINE_F_ENGINE_GET_PKEY_METH 192 +# define ENGINE_F_ENGINE_GET_PREV 116 +# define ENGINE_F_ENGINE_INIT 119 +# define ENGINE_F_ENGINE_LIST_ADD 120 +# define ENGINE_F_ENGINE_LIST_REMOVE 121 +# define ENGINE_F_ENGINE_LOAD_PRIVATE_KEY 150 +# define ENGINE_F_ENGINE_LOAD_PUBLIC_KEY 151 +# define ENGINE_F_ENGINE_LOAD_SSL_CLIENT_CERT 194 +# define ENGINE_F_ENGINE_NEW 122 +# define ENGINE_F_ENGINE_PKEY_ASN1_FIND_STR 197 +# define ENGINE_F_ENGINE_REMOVE 123 +# define ENGINE_F_ENGINE_SET_DEFAULT_STRING 189 +# define ENGINE_F_ENGINE_SET_ID 129 +# define ENGINE_F_ENGINE_SET_NAME 130 +# define ENGINE_F_ENGINE_TABLE_REGISTER 184 +# define ENGINE_F_ENGINE_UNLOCKED_FINISH 191 +# define ENGINE_F_ENGINE_UP_REF 190 +# define ENGINE_F_INT_CLEANUP_ITEM 199 +# define ENGINE_F_INT_CTRL_HELPER 172 +# define ENGINE_F_INT_ENGINE_CONFIGURE 188 +# define ENGINE_F_INT_ENGINE_MODULE_INIT 187 +# define ENGINE_F_OSSL_HMAC_INIT 200 + +/* + * ENGINE reason codes. + */ +# define ENGINE_R_ALREADY_LOADED 100 +# define ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER 133 +# define ENGINE_R_CMD_NOT_EXECUTABLE 134 +# define ENGINE_R_COMMAND_TAKES_INPUT 135 +# define ENGINE_R_COMMAND_TAKES_NO_INPUT 136 +# define ENGINE_R_CONFLICTING_ENGINE_ID 103 +# define ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED 119 +# define ENGINE_R_DSO_FAILURE 104 +# define ENGINE_R_DSO_NOT_FOUND 132 +# define ENGINE_R_ENGINES_SECTION_ERROR 148 +# define ENGINE_R_ENGINE_CONFIGURATION_ERROR 102 +# define ENGINE_R_ENGINE_IS_NOT_IN_LIST 105 +# define ENGINE_R_ENGINE_SECTION_ERROR 149 +# define ENGINE_R_FAILED_LOADING_PRIVATE_KEY 128 +# define ENGINE_R_FAILED_LOADING_PUBLIC_KEY 129 +# define ENGINE_R_FINISH_FAILED 106 +# define ENGINE_R_ID_OR_NAME_MISSING 108 +# define ENGINE_R_INIT_FAILED 109 +# define ENGINE_R_INTERNAL_LIST_ERROR 110 +# define ENGINE_R_INVALID_ARGUMENT 143 +# define ENGINE_R_INVALID_CMD_NAME 137 +# define ENGINE_R_INVALID_CMD_NUMBER 138 +# define ENGINE_R_INVALID_INIT_VALUE 151 +# define ENGINE_R_INVALID_STRING 150 +# define ENGINE_R_NOT_INITIALISED 117 +# define ENGINE_R_NOT_LOADED 112 +# define ENGINE_R_NO_CONTROL_FUNCTION 120 +# define ENGINE_R_NO_INDEX 144 +# define ENGINE_R_NO_LOAD_FUNCTION 125 +# define ENGINE_R_NO_REFERENCE 130 +# define ENGINE_R_NO_SUCH_ENGINE 116 +# define ENGINE_R_UNIMPLEMENTED_CIPHER 146 +# define ENGINE_R_UNIMPLEMENTED_DIGEST 147 +# define ENGINE_R_UNIMPLEMENTED_PUBLIC_KEY_METHOD 101 +# define ENGINE_R_VERSION_INCOMPATIBILITY 145 + +# endif +#endif diff --git a/openSSL/win64/include/openssl/err.h b/openSSL/win64/include/openssl/err.h new file mode 100644 index 0000000..b49f881 --- /dev/null +++ b/openSSL/win64/include/openssl/err.h @@ -0,0 +1,274 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ERR_H +# define HEADER_ERR_H + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# include +# endif + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef OPENSSL_NO_ERR +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,d,e) +# else +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,NULL,0) +# endif + +# include + +# define ERR_TXT_MALLOCED 0x01 +# define ERR_TXT_STRING 0x02 + +# define ERR_FLAG_MARK 0x01 +# define ERR_FLAG_CLEAR 0x02 + +# define ERR_NUM_ERRORS 16 +typedef struct err_state_st { + int err_flags[ERR_NUM_ERRORS]; + unsigned long err_buffer[ERR_NUM_ERRORS]; + char *err_data[ERR_NUM_ERRORS]; + int err_data_flags[ERR_NUM_ERRORS]; + const char *err_file[ERR_NUM_ERRORS]; + int err_line[ERR_NUM_ERRORS]; + int top, bottom; +} ERR_STATE; + +/* library */ +# define ERR_LIB_NONE 1 +# define ERR_LIB_SYS 2 +# define ERR_LIB_BN 3 +# define ERR_LIB_RSA 4 +# define ERR_LIB_DH 5 +# define ERR_LIB_EVP 6 +# define ERR_LIB_BUF 7 +# define ERR_LIB_OBJ 8 +# define ERR_LIB_PEM 9 +# define ERR_LIB_DSA 10 +# define ERR_LIB_X509 11 +/* #define ERR_LIB_METH 12 */ +# define ERR_LIB_ASN1 13 +# define ERR_LIB_CONF 14 +# define ERR_LIB_CRYPTO 15 +# define ERR_LIB_EC 16 +# define ERR_LIB_SSL 20 +/* #define ERR_LIB_SSL23 21 */ +/* #define ERR_LIB_SSL2 22 */ +/* #define ERR_LIB_SSL3 23 */ +/* #define ERR_LIB_RSAREF 30 */ +/* #define ERR_LIB_PROXY 31 */ +# define ERR_LIB_BIO 32 +# define ERR_LIB_PKCS7 33 +# define ERR_LIB_X509V3 34 +# define ERR_LIB_PKCS12 35 +# define ERR_LIB_RAND 36 +# define ERR_LIB_DSO 37 +# define ERR_LIB_ENGINE 38 +# define ERR_LIB_OCSP 39 +# define ERR_LIB_UI 40 +# define ERR_LIB_COMP 41 +# define ERR_LIB_ECDSA 42 +# define ERR_LIB_ECDH 43 +# define ERR_LIB_OSSL_STORE 44 +# define ERR_LIB_FIPS 45 +# define ERR_LIB_CMS 46 +# define ERR_LIB_TS 47 +# define ERR_LIB_HMAC 48 +/* # define ERR_LIB_JPAKE 49 */ +# define ERR_LIB_CT 50 +# define ERR_LIB_ASYNC 51 +# define ERR_LIB_KDF 52 +# define ERR_LIB_SM2 53 + +# define ERR_LIB_USER 128 + +# define SYSerr(f,r) ERR_PUT_error(ERR_LIB_SYS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BNerr(f,r) ERR_PUT_error(ERR_LIB_BN,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define RSAerr(f,r) ERR_PUT_error(ERR_LIB_RSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DHerr(f,r) ERR_PUT_error(ERR_LIB_DH,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define EVPerr(f,r) ERR_PUT_error(ERR_LIB_EVP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BUFerr(f,r) ERR_PUT_error(ERR_LIB_BUF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OBJerr(f,r) ERR_PUT_error(ERR_LIB_OBJ,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PEMerr(f,r) ERR_PUT_error(ERR_LIB_PEM,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DSAerr(f,r) ERR_PUT_error(ERR_LIB_DSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define X509err(f,r) ERR_PUT_error(ERR_LIB_X509,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ASN1err(f,r) ERR_PUT_error(ERR_LIB_ASN1,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CONFerr(f,r) ERR_PUT_error(ERR_LIB_CONF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CRYPTOerr(f,r) ERR_PUT_error(ERR_LIB_CRYPTO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECerr(f,r) ERR_PUT_error(ERR_LIB_EC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define SSLerr(f,r) ERR_PUT_error(ERR_LIB_SSL,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BIOerr(f,r) ERR_PUT_error(ERR_LIB_BIO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PKCS7err(f,r) ERR_PUT_error(ERR_LIB_PKCS7,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define X509V3err(f,r) ERR_PUT_error(ERR_LIB_X509V3,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PKCS12err(f,r) ERR_PUT_error(ERR_LIB_PKCS12,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define RANDerr(f,r) ERR_PUT_error(ERR_LIB_RAND,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DSOerr(f,r) ERR_PUT_error(ERR_LIB_DSO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ENGINEerr(f,r) ERR_PUT_error(ERR_LIB_ENGINE,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OCSPerr(f,r) ERR_PUT_error(ERR_LIB_OCSP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define UIerr(f,r) ERR_PUT_error(ERR_LIB_UI,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define COMPerr(f,r) ERR_PUT_error(ERR_LIB_COMP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECDSAerr(f,r) ERR_PUT_error(ERR_LIB_ECDSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECDHerr(f,r) ERR_PUT_error(ERR_LIB_ECDH,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OSSL_STOREerr(f,r) ERR_PUT_error(ERR_LIB_OSSL_STORE,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define FIPSerr(f,r) ERR_PUT_error(ERR_LIB_FIPS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CMSerr(f,r) ERR_PUT_error(ERR_LIB_CMS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define TSerr(f,r) ERR_PUT_error(ERR_LIB_TS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define HMACerr(f,r) ERR_PUT_error(ERR_LIB_HMAC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CTerr(f,r) ERR_PUT_error(ERR_LIB_CT,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ASYNCerr(f,r) ERR_PUT_error(ERR_LIB_ASYNC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define KDFerr(f,r) ERR_PUT_error(ERR_LIB_KDF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define SM2err(f,r) ERR_PUT_error(ERR_LIB_SM2,(f),(r),OPENSSL_FILE,OPENSSL_LINE) + +# define ERR_PACK(l,f,r) ( \ + (((unsigned int)(l) & 0x0FF) << 24L) | \ + (((unsigned int)(f) & 0xFFF) << 12L) | \ + (((unsigned int)(r) & 0xFFF) ) ) +# define ERR_GET_LIB(l) (int)(((l) >> 24L) & 0x0FFL) +# define ERR_GET_FUNC(l) (int)(((l) >> 12L) & 0xFFFL) +# define ERR_GET_REASON(l) (int)( (l) & 0xFFFL) +# define ERR_FATAL_ERROR(l) (int)( (l) & ERR_R_FATAL) + +/* OS functions */ +# define SYS_F_FOPEN 1 +# define SYS_F_CONNECT 2 +# define SYS_F_GETSERVBYNAME 3 +# define SYS_F_SOCKET 4 +# define SYS_F_IOCTLSOCKET 5 +# define SYS_F_BIND 6 +# define SYS_F_LISTEN 7 +# define SYS_F_ACCEPT 8 +# define SYS_F_WSASTARTUP 9/* Winsock stuff */ +# define SYS_F_OPENDIR 10 +# define SYS_F_FREAD 11 +# define SYS_F_GETADDRINFO 12 +# define SYS_F_GETNAMEINFO 13 +# define SYS_F_SETSOCKOPT 14 +# define SYS_F_GETSOCKOPT 15 +# define SYS_F_GETSOCKNAME 16 +# define SYS_F_GETHOSTBYNAME 17 +# define SYS_F_FFLUSH 18 +# define SYS_F_OPEN 19 +# define SYS_F_CLOSE 20 +# define SYS_F_IOCTL 21 +# define SYS_F_STAT 22 +# define SYS_F_FCNTL 23 +# define SYS_F_FSTAT 24 + +/* reasons */ +# define ERR_R_SYS_LIB ERR_LIB_SYS/* 2 */ +# define ERR_R_BN_LIB ERR_LIB_BN/* 3 */ +# define ERR_R_RSA_LIB ERR_LIB_RSA/* 4 */ +# define ERR_R_DH_LIB ERR_LIB_DH/* 5 */ +# define ERR_R_EVP_LIB ERR_LIB_EVP/* 6 */ +# define ERR_R_BUF_LIB ERR_LIB_BUF/* 7 */ +# define ERR_R_OBJ_LIB ERR_LIB_OBJ/* 8 */ +# define ERR_R_PEM_LIB ERR_LIB_PEM/* 9 */ +# define ERR_R_DSA_LIB ERR_LIB_DSA/* 10 */ +# define ERR_R_X509_LIB ERR_LIB_X509/* 11 */ +# define ERR_R_ASN1_LIB ERR_LIB_ASN1/* 13 */ +# define ERR_R_EC_LIB ERR_LIB_EC/* 16 */ +# define ERR_R_BIO_LIB ERR_LIB_BIO/* 32 */ +# define ERR_R_PKCS7_LIB ERR_LIB_PKCS7/* 33 */ +# define ERR_R_X509V3_LIB ERR_LIB_X509V3/* 34 */ +# define ERR_R_ENGINE_LIB ERR_LIB_ENGINE/* 38 */ +# define ERR_R_UI_LIB ERR_LIB_UI/* 40 */ +# define ERR_R_ECDSA_LIB ERR_LIB_ECDSA/* 42 */ +# define ERR_R_OSSL_STORE_LIB ERR_LIB_OSSL_STORE/* 44 */ + +# define ERR_R_NESTED_ASN1_ERROR 58 +# define ERR_R_MISSING_ASN1_EOS 63 + +/* fatal error */ +# define ERR_R_FATAL 64 +# define ERR_R_MALLOC_FAILURE (1|ERR_R_FATAL) +# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (2|ERR_R_FATAL) +# define ERR_R_PASSED_NULL_PARAMETER (3|ERR_R_FATAL) +# define ERR_R_INTERNAL_ERROR (4|ERR_R_FATAL) +# define ERR_R_DISABLED (5|ERR_R_FATAL) +# define ERR_R_INIT_FAIL (6|ERR_R_FATAL) +# define ERR_R_PASSED_INVALID_ARGUMENT (7) +# define ERR_R_OPERATION_FAIL (8|ERR_R_FATAL) + +/* + * 99 is the maximum possible ERR_R_... code, higher values are reserved for + * the individual libraries + */ + +typedef struct ERR_string_data_st { + unsigned long error; + const char *string; +} ERR_STRING_DATA; + +DEFINE_LHASH_OF(ERR_STRING_DATA); + +void ERR_put_error(int lib, int func, int reason, const char *file, int line); +void ERR_set_error_data(char *data, int flags); + +unsigned long ERR_get_error(void); +unsigned long ERR_get_error_line(const char **file, int *line); +unsigned long ERR_get_error_line_data(const char **file, int *line, + const char **data, int *flags); +unsigned long ERR_peek_error(void); +unsigned long ERR_peek_error_line(const char **file, int *line); +unsigned long ERR_peek_error_line_data(const char **file, int *line, + const char **data, int *flags); +unsigned long ERR_peek_last_error(void); +unsigned long ERR_peek_last_error_line(const char **file, int *line); +unsigned long ERR_peek_last_error_line_data(const char **file, int *line, + const char **data, int *flags); +void ERR_clear_error(void); +char *ERR_error_string(unsigned long e, char *buf); +void ERR_error_string_n(unsigned long e, char *buf, size_t len); +const char *ERR_lib_error_string(unsigned long e); +const char *ERR_func_error_string(unsigned long e); +const char *ERR_reason_error_string(unsigned long e); +void ERR_print_errors_cb(int (*cb) (const char *str, size_t len, void *u), + void *u); +# ifndef OPENSSL_NO_STDIO +void ERR_print_errors_fp(FILE *fp); +# endif +void ERR_print_errors(BIO *bp); +void ERR_add_error_data(int num, ...); +void ERR_add_error_vdata(int num, va_list args); +int ERR_load_strings(int lib, ERR_STRING_DATA *str); +int ERR_load_strings_const(const ERR_STRING_DATA *str); +int ERR_unload_strings(int lib, ERR_STRING_DATA *str); +int ERR_load_ERR_strings(void); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define ERR_load_crypto_strings() \ + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +# define ERR_free_strings() while(0) continue +#endif + +DEPRECATEDIN_1_1_0(void ERR_remove_thread_state(void *)) +DEPRECATEDIN_1_0_0(void ERR_remove_state(unsigned long pid)) +ERR_STATE *ERR_get_state(void); + +int ERR_get_next_error_library(void); + +int ERR_set_mark(void); +int ERR_pop_to_mark(void); +int ERR_clear_last_mark(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/win64/include/openssl/evp.h b/openSSL/win64/include/openssl/evp.h new file mode 100644 index 0000000..a411f3f --- /dev/null +++ b/openSSL/win64/include/openssl/evp.h @@ -0,0 +1,1666 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENVELOPE_H +# define HEADER_ENVELOPE_H + +# include +# include +# include +# include +# include + +# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ +# define EVP_MAX_KEY_LENGTH 64 +# define EVP_MAX_IV_LENGTH 16 +# define EVP_MAX_BLOCK_LENGTH 32 + +# define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +# define PKCS5_DEFAULT_ITER 2048 + +# include + +# define EVP_PK_RSA 0x0001 +# define EVP_PK_DSA 0x0002 +# define EVP_PK_DH 0x0004 +# define EVP_PK_EC 0x0008 +# define EVP_PKT_SIGN 0x0010 +# define EVP_PKT_ENC 0x0020 +# define EVP_PKT_EXCH 0x0040 +# define EVP_PKS_RSA 0x0100 +# define EVP_PKS_DSA 0x0200 +# define EVP_PKS_EC 0x0400 + +# define EVP_PKEY_NONE NID_undef +# define EVP_PKEY_RSA NID_rsaEncryption +# define EVP_PKEY_RSA2 NID_rsa +# define EVP_PKEY_RSA_PSS NID_rsassaPss +# define EVP_PKEY_DSA NID_dsa +# define EVP_PKEY_DSA1 NID_dsa_2 +# define EVP_PKEY_DSA2 NID_dsaWithSHA +# define EVP_PKEY_DSA3 NID_dsaWithSHA1 +# define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 +# define EVP_PKEY_DH NID_dhKeyAgreement +# define EVP_PKEY_DHX NID_dhpublicnumber +# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey +# define EVP_PKEY_SM2 NID_sm2 +# define EVP_PKEY_HMAC NID_hmac +# define EVP_PKEY_CMAC NID_cmac +# define EVP_PKEY_SCRYPT NID_id_scrypt +# define EVP_PKEY_TLS1_PRF NID_tls1_prf +# define EVP_PKEY_HKDF NID_hkdf +# define EVP_PKEY_POLY1305 NID_poly1305 +# define EVP_PKEY_SIPHASH NID_siphash +# define EVP_PKEY_X25519 NID_X25519 +# define EVP_PKEY_ED25519 NID_ED25519 +# define EVP_PKEY_X448 NID_X448 +# define EVP_PKEY_ED448 NID_ED448 + +#ifdef __cplusplus +extern "C" { +#endif + +# define EVP_PKEY_MO_SIGN 0x0001 +# define EVP_PKEY_MO_VERIFY 0x0002 +# define EVP_PKEY_MO_ENCRYPT 0x0004 +# define EVP_PKEY_MO_DECRYPT 0x0008 + +# ifndef EVP_MD +EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type); +EVP_MD *EVP_MD_meth_dup(const EVP_MD *md); +void EVP_MD_meth_free(EVP_MD *md); + +int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize); +int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize); +int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize); +int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags); +int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx)); +int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx, + const void *data, + size_t count)); +int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx, + unsigned char *md)); +int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to, + const EVP_MD_CTX *from)); +int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx)); +int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2)); + +int EVP_MD_meth_get_input_blocksize(const EVP_MD *md); +int EVP_MD_meth_get_result_size(const EVP_MD *md); +int EVP_MD_meth_get_app_datasize(const EVP_MD *md); +unsigned long EVP_MD_meth_get_flags(const EVP_MD *md); +int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx); +int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx, + const void *data, + size_t count); +int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx, + unsigned char *md); +int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to, + const EVP_MD_CTX *from); +int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx); +int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2); + +/* digest can only handle a single block */ +# define EVP_MD_FLAG_ONESHOT 0x0001 + +/* digest is extensible-output function, XOF */ +# define EVP_MD_FLAG_XOF 0x0002 + +/* DigestAlgorithmIdentifier flags... */ + +# define EVP_MD_FLAG_DIGALGID_MASK 0x0018 + +/* NULL or absent parameter accepted. Use NULL */ + +# define EVP_MD_FLAG_DIGALGID_NULL 0x0000 + +/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ + +# define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 + +/* Custom handling via ctrl */ + +# define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 + +/* Note if suitable for use in FIPS mode */ +# define EVP_MD_FLAG_FIPS 0x0400 + +/* Digest ctrls */ + +# define EVP_MD_CTRL_DIGALGID 0x1 +# define EVP_MD_CTRL_MICALG 0x2 +# define EVP_MD_CTRL_XOF_LEN 0x3 + +/* Minimum Algorithm specific ctrl value */ + +# define EVP_MD_CTRL_ALG_CTRL 0x1000 + +# endif /* !EVP_MD */ + +/* values for EVP_MD_CTX flags */ + +# define EVP_MD_CTX_FLAG_ONESHOT 0x0001/* digest update will be + * called once only */ +# define EVP_MD_CTX_FLAG_CLEANED 0x0002/* context has already been + * cleaned */ +# define EVP_MD_CTX_FLAG_REUSE 0x0004/* Don't free up ctx->md_data + * in EVP_MD_CTX_reset */ +/* + * FIPS and pad options are ignored in 1.0.0, definitions are here so we + * don't accidentally reuse the values for other purposes. + */ + +# define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008/* Allow use of non FIPS + * digest in FIPS mode */ + +/* + * The following PAD options are also currently ignored in 1.0.0, digest + * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() + * instead. + */ +# define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */ +# define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */ +# define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */ +# define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */ + +# define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */ +/* + * Some functions such as EVP_DigestSign only finalise copies of internal + * contexts so additional data can be included after the finalisation call. + * This is inefficient if this functionality is not required: it is disabled + * if the following flag is set. + */ +# define EVP_MD_CTX_FLAG_FINALISE 0x0200 +/* NOTE: 0x0400 is reserved for internal usage */ + +EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); +EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); +void EVP_CIPHER_meth_free(EVP_CIPHER *cipher); + +int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len); +int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags); +int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size); +int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher, + int (*init) (EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc)); +int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher, + int (*do_cipher) (EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl)); +int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, + int (*cleanup) (EVP_CIPHER_CTX *)); +int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, + int (*set_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, + int (*get_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, + int (*ctrl) (EVP_CIPHER_CTX *, int type, + int arg, void *ptr)); + +int (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc); +int (*EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl); +int (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *); +int (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +int (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + int type, int arg, + void *ptr); + +/* Values for cipher flags */ + +/* Modes for ciphers */ + +# define EVP_CIPH_STREAM_CIPHER 0x0 +# define EVP_CIPH_ECB_MODE 0x1 +# define EVP_CIPH_CBC_MODE 0x2 +# define EVP_CIPH_CFB_MODE 0x3 +# define EVP_CIPH_OFB_MODE 0x4 +# define EVP_CIPH_CTR_MODE 0x5 +# define EVP_CIPH_GCM_MODE 0x6 +# define EVP_CIPH_CCM_MODE 0x7 +# define EVP_CIPH_XTS_MODE 0x10001 +# define EVP_CIPH_WRAP_MODE 0x10002 +# define EVP_CIPH_OCB_MODE 0x10003 +# define EVP_CIPH_MODE 0xF0007 +/* Set if variable length cipher */ +# define EVP_CIPH_VARIABLE_LENGTH 0x8 +/* Set if the iv handling should be done by the cipher itself */ +# define EVP_CIPH_CUSTOM_IV 0x10 +/* Set if the cipher's init() function should be called if key is NULL */ +# define EVP_CIPH_ALWAYS_CALL_INIT 0x20 +/* Call ctrl() to init cipher parameters */ +# define EVP_CIPH_CTRL_INIT 0x40 +/* Don't use standard key length function */ +# define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 +/* Don't use standard block padding */ +# define EVP_CIPH_NO_PADDING 0x100 +/* cipher handles random key generation */ +# define EVP_CIPH_RAND_KEY 0x200 +/* cipher has its own additional copying logic */ +# define EVP_CIPH_CUSTOM_COPY 0x400 +/* Don't use standard iv length function */ +# define EVP_CIPH_CUSTOM_IV_LENGTH 0x800 +/* Allow use default ASN1 get/set iv */ +# define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 +/* Buffer length in bits not bytes: CFB1 mode only */ +# define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 +/* Note if suitable for use in FIPS mode */ +# define EVP_CIPH_FLAG_FIPS 0x4000 +/* Allow non FIPS cipher in FIPS mode */ +# define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x8000 +/* + * Cipher handles any and all padding logic as well as finalisation. + */ +# define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 +# define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 +# define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 +/* Cipher can handle pipeline operations */ +# define EVP_CIPH_FLAG_PIPELINE 0X800000 + +/* + * Cipher context flag to indicate we can handle wrap mode: if allowed in + * older applications it could overflow buffers. + */ + +# define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 + +/* ctrl() values */ + +# define EVP_CTRL_INIT 0x0 +# define EVP_CTRL_SET_KEY_LENGTH 0x1 +# define EVP_CTRL_GET_RC2_KEY_BITS 0x2 +# define EVP_CTRL_SET_RC2_KEY_BITS 0x3 +# define EVP_CTRL_GET_RC5_ROUNDS 0x4 +# define EVP_CTRL_SET_RC5_ROUNDS 0x5 +# define EVP_CTRL_RAND_KEY 0x6 +# define EVP_CTRL_PBE_PRF_NID 0x7 +# define EVP_CTRL_COPY 0x8 +# define EVP_CTRL_AEAD_SET_IVLEN 0x9 +# define EVP_CTRL_AEAD_GET_TAG 0x10 +# define EVP_CTRL_AEAD_SET_TAG 0x11 +# define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 +# define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +# define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +# define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +# define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +# define EVP_CTRL_GCM_IV_GEN 0x13 +# define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +# define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +# define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +# define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +# define EVP_CTRL_CCM_SET_L 0x14 +# define EVP_CTRL_CCM_SET_MSGLEN 0x15 +/* + * AEAD cipher deduces payload length and returns number of bytes required to + * store MAC and eventual padding. Subsequent call to EVP_Cipher even + * appends/verifies MAC. + */ +# define EVP_CTRL_AEAD_TLS1_AAD 0x16 +/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ +# define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 +/* Set the GCM invocation field, decrypt only */ +# define EVP_CTRL_GCM_SET_IV_INV 0x18 + +# define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 +# define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a +# define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b +# define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c + +# define EVP_CTRL_SSL3_MASTER_SECRET 0x1d + +/* EVP_CTRL_SET_SBOX takes the char * specifying S-boxes */ +# define EVP_CTRL_SET_SBOX 0x1e +/* + * EVP_CTRL_SBOX_USED takes a 'size_t' and 'char *', pointing at a + * pre-allocated buffer with specified size + */ +# define EVP_CTRL_SBOX_USED 0x1f +/* EVP_CTRL_KEY_MESH takes 'size_t' number of bytes to mesh the key after, + * 0 switches meshing off + */ +# define EVP_CTRL_KEY_MESH 0x20 +/* EVP_CTRL_BLOCK_PADDING_MODE takes the padding mode */ +# define EVP_CTRL_BLOCK_PADDING_MODE 0x21 + +/* Set the output buffers to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS 0x22 +/* Set the input buffers to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_INPUT_BUFS 0x23 +/* Set the input buffer lengths to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_INPUT_LENS 0x24 + +# define EVP_CTRL_GET_IVLEN 0x25 + +/* Padding modes */ +#define EVP_PADDING_PKCS7 1 +#define EVP_PADDING_ISO7816_4 2 +#define EVP_PADDING_ANSI923 3 +#define EVP_PADDING_ISO10126 4 +#define EVP_PADDING_ZERO 5 + +/* RFC 5246 defines additional data to be 13 bytes in length */ +# define EVP_AEAD_TLS1_AAD_LEN 13 + +typedef struct { + unsigned char *out; + const unsigned char *inp; + size_t len; + unsigned int interleave; +} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; + +/* GCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_GCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 +/* Length of tag for TLS */ +# define EVP_GCM_TLS_TAG_LEN 16 + +/* CCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_CCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_CCM_TLS_EXPLICIT_IV_LEN 8 +/* Total length of CCM IV length for TLS */ +# define EVP_CCM_TLS_IV_LEN 12 +/* Length of tag for TLS */ +# define EVP_CCM_TLS_TAG_LEN 16 +/* Length of CCM8 tag for TLS */ +# define EVP_CCM8_TLS_TAG_LEN 8 + +/* Length of tag for TLS */ +# define EVP_CHACHAPOLY_TLS_TAG_LEN 16 + +typedef struct evp_cipher_info_st { + const EVP_CIPHER *cipher; + unsigned char iv[EVP_MAX_IV_LENGTH]; +} EVP_CIPHER_INFO; + + +/* Password based encryption function */ +typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de); + +# ifndef OPENSSL_NO_RSA +# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ + (char *)(rsa)) +# endif + +# ifndef OPENSSL_NO_DSA +# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ + (char *)(dsa)) +# endif + +# ifndef OPENSSL_NO_DH +# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ + (char *)(dh)) +# endif + +# ifndef OPENSSL_NO_EC +# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\ + (char *)(eckey)) +# endif +# ifndef OPENSSL_NO_SIPHASH +# define EVP_PKEY_assign_SIPHASH(pkey,shkey) EVP_PKEY_assign((pkey),EVP_PKEY_SIPHASH,\ + (char *)(shkey)) +# endif + +# ifndef OPENSSL_NO_POLY1305 +# define EVP_PKEY_assign_POLY1305(pkey,polykey) EVP_PKEY_assign((pkey),EVP_PKEY_POLY1305,\ + (char *)(polykey)) +# endif + +/* Add some extra combinations */ +# define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) +# define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) +# define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) +# define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) + +int EVP_MD_type(const EVP_MD *md); +# define EVP_MD_nid(e) EVP_MD_type(e) +# define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) +int EVP_MD_pkey_type(const EVP_MD *md); +int EVP_MD_size(const EVP_MD *md); +int EVP_MD_block_size(const EVP_MD *md); +unsigned long EVP_MD_flags(const EVP_MD *md); + +const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); +int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, + const void *data, size_t count); +void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, + int (*update) (EVP_MD_CTX *ctx, + const void *data, size_t count)); +# define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e)) +EVP_PKEY_CTX *EVP_MD_CTX_pkey_ctx(const EVP_MD_CTX *ctx); +void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); +void *EVP_MD_CTX_md_data(const EVP_MD_CTX *ctx); + +int EVP_CIPHER_nid(const EVP_CIPHER *cipher); +# define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e)) +int EVP_CIPHER_block_size(const EVP_CIPHER *cipher); +int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher); +int EVP_CIPHER_key_length(const EVP_CIPHER *cipher); +int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher); +unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher); +# define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE) + +const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_encrypting(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); +const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx); +const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx); +unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx); +unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_num(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num); +int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); +void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); +void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx); +void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data); +# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) +# if OPENSSL_API_COMPAT < 0x10100000L +# define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(c)) +# endif +# define EVP_CIPHER_CTX_mode(c) EVP_CIPHER_mode(EVP_CIPHER_CTX_cipher(c)) + +# define EVP_ENCODE_LENGTH(l) ((((l)+2)/3*4)+((l)/48+1)*2+80) +# define EVP_DECODE_LENGTH(l) (((l)+3)/4*3+80) + +# define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_SignInit(a,b) EVP_DigestInit(a,b) +# define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_VerifyInit(a,b) EVP_DigestInit(a,b) +# define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) +# define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) +# define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) + +# ifdef CONST_STRICT +void BIO_set_md(BIO *, const EVP_MD *md); +# else +# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)(md)) +# endif +# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)(mdp)) +# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0, \ + (char *)(mdcp)) +# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0, \ + (char *)(mdcp)) +# define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL) +# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0, \ + (char *)(c_pp)) + +/*__owur*/ int EVP_Cipher(EVP_CIPHER_CTX *c, + unsigned char *out, + const unsigned char *in, unsigned int inl); + +# define EVP_add_cipher_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_add_digest_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_delete_cipher_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS); +# define EVP_delete_digest_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS); + +int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2); +EVP_MD_CTX *EVP_MD_CTX_new(void); +int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); +void EVP_MD_CTX_free(EVP_MD_CTX *ctx); +# define EVP_MD_CTX_create() EVP_MD_CTX_new() +# define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx)) +# define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx)) +__owur int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); +void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); +void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); +int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); +__owur int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, + ENGINE *impl); +__owur int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, + size_t cnt); +__owur int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_Digest(const void *data, size_t count, + unsigned char *md, unsigned int *size, + const EVP_MD *type, ENGINE *impl); + +__owur int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); +__owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); +__owur int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *md, + size_t len); + +int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); +int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, + const char *prompt, int verify); +void EVP_set_pw_prompt(const char *prompt); +char *EVP_get_pw_prompt(void); + +__owur int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, + const unsigned char *salt, + const unsigned char *data, int datal, int count, + unsigned char *key, unsigned char *iv); + +void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); +void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); +int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); + +__owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +/*__owur*/ int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +/*__owur*/ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +/*__owur*/ int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); +/*__owur*/ int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); + +__owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +/*__owur*/ int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +/*__owur*/ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +/*__owur*/ int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc); +/*__owur*/ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv, int enc); +__owur int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +__owur int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey); + +__owur int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); + +__owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, + size_t siglen, const unsigned char *tbs, + size_t tbslen); + +/*__owur*/ int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen); + +__owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen); + +# ifndef OPENSSL_NO_RSA +__owur int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + const unsigned char *ek, int ekl, + const unsigned char *iv, EVP_PKEY *priv); +__owur int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +__owur int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + unsigned char **ek, int *ekl, unsigned char *iv, + EVP_PKEY **pubk, int npubk); +__owur int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); +# endif + +EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void); +void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx); +int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, EVP_ENCODE_CTX *sctx); +int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); +void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); +int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); +int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned + char *out, int *outl); +int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define EVP_CIPHER_CTX_init(c) EVP_CIPHER_CTX_reset(c) +# define EVP_CIPHER_CTX_cleanup(c) EVP_CIPHER_CTX_reset(c) +# endif +EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); +int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *c); +int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); +int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); +int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); +int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); + +const BIO_METHOD *BIO_f_md(void); +const BIO_METHOD *BIO_f_base64(void); +const BIO_METHOD *BIO_f_cipher(void); +const BIO_METHOD *BIO_f_reliable(void); +__owur int BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, + const unsigned char *i, int enc); + +const EVP_MD *EVP_md_null(void); +# ifndef OPENSSL_NO_MD2 +const EVP_MD *EVP_md2(void); +# endif +# ifndef OPENSSL_NO_MD4 +const EVP_MD *EVP_md4(void); +# endif +# ifndef OPENSSL_NO_MD5 +const EVP_MD *EVP_md5(void); +const EVP_MD *EVP_md5_sha1(void); +# endif +# ifndef OPENSSL_NO_BLAKE2 +const EVP_MD *EVP_blake2b512(void); +const EVP_MD *EVP_blake2s256(void); +# endif +const EVP_MD *EVP_sha1(void); +const EVP_MD *EVP_sha224(void); +const EVP_MD *EVP_sha256(void); +const EVP_MD *EVP_sha384(void); +const EVP_MD *EVP_sha512(void); +const EVP_MD *EVP_sha512_224(void); +const EVP_MD *EVP_sha512_256(void); +const EVP_MD *EVP_sha3_224(void); +const EVP_MD *EVP_sha3_256(void); +const EVP_MD *EVP_sha3_384(void); +const EVP_MD *EVP_sha3_512(void); +const EVP_MD *EVP_shake128(void); +const EVP_MD *EVP_shake256(void); +# ifndef OPENSSL_NO_MDC2 +const EVP_MD *EVP_mdc2(void); +# endif +# ifndef OPENSSL_NO_RMD160 +const EVP_MD *EVP_ripemd160(void); +# endif +# ifndef OPENSSL_NO_WHIRLPOOL +const EVP_MD *EVP_whirlpool(void); +# endif +# ifndef OPENSSL_NO_SM3 +const EVP_MD *EVP_sm3(void); +# endif +const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ +# ifndef OPENSSL_NO_DES +const EVP_CIPHER *EVP_des_ecb(void); +const EVP_CIPHER *EVP_des_ede(void); +const EVP_CIPHER *EVP_des_ede3(void); +const EVP_CIPHER *EVP_des_ede_ecb(void); +const EVP_CIPHER *EVP_des_ede3_ecb(void); +const EVP_CIPHER *EVP_des_cfb64(void); +# define EVP_des_cfb EVP_des_cfb64 +const EVP_CIPHER *EVP_des_cfb1(void); +const EVP_CIPHER *EVP_des_cfb8(void); +const EVP_CIPHER *EVP_des_ede_cfb64(void); +# define EVP_des_ede_cfb EVP_des_ede_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb64(void); +# define EVP_des_ede3_cfb EVP_des_ede3_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb1(void); +const EVP_CIPHER *EVP_des_ede3_cfb8(void); +const EVP_CIPHER *EVP_des_ofb(void); +const EVP_CIPHER *EVP_des_ede_ofb(void); +const EVP_CIPHER *EVP_des_ede3_ofb(void); +const EVP_CIPHER *EVP_des_cbc(void); +const EVP_CIPHER *EVP_des_ede_cbc(void); +const EVP_CIPHER *EVP_des_ede3_cbc(void); +const EVP_CIPHER *EVP_desx_cbc(void); +const EVP_CIPHER *EVP_des_ede3_wrap(void); +/* + * This should now be supported through the dev_crypto ENGINE. But also, why + * are rc4 and md5 declarations made here inside a "NO_DES" precompiler + * branch? + */ +# endif +# ifndef OPENSSL_NO_RC4 +const EVP_CIPHER *EVP_rc4(void); +const EVP_CIPHER *EVP_rc4_40(void); +# ifndef OPENSSL_NO_MD5 +const EVP_CIPHER *EVP_rc4_hmac_md5(void); +# endif +# endif +# ifndef OPENSSL_NO_IDEA +const EVP_CIPHER *EVP_idea_ecb(void); +const EVP_CIPHER *EVP_idea_cfb64(void); +# define EVP_idea_cfb EVP_idea_cfb64 +const EVP_CIPHER *EVP_idea_ofb(void); +const EVP_CIPHER *EVP_idea_cbc(void); +# endif +# ifndef OPENSSL_NO_RC2 +const EVP_CIPHER *EVP_rc2_ecb(void); +const EVP_CIPHER *EVP_rc2_cbc(void); +const EVP_CIPHER *EVP_rc2_40_cbc(void); +const EVP_CIPHER *EVP_rc2_64_cbc(void); +const EVP_CIPHER *EVP_rc2_cfb64(void); +# define EVP_rc2_cfb EVP_rc2_cfb64 +const EVP_CIPHER *EVP_rc2_ofb(void); +# endif +# ifndef OPENSSL_NO_BF +const EVP_CIPHER *EVP_bf_ecb(void); +const EVP_CIPHER *EVP_bf_cbc(void); +const EVP_CIPHER *EVP_bf_cfb64(void); +# define EVP_bf_cfb EVP_bf_cfb64 +const EVP_CIPHER *EVP_bf_ofb(void); +# endif +# ifndef OPENSSL_NO_CAST +const EVP_CIPHER *EVP_cast5_ecb(void); +const EVP_CIPHER *EVP_cast5_cbc(void); +const EVP_CIPHER *EVP_cast5_cfb64(void); +# define EVP_cast5_cfb EVP_cast5_cfb64 +const EVP_CIPHER *EVP_cast5_ofb(void); +# endif +# ifndef OPENSSL_NO_RC5 +const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); +const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); +const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); +# define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 +const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); +# endif +const EVP_CIPHER *EVP_aes_128_ecb(void); +const EVP_CIPHER *EVP_aes_128_cbc(void); +const EVP_CIPHER *EVP_aes_128_cfb1(void); +const EVP_CIPHER *EVP_aes_128_cfb8(void); +const EVP_CIPHER *EVP_aes_128_cfb128(void); +# define EVP_aes_128_cfb EVP_aes_128_cfb128 +const EVP_CIPHER *EVP_aes_128_ofb(void); +const EVP_CIPHER *EVP_aes_128_ctr(void); +const EVP_CIPHER *EVP_aes_128_ccm(void); +const EVP_CIPHER *EVP_aes_128_gcm(void); +const EVP_CIPHER *EVP_aes_128_xts(void); +const EVP_CIPHER *EVP_aes_128_wrap(void); +const EVP_CIPHER *EVP_aes_128_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_128_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_192_ecb(void); +const EVP_CIPHER *EVP_aes_192_cbc(void); +const EVP_CIPHER *EVP_aes_192_cfb1(void); +const EVP_CIPHER *EVP_aes_192_cfb8(void); +const EVP_CIPHER *EVP_aes_192_cfb128(void); +# define EVP_aes_192_cfb EVP_aes_192_cfb128 +const EVP_CIPHER *EVP_aes_192_ofb(void); +const EVP_CIPHER *EVP_aes_192_ctr(void); +const EVP_CIPHER *EVP_aes_192_ccm(void); +const EVP_CIPHER *EVP_aes_192_gcm(void); +const EVP_CIPHER *EVP_aes_192_wrap(void); +const EVP_CIPHER *EVP_aes_192_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_192_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_256_ecb(void); +const EVP_CIPHER *EVP_aes_256_cbc(void); +const EVP_CIPHER *EVP_aes_256_cfb1(void); +const EVP_CIPHER *EVP_aes_256_cfb8(void); +const EVP_CIPHER *EVP_aes_256_cfb128(void); +# define EVP_aes_256_cfb EVP_aes_256_cfb128 +const EVP_CIPHER *EVP_aes_256_ofb(void); +const EVP_CIPHER *EVP_aes_256_ctr(void); +const EVP_CIPHER *EVP_aes_256_ccm(void); +const EVP_CIPHER *EVP_aes_256_gcm(void); +const EVP_CIPHER *EVP_aes_256_xts(void); +const EVP_CIPHER *EVP_aes_256_wrap(void); +const EVP_CIPHER *EVP_aes_256_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_256_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); +# ifndef OPENSSL_NO_ARIA +const EVP_CIPHER *EVP_aria_128_ecb(void); +const EVP_CIPHER *EVP_aria_128_cbc(void); +const EVP_CIPHER *EVP_aria_128_cfb1(void); +const EVP_CIPHER *EVP_aria_128_cfb8(void); +const EVP_CIPHER *EVP_aria_128_cfb128(void); +# define EVP_aria_128_cfb EVP_aria_128_cfb128 +const EVP_CIPHER *EVP_aria_128_ctr(void); +const EVP_CIPHER *EVP_aria_128_ofb(void); +const EVP_CIPHER *EVP_aria_128_gcm(void); +const EVP_CIPHER *EVP_aria_128_ccm(void); +const EVP_CIPHER *EVP_aria_192_ecb(void); +const EVP_CIPHER *EVP_aria_192_cbc(void); +const EVP_CIPHER *EVP_aria_192_cfb1(void); +const EVP_CIPHER *EVP_aria_192_cfb8(void); +const EVP_CIPHER *EVP_aria_192_cfb128(void); +# define EVP_aria_192_cfb EVP_aria_192_cfb128 +const EVP_CIPHER *EVP_aria_192_ctr(void); +const EVP_CIPHER *EVP_aria_192_ofb(void); +const EVP_CIPHER *EVP_aria_192_gcm(void); +const EVP_CIPHER *EVP_aria_192_ccm(void); +const EVP_CIPHER *EVP_aria_256_ecb(void); +const EVP_CIPHER *EVP_aria_256_cbc(void); +const EVP_CIPHER *EVP_aria_256_cfb1(void); +const EVP_CIPHER *EVP_aria_256_cfb8(void); +const EVP_CIPHER *EVP_aria_256_cfb128(void); +# define EVP_aria_256_cfb EVP_aria_256_cfb128 +const EVP_CIPHER *EVP_aria_256_ctr(void); +const EVP_CIPHER *EVP_aria_256_ofb(void); +const EVP_CIPHER *EVP_aria_256_gcm(void); +const EVP_CIPHER *EVP_aria_256_ccm(void); +# endif +# ifndef OPENSSL_NO_CAMELLIA +const EVP_CIPHER *EVP_camellia_128_ecb(void); +const EVP_CIPHER *EVP_camellia_128_cbc(void); +const EVP_CIPHER *EVP_camellia_128_cfb1(void); +const EVP_CIPHER *EVP_camellia_128_cfb8(void); +const EVP_CIPHER *EVP_camellia_128_cfb128(void); +# define EVP_camellia_128_cfb EVP_camellia_128_cfb128 +const EVP_CIPHER *EVP_camellia_128_ofb(void); +const EVP_CIPHER *EVP_camellia_128_ctr(void); +const EVP_CIPHER *EVP_camellia_192_ecb(void); +const EVP_CIPHER *EVP_camellia_192_cbc(void); +const EVP_CIPHER *EVP_camellia_192_cfb1(void); +const EVP_CIPHER *EVP_camellia_192_cfb8(void); +const EVP_CIPHER *EVP_camellia_192_cfb128(void); +# define EVP_camellia_192_cfb EVP_camellia_192_cfb128 +const EVP_CIPHER *EVP_camellia_192_ofb(void); +const EVP_CIPHER *EVP_camellia_192_ctr(void); +const EVP_CIPHER *EVP_camellia_256_ecb(void); +const EVP_CIPHER *EVP_camellia_256_cbc(void); +const EVP_CIPHER *EVP_camellia_256_cfb1(void); +const EVP_CIPHER *EVP_camellia_256_cfb8(void); +const EVP_CIPHER *EVP_camellia_256_cfb128(void); +# define EVP_camellia_256_cfb EVP_camellia_256_cfb128 +const EVP_CIPHER *EVP_camellia_256_ofb(void); +const EVP_CIPHER *EVP_camellia_256_ctr(void); +# endif +# ifndef OPENSSL_NO_CHACHA +const EVP_CIPHER *EVP_chacha20(void); +# ifndef OPENSSL_NO_POLY1305 +const EVP_CIPHER *EVP_chacha20_poly1305(void); +# endif +# endif + +# ifndef OPENSSL_NO_SEED +const EVP_CIPHER *EVP_seed_ecb(void); +const EVP_CIPHER *EVP_seed_cbc(void); +const EVP_CIPHER *EVP_seed_cfb128(void); +# define EVP_seed_cfb EVP_seed_cfb128 +const EVP_CIPHER *EVP_seed_ofb(void); +# endif + +# ifndef OPENSSL_NO_SM4 +const EVP_CIPHER *EVP_sm4_ecb(void); +const EVP_CIPHER *EVP_sm4_cbc(void); +const EVP_CIPHER *EVP_sm4_cfb128(void); +# define EVP_sm4_cfb EVP_sm4_cfb128 +const EVP_CIPHER *EVP_sm4_ofb(void); +const EVP_CIPHER *EVP_sm4_ctr(void); +# endif + +# if OPENSSL_API_COMPAT < 0x10100000L +# define OPENSSL_add_all_algorithms_conf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS \ + | OPENSSL_INIT_LOAD_CONFIG, NULL) +# define OPENSSL_add_all_algorithms_noconf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +# ifdef OPENSSL_LOAD_CONF +# define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_conf() +# else +# define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_noconf() +# endif + +# define OpenSSL_add_all_ciphers() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL) +# define OpenSSL_add_all_digests() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +# define EVP_cleanup() while(0) continue +# endif + +int EVP_add_cipher(const EVP_CIPHER *cipher); +int EVP_add_digest(const EVP_MD *digest); + +const EVP_CIPHER *EVP_get_cipherbyname(const char *name); +const EVP_MD *EVP_get_digestbyname(const char *name); + +void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_sorted(void (*fn) + (const EVP_CIPHER *ciph, const char *from, + const char *to, void *x), void *arg); + +void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_MD_do_all_sorted(void (*fn) + (const EVP_MD *ciph, const char *from, + const char *to, void *x), void *arg); + +int EVP_PKEY_decrypt_old(unsigned char *dec_key, + const unsigned char *enc_key, int enc_key_len, + EVP_PKEY *private_key); +int EVP_PKEY_encrypt_old(unsigned char *enc_key, + const unsigned char *key, int key_len, + EVP_PKEY *pub_key); +int EVP_PKEY_type(int type); +int EVP_PKEY_id(const EVP_PKEY *pkey); +int EVP_PKEY_base_id(const EVP_PKEY *pkey); +int EVP_PKEY_bits(const EVP_PKEY *pkey); +int EVP_PKEY_security_bits(const EVP_PKEY *pkey); +int EVP_PKEY_size(const EVP_PKEY *pkey); +int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); +int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); +int EVP_PKEY_set_alias_type(EVP_PKEY *pkey, int type); +# ifndef OPENSSL_NO_ENGINE +int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e); +ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey); +# endif +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +void *EVP_PKEY_get0(const EVP_PKEY *pkey); +const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); +# ifndef OPENSSL_NO_POLY1305 +const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len); +# endif +# ifndef OPENSSL_NO_SIPHASH +const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len); +# endif + +# ifndef OPENSSL_NO_RSA +struct rsa_st; +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +struct rsa_st *EVP_PKEY_get0_RSA(EVP_PKEY *pkey); +struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DSA +struct dsa_st; +int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); +struct dsa_st *EVP_PKEY_get0_DSA(EVP_PKEY *pkey); +struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DH +struct dh_st; +int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); +struct dh_st *EVP_PKEY_get0_DH(EVP_PKEY *pkey); +struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_EC +struct ec_key_st; +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); +struct ec_key_st *EVP_PKEY_get0_EC_KEY(EVP_PKEY *pkey); +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +# endif + +EVP_PKEY *EVP_PKEY_new(void); +int EVP_PKEY_up_ref(EVP_PKEY *pkey); +void EVP_PKEY_free(EVP_PKEY *pkey); + +EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp); + +EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp); + +int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); +int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); +int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); +int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); + +int EVP_PKEY_set1_tls_encodedpoint(EVP_PKEY *pkey, + const unsigned char *pt, size_t ptlen); +size_t EVP_PKEY_get1_tls_encodedpoint(EVP_PKEY *pkey, unsigned char **ppt); + +int EVP_CIPHER_type(const EVP_CIPHER *ctx); + +/* calls methods */ +int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* These are used by EVP_CIPHER methods */ +int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* PKCS5 password based encryption */ +int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + int keylen, unsigned char *out); +int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + const EVP_MD *digest, int keylen, unsigned char *out); +int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); + +#ifndef OPENSSL_NO_SCRYPT +int EVP_PBE_scrypt(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen); + +int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de); +#endif + +void PKCS5_PBE_add(void); + +int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); + +/* PBE type */ + +/* Can appear as the outermost AlgorithmIdentifier */ +# define EVP_PBE_TYPE_OUTER 0x0 +/* Is an PRF type OID */ +# define EVP_PBE_TYPE_PRF 0x1 +/* Is a PKCS#5 v2.0 KDF */ +# define EVP_PBE_TYPE_KDF 0x2 + +int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, + int md_nid, EVP_PBE_KEYGEN *keygen); +int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, + EVP_PBE_KEYGEN *keygen); +int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen); +void EVP_PBE_cleanup(void); +int EVP_PBE_get(int *ptype, int *ppbe_nid, size_t num); + +# define ASN1_PKEY_ALIAS 0x1 +# define ASN1_PKEY_DYNAMIC 0x2 +# define ASN1_PKEY_SIGPARAM_NULL 0x4 + +# define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 +# define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 +# define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 +# define ASN1_PKEY_CTRL_CMS_SIGN 0x5 +# define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 +# define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 + +# define ASN1_PKEY_CTRL_SET1_TLS_ENCPT 0x9 +# define ASN1_PKEY_CTRL_GET1_TLS_ENCPT 0xa + +int EVP_PKEY_asn1_get_count(void); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, + const char *str, int len); +int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); +int EVP_PKEY_asn1_add_alias(int to, int from); +int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, + int *ppkey_flags, const char **pinfo, + const char **ppem_str, + const EVP_PKEY_ASN1_METHOD *ameth); + +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(const EVP_PKEY *pkey); +EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, + const char *pem_str, + const char *info); +void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, + const EVP_PKEY_ASN1_METHOD *src); +void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); +void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, + int (*pub_decode) (EVP_PKEY *pk, + X509_PUBKEY *pub), + int (*pub_encode) (X509_PUBKEY *pub, + const EVP_PKEY *pk), + int (*pub_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*pub_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx), + int (*pkey_size) (const EVP_PKEY *pk), + int (*pkey_bits) (const EVP_PKEY *pk)); +void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, + int (*priv_decode) (EVP_PKEY *pk, + const PKCS8_PRIV_KEY_INFO + *p8inf), + int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8, + const EVP_PKEY *pk), + int (*priv_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); +void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, + int (*param_decode) (EVP_PKEY *pkey, + const unsigned char **pder, + int derlen), + int (*param_encode) (const EVP_PKEY *pkey, + unsigned char **pder), + int (*param_missing) (const EVP_PKEY *pk), + int (*param_copy) (EVP_PKEY *to, + const EVP_PKEY *from), + int (*param_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*param_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); + +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, + void (*pkey_free) (EVP_PKEY *pkey)); +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_ctrl) (EVP_PKEY *pkey, int op, + long arg1, void *arg2)); +void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth, + int (*item_verify) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *a, + ASN1_BIT_STRING *sig, + EVP_PKEY *pkey), + int (*item_sign) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *alg1, + X509_ALGOR *alg2, + ASN1_BIT_STRING *sig)); + +void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD *ameth, + int (*siginf_set) (X509_SIG_INFO *siginf, + const X509_ALGOR *alg, + const ASN1_STRING *sig)); + +void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_pub_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_param_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_priv_key) (EVP_PKEY *pk, + const unsigned char + *priv, + size_t len)); +void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_pub_key) (EVP_PKEY *pk, + const unsigned char *pub, + size_t len)); +void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_priv_key) (const EVP_PKEY *pk, + unsigned char *priv, + size_t *len)); +void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_pub_key) (const EVP_PKEY *pk, + unsigned char *pub, + size_t *len)); + +void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_security_bits) (const EVP_PKEY + *pk)); + +# define EVP_PKEY_OP_UNDEFINED 0 +# define EVP_PKEY_OP_PARAMGEN (1<<1) +# define EVP_PKEY_OP_KEYGEN (1<<2) +# define EVP_PKEY_OP_SIGN (1<<3) +# define EVP_PKEY_OP_VERIFY (1<<4) +# define EVP_PKEY_OP_VERIFYRECOVER (1<<5) +# define EVP_PKEY_OP_SIGNCTX (1<<6) +# define EVP_PKEY_OP_VERIFYCTX (1<<7) +# define EVP_PKEY_OP_ENCRYPT (1<<8) +# define EVP_PKEY_OP_DECRYPT (1<<9) +# define EVP_PKEY_OP_DERIVE (1<<10) + +# define EVP_PKEY_OP_TYPE_SIG \ + (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \ + | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) + +# define EVP_PKEY_OP_TYPE_CRYPT \ + (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) + +# define EVP_PKEY_OP_TYPE_NOGEN \ + (EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT | EVP_PKEY_OP_DERIVE) + +# define EVP_PKEY_OP_TYPE_GEN \ + (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) + +# define EVP_PKEY_CTX_set_signature_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_signature_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_GET_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_mac_key(ctx, key, len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_SET_MAC_KEY, len, (void *)(key)) + +# define EVP_PKEY_CTRL_MD 1 +# define EVP_PKEY_CTRL_PEER_KEY 2 + +# define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 +# define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 + +# define EVP_PKEY_CTRL_PKCS7_SIGN 5 + +# define EVP_PKEY_CTRL_SET_MAC_KEY 6 + +# define EVP_PKEY_CTRL_DIGESTINIT 7 + +/* Used by GOST key encryption in TLS */ +# define EVP_PKEY_CTRL_SET_IV 8 + +# define EVP_PKEY_CTRL_CMS_ENCRYPT 9 +# define EVP_PKEY_CTRL_CMS_DECRYPT 10 +# define EVP_PKEY_CTRL_CMS_SIGN 11 + +# define EVP_PKEY_CTRL_CIPHER 12 + +# define EVP_PKEY_CTRL_GET_MD 13 + +# define EVP_PKEY_CTRL_SET_DIGEST_SIZE 14 + +# define EVP_PKEY_ALG_CTRL 0x1000 + +# define EVP_PKEY_FLAG_AUTOARGLEN 2 +/* + * Method handles all operations: don't assume any digest related defaults. + */ +# define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 + +const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); +EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); +void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, + const EVP_PKEY_METHOD *meth); +void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src); +void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); +int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); +int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth); +size_t EVP_PKEY_meth_get_count(void); +const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx); + +EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, int p1, void *p2); +int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, + const char *value); +int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, uint64_t value); + +int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); +int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); + +int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md); + +int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); + +EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, + const unsigned char *key, int keylen); +EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e, + const unsigned char *priv, + size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e, + const unsigned char *pub, + size_t len); +int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv, + size_t *len); +int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub, + size_t *len); + +EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, + size_t len, const EVP_CIPHER *cipher); + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx); +EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); + +EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, + const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, + unsigned char *rout, size_t *routlen, + const unsigned char *sig, size_t siglen); +int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); +int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); + +int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); +int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); + +typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); +EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); + +void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, + int (*copy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, + void (*cleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, + int (*paramgen_init) (EVP_PKEY_CTX *ctx), + int (*paramgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, + int (*keygen_init) (EVP_PKEY_CTX *ctx), + int (*keygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, + int (*sign_init) (EVP_PKEY_CTX *ctx), + int (*sign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, + int (*verify_init) (EVP_PKEY_CTX *ctx), + int (*verify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, + int (*verify_recover_init) (EVP_PKEY_CTX + *ctx), + int (*verify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, + int (*signctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*signctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, + int (*verifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*verifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, + int (*encrypt_init) (EVP_PKEY_CTX *ctx), + int (*encryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, + int (*decrypt_init) (EVP_PKEY_CTX *ctx), + int (*decrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, + int (*derive_init) (EVP_PKEY_CTX *ctx), + int (*derive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, + int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (*ctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + +void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD *pmeth, + int (*digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD *pmeth, + int (*digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD *pmeth, + int (*digest_custom) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD *pmeth, + int (**pinit) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_copy(const EVP_PKEY_METHOD *pmeth, + int (**pcopy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_get_cleanup(const EVP_PKEY_METHOD *pmeth, + void (**pcleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_paramgen(const EVP_PKEY_METHOD *pmeth, + int (**pparamgen_init) (EVP_PKEY_CTX *ctx), + int (**pparamgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_keygen(const EVP_PKEY_METHOD *pmeth, + int (**pkeygen_init) (EVP_PKEY_CTX *ctx), + int (**pkeygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_sign(const EVP_PKEY_METHOD *pmeth, + int (**psign_init) (EVP_PKEY_CTX *ctx), + int (**psign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify(const EVP_PKEY_METHOD *pmeth, + int (**pverify_init) (EVP_PKEY_CTX *ctx), + int (**pverify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify_recover(const EVP_PKEY_METHOD *pmeth, + int (**pverify_recover_init) (EVP_PKEY_CTX + *ctx), + int (**pverify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_signctx(const EVP_PKEY_METHOD *pmeth, + int (**psignctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**psignctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_verifyctx(const EVP_PKEY_METHOD *pmeth, + int (**pverifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**pverifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_encrypt(const EVP_PKEY_METHOD *pmeth, + int (**pencrypt_init) (EVP_PKEY_CTX *ctx), + int (**pencryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_decrypt(const EVP_PKEY_METHOD *pmeth, + int (**pdecrypt_init) (EVP_PKEY_CTX *ctx), + int (**pdecrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_derive(const EVP_PKEY_METHOD *pmeth, + int (**pderive_init) (EVP_PKEY_CTX *ctx), + int (**pderive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_get_ctrl(const EVP_PKEY_METHOD *pmeth, + int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (**pctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + +void EVP_PKEY_meth_get_digestsign(EVP_PKEY_METHOD *pmeth, + int (**digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_digestverify(EVP_PKEY_METHOD *pmeth, + int (**digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_digest_custom(EVP_PKEY_METHOD *pmeth, + int (**pdigest_custom) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx)); +void EVP_add_alg_module(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/evperr.h b/openSSL/win64/include/openssl/evperr.h new file mode 100644 index 0000000..b4ea90a --- /dev/null +++ b/openSSL/win64/include/openssl/evperr.h @@ -0,0 +1,204 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EVPERR_H +# define HEADER_EVPERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_EVP_strings(void); + +/* + * EVP function codes. + */ +# define EVP_F_AESNI_INIT_KEY 165 +# define EVP_F_AESNI_XTS_INIT_KEY 207 +# define EVP_F_AES_GCM_CTRL 196 +# define EVP_F_AES_INIT_KEY 133 +# define EVP_F_AES_OCB_CIPHER 169 +# define EVP_F_AES_T4_INIT_KEY 178 +# define EVP_F_AES_T4_XTS_INIT_KEY 208 +# define EVP_F_AES_WRAP_CIPHER 170 +# define EVP_F_AES_XTS_INIT_KEY 209 +# define EVP_F_ALG_MODULE_INIT 177 +# define EVP_F_ARIA_CCM_INIT_KEY 175 +# define EVP_F_ARIA_GCM_CTRL 197 +# define EVP_F_ARIA_GCM_INIT_KEY 176 +# define EVP_F_ARIA_INIT_KEY 185 +# define EVP_F_B64_NEW 198 +# define EVP_F_CAMELLIA_INIT_KEY 159 +# define EVP_F_CHACHA20_POLY1305_CTRL 182 +# define EVP_F_CMLL_T4_INIT_KEY 179 +# define EVP_F_DES_EDE3_WRAP_CIPHER 171 +# define EVP_F_DO_SIGVER_INIT 161 +# define EVP_F_ENC_NEW 199 +# define EVP_F_EVP_CIPHERINIT_EX 123 +# define EVP_F_EVP_CIPHER_ASN1_TO_PARAM 204 +# define EVP_F_EVP_CIPHER_CTX_COPY 163 +# define EVP_F_EVP_CIPHER_CTX_CTRL 124 +# define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 +# define EVP_F_EVP_CIPHER_PARAM_TO_ASN1 205 +# define EVP_F_EVP_DECRYPTFINAL_EX 101 +# define EVP_F_EVP_DECRYPTUPDATE 166 +# define EVP_F_EVP_DIGESTFINALXOF 174 +# define EVP_F_EVP_DIGESTINIT_EX 128 +# define EVP_F_EVP_ENCRYPTDECRYPTUPDATE 219 +# define EVP_F_EVP_ENCRYPTFINAL_EX 127 +# define EVP_F_EVP_ENCRYPTUPDATE 167 +# define EVP_F_EVP_MD_CTX_COPY_EX 110 +# define EVP_F_EVP_MD_SIZE 162 +# define EVP_F_EVP_OPENINIT 102 +# define EVP_F_EVP_PBE_ALG_ADD 115 +# define EVP_F_EVP_PBE_ALG_ADD_TYPE 160 +# define EVP_F_EVP_PBE_CIPHERINIT 116 +# define EVP_F_EVP_PBE_SCRYPT 181 +# define EVP_F_EVP_PKCS82PKEY 111 +# define EVP_F_EVP_PKEY2PKCS8 113 +# define EVP_F_EVP_PKEY_ASN1_ADD0 188 +# define EVP_F_EVP_PKEY_CHECK 186 +# define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 +# define EVP_F_EVP_PKEY_CTX_CTRL 137 +# define EVP_F_EVP_PKEY_CTX_CTRL_STR 150 +# define EVP_F_EVP_PKEY_CTX_DUP 156 +# define EVP_F_EVP_PKEY_CTX_MD 168 +# define EVP_F_EVP_PKEY_DECRYPT 104 +# define EVP_F_EVP_PKEY_DECRYPT_INIT 138 +# define EVP_F_EVP_PKEY_DECRYPT_OLD 151 +# define EVP_F_EVP_PKEY_DERIVE 153 +# define EVP_F_EVP_PKEY_DERIVE_INIT 154 +# define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155 +# define EVP_F_EVP_PKEY_ENCRYPT 105 +# define EVP_F_EVP_PKEY_ENCRYPT_INIT 139 +# define EVP_F_EVP_PKEY_ENCRYPT_OLD 152 +# define EVP_F_EVP_PKEY_GET0_DH 119 +# define EVP_F_EVP_PKEY_GET0_DSA 120 +# define EVP_F_EVP_PKEY_GET0_EC_KEY 131 +# define EVP_F_EVP_PKEY_GET0_HMAC 183 +# define EVP_F_EVP_PKEY_GET0_POLY1305 184 +# define EVP_F_EVP_PKEY_GET0_RSA 121 +# define EVP_F_EVP_PKEY_GET0_SIPHASH 172 +# define EVP_F_EVP_PKEY_GET_RAW_PRIVATE_KEY 202 +# define EVP_F_EVP_PKEY_GET_RAW_PUBLIC_KEY 203 +# define EVP_F_EVP_PKEY_KEYGEN 146 +# define EVP_F_EVP_PKEY_KEYGEN_INIT 147 +# define EVP_F_EVP_PKEY_METH_ADD0 194 +# define EVP_F_EVP_PKEY_METH_NEW 195 +# define EVP_F_EVP_PKEY_NEW 106 +# define EVP_F_EVP_PKEY_NEW_CMAC_KEY 193 +# define EVP_F_EVP_PKEY_NEW_RAW_PRIVATE_KEY 191 +# define EVP_F_EVP_PKEY_NEW_RAW_PUBLIC_KEY 192 +# define EVP_F_EVP_PKEY_PARAMGEN 148 +# define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 +# define EVP_F_EVP_PKEY_PARAM_CHECK 189 +# define EVP_F_EVP_PKEY_PUBLIC_CHECK 190 +# define EVP_F_EVP_PKEY_SET1_ENGINE 187 +# define EVP_F_EVP_PKEY_SET_ALIAS_TYPE 206 +# define EVP_F_EVP_PKEY_SIGN 140 +# define EVP_F_EVP_PKEY_SIGN_INIT 141 +# define EVP_F_EVP_PKEY_VERIFY 142 +# define EVP_F_EVP_PKEY_VERIFY_INIT 143 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER 144 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145 +# define EVP_F_EVP_SIGNFINAL 107 +# define EVP_F_EVP_VERIFYFINAL 108 +# define EVP_F_INT_CTX_NEW 157 +# define EVP_F_OK_NEW 200 +# define EVP_F_PKCS5_PBE_KEYIVGEN 117 +# define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 +# define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164 +# define EVP_F_PKCS5_V2_SCRYPT_KEYIVGEN 180 +# define EVP_F_PKEY_SET_TYPE 158 +# define EVP_F_RC2_MAGIC_TO_METH 109 +# define EVP_F_RC5_CTRL 125 +# define EVP_F_R_32_12_16_INIT_KEY 242 +# define EVP_F_S390X_AES_GCM_CTRL 201 +# define EVP_F_UPDATE 173 + +/* + * EVP reason codes. + */ +# define EVP_R_AES_KEY_SETUP_FAILED 143 +# define EVP_R_ARIA_KEY_SETUP_FAILED 176 +# define EVP_R_BAD_DECRYPT 100 +# define EVP_R_BAD_KEY_LENGTH 195 +# define EVP_R_BUFFER_TOO_SMALL 155 +# define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 +# define EVP_R_CIPHER_PARAMETER_ERROR 122 +# define EVP_R_COMMAND_NOT_SUPPORTED 147 +# define EVP_R_COPY_ERROR 173 +# define EVP_R_CTRL_NOT_IMPLEMENTED 132 +# define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 +# define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 +# define EVP_R_DECODE_ERROR 114 +# define EVP_R_DIFFERENT_KEY_TYPES 101 +# define EVP_R_DIFFERENT_PARAMETERS 153 +# define EVP_R_ERROR_LOADING_SECTION 165 +# define EVP_R_ERROR_SETTING_FIPS_MODE 166 +# define EVP_R_EXPECTING_AN_HMAC_KEY 174 +# define EVP_R_EXPECTING_AN_RSA_KEY 127 +# define EVP_R_EXPECTING_A_DH_KEY 128 +# define EVP_R_EXPECTING_A_DSA_KEY 129 +# define EVP_R_EXPECTING_A_EC_KEY 142 +# define EVP_R_EXPECTING_A_POLY1305_KEY 164 +# define EVP_R_EXPECTING_A_SIPHASH_KEY 175 +# define EVP_R_FIPS_MODE_NOT_SUPPORTED 167 +# define EVP_R_GET_RAW_KEY_FAILED 182 +# define EVP_R_ILLEGAL_SCRYPT_PARAMETERS 171 +# define EVP_R_INITIALIZATION_ERROR 134 +# define EVP_R_INPUT_NOT_INITIALIZED 111 +# define EVP_R_INVALID_DIGEST 152 +# define EVP_R_INVALID_FIPS_MODE 168 +# define EVP_R_INVALID_IV_LENGTH 194 +# define EVP_R_INVALID_KEY 163 +# define EVP_R_INVALID_KEY_LENGTH 130 +# define EVP_R_INVALID_OPERATION 148 +# define EVP_R_KEYGEN_FAILURE 120 +# define EVP_R_KEY_SETUP_FAILED 180 +# define EVP_R_MEMORY_LIMIT_EXCEEDED 172 +# define EVP_R_MESSAGE_DIGEST_IS_NULL 159 +# define EVP_R_METHOD_NOT_SUPPORTED 144 +# define EVP_R_MISSING_PARAMETERS 103 +# define EVP_R_NOT_XOF_OR_INVALID_LENGTH 178 +# define EVP_R_NO_CIPHER_SET 131 +# define EVP_R_NO_DEFAULT_DIGEST 158 +# define EVP_R_NO_DIGEST_SET 139 +# define EVP_R_NO_KEY_SET 154 +# define EVP_R_NO_OPERATION_SET 149 +# define EVP_R_ONLY_ONESHOT_SUPPORTED 177 +# define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +# define EVP_R_OPERATON_NOT_INITIALIZED 151 +# define EVP_R_OUTPUT_WOULD_OVERFLOW 184 +# define EVP_R_PARTIALLY_OVERLAPPING 162 +# define EVP_R_PBKDF2_ERROR 181 +# define EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED 179 +# define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 +# define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 +# define EVP_R_PUBLIC_KEY_NOT_RSA 106 +# define EVP_R_UNKNOWN_CIPHER 160 +# define EVP_R_UNKNOWN_DIGEST 161 +# define EVP_R_UNKNOWN_OPTION 169 +# define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +# define EVP_R_UNSUPPORTED_ALGORITHM 156 +# define EVP_R_UNSUPPORTED_CIPHER 107 +# define EVP_R_UNSUPPORTED_KEYLENGTH 123 +# define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 +# define EVP_R_UNSUPPORTED_KEY_SIZE 108 +# define EVP_R_UNSUPPORTED_NUMBER_OF_ROUNDS 135 +# define EVP_R_UNSUPPORTED_PRF 125 +# define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 +# define EVP_R_UNSUPPORTED_SALT_TYPE 126 +# define EVP_R_WRAP_MODE_NOT_ALLOWED 170 +# define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 +# define EVP_R_XTS_DUPLICATED_KEYS 183 + +#endif diff --git a/openSSL/win64/include/openssl/hmac.h b/openSSL/win64/include/openssl/hmac.h new file mode 100644 index 0000000..458efc1 --- /dev/null +++ b/openSSL/win64/include/openssl/hmac.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_HMAC_H +# define HEADER_HMAC_H + +# include + +# include + +# if OPENSSL_API_COMPAT < 0x10200000L +# define HMAC_MAX_MD_CBLOCK 128 /* Deprecated */ +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +size_t HMAC_size(const HMAC_CTX *e); +HMAC_CTX *HMAC_CTX_new(void); +int HMAC_CTX_reset(HMAC_CTX *ctx); +void HMAC_CTX_free(HMAC_CTX *ctx); + +DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md)) + +/*__owur*/ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md, ENGINE *impl); +/*__owur*/ int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, + size_t len); +/*__owur*/ int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, + unsigned int *len); +unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, + const unsigned char *d, size_t n, unsigned char *md, + unsigned int *md_len); +__owur int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); + +void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); +const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/win64/include/openssl/idea.h b/openSSL/win64/include/openssl/idea.h new file mode 100644 index 0000000..4334f3e --- /dev/null +++ b/openSSL/win64/include/openssl/idea.h @@ -0,0 +1,64 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_IDEA_H +# define HEADER_IDEA_H + +# include + +# ifndef OPENSSL_NO_IDEA +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned int IDEA_INT; + +# define IDEA_ENCRYPT 1 +# define IDEA_DECRYPT 0 + +# define IDEA_BLOCK 8 +# define IDEA_KEY_LENGTH 16 + +typedef struct idea_key_st { + IDEA_INT data[9][6]; +} IDEA_KEY_SCHEDULE; + +const char *IDEA_options(void); +void IDEA_ecb_encrypt(const unsigned char *in, unsigned char *out, + IDEA_KEY_SCHEDULE *ks); +void IDEA_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks); +void IDEA_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk); +void IDEA_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int enc); +void IDEA_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int *num, int enc); +void IDEA_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int *num); +void IDEA_encrypt(unsigned long *in, IDEA_KEY_SCHEDULE *ks); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define idea_options IDEA_options +# define idea_ecb_encrypt IDEA_ecb_encrypt +# define idea_set_encrypt_key IDEA_set_encrypt_key +# define idea_set_decrypt_key IDEA_set_decrypt_key +# define idea_cbc_encrypt IDEA_cbc_encrypt +# define idea_cfb64_encrypt IDEA_cfb64_encrypt +# define idea_ofb64_encrypt IDEA_ofb64_encrypt +# define idea_encrypt IDEA_encrypt +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/kdf.h b/openSSL/win64/include/openssl/kdf.h new file mode 100644 index 0000000..5abd4c3 --- /dev/null +++ b/openSSL/win64/include/openssl/kdf.h @@ -0,0 +1,97 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_KDF_H +# define HEADER_KDF_H + +# include +#ifdef __cplusplus +extern "C" { +#endif + +# define EVP_PKEY_CTRL_TLS_MD (EVP_PKEY_ALG_CTRL) +# define EVP_PKEY_CTRL_TLS_SECRET (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_TLS_SEED (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_HKDF_MD (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_HKDF_SALT (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_HKDF_KEY (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_HKDF_INFO (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_HKDF_MODE (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_PASS (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_SCRYPT_SALT (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_SCRYPT_N (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_SCRYPT_R (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_SCRYPT_P (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES (EVP_PKEY_ALG_CTRL + 13) + +# define EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND 0 +# define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY 1 +# define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY 2 + +# define EVP_PKEY_CTX_set_tls1_prf_md(pctx, md) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set1_tls1_prf_secret(pctx, sec, seclen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_SECRET, seclen, (void *)(sec)) + +# define EVP_PKEY_CTX_add1_tls1_prf_seed(pctx, seed, seedlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_SEED, seedlen, (void *)(seed)) + +# define EVP_PKEY_CTX_set_hkdf_md(pctx, md) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set1_hkdf_salt(pctx, salt, saltlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_SALT, saltlen, (void *)(salt)) + +# define EVP_PKEY_CTX_set1_hkdf_key(pctx, key, keylen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_KEY, keylen, (void *)(key)) + +# define EVP_PKEY_CTX_add1_hkdf_info(pctx, info, infolen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_INFO, infolen, (void *)(info)) + +# define EVP_PKEY_CTX_hkdf_mode(pctx, mode) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_MODE, mode, NULL) + +# define EVP_PKEY_CTX_set1_pbe_pass(pctx, pass, passlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_PASS, passlen, (void *)(pass)) + +# define EVP_PKEY_CTX_set1_scrypt_salt(pctx, salt, saltlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_SALT, saltlen, (void *)(salt)) + +# define EVP_PKEY_CTX_set_scrypt_N(pctx, n) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_N, n) + +# define EVP_PKEY_CTX_set_scrypt_r(pctx, r) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_R, r) + +# define EVP_PKEY_CTX_set_scrypt_p(pctx, p) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_P, p) + +# define EVP_PKEY_CTX_set_scrypt_maxmem_bytes(pctx, maxmem_bytes) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES, maxmem_bytes) + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/kdferr.h b/openSSL/win64/include/openssl/kdferr.h new file mode 100644 index 0000000..3f51bd0 --- /dev/null +++ b/openSSL/win64/include/openssl/kdferr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_KDFERR_H +# define HEADER_KDFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_KDF_strings(void); + +/* + * KDF function codes. + */ +# define KDF_F_PKEY_HKDF_CTRL_STR 103 +# define KDF_F_PKEY_HKDF_DERIVE 102 +# define KDF_F_PKEY_HKDF_INIT 108 +# define KDF_F_PKEY_SCRYPT_CTRL_STR 104 +# define KDF_F_PKEY_SCRYPT_CTRL_UINT64 105 +# define KDF_F_PKEY_SCRYPT_DERIVE 109 +# define KDF_F_PKEY_SCRYPT_INIT 106 +# define KDF_F_PKEY_SCRYPT_SET_MEMBUF 107 +# define KDF_F_PKEY_TLS1_PRF_CTRL_STR 100 +# define KDF_F_PKEY_TLS1_PRF_DERIVE 101 +# define KDF_F_PKEY_TLS1_PRF_INIT 110 +# define KDF_F_TLS1_PRF_ALG 111 + +/* + * KDF reason codes. + */ +# define KDF_R_INVALID_DIGEST 100 +# define KDF_R_MISSING_ITERATION_COUNT 109 +# define KDF_R_MISSING_KEY 104 +# define KDF_R_MISSING_MESSAGE_DIGEST 105 +# define KDF_R_MISSING_PARAMETER 101 +# define KDF_R_MISSING_PASS 110 +# define KDF_R_MISSING_SALT 111 +# define KDF_R_MISSING_SECRET 107 +# define KDF_R_MISSING_SEED 106 +# define KDF_R_UNKNOWN_PARAMETER_TYPE 103 +# define KDF_R_VALUE_ERROR 108 +# define KDF_R_VALUE_MISSING 102 + +#endif diff --git a/openSSL/win64/include/openssl/lhash.h b/openSSL/win64/include/openssl/lhash.h new file mode 100644 index 0000000..2e42d72 --- /dev/null +++ b/openSSL/win64/include/openssl/lhash.h @@ -0,0 +1,241 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Header for dynamic hash table routines Author - Eric Young + */ + +#ifndef HEADER_LHASH_H +# define HEADER_LHASH_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct lhash_node_st OPENSSL_LH_NODE; +typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef struct lhash_st OPENSSL_LHASH; + +/* + * Macros for declaring and implementing type-safe wrappers for LHASH + * callbacks. This way, callbacks can be provided to LHASH structures without + * function pointer casting and the macro-defined callbacks provide + * per-variable casting before deferring to the underlying type-specific + * callbacks. NB: It is possible to place a "static" in front of both the + * DECLARE and IMPLEMENT macros if the functions are strictly internal. + */ + +/* First: "hash" functions */ +# define DECLARE_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *); +# define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *arg) { \ + const o_type *a = arg; \ + return name##_hash(a); } +# define LHASH_HASH_FN(name) name##_LHASH_HASH + +/* Second: "compare" functions */ +# define DECLARE_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *, const void *); +# define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *arg1, const void *arg2) { \ + const o_type *a = arg1; \ + const o_type *b = arg2; \ + return name##_cmp(a,b); } +# define LHASH_COMP_FN(name) name##_LHASH_COMP + +/* Fourth: "doall_arg" functions */ +# define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *, void *); +# define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) { \ + o_type *a = arg1; \ + a_type *b = arg2; \ + name##_doall_arg(a, b); } +# define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG + + +# define LH_LOAD_MULT 256 + +int OPENSSL_LH_error(OPENSSL_LHASH *lh); +OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +void OPENSSL_LH_free(OPENSSL_LHASH *lh); +void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); +void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); +void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); +void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +unsigned long OPENSSL_LH_strhash(const char *c); +unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); +unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); +void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); + +# ifndef OPENSSL_NO_STDIO +void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define _LHASH OPENSSL_LHASH +# define LHASH_NODE OPENSSL_LH_NODE +# define lh_error OPENSSL_LH_error +# define lh_new OPENSSL_LH_new +# define lh_free OPENSSL_LH_free +# define lh_insert OPENSSL_LH_insert +# define lh_delete OPENSSL_LH_delete +# define lh_retrieve OPENSSL_LH_retrieve +# define lh_doall OPENSSL_LH_doall +# define lh_doall_arg OPENSSL_LH_doall_arg +# define lh_strhash OPENSSL_LH_strhash +# define lh_num_items OPENSSL_LH_num_items +# ifndef OPENSSL_NO_STDIO +# define lh_stats OPENSSL_LH_stats +# define lh_node_stats OPENSSL_LH_node_stats +# define lh_node_usage_stats OPENSSL_LH_node_usage_stats +# endif +# define lh_stats_bio OPENSSL_LH_stats_bio +# define lh_node_stats_bio OPENSSL_LH_node_stats_bio +# define lh_node_usage_stats_bio OPENSSL_LH_node_usage_stats_bio +# endif + +/* Type checking... */ + +# define LHASH_OF(type) struct lhash_st_##type + +# define DEFINE_LHASH_OF(type) \ + LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ + { \ + return (LHASH_OF(type) *) \ + OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + } \ + static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + { \ + return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + { \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + } \ + static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ + void (*doall)(type *)) \ + { \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + } \ + LHASH_OF(type) + +#define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ + int_implement_lhash_doall(type, argtype, const type) + +#define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \ + int_implement_lhash_doall(type, argtype, type) + +#define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ + void (*fn)(cbargtype *, argtype *), \ + argtype *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + } \ + LHASH_OF(type) + +DEFINE_LHASH_OF(OPENSSL_STRING); +# ifdef _MSC_VER +/* + * push and pop this warning: + * warning C4090: 'function': different 'const' qualifiers + */ +# pragma warning (push) +# pragma warning (disable: 4090) +# endif + +DEFINE_LHASH_OF(OPENSSL_CSTRING); + +# ifdef _MSC_VER +# pragma warning (pop) +# endif + +/* + * If called without higher optimization (min. -xO3) the Oracle Developer + * Studio compiler generates code for the defined (static inline) functions + * above. + * This would later lead to the linker complaining about missing symbols when + * this header file is included but the resulting object is not linked against + * the Crypto library (openssl#6912). + */ +# ifdef __SUNPRO_C +# pragma weak OPENSSL_LH_new +# pragma weak OPENSSL_LH_free +# pragma weak OPENSSL_LH_insert +# pragma weak OPENSSL_LH_delete +# pragma weak OPENSSL_LH_retrieve +# pragma weak OPENSSL_LH_error +# pragma weak OPENSSL_LH_num_items +# pragma weak OPENSSL_LH_node_stats_bio +# pragma weak OPENSSL_LH_node_usage_stats_bio +# pragma weak OPENSSL_LH_stats_bio +# pragma weak OPENSSL_LH_get_down_load +# pragma weak OPENSSL_LH_set_down_load +# pragma weak OPENSSL_LH_doall +# pragma weak OPENSSL_LH_doall_arg +# endif /* __SUNPRO_C */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/win64/include/openssl/md2.h b/openSSL/win64/include/openssl/md2.h new file mode 100644 index 0000000..7faf8e3 --- /dev/null +++ b/openSSL/win64/include/openssl/md2.h @@ -0,0 +1,44 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD2_H +# define HEADER_MD2_H + +# include + +# ifndef OPENSSL_NO_MD2 +# include +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned char MD2_INT; + +# define MD2_DIGEST_LENGTH 16 +# define MD2_BLOCK 16 + +typedef struct MD2state_st { + unsigned int num; + unsigned char data[MD2_BLOCK]; + MD2_INT cksm[MD2_BLOCK]; + MD2_INT state[MD2_BLOCK]; +} MD2_CTX; + +const char *MD2_options(void); +int MD2_Init(MD2_CTX *c); +int MD2_Update(MD2_CTX *c, const unsigned char *data, size_t len); +int MD2_Final(unsigned char *md, MD2_CTX *c); +unsigned char *MD2(const unsigned char *d, size_t n, unsigned char *md); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/md4.h b/openSSL/win64/include/openssl/md4.h new file mode 100644 index 0000000..940e29d --- /dev/null +++ b/openSSL/win64/include/openssl/md4.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD4_H +# define HEADER_MD4_H + +# include + +# ifndef OPENSSL_NO_MD4 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD4_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define MD4_LONG unsigned int + +# define MD4_CBLOCK 64 +# define MD4_LBLOCK (MD4_CBLOCK/4) +# define MD4_DIGEST_LENGTH 16 + +typedef struct MD4state_st { + MD4_LONG A, B, C, D; + MD4_LONG Nl, Nh; + MD4_LONG data[MD4_LBLOCK]; + unsigned int num; +} MD4_CTX; + +int MD4_Init(MD4_CTX *c); +int MD4_Update(MD4_CTX *c, const void *data, size_t len); +int MD4_Final(unsigned char *md, MD4_CTX *c); +unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md); +void MD4_Transform(MD4_CTX *c, const unsigned char *b); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/md5.h b/openSSL/win64/include/openssl/md5.h new file mode 100644 index 0000000..2deb772 --- /dev/null +++ b/openSSL/win64/include/openssl/md5.h @@ -0,0 +1,50 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD5_H +# define HEADER_MD5_H + +# include + +# ifndef OPENSSL_NO_MD5 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! MD5_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define MD5_LONG unsigned int + +# define MD5_CBLOCK 64 +# define MD5_LBLOCK (MD5_CBLOCK/4) +# define MD5_DIGEST_LENGTH 16 + +typedef struct MD5state_st { + MD5_LONG A, B, C, D; + MD5_LONG Nl, Nh; + MD5_LONG data[MD5_LBLOCK]; + unsigned int num; +} MD5_CTX; + +int MD5_Init(MD5_CTX *c); +int MD5_Update(MD5_CTX *c, const void *data, size_t len); +int MD5_Final(unsigned char *md, MD5_CTX *c); +unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md); +void MD5_Transform(MD5_CTX *c, const unsigned char *b); +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/mdc2.h b/openSSL/win64/include/openssl/mdc2.h new file mode 100644 index 0000000..aabd2bf --- /dev/null +++ b/openSSL/win64/include/openssl/mdc2.h @@ -0,0 +1,42 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MDC2_H +# define HEADER_MDC2_H + +# include + +#ifndef OPENSSL_NO_MDC2 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define MDC2_BLOCK 8 +# define MDC2_DIGEST_LENGTH 16 + +typedef struct mdc2_ctx_st { + unsigned int num; + unsigned char data[MDC2_BLOCK]; + DES_cblock h, hh; + int pad_type; /* either 1 or 2, default 1 */ +} MDC2_CTX; + +int MDC2_Init(MDC2_CTX *c); +int MDC2_Update(MDC2_CTX *c, const unsigned char *data, size_t len); +int MDC2_Final(unsigned char *md, MDC2_CTX *c); +unsigned char *MDC2(const unsigned char *d, size_t n, unsigned char *md); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/modes.h b/openSSL/win64/include/openssl/modes.h new file mode 100644 index 0000000..d544f98 --- /dev/null +++ b/openSSL/win64/include/openssl/modes.h @@ -0,0 +1,208 @@ +/* + * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MODES_H +# define HEADER_MODES_H + +# include + +# ifdef __cplusplus +extern "C" { +# endif +typedef void (*block128_f) (const unsigned char in[16], + unsigned char out[16], const void *key); + +typedef void (*cbc128_f) (const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int enc); + +typedef void (*ctr128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16]); + +typedef void (*ccm128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16], + unsigned char cmac[16]); + +void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); +void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); + +void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], unsigned int *num, + block128_f block); + +void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], + unsigned int *num, ctr128_f ctr); + +void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + block128_f block); + +void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out, + size_t bits, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); + +size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +typedef struct gcm128_context GCM128_CONTEXT; + +GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block); +void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block); +void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv, + size_t len); +int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx); + +typedef struct ccm128_context CCM128_CONTEXT; + +void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx, + unsigned int M, unsigned int L, void *key, + block128_f block); +int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce, + size_t nlen, size_t mlen); +void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad, + size_t alen); +int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len); + +typedef struct xts128_context XTS128_CONTEXT; + +int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, + const unsigned char iv[16], + const unsigned char *inp, unsigned char *out, + size_t len, int enc); + +size_t CRYPTO_128_wrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); + +size_t CRYPTO_128_unwrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); +size_t CRYPTO_128_wrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); +size_t CRYPTO_128_unwrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); + +# ifndef OPENSSL_NO_OCB +typedef struct ocb128_context OCB128_CONTEXT; + +typedef void (*ocb128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + size_t start_block_num, + unsigned char offset_i[16], + const unsigned char L_[][16], + unsigned char checksum[16]); + +OCB128_CONTEXT *CRYPTO_ocb128_new(void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_init(OCB128_CONTEXT *ctx, void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_copy_ctx(OCB128_CONTEXT *dest, OCB128_CONTEXT *src, + void *keyenc, void *keydec); +int CRYPTO_ocb128_setiv(OCB128_CONTEXT *ctx, const unsigned char *iv, + size_t len, size_t taglen); +int CRYPTO_ocb128_aad(OCB128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_ocb128_encrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_decrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_finish(OCB128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +int CRYPTO_ocb128_tag(OCB128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_ocb128_cleanup(OCB128_CONTEXT *ctx); +# endif /* OPENSSL_NO_OCB */ + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/openSSL/win64/include/openssl/obj_mac.h b/openSSL/win64/include/openssl/obj_mac.h new file mode 100644 index 0000000..53516a0 --- /dev/null +++ b/openSSL/win64/include/openssl/obj_mac.h @@ -0,0 +1,5198 @@ +/* + * WARNING: do not edit! + * Generated by crypto/objects/objects.pl + * + * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define SN_undef "UNDEF" +#define LN_undef "undefined" +#define NID_undef 0 +#define OBJ_undef 0L + +#define SN_itu_t "ITU-T" +#define LN_itu_t "itu-t" +#define NID_itu_t 645 +#define OBJ_itu_t 0L + +#define NID_ccitt 404 +#define OBJ_ccitt OBJ_itu_t + +#define SN_iso "ISO" +#define LN_iso "iso" +#define NID_iso 181 +#define OBJ_iso 1L + +#define SN_joint_iso_itu_t "JOINT-ISO-ITU-T" +#define LN_joint_iso_itu_t "joint-iso-itu-t" +#define NID_joint_iso_itu_t 646 +#define OBJ_joint_iso_itu_t 2L + +#define NID_joint_iso_ccitt 393 +#define OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t + +#define SN_member_body "member-body" +#define LN_member_body "ISO Member Body" +#define NID_member_body 182 +#define OBJ_member_body OBJ_iso,2L + +#define SN_identified_organization "identified-organization" +#define NID_identified_organization 676 +#define OBJ_identified_organization OBJ_iso,3L + +#define SN_hmac_md5 "HMAC-MD5" +#define LN_hmac_md5 "hmac-md5" +#define NID_hmac_md5 780 +#define OBJ_hmac_md5 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,1L + +#define SN_hmac_sha1 "HMAC-SHA1" +#define LN_hmac_sha1 "hmac-sha1" +#define NID_hmac_sha1 781 +#define OBJ_hmac_sha1 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,2L + +#define SN_x509ExtAdmission "x509ExtAdmission" +#define LN_x509ExtAdmission "Professional Information or basis for Admission" +#define NID_x509ExtAdmission 1093 +#define OBJ_x509ExtAdmission OBJ_identified_organization,36L,8L,3L,3L + +#define SN_certicom_arc "certicom-arc" +#define NID_certicom_arc 677 +#define OBJ_certicom_arc OBJ_identified_organization,132L + +#define SN_ieee "ieee" +#define NID_ieee 1170 +#define OBJ_ieee OBJ_identified_organization,111L + +#define SN_ieee_siswg "ieee-siswg" +#define LN_ieee_siswg "IEEE Security in Storage Working Group" +#define NID_ieee_siswg 1171 +#define OBJ_ieee_siswg OBJ_ieee,2L,1619L + +#define SN_international_organizations "international-organizations" +#define LN_international_organizations "International Organizations" +#define NID_international_organizations 647 +#define OBJ_international_organizations OBJ_joint_iso_itu_t,23L + +#define SN_wap "wap" +#define NID_wap 678 +#define OBJ_wap OBJ_international_organizations,43L + +#define SN_wap_wsg "wap-wsg" +#define NID_wap_wsg 679 +#define OBJ_wap_wsg OBJ_wap,1L + +#define SN_selected_attribute_types "selected-attribute-types" +#define LN_selected_attribute_types "Selected Attribute Types" +#define NID_selected_attribute_types 394 +#define OBJ_selected_attribute_types OBJ_joint_iso_itu_t,5L,1L,5L + +#define SN_clearance "clearance" +#define NID_clearance 395 +#define OBJ_clearance OBJ_selected_attribute_types,55L + +#define SN_ISO_US "ISO-US" +#define LN_ISO_US "ISO US Member Body" +#define NID_ISO_US 183 +#define OBJ_ISO_US OBJ_member_body,840L + +#define SN_X9_57 "X9-57" +#define LN_X9_57 "X9.57" +#define NID_X9_57 184 +#define OBJ_X9_57 OBJ_ISO_US,10040L + +#define SN_X9cm "X9cm" +#define LN_X9cm "X9.57 CM ?" +#define NID_X9cm 185 +#define OBJ_X9cm OBJ_X9_57,4L + +#define SN_ISO_CN "ISO-CN" +#define LN_ISO_CN "ISO CN Member Body" +#define NID_ISO_CN 1140 +#define OBJ_ISO_CN OBJ_member_body,156L + +#define SN_oscca "oscca" +#define NID_oscca 1141 +#define OBJ_oscca OBJ_ISO_CN,10197L + +#define SN_sm_scheme "sm-scheme" +#define NID_sm_scheme 1142 +#define OBJ_sm_scheme OBJ_oscca,1L + +#define SN_dsa "DSA" +#define LN_dsa "dsaEncryption" +#define NID_dsa 116 +#define OBJ_dsa OBJ_X9cm,1L + +#define SN_dsaWithSHA1 "DSA-SHA1" +#define LN_dsaWithSHA1 "dsaWithSHA1" +#define NID_dsaWithSHA1 113 +#define OBJ_dsaWithSHA1 OBJ_X9cm,3L + +#define SN_ansi_X9_62 "ansi-X9-62" +#define LN_ansi_X9_62 "ANSI X9.62" +#define NID_ansi_X9_62 405 +#define OBJ_ansi_X9_62 OBJ_ISO_US,10045L + +#define OBJ_X9_62_id_fieldType OBJ_ansi_X9_62,1L + +#define SN_X9_62_prime_field "prime-field" +#define NID_X9_62_prime_field 406 +#define OBJ_X9_62_prime_field OBJ_X9_62_id_fieldType,1L + +#define SN_X9_62_characteristic_two_field "characteristic-two-field" +#define NID_X9_62_characteristic_two_field 407 +#define OBJ_X9_62_characteristic_two_field OBJ_X9_62_id_fieldType,2L + +#define SN_X9_62_id_characteristic_two_basis "id-characteristic-two-basis" +#define NID_X9_62_id_characteristic_two_basis 680 +#define OBJ_X9_62_id_characteristic_two_basis OBJ_X9_62_characteristic_two_field,3L + +#define SN_X9_62_onBasis "onBasis" +#define NID_X9_62_onBasis 681 +#define OBJ_X9_62_onBasis OBJ_X9_62_id_characteristic_two_basis,1L + +#define SN_X9_62_tpBasis "tpBasis" +#define NID_X9_62_tpBasis 682 +#define OBJ_X9_62_tpBasis OBJ_X9_62_id_characteristic_two_basis,2L + +#define SN_X9_62_ppBasis "ppBasis" +#define NID_X9_62_ppBasis 683 +#define OBJ_X9_62_ppBasis OBJ_X9_62_id_characteristic_two_basis,3L + +#define OBJ_X9_62_id_publicKeyType OBJ_ansi_X9_62,2L + +#define SN_X9_62_id_ecPublicKey "id-ecPublicKey" +#define NID_X9_62_id_ecPublicKey 408 +#define OBJ_X9_62_id_ecPublicKey OBJ_X9_62_id_publicKeyType,1L + +#define OBJ_X9_62_ellipticCurve OBJ_ansi_X9_62,3L + +#define OBJ_X9_62_c_TwoCurve OBJ_X9_62_ellipticCurve,0L + +#define SN_X9_62_c2pnb163v1 "c2pnb163v1" +#define NID_X9_62_c2pnb163v1 684 +#define OBJ_X9_62_c2pnb163v1 OBJ_X9_62_c_TwoCurve,1L + +#define SN_X9_62_c2pnb163v2 "c2pnb163v2" +#define NID_X9_62_c2pnb163v2 685 +#define OBJ_X9_62_c2pnb163v2 OBJ_X9_62_c_TwoCurve,2L + +#define SN_X9_62_c2pnb163v3 "c2pnb163v3" +#define NID_X9_62_c2pnb163v3 686 +#define OBJ_X9_62_c2pnb163v3 OBJ_X9_62_c_TwoCurve,3L + +#define SN_X9_62_c2pnb176v1 "c2pnb176v1" +#define NID_X9_62_c2pnb176v1 687 +#define OBJ_X9_62_c2pnb176v1 OBJ_X9_62_c_TwoCurve,4L + +#define SN_X9_62_c2tnb191v1 "c2tnb191v1" +#define NID_X9_62_c2tnb191v1 688 +#define OBJ_X9_62_c2tnb191v1 OBJ_X9_62_c_TwoCurve,5L + +#define SN_X9_62_c2tnb191v2 "c2tnb191v2" +#define NID_X9_62_c2tnb191v2 689 +#define OBJ_X9_62_c2tnb191v2 OBJ_X9_62_c_TwoCurve,6L + +#define SN_X9_62_c2tnb191v3 "c2tnb191v3" +#define NID_X9_62_c2tnb191v3 690 +#define OBJ_X9_62_c2tnb191v3 OBJ_X9_62_c_TwoCurve,7L + +#define SN_X9_62_c2onb191v4 "c2onb191v4" +#define NID_X9_62_c2onb191v4 691 +#define OBJ_X9_62_c2onb191v4 OBJ_X9_62_c_TwoCurve,8L + +#define SN_X9_62_c2onb191v5 "c2onb191v5" +#define NID_X9_62_c2onb191v5 692 +#define OBJ_X9_62_c2onb191v5 OBJ_X9_62_c_TwoCurve,9L + +#define SN_X9_62_c2pnb208w1 "c2pnb208w1" +#define NID_X9_62_c2pnb208w1 693 +#define OBJ_X9_62_c2pnb208w1 OBJ_X9_62_c_TwoCurve,10L + +#define SN_X9_62_c2tnb239v1 "c2tnb239v1" +#define NID_X9_62_c2tnb239v1 694 +#define OBJ_X9_62_c2tnb239v1 OBJ_X9_62_c_TwoCurve,11L + +#define SN_X9_62_c2tnb239v2 "c2tnb239v2" +#define NID_X9_62_c2tnb239v2 695 +#define OBJ_X9_62_c2tnb239v2 OBJ_X9_62_c_TwoCurve,12L + +#define SN_X9_62_c2tnb239v3 "c2tnb239v3" +#define NID_X9_62_c2tnb239v3 696 +#define OBJ_X9_62_c2tnb239v3 OBJ_X9_62_c_TwoCurve,13L + +#define SN_X9_62_c2onb239v4 "c2onb239v4" +#define NID_X9_62_c2onb239v4 697 +#define OBJ_X9_62_c2onb239v4 OBJ_X9_62_c_TwoCurve,14L + +#define SN_X9_62_c2onb239v5 "c2onb239v5" +#define NID_X9_62_c2onb239v5 698 +#define OBJ_X9_62_c2onb239v5 OBJ_X9_62_c_TwoCurve,15L + +#define SN_X9_62_c2pnb272w1 "c2pnb272w1" +#define NID_X9_62_c2pnb272w1 699 +#define OBJ_X9_62_c2pnb272w1 OBJ_X9_62_c_TwoCurve,16L + +#define SN_X9_62_c2pnb304w1 "c2pnb304w1" +#define NID_X9_62_c2pnb304w1 700 +#define OBJ_X9_62_c2pnb304w1 OBJ_X9_62_c_TwoCurve,17L + +#define SN_X9_62_c2tnb359v1 "c2tnb359v1" +#define NID_X9_62_c2tnb359v1 701 +#define OBJ_X9_62_c2tnb359v1 OBJ_X9_62_c_TwoCurve,18L + +#define SN_X9_62_c2pnb368w1 "c2pnb368w1" +#define NID_X9_62_c2pnb368w1 702 +#define OBJ_X9_62_c2pnb368w1 OBJ_X9_62_c_TwoCurve,19L + +#define SN_X9_62_c2tnb431r1 "c2tnb431r1" +#define NID_X9_62_c2tnb431r1 703 +#define OBJ_X9_62_c2tnb431r1 OBJ_X9_62_c_TwoCurve,20L + +#define OBJ_X9_62_primeCurve OBJ_X9_62_ellipticCurve,1L + +#define SN_X9_62_prime192v1 "prime192v1" +#define NID_X9_62_prime192v1 409 +#define OBJ_X9_62_prime192v1 OBJ_X9_62_primeCurve,1L + +#define SN_X9_62_prime192v2 "prime192v2" +#define NID_X9_62_prime192v2 410 +#define OBJ_X9_62_prime192v2 OBJ_X9_62_primeCurve,2L + +#define SN_X9_62_prime192v3 "prime192v3" +#define NID_X9_62_prime192v3 411 +#define OBJ_X9_62_prime192v3 OBJ_X9_62_primeCurve,3L + +#define SN_X9_62_prime239v1 "prime239v1" +#define NID_X9_62_prime239v1 412 +#define OBJ_X9_62_prime239v1 OBJ_X9_62_primeCurve,4L + +#define SN_X9_62_prime239v2 "prime239v2" +#define NID_X9_62_prime239v2 413 +#define OBJ_X9_62_prime239v2 OBJ_X9_62_primeCurve,5L + +#define SN_X9_62_prime239v3 "prime239v3" +#define NID_X9_62_prime239v3 414 +#define OBJ_X9_62_prime239v3 OBJ_X9_62_primeCurve,6L + +#define SN_X9_62_prime256v1 "prime256v1" +#define NID_X9_62_prime256v1 415 +#define OBJ_X9_62_prime256v1 OBJ_X9_62_primeCurve,7L + +#define OBJ_X9_62_id_ecSigType OBJ_ansi_X9_62,4L + +#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1" +#define NID_ecdsa_with_SHA1 416 +#define OBJ_ecdsa_with_SHA1 OBJ_X9_62_id_ecSigType,1L + +#define SN_ecdsa_with_Recommended "ecdsa-with-Recommended" +#define NID_ecdsa_with_Recommended 791 +#define OBJ_ecdsa_with_Recommended OBJ_X9_62_id_ecSigType,2L + +#define SN_ecdsa_with_Specified "ecdsa-with-Specified" +#define NID_ecdsa_with_Specified 792 +#define OBJ_ecdsa_with_Specified OBJ_X9_62_id_ecSigType,3L + +#define SN_ecdsa_with_SHA224 "ecdsa-with-SHA224" +#define NID_ecdsa_with_SHA224 793 +#define OBJ_ecdsa_with_SHA224 OBJ_ecdsa_with_Specified,1L + +#define SN_ecdsa_with_SHA256 "ecdsa-with-SHA256" +#define NID_ecdsa_with_SHA256 794 +#define OBJ_ecdsa_with_SHA256 OBJ_ecdsa_with_Specified,2L + +#define SN_ecdsa_with_SHA384 "ecdsa-with-SHA384" +#define NID_ecdsa_with_SHA384 795 +#define OBJ_ecdsa_with_SHA384 OBJ_ecdsa_with_Specified,3L + +#define SN_ecdsa_with_SHA512 "ecdsa-with-SHA512" +#define NID_ecdsa_with_SHA512 796 +#define OBJ_ecdsa_with_SHA512 OBJ_ecdsa_with_Specified,4L + +#define OBJ_secg_ellipticCurve OBJ_certicom_arc,0L + +#define SN_secp112r1 "secp112r1" +#define NID_secp112r1 704 +#define OBJ_secp112r1 OBJ_secg_ellipticCurve,6L + +#define SN_secp112r2 "secp112r2" +#define NID_secp112r2 705 +#define OBJ_secp112r2 OBJ_secg_ellipticCurve,7L + +#define SN_secp128r1 "secp128r1" +#define NID_secp128r1 706 +#define OBJ_secp128r1 OBJ_secg_ellipticCurve,28L + +#define SN_secp128r2 "secp128r2" +#define NID_secp128r2 707 +#define OBJ_secp128r2 OBJ_secg_ellipticCurve,29L + +#define SN_secp160k1 "secp160k1" +#define NID_secp160k1 708 +#define OBJ_secp160k1 OBJ_secg_ellipticCurve,9L + +#define SN_secp160r1 "secp160r1" +#define NID_secp160r1 709 +#define OBJ_secp160r1 OBJ_secg_ellipticCurve,8L + +#define SN_secp160r2 "secp160r2" +#define NID_secp160r2 710 +#define OBJ_secp160r2 OBJ_secg_ellipticCurve,30L + +#define SN_secp192k1 "secp192k1" +#define NID_secp192k1 711 +#define OBJ_secp192k1 OBJ_secg_ellipticCurve,31L + +#define SN_secp224k1 "secp224k1" +#define NID_secp224k1 712 +#define OBJ_secp224k1 OBJ_secg_ellipticCurve,32L + +#define SN_secp224r1 "secp224r1" +#define NID_secp224r1 713 +#define OBJ_secp224r1 OBJ_secg_ellipticCurve,33L + +#define SN_secp256k1 "secp256k1" +#define NID_secp256k1 714 +#define OBJ_secp256k1 OBJ_secg_ellipticCurve,10L + +#define SN_secp384r1 "secp384r1" +#define NID_secp384r1 715 +#define OBJ_secp384r1 OBJ_secg_ellipticCurve,34L + +#define SN_secp521r1 "secp521r1" +#define NID_secp521r1 716 +#define OBJ_secp521r1 OBJ_secg_ellipticCurve,35L + +#define SN_sect113r1 "sect113r1" +#define NID_sect113r1 717 +#define OBJ_sect113r1 OBJ_secg_ellipticCurve,4L + +#define SN_sect113r2 "sect113r2" +#define NID_sect113r2 718 +#define OBJ_sect113r2 OBJ_secg_ellipticCurve,5L + +#define SN_sect131r1 "sect131r1" +#define NID_sect131r1 719 +#define OBJ_sect131r1 OBJ_secg_ellipticCurve,22L + +#define SN_sect131r2 "sect131r2" +#define NID_sect131r2 720 +#define OBJ_sect131r2 OBJ_secg_ellipticCurve,23L + +#define SN_sect163k1 "sect163k1" +#define NID_sect163k1 721 +#define OBJ_sect163k1 OBJ_secg_ellipticCurve,1L + +#define SN_sect163r1 "sect163r1" +#define NID_sect163r1 722 +#define OBJ_sect163r1 OBJ_secg_ellipticCurve,2L + +#define SN_sect163r2 "sect163r2" +#define NID_sect163r2 723 +#define OBJ_sect163r2 OBJ_secg_ellipticCurve,15L + +#define SN_sect193r1 "sect193r1" +#define NID_sect193r1 724 +#define OBJ_sect193r1 OBJ_secg_ellipticCurve,24L + +#define SN_sect193r2 "sect193r2" +#define NID_sect193r2 725 +#define OBJ_sect193r2 OBJ_secg_ellipticCurve,25L + +#define SN_sect233k1 "sect233k1" +#define NID_sect233k1 726 +#define OBJ_sect233k1 OBJ_secg_ellipticCurve,26L + +#define SN_sect233r1 "sect233r1" +#define NID_sect233r1 727 +#define OBJ_sect233r1 OBJ_secg_ellipticCurve,27L + +#define SN_sect239k1 "sect239k1" +#define NID_sect239k1 728 +#define OBJ_sect239k1 OBJ_secg_ellipticCurve,3L + +#define SN_sect283k1 "sect283k1" +#define NID_sect283k1 729 +#define OBJ_sect283k1 OBJ_secg_ellipticCurve,16L + +#define SN_sect283r1 "sect283r1" +#define NID_sect283r1 730 +#define OBJ_sect283r1 OBJ_secg_ellipticCurve,17L + +#define SN_sect409k1 "sect409k1" +#define NID_sect409k1 731 +#define OBJ_sect409k1 OBJ_secg_ellipticCurve,36L + +#define SN_sect409r1 "sect409r1" +#define NID_sect409r1 732 +#define OBJ_sect409r1 OBJ_secg_ellipticCurve,37L + +#define SN_sect571k1 "sect571k1" +#define NID_sect571k1 733 +#define OBJ_sect571k1 OBJ_secg_ellipticCurve,38L + +#define SN_sect571r1 "sect571r1" +#define NID_sect571r1 734 +#define OBJ_sect571r1 OBJ_secg_ellipticCurve,39L + +#define OBJ_wap_wsg_idm_ecid OBJ_wap_wsg,4L + +#define SN_wap_wsg_idm_ecid_wtls1 "wap-wsg-idm-ecid-wtls1" +#define NID_wap_wsg_idm_ecid_wtls1 735 +#define OBJ_wap_wsg_idm_ecid_wtls1 OBJ_wap_wsg_idm_ecid,1L + +#define SN_wap_wsg_idm_ecid_wtls3 "wap-wsg-idm-ecid-wtls3" +#define NID_wap_wsg_idm_ecid_wtls3 736 +#define OBJ_wap_wsg_idm_ecid_wtls3 OBJ_wap_wsg_idm_ecid,3L + +#define SN_wap_wsg_idm_ecid_wtls4 "wap-wsg-idm-ecid-wtls4" +#define NID_wap_wsg_idm_ecid_wtls4 737 +#define OBJ_wap_wsg_idm_ecid_wtls4 OBJ_wap_wsg_idm_ecid,4L + +#define SN_wap_wsg_idm_ecid_wtls5 "wap-wsg-idm-ecid-wtls5" +#define NID_wap_wsg_idm_ecid_wtls5 738 +#define OBJ_wap_wsg_idm_ecid_wtls5 OBJ_wap_wsg_idm_ecid,5L + +#define SN_wap_wsg_idm_ecid_wtls6 "wap-wsg-idm-ecid-wtls6" +#define NID_wap_wsg_idm_ecid_wtls6 739 +#define OBJ_wap_wsg_idm_ecid_wtls6 OBJ_wap_wsg_idm_ecid,6L + +#define SN_wap_wsg_idm_ecid_wtls7 "wap-wsg-idm-ecid-wtls7" +#define NID_wap_wsg_idm_ecid_wtls7 740 +#define OBJ_wap_wsg_idm_ecid_wtls7 OBJ_wap_wsg_idm_ecid,7L + +#define SN_wap_wsg_idm_ecid_wtls8 "wap-wsg-idm-ecid-wtls8" +#define NID_wap_wsg_idm_ecid_wtls8 741 +#define OBJ_wap_wsg_idm_ecid_wtls8 OBJ_wap_wsg_idm_ecid,8L + +#define SN_wap_wsg_idm_ecid_wtls9 "wap-wsg-idm-ecid-wtls9" +#define NID_wap_wsg_idm_ecid_wtls9 742 +#define OBJ_wap_wsg_idm_ecid_wtls9 OBJ_wap_wsg_idm_ecid,9L + +#define SN_wap_wsg_idm_ecid_wtls10 "wap-wsg-idm-ecid-wtls10" +#define NID_wap_wsg_idm_ecid_wtls10 743 +#define OBJ_wap_wsg_idm_ecid_wtls10 OBJ_wap_wsg_idm_ecid,10L + +#define SN_wap_wsg_idm_ecid_wtls11 "wap-wsg-idm-ecid-wtls11" +#define NID_wap_wsg_idm_ecid_wtls11 744 +#define OBJ_wap_wsg_idm_ecid_wtls11 OBJ_wap_wsg_idm_ecid,11L + +#define SN_wap_wsg_idm_ecid_wtls12 "wap-wsg-idm-ecid-wtls12" +#define NID_wap_wsg_idm_ecid_wtls12 745 +#define OBJ_wap_wsg_idm_ecid_wtls12 OBJ_wap_wsg_idm_ecid,12L + +#define SN_cast5_cbc "CAST5-CBC" +#define LN_cast5_cbc "cast5-cbc" +#define NID_cast5_cbc 108 +#define OBJ_cast5_cbc OBJ_ISO_US,113533L,7L,66L,10L + +#define SN_cast5_ecb "CAST5-ECB" +#define LN_cast5_ecb "cast5-ecb" +#define NID_cast5_ecb 109 + +#define SN_cast5_cfb64 "CAST5-CFB" +#define LN_cast5_cfb64 "cast5-cfb" +#define NID_cast5_cfb64 110 + +#define SN_cast5_ofb64 "CAST5-OFB" +#define LN_cast5_ofb64 "cast5-ofb" +#define NID_cast5_ofb64 111 + +#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" +#define NID_pbeWithMD5AndCast5_CBC 112 +#define OBJ_pbeWithMD5AndCast5_CBC OBJ_ISO_US,113533L,7L,66L,12L + +#define SN_id_PasswordBasedMAC "id-PasswordBasedMAC" +#define LN_id_PasswordBasedMAC "password based MAC" +#define NID_id_PasswordBasedMAC 782 +#define OBJ_id_PasswordBasedMAC OBJ_ISO_US,113533L,7L,66L,13L + +#define SN_id_DHBasedMac "id-DHBasedMac" +#define LN_id_DHBasedMac "Diffie-Hellman based MAC" +#define NID_id_DHBasedMac 783 +#define OBJ_id_DHBasedMac OBJ_ISO_US,113533L,7L,66L,30L + +#define SN_rsadsi "rsadsi" +#define LN_rsadsi "RSA Data Security, Inc." +#define NID_rsadsi 1 +#define OBJ_rsadsi OBJ_ISO_US,113549L + +#define SN_pkcs "pkcs" +#define LN_pkcs "RSA Data Security, Inc. PKCS" +#define NID_pkcs 2 +#define OBJ_pkcs OBJ_rsadsi,1L + +#define SN_pkcs1 "pkcs1" +#define NID_pkcs1 186 +#define OBJ_pkcs1 OBJ_pkcs,1L + +#define LN_rsaEncryption "rsaEncryption" +#define NID_rsaEncryption 6 +#define OBJ_rsaEncryption OBJ_pkcs1,1L + +#define SN_md2WithRSAEncryption "RSA-MD2" +#define LN_md2WithRSAEncryption "md2WithRSAEncryption" +#define NID_md2WithRSAEncryption 7 +#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L + +#define SN_md4WithRSAEncryption "RSA-MD4" +#define LN_md4WithRSAEncryption "md4WithRSAEncryption" +#define NID_md4WithRSAEncryption 396 +#define OBJ_md4WithRSAEncryption OBJ_pkcs1,3L + +#define SN_md5WithRSAEncryption "RSA-MD5" +#define LN_md5WithRSAEncryption "md5WithRSAEncryption" +#define NID_md5WithRSAEncryption 8 +#define OBJ_md5WithRSAEncryption OBJ_pkcs1,4L + +#define SN_sha1WithRSAEncryption "RSA-SHA1" +#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" +#define NID_sha1WithRSAEncryption 65 +#define OBJ_sha1WithRSAEncryption OBJ_pkcs1,5L + +#define SN_rsaesOaep "RSAES-OAEP" +#define LN_rsaesOaep "rsaesOaep" +#define NID_rsaesOaep 919 +#define OBJ_rsaesOaep OBJ_pkcs1,7L + +#define SN_mgf1 "MGF1" +#define LN_mgf1 "mgf1" +#define NID_mgf1 911 +#define OBJ_mgf1 OBJ_pkcs1,8L + +#define SN_pSpecified "PSPECIFIED" +#define LN_pSpecified "pSpecified" +#define NID_pSpecified 935 +#define OBJ_pSpecified OBJ_pkcs1,9L + +#define SN_rsassaPss "RSASSA-PSS" +#define LN_rsassaPss "rsassaPss" +#define NID_rsassaPss 912 +#define OBJ_rsassaPss OBJ_pkcs1,10L + +#define SN_sha256WithRSAEncryption "RSA-SHA256" +#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption" +#define NID_sha256WithRSAEncryption 668 +#define OBJ_sha256WithRSAEncryption OBJ_pkcs1,11L + +#define SN_sha384WithRSAEncryption "RSA-SHA384" +#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption" +#define NID_sha384WithRSAEncryption 669 +#define OBJ_sha384WithRSAEncryption OBJ_pkcs1,12L + +#define SN_sha512WithRSAEncryption "RSA-SHA512" +#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption" +#define NID_sha512WithRSAEncryption 670 +#define OBJ_sha512WithRSAEncryption OBJ_pkcs1,13L + +#define SN_sha224WithRSAEncryption "RSA-SHA224" +#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption" +#define NID_sha224WithRSAEncryption 671 +#define OBJ_sha224WithRSAEncryption OBJ_pkcs1,14L + +#define SN_sha512_224WithRSAEncryption "RSA-SHA512/224" +#define LN_sha512_224WithRSAEncryption "sha512-224WithRSAEncryption" +#define NID_sha512_224WithRSAEncryption 1145 +#define OBJ_sha512_224WithRSAEncryption OBJ_pkcs1,15L + +#define SN_sha512_256WithRSAEncryption "RSA-SHA512/256" +#define LN_sha512_256WithRSAEncryption "sha512-256WithRSAEncryption" +#define NID_sha512_256WithRSAEncryption 1146 +#define OBJ_sha512_256WithRSAEncryption OBJ_pkcs1,16L + +#define SN_pkcs3 "pkcs3" +#define NID_pkcs3 27 +#define OBJ_pkcs3 OBJ_pkcs,3L + +#define LN_dhKeyAgreement "dhKeyAgreement" +#define NID_dhKeyAgreement 28 +#define OBJ_dhKeyAgreement OBJ_pkcs3,1L + +#define SN_pkcs5 "pkcs5" +#define NID_pkcs5 187 +#define OBJ_pkcs5 OBJ_pkcs,5L + +#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" +#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" +#define NID_pbeWithMD2AndDES_CBC 9 +#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs5,1L + +#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" +#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" +#define NID_pbeWithMD5AndDES_CBC 10 +#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs5,3L + +#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" +#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" +#define NID_pbeWithMD2AndRC2_CBC 168 +#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs5,4L + +#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" +#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" +#define NID_pbeWithMD5AndRC2_CBC 169 +#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs5,6L + +#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" +#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" +#define NID_pbeWithSHA1AndDES_CBC 170 +#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs5,10L + +#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" +#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" +#define NID_pbeWithSHA1AndRC2_CBC 68 +#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs5,11L + +#define LN_id_pbkdf2 "PBKDF2" +#define NID_id_pbkdf2 69 +#define OBJ_id_pbkdf2 OBJ_pkcs5,12L + +#define LN_pbes2 "PBES2" +#define NID_pbes2 161 +#define OBJ_pbes2 OBJ_pkcs5,13L + +#define LN_pbmac1 "PBMAC1" +#define NID_pbmac1 162 +#define OBJ_pbmac1 OBJ_pkcs5,14L + +#define SN_pkcs7 "pkcs7" +#define NID_pkcs7 20 +#define OBJ_pkcs7 OBJ_pkcs,7L + +#define LN_pkcs7_data "pkcs7-data" +#define NID_pkcs7_data 21 +#define OBJ_pkcs7_data OBJ_pkcs7,1L + +#define LN_pkcs7_signed "pkcs7-signedData" +#define NID_pkcs7_signed 22 +#define OBJ_pkcs7_signed OBJ_pkcs7,2L + +#define LN_pkcs7_enveloped "pkcs7-envelopedData" +#define NID_pkcs7_enveloped 23 +#define OBJ_pkcs7_enveloped OBJ_pkcs7,3L + +#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" +#define NID_pkcs7_signedAndEnveloped 24 +#define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L + +#define LN_pkcs7_digest "pkcs7-digestData" +#define NID_pkcs7_digest 25 +#define OBJ_pkcs7_digest OBJ_pkcs7,5L + +#define LN_pkcs7_encrypted "pkcs7-encryptedData" +#define NID_pkcs7_encrypted 26 +#define OBJ_pkcs7_encrypted OBJ_pkcs7,6L + +#define SN_pkcs9 "pkcs9" +#define NID_pkcs9 47 +#define OBJ_pkcs9 OBJ_pkcs,9L + +#define LN_pkcs9_emailAddress "emailAddress" +#define NID_pkcs9_emailAddress 48 +#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L + +#define LN_pkcs9_unstructuredName "unstructuredName" +#define NID_pkcs9_unstructuredName 49 +#define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L + +#define LN_pkcs9_contentType "contentType" +#define NID_pkcs9_contentType 50 +#define OBJ_pkcs9_contentType OBJ_pkcs9,3L + +#define LN_pkcs9_messageDigest "messageDigest" +#define NID_pkcs9_messageDigest 51 +#define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L + +#define LN_pkcs9_signingTime "signingTime" +#define NID_pkcs9_signingTime 52 +#define OBJ_pkcs9_signingTime OBJ_pkcs9,5L + +#define LN_pkcs9_countersignature "countersignature" +#define NID_pkcs9_countersignature 53 +#define OBJ_pkcs9_countersignature OBJ_pkcs9,6L + +#define LN_pkcs9_challengePassword "challengePassword" +#define NID_pkcs9_challengePassword 54 +#define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L + +#define LN_pkcs9_unstructuredAddress "unstructuredAddress" +#define NID_pkcs9_unstructuredAddress 55 +#define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L + +#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" +#define NID_pkcs9_extCertAttributes 56 +#define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L + +#define SN_ext_req "extReq" +#define LN_ext_req "Extension Request" +#define NID_ext_req 172 +#define OBJ_ext_req OBJ_pkcs9,14L + +#define SN_SMIMECapabilities "SMIME-CAPS" +#define LN_SMIMECapabilities "S/MIME Capabilities" +#define NID_SMIMECapabilities 167 +#define OBJ_SMIMECapabilities OBJ_pkcs9,15L + +#define SN_SMIME "SMIME" +#define LN_SMIME "S/MIME" +#define NID_SMIME 188 +#define OBJ_SMIME OBJ_pkcs9,16L + +#define SN_id_smime_mod "id-smime-mod" +#define NID_id_smime_mod 189 +#define OBJ_id_smime_mod OBJ_SMIME,0L + +#define SN_id_smime_ct "id-smime-ct" +#define NID_id_smime_ct 190 +#define OBJ_id_smime_ct OBJ_SMIME,1L + +#define SN_id_smime_aa "id-smime-aa" +#define NID_id_smime_aa 191 +#define OBJ_id_smime_aa OBJ_SMIME,2L + +#define SN_id_smime_alg "id-smime-alg" +#define NID_id_smime_alg 192 +#define OBJ_id_smime_alg OBJ_SMIME,3L + +#define SN_id_smime_cd "id-smime-cd" +#define NID_id_smime_cd 193 +#define OBJ_id_smime_cd OBJ_SMIME,4L + +#define SN_id_smime_spq "id-smime-spq" +#define NID_id_smime_spq 194 +#define OBJ_id_smime_spq OBJ_SMIME,5L + +#define SN_id_smime_cti "id-smime-cti" +#define NID_id_smime_cti 195 +#define OBJ_id_smime_cti OBJ_SMIME,6L + +#define SN_id_smime_mod_cms "id-smime-mod-cms" +#define NID_id_smime_mod_cms 196 +#define OBJ_id_smime_mod_cms OBJ_id_smime_mod,1L + +#define SN_id_smime_mod_ess "id-smime-mod-ess" +#define NID_id_smime_mod_ess 197 +#define OBJ_id_smime_mod_ess OBJ_id_smime_mod,2L + +#define SN_id_smime_mod_oid "id-smime-mod-oid" +#define NID_id_smime_mod_oid 198 +#define OBJ_id_smime_mod_oid OBJ_id_smime_mod,3L + +#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3" +#define NID_id_smime_mod_msg_v3 199 +#define OBJ_id_smime_mod_msg_v3 OBJ_id_smime_mod,4L + +#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88" +#define NID_id_smime_mod_ets_eSignature_88 200 +#define OBJ_id_smime_mod_ets_eSignature_88 OBJ_id_smime_mod,5L + +#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97" +#define NID_id_smime_mod_ets_eSignature_97 201 +#define OBJ_id_smime_mod_ets_eSignature_97 OBJ_id_smime_mod,6L + +#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88" +#define NID_id_smime_mod_ets_eSigPolicy_88 202 +#define OBJ_id_smime_mod_ets_eSigPolicy_88 OBJ_id_smime_mod,7L + +#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97" +#define NID_id_smime_mod_ets_eSigPolicy_97 203 +#define OBJ_id_smime_mod_ets_eSigPolicy_97 OBJ_id_smime_mod,8L + +#define SN_id_smime_ct_receipt "id-smime-ct-receipt" +#define NID_id_smime_ct_receipt 204 +#define OBJ_id_smime_ct_receipt OBJ_id_smime_ct,1L + +#define SN_id_smime_ct_authData "id-smime-ct-authData" +#define NID_id_smime_ct_authData 205 +#define OBJ_id_smime_ct_authData OBJ_id_smime_ct,2L + +#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert" +#define NID_id_smime_ct_publishCert 206 +#define OBJ_id_smime_ct_publishCert OBJ_id_smime_ct,3L + +#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo" +#define NID_id_smime_ct_TSTInfo 207 +#define OBJ_id_smime_ct_TSTInfo OBJ_id_smime_ct,4L + +#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo" +#define NID_id_smime_ct_TDTInfo 208 +#define OBJ_id_smime_ct_TDTInfo OBJ_id_smime_ct,5L + +#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo" +#define NID_id_smime_ct_contentInfo 209 +#define OBJ_id_smime_ct_contentInfo OBJ_id_smime_ct,6L + +#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData" +#define NID_id_smime_ct_DVCSRequestData 210 +#define OBJ_id_smime_ct_DVCSRequestData OBJ_id_smime_ct,7L + +#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData" +#define NID_id_smime_ct_DVCSResponseData 211 +#define OBJ_id_smime_ct_DVCSResponseData OBJ_id_smime_ct,8L + +#define SN_id_smime_ct_compressedData "id-smime-ct-compressedData" +#define NID_id_smime_ct_compressedData 786 +#define OBJ_id_smime_ct_compressedData OBJ_id_smime_ct,9L + +#define SN_id_smime_ct_contentCollection "id-smime-ct-contentCollection" +#define NID_id_smime_ct_contentCollection 1058 +#define OBJ_id_smime_ct_contentCollection OBJ_id_smime_ct,19L + +#define SN_id_smime_ct_authEnvelopedData "id-smime-ct-authEnvelopedData" +#define NID_id_smime_ct_authEnvelopedData 1059 +#define OBJ_id_smime_ct_authEnvelopedData OBJ_id_smime_ct,23L + +#define SN_id_ct_asciiTextWithCRLF "id-ct-asciiTextWithCRLF" +#define NID_id_ct_asciiTextWithCRLF 787 +#define OBJ_id_ct_asciiTextWithCRLF OBJ_id_smime_ct,27L + +#define SN_id_ct_xml "id-ct-xml" +#define NID_id_ct_xml 1060 +#define OBJ_id_ct_xml OBJ_id_smime_ct,28L + +#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" +#define NID_id_smime_aa_receiptRequest 212 +#define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L + +#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel" +#define NID_id_smime_aa_securityLabel 213 +#define OBJ_id_smime_aa_securityLabel OBJ_id_smime_aa,2L + +#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory" +#define NID_id_smime_aa_mlExpandHistory 214 +#define OBJ_id_smime_aa_mlExpandHistory OBJ_id_smime_aa,3L + +#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint" +#define NID_id_smime_aa_contentHint 215 +#define OBJ_id_smime_aa_contentHint OBJ_id_smime_aa,4L + +#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest" +#define NID_id_smime_aa_msgSigDigest 216 +#define OBJ_id_smime_aa_msgSigDigest OBJ_id_smime_aa,5L + +#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType" +#define NID_id_smime_aa_encapContentType 217 +#define OBJ_id_smime_aa_encapContentType OBJ_id_smime_aa,6L + +#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier" +#define NID_id_smime_aa_contentIdentifier 218 +#define OBJ_id_smime_aa_contentIdentifier OBJ_id_smime_aa,7L + +#define SN_id_smime_aa_macValue "id-smime-aa-macValue" +#define NID_id_smime_aa_macValue 219 +#define OBJ_id_smime_aa_macValue OBJ_id_smime_aa,8L + +#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels" +#define NID_id_smime_aa_equivalentLabels 220 +#define OBJ_id_smime_aa_equivalentLabels OBJ_id_smime_aa,9L + +#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference" +#define NID_id_smime_aa_contentReference 221 +#define OBJ_id_smime_aa_contentReference OBJ_id_smime_aa,10L + +#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref" +#define NID_id_smime_aa_encrypKeyPref 222 +#define OBJ_id_smime_aa_encrypKeyPref OBJ_id_smime_aa,11L + +#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate" +#define NID_id_smime_aa_signingCertificate 223 +#define OBJ_id_smime_aa_signingCertificate OBJ_id_smime_aa,12L + +#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts" +#define NID_id_smime_aa_smimeEncryptCerts 224 +#define OBJ_id_smime_aa_smimeEncryptCerts OBJ_id_smime_aa,13L + +#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken" +#define NID_id_smime_aa_timeStampToken 225 +#define OBJ_id_smime_aa_timeStampToken OBJ_id_smime_aa,14L + +#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId" +#define NID_id_smime_aa_ets_sigPolicyId 226 +#define OBJ_id_smime_aa_ets_sigPolicyId OBJ_id_smime_aa,15L + +#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType" +#define NID_id_smime_aa_ets_commitmentType 227 +#define OBJ_id_smime_aa_ets_commitmentType OBJ_id_smime_aa,16L + +#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation" +#define NID_id_smime_aa_ets_signerLocation 228 +#define OBJ_id_smime_aa_ets_signerLocation OBJ_id_smime_aa,17L + +#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr" +#define NID_id_smime_aa_ets_signerAttr 229 +#define OBJ_id_smime_aa_ets_signerAttr OBJ_id_smime_aa,18L + +#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert" +#define NID_id_smime_aa_ets_otherSigCert 230 +#define OBJ_id_smime_aa_ets_otherSigCert OBJ_id_smime_aa,19L + +#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp" +#define NID_id_smime_aa_ets_contentTimestamp 231 +#define OBJ_id_smime_aa_ets_contentTimestamp OBJ_id_smime_aa,20L + +#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs" +#define NID_id_smime_aa_ets_CertificateRefs 232 +#define OBJ_id_smime_aa_ets_CertificateRefs OBJ_id_smime_aa,21L + +#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs" +#define NID_id_smime_aa_ets_RevocationRefs 233 +#define OBJ_id_smime_aa_ets_RevocationRefs OBJ_id_smime_aa,22L + +#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues" +#define NID_id_smime_aa_ets_certValues 234 +#define OBJ_id_smime_aa_ets_certValues OBJ_id_smime_aa,23L + +#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues" +#define NID_id_smime_aa_ets_revocationValues 235 +#define OBJ_id_smime_aa_ets_revocationValues OBJ_id_smime_aa,24L + +#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp" +#define NID_id_smime_aa_ets_escTimeStamp 236 +#define OBJ_id_smime_aa_ets_escTimeStamp OBJ_id_smime_aa,25L + +#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp" +#define NID_id_smime_aa_ets_certCRLTimestamp 237 +#define OBJ_id_smime_aa_ets_certCRLTimestamp OBJ_id_smime_aa,26L + +#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp" +#define NID_id_smime_aa_ets_archiveTimeStamp 238 +#define OBJ_id_smime_aa_ets_archiveTimeStamp OBJ_id_smime_aa,27L + +#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType" +#define NID_id_smime_aa_signatureType 239 +#define OBJ_id_smime_aa_signatureType OBJ_id_smime_aa,28L + +#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc" +#define NID_id_smime_aa_dvcs_dvc 240 +#define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L + +#define SN_id_smime_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" +#define NID_id_smime_aa_signingCertificateV2 1086 +#define OBJ_id_smime_aa_signingCertificateV2 OBJ_id_smime_aa,47L + +#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" +#define NID_id_smime_alg_ESDHwith3DES 241 +#define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L + +#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2" +#define NID_id_smime_alg_ESDHwithRC2 242 +#define OBJ_id_smime_alg_ESDHwithRC2 OBJ_id_smime_alg,2L + +#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap" +#define NID_id_smime_alg_3DESwrap 243 +#define OBJ_id_smime_alg_3DESwrap OBJ_id_smime_alg,3L + +#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap" +#define NID_id_smime_alg_RC2wrap 244 +#define OBJ_id_smime_alg_RC2wrap OBJ_id_smime_alg,4L + +#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH" +#define NID_id_smime_alg_ESDH 245 +#define OBJ_id_smime_alg_ESDH OBJ_id_smime_alg,5L + +#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap" +#define NID_id_smime_alg_CMS3DESwrap 246 +#define OBJ_id_smime_alg_CMS3DESwrap OBJ_id_smime_alg,6L + +#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap" +#define NID_id_smime_alg_CMSRC2wrap 247 +#define OBJ_id_smime_alg_CMSRC2wrap OBJ_id_smime_alg,7L + +#define SN_id_alg_PWRI_KEK "id-alg-PWRI-KEK" +#define NID_id_alg_PWRI_KEK 893 +#define OBJ_id_alg_PWRI_KEK OBJ_id_smime_alg,9L + +#define SN_id_smime_cd_ldap "id-smime-cd-ldap" +#define NID_id_smime_cd_ldap 248 +#define OBJ_id_smime_cd_ldap OBJ_id_smime_cd,1L + +#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri" +#define NID_id_smime_spq_ets_sqt_uri 249 +#define OBJ_id_smime_spq_ets_sqt_uri OBJ_id_smime_spq,1L + +#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice" +#define NID_id_smime_spq_ets_sqt_unotice 250 +#define OBJ_id_smime_spq_ets_sqt_unotice OBJ_id_smime_spq,2L + +#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin" +#define NID_id_smime_cti_ets_proofOfOrigin 251 +#define OBJ_id_smime_cti_ets_proofOfOrigin OBJ_id_smime_cti,1L + +#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt" +#define NID_id_smime_cti_ets_proofOfReceipt 252 +#define OBJ_id_smime_cti_ets_proofOfReceipt OBJ_id_smime_cti,2L + +#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery" +#define NID_id_smime_cti_ets_proofOfDelivery 253 +#define OBJ_id_smime_cti_ets_proofOfDelivery OBJ_id_smime_cti,3L + +#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender" +#define NID_id_smime_cti_ets_proofOfSender 254 +#define OBJ_id_smime_cti_ets_proofOfSender OBJ_id_smime_cti,4L + +#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval" +#define NID_id_smime_cti_ets_proofOfApproval 255 +#define OBJ_id_smime_cti_ets_proofOfApproval OBJ_id_smime_cti,5L + +#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation" +#define NID_id_smime_cti_ets_proofOfCreation 256 +#define OBJ_id_smime_cti_ets_proofOfCreation OBJ_id_smime_cti,6L + +#define LN_friendlyName "friendlyName" +#define NID_friendlyName 156 +#define OBJ_friendlyName OBJ_pkcs9,20L + +#define LN_localKeyID "localKeyID" +#define NID_localKeyID 157 +#define OBJ_localKeyID OBJ_pkcs9,21L + +#define SN_ms_csp_name "CSPName" +#define LN_ms_csp_name "Microsoft CSP Name" +#define NID_ms_csp_name 417 +#define OBJ_ms_csp_name 1L,3L,6L,1L,4L,1L,311L,17L,1L + +#define SN_LocalKeySet "LocalKeySet" +#define LN_LocalKeySet "Microsoft Local Key set" +#define NID_LocalKeySet 856 +#define OBJ_LocalKeySet 1L,3L,6L,1L,4L,1L,311L,17L,2L + +#define OBJ_certTypes OBJ_pkcs9,22L + +#define LN_x509Certificate "x509Certificate" +#define NID_x509Certificate 158 +#define OBJ_x509Certificate OBJ_certTypes,1L + +#define LN_sdsiCertificate "sdsiCertificate" +#define NID_sdsiCertificate 159 +#define OBJ_sdsiCertificate OBJ_certTypes,2L + +#define OBJ_crlTypes OBJ_pkcs9,23L + +#define LN_x509Crl "x509Crl" +#define NID_x509Crl 160 +#define OBJ_x509Crl OBJ_crlTypes,1L + +#define OBJ_pkcs12 OBJ_pkcs,12L + +#define OBJ_pkcs12_pbeids OBJ_pkcs12,1L + +#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" +#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" +#define NID_pbe_WithSHA1And128BitRC4 144 +#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids,1L + +#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" +#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" +#define NID_pbe_WithSHA1And40BitRC4 145 +#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids,2L + +#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" +#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 +#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids,3L + +#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" +#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 +#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids,4L + +#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" +#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" +#define NID_pbe_WithSHA1And128BitRC2_CBC 148 +#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids,5L + +#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" +#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" +#define NID_pbe_WithSHA1And40BitRC2_CBC 149 +#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids,6L + +#define OBJ_pkcs12_Version1 OBJ_pkcs12,10L + +#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1,1L + +#define LN_keyBag "keyBag" +#define NID_keyBag 150 +#define OBJ_keyBag OBJ_pkcs12_BagIds,1L + +#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" +#define NID_pkcs8ShroudedKeyBag 151 +#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds,2L + +#define LN_certBag "certBag" +#define NID_certBag 152 +#define OBJ_certBag OBJ_pkcs12_BagIds,3L + +#define LN_crlBag "crlBag" +#define NID_crlBag 153 +#define OBJ_crlBag OBJ_pkcs12_BagIds,4L + +#define LN_secretBag "secretBag" +#define NID_secretBag 154 +#define OBJ_secretBag OBJ_pkcs12_BagIds,5L + +#define LN_safeContentsBag "safeContentsBag" +#define NID_safeContentsBag 155 +#define OBJ_safeContentsBag OBJ_pkcs12_BagIds,6L + +#define SN_md2 "MD2" +#define LN_md2 "md2" +#define NID_md2 3 +#define OBJ_md2 OBJ_rsadsi,2L,2L + +#define SN_md4 "MD4" +#define LN_md4 "md4" +#define NID_md4 257 +#define OBJ_md4 OBJ_rsadsi,2L,4L + +#define SN_md5 "MD5" +#define LN_md5 "md5" +#define NID_md5 4 +#define OBJ_md5 OBJ_rsadsi,2L,5L + +#define SN_md5_sha1 "MD5-SHA1" +#define LN_md5_sha1 "md5-sha1" +#define NID_md5_sha1 114 + +#define LN_hmacWithMD5 "hmacWithMD5" +#define NID_hmacWithMD5 797 +#define OBJ_hmacWithMD5 OBJ_rsadsi,2L,6L + +#define LN_hmacWithSHA1 "hmacWithSHA1" +#define NID_hmacWithSHA1 163 +#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L + +#define SN_sm2 "SM2" +#define LN_sm2 "sm2" +#define NID_sm2 1172 +#define OBJ_sm2 OBJ_sm_scheme,301L + +#define SN_sm3 "SM3" +#define LN_sm3 "sm3" +#define NID_sm3 1143 +#define OBJ_sm3 OBJ_sm_scheme,401L + +#define SN_sm3WithRSAEncryption "RSA-SM3" +#define LN_sm3WithRSAEncryption "sm3WithRSAEncryption" +#define NID_sm3WithRSAEncryption 1144 +#define OBJ_sm3WithRSAEncryption OBJ_sm_scheme,504L + +#define LN_hmacWithSHA224 "hmacWithSHA224" +#define NID_hmacWithSHA224 798 +#define OBJ_hmacWithSHA224 OBJ_rsadsi,2L,8L + +#define LN_hmacWithSHA256 "hmacWithSHA256" +#define NID_hmacWithSHA256 799 +#define OBJ_hmacWithSHA256 OBJ_rsadsi,2L,9L + +#define LN_hmacWithSHA384 "hmacWithSHA384" +#define NID_hmacWithSHA384 800 +#define OBJ_hmacWithSHA384 OBJ_rsadsi,2L,10L + +#define LN_hmacWithSHA512 "hmacWithSHA512" +#define NID_hmacWithSHA512 801 +#define OBJ_hmacWithSHA512 OBJ_rsadsi,2L,11L + +#define LN_hmacWithSHA512_224 "hmacWithSHA512-224" +#define NID_hmacWithSHA512_224 1193 +#define OBJ_hmacWithSHA512_224 OBJ_rsadsi,2L,12L + +#define LN_hmacWithSHA512_256 "hmacWithSHA512-256" +#define NID_hmacWithSHA512_256 1194 +#define OBJ_hmacWithSHA512_256 OBJ_rsadsi,2L,13L + +#define SN_rc2_cbc "RC2-CBC" +#define LN_rc2_cbc "rc2-cbc" +#define NID_rc2_cbc 37 +#define OBJ_rc2_cbc OBJ_rsadsi,3L,2L + +#define SN_rc2_ecb "RC2-ECB" +#define LN_rc2_ecb "rc2-ecb" +#define NID_rc2_ecb 38 + +#define SN_rc2_cfb64 "RC2-CFB" +#define LN_rc2_cfb64 "rc2-cfb" +#define NID_rc2_cfb64 39 + +#define SN_rc2_ofb64 "RC2-OFB" +#define LN_rc2_ofb64 "rc2-ofb" +#define NID_rc2_ofb64 40 + +#define SN_rc2_40_cbc "RC2-40-CBC" +#define LN_rc2_40_cbc "rc2-40-cbc" +#define NID_rc2_40_cbc 98 + +#define SN_rc2_64_cbc "RC2-64-CBC" +#define LN_rc2_64_cbc "rc2-64-cbc" +#define NID_rc2_64_cbc 166 + +#define SN_rc4 "RC4" +#define LN_rc4 "rc4" +#define NID_rc4 5 +#define OBJ_rc4 OBJ_rsadsi,3L,4L + +#define SN_rc4_40 "RC4-40" +#define LN_rc4_40 "rc4-40" +#define NID_rc4_40 97 + +#define SN_des_ede3_cbc "DES-EDE3-CBC" +#define LN_des_ede3_cbc "des-ede3-cbc" +#define NID_des_ede3_cbc 44 +#define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L + +#define SN_rc5_cbc "RC5-CBC" +#define LN_rc5_cbc "rc5-cbc" +#define NID_rc5_cbc 120 +#define OBJ_rc5_cbc OBJ_rsadsi,3L,8L + +#define SN_rc5_ecb "RC5-ECB" +#define LN_rc5_ecb "rc5-ecb" +#define NID_rc5_ecb 121 + +#define SN_rc5_cfb64 "RC5-CFB" +#define LN_rc5_cfb64 "rc5-cfb" +#define NID_rc5_cfb64 122 + +#define SN_rc5_ofb64 "RC5-OFB" +#define LN_rc5_ofb64 "rc5-ofb" +#define NID_rc5_ofb64 123 + +#define SN_ms_ext_req "msExtReq" +#define LN_ms_ext_req "Microsoft Extension Request" +#define NID_ms_ext_req 171 +#define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L + +#define SN_ms_code_ind "msCodeInd" +#define LN_ms_code_ind "Microsoft Individual Code Signing" +#define NID_ms_code_ind 134 +#define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L + +#define SN_ms_code_com "msCodeCom" +#define LN_ms_code_com "Microsoft Commercial Code Signing" +#define NID_ms_code_com 135 +#define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L + +#define SN_ms_ctl_sign "msCTLSign" +#define LN_ms_ctl_sign "Microsoft Trust List Signing" +#define NID_ms_ctl_sign 136 +#define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L + +#define SN_ms_sgc "msSGC" +#define LN_ms_sgc "Microsoft Server Gated Crypto" +#define NID_ms_sgc 137 +#define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L + +#define SN_ms_efs "msEFS" +#define LN_ms_efs "Microsoft Encrypted File System" +#define NID_ms_efs 138 +#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L + +#define SN_ms_smartcard_login "msSmartcardLogin" +#define LN_ms_smartcard_login "Microsoft Smartcard Login" +#define NID_ms_smartcard_login 648 +#define OBJ_ms_smartcard_login 1L,3L,6L,1L,4L,1L,311L,20L,2L,2L + +#define SN_ms_upn "msUPN" +#define LN_ms_upn "Microsoft User Principal Name" +#define NID_ms_upn 649 +#define OBJ_ms_upn 1L,3L,6L,1L,4L,1L,311L,20L,2L,3L + +#define SN_idea_cbc "IDEA-CBC" +#define LN_idea_cbc "idea-cbc" +#define NID_idea_cbc 34 +#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L + +#define SN_idea_ecb "IDEA-ECB" +#define LN_idea_ecb "idea-ecb" +#define NID_idea_ecb 36 + +#define SN_idea_cfb64 "IDEA-CFB" +#define LN_idea_cfb64 "idea-cfb" +#define NID_idea_cfb64 35 + +#define SN_idea_ofb64 "IDEA-OFB" +#define LN_idea_ofb64 "idea-ofb" +#define NID_idea_ofb64 46 + +#define SN_bf_cbc "BF-CBC" +#define LN_bf_cbc "bf-cbc" +#define NID_bf_cbc 91 +#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L + +#define SN_bf_ecb "BF-ECB" +#define LN_bf_ecb "bf-ecb" +#define NID_bf_ecb 92 + +#define SN_bf_cfb64 "BF-CFB" +#define LN_bf_cfb64 "bf-cfb" +#define NID_bf_cfb64 93 + +#define SN_bf_ofb64 "BF-OFB" +#define LN_bf_ofb64 "bf-ofb" +#define NID_bf_ofb64 94 + +#define SN_id_pkix "PKIX" +#define NID_id_pkix 127 +#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L + +#define SN_id_pkix_mod "id-pkix-mod" +#define NID_id_pkix_mod 258 +#define OBJ_id_pkix_mod OBJ_id_pkix,0L + +#define SN_id_pe "id-pe" +#define NID_id_pe 175 +#define OBJ_id_pe OBJ_id_pkix,1L + +#define SN_id_qt "id-qt" +#define NID_id_qt 259 +#define OBJ_id_qt OBJ_id_pkix,2L + +#define SN_id_kp "id-kp" +#define NID_id_kp 128 +#define OBJ_id_kp OBJ_id_pkix,3L + +#define SN_id_it "id-it" +#define NID_id_it 260 +#define OBJ_id_it OBJ_id_pkix,4L + +#define SN_id_pkip "id-pkip" +#define NID_id_pkip 261 +#define OBJ_id_pkip OBJ_id_pkix,5L + +#define SN_id_alg "id-alg" +#define NID_id_alg 262 +#define OBJ_id_alg OBJ_id_pkix,6L + +#define SN_id_cmc "id-cmc" +#define NID_id_cmc 263 +#define OBJ_id_cmc OBJ_id_pkix,7L + +#define SN_id_on "id-on" +#define NID_id_on 264 +#define OBJ_id_on OBJ_id_pkix,8L + +#define SN_id_pda "id-pda" +#define NID_id_pda 265 +#define OBJ_id_pda OBJ_id_pkix,9L + +#define SN_id_aca "id-aca" +#define NID_id_aca 266 +#define OBJ_id_aca OBJ_id_pkix,10L + +#define SN_id_qcs "id-qcs" +#define NID_id_qcs 267 +#define OBJ_id_qcs OBJ_id_pkix,11L + +#define SN_id_cct "id-cct" +#define NID_id_cct 268 +#define OBJ_id_cct OBJ_id_pkix,12L + +#define SN_id_ppl "id-ppl" +#define NID_id_ppl 662 +#define OBJ_id_ppl OBJ_id_pkix,21L + +#define SN_id_ad "id-ad" +#define NID_id_ad 176 +#define OBJ_id_ad OBJ_id_pkix,48L + +#define SN_id_pkix1_explicit_88 "id-pkix1-explicit-88" +#define NID_id_pkix1_explicit_88 269 +#define OBJ_id_pkix1_explicit_88 OBJ_id_pkix_mod,1L + +#define SN_id_pkix1_implicit_88 "id-pkix1-implicit-88" +#define NID_id_pkix1_implicit_88 270 +#define OBJ_id_pkix1_implicit_88 OBJ_id_pkix_mod,2L + +#define SN_id_pkix1_explicit_93 "id-pkix1-explicit-93" +#define NID_id_pkix1_explicit_93 271 +#define OBJ_id_pkix1_explicit_93 OBJ_id_pkix_mod,3L + +#define SN_id_pkix1_implicit_93 "id-pkix1-implicit-93" +#define NID_id_pkix1_implicit_93 272 +#define OBJ_id_pkix1_implicit_93 OBJ_id_pkix_mod,4L + +#define SN_id_mod_crmf "id-mod-crmf" +#define NID_id_mod_crmf 273 +#define OBJ_id_mod_crmf OBJ_id_pkix_mod,5L + +#define SN_id_mod_cmc "id-mod-cmc" +#define NID_id_mod_cmc 274 +#define OBJ_id_mod_cmc OBJ_id_pkix_mod,6L + +#define SN_id_mod_kea_profile_88 "id-mod-kea-profile-88" +#define NID_id_mod_kea_profile_88 275 +#define OBJ_id_mod_kea_profile_88 OBJ_id_pkix_mod,7L + +#define SN_id_mod_kea_profile_93 "id-mod-kea-profile-93" +#define NID_id_mod_kea_profile_93 276 +#define OBJ_id_mod_kea_profile_93 OBJ_id_pkix_mod,8L + +#define SN_id_mod_cmp "id-mod-cmp" +#define NID_id_mod_cmp 277 +#define OBJ_id_mod_cmp OBJ_id_pkix_mod,9L + +#define SN_id_mod_qualified_cert_88 "id-mod-qualified-cert-88" +#define NID_id_mod_qualified_cert_88 278 +#define OBJ_id_mod_qualified_cert_88 OBJ_id_pkix_mod,10L + +#define SN_id_mod_qualified_cert_93 "id-mod-qualified-cert-93" +#define NID_id_mod_qualified_cert_93 279 +#define OBJ_id_mod_qualified_cert_93 OBJ_id_pkix_mod,11L + +#define SN_id_mod_attribute_cert "id-mod-attribute-cert" +#define NID_id_mod_attribute_cert 280 +#define OBJ_id_mod_attribute_cert OBJ_id_pkix_mod,12L + +#define SN_id_mod_timestamp_protocol "id-mod-timestamp-protocol" +#define NID_id_mod_timestamp_protocol 281 +#define OBJ_id_mod_timestamp_protocol OBJ_id_pkix_mod,13L + +#define SN_id_mod_ocsp "id-mod-ocsp" +#define NID_id_mod_ocsp 282 +#define OBJ_id_mod_ocsp OBJ_id_pkix_mod,14L + +#define SN_id_mod_dvcs "id-mod-dvcs" +#define NID_id_mod_dvcs 283 +#define OBJ_id_mod_dvcs OBJ_id_pkix_mod,15L + +#define SN_id_mod_cmp2000 "id-mod-cmp2000" +#define NID_id_mod_cmp2000 284 +#define OBJ_id_mod_cmp2000 OBJ_id_pkix_mod,16L + +#define SN_info_access "authorityInfoAccess" +#define LN_info_access "Authority Information Access" +#define NID_info_access 177 +#define OBJ_info_access OBJ_id_pe,1L + +#define SN_biometricInfo "biometricInfo" +#define LN_biometricInfo "Biometric Info" +#define NID_biometricInfo 285 +#define OBJ_biometricInfo OBJ_id_pe,2L + +#define SN_qcStatements "qcStatements" +#define NID_qcStatements 286 +#define OBJ_qcStatements OBJ_id_pe,3L + +#define SN_ac_auditEntity "ac-auditEntity" +#define NID_ac_auditEntity 287 +#define OBJ_ac_auditEntity OBJ_id_pe,4L + +#define SN_ac_targeting "ac-targeting" +#define NID_ac_targeting 288 +#define OBJ_ac_targeting OBJ_id_pe,5L + +#define SN_aaControls "aaControls" +#define NID_aaControls 289 +#define OBJ_aaControls OBJ_id_pe,6L + +#define SN_sbgp_ipAddrBlock "sbgp-ipAddrBlock" +#define NID_sbgp_ipAddrBlock 290 +#define OBJ_sbgp_ipAddrBlock OBJ_id_pe,7L + +#define SN_sbgp_autonomousSysNum "sbgp-autonomousSysNum" +#define NID_sbgp_autonomousSysNum 291 +#define OBJ_sbgp_autonomousSysNum OBJ_id_pe,8L + +#define SN_sbgp_routerIdentifier "sbgp-routerIdentifier" +#define NID_sbgp_routerIdentifier 292 +#define OBJ_sbgp_routerIdentifier OBJ_id_pe,9L + +#define SN_ac_proxying "ac-proxying" +#define NID_ac_proxying 397 +#define OBJ_ac_proxying OBJ_id_pe,10L + +#define SN_sinfo_access "subjectInfoAccess" +#define LN_sinfo_access "Subject Information Access" +#define NID_sinfo_access 398 +#define OBJ_sinfo_access OBJ_id_pe,11L + +#define SN_proxyCertInfo "proxyCertInfo" +#define LN_proxyCertInfo "Proxy Certificate Information" +#define NID_proxyCertInfo 663 +#define OBJ_proxyCertInfo OBJ_id_pe,14L + +#define SN_tlsfeature "tlsfeature" +#define LN_tlsfeature "TLS Feature" +#define NID_tlsfeature 1020 +#define OBJ_tlsfeature OBJ_id_pe,24L + +#define SN_id_qt_cps "id-qt-cps" +#define LN_id_qt_cps "Policy Qualifier CPS" +#define NID_id_qt_cps 164 +#define OBJ_id_qt_cps OBJ_id_qt,1L + +#define SN_id_qt_unotice "id-qt-unotice" +#define LN_id_qt_unotice "Policy Qualifier User Notice" +#define NID_id_qt_unotice 165 +#define OBJ_id_qt_unotice OBJ_id_qt,2L + +#define SN_textNotice "textNotice" +#define NID_textNotice 293 +#define OBJ_textNotice OBJ_id_qt,3L + +#define SN_server_auth "serverAuth" +#define LN_server_auth "TLS Web Server Authentication" +#define NID_server_auth 129 +#define OBJ_server_auth OBJ_id_kp,1L + +#define SN_client_auth "clientAuth" +#define LN_client_auth "TLS Web Client Authentication" +#define NID_client_auth 130 +#define OBJ_client_auth OBJ_id_kp,2L + +#define SN_code_sign "codeSigning" +#define LN_code_sign "Code Signing" +#define NID_code_sign 131 +#define OBJ_code_sign OBJ_id_kp,3L + +#define SN_email_protect "emailProtection" +#define LN_email_protect "E-mail Protection" +#define NID_email_protect 132 +#define OBJ_email_protect OBJ_id_kp,4L + +#define SN_ipsecEndSystem "ipsecEndSystem" +#define LN_ipsecEndSystem "IPSec End System" +#define NID_ipsecEndSystem 294 +#define OBJ_ipsecEndSystem OBJ_id_kp,5L + +#define SN_ipsecTunnel "ipsecTunnel" +#define LN_ipsecTunnel "IPSec Tunnel" +#define NID_ipsecTunnel 295 +#define OBJ_ipsecTunnel OBJ_id_kp,6L + +#define SN_ipsecUser "ipsecUser" +#define LN_ipsecUser "IPSec User" +#define NID_ipsecUser 296 +#define OBJ_ipsecUser OBJ_id_kp,7L + +#define SN_time_stamp "timeStamping" +#define LN_time_stamp "Time Stamping" +#define NID_time_stamp 133 +#define OBJ_time_stamp OBJ_id_kp,8L + +#define SN_OCSP_sign "OCSPSigning" +#define LN_OCSP_sign "OCSP Signing" +#define NID_OCSP_sign 180 +#define OBJ_OCSP_sign OBJ_id_kp,9L + +#define SN_dvcs "DVCS" +#define LN_dvcs "dvcs" +#define NID_dvcs 297 +#define OBJ_dvcs OBJ_id_kp,10L + +#define SN_ipsec_IKE "ipsecIKE" +#define LN_ipsec_IKE "ipsec Internet Key Exchange" +#define NID_ipsec_IKE 1022 +#define OBJ_ipsec_IKE OBJ_id_kp,17L + +#define SN_capwapAC "capwapAC" +#define LN_capwapAC "Ctrl/provision WAP Access" +#define NID_capwapAC 1023 +#define OBJ_capwapAC OBJ_id_kp,18L + +#define SN_capwapWTP "capwapWTP" +#define LN_capwapWTP "Ctrl/Provision WAP Termination" +#define NID_capwapWTP 1024 +#define OBJ_capwapWTP OBJ_id_kp,19L + +#define SN_sshClient "secureShellClient" +#define LN_sshClient "SSH Client" +#define NID_sshClient 1025 +#define OBJ_sshClient OBJ_id_kp,21L + +#define SN_sshServer "secureShellServer" +#define LN_sshServer "SSH Server" +#define NID_sshServer 1026 +#define OBJ_sshServer OBJ_id_kp,22L + +#define SN_sendRouter "sendRouter" +#define LN_sendRouter "Send Router" +#define NID_sendRouter 1027 +#define OBJ_sendRouter OBJ_id_kp,23L + +#define SN_sendProxiedRouter "sendProxiedRouter" +#define LN_sendProxiedRouter "Send Proxied Router" +#define NID_sendProxiedRouter 1028 +#define OBJ_sendProxiedRouter OBJ_id_kp,24L + +#define SN_sendOwner "sendOwner" +#define LN_sendOwner "Send Owner" +#define NID_sendOwner 1029 +#define OBJ_sendOwner OBJ_id_kp,25L + +#define SN_sendProxiedOwner "sendProxiedOwner" +#define LN_sendProxiedOwner "Send Proxied Owner" +#define NID_sendProxiedOwner 1030 +#define OBJ_sendProxiedOwner OBJ_id_kp,26L + +#define SN_cmcCA "cmcCA" +#define LN_cmcCA "CMC Certificate Authority" +#define NID_cmcCA 1131 +#define OBJ_cmcCA OBJ_id_kp,27L + +#define SN_cmcRA "cmcRA" +#define LN_cmcRA "CMC Registration Authority" +#define NID_cmcRA 1132 +#define OBJ_cmcRA OBJ_id_kp,28L + +#define SN_id_it_caProtEncCert "id-it-caProtEncCert" +#define NID_id_it_caProtEncCert 298 +#define OBJ_id_it_caProtEncCert OBJ_id_it,1L + +#define SN_id_it_signKeyPairTypes "id-it-signKeyPairTypes" +#define NID_id_it_signKeyPairTypes 299 +#define OBJ_id_it_signKeyPairTypes OBJ_id_it,2L + +#define SN_id_it_encKeyPairTypes "id-it-encKeyPairTypes" +#define NID_id_it_encKeyPairTypes 300 +#define OBJ_id_it_encKeyPairTypes OBJ_id_it,3L + +#define SN_id_it_preferredSymmAlg "id-it-preferredSymmAlg" +#define NID_id_it_preferredSymmAlg 301 +#define OBJ_id_it_preferredSymmAlg OBJ_id_it,4L + +#define SN_id_it_caKeyUpdateInfo "id-it-caKeyUpdateInfo" +#define NID_id_it_caKeyUpdateInfo 302 +#define OBJ_id_it_caKeyUpdateInfo OBJ_id_it,5L + +#define SN_id_it_currentCRL "id-it-currentCRL" +#define NID_id_it_currentCRL 303 +#define OBJ_id_it_currentCRL OBJ_id_it,6L + +#define SN_id_it_unsupportedOIDs "id-it-unsupportedOIDs" +#define NID_id_it_unsupportedOIDs 304 +#define OBJ_id_it_unsupportedOIDs OBJ_id_it,7L + +#define SN_id_it_subscriptionRequest "id-it-subscriptionRequest" +#define NID_id_it_subscriptionRequest 305 +#define OBJ_id_it_subscriptionRequest OBJ_id_it,8L + +#define SN_id_it_subscriptionResponse "id-it-subscriptionResponse" +#define NID_id_it_subscriptionResponse 306 +#define OBJ_id_it_subscriptionResponse OBJ_id_it,9L + +#define SN_id_it_keyPairParamReq "id-it-keyPairParamReq" +#define NID_id_it_keyPairParamReq 307 +#define OBJ_id_it_keyPairParamReq OBJ_id_it,10L + +#define SN_id_it_keyPairParamRep "id-it-keyPairParamRep" +#define NID_id_it_keyPairParamRep 308 +#define OBJ_id_it_keyPairParamRep OBJ_id_it,11L + +#define SN_id_it_revPassphrase "id-it-revPassphrase" +#define NID_id_it_revPassphrase 309 +#define OBJ_id_it_revPassphrase OBJ_id_it,12L + +#define SN_id_it_implicitConfirm "id-it-implicitConfirm" +#define NID_id_it_implicitConfirm 310 +#define OBJ_id_it_implicitConfirm OBJ_id_it,13L + +#define SN_id_it_confirmWaitTime "id-it-confirmWaitTime" +#define NID_id_it_confirmWaitTime 311 +#define OBJ_id_it_confirmWaitTime OBJ_id_it,14L + +#define SN_id_it_origPKIMessage "id-it-origPKIMessage" +#define NID_id_it_origPKIMessage 312 +#define OBJ_id_it_origPKIMessage OBJ_id_it,15L + +#define SN_id_it_suppLangTags "id-it-suppLangTags" +#define NID_id_it_suppLangTags 784 +#define OBJ_id_it_suppLangTags OBJ_id_it,16L + +#define SN_id_regCtrl "id-regCtrl" +#define NID_id_regCtrl 313 +#define OBJ_id_regCtrl OBJ_id_pkip,1L + +#define SN_id_regInfo "id-regInfo" +#define NID_id_regInfo 314 +#define OBJ_id_regInfo OBJ_id_pkip,2L + +#define SN_id_regCtrl_regToken "id-regCtrl-regToken" +#define NID_id_regCtrl_regToken 315 +#define OBJ_id_regCtrl_regToken OBJ_id_regCtrl,1L + +#define SN_id_regCtrl_authenticator "id-regCtrl-authenticator" +#define NID_id_regCtrl_authenticator 316 +#define OBJ_id_regCtrl_authenticator OBJ_id_regCtrl,2L + +#define SN_id_regCtrl_pkiPublicationInfo "id-regCtrl-pkiPublicationInfo" +#define NID_id_regCtrl_pkiPublicationInfo 317 +#define OBJ_id_regCtrl_pkiPublicationInfo OBJ_id_regCtrl,3L + +#define SN_id_regCtrl_pkiArchiveOptions "id-regCtrl-pkiArchiveOptions" +#define NID_id_regCtrl_pkiArchiveOptions 318 +#define OBJ_id_regCtrl_pkiArchiveOptions OBJ_id_regCtrl,4L + +#define SN_id_regCtrl_oldCertID "id-regCtrl-oldCertID" +#define NID_id_regCtrl_oldCertID 319 +#define OBJ_id_regCtrl_oldCertID OBJ_id_regCtrl,5L + +#define SN_id_regCtrl_protocolEncrKey "id-regCtrl-protocolEncrKey" +#define NID_id_regCtrl_protocolEncrKey 320 +#define OBJ_id_regCtrl_protocolEncrKey OBJ_id_regCtrl,6L + +#define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" +#define NID_id_regInfo_utf8Pairs 321 +#define OBJ_id_regInfo_utf8Pairs OBJ_id_regInfo,1L + +#define SN_id_regInfo_certReq "id-regInfo-certReq" +#define NID_id_regInfo_certReq 322 +#define OBJ_id_regInfo_certReq OBJ_id_regInfo,2L + +#define SN_id_alg_des40 "id-alg-des40" +#define NID_id_alg_des40 323 +#define OBJ_id_alg_des40 OBJ_id_alg,1L + +#define SN_id_alg_noSignature "id-alg-noSignature" +#define NID_id_alg_noSignature 324 +#define OBJ_id_alg_noSignature OBJ_id_alg,2L + +#define SN_id_alg_dh_sig_hmac_sha1 "id-alg-dh-sig-hmac-sha1" +#define NID_id_alg_dh_sig_hmac_sha1 325 +#define OBJ_id_alg_dh_sig_hmac_sha1 OBJ_id_alg,3L + +#define SN_id_alg_dh_pop "id-alg-dh-pop" +#define NID_id_alg_dh_pop 326 +#define OBJ_id_alg_dh_pop OBJ_id_alg,4L + +#define SN_id_cmc_statusInfo "id-cmc-statusInfo" +#define NID_id_cmc_statusInfo 327 +#define OBJ_id_cmc_statusInfo OBJ_id_cmc,1L + +#define SN_id_cmc_identification "id-cmc-identification" +#define NID_id_cmc_identification 328 +#define OBJ_id_cmc_identification OBJ_id_cmc,2L + +#define SN_id_cmc_identityProof "id-cmc-identityProof" +#define NID_id_cmc_identityProof 329 +#define OBJ_id_cmc_identityProof OBJ_id_cmc,3L + +#define SN_id_cmc_dataReturn "id-cmc-dataReturn" +#define NID_id_cmc_dataReturn 330 +#define OBJ_id_cmc_dataReturn OBJ_id_cmc,4L + +#define SN_id_cmc_transactionId "id-cmc-transactionId" +#define NID_id_cmc_transactionId 331 +#define OBJ_id_cmc_transactionId OBJ_id_cmc,5L + +#define SN_id_cmc_senderNonce "id-cmc-senderNonce" +#define NID_id_cmc_senderNonce 332 +#define OBJ_id_cmc_senderNonce OBJ_id_cmc,6L + +#define SN_id_cmc_recipientNonce "id-cmc-recipientNonce" +#define NID_id_cmc_recipientNonce 333 +#define OBJ_id_cmc_recipientNonce OBJ_id_cmc,7L + +#define SN_id_cmc_addExtensions "id-cmc-addExtensions" +#define NID_id_cmc_addExtensions 334 +#define OBJ_id_cmc_addExtensions OBJ_id_cmc,8L + +#define SN_id_cmc_encryptedPOP "id-cmc-encryptedPOP" +#define NID_id_cmc_encryptedPOP 335 +#define OBJ_id_cmc_encryptedPOP OBJ_id_cmc,9L + +#define SN_id_cmc_decryptedPOP "id-cmc-decryptedPOP" +#define NID_id_cmc_decryptedPOP 336 +#define OBJ_id_cmc_decryptedPOP OBJ_id_cmc,10L + +#define SN_id_cmc_lraPOPWitness "id-cmc-lraPOPWitness" +#define NID_id_cmc_lraPOPWitness 337 +#define OBJ_id_cmc_lraPOPWitness OBJ_id_cmc,11L + +#define SN_id_cmc_getCert "id-cmc-getCert" +#define NID_id_cmc_getCert 338 +#define OBJ_id_cmc_getCert OBJ_id_cmc,15L + +#define SN_id_cmc_getCRL "id-cmc-getCRL" +#define NID_id_cmc_getCRL 339 +#define OBJ_id_cmc_getCRL OBJ_id_cmc,16L + +#define SN_id_cmc_revokeRequest "id-cmc-revokeRequest" +#define NID_id_cmc_revokeRequest 340 +#define OBJ_id_cmc_revokeRequest OBJ_id_cmc,17L + +#define SN_id_cmc_regInfo "id-cmc-regInfo" +#define NID_id_cmc_regInfo 341 +#define OBJ_id_cmc_regInfo OBJ_id_cmc,18L + +#define SN_id_cmc_responseInfo "id-cmc-responseInfo" +#define NID_id_cmc_responseInfo 342 +#define OBJ_id_cmc_responseInfo OBJ_id_cmc,19L + +#define SN_id_cmc_queryPending "id-cmc-queryPending" +#define NID_id_cmc_queryPending 343 +#define OBJ_id_cmc_queryPending OBJ_id_cmc,21L + +#define SN_id_cmc_popLinkRandom "id-cmc-popLinkRandom" +#define NID_id_cmc_popLinkRandom 344 +#define OBJ_id_cmc_popLinkRandom OBJ_id_cmc,22L + +#define SN_id_cmc_popLinkWitness "id-cmc-popLinkWitness" +#define NID_id_cmc_popLinkWitness 345 +#define OBJ_id_cmc_popLinkWitness OBJ_id_cmc,23L + +#define SN_id_cmc_confirmCertAcceptance "id-cmc-confirmCertAcceptance" +#define NID_id_cmc_confirmCertAcceptance 346 +#define OBJ_id_cmc_confirmCertAcceptance OBJ_id_cmc,24L + +#define SN_id_on_personalData "id-on-personalData" +#define NID_id_on_personalData 347 +#define OBJ_id_on_personalData OBJ_id_on,1L + +#define SN_id_on_permanentIdentifier "id-on-permanentIdentifier" +#define LN_id_on_permanentIdentifier "Permanent Identifier" +#define NID_id_on_permanentIdentifier 858 +#define OBJ_id_on_permanentIdentifier OBJ_id_on,3L + +#define SN_id_pda_dateOfBirth "id-pda-dateOfBirth" +#define NID_id_pda_dateOfBirth 348 +#define OBJ_id_pda_dateOfBirth OBJ_id_pda,1L + +#define SN_id_pda_placeOfBirth "id-pda-placeOfBirth" +#define NID_id_pda_placeOfBirth 349 +#define OBJ_id_pda_placeOfBirth OBJ_id_pda,2L + +#define SN_id_pda_gender "id-pda-gender" +#define NID_id_pda_gender 351 +#define OBJ_id_pda_gender OBJ_id_pda,3L + +#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship" +#define NID_id_pda_countryOfCitizenship 352 +#define OBJ_id_pda_countryOfCitizenship OBJ_id_pda,4L + +#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence" +#define NID_id_pda_countryOfResidence 353 +#define OBJ_id_pda_countryOfResidence OBJ_id_pda,5L + +#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo" +#define NID_id_aca_authenticationInfo 354 +#define OBJ_id_aca_authenticationInfo OBJ_id_aca,1L + +#define SN_id_aca_accessIdentity "id-aca-accessIdentity" +#define NID_id_aca_accessIdentity 355 +#define OBJ_id_aca_accessIdentity OBJ_id_aca,2L + +#define SN_id_aca_chargingIdentity "id-aca-chargingIdentity" +#define NID_id_aca_chargingIdentity 356 +#define OBJ_id_aca_chargingIdentity OBJ_id_aca,3L + +#define SN_id_aca_group "id-aca-group" +#define NID_id_aca_group 357 +#define OBJ_id_aca_group OBJ_id_aca,4L + +#define SN_id_aca_role "id-aca-role" +#define NID_id_aca_role 358 +#define OBJ_id_aca_role OBJ_id_aca,5L + +#define SN_id_aca_encAttrs "id-aca-encAttrs" +#define NID_id_aca_encAttrs 399 +#define OBJ_id_aca_encAttrs OBJ_id_aca,6L + +#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1" +#define NID_id_qcs_pkixQCSyntax_v1 359 +#define OBJ_id_qcs_pkixQCSyntax_v1 OBJ_id_qcs,1L + +#define SN_id_cct_crs "id-cct-crs" +#define NID_id_cct_crs 360 +#define OBJ_id_cct_crs OBJ_id_cct,1L + +#define SN_id_cct_PKIData "id-cct-PKIData" +#define NID_id_cct_PKIData 361 +#define OBJ_id_cct_PKIData OBJ_id_cct,2L + +#define SN_id_cct_PKIResponse "id-cct-PKIResponse" +#define NID_id_cct_PKIResponse 362 +#define OBJ_id_cct_PKIResponse OBJ_id_cct,3L + +#define SN_id_ppl_anyLanguage "id-ppl-anyLanguage" +#define LN_id_ppl_anyLanguage "Any language" +#define NID_id_ppl_anyLanguage 664 +#define OBJ_id_ppl_anyLanguage OBJ_id_ppl,0L + +#define SN_id_ppl_inheritAll "id-ppl-inheritAll" +#define LN_id_ppl_inheritAll "Inherit all" +#define NID_id_ppl_inheritAll 665 +#define OBJ_id_ppl_inheritAll OBJ_id_ppl,1L + +#define SN_Independent "id-ppl-independent" +#define LN_Independent "Independent" +#define NID_Independent 667 +#define OBJ_Independent OBJ_id_ppl,2L + +#define SN_ad_OCSP "OCSP" +#define LN_ad_OCSP "OCSP" +#define NID_ad_OCSP 178 +#define OBJ_ad_OCSP OBJ_id_ad,1L + +#define SN_ad_ca_issuers "caIssuers" +#define LN_ad_ca_issuers "CA Issuers" +#define NID_ad_ca_issuers 179 +#define OBJ_ad_ca_issuers OBJ_id_ad,2L + +#define SN_ad_timeStamping "ad_timestamping" +#define LN_ad_timeStamping "AD Time Stamping" +#define NID_ad_timeStamping 363 +#define OBJ_ad_timeStamping OBJ_id_ad,3L + +#define SN_ad_dvcs "AD_DVCS" +#define LN_ad_dvcs "ad dvcs" +#define NID_ad_dvcs 364 +#define OBJ_ad_dvcs OBJ_id_ad,4L + +#define SN_caRepository "caRepository" +#define LN_caRepository "CA Repository" +#define NID_caRepository 785 +#define OBJ_caRepository OBJ_id_ad,5L + +#define OBJ_id_pkix_OCSP OBJ_ad_OCSP + +#define SN_id_pkix_OCSP_basic "basicOCSPResponse" +#define LN_id_pkix_OCSP_basic "Basic OCSP Response" +#define NID_id_pkix_OCSP_basic 365 +#define OBJ_id_pkix_OCSP_basic OBJ_id_pkix_OCSP,1L + +#define SN_id_pkix_OCSP_Nonce "Nonce" +#define LN_id_pkix_OCSP_Nonce "OCSP Nonce" +#define NID_id_pkix_OCSP_Nonce 366 +#define OBJ_id_pkix_OCSP_Nonce OBJ_id_pkix_OCSP,2L + +#define SN_id_pkix_OCSP_CrlID "CrlID" +#define LN_id_pkix_OCSP_CrlID "OCSP CRL ID" +#define NID_id_pkix_OCSP_CrlID 367 +#define OBJ_id_pkix_OCSP_CrlID OBJ_id_pkix_OCSP,3L + +#define SN_id_pkix_OCSP_acceptableResponses "acceptableResponses" +#define LN_id_pkix_OCSP_acceptableResponses "Acceptable OCSP Responses" +#define NID_id_pkix_OCSP_acceptableResponses 368 +#define OBJ_id_pkix_OCSP_acceptableResponses OBJ_id_pkix_OCSP,4L + +#define SN_id_pkix_OCSP_noCheck "noCheck" +#define LN_id_pkix_OCSP_noCheck "OCSP No Check" +#define NID_id_pkix_OCSP_noCheck 369 +#define OBJ_id_pkix_OCSP_noCheck OBJ_id_pkix_OCSP,5L + +#define SN_id_pkix_OCSP_archiveCutoff "archiveCutoff" +#define LN_id_pkix_OCSP_archiveCutoff "OCSP Archive Cutoff" +#define NID_id_pkix_OCSP_archiveCutoff 370 +#define OBJ_id_pkix_OCSP_archiveCutoff OBJ_id_pkix_OCSP,6L + +#define SN_id_pkix_OCSP_serviceLocator "serviceLocator" +#define LN_id_pkix_OCSP_serviceLocator "OCSP Service Locator" +#define NID_id_pkix_OCSP_serviceLocator 371 +#define OBJ_id_pkix_OCSP_serviceLocator OBJ_id_pkix_OCSP,7L + +#define SN_id_pkix_OCSP_extendedStatus "extendedStatus" +#define LN_id_pkix_OCSP_extendedStatus "Extended OCSP Status" +#define NID_id_pkix_OCSP_extendedStatus 372 +#define OBJ_id_pkix_OCSP_extendedStatus OBJ_id_pkix_OCSP,8L + +#define SN_id_pkix_OCSP_valid "valid" +#define NID_id_pkix_OCSP_valid 373 +#define OBJ_id_pkix_OCSP_valid OBJ_id_pkix_OCSP,9L + +#define SN_id_pkix_OCSP_path "path" +#define NID_id_pkix_OCSP_path 374 +#define OBJ_id_pkix_OCSP_path OBJ_id_pkix_OCSP,10L + +#define SN_id_pkix_OCSP_trustRoot "trustRoot" +#define LN_id_pkix_OCSP_trustRoot "Trust Root" +#define NID_id_pkix_OCSP_trustRoot 375 +#define OBJ_id_pkix_OCSP_trustRoot OBJ_id_pkix_OCSP,11L + +#define SN_algorithm "algorithm" +#define LN_algorithm "algorithm" +#define NID_algorithm 376 +#define OBJ_algorithm 1L,3L,14L,3L,2L + +#define SN_md5WithRSA "RSA-NP-MD5" +#define LN_md5WithRSA "md5WithRSA" +#define NID_md5WithRSA 104 +#define OBJ_md5WithRSA OBJ_algorithm,3L + +#define SN_des_ecb "DES-ECB" +#define LN_des_ecb "des-ecb" +#define NID_des_ecb 29 +#define OBJ_des_ecb OBJ_algorithm,6L + +#define SN_des_cbc "DES-CBC" +#define LN_des_cbc "des-cbc" +#define NID_des_cbc 31 +#define OBJ_des_cbc OBJ_algorithm,7L + +#define SN_des_ofb64 "DES-OFB" +#define LN_des_ofb64 "des-ofb" +#define NID_des_ofb64 45 +#define OBJ_des_ofb64 OBJ_algorithm,8L + +#define SN_des_cfb64 "DES-CFB" +#define LN_des_cfb64 "des-cfb" +#define NID_des_cfb64 30 +#define OBJ_des_cfb64 OBJ_algorithm,9L + +#define SN_rsaSignature "rsaSignature" +#define NID_rsaSignature 377 +#define OBJ_rsaSignature OBJ_algorithm,11L + +#define SN_dsa_2 "DSA-old" +#define LN_dsa_2 "dsaEncryption-old" +#define NID_dsa_2 67 +#define OBJ_dsa_2 OBJ_algorithm,12L + +#define SN_dsaWithSHA "DSA-SHA" +#define LN_dsaWithSHA "dsaWithSHA" +#define NID_dsaWithSHA 66 +#define OBJ_dsaWithSHA OBJ_algorithm,13L + +#define SN_shaWithRSAEncryption "RSA-SHA" +#define LN_shaWithRSAEncryption "shaWithRSAEncryption" +#define NID_shaWithRSAEncryption 42 +#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L + +#define SN_des_ede_ecb "DES-EDE" +#define LN_des_ede_ecb "des-ede" +#define NID_des_ede_ecb 32 +#define OBJ_des_ede_ecb OBJ_algorithm,17L + +#define SN_des_ede3_ecb "DES-EDE3" +#define LN_des_ede3_ecb "des-ede3" +#define NID_des_ede3_ecb 33 + +#define SN_des_ede_cbc "DES-EDE-CBC" +#define LN_des_ede_cbc "des-ede-cbc" +#define NID_des_ede_cbc 43 + +#define SN_des_ede_cfb64 "DES-EDE-CFB" +#define LN_des_ede_cfb64 "des-ede-cfb" +#define NID_des_ede_cfb64 60 + +#define SN_des_ede3_cfb64 "DES-EDE3-CFB" +#define LN_des_ede3_cfb64 "des-ede3-cfb" +#define NID_des_ede3_cfb64 61 + +#define SN_des_ede_ofb64 "DES-EDE-OFB" +#define LN_des_ede_ofb64 "des-ede-ofb" +#define NID_des_ede_ofb64 62 + +#define SN_des_ede3_ofb64 "DES-EDE3-OFB" +#define LN_des_ede3_ofb64 "des-ede3-ofb" +#define NID_des_ede3_ofb64 63 + +#define SN_desx_cbc "DESX-CBC" +#define LN_desx_cbc "desx-cbc" +#define NID_desx_cbc 80 + +#define SN_sha "SHA" +#define LN_sha "sha" +#define NID_sha 41 +#define OBJ_sha OBJ_algorithm,18L + +#define SN_sha1 "SHA1" +#define LN_sha1 "sha1" +#define NID_sha1 64 +#define OBJ_sha1 OBJ_algorithm,26L + +#define SN_dsaWithSHA1_2 "DSA-SHA1-old" +#define LN_dsaWithSHA1_2 "dsaWithSHA1-old" +#define NID_dsaWithSHA1_2 70 +#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L + +#define SN_sha1WithRSA "RSA-SHA1-2" +#define LN_sha1WithRSA "sha1WithRSA" +#define NID_sha1WithRSA 115 +#define OBJ_sha1WithRSA OBJ_algorithm,29L + +#define SN_ripemd160 "RIPEMD160" +#define LN_ripemd160 "ripemd160" +#define NID_ripemd160 117 +#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L + +#define SN_ripemd160WithRSA "RSA-RIPEMD160" +#define LN_ripemd160WithRSA "ripemd160WithRSA" +#define NID_ripemd160WithRSA 119 +#define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L + +#define SN_blake2b512 "BLAKE2b512" +#define LN_blake2b512 "blake2b512" +#define NID_blake2b512 1056 +#define OBJ_blake2b512 1L,3L,6L,1L,4L,1L,1722L,12L,2L,1L,16L + +#define SN_blake2s256 "BLAKE2s256" +#define LN_blake2s256 "blake2s256" +#define NID_blake2s256 1057 +#define OBJ_blake2s256 1L,3L,6L,1L,4L,1L,1722L,12L,2L,2L,8L + +#define SN_sxnet "SXNetID" +#define LN_sxnet "Strong Extranet ID" +#define NID_sxnet 143 +#define OBJ_sxnet 1L,3L,101L,1L,4L,1L + +#define SN_X500 "X500" +#define LN_X500 "directory services (X.500)" +#define NID_X500 11 +#define OBJ_X500 2L,5L + +#define SN_X509 "X509" +#define NID_X509 12 +#define OBJ_X509 OBJ_X500,4L + +#define SN_commonName "CN" +#define LN_commonName "commonName" +#define NID_commonName 13 +#define OBJ_commonName OBJ_X509,3L + +#define SN_surname "SN" +#define LN_surname "surname" +#define NID_surname 100 +#define OBJ_surname OBJ_X509,4L + +#define LN_serialNumber "serialNumber" +#define NID_serialNumber 105 +#define OBJ_serialNumber OBJ_X509,5L + +#define SN_countryName "C" +#define LN_countryName "countryName" +#define NID_countryName 14 +#define OBJ_countryName OBJ_X509,6L + +#define SN_localityName "L" +#define LN_localityName "localityName" +#define NID_localityName 15 +#define OBJ_localityName OBJ_X509,7L + +#define SN_stateOrProvinceName "ST" +#define LN_stateOrProvinceName "stateOrProvinceName" +#define NID_stateOrProvinceName 16 +#define OBJ_stateOrProvinceName OBJ_X509,8L + +#define SN_streetAddress "street" +#define LN_streetAddress "streetAddress" +#define NID_streetAddress 660 +#define OBJ_streetAddress OBJ_X509,9L + +#define SN_organizationName "O" +#define LN_organizationName "organizationName" +#define NID_organizationName 17 +#define OBJ_organizationName OBJ_X509,10L + +#define SN_organizationalUnitName "OU" +#define LN_organizationalUnitName "organizationalUnitName" +#define NID_organizationalUnitName 18 +#define OBJ_organizationalUnitName OBJ_X509,11L + +#define SN_title "title" +#define LN_title "title" +#define NID_title 106 +#define OBJ_title OBJ_X509,12L + +#define LN_description "description" +#define NID_description 107 +#define OBJ_description OBJ_X509,13L + +#define LN_searchGuide "searchGuide" +#define NID_searchGuide 859 +#define OBJ_searchGuide OBJ_X509,14L + +#define LN_businessCategory "businessCategory" +#define NID_businessCategory 860 +#define OBJ_businessCategory OBJ_X509,15L + +#define LN_postalAddress "postalAddress" +#define NID_postalAddress 861 +#define OBJ_postalAddress OBJ_X509,16L + +#define LN_postalCode "postalCode" +#define NID_postalCode 661 +#define OBJ_postalCode OBJ_X509,17L + +#define LN_postOfficeBox "postOfficeBox" +#define NID_postOfficeBox 862 +#define OBJ_postOfficeBox OBJ_X509,18L + +#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName" +#define NID_physicalDeliveryOfficeName 863 +#define OBJ_physicalDeliveryOfficeName OBJ_X509,19L + +#define LN_telephoneNumber "telephoneNumber" +#define NID_telephoneNumber 864 +#define OBJ_telephoneNumber OBJ_X509,20L + +#define LN_telexNumber "telexNumber" +#define NID_telexNumber 865 +#define OBJ_telexNumber OBJ_X509,21L + +#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier" +#define NID_teletexTerminalIdentifier 866 +#define OBJ_teletexTerminalIdentifier OBJ_X509,22L + +#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber" +#define NID_facsimileTelephoneNumber 867 +#define OBJ_facsimileTelephoneNumber OBJ_X509,23L + +#define LN_x121Address "x121Address" +#define NID_x121Address 868 +#define OBJ_x121Address OBJ_X509,24L + +#define LN_internationaliSDNNumber "internationaliSDNNumber" +#define NID_internationaliSDNNumber 869 +#define OBJ_internationaliSDNNumber OBJ_X509,25L + +#define LN_registeredAddress "registeredAddress" +#define NID_registeredAddress 870 +#define OBJ_registeredAddress OBJ_X509,26L + +#define LN_destinationIndicator "destinationIndicator" +#define NID_destinationIndicator 871 +#define OBJ_destinationIndicator OBJ_X509,27L + +#define LN_preferredDeliveryMethod "preferredDeliveryMethod" +#define NID_preferredDeliveryMethod 872 +#define OBJ_preferredDeliveryMethod OBJ_X509,28L + +#define LN_presentationAddress "presentationAddress" +#define NID_presentationAddress 873 +#define OBJ_presentationAddress OBJ_X509,29L + +#define LN_supportedApplicationContext "supportedApplicationContext" +#define NID_supportedApplicationContext 874 +#define OBJ_supportedApplicationContext OBJ_X509,30L + +#define SN_member "member" +#define NID_member 875 +#define OBJ_member OBJ_X509,31L + +#define SN_owner "owner" +#define NID_owner 876 +#define OBJ_owner OBJ_X509,32L + +#define LN_roleOccupant "roleOccupant" +#define NID_roleOccupant 877 +#define OBJ_roleOccupant OBJ_X509,33L + +#define SN_seeAlso "seeAlso" +#define NID_seeAlso 878 +#define OBJ_seeAlso OBJ_X509,34L + +#define LN_userPassword "userPassword" +#define NID_userPassword 879 +#define OBJ_userPassword OBJ_X509,35L + +#define LN_userCertificate "userCertificate" +#define NID_userCertificate 880 +#define OBJ_userCertificate OBJ_X509,36L + +#define LN_cACertificate "cACertificate" +#define NID_cACertificate 881 +#define OBJ_cACertificate OBJ_X509,37L + +#define LN_authorityRevocationList "authorityRevocationList" +#define NID_authorityRevocationList 882 +#define OBJ_authorityRevocationList OBJ_X509,38L + +#define LN_certificateRevocationList "certificateRevocationList" +#define NID_certificateRevocationList 883 +#define OBJ_certificateRevocationList OBJ_X509,39L + +#define LN_crossCertificatePair "crossCertificatePair" +#define NID_crossCertificatePair 884 +#define OBJ_crossCertificatePair OBJ_X509,40L + +#define SN_name "name" +#define LN_name "name" +#define NID_name 173 +#define OBJ_name OBJ_X509,41L + +#define SN_givenName "GN" +#define LN_givenName "givenName" +#define NID_givenName 99 +#define OBJ_givenName OBJ_X509,42L + +#define SN_initials "initials" +#define LN_initials "initials" +#define NID_initials 101 +#define OBJ_initials OBJ_X509,43L + +#define LN_generationQualifier "generationQualifier" +#define NID_generationQualifier 509 +#define OBJ_generationQualifier OBJ_X509,44L + +#define LN_x500UniqueIdentifier "x500UniqueIdentifier" +#define NID_x500UniqueIdentifier 503 +#define OBJ_x500UniqueIdentifier OBJ_X509,45L + +#define SN_dnQualifier "dnQualifier" +#define LN_dnQualifier "dnQualifier" +#define NID_dnQualifier 174 +#define OBJ_dnQualifier OBJ_X509,46L + +#define LN_enhancedSearchGuide "enhancedSearchGuide" +#define NID_enhancedSearchGuide 885 +#define OBJ_enhancedSearchGuide OBJ_X509,47L + +#define LN_protocolInformation "protocolInformation" +#define NID_protocolInformation 886 +#define OBJ_protocolInformation OBJ_X509,48L + +#define LN_distinguishedName "distinguishedName" +#define NID_distinguishedName 887 +#define OBJ_distinguishedName OBJ_X509,49L + +#define LN_uniqueMember "uniqueMember" +#define NID_uniqueMember 888 +#define OBJ_uniqueMember OBJ_X509,50L + +#define LN_houseIdentifier "houseIdentifier" +#define NID_houseIdentifier 889 +#define OBJ_houseIdentifier OBJ_X509,51L + +#define LN_supportedAlgorithms "supportedAlgorithms" +#define NID_supportedAlgorithms 890 +#define OBJ_supportedAlgorithms OBJ_X509,52L + +#define LN_deltaRevocationList "deltaRevocationList" +#define NID_deltaRevocationList 891 +#define OBJ_deltaRevocationList OBJ_X509,53L + +#define SN_dmdName "dmdName" +#define NID_dmdName 892 +#define OBJ_dmdName OBJ_X509,54L + +#define LN_pseudonym "pseudonym" +#define NID_pseudonym 510 +#define OBJ_pseudonym OBJ_X509,65L + +#define SN_role "role" +#define LN_role "role" +#define NID_role 400 +#define OBJ_role OBJ_X509,72L + +#define LN_organizationIdentifier "organizationIdentifier" +#define NID_organizationIdentifier 1089 +#define OBJ_organizationIdentifier OBJ_X509,97L + +#define SN_countryCode3c "c3" +#define LN_countryCode3c "countryCode3c" +#define NID_countryCode3c 1090 +#define OBJ_countryCode3c OBJ_X509,98L + +#define SN_countryCode3n "n3" +#define LN_countryCode3n "countryCode3n" +#define NID_countryCode3n 1091 +#define OBJ_countryCode3n OBJ_X509,99L + +#define LN_dnsName "dnsName" +#define NID_dnsName 1092 +#define OBJ_dnsName OBJ_X509,100L + +#define SN_X500algorithms "X500algorithms" +#define LN_X500algorithms "directory services - algorithms" +#define NID_X500algorithms 378 +#define OBJ_X500algorithms OBJ_X500,8L + +#define SN_rsa "RSA" +#define LN_rsa "rsa" +#define NID_rsa 19 +#define OBJ_rsa OBJ_X500algorithms,1L,1L + +#define SN_mdc2WithRSA "RSA-MDC2" +#define LN_mdc2WithRSA "mdc2WithRSA" +#define NID_mdc2WithRSA 96 +#define OBJ_mdc2WithRSA OBJ_X500algorithms,3L,100L + +#define SN_mdc2 "MDC2" +#define LN_mdc2 "mdc2" +#define NID_mdc2 95 +#define OBJ_mdc2 OBJ_X500algorithms,3L,101L + +#define SN_id_ce "id-ce" +#define NID_id_ce 81 +#define OBJ_id_ce OBJ_X500,29L + +#define SN_subject_directory_attributes "subjectDirectoryAttributes" +#define LN_subject_directory_attributes "X509v3 Subject Directory Attributes" +#define NID_subject_directory_attributes 769 +#define OBJ_subject_directory_attributes OBJ_id_ce,9L + +#define SN_subject_key_identifier "subjectKeyIdentifier" +#define LN_subject_key_identifier "X509v3 Subject Key Identifier" +#define NID_subject_key_identifier 82 +#define OBJ_subject_key_identifier OBJ_id_ce,14L + +#define SN_key_usage "keyUsage" +#define LN_key_usage "X509v3 Key Usage" +#define NID_key_usage 83 +#define OBJ_key_usage OBJ_id_ce,15L + +#define SN_private_key_usage_period "privateKeyUsagePeriod" +#define LN_private_key_usage_period "X509v3 Private Key Usage Period" +#define NID_private_key_usage_period 84 +#define OBJ_private_key_usage_period OBJ_id_ce,16L + +#define SN_subject_alt_name "subjectAltName" +#define LN_subject_alt_name "X509v3 Subject Alternative Name" +#define NID_subject_alt_name 85 +#define OBJ_subject_alt_name OBJ_id_ce,17L + +#define SN_issuer_alt_name "issuerAltName" +#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" +#define NID_issuer_alt_name 86 +#define OBJ_issuer_alt_name OBJ_id_ce,18L + +#define SN_basic_constraints "basicConstraints" +#define LN_basic_constraints "X509v3 Basic Constraints" +#define NID_basic_constraints 87 +#define OBJ_basic_constraints OBJ_id_ce,19L + +#define SN_crl_number "crlNumber" +#define LN_crl_number "X509v3 CRL Number" +#define NID_crl_number 88 +#define OBJ_crl_number OBJ_id_ce,20L + +#define SN_crl_reason "CRLReason" +#define LN_crl_reason "X509v3 CRL Reason Code" +#define NID_crl_reason 141 +#define OBJ_crl_reason OBJ_id_ce,21L + +#define SN_invalidity_date "invalidityDate" +#define LN_invalidity_date "Invalidity Date" +#define NID_invalidity_date 142 +#define OBJ_invalidity_date OBJ_id_ce,24L + +#define SN_delta_crl "deltaCRL" +#define LN_delta_crl "X509v3 Delta CRL Indicator" +#define NID_delta_crl 140 +#define OBJ_delta_crl OBJ_id_ce,27L + +#define SN_issuing_distribution_point "issuingDistributionPoint" +#define LN_issuing_distribution_point "X509v3 Issuing Distribution Point" +#define NID_issuing_distribution_point 770 +#define OBJ_issuing_distribution_point OBJ_id_ce,28L + +#define SN_certificate_issuer "certificateIssuer" +#define LN_certificate_issuer "X509v3 Certificate Issuer" +#define NID_certificate_issuer 771 +#define OBJ_certificate_issuer OBJ_id_ce,29L + +#define SN_name_constraints "nameConstraints" +#define LN_name_constraints "X509v3 Name Constraints" +#define NID_name_constraints 666 +#define OBJ_name_constraints OBJ_id_ce,30L + +#define SN_crl_distribution_points "crlDistributionPoints" +#define LN_crl_distribution_points "X509v3 CRL Distribution Points" +#define NID_crl_distribution_points 103 +#define OBJ_crl_distribution_points OBJ_id_ce,31L + +#define SN_certificate_policies "certificatePolicies" +#define LN_certificate_policies "X509v3 Certificate Policies" +#define NID_certificate_policies 89 +#define OBJ_certificate_policies OBJ_id_ce,32L + +#define SN_any_policy "anyPolicy" +#define LN_any_policy "X509v3 Any Policy" +#define NID_any_policy 746 +#define OBJ_any_policy OBJ_certificate_policies,0L + +#define SN_policy_mappings "policyMappings" +#define LN_policy_mappings "X509v3 Policy Mappings" +#define NID_policy_mappings 747 +#define OBJ_policy_mappings OBJ_id_ce,33L + +#define SN_authority_key_identifier "authorityKeyIdentifier" +#define LN_authority_key_identifier "X509v3 Authority Key Identifier" +#define NID_authority_key_identifier 90 +#define OBJ_authority_key_identifier OBJ_id_ce,35L + +#define SN_policy_constraints "policyConstraints" +#define LN_policy_constraints "X509v3 Policy Constraints" +#define NID_policy_constraints 401 +#define OBJ_policy_constraints OBJ_id_ce,36L + +#define SN_ext_key_usage "extendedKeyUsage" +#define LN_ext_key_usage "X509v3 Extended Key Usage" +#define NID_ext_key_usage 126 +#define OBJ_ext_key_usage OBJ_id_ce,37L + +#define SN_freshest_crl "freshestCRL" +#define LN_freshest_crl "X509v3 Freshest CRL" +#define NID_freshest_crl 857 +#define OBJ_freshest_crl OBJ_id_ce,46L + +#define SN_inhibit_any_policy "inhibitAnyPolicy" +#define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" +#define NID_inhibit_any_policy 748 +#define OBJ_inhibit_any_policy OBJ_id_ce,54L + +#define SN_target_information "targetInformation" +#define LN_target_information "X509v3 AC Targeting" +#define NID_target_information 402 +#define OBJ_target_information OBJ_id_ce,55L + +#define SN_no_rev_avail "noRevAvail" +#define LN_no_rev_avail "X509v3 No Revocation Available" +#define NID_no_rev_avail 403 +#define OBJ_no_rev_avail OBJ_id_ce,56L + +#define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" +#define LN_anyExtendedKeyUsage "Any Extended Key Usage" +#define NID_anyExtendedKeyUsage 910 +#define OBJ_anyExtendedKeyUsage OBJ_ext_key_usage,0L + +#define SN_netscape "Netscape" +#define LN_netscape "Netscape Communications Corp." +#define NID_netscape 57 +#define OBJ_netscape 2L,16L,840L,1L,113730L + +#define SN_netscape_cert_extension "nsCertExt" +#define LN_netscape_cert_extension "Netscape Certificate Extension" +#define NID_netscape_cert_extension 58 +#define OBJ_netscape_cert_extension OBJ_netscape,1L + +#define SN_netscape_data_type "nsDataType" +#define LN_netscape_data_type "Netscape Data Type" +#define NID_netscape_data_type 59 +#define OBJ_netscape_data_type OBJ_netscape,2L + +#define SN_netscape_cert_type "nsCertType" +#define LN_netscape_cert_type "Netscape Cert Type" +#define NID_netscape_cert_type 71 +#define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L + +#define SN_netscape_base_url "nsBaseUrl" +#define LN_netscape_base_url "Netscape Base Url" +#define NID_netscape_base_url 72 +#define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L + +#define SN_netscape_revocation_url "nsRevocationUrl" +#define LN_netscape_revocation_url "Netscape Revocation Url" +#define NID_netscape_revocation_url 73 +#define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L + +#define SN_netscape_ca_revocation_url "nsCaRevocationUrl" +#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" +#define NID_netscape_ca_revocation_url 74 +#define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L + +#define SN_netscape_renewal_url "nsRenewalUrl" +#define LN_netscape_renewal_url "Netscape Renewal Url" +#define NID_netscape_renewal_url 75 +#define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L + +#define SN_netscape_ca_policy_url "nsCaPolicyUrl" +#define LN_netscape_ca_policy_url "Netscape CA Policy Url" +#define NID_netscape_ca_policy_url 76 +#define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L + +#define SN_netscape_ssl_server_name "nsSslServerName" +#define LN_netscape_ssl_server_name "Netscape SSL Server Name" +#define NID_netscape_ssl_server_name 77 +#define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L + +#define SN_netscape_comment "nsComment" +#define LN_netscape_comment "Netscape Comment" +#define NID_netscape_comment 78 +#define OBJ_netscape_comment OBJ_netscape_cert_extension,13L + +#define SN_netscape_cert_sequence "nsCertSequence" +#define LN_netscape_cert_sequence "Netscape Certificate Sequence" +#define NID_netscape_cert_sequence 79 +#define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L + +#define SN_ns_sgc "nsSGC" +#define LN_ns_sgc "Netscape Server Gated Crypto" +#define NID_ns_sgc 139 +#define OBJ_ns_sgc OBJ_netscape,4L,1L + +#define SN_org "ORG" +#define LN_org "org" +#define NID_org 379 +#define OBJ_org OBJ_iso,3L + +#define SN_dod "DOD" +#define LN_dod "dod" +#define NID_dod 380 +#define OBJ_dod OBJ_org,6L + +#define SN_iana "IANA" +#define LN_iana "iana" +#define NID_iana 381 +#define OBJ_iana OBJ_dod,1L + +#define OBJ_internet OBJ_iana + +#define SN_Directory "directory" +#define LN_Directory "Directory" +#define NID_Directory 382 +#define OBJ_Directory OBJ_internet,1L + +#define SN_Management "mgmt" +#define LN_Management "Management" +#define NID_Management 383 +#define OBJ_Management OBJ_internet,2L + +#define SN_Experimental "experimental" +#define LN_Experimental "Experimental" +#define NID_Experimental 384 +#define OBJ_Experimental OBJ_internet,3L + +#define SN_Private "private" +#define LN_Private "Private" +#define NID_Private 385 +#define OBJ_Private OBJ_internet,4L + +#define SN_Security "security" +#define LN_Security "Security" +#define NID_Security 386 +#define OBJ_Security OBJ_internet,5L + +#define SN_SNMPv2 "snmpv2" +#define LN_SNMPv2 "SNMPv2" +#define NID_SNMPv2 387 +#define OBJ_SNMPv2 OBJ_internet,6L + +#define LN_Mail "Mail" +#define NID_Mail 388 +#define OBJ_Mail OBJ_internet,7L + +#define SN_Enterprises "enterprises" +#define LN_Enterprises "Enterprises" +#define NID_Enterprises 389 +#define OBJ_Enterprises OBJ_Private,1L + +#define SN_dcObject "dcobject" +#define LN_dcObject "dcObject" +#define NID_dcObject 390 +#define OBJ_dcObject OBJ_Enterprises,1466L,344L + +#define SN_mime_mhs "mime-mhs" +#define LN_mime_mhs "MIME MHS" +#define NID_mime_mhs 504 +#define OBJ_mime_mhs OBJ_Mail,1L + +#define SN_mime_mhs_headings "mime-mhs-headings" +#define LN_mime_mhs_headings "mime-mhs-headings" +#define NID_mime_mhs_headings 505 +#define OBJ_mime_mhs_headings OBJ_mime_mhs,1L + +#define SN_mime_mhs_bodies "mime-mhs-bodies" +#define LN_mime_mhs_bodies "mime-mhs-bodies" +#define NID_mime_mhs_bodies 506 +#define OBJ_mime_mhs_bodies OBJ_mime_mhs,2L + +#define SN_id_hex_partial_message "id-hex-partial-message" +#define LN_id_hex_partial_message "id-hex-partial-message" +#define NID_id_hex_partial_message 507 +#define OBJ_id_hex_partial_message OBJ_mime_mhs_headings,1L + +#define SN_id_hex_multipart_message "id-hex-multipart-message" +#define LN_id_hex_multipart_message "id-hex-multipart-message" +#define NID_id_hex_multipart_message 508 +#define OBJ_id_hex_multipart_message OBJ_mime_mhs_headings,2L + +#define SN_zlib_compression "ZLIB" +#define LN_zlib_compression "zlib compression" +#define NID_zlib_compression 125 +#define OBJ_zlib_compression OBJ_id_smime_alg,8L + +#define OBJ_csor 2L,16L,840L,1L,101L,3L + +#define OBJ_nistAlgorithms OBJ_csor,4L + +#define OBJ_aes OBJ_nistAlgorithms,1L + +#define SN_aes_128_ecb "AES-128-ECB" +#define LN_aes_128_ecb "aes-128-ecb" +#define NID_aes_128_ecb 418 +#define OBJ_aes_128_ecb OBJ_aes,1L + +#define SN_aes_128_cbc "AES-128-CBC" +#define LN_aes_128_cbc "aes-128-cbc" +#define NID_aes_128_cbc 419 +#define OBJ_aes_128_cbc OBJ_aes,2L + +#define SN_aes_128_ofb128 "AES-128-OFB" +#define LN_aes_128_ofb128 "aes-128-ofb" +#define NID_aes_128_ofb128 420 +#define OBJ_aes_128_ofb128 OBJ_aes,3L + +#define SN_aes_128_cfb128 "AES-128-CFB" +#define LN_aes_128_cfb128 "aes-128-cfb" +#define NID_aes_128_cfb128 421 +#define OBJ_aes_128_cfb128 OBJ_aes,4L + +#define SN_id_aes128_wrap "id-aes128-wrap" +#define NID_id_aes128_wrap 788 +#define OBJ_id_aes128_wrap OBJ_aes,5L + +#define SN_aes_128_gcm "id-aes128-GCM" +#define LN_aes_128_gcm "aes-128-gcm" +#define NID_aes_128_gcm 895 +#define OBJ_aes_128_gcm OBJ_aes,6L + +#define SN_aes_128_ccm "id-aes128-CCM" +#define LN_aes_128_ccm "aes-128-ccm" +#define NID_aes_128_ccm 896 +#define OBJ_aes_128_ccm OBJ_aes,7L + +#define SN_id_aes128_wrap_pad "id-aes128-wrap-pad" +#define NID_id_aes128_wrap_pad 897 +#define OBJ_id_aes128_wrap_pad OBJ_aes,8L + +#define SN_aes_192_ecb "AES-192-ECB" +#define LN_aes_192_ecb "aes-192-ecb" +#define NID_aes_192_ecb 422 +#define OBJ_aes_192_ecb OBJ_aes,21L + +#define SN_aes_192_cbc "AES-192-CBC" +#define LN_aes_192_cbc "aes-192-cbc" +#define NID_aes_192_cbc 423 +#define OBJ_aes_192_cbc OBJ_aes,22L + +#define SN_aes_192_ofb128 "AES-192-OFB" +#define LN_aes_192_ofb128 "aes-192-ofb" +#define NID_aes_192_ofb128 424 +#define OBJ_aes_192_ofb128 OBJ_aes,23L + +#define SN_aes_192_cfb128 "AES-192-CFB" +#define LN_aes_192_cfb128 "aes-192-cfb" +#define NID_aes_192_cfb128 425 +#define OBJ_aes_192_cfb128 OBJ_aes,24L + +#define SN_id_aes192_wrap "id-aes192-wrap" +#define NID_id_aes192_wrap 789 +#define OBJ_id_aes192_wrap OBJ_aes,25L + +#define SN_aes_192_gcm "id-aes192-GCM" +#define LN_aes_192_gcm "aes-192-gcm" +#define NID_aes_192_gcm 898 +#define OBJ_aes_192_gcm OBJ_aes,26L + +#define SN_aes_192_ccm "id-aes192-CCM" +#define LN_aes_192_ccm "aes-192-ccm" +#define NID_aes_192_ccm 899 +#define OBJ_aes_192_ccm OBJ_aes,27L + +#define SN_id_aes192_wrap_pad "id-aes192-wrap-pad" +#define NID_id_aes192_wrap_pad 900 +#define OBJ_id_aes192_wrap_pad OBJ_aes,28L + +#define SN_aes_256_ecb "AES-256-ECB" +#define LN_aes_256_ecb "aes-256-ecb" +#define NID_aes_256_ecb 426 +#define OBJ_aes_256_ecb OBJ_aes,41L + +#define SN_aes_256_cbc "AES-256-CBC" +#define LN_aes_256_cbc "aes-256-cbc" +#define NID_aes_256_cbc 427 +#define OBJ_aes_256_cbc OBJ_aes,42L + +#define SN_aes_256_ofb128 "AES-256-OFB" +#define LN_aes_256_ofb128 "aes-256-ofb" +#define NID_aes_256_ofb128 428 +#define OBJ_aes_256_ofb128 OBJ_aes,43L + +#define SN_aes_256_cfb128 "AES-256-CFB" +#define LN_aes_256_cfb128 "aes-256-cfb" +#define NID_aes_256_cfb128 429 +#define OBJ_aes_256_cfb128 OBJ_aes,44L + +#define SN_id_aes256_wrap "id-aes256-wrap" +#define NID_id_aes256_wrap 790 +#define OBJ_id_aes256_wrap OBJ_aes,45L + +#define SN_aes_256_gcm "id-aes256-GCM" +#define LN_aes_256_gcm "aes-256-gcm" +#define NID_aes_256_gcm 901 +#define OBJ_aes_256_gcm OBJ_aes,46L + +#define SN_aes_256_ccm "id-aes256-CCM" +#define LN_aes_256_ccm "aes-256-ccm" +#define NID_aes_256_ccm 902 +#define OBJ_aes_256_ccm OBJ_aes,47L + +#define SN_id_aes256_wrap_pad "id-aes256-wrap-pad" +#define NID_id_aes256_wrap_pad 903 +#define OBJ_id_aes256_wrap_pad OBJ_aes,48L + +#define SN_aes_128_xts "AES-128-XTS" +#define LN_aes_128_xts "aes-128-xts" +#define NID_aes_128_xts 913 +#define OBJ_aes_128_xts OBJ_ieee_siswg,0L,1L,1L + +#define SN_aes_256_xts "AES-256-XTS" +#define LN_aes_256_xts "aes-256-xts" +#define NID_aes_256_xts 914 +#define OBJ_aes_256_xts OBJ_ieee_siswg,0L,1L,2L + +#define SN_aes_128_cfb1 "AES-128-CFB1" +#define LN_aes_128_cfb1 "aes-128-cfb1" +#define NID_aes_128_cfb1 650 + +#define SN_aes_192_cfb1 "AES-192-CFB1" +#define LN_aes_192_cfb1 "aes-192-cfb1" +#define NID_aes_192_cfb1 651 + +#define SN_aes_256_cfb1 "AES-256-CFB1" +#define LN_aes_256_cfb1 "aes-256-cfb1" +#define NID_aes_256_cfb1 652 + +#define SN_aes_128_cfb8 "AES-128-CFB8" +#define LN_aes_128_cfb8 "aes-128-cfb8" +#define NID_aes_128_cfb8 653 + +#define SN_aes_192_cfb8 "AES-192-CFB8" +#define LN_aes_192_cfb8 "aes-192-cfb8" +#define NID_aes_192_cfb8 654 + +#define SN_aes_256_cfb8 "AES-256-CFB8" +#define LN_aes_256_cfb8 "aes-256-cfb8" +#define NID_aes_256_cfb8 655 + +#define SN_aes_128_ctr "AES-128-CTR" +#define LN_aes_128_ctr "aes-128-ctr" +#define NID_aes_128_ctr 904 + +#define SN_aes_192_ctr "AES-192-CTR" +#define LN_aes_192_ctr "aes-192-ctr" +#define NID_aes_192_ctr 905 + +#define SN_aes_256_ctr "AES-256-CTR" +#define LN_aes_256_ctr "aes-256-ctr" +#define NID_aes_256_ctr 906 + +#define SN_aes_128_ocb "AES-128-OCB" +#define LN_aes_128_ocb "aes-128-ocb" +#define NID_aes_128_ocb 958 + +#define SN_aes_192_ocb "AES-192-OCB" +#define LN_aes_192_ocb "aes-192-ocb" +#define NID_aes_192_ocb 959 + +#define SN_aes_256_ocb "AES-256-OCB" +#define LN_aes_256_ocb "aes-256-ocb" +#define NID_aes_256_ocb 960 + +#define SN_des_cfb1 "DES-CFB1" +#define LN_des_cfb1 "des-cfb1" +#define NID_des_cfb1 656 + +#define SN_des_cfb8 "DES-CFB8" +#define LN_des_cfb8 "des-cfb8" +#define NID_des_cfb8 657 + +#define SN_des_ede3_cfb1 "DES-EDE3-CFB1" +#define LN_des_ede3_cfb1 "des-ede3-cfb1" +#define NID_des_ede3_cfb1 658 + +#define SN_des_ede3_cfb8 "DES-EDE3-CFB8" +#define LN_des_ede3_cfb8 "des-ede3-cfb8" +#define NID_des_ede3_cfb8 659 + +#define OBJ_nist_hashalgs OBJ_nistAlgorithms,2L + +#define SN_sha256 "SHA256" +#define LN_sha256 "sha256" +#define NID_sha256 672 +#define OBJ_sha256 OBJ_nist_hashalgs,1L + +#define SN_sha384 "SHA384" +#define LN_sha384 "sha384" +#define NID_sha384 673 +#define OBJ_sha384 OBJ_nist_hashalgs,2L + +#define SN_sha512 "SHA512" +#define LN_sha512 "sha512" +#define NID_sha512 674 +#define OBJ_sha512 OBJ_nist_hashalgs,3L + +#define SN_sha224 "SHA224" +#define LN_sha224 "sha224" +#define NID_sha224 675 +#define OBJ_sha224 OBJ_nist_hashalgs,4L + +#define SN_sha512_224 "SHA512-224" +#define LN_sha512_224 "sha512-224" +#define NID_sha512_224 1094 +#define OBJ_sha512_224 OBJ_nist_hashalgs,5L + +#define SN_sha512_256 "SHA512-256" +#define LN_sha512_256 "sha512-256" +#define NID_sha512_256 1095 +#define OBJ_sha512_256 OBJ_nist_hashalgs,6L + +#define SN_sha3_224 "SHA3-224" +#define LN_sha3_224 "sha3-224" +#define NID_sha3_224 1096 +#define OBJ_sha3_224 OBJ_nist_hashalgs,7L + +#define SN_sha3_256 "SHA3-256" +#define LN_sha3_256 "sha3-256" +#define NID_sha3_256 1097 +#define OBJ_sha3_256 OBJ_nist_hashalgs,8L + +#define SN_sha3_384 "SHA3-384" +#define LN_sha3_384 "sha3-384" +#define NID_sha3_384 1098 +#define OBJ_sha3_384 OBJ_nist_hashalgs,9L + +#define SN_sha3_512 "SHA3-512" +#define LN_sha3_512 "sha3-512" +#define NID_sha3_512 1099 +#define OBJ_sha3_512 OBJ_nist_hashalgs,10L + +#define SN_shake128 "SHAKE128" +#define LN_shake128 "shake128" +#define NID_shake128 1100 +#define OBJ_shake128 OBJ_nist_hashalgs,11L + +#define SN_shake256 "SHAKE256" +#define LN_shake256 "shake256" +#define NID_shake256 1101 +#define OBJ_shake256 OBJ_nist_hashalgs,12L + +#define SN_hmac_sha3_224 "id-hmacWithSHA3-224" +#define LN_hmac_sha3_224 "hmac-sha3-224" +#define NID_hmac_sha3_224 1102 +#define OBJ_hmac_sha3_224 OBJ_nist_hashalgs,13L + +#define SN_hmac_sha3_256 "id-hmacWithSHA3-256" +#define LN_hmac_sha3_256 "hmac-sha3-256" +#define NID_hmac_sha3_256 1103 +#define OBJ_hmac_sha3_256 OBJ_nist_hashalgs,14L + +#define SN_hmac_sha3_384 "id-hmacWithSHA3-384" +#define LN_hmac_sha3_384 "hmac-sha3-384" +#define NID_hmac_sha3_384 1104 +#define OBJ_hmac_sha3_384 OBJ_nist_hashalgs,15L + +#define SN_hmac_sha3_512 "id-hmacWithSHA3-512" +#define LN_hmac_sha3_512 "hmac-sha3-512" +#define NID_hmac_sha3_512 1105 +#define OBJ_hmac_sha3_512 OBJ_nist_hashalgs,16L + +#define OBJ_dsa_with_sha2 OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA224 "dsa_with_SHA224" +#define NID_dsa_with_SHA224 802 +#define OBJ_dsa_with_SHA224 OBJ_dsa_with_sha2,1L + +#define SN_dsa_with_SHA256 "dsa_with_SHA256" +#define NID_dsa_with_SHA256 803 +#define OBJ_dsa_with_SHA256 OBJ_dsa_with_sha2,2L + +#define OBJ_sigAlgs OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA384 "id-dsa-with-sha384" +#define LN_dsa_with_SHA384 "dsa_with_SHA384" +#define NID_dsa_with_SHA384 1106 +#define OBJ_dsa_with_SHA384 OBJ_sigAlgs,3L + +#define SN_dsa_with_SHA512 "id-dsa-with-sha512" +#define LN_dsa_with_SHA512 "dsa_with_SHA512" +#define NID_dsa_with_SHA512 1107 +#define OBJ_dsa_with_SHA512 OBJ_sigAlgs,4L + +#define SN_dsa_with_SHA3_224 "id-dsa-with-sha3-224" +#define LN_dsa_with_SHA3_224 "dsa_with_SHA3-224" +#define NID_dsa_with_SHA3_224 1108 +#define OBJ_dsa_with_SHA3_224 OBJ_sigAlgs,5L + +#define SN_dsa_with_SHA3_256 "id-dsa-with-sha3-256" +#define LN_dsa_with_SHA3_256 "dsa_with_SHA3-256" +#define NID_dsa_with_SHA3_256 1109 +#define OBJ_dsa_with_SHA3_256 OBJ_sigAlgs,6L + +#define SN_dsa_with_SHA3_384 "id-dsa-with-sha3-384" +#define LN_dsa_with_SHA3_384 "dsa_with_SHA3-384" +#define NID_dsa_with_SHA3_384 1110 +#define OBJ_dsa_with_SHA3_384 OBJ_sigAlgs,7L + +#define SN_dsa_with_SHA3_512 "id-dsa-with-sha3-512" +#define LN_dsa_with_SHA3_512 "dsa_with_SHA3-512" +#define NID_dsa_with_SHA3_512 1111 +#define OBJ_dsa_with_SHA3_512 OBJ_sigAlgs,8L + +#define SN_ecdsa_with_SHA3_224 "id-ecdsa-with-sha3-224" +#define LN_ecdsa_with_SHA3_224 "ecdsa_with_SHA3-224" +#define NID_ecdsa_with_SHA3_224 1112 +#define OBJ_ecdsa_with_SHA3_224 OBJ_sigAlgs,9L + +#define SN_ecdsa_with_SHA3_256 "id-ecdsa-with-sha3-256" +#define LN_ecdsa_with_SHA3_256 "ecdsa_with_SHA3-256" +#define NID_ecdsa_with_SHA3_256 1113 +#define OBJ_ecdsa_with_SHA3_256 OBJ_sigAlgs,10L + +#define SN_ecdsa_with_SHA3_384 "id-ecdsa-with-sha3-384" +#define LN_ecdsa_with_SHA3_384 "ecdsa_with_SHA3-384" +#define NID_ecdsa_with_SHA3_384 1114 +#define OBJ_ecdsa_with_SHA3_384 OBJ_sigAlgs,11L + +#define SN_ecdsa_with_SHA3_512 "id-ecdsa-with-sha3-512" +#define LN_ecdsa_with_SHA3_512 "ecdsa_with_SHA3-512" +#define NID_ecdsa_with_SHA3_512 1115 +#define OBJ_ecdsa_with_SHA3_512 OBJ_sigAlgs,12L + +#define SN_RSA_SHA3_224 "id-rsassa-pkcs1-v1_5-with-sha3-224" +#define LN_RSA_SHA3_224 "RSA-SHA3-224" +#define NID_RSA_SHA3_224 1116 +#define OBJ_RSA_SHA3_224 OBJ_sigAlgs,13L + +#define SN_RSA_SHA3_256 "id-rsassa-pkcs1-v1_5-with-sha3-256" +#define LN_RSA_SHA3_256 "RSA-SHA3-256" +#define NID_RSA_SHA3_256 1117 +#define OBJ_RSA_SHA3_256 OBJ_sigAlgs,14L + +#define SN_RSA_SHA3_384 "id-rsassa-pkcs1-v1_5-with-sha3-384" +#define LN_RSA_SHA3_384 "RSA-SHA3-384" +#define NID_RSA_SHA3_384 1118 +#define OBJ_RSA_SHA3_384 OBJ_sigAlgs,15L + +#define SN_RSA_SHA3_512 "id-rsassa-pkcs1-v1_5-with-sha3-512" +#define LN_RSA_SHA3_512 "RSA-SHA3-512" +#define NID_RSA_SHA3_512 1119 +#define OBJ_RSA_SHA3_512 OBJ_sigAlgs,16L + +#define SN_hold_instruction_code "holdInstructionCode" +#define LN_hold_instruction_code "Hold Instruction Code" +#define NID_hold_instruction_code 430 +#define OBJ_hold_instruction_code OBJ_id_ce,23L + +#define OBJ_holdInstruction OBJ_X9_57,2L + +#define SN_hold_instruction_none "holdInstructionNone" +#define LN_hold_instruction_none "Hold Instruction None" +#define NID_hold_instruction_none 431 +#define OBJ_hold_instruction_none OBJ_holdInstruction,1L + +#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer" +#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer" +#define NID_hold_instruction_call_issuer 432 +#define OBJ_hold_instruction_call_issuer OBJ_holdInstruction,2L + +#define SN_hold_instruction_reject "holdInstructionReject" +#define LN_hold_instruction_reject "Hold Instruction Reject" +#define NID_hold_instruction_reject 433 +#define OBJ_hold_instruction_reject OBJ_holdInstruction,3L + +#define SN_data "data" +#define NID_data 434 +#define OBJ_data OBJ_itu_t,9L + +#define SN_pss "pss" +#define NID_pss 435 +#define OBJ_pss OBJ_data,2342L + +#define SN_ucl "ucl" +#define NID_ucl 436 +#define OBJ_ucl OBJ_pss,19200300L + +#define SN_pilot "pilot" +#define NID_pilot 437 +#define OBJ_pilot OBJ_ucl,100L + +#define LN_pilotAttributeType "pilotAttributeType" +#define NID_pilotAttributeType 438 +#define OBJ_pilotAttributeType OBJ_pilot,1L + +#define LN_pilotAttributeSyntax "pilotAttributeSyntax" +#define NID_pilotAttributeSyntax 439 +#define OBJ_pilotAttributeSyntax OBJ_pilot,3L + +#define LN_pilotObjectClass "pilotObjectClass" +#define NID_pilotObjectClass 440 +#define OBJ_pilotObjectClass OBJ_pilot,4L + +#define LN_pilotGroups "pilotGroups" +#define NID_pilotGroups 441 +#define OBJ_pilotGroups OBJ_pilot,10L + +#define LN_iA5StringSyntax "iA5StringSyntax" +#define NID_iA5StringSyntax 442 +#define OBJ_iA5StringSyntax OBJ_pilotAttributeSyntax,4L + +#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax" +#define NID_caseIgnoreIA5StringSyntax 443 +#define OBJ_caseIgnoreIA5StringSyntax OBJ_pilotAttributeSyntax,5L + +#define LN_pilotObject "pilotObject" +#define NID_pilotObject 444 +#define OBJ_pilotObject OBJ_pilotObjectClass,3L + +#define LN_pilotPerson "pilotPerson" +#define NID_pilotPerson 445 +#define OBJ_pilotPerson OBJ_pilotObjectClass,4L + +#define SN_account "account" +#define NID_account 446 +#define OBJ_account OBJ_pilotObjectClass,5L + +#define SN_document "document" +#define NID_document 447 +#define OBJ_document OBJ_pilotObjectClass,6L + +#define SN_room "room" +#define NID_room 448 +#define OBJ_room OBJ_pilotObjectClass,7L + +#define LN_documentSeries "documentSeries" +#define NID_documentSeries 449 +#define OBJ_documentSeries OBJ_pilotObjectClass,9L + +#define SN_Domain "domain" +#define LN_Domain "Domain" +#define NID_Domain 392 +#define OBJ_Domain OBJ_pilotObjectClass,13L + +#define LN_rFC822localPart "rFC822localPart" +#define NID_rFC822localPart 450 +#define OBJ_rFC822localPart OBJ_pilotObjectClass,14L + +#define LN_dNSDomain "dNSDomain" +#define NID_dNSDomain 451 +#define OBJ_dNSDomain OBJ_pilotObjectClass,15L + +#define LN_domainRelatedObject "domainRelatedObject" +#define NID_domainRelatedObject 452 +#define OBJ_domainRelatedObject OBJ_pilotObjectClass,17L + +#define LN_friendlyCountry "friendlyCountry" +#define NID_friendlyCountry 453 +#define OBJ_friendlyCountry OBJ_pilotObjectClass,18L + +#define LN_simpleSecurityObject "simpleSecurityObject" +#define NID_simpleSecurityObject 454 +#define OBJ_simpleSecurityObject OBJ_pilotObjectClass,19L + +#define LN_pilotOrganization "pilotOrganization" +#define NID_pilotOrganization 455 +#define OBJ_pilotOrganization OBJ_pilotObjectClass,20L + +#define LN_pilotDSA "pilotDSA" +#define NID_pilotDSA 456 +#define OBJ_pilotDSA OBJ_pilotObjectClass,21L + +#define LN_qualityLabelledData "qualityLabelledData" +#define NID_qualityLabelledData 457 +#define OBJ_qualityLabelledData OBJ_pilotObjectClass,22L + +#define SN_userId "UID" +#define LN_userId "userId" +#define NID_userId 458 +#define OBJ_userId OBJ_pilotAttributeType,1L + +#define LN_textEncodedORAddress "textEncodedORAddress" +#define NID_textEncodedORAddress 459 +#define OBJ_textEncodedORAddress OBJ_pilotAttributeType,2L + +#define SN_rfc822Mailbox "mail" +#define LN_rfc822Mailbox "rfc822Mailbox" +#define NID_rfc822Mailbox 460 +#define OBJ_rfc822Mailbox OBJ_pilotAttributeType,3L + +#define SN_info "info" +#define NID_info 461 +#define OBJ_info OBJ_pilotAttributeType,4L + +#define LN_favouriteDrink "favouriteDrink" +#define NID_favouriteDrink 462 +#define OBJ_favouriteDrink OBJ_pilotAttributeType,5L + +#define LN_roomNumber "roomNumber" +#define NID_roomNumber 463 +#define OBJ_roomNumber OBJ_pilotAttributeType,6L + +#define SN_photo "photo" +#define NID_photo 464 +#define OBJ_photo OBJ_pilotAttributeType,7L + +#define LN_userClass "userClass" +#define NID_userClass 465 +#define OBJ_userClass OBJ_pilotAttributeType,8L + +#define SN_host "host" +#define NID_host 466 +#define OBJ_host OBJ_pilotAttributeType,9L + +#define SN_manager "manager" +#define NID_manager 467 +#define OBJ_manager OBJ_pilotAttributeType,10L + +#define LN_documentIdentifier "documentIdentifier" +#define NID_documentIdentifier 468 +#define OBJ_documentIdentifier OBJ_pilotAttributeType,11L + +#define LN_documentTitle "documentTitle" +#define NID_documentTitle 469 +#define OBJ_documentTitle OBJ_pilotAttributeType,12L + +#define LN_documentVersion "documentVersion" +#define NID_documentVersion 470 +#define OBJ_documentVersion OBJ_pilotAttributeType,13L + +#define LN_documentAuthor "documentAuthor" +#define NID_documentAuthor 471 +#define OBJ_documentAuthor OBJ_pilotAttributeType,14L + +#define LN_documentLocation "documentLocation" +#define NID_documentLocation 472 +#define OBJ_documentLocation OBJ_pilotAttributeType,15L + +#define LN_homeTelephoneNumber "homeTelephoneNumber" +#define NID_homeTelephoneNumber 473 +#define OBJ_homeTelephoneNumber OBJ_pilotAttributeType,20L + +#define SN_secretary "secretary" +#define NID_secretary 474 +#define OBJ_secretary OBJ_pilotAttributeType,21L + +#define LN_otherMailbox "otherMailbox" +#define NID_otherMailbox 475 +#define OBJ_otherMailbox OBJ_pilotAttributeType,22L + +#define LN_lastModifiedTime "lastModifiedTime" +#define NID_lastModifiedTime 476 +#define OBJ_lastModifiedTime OBJ_pilotAttributeType,23L + +#define LN_lastModifiedBy "lastModifiedBy" +#define NID_lastModifiedBy 477 +#define OBJ_lastModifiedBy OBJ_pilotAttributeType,24L + +#define SN_domainComponent "DC" +#define LN_domainComponent "domainComponent" +#define NID_domainComponent 391 +#define OBJ_domainComponent OBJ_pilotAttributeType,25L + +#define LN_aRecord "aRecord" +#define NID_aRecord 478 +#define OBJ_aRecord OBJ_pilotAttributeType,26L + +#define LN_pilotAttributeType27 "pilotAttributeType27" +#define NID_pilotAttributeType27 479 +#define OBJ_pilotAttributeType27 OBJ_pilotAttributeType,27L + +#define LN_mXRecord "mXRecord" +#define NID_mXRecord 480 +#define OBJ_mXRecord OBJ_pilotAttributeType,28L + +#define LN_nSRecord "nSRecord" +#define NID_nSRecord 481 +#define OBJ_nSRecord OBJ_pilotAttributeType,29L + +#define LN_sOARecord "sOARecord" +#define NID_sOARecord 482 +#define OBJ_sOARecord OBJ_pilotAttributeType,30L + +#define LN_cNAMERecord "cNAMERecord" +#define NID_cNAMERecord 483 +#define OBJ_cNAMERecord OBJ_pilotAttributeType,31L + +#define LN_associatedDomain "associatedDomain" +#define NID_associatedDomain 484 +#define OBJ_associatedDomain OBJ_pilotAttributeType,37L + +#define LN_associatedName "associatedName" +#define NID_associatedName 485 +#define OBJ_associatedName OBJ_pilotAttributeType,38L + +#define LN_homePostalAddress "homePostalAddress" +#define NID_homePostalAddress 486 +#define OBJ_homePostalAddress OBJ_pilotAttributeType,39L + +#define LN_personalTitle "personalTitle" +#define NID_personalTitle 487 +#define OBJ_personalTitle OBJ_pilotAttributeType,40L + +#define LN_mobileTelephoneNumber "mobileTelephoneNumber" +#define NID_mobileTelephoneNumber 488 +#define OBJ_mobileTelephoneNumber OBJ_pilotAttributeType,41L + +#define LN_pagerTelephoneNumber "pagerTelephoneNumber" +#define NID_pagerTelephoneNumber 489 +#define OBJ_pagerTelephoneNumber OBJ_pilotAttributeType,42L + +#define LN_friendlyCountryName "friendlyCountryName" +#define NID_friendlyCountryName 490 +#define OBJ_friendlyCountryName OBJ_pilotAttributeType,43L + +#define SN_uniqueIdentifier "uid" +#define LN_uniqueIdentifier "uniqueIdentifier" +#define NID_uniqueIdentifier 102 +#define OBJ_uniqueIdentifier OBJ_pilotAttributeType,44L + +#define LN_organizationalStatus "organizationalStatus" +#define NID_organizationalStatus 491 +#define OBJ_organizationalStatus OBJ_pilotAttributeType,45L + +#define LN_janetMailbox "janetMailbox" +#define NID_janetMailbox 492 +#define OBJ_janetMailbox OBJ_pilotAttributeType,46L + +#define LN_mailPreferenceOption "mailPreferenceOption" +#define NID_mailPreferenceOption 493 +#define OBJ_mailPreferenceOption OBJ_pilotAttributeType,47L + +#define LN_buildingName "buildingName" +#define NID_buildingName 494 +#define OBJ_buildingName OBJ_pilotAttributeType,48L + +#define LN_dSAQuality "dSAQuality" +#define NID_dSAQuality 495 +#define OBJ_dSAQuality OBJ_pilotAttributeType,49L + +#define LN_singleLevelQuality "singleLevelQuality" +#define NID_singleLevelQuality 496 +#define OBJ_singleLevelQuality OBJ_pilotAttributeType,50L + +#define LN_subtreeMinimumQuality "subtreeMinimumQuality" +#define NID_subtreeMinimumQuality 497 +#define OBJ_subtreeMinimumQuality OBJ_pilotAttributeType,51L + +#define LN_subtreeMaximumQuality "subtreeMaximumQuality" +#define NID_subtreeMaximumQuality 498 +#define OBJ_subtreeMaximumQuality OBJ_pilotAttributeType,52L + +#define LN_personalSignature "personalSignature" +#define NID_personalSignature 499 +#define OBJ_personalSignature OBJ_pilotAttributeType,53L + +#define LN_dITRedirect "dITRedirect" +#define NID_dITRedirect 500 +#define OBJ_dITRedirect OBJ_pilotAttributeType,54L + +#define SN_audio "audio" +#define NID_audio 501 +#define OBJ_audio OBJ_pilotAttributeType,55L + +#define LN_documentPublisher "documentPublisher" +#define NID_documentPublisher 502 +#define OBJ_documentPublisher OBJ_pilotAttributeType,56L + +#define SN_id_set "id-set" +#define LN_id_set "Secure Electronic Transactions" +#define NID_id_set 512 +#define OBJ_id_set OBJ_international_organizations,42L + +#define SN_set_ctype "set-ctype" +#define LN_set_ctype "content types" +#define NID_set_ctype 513 +#define OBJ_set_ctype OBJ_id_set,0L + +#define SN_set_msgExt "set-msgExt" +#define LN_set_msgExt "message extensions" +#define NID_set_msgExt 514 +#define OBJ_set_msgExt OBJ_id_set,1L + +#define SN_set_attr "set-attr" +#define NID_set_attr 515 +#define OBJ_set_attr OBJ_id_set,3L + +#define SN_set_policy "set-policy" +#define NID_set_policy 516 +#define OBJ_set_policy OBJ_id_set,5L + +#define SN_set_certExt "set-certExt" +#define LN_set_certExt "certificate extensions" +#define NID_set_certExt 517 +#define OBJ_set_certExt OBJ_id_set,7L + +#define SN_set_brand "set-brand" +#define NID_set_brand 518 +#define OBJ_set_brand OBJ_id_set,8L + +#define SN_setct_PANData "setct-PANData" +#define NID_setct_PANData 519 +#define OBJ_setct_PANData OBJ_set_ctype,0L + +#define SN_setct_PANToken "setct-PANToken" +#define NID_setct_PANToken 520 +#define OBJ_setct_PANToken OBJ_set_ctype,1L + +#define SN_setct_PANOnly "setct-PANOnly" +#define NID_setct_PANOnly 521 +#define OBJ_setct_PANOnly OBJ_set_ctype,2L + +#define SN_setct_OIData "setct-OIData" +#define NID_setct_OIData 522 +#define OBJ_setct_OIData OBJ_set_ctype,3L + +#define SN_setct_PI "setct-PI" +#define NID_setct_PI 523 +#define OBJ_setct_PI OBJ_set_ctype,4L + +#define SN_setct_PIData "setct-PIData" +#define NID_setct_PIData 524 +#define OBJ_setct_PIData OBJ_set_ctype,5L + +#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned" +#define NID_setct_PIDataUnsigned 525 +#define OBJ_setct_PIDataUnsigned OBJ_set_ctype,6L + +#define SN_setct_HODInput "setct-HODInput" +#define NID_setct_HODInput 526 +#define OBJ_setct_HODInput OBJ_set_ctype,7L + +#define SN_setct_AuthResBaggage "setct-AuthResBaggage" +#define NID_setct_AuthResBaggage 527 +#define OBJ_setct_AuthResBaggage OBJ_set_ctype,8L + +#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage" +#define NID_setct_AuthRevReqBaggage 528 +#define OBJ_setct_AuthRevReqBaggage OBJ_set_ctype,9L + +#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage" +#define NID_setct_AuthRevResBaggage 529 +#define OBJ_setct_AuthRevResBaggage OBJ_set_ctype,10L + +#define SN_setct_CapTokenSeq "setct-CapTokenSeq" +#define NID_setct_CapTokenSeq 530 +#define OBJ_setct_CapTokenSeq OBJ_set_ctype,11L + +#define SN_setct_PInitResData "setct-PInitResData" +#define NID_setct_PInitResData 531 +#define OBJ_setct_PInitResData OBJ_set_ctype,12L + +#define SN_setct_PI_TBS "setct-PI-TBS" +#define NID_setct_PI_TBS 532 +#define OBJ_setct_PI_TBS OBJ_set_ctype,13L + +#define SN_setct_PResData "setct-PResData" +#define NID_setct_PResData 533 +#define OBJ_setct_PResData OBJ_set_ctype,14L + +#define SN_setct_AuthReqTBS "setct-AuthReqTBS" +#define NID_setct_AuthReqTBS 534 +#define OBJ_setct_AuthReqTBS OBJ_set_ctype,16L + +#define SN_setct_AuthResTBS "setct-AuthResTBS" +#define NID_setct_AuthResTBS 535 +#define OBJ_setct_AuthResTBS OBJ_set_ctype,17L + +#define SN_setct_AuthResTBSX "setct-AuthResTBSX" +#define NID_setct_AuthResTBSX 536 +#define OBJ_setct_AuthResTBSX OBJ_set_ctype,18L + +#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS" +#define NID_setct_AuthTokenTBS 537 +#define OBJ_setct_AuthTokenTBS OBJ_set_ctype,19L + +#define SN_setct_CapTokenData "setct-CapTokenData" +#define NID_setct_CapTokenData 538 +#define OBJ_setct_CapTokenData OBJ_set_ctype,20L + +#define SN_setct_CapTokenTBS "setct-CapTokenTBS" +#define NID_setct_CapTokenTBS 539 +#define OBJ_setct_CapTokenTBS OBJ_set_ctype,21L + +#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg" +#define NID_setct_AcqCardCodeMsg 540 +#define OBJ_setct_AcqCardCodeMsg OBJ_set_ctype,22L + +#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS" +#define NID_setct_AuthRevReqTBS 541 +#define OBJ_setct_AuthRevReqTBS OBJ_set_ctype,23L + +#define SN_setct_AuthRevResData "setct-AuthRevResData" +#define NID_setct_AuthRevResData 542 +#define OBJ_setct_AuthRevResData OBJ_set_ctype,24L + +#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS" +#define NID_setct_AuthRevResTBS 543 +#define OBJ_setct_AuthRevResTBS OBJ_set_ctype,25L + +#define SN_setct_CapReqTBS "setct-CapReqTBS" +#define NID_setct_CapReqTBS 544 +#define OBJ_setct_CapReqTBS OBJ_set_ctype,26L + +#define SN_setct_CapReqTBSX "setct-CapReqTBSX" +#define NID_setct_CapReqTBSX 545 +#define OBJ_setct_CapReqTBSX OBJ_set_ctype,27L + +#define SN_setct_CapResData "setct-CapResData" +#define NID_setct_CapResData 546 +#define OBJ_setct_CapResData OBJ_set_ctype,28L + +#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS" +#define NID_setct_CapRevReqTBS 547 +#define OBJ_setct_CapRevReqTBS OBJ_set_ctype,29L + +#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX" +#define NID_setct_CapRevReqTBSX 548 +#define OBJ_setct_CapRevReqTBSX OBJ_set_ctype,30L + +#define SN_setct_CapRevResData "setct-CapRevResData" +#define NID_setct_CapRevResData 549 +#define OBJ_setct_CapRevResData OBJ_set_ctype,31L + +#define SN_setct_CredReqTBS "setct-CredReqTBS" +#define NID_setct_CredReqTBS 550 +#define OBJ_setct_CredReqTBS OBJ_set_ctype,32L + +#define SN_setct_CredReqTBSX "setct-CredReqTBSX" +#define NID_setct_CredReqTBSX 551 +#define OBJ_setct_CredReqTBSX OBJ_set_ctype,33L + +#define SN_setct_CredResData "setct-CredResData" +#define NID_setct_CredResData 552 +#define OBJ_setct_CredResData OBJ_set_ctype,34L + +#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS" +#define NID_setct_CredRevReqTBS 553 +#define OBJ_setct_CredRevReqTBS OBJ_set_ctype,35L + +#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX" +#define NID_setct_CredRevReqTBSX 554 +#define OBJ_setct_CredRevReqTBSX OBJ_set_ctype,36L + +#define SN_setct_CredRevResData "setct-CredRevResData" +#define NID_setct_CredRevResData 555 +#define OBJ_setct_CredRevResData OBJ_set_ctype,37L + +#define SN_setct_PCertReqData "setct-PCertReqData" +#define NID_setct_PCertReqData 556 +#define OBJ_setct_PCertReqData OBJ_set_ctype,38L + +#define SN_setct_PCertResTBS "setct-PCertResTBS" +#define NID_setct_PCertResTBS 557 +#define OBJ_setct_PCertResTBS OBJ_set_ctype,39L + +#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData" +#define NID_setct_BatchAdminReqData 558 +#define OBJ_setct_BatchAdminReqData OBJ_set_ctype,40L + +#define SN_setct_BatchAdminResData "setct-BatchAdminResData" +#define NID_setct_BatchAdminResData 559 +#define OBJ_setct_BatchAdminResData OBJ_set_ctype,41L + +#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS" +#define NID_setct_CardCInitResTBS 560 +#define OBJ_setct_CardCInitResTBS OBJ_set_ctype,42L + +#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS" +#define NID_setct_MeAqCInitResTBS 561 +#define OBJ_setct_MeAqCInitResTBS OBJ_set_ctype,43L + +#define SN_setct_RegFormResTBS "setct-RegFormResTBS" +#define NID_setct_RegFormResTBS 562 +#define OBJ_setct_RegFormResTBS OBJ_set_ctype,44L + +#define SN_setct_CertReqData "setct-CertReqData" +#define NID_setct_CertReqData 563 +#define OBJ_setct_CertReqData OBJ_set_ctype,45L + +#define SN_setct_CertReqTBS "setct-CertReqTBS" +#define NID_setct_CertReqTBS 564 +#define OBJ_setct_CertReqTBS OBJ_set_ctype,46L + +#define SN_setct_CertResData "setct-CertResData" +#define NID_setct_CertResData 565 +#define OBJ_setct_CertResData OBJ_set_ctype,47L + +#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS" +#define NID_setct_CertInqReqTBS 566 +#define OBJ_setct_CertInqReqTBS OBJ_set_ctype,48L + +#define SN_setct_ErrorTBS "setct-ErrorTBS" +#define NID_setct_ErrorTBS 567 +#define OBJ_setct_ErrorTBS OBJ_set_ctype,49L + +#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE" +#define NID_setct_PIDualSignedTBE 568 +#define OBJ_setct_PIDualSignedTBE OBJ_set_ctype,50L + +#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE" +#define NID_setct_PIUnsignedTBE 569 +#define OBJ_setct_PIUnsignedTBE OBJ_set_ctype,51L + +#define SN_setct_AuthReqTBE "setct-AuthReqTBE" +#define NID_setct_AuthReqTBE 570 +#define OBJ_setct_AuthReqTBE OBJ_set_ctype,52L + +#define SN_setct_AuthResTBE "setct-AuthResTBE" +#define NID_setct_AuthResTBE 571 +#define OBJ_setct_AuthResTBE OBJ_set_ctype,53L + +#define SN_setct_AuthResTBEX "setct-AuthResTBEX" +#define NID_setct_AuthResTBEX 572 +#define OBJ_setct_AuthResTBEX OBJ_set_ctype,54L + +#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE" +#define NID_setct_AuthTokenTBE 573 +#define OBJ_setct_AuthTokenTBE OBJ_set_ctype,55L + +#define SN_setct_CapTokenTBE "setct-CapTokenTBE" +#define NID_setct_CapTokenTBE 574 +#define OBJ_setct_CapTokenTBE OBJ_set_ctype,56L + +#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX" +#define NID_setct_CapTokenTBEX 575 +#define OBJ_setct_CapTokenTBEX OBJ_set_ctype,57L + +#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE" +#define NID_setct_AcqCardCodeMsgTBE 576 +#define OBJ_setct_AcqCardCodeMsgTBE OBJ_set_ctype,58L + +#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE" +#define NID_setct_AuthRevReqTBE 577 +#define OBJ_setct_AuthRevReqTBE OBJ_set_ctype,59L + +#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE" +#define NID_setct_AuthRevResTBE 578 +#define OBJ_setct_AuthRevResTBE OBJ_set_ctype,60L + +#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB" +#define NID_setct_AuthRevResTBEB 579 +#define OBJ_setct_AuthRevResTBEB OBJ_set_ctype,61L + +#define SN_setct_CapReqTBE "setct-CapReqTBE" +#define NID_setct_CapReqTBE 580 +#define OBJ_setct_CapReqTBE OBJ_set_ctype,62L + +#define SN_setct_CapReqTBEX "setct-CapReqTBEX" +#define NID_setct_CapReqTBEX 581 +#define OBJ_setct_CapReqTBEX OBJ_set_ctype,63L + +#define SN_setct_CapResTBE "setct-CapResTBE" +#define NID_setct_CapResTBE 582 +#define OBJ_setct_CapResTBE OBJ_set_ctype,64L + +#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE" +#define NID_setct_CapRevReqTBE 583 +#define OBJ_setct_CapRevReqTBE OBJ_set_ctype,65L + +#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX" +#define NID_setct_CapRevReqTBEX 584 +#define OBJ_setct_CapRevReqTBEX OBJ_set_ctype,66L + +#define SN_setct_CapRevResTBE "setct-CapRevResTBE" +#define NID_setct_CapRevResTBE 585 +#define OBJ_setct_CapRevResTBE OBJ_set_ctype,67L + +#define SN_setct_CredReqTBE "setct-CredReqTBE" +#define NID_setct_CredReqTBE 586 +#define OBJ_setct_CredReqTBE OBJ_set_ctype,68L + +#define SN_setct_CredReqTBEX "setct-CredReqTBEX" +#define NID_setct_CredReqTBEX 587 +#define OBJ_setct_CredReqTBEX OBJ_set_ctype,69L + +#define SN_setct_CredResTBE "setct-CredResTBE" +#define NID_setct_CredResTBE 588 +#define OBJ_setct_CredResTBE OBJ_set_ctype,70L + +#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE" +#define NID_setct_CredRevReqTBE 589 +#define OBJ_setct_CredRevReqTBE OBJ_set_ctype,71L + +#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX" +#define NID_setct_CredRevReqTBEX 590 +#define OBJ_setct_CredRevReqTBEX OBJ_set_ctype,72L + +#define SN_setct_CredRevResTBE "setct-CredRevResTBE" +#define NID_setct_CredRevResTBE 591 +#define OBJ_setct_CredRevResTBE OBJ_set_ctype,73L + +#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE" +#define NID_setct_BatchAdminReqTBE 592 +#define OBJ_setct_BatchAdminReqTBE OBJ_set_ctype,74L + +#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE" +#define NID_setct_BatchAdminResTBE 593 +#define OBJ_setct_BatchAdminResTBE OBJ_set_ctype,75L + +#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE" +#define NID_setct_RegFormReqTBE 594 +#define OBJ_setct_RegFormReqTBE OBJ_set_ctype,76L + +#define SN_setct_CertReqTBE "setct-CertReqTBE" +#define NID_setct_CertReqTBE 595 +#define OBJ_setct_CertReqTBE OBJ_set_ctype,77L + +#define SN_setct_CertReqTBEX "setct-CertReqTBEX" +#define NID_setct_CertReqTBEX 596 +#define OBJ_setct_CertReqTBEX OBJ_set_ctype,78L + +#define SN_setct_CertResTBE "setct-CertResTBE" +#define NID_setct_CertResTBE 597 +#define OBJ_setct_CertResTBE OBJ_set_ctype,79L + +#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS" +#define NID_setct_CRLNotificationTBS 598 +#define OBJ_setct_CRLNotificationTBS OBJ_set_ctype,80L + +#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS" +#define NID_setct_CRLNotificationResTBS 599 +#define OBJ_setct_CRLNotificationResTBS OBJ_set_ctype,81L + +#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS" +#define NID_setct_BCIDistributionTBS 600 +#define OBJ_setct_BCIDistributionTBS OBJ_set_ctype,82L + +#define SN_setext_genCrypt "setext-genCrypt" +#define LN_setext_genCrypt "generic cryptogram" +#define NID_setext_genCrypt 601 +#define OBJ_setext_genCrypt OBJ_set_msgExt,1L + +#define SN_setext_miAuth "setext-miAuth" +#define LN_setext_miAuth "merchant initiated auth" +#define NID_setext_miAuth 602 +#define OBJ_setext_miAuth OBJ_set_msgExt,3L + +#define SN_setext_pinSecure "setext-pinSecure" +#define NID_setext_pinSecure 603 +#define OBJ_setext_pinSecure OBJ_set_msgExt,4L + +#define SN_setext_pinAny "setext-pinAny" +#define NID_setext_pinAny 604 +#define OBJ_setext_pinAny OBJ_set_msgExt,5L + +#define SN_setext_track2 "setext-track2" +#define NID_setext_track2 605 +#define OBJ_setext_track2 OBJ_set_msgExt,7L + +#define SN_setext_cv "setext-cv" +#define LN_setext_cv "additional verification" +#define NID_setext_cv 606 +#define OBJ_setext_cv OBJ_set_msgExt,8L + +#define SN_set_policy_root "set-policy-root" +#define NID_set_policy_root 607 +#define OBJ_set_policy_root OBJ_set_policy,0L + +#define SN_setCext_hashedRoot "setCext-hashedRoot" +#define NID_setCext_hashedRoot 608 +#define OBJ_setCext_hashedRoot OBJ_set_certExt,0L + +#define SN_setCext_certType "setCext-certType" +#define NID_setCext_certType 609 +#define OBJ_setCext_certType OBJ_set_certExt,1L + +#define SN_setCext_merchData "setCext-merchData" +#define NID_setCext_merchData 610 +#define OBJ_setCext_merchData OBJ_set_certExt,2L + +#define SN_setCext_cCertRequired "setCext-cCertRequired" +#define NID_setCext_cCertRequired 611 +#define OBJ_setCext_cCertRequired OBJ_set_certExt,3L + +#define SN_setCext_tunneling "setCext-tunneling" +#define NID_setCext_tunneling 612 +#define OBJ_setCext_tunneling OBJ_set_certExt,4L + +#define SN_setCext_setExt "setCext-setExt" +#define NID_setCext_setExt 613 +#define OBJ_setCext_setExt OBJ_set_certExt,5L + +#define SN_setCext_setQualf "setCext-setQualf" +#define NID_setCext_setQualf 614 +#define OBJ_setCext_setQualf OBJ_set_certExt,6L + +#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities" +#define NID_setCext_PGWYcapabilities 615 +#define OBJ_setCext_PGWYcapabilities OBJ_set_certExt,7L + +#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier" +#define NID_setCext_TokenIdentifier 616 +#define OBJ_setCext_TokenIdentifier OBJ_set_certExt,8L + +#define SN_setCext_Track2Data "setCext-Track2Data" +#define NID_setCext_Track2Data 617 +#define OBJ_setCext_Track2Data OBJ_set_certExt,9L + +#define SN_setCext_TokenType "setCext-TokenType" +#define NID_setCext_TokenType 618 +#define OBJ_setCext_TokenType OBJ_set_certExt,10L + +#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities" +#define NID_setCext_IssuerCapabilities 619 +#define OBJ_setCext_IssuerCapabilities OBJ_set_certExt,11L + +#define SN_setAttr_Cert "setAttr-Cert" +#define NID_setAttr_Cert 620 +#define OBJ_setAttr_Cert OBJ_set_attr,0L + +#define SN_setAttr_PGWYcap "setAttr-PGWYcap" +#define LN_setAttr_PGWYcap "payment gateway capabilities" +#define NID_setAttr_PGWYcap 621 +#define OBJ_setAttr_PGWYcap OBJ_set_attr,1L + +#define SN_setAttr_TokenType "setAttr-TokenType" +#define NID_setAttr_TokenType 622 +#define OBJ_setAttr_TokenType OBJ_set_attr,2L + +#define SN_setAttr_IssCap "setAttr-IssCap" +#define LN_setAttr_IssCap "issuer capabilities" +#define NID_setAttr_IssCap 623 +#define OBJ_setAttr_IssCap OBJ_set_attr,3L + +#define SN_set_rootKeyThumb "set-rootKeyThumb" +#define NID_set_rootKeyThumb 624 +#define OBJ_set_rootKeyThumb OBJ_setAttr_Cert,0L + +#define SN_set_addPolicy "set-addPolicy" +#define NID_set_addPolicy 625 +#define OBJ_set_addPolicy OBJ_setAttr_Cert,1L + +#define SN_setAttr_Token_EMV "setAttr-Token-EMV" +#define NID_setAttr_Token_EMV 626 +#define OBJ_setAttr_Token_EMV OBJ_setAttr_TokenType,1L + +#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime" +#define NID_setAttr_Token_B0Prime 627 +#define OBJ_setAttr_Token_B0Prime OBJ_setAttr_TokenType,2L + +#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM" +#define NID_setAttr_IssCap_CVM 628 +#define OBJ_setAttr_IssCap_CVM OBJ_setAttr_IssCap,3L + +#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2" +#define NID_setAttr_IssCap_T2 629 +#define OBJ_setAttr_IssCap_T2 OBJ_setAttr_IssCap,4L + +#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig" +#define NID_setAttr_IssCap_Sig 630 +#define OBJ_setAttr_IssCap_Sig OBJ_setAttr_IssCap,5L + +#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm" +#define LN_setAttr_GenCryptgrm "generate cryptogram" +#define NID_setAttr_GenCryptgrm 631 +#define OBJ_setAttr_GenCryptgrm OBJ_setAttr_IssCap_CVM,1L + +#define SN_setAttr_T2Enc "setAttr-T2Enc" +#define LN_setAttr_T2Enc "encrypted track 2" +#define NID_setAttr_T2Enc 632 +#define OBJ_setAttr_T2Enc OBJ_setAttr_IssCap_T2,1L + +#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt" +#define LN_setAttr_T2cleartxt "cleartext track 2" +#define NID_setAttr_T2cleartxt 633 +#define OBJ_setAttr_T2cleartxt OBJ_setAttr_IssCap_T2,2L + +#define SN_setAttr_TokICCsig "setAttr-TokICCsig" +#define LN_setAttr_TokICCsig "ICC or token signature" +#define NID_setAttr_TokICCsig 634 +#define OBJ_setAttr_TokICCsig OBJ_setAttr_IssCap_Sig,1L + +#define SN_setAttr_SecDevSig "setAttr-SecDevSig" +#define LN_setAttr_SecDevSig "secure device signature" +#define NID_setAttr_SecDevSig 635 +#define OBJ_setAttr_SecDevSig OBJ_setAttr_IssCap_Sig,2L + +#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA" +#define NID_set_brand_IATA_ATA 636 +#define OBJ_set_brand_IATA_ATA OBJ_set_brand,1L + +#define SN_set_brand_Diners "set-brand-Diners" +#define NID_set_brand_Diners 637 +#define OBJ_set_brand_Diners OBJ_set_brand,30L + +#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress" +#define NID_set_brand_AmericanExpress 638 +#define OBJ_set_brand_AmericanExpress OBJ_set_brand,34L + +#define SN_set_brand_JCB "set-brand-JCB" +#define NID_set_brand_JCB 639 +#define OBJ_set_brand_JCB OBJ_set_brand,35L + +#define SN_set_brand_Visa "set-brand-Visa" +#define NID_set_brand_Visa 640 +#define OBJ_set_brand_Visa OBJ_set_brand,4L + +#define SN_set_brand_MasterCard "set-brand-MasterCard" +#define NID_set_brand_MasterCard 641 +#define OBJ_set_brand_MasterCard OBJ_set_brand,5L + +#define SN_set_brand_Novus "set-brand-Novus" +#define NID_set_brand_Novus 642 +#define OBJ_set_brand_Novus OBJ_set_brand,6011L + +#define SN_des_cdmf "DES-CDMF" +#define LN_des_cdmf "des-cdmf" +#define NID_des_cdmf 643 +#define OBJ_des_cdmf OBJ_rsadsi,3L,10L + +#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET" +#define NID_rsaOAEPEncryptionSET 644 +#define OBJ_rsaOAEPEncryptionSET OBJ_rsadsi,1L,1L,6L + +#define SN_ipsec3 "Oakley-EC2N-3" +#define LN_ipsec3 "ipsec3" +#define NID_ipsec3 749 + +#define SN_ipsec4 "Oakley-EC2N-4" +#define LN_ipsec4 "ipsec4" +#define NID_ipsec4 750 + +#define SN_whirlpool "whirlpool" +#define NID_whirlpool 804 +#define OBJ_whirlpool OBJ_iso,0L,10118L,3L,0L,55L + +#define SN_cryptopro "cryptopro" +#define NID_cryptopro 805 +#define OBJ_cryptopro OBJ_member_body,643L,2L,2L + +#define SN_cryptocom "cryptocom" +#define NID_cryptocom 806 +#define OBJ_cryptocom OBJ_member_body,643L,2L,9L + +#define SN_id_tc26 "id-tc26" +#define NID_id_tc26 974 +#define OBJ_id_tc26 OBJ_member_body,643L,7L,1L + +#define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" +#define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" +#define NID_id_GostR3411_94_with_GostR3410_2001 807 +#define OBJ_id_GostR3411_94_with_GostR3410_2001 OBJ_cryptopro,3L + +#define SN_id_GostR3411_94_with_GostR3410_94 "id-GostR3411-94-with-GostR3410-94" +#define LN_id_GostR3411_94_with_GostR3410_94 "GOST R 34.11-94 with GOST R 34.10-94" +#define NID_id_GostR3411_94_with_GostR3410_94 808 +#define OBJ_id_GostR3411_94_with_GostR3410_94 OBJ_cryptopro,4L + +#define SN_id_GostR3411_94 "md_gost94" +#define LN_id_GostR3411_94 "GOST R 34.11-94" +#define NID_id_GostR3411_94 809 +#define OBJ_id_GostR3411_94 OBJ_cryptopro,9L + +#define SN_id_HMACGostR3411_94 "id-HMACGostR3411-94" +#define LN_id_HMACGostR3411_94 "HMAC GOST 34.11-94" +#define NID_id_HMACGostR3411_94 810 +#define OBJ_id_HMACGostR3411_94 OBJ_cryptopro,10L + +#define SN_id_GostR3410_2001 "gost2001" +#define LN_id_GostR3410_2001 "GOST R 34.10-2001" +#define NID_id_GostR3410_2001 811 +#define OBJ_id_GostR3410_2001 OBJ_cryptopro,19L + +#define SN_id_GostR3410_94 "gost94" +#define LN_id_GostR3410_94 "GOST R 34.10-94" +#define NID_id_GostR3410_94 812 +#define OBJ_id_GostR3410_94 OBJ_cryptopro,20L + +#define SN_id_Gost28147_89 "gost89" +#define LN_id_Gost28147_89 "GOST 28147-89" +#define NID_id_Gost28147_89 813 +#define OBJ_id_Gost28147_89 OBJ_cryptopro,21L + +#define SN_gost89_cnt "gost89-cnt" +#define NID_gost89_cnt 814 + +#define SN_gost89_cnt_12 "gost89-cnt-12" +#define NID_gost89_cnt_12 975 + +#define SN_gost89_cbc "gost89-cbc" +#define NID_gost89_cbc 1009 + +#define SN_gost89_ecb "gost89-ecb" +#define NID_gost89_ecb 1010 + +#define SN_gost89_ctr "gost89-ctr" +#define NID_gost89_ctr 1011 + +#define SN_id_Gost28147_89_MAC "gost-mac" +#define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" +#define NID_id_Gost28147_89_MAC 815 +#define OBJ_id_Gost28147_89_MAC OBJ_cryptopro,22L + +#define SN_gost_mac_12 "gost-mac-12" +#define NID_gost_mac_12 976 + +#define SN_id_GostR3411_94_prf "prf-gostr3411-94" +#define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" +#define NID_id_GostR3411_94_prf 816 +#define OBJ_id_GostR3411_94_prf OBJ_cryptopro,23L + +#define SN_id_GostR3410_2001DH "id-GostR3410-2001DH" +#define LN_id_GostR3410_2001DH "GOST R 34.10-2001 DH" +#define NID_id_GostR3410_2001DH 817 +#define OBJ_id_GostR3410_2001DH OBJ_cryptopro,98L + +#define SN_id_GostR3410_94DH "id-GostR3410-94DH" +#define LN_id_GostR3410_94DH "GOST R 34.10-94 DH" +#define NID_id_GostR3410_94DH 818 +#define OBJ_id_GostR3410_94DH OBJ_cryptopro,99L + +#define SN_id_Gost28147_89_CryptoPro_KeyMeshing "id-Gost28147-89-CryptoPro-KeyMeshing" +#define NID_id_Gost28147_89_CryptoPro_KeyMeshing 819 +#define OBJ_id_Gost28147_89_CryptoPro_KeyMeshing OBJ_cryptopro,14L,1L + +#define SN_id_Gost28147_89_None_KeyMeshing "id-Gost28147-89-None-KeyMeshing" +#define NID_id_Gost28147_89_None_KeyMeshing 820 +#define OBJ_id_Gost28147_89_None_KeyMeshing OBJ_cryptopro,14L,0L + +#define SN_id_GostR3411_94_TestParamSet "id-GostR3411-94-TestParamSet" +#define NID_id_GostR3411_94_TestParamSet 821 +#define OBJ_id_GostR3411_94_TestParamSet OBJ_cryptopro,30L,0L + +#define SN_id_GostR3411_94_CryptoProParamSet "id-GostR3411-94-CryptoProParamSet" +#define NID_id_GostR3411_94_CryptoProParamSet 822 +#define OBJ_id_GostR3411_94_CryptoProParamSet OBJ_cryptopro,30L,1L + +#define SN_id_Gost28147_89_TestParamSet "id-Gost28147-89-TestParamSet" +#define NID_id_Gost28147_89_TestParamSet 823 +#define OBJ_id_Gost28147_89_TestParamSet OBJ_cryptopro,31L,0L + +#define SN_id_Gost28147_89_CryptoPro_A_ParamSet "id-Gost28147-89-CryptoPro-A-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_A_ParamSet 824 +#define OBJ_id_Gost28147_89_CryptoPro_A_ParamSet OBJ_cryptopro,31L,1L + +#define SN_id_Gost28147_89_CryptoPro_B_ParamSet "id-Gost28147-89-CryptoPro-B-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_B_ParamSet 825 +#define OBJ_id_Gost28147_89_CryptoPro_B_ParamSet OBJ_cryptopro,31L,2L + +#define SN_id_Gost28147_89_CryptoPro_C_ParamSet "id-Gost28147-89-CryptoPro-C-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_C_ParamSet 826 +#define OBJ_id_Gost28147_89_CryptoPro_C_ParamSet OBJ_cryptopro,31L,3L + +#define SN_id_Gost28147_89_CryptoPro_D_ParamSet "id-Gost28147-89-CryptoPro-D-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_D_ParamSet 827 +#define OBJ_id_Gost28147_89_CryptoPro_D_ParamSet OBJ_cryptopro,31L,4L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 828 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet OBJ_cryptopro,31L,5L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 829 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet OBJ_cryptopro,31L,6L + +#define SN_id_Gost28147_89_CryptoPro_RIC_1_ParamSet "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 830 +#define OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet OBJ_cryptopro,31L,7L + +#define SN_id_GostR3410_94_TestParamSet "id-GostR3410-94-TestParamSet" +#define NID_id_GostR3410_94_TestParamSet 831 +#define OBJ_id_GostR3410_94_TestParamSet OBJ_cryptopro,32L,0L + +#define SN_id_GostR3410_94_CryptoPro_A_ParamSet "id-GostR3410-94-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_A_ParamSet 832 +#define OBJ_id_GostR3410_94_CryptoPro_A_ParamSet OBJ_cryptopro,32L,2L + +#define SN_id_GostR3410_94_CryptoPro_B_ParamSet "id-GostR3410-94-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_B_ParamSet 833 +#define OBJ_id_GostR3410_94_CryptoPro_B_ParamSet OBJ_cryptopro,32L,3L + +#define SN_id_GostR3410_94_CryptoPro_C_ParamSet "id-GostR3410-94-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_C_ParamSet 834 +#define OBJ_id_GostR3410_94_CryptoPro_C_ParamSet OBJ_cryptopro,32L,4L + +#define SN_id_GostR3410_94_CryptoPro_D_ParamSet "id-GostR3410-94-CryptoPro-D-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_D_ParamSet 835 +#define OBJ_id_GostR3410_94_CryptoPro_D_ParamSet OBJ_cryptopro,32L,5L + +#define SN_id_GostR3410_94_CryptoPro_XchA_ParamSet "id-GostR3410-94-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchA_ParamSet 836 +#define OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet OBJ_cryptopro,33L,1L + +#define SN_id_GostR3410_94_CryptoPro_XchB_ParamSet "id-GostR3410-94-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchB_ParamSet 837 +#define OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet OBJ_cryptopro,33L,2L + +#define SN_id_GostR3410_94_CryptoPro_XchC_ParamSet "id-GostR3410-94-CryptoPro-XchC-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchC_ParamSet 838 +#define OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet OBJ_cryptopro,33L,3L + +#define SN_id_GostR3410_2001_TestParamSet "id-GostR3410-2001-TestParamSet" +#define NID_id_GostR3410_2001_TestParamSet 839 +#define OBJ_id_GostR3410_2001_TestParamSet OBJ_cryptopro,35L,0L + +#define SN_id_GostR3410_2001_CryptoPro_A_ParamSet "id-GostR3410-2001-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_A_ParamSet 840 +#define OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet OBJ_cryptopro,35L,1L + +#define SN_id_GostR3410_2001_CryptoPro_B_ParamSet "id-GostR3410-2001-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_B_ParamSet 841 +#define OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet OBJ_cryptopro,35L,2L + +#define SN_id_GostR3410_2001_CryptoPro_C_ParamSet "id-GostR3410-2001-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_C_ParamSet 842 +#define OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet OBJ_cryptopro,35L,3L + +#define SN_id_GostR3410_2001_CryptoPro_XchA_ParamSet "id-GostR3410-2001-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet 843 +#define OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet OBJ_cryptopro,36L,0L + +#define SN_id_GostR3410_2001_CryptoPro_XchB_ParamSet "id-GostR3410-2001-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet 844 +#define OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet OBJ_cryptopro,36L,1L + +#define SN_id_GostR3410_94_a "id-GostR3410-94-a" +#define NID_id_GostR3410_94_a 845 +#define OBJ_id_GostR3410_94_a OBJ_id_GostR3410_94,1L + +#define SN_id_GostR3410_94_aBis "id-GostR3410-94-aBis" +#define NID_id_GostR3410_94_aBis 846 +#define OBJ_id_GostR3410_94_aBis OBJ_id_GostR3410_94,2L + +#define SN_id_GostR3410_94_b "id-GostR3410-94-b" +#define NID_id_GostR3410_94_b 847 +#define OBJ_id_GostR3410_94_b OBJ_id_GostR3410_94,3L + +#define SN_id_GostR3410_94_bBis "id-GostR3410-94-bBis" +#define NID_id_GostR3410_94_bBis 848 +#define OBJ_id_GostR3410_94_bBis OBJ_id_GostR3410_94,4L + +#define SN_id_Gost28147_89_cc "id-Gost28147-89-cc" +#define LN_id_Gost28147_89_cc "GOST 28147-89 Cryptocom ParamSet" +#define NID_id_Gost28147_89_cc 849 +#define OBJ_id_Gost28147_89_cc OBJ_cryptocom,1L,6L,1L + +#define SN_id_GostR3410_94_cc "gost94cc" +#define LN_id_GostR3410_94_cc "GOST 34.10-94 Cryptocom" +#define NID_id_GostR3410_94_cc 850 +#define OBJ_id_GostR3410_94_cc OBJ_cryptocom,1L,5L,3L + +#define SN_id_GostR3410_2001_cc "gost2001cc" +#define LN_id_GostR3410_2001_cc "GOST 34.10-2001 Cryptocom" +#define NID_id_GostR3410_2001_cc 851 +#define OBJ_id_GostR3410_2001_cc OBJ_cryptocom,1L,5L,4L + +#define SN_id_GostR3411_94_with_GostR3410_94_cc "id-GostR3411-94-with-GostR3410-94-cc" +#define LN_id_GostR3411_94_with_GostR3410_94_cc "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_94_cc 852 +#define OBJ_id_GostR3411_94_with_GostR3410_94_cc OBJ_cryptocom,1L,3L,3L + +#define SN_id_GostR3411_94_with_GostR3410_2001_cc "id-GostR3411-94-with-GostR3410-2001-cc" +#define LN_id_GostR3411_94_with_GostR3410_2001_cc "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_2001_cc 853 +#define OBJ_id_GostR3411_94_with_GostR3410_2001_cc OBJ_cryptocom,1L,3L,4L + +#define SN_id_GostR3410_2001_ParamSet_cc "id-GostR3410-2001-ParamSet-cc" +#define LN_id_GostR3410_2001_ParamSet_cc "GOST R 3410-2001 Parameter Set Cryptocom" +#define NID_id_GostR3410_2001_ParamSet_cc 854 +#define OBJ_id_GostR3410_2001_ParamSet_cc OBJ_cryptocom,1L,8L,1L + +#define SN_id_tc26_algorithms "id-tc26-algorithms" +#define NID_id_tc26_algorithms 977 +#define OBJ_id_tc26_algorithms OBJ_id_tc26,1L + +#define SN_id_tc26_sign "id-tc26-sign" +#define NID_id_tc26_sign 978 +#define OBJ_id_tc26_sign OBJ_id_tc26_algorithms,1L + +#define SN_id_GostR3410_2012_256 "gost2012_256" +#define LN_id_GostR3410_2012_256 "GOST R 34.10-2012 with 256 bit modulus" +#define NID_id_GostR3410_2012_256 979 +#define OBJ_id_GostR3410_2012_256 OBJ_id_tc26_sign,1L + +#define SN_id_GostR3410_2012_512 "gost2012_512" +#define LN_id_GostR3410_2012_512 "GOST R 34.10-2012 with 512 bit modulus" +#define NID_id_GostR3410_2012_512 980 +#define OBJ_id_GostR3410_2012_512 OBJ_id_tc26_sign,2L + +#define SN_id_tc26_digest "id-tc26-digest" +#define NID_id_tc26_digest 981 +#define OBJ_id_tc26_digest OBJ_id_tc26_algorithms,2L + +#define SN_id_GostR3411_2012_256 "md_gost12_256" +#define LN_id_GostR3411_2012_256 "GOST R 34.11-2012 with 256 bit hash" +#define NID_id_GostR3411_2012_256 982 +#define OBJ_id_GostR3411_2012_256 OBJ_id_tc26_digest,2L + +#define SN_id_GostR3411_2012_512 "md_gost12_512" +#define LN_id_GostR3411_2012_512 "GOST R 34.11-2012 with 512 bit hash" +#define NID_id_GostR3411_2012_512 983 +#define OBJ_id_GostR3411_2012_512 OBJ_id_tc26_digest,3L + +#define SN_id_tc26_signwithdigest "id-tc26-signwithdigest" +#define NID_id_tc26_signwithdigest 984 +#define OBJ_id_tc26_signwithdigest OBJ_id_tc26_algorithms,3L + +#define SN_id_tc26_signwithdigest_gost3410_2012_256 "id-tc26-signwithdigest-gost3410-2012-256" +#define LN_id_tc26_signwithdigest_gost3410_2012_256 "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_256 985 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_256 OBJ_id_tc26_signwithdigest,2L + +#define SN_id_tc26_signwithdigest_gost3410_2012_512 "id-tc26-signwithdigest-gost3410-2012-512" +#define LN_id_tc26_signwithdigest_gost3410_2012_512 "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_512 986 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_512 OBJ_id_tc26_signwithdigest,3L + +#define SN_id_tc26_mac "id-tc26-mac" +#define NID_id_tc26_mac 987 +#define OBJ_id_tc26_mac OBJ_id_tc26_algorithms,4L + +#define SN_id_tc26_hmac_gost_3411_2012_256 "id-tc26-hmac-gost-3411-2012-256" +#define LN_id_tc26_hmac_gost_3411_2012_256 "HMAC GOST 34.11-2012 256 bit" +#define NID_id_tc26_hmac_gost_3411_2012_256 988 +#define OBJ_id_tc26_hmac_gost_3411_2012_256 OBJ_id_tc26_mac,1L + +#define SN_id_tc26_hmac_gost_3411_2012_512 "id-tc26-hmac-gost-3411-2012-512" +#define LN_id_tc26_hmac_gost_3411_2012_512 "HMAC GOST 34.11-2012 512 bit" +#define NID_id_tc26_hmac_gost_3411_2012_512 989 +#define OBJ_id_tc26_hmac_gost_3411_2012_512 OBJ_id_tc26_mac,2L + +#define SN_id_tc26_cipher "id-tc26-cipher" +#define NID_id_tc26_cipher 990 +#define OBJ_id_tc26_cipher OBJ_id_tc26_algorithms,5L + +#define SN_id_tc26_cipher_gostr3412_2015_magma "id-tc26-cipher-gostr3412-2015-magma" +#define NID_id_tc26_cipher_gostr3412_2015_magma 1173 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma OBJ_id_tc26_cipher,1L + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm "id-tc26-cipher-gostr3412-2015-magma-ctracpkm" +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm 1174 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm OBJ_id_tc26_cipher_gostr3412_2015_magma,1L + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac "id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac" +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac 1175 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_magma,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik "id-tc26-cipher-gostr3412-2015-kuznyechik" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik 1176 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik OBJ_id_tc26_cipher,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm 1177 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac 1178 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,2L + +#define SN_id_tc26_agreement "id-tc26-agreement" +#define NID_id_tc26_agreement 991 +#define OBJ_id_tc26_agreement OBJ_id_tc26_algorithms,6L + +#define SN_id_tc26_agreement_gost_3410_2012_256 "id-tc26-agreement-gost-3410-2012-256" +#define NID_id_tc26_agreement_gost_3410_2012_256 992 +#define OBJ_id_tc26_agreement_gost_3410_2012_256 OBJ_id_tc26_agreement,1L + +#define SN_id_tc26_agreement_gost_3410_2012_512 "id-tc26-agreement-gost-3410-2012-512" +#define NID_id_tc26_agreement_gost_3410_2012_512 993 +#define OBJ_id_tc26_agreement_gost_3410_2012_512 OBJ_id_tc26_agreement,2L + +#define SN_id_tc26_wrap "id-tc26-wrap" +#define NID_id_tc26_wrap 1179 +#define OBJ_id_tc26_wrap OBJ_id_tc26_algorithms,7L + +#define SN_id_tc26_wrap_gostr3412_2015_magma "id-tc26-wrap-gostr3412-2015-magma" +#define NID_id_tc26_wrap_gostr3412_2015_magma 1180 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma OBJ_id_tc26_wrap,1L + +#define SN_id_tc26_wrap_gostr3412_2015_magma_kexp15 "id-tc26-wrap-gostr3412-2015-magma-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 1181 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_magma,1L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik "id-tc26-wrap-gostr3412-2015-kuznyechik" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik 1182 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik OBJ_id_tc26_wrap,2L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 "id-tc26-wrap-gostr3412-2015-kuznyechik-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 1183 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_constants "id-tc26-constants" +#define NID_id_tc26_constants 994 +#define OBJ_id_tc26_constants OBJ_id_tc26,2L + +#define SN_id_tc26_sign_constants "id-tc26-sign-constants" +#define NID_id_tc26_sign_constants 995 +#define OBJ_id_tc26_sign_constants OBJ_id_tc26_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_constants "id-tc26-gost-3410-2012-256-constants" +#define NID_id_tc26_gost_3410_2012_256_constants 1147 +#define OBJ_id_tc26_gost_3410_2012_256_constants OBJ_id_tc26_sign_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetA "id-tc26-gost-3410-2012-256-paramSetA" +#define LN_id_tc26_gost_3410_2012_256_paramSetA "GOST R 34.10-2012 (256 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_256_paramSetA 1148 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetA OBJ_id_tc26_gost_3410_2012_256_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetB "id-tc26-gost-3410-2012-256-paramSetB" +#define LN_id_tc26_gost_3410_2012_256_paramSetB "GOST R 34.10-2012 (256 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_256_paramSetB 1184 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetB OBJ_id_tc26_gost_3410_2012_256_constants,2L + +#define SN_id_tc26_gost_3410_2012_256_paramSetC "id-tc26-gost-3410-2012-256-paramSetC" +#define LN_id_tc26_gost_3410_2012_256_paramSetC "GOST R 34.10-2012 (256 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_256_paramSetC 1185 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetC OBJ_id_tc26_gost_3410_2012_256_constants,3L + +#define SN_id_tc26_gost_3410_2012_256_paramSetD "id-tc26-gost-3410-2012-256-paramSetD" +#define LN_id_tc26_gost_3410_2012_256_paramSetD "GOST R 34.10-2012 (256 bit) ParamSet D" +#define NID_id_tc26_gost_3410_2012_256_paramSetD 1186 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetD OBJ_id_tc26_gost_3410_2012_256_constants,4L + +#define SN_id_tc26_gost_3410_2012_512_constants "id-tc26-gost-3410-2012-512-constants" +#define NID_id_tc26_gost_3410_2012_512_constants 996 +#define OBJ_id_tc26_gost_3410_2012_512_constants OBJ_id_tc26_sign_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetTest "id-tc26-gost-3410-2012-512-paramSetTest" +#define LN_id_tc26_gost_3410_2012_512_paramSetTest "GOST R 34.10-2012 (512 bit) testing parameter set" +#define NID_id_tc26_gost_3410_2012_512_paramSetTest 997 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetTest OBJ_id_tc26_gost_3410_2012_512_constants,0L + +#define SN_id_tc26_gost_3410_2012_512_paramSetA "id-tc26-gost-3410-2012-512-paramSetA" +#define LN_id_tc26_gost_3410_2012_512_paramSetA "GOST R 34.10-2012 (512 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_512_paramSetA 998 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetA OBJ_id_tc26_gost_3410_2012_512_constants,1L + +#define SN_id_tc26_gost_3410_2012_512_paramSetB "id-tc26-gost-3410-2012-512-paramSetB" +#define LN_id_tc26_gost_3410_2012_512_paramSetB "GOST R 34.10-2012 (512 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_512_paramSetB 999 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetB OBJ_id_tc26_gost_3410_2012_512_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetC "id-tc26-gost-3410-2012-512-paramSetC" +#define LN_id_tc26_gost_3410_2012_512_paramSetC "GOST R 34.10-2012 (512 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_512_paramSetC 1149 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetC OBJ_id_tc26_gost_3410_2012_512_constants,3L + +#define SN_id_tc26_digest_constants "id-tc26-digest-constants" +#define NID_id_tc26_digest_constants 1000 +#define OBJ_id_tc26_digest_constants OBJ_id_tc26_constants,2L + +#define SN_id_tc26_cipher_constants "id-tc26-cipher-constants" +#define NID_id_tc26_cipher_constants 1001 +#define OBJ_id_tc26_cipher_constants OBJ_id_tc26_constants,5L + +#define SN_id_tc26_gost_28147_constants "id-tc26-gost-28147-constants" +#define NID_id_tc26_gost_28147_constants 1002 +#define OBJ_id_tc26_gost_28147_constants OBJ_id_tc26_cipher_constants,1L + +#define SN_id_tc26_gost_28147_param_Z "id-tc26-gost-28147-param-Z" +#define LN_id_tc26_gost_28147_param_Z "GOST 28147-89 TC26 parameter set" +#define NID_id_tc26_gost_28147_param_Z 1003 +#define OBJ_id_tc26_gost_28147_param_Z OBJ_id_tc26_gost_28147_constants,1L + +#define SN_INN "INN" +#define LN_INN "INN" +#define NID_INN 1004 +#define OBJ_INN OBJ_member_body,643L,3L,131L,1L,1L + +#define SN_OGRN "OGRN" +#define LN_OGRN "OGRN" +#define NID_OGRN 1005 +#define OBJ_OGRN OBJ_member_body,643L,100L,1L + +#define SN_SNILS "SNILS" +#define LN_SNILS "SNILS" +#define NID_SNILS 1006 +#define OBJ_SNILS OBJ_member_body,643L,100L,3L + +#define SN_subjectSignTool "subjectSignTool" +#define LN_subjectSignTool "Signing Tool of Subject" +#define NID_subjectSignTool 1007 +#define OBJ_subjectSignTool OBJ_member_body,643L,100L,111L + +#define SN_issuerSignTool "issuerSignTool" +#define LN_issuerSignTool "Signing Tool of Issuer" +#define NID_issuerSignTool 1008 +#define OBJ_issuerSignTool OBJ_member_body,643L,100L,112L + +#define SN_grasshopper_ecb "grasshopper-ecb" +#define NID_grasshopper_ecb 1012 + +#define SN_grasshopper_ctr "grasshopper-ctr" +#define NID_grasshopper_ctr 1013 + +#define SN_grasshopper_ofb "grasshopper-ofb" +#define NID_grasshopper_ofb 1014 + +#define SN_grasshopper_cbc "grasshopper-cbc" +#define NID_grasshopper_cbc 1015 + +#define SN_grasshopper_cfb "grasshopper-cfb" +#define NID_grasshopper_cfb 1016 + +#define SN_grasshopper_mac "grasshopper-mac" +#define NID_grasshopper_mac 1017 + +#define SN_magma_ecb "magma-ecb" +#define NID_magma_ecb 1187 + +#define SN_magma_ctr "magma-ctr" +#define NID_magma_ctr 1188 + +#define SN_magma_ofb "magma-ofb" +#define NID_magma_ofb 1189 + +#define SN_magma_cbc "magma-cbc" +#define NID_magma_cbc 1190 + +#define SN_magma_cfb "magma-cfb" +#define NID_magma_cfb 1191 + +#define SN_magma_mac "magma-mac" +#define NID_magma_mac 1192 + +#define SN_camellia_128_cbc "CAMELLIA-128-CBC" +#define LN_camellia_128_cbc "camellia-128-cbc" +#define NID_camellia_128_cbc 751 +#define OBJ_camellia_128_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,2L + +#define SN_camellia_192_cbc "CAMELLIA-192-CBC" +#define LN_camellia_192_cbc "camellia-192-cbc" +#define NID_camellia_192_cbc 752 +#define OBJ_camellia_192_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,3L + +#define SN_camellia_256_cbc "CAMELLIA-256-CBC" +#define LN_camellia_256_cbc "camellia-256-cbc" +#define NID_camellia_256_cbc 753 +#define OBJ_camellia_256_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,4L + +#define SN_id_camellia128_wrap "id-camellia128-wrap" +#define NID_id_camellia128_wrap 907 +#define OBJ_id_camellia128_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,2L + +#define SN_id_camellia192_wrap "id-camellia192-wrap" +#define NID_id_camellia192_wrap 908 +#define OBJ_id_camellia192_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,3L + +#define SN_id_camellia256_wrap "id-camellia256-wrap" +#define NID_id_camellia256_wrap 909 +#define OBJ_id_camellia256_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,4L + +#define OBJ_ntt_ds 0L,3L,4401L,5L + +#define OBJ_camellia OBJ_ntt_ds,3L,1L,9L + +#define SN_camellia_128_ecb "CAMELLIA-128-ECB" +#define LN_camellia_128_ecb "camellia-128-ecb" +#define NID_camellia_128_ecb 754 +#define OBJ_camellia_128_ecb OBJ_camellia,1L + +#define SN_camellia_128_ofb128 "CAMELLIA-128-OFB" +#define LN_camellia_128_ofb128 "camellia-128-ofb" +#define NID_camellia_128_ofb128 766 +#define OBJ_camellia_128_ofb128 OBJ_camellia,3L + +#define SN_camellia_128_cfb128 "CAMELLIA-128-CFB" +#define LN_camellia_128_cfb128 "camellia-128-cfb" +#define NID_camellia_128_cfb128 757 +#define OBJ_camellia_128_cfb128 OBJ_camellia,4L + +#define SN_camellia_128_gcm "CAMELLIA-128-GCM" +#define LN_camellia_128_gcm "camellia-128-gcm" +#define NID_camellia_128_gcm 961 +#define OBJ_camellia_128_gcm OBJ_camellia,6L + +#define SN_camellia_128_ccm "CAMELLIA-128-CCM" +#define LN_camellia_128_ccm "camellia-128-ccm" +#define NID_camellia_128_ccm 962 +#define OBJ_camellia_128_ccm OBJ_camellia,7L + +#define SN_camellia_128_ctr "CAMELLIA-128-CTR" +#define LN_camellia_128_ctr "camellia-128-ctr" +#define NID_camellia_128_ctr 963 +#define OBJ_camellia_128_ctr OBJ_camellia,9L + +#define SN_camellia_128_cmac "CAMELLIA-128-CMAC" +#define LN_camellia_128_cmac "camellia-128-cmac" +#define NID_camellia_128_cmac 964 +#define OBJ_camellia_128_cmac OBJ_camellia,10L + +#define SN_camellia_192_ecb "CAMELLIA-192-ECB" +#define LN_camellia_192_ecb "camellia-192-ecb" +#define NID_camellia_192_ecb 755 +#define OBJ_camellia_192_ecb OBJ_camellia,21L + +#define SN_camellia_192_ofb128 "CAMELLIA-192-OFB" +#define LN_camellia_192_ofb128 "camellia-192-ofb" +#define NID_camellia_192_ofb128 767 +#define OBJ_camellia_192_ofb128 OBJ_camellia,23L + +#define SN_camellia_192_cfb128 "CAMELLIA-192-CFB" +#define LN_camellia_192_cfb128 "camellia-192-cfb" +#define NID_camellia_192_cfb128 758 +#define OBJ_camellia_192_cfb128 OBJ_camellia,24L + +#define SN_camellia_192_gcm "CAMELLIA-192-GCM" +#define LN_camellia_192_gcm "camellia-192-gcm" +#define NID_camellia_192_gcm 965 +#define OBJ_camellia_192_gcm OBJ_camellia,26L + +#define SN_camellia_192_ccm "CAMELLIA-192-CCM" +#define LN_camellia_192_ccm "camellia-192-ccm" +#define NID_camellia_192_ccm 966 +#define OBJ_camellia_192_ccm OBJ_camellia,27L + +#define SN_camellia_192_ctr "CAMELLIA-192-CTR" +#define LN_camellia_192_ctr "camellia-192-ctr" +#define NID_camellia_192_ctr 967 +#define OBJ_camellia_192_ctr OBJ_camellia,29L + +#define SN_camellia_192_cmac "CAMELLIA-192-CMAC" +#define LN_camellia_192_cmac "camellia-192-cmac" +#define NID_camellia_192_cmac 968 +#define OBJ_camellia_192_cmac OBJ_camellia,30L + +#define SN_camellia_256_ecb "CAMELLIA-256-ECB" +#define LN_camellia_256_ecb "camellia-256-ecb" +#define NID_camellia_256_ecb 756 +#define OBJ_camellia_256_ecb OBJ_camellia,41L + +#define SN_camellia_256_ofb128 "CAMELLIA-256-OFB" +#define LN_camellia_256_ofb128 "camellia-256-ofb" +#define NID_camellia_256_ofb128 768 +#define OBJ_camellia_256_ofb128 OBJ_camellia,43L + +#define SN_camellia_256_cfb128 "CAMELLIA-256-CFB" +#define LN_camellia_256_cfb128 "camellia-256-cfb" +#define NID_camellia_256_cfb128 759 +#define OBJ_camellia_256_cfb128 OBJ_camellia,44L + +#define SN_camellia_256_gcm "CAMELLIA-256-GCM" +#define LN_camellia_256_gcm "camellia-256-gcm" +#define NID_camellia_256_gcm 969 +#define OBJ_camellia_256_gcm OBJ_camellia,46L + +#define SN_camellia_256_ccm "CAMELLIA-256-CCM" +#define LN_camellia_256_ccm "camellia-256-ccm" +#define NID_camellia_256_ccm 970 +#define OBJ_camellia_256_ccm OBJ_camellia,47L + +#define SN_camellia_256_ctr "CAMELLIA-256-CTR" +#define LN_camellia_256_ctr "camellia-256-ctr" +#define NID_camellia_256_ctr 971 +#define OBJ_camellia_256_ctr OBJ_camellia,49L + +#define SN_camellia_256_cmac "CAMELLIA-256-CMAC" +#define LN_camellia_256_cmac "camellia-256-cmac" +#define NID_camellia_256_cmac 972 +#define OBJ_camellia_256_cmac OBJ_camellia,50L + +#define SN_camellia_128_cfb1 "CAMELLIA-128-CFB1" +#define LN_camellia_128_cfb1 "camellia-128-cfb1" +#define NID_camellia_128_cfb1 760 + +#define SN_camellia_192_cfb1 "CAMELLIA-192-CFB1" +#define LN_camellia_192_cfb1 "camellia-192-cfb1" +#define NID_camellia_192_cfb1 761 + +#define SN_camellia_256_cfb1 "CAMELLIA-256-CFB1" +#define LN_camellia_256_cfb1 "camellia-256-cfb1" +#define NID_camellia_256_cfb1 762 + +#define SN_camellia_128_cfb8 "CAMELLIA-128-CFB8" +#define LN_camellia_128_cfb8 "camellia-128-cfb8" +#define NID_camellia_128_cfb8 763 + +#define SN_camellia_192_cfb8 "CAMELLIA-192-CFB8" +#define LN_camellia_192_cfb8 "camellia-192-cfb8" +#define NID_camellia_192_cfb8 764 + +#define SN_camellia_256_cfb8 "CAMELLIA-256-CFB8" +#define LN_camellia_256_cfb8 "camellia-256-cfb8" +#define NID_camellia_256_cfb8 765 + +#define OBJ_aria 1L,2L,410L,200046L,1L,1L + +#define SN_aria_128_ecb "ARIA-128-ECB" +#define LN_aria_128_ecb "aria-128-ecb" +#define NID_aria_128_ecb 1065 +#define OBJ_aria_128_ecb OBJ_aria,1L + +#define SN_aria_128_cbc "ARIA-128-CBC" +#define LN_aria_128_cbc "aria-128-cbc" +#define NID_aria_128_cbc 1066 +#define OBJ_aria_128_cbc OBJ_aria,2L + +#define SN_aria_128_cfb128 "ARIA-128-CFB" +#define LN_aria_128_cfb128 "aria-128-cfb" +#define NID_aria_128_cfb128 1067 +#define OBJ_aria_128_cfb128 OBJ_aria,3L + +#define SN_aria_128_ofb128 "ARIA-128-OFB" +#define LN_aria_128_ofb128 "aria-128-ofb" +#define NID_aria_128_ofb128 1068 +#define OBJ_aria_128_ofb128 OBJ_aria,4L + +#define SN_aria_128_ctr "ARIA-128-CTR" +#define LN_aria_128_ctr "aria-128-ctr" +#define NID_aria_128_ctr 1069 +#define OBJ_aria_128_ctr OBJ_aria,5L + +#define SN_aria_192_ecb "ARIA-192-ECB" +#define LN_aria_192_ecb "aria-192-ecb" +#define NID_aria_192_ecb 1070 +#define OBJ_aria_192_ecb OBJ_aria,6L + +#define SN_aria_192_cbc "ARIA-192-CBC" +#define LN_aria_192_cbc "aria-192-cbc" +#define NID_aria_192_cbc 1071 +#define OBJ_aria_192_cbc OBJ_aria,7L + +#define SN_aria_192_cfb128 "ARIA-192-CFB" +#define LN_aria_192_cfb128 "aria-192-cfb" +#define NID_aria_192_cfb128 1072 +#define OBJ_aria_192_cfb128 OBJ_aria,8L + +#define SN_aria_192_ofb128 "ARIA-192-OFB" +#define LN_aria_192_ofb128 "aria-192-ofb" +#define NID_aria_192_ofb128 1073 +#define OBJ_aria_192_ofb128 OBJ_aria,9L + +#define SN_aria_192_ctr "ARIA-192-CTR" +#define LN_aria_192_ctr "aria-192-ctr" +#define NID_aria_192_ctr 1074 +#define OBJ_aria_192_ctr OBJ_aria,10L + +#define SN_aria_256_ecb "ARIA-256-ECB" +#define LN_aria_256_ecb "aria-256-ecb" +#define NID_aria_256_ecb 1075 +#define OBJ_aria_256_ecb OBJ_aria,11L + +#define SN_aria_256_cbc "ARIA-256-CBC" +#define LN_aria_256_cbc "aria-256-cbc" +#define NID_aria_256_cbc 1076 +#define OBJ_aria_256_cbc OBJ_aria,12L + +#define SN_aria_256_cfb128 "ARIA-256-CFB" +#define LN_aria_256_cfb128 "aria-256-cfb" +#define NID_aria_256_cfb128 1077 +#define OBJ_aria_256_cfb128 OBJ_aria,13L + +#define SN_aria_256_ofb128 "ARIA-256-OFB" +#define LN_aria_256_ofb128 "aria-256-ofb" +#define NID_aria_256_ofb128 1078 +#define OBJ_aria_256_ofb128 OBJ_aria,14L + +#define SN_aria_256_ctr "ARIA-256-CTR" +#define LN_aria_256_ctr "aria-256-ctr" +#define NID_aria_256_ctr 1079 +#define OBJ_aria_256_ctr OBJ_aria,15L + +#define SN_aria_128_cfb1 "ARIA-128-CFB1" +#define LN_aria_128_cfb1 "aria-128-cfb1" +#define NID_aria_128_cfb1 1080 + +#define SN_aria_192_cfb1 "ARIA-192-CFB1" +#define LN_aria_192_cfb1 "aria-192-cfb1" +#define NID_aria_192_cfb1 1081 + +#define SN_aria_256_cfb1 "ARIA-256-CFB1" +#define LN_aria_256_cfb1 "aria-256-cfb1" +#define NID_aria_256_cfb1 1082 + +#define SN_aria_128_cfb8 "ARIA-128-CFB8" +#define LN_aria_128_cfb8 "aria-128-cfb8" +#define NID_aria_128_cfb8 1083 + +#define SN_aria_192_cfb8 "ARIA-192-CFB8" +#define LN_aria_192_cfb8 "aria-192-cfb8" +#define NID_aria_192_cfb8 1084 + +#define SN_aria_256_cfb8 "ARIA-256-CFB8" +#define LN_aria_256_cfb8 "aria-256-cfb8" +#define NID_aria_256_cfb8 1085 + +#define SN_aria_128_ccm "ARIA-128-CCM" +#define LN_aria_128_ccm "aria-128-ccm" +#define NID_aria_128_ccm 1120 +#define OBJ_aria_128_ccm OBJ_aria,37L + +#define SN_aria_192_ccm "ARIA-192-CCM" +#define LN_aria_192_ccm "aria-192-ccm" +#define NID_aria_192_ccm 1121 +#define OBJ_aria_192_ccm OBJ_aria,38L + +#define SN_aria_256_ccm "ARIA-256-CCM" +#define LN_aria_256_ccm "aria-256-ccm" +#define NID_aria_256_ccm 1122 +#define OBJ_aria_256_ccm OBJ_aria,39L + +#define SN_aria_128_gcm "ARIA-128-GCM" +#define LN_aria_128_gcm "aria-128-gcm" +#define NID_aria_128_gcm 1123 +#define OBJ_aria_128_gcm OBJ_aria,34L + +#define SN_aria_192_gcm "ARIA-192-GCM" +#define LN_aria_192_gcm "aria-192-gcm" +#define NID_aria_192_gcm 1124 +#define OBJ_aria_192_gcm OBJ_aria,35L + +#define SN_aria_256_gcm "ARIA-256-GCM" +#define LN_aria_256_gcm "aria-256-gcm" +#define NID_aria_256_gcm 1125 +#define OBJ_aria_256_gcm OBJ_aria,36L + +#define SN_kisa "KISA" +#define LN_kisa "kisa" +#define NID_kisa 773 +#define OBJ_kisa OBJ_member_body,410L,200004L + +#define SN_seed_ecb "SEED-ECB" +#define LN_seed_ecb "seed-ecb" +#define NID_seed_ecb 776 +#define OBJ_seed_ecb OBJ_kisa,1L,3L + +#define SN_seed_cbc "SEED-CBC" +#define LN_seed_cbc "seed-cbc" +#define NID_seed_cbc 777 +#define OBJ_seed_cbc OBJ_kisa,1L,4L + +#define SN_seed_cfb128 "SEED-CFB" +#define LN_seed_cfb128 "seed-cfb" +#define NID_seed_cfb128 779 +#define OBJ_seed_cfb128 OBJ_kisa,1L,5L + +#define SN_seed_ofb128 "SEED-OFB" +#define LN_seed_ofb128 "seed-ofb" +#define NID_seed_ofb128 778 +#define OBJ_seed_ofb128 OBJ_kisa,1L,6L + +#define SN_sm4_ecb "SM4-ECB" +#define LN_sm4_ecb "sm4-ecb" +#define NID_sm4_ecb 1133 +#define OBJ_sm4_ecb OBJ_sm_scheme,104L,1L + +#define SN_sm4_cbc "SM4-CBC" +#define LN_sm4_cbc "sm4-cbc" +#define NID_sm4_cbc 1134 +#define OBJ_sm4_cbc OBJ_sm_scheme,104L,2L + +#define SN_sm4_ofb128 "SM4-OFB" +#define LN_sm4_ofb128 "sm4-ofb" +#define NID_sm4_ofb128 1135 +#define OBJ_sm4_ofb128 OBJ_sm_scheme,104L,3L + +#define SN_sm4_cfb128 "SM4-CFB" +#define LN_sm4_cfb128 "sm4-cfb" +#define NID_sm4_cfb128 1137 +#define OBJ_sm4_cfb128 OBJ_sm_scheme,104L,4L + +#define SN_sm4_cfb1 "SM4-CFB1" +#define LN_sm4_cfb1 "sm4-cfb1" +#define NID_sm4_cfb1 1136 +#define OBJ_sm4_cfb1 OBJ_sm_scheme,104L,5L + +#define SN_sm4_cfb8 "SM4-CFB8" +#define LN_sm4_cfb8 "sm4-cfb8" +#define NID_sm4_cfb8 1138 +#define OBJ_sm4_cfb8 OBJ_sm_scheme,104L,6L + +#define SN_sm4_ctr "SM4-CTR" +#define LN_sm4_ctr "sm4-ctr" +#define NID_sm4_ctr 1139 +#define OBJ_sm4_ctr OBJ_sm_scheme,104L,7L + +#define SN_hmac "HMAC" +#define LN_hmac "hmac" +#define NID_hmac 855 + +#define SN_cmac "CMAC" +#define LN_cmac "cmac" +#define NID_cmac 894 + +#define SN_rc4_hmac_md5 "RC4-HMAC-MD5" +#define LN_rc4_hmac_md5 "rc4-hmac-md5" +#define NID_rc4_hmac_md5 915 + +#define SN_aes_128_cbc_hmac_sha1 "AES-128-CBC-HMAC-SHA1" +#define LN_aes_128_cbc_hmac_sha1 "aes-128-cbc-hmac-sha1" +#define NID_aes_128_cbc_hmac_sha1 916 + +#define SN_aes_192_cbc_hmac_sha1 "AES-192-CBC-HMAC-SHA1" +#define LN_aes_192_cbc_hmac_sha1 "aes-192-cbc-hmac-sha1" +#define NID_aes_192_cbc_hmac_sha1 917 + +#define SN_aes_256_cbc_hmac_sha1 "AES-256-CBC-HMAC-SHA1" +#define LN_aes_256_cbc_hmac_sha1 "aes-256-cbc-hmac-sha1" +#define NID_aes_256_cbc_hmac_sha1 918 + +#define SN_aes_128_cbc_hmac_sha256 "AES-128-CBC-HMAC-SHA256" +#define LN_aes_128_cbc_hmac_sha256 "aes-128-cbc-hmac-sha256" +#define NID_aes_128_cbc_hmac_sha256 948 + +#define SN_aes_192_cbc_hmac_sha256 "AES-192-CBC-HMAC-SHA256" +#define LN_aes_192_cbc_hmac_sha256 "aes-192-cbc-hmac-sha256" +#define NID_aes_192_cbc_hmac_sha256 949 + +#define SN_aes_256_cbc_hmac_sha256 "AES-256-CBC-HMAC-SHA256" +#define LN_aes_256_cbc_hmac_sha256 "aes-256-cbc-hmac-sha256" +#define NID_aes_256_cbc_hmac_sha256 950 + +#define SN_chacha20_poly1305 "ChaCha20-Poly1305" +#define LN_chacha20_poly1305 "chacha20-poly1305" +#define NID_chacha20_poly1305 1018 + +#define SN_chacha20 "ChaCha20" +#define LN_chacha20 "chacha20" +#define NID_chacha20 1019 + +#define SN_dhpublicnumber "dhpublicnumber" +#define LN_dhpublicnumber "X9.42 DH" +#define NID_dhpublicnumber 920 +#define OBJ_dhpublicnumber OBJ_ISO_US,10046L,2L,1L + +#define SN_brainpoolP160r1 "brainpoolP160r1" +#define NID_brainpoolP160r1 921 +#define OBJ_brainpoolP160r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,1L + +#define SN_brainpoolP160t1 "brainpoolP160t1" +#define NID_brainpoolP160t1 922 +#define OBJ_brainpoolP160t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,2L + +#define SN_brainpoolP192r1 "brainpoolP192r1" +#define NID_brainpoolP192r1 923 +#define OBJ_brainpoolP192r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,3L + +#define SN_brainpoolP192t1 "brainpoolP192t1" +#define NID_brainpoolP192t1 924 +#define OBJ_brainpoolP192t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,4L + +#define SN_brainpoolP224r1 "brainpoolP224r1" +#define NID_brainpoolP224r1 925 +#define OBJ_brainpoolP224r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,5L + +#define SN_brainpoolP224t1 "brainpoolP224t1" +#define NID_brainpoolP224t1 926 +#define OBJ_brainpoolP224t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,6L + +#define SN_brainpoolP256r1 "brainpoolP256r1" +#define NID_brainpoolP256r1 927 +#define OBJ_brainpoolP256r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,7L + +#define SN_brainpoolP256t1 "brainpoolP256t1" +#define NID_brainpoolP256t1 928 +#define OBJ_brainpoolP256t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,8L + +#define SN_brainpoolP320r1 "brainpoolP320r1" +#define NID_brainpoolP320r1 929 +#define OBJ_brainpoolP320r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,9L + +#define SN_brainpoolP320t1 "brainpoolP320t1" +#define NID_brainpoolP320t1 930 +#define OBJ_brainpoolP320t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,10L + +#define SN_brainpoolP384r1 "brainpoolP384r1" +#define NID_brainpoolP384r1 931 +#define OBJ_brainpoolP384r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,11L + +#define SN_brainpoolP384t1 "brainpoolP384t1" +#define NID_brainpoolP384t1 932 +#define OBJ_brainpoolP384t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,12L + +#define SN_brainpoolP512r1 "brainpoolP512r1" +#define NID_brainpoolP512r1 933 +#define OBJ_brainpoolP512r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,13L + +#define SN_brainpoolP512t1 "brainpoolP512t1" +#define NID_brainpoolP512t1 934 +#define OBJ_brainpoolP512t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,14L + +#define OBJ_x9_63_scheme 1L,3L,133L,16L,840L,63L,0L + +#define OBJ_secg_scheme OBJ_certicom_arc,1L + +#define SN_dhSinglePass_stdDH_sha1kdf_scheme "dhSinglePass-stdDH-sha1kdf-scheme" +#define NID_dhSinglePass_stdDH_sha1kdf_scheme 936 +#define OBJ_dhSinglePass_stdDH_sha1kdf_scheme OBJ_x9_63_scheme,2L + +#define SN_dhSinglePass_stdDH_sha224kdf_scheme "dhSinglePass-stdDH-sha224kdf-scheme" +#define NID_dhSinglePass_stdDH_sha224kdf_scheme 937 +#define OBJ_dhSinglePass_stdDH_sha224kdf_scheme OBJ_secg_scheme,11L,0L + +#define SN_dhSinglePass_stdDH_sha256kdf_scheme "dhSinglePass-stdDH-sha256kdf-scheme" +#define NID_dhSinglePass_stdDH_sha256kdf_scheme 938 +#define OBJ_dhSinglePass_stdDH_sha256kdf_scheme OBJ_secg_scheme,11L,1L + +#define SN_dhSinglePass_stdDH_sha384kdf_scheme "dhSinglePass-stdDH-sha384kdf-scheme" +#define NID_dhSinglePass_stdDH_sha384kdf_scheme 939 +#define OBJ_dhSinglePass_stdDH_sha384kdf_scheme OBJ_secg_scheme,11L,2L + +#define SN_dhSinglePass_stdDH_sha512kdf_scheme "dhSinglePass-stdDH-sha512kdf-scheme" +#define NID_dhSinglePass_stdDH_sha512kdf_scheme 940 +#define OBJ_dhSinglePass_stdDH_sha512kdf_scheme OBJ_secg_scheme,11L,3L + +#define SN_dhSinglePass_cofactorDH_sha1kdf_scheme "dhSinglePass-cofactorDH-sha1kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha1kdf_scheme 941 +#define OBJ_dhSinglePass_cofactorDH_sha1kdf_scheme OBJ_x9_63_scheme,3L + +#define SN_dhSinglePass_cofactorDH_sha224kdf_scheme "dhSinglePass-cofactorDH-sha224kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha224kdf_scheme 942 +#define OBJ_dhSinglePass_cofactorDH_sha224kdf_scheme OBJ_secg_scheme,14L,0L + +#define SN_dhSinglePass_cofactorDH_sha256kdf_scheme "dhSinglePass-cofactorDH-sha256kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha256kdf_scheme 943 +#define OBJ_dhSinglePass_cofactorDH_sha256kdf_scheme OBJ_secg_scheme,14L,1L + +#define SN_dhSinglePass_cofactorDH_sha384kdf_scheme "dhSinglePass-cofactorDH-sha384kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha384kdf_scheme 944 +#define OBJ_dhSinglePass_cofactorDH_sha384kdf_scheme OBJ_secg_scheme,14L,2L + +#define SN_dhSinglePass_cofactorDH_sha512kdf_scheme "dhSinglePass-cofactorDH-sha512kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha512kdf_scheme 945 +#define OBJ_dhSinglePass_cofactorDH_sha512kdf_scheme OBJ_secg_scheme,14L,3L + +#define SN_dh_std_kdf "dh-std-kdf" +#define NID_dh_std_kdf 946 + +#define SN_dh_cofactor_kdf "dh-cofactor-kdf" +#define NID_dh_cofactor_kdf 947 + +#define SN_ct_precert_scts "ct_precert_scts" +#define LN_ct_precert_scts "CT Precertificate SCTs" +#define NID_ct_precert_scts 951 +#define OBJ_ct_precert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,2L + +#define SN_ct_precert_poison "ct_precert_poison" +#define LN_ct_precert_poison "CT Precertificate Poison" +#define NID_ct_precert_poison 952 +#define OBJ_ct_precert_poison 1L,3L,6L,1L,4L,1L,11129L,2L,4L,3L + +#define SN_ct_precert_signer "ct_precert_signer" +#define LN_ct_precert_signer "CT Precertificate Signer" +#define NID_ct_precert_signer 953 +#define OBJ_ct_precert_signer 1L,3L,6L,1L,4L,1L,11129L,2L,4L,4L + +#define SN_ct_cert_scts "ct_cert_scts" +#define LN_ct_cert_scts "CT Certificate SCTs" +#define NID_ct_cert_scts 954 +#define OBJ_ct_cert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,5L + +#define SN_jurisdictionLocalityName "jurisdictionL" +#define LN_jurisdictionLocalityName "jurisdictionLocalityName" +#define NID_jurisdictionLocalityName 955 +#define OBJ_jurisdictionLocalityName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,1L + +#define SN_jurisdictionStateOrProvinceName "jurisdictionST" +#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" +#define NID_jurisdictionStateOrProvinceName 956 +#define OBJ_jurisdictionStateOrProvinceName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,2L + +#define SN_jurisdictionCountryName "jurisdictionC" +#define LN_jurisdictionCountryName "jurisdictionCountryName" +#define NID_jurisdictionCountryName 957 +#define OBJ_jurisdictionCountryName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,3L + +#define SN_id_scrypt "id-scrypt" +#define LN_id_scrypt "scrypt" +#define NID_id_scrypt 973 +#define OBJ_id_scrypt 1L,3L,6L,1L,4L,1L,11591L,4L,11L + +#define SN_tls1_prf "TLS1-PRF" +#define LN_tls1_prf "tls1-prf" +#define NID_tls1_prf 1021 + +#define SN_hkdf "HKDF" +#define LN_hkdf "hkdf" +#define NID_hkdf 1036 + +#define SN_id_pkinit "id-pkinit" +#define NID_id_pkinit 1031 +#define OBJ_id_pkinit 1L,3L,6L,1L,5L,2L,3L + +#define SN_pkInitClientAuth "pkInitClientAuth" +#define LN_pkInitClientAuth "PKINIT Client Auth" +#define NID_pkInitClientAuth 1032 +#define OBJ_pkInitClientAuth OBJ_id_pkinit,4L + +#define SN_pkInitKDC "pkInitKDC" +#define LN_pkInitKDC "Signing KDC Response" +#define NID_pkInitKDC 1033 +#define OBJ_pkInitKDC OBJ_id_pkinit,5L + +#define SN_X25519 "X25519" +#define NID_X25519 1034 +#define OBJ_X25519 1L,3L,101L,110L + +#define SN_X448 "X448" +#define NID_X448 1035 +#define OBJ_X448 1L,3L,101L,111L + +#define SN_ED25519 "ED25519" +#define NID_ED25519 1087 +#define OBJ_ED25519 1L,3L,101L,112L + +#define SN_ED448 "ED448" +#define NID_ED448 1088 +#define OBJ_ED448 1L,3L,101L,113L + +#define SN_kx_rsa "KxRSA" +#define LN_kx_rsa "kx-rsa" +#define NID_kx_rsa 1037 + +#define SN_kx_ecdhe "KxECDHE" +#define LN_kx_ecdhe "kx-ecdhe" +#define NID_kx_ecdhe 1038 + +#define SN_kx_dhe "KxDHE" +#define LN_kx_dhe "kx-dhe" +#define NID_kx_dhe 1039 + +#define SN_kx_ecdhe_psk "KxECDHE-PSK" +#define LN_kx_ecdhe_psk "kx-ecdhe-psk" +#define NID_kx_ecdhe_psk 1040 + +#define SN_kx_dhe_psk "KxDHE-PSK" +#define LN_kx_dhe_psk "kx-dhe-psk" +#define NID_kx_dhe_psk 1041 + +#define SN_kx_rsa_psk "KxRSA_PSK" +#define LN_kx_rsa_psk "kx-rsa-psk" +#define NID_kx_rsa_psk 1042 + +#define SN_kx_psk "KxPSK" +#define LN_kx_psk "kx-psk" +#define NID_kx_psk 1043 + +#define SN_kx_srp "KxSRP" +#define LN_kx_srp "kx-srp" +#define NID_kx_srp 1044 + +#define SN_kx_gost "KxGOST" +#define LN_kx_gost "kx-gost" +#define NID_kx_gost 1045 + +#define SN_kx_any "KxANY" +#define LN_kx_any "kx-any" +#define NID_kx_any 1063 + +#define SN_auth_rsa "AuthRSA" +#define LN_auth_rsa "auth-rsa" +#define NID_auth_rsa 1046 + +#define SN_auth_ecdsa "AuthECDSA" +#define LN_auth_ecdsa "auth-ecdsa" +#define NID_auth_ecdsa 1047 + +#define SN_auth_psk "AuthPSK" +#define LN_auth_psk "auth-psk" +#define NID_auth_psk 1048 + +#define SN_auth_dss "AuthDSS" +#define LN_auth_dss "auth-dss" +#define NID_auth_dss 1049 + +#define SN_auth_gost01 "AuthGOST01" +#define LN_auth_gost01 "auth-gost01" +#define NID_auth_gost01 1050 + +#define SN_auth_gost12 "AuthGOST12" +#define LN_auth_gost12 "auth-gost12" +#define NID_auth_gost12 1051 + +#define SN_auth_srp "AuthSRP" +#define LN_auth_srp "auth-srp" +#define NID_auth_srp 1052 + +#define SN_auth_null "AuthNULL" +#define LN_auth_null "auth-null" +#define NID_auth_null 1053 + +#define SN_auth_any "AuthANY" +#define LN_auth_any "auth-any" +#define NID_auth_any 1064 + +#define SN_poly1305 "Poly1305" +#define LN_poly1305 "poly1305" +#define NID_poly1305 1061 + +#define SN_siphash "SipHash" +#define LN_siphash "siphash" +#define NID_siphash 1062 + +#define SN_ffdhe2048 "ffdhe2048" +#define NID_ffdhe2048 1126 + +#define SN_ffdhe3072 "ffdhe3072" +#define NID_ffdhe3072 1127 + +#define SN_ffdhe4096 "ffdhe4096" +#define NID_ffdhe4096 1128 + +#define SN_ffdhe6144 "ffdhe6144" +#define NID_ffdhe6144 1129 + +#define SN_ffdhe8192 "ffdhe8192" +#define NID_ffdhe8192 1130 + +#define SN_ISO_UA "ISO-UA" +#define NID_ISO_UA 1150 +#define OBJ_ISO_UA OBJ_member_body,804L + +#define SN_ua_pki "ua-pki" +#define NID_ua_pki 1151 +#define OBJ_ua_pki OBJ_ISO_UA,2L,1L,1L,1L + +#define SN_dstu28147 "dstu28147" +#define LN_dstu28147 "DSTU Gost 28147-2009" +#define NID_dstu28147 1152 +#define OBJ_dstu28147 OBJ_ua_pki,1L,1L,1L + +#define SN_dstu28147_ofb "dstu28147-ofb" +#define LN_dstu28147_ofb "DSTU Gost 28147-2009 OFB mode" +#define NID_dstu28147_ofb 1153 +#define OBJ_dstu28147_ofb OBJ_dstu28147,2L + +#define SN_dstu28147_cfb "dstu28147-cfb" +#define LN_dstu28147_cfb "DSTU Gost 28147-2009 CFB mode" +#define NID_dstu28147_cfb 1154 +#define OBJ_dstu28147_cfb OBJ_dstu28147,3L + +#define SN_dstu28147_wrap "dstu28147-wrap" +#define LN_dstu28147_wrap "DSTU Gost 28147-2009 key wrap" +#define NID_dstu28147_wrap 1155 +#define OBJ_dstu28147_wrap OBJ_dstu28147,5L + +#define SN_hmacWithDstu34311 "hmacWithDstu34311" +#define LN_hmacWithDstu34311 "HMAC DSTU Gost 34311-95" +#define NID_hmacWithDstu34311 1156 +#define OBJ_hmacWithDstu34311 OBJ_ua_pki,1L,1L,2L + +#define SN_dstu34311 "dstu34311" +#define LN_dstu34311 "DSTU Gost 34311-95" +#define NID_dstu34311 1157 +#define OBJ_dstu34311 OBJ_ua_pki,1L,2L,1L + +#define SN_dstu4145le "dstu4145le" +#define LN_dstu4145le "DSTU 4145-2002 little endian" +#define NID_dstu4145le 1158 +#define OBJ_dstu4145le OBJ_ua_pki,1L,3L,1L,1L + +#define SN_dstu4145be "dstu4145be" +#define LN_dstu4145be "DSTU 4145-2002 big endian" +#define NID_dstu4145be 1159 +#define OBJ_dstu4145be OBJ_dstu4145le,1L,1L + +#define SN_uacurve0 "uacurve0" +#define LN_uacurve0 "DSTU curve 0" +#define NID_uacurve0 1160 +#define OBJ_uacurve0 OBJ_dstu4145le,2L,0L + +#define SN_uacurve1 "uacurve1" +#define LN_uacurve1 "DSTU curve 1" +#define NID_uacurve1 1161 +#define OBJ_uacurve1 OBJ_dstu4145le,2L,1L + +#define SN_uacurve2 "uacurve2" +#define LN_uacurve2 "DSTU curve 2" +#define NID_uacurve2 1162 +#define OBJ_uacurve2 OBJ_dstu4145le,2L,2L + +#define SN_uacurve3 "uacurve3" +#define LN_uacurve3 "DSTU curve 3" +#define NID_uacurve3 1163 +#define OBJ_uacurve3 OBJ_dstu4145le,2L,3L + +#define SN_uacurve4 "uacurve4" +#define LN_uacurve4 "DSTU curve 4" +#define NID_uacurve4 1164 +#define OBJ_uacurve4 OBJ_dstu4145le,2L,4L + +#define SN_uacurve5 "uacurve5" +#define LN_uacurve5 "DSTU curve 5" +#define NID_uacurve5 1165 +#define OBJ_uacurve5 OBJ_dstu4145le,2L,5L + +#define SN_uacurve6 "uacurve6" +#define LN_uacurve6 "DSTU curve 6" +#define NID_uacurve6 1166 +#define OBJ_uacurve6 OBJ_dstu4145le,2L,6L + +#define SN_uacurve7 "uacurve7" +#define LN_uacurve7 "DSTU curve 7" +#define NID_uacurve7 1167 +#define OBJ_uacurve7 OBJ_dstu4145le,2L,7L + +#define SN_uacurve8 "uacurve8" +#define LN_uacurve8 "DSTU curve 8" +#define NID_uacurve8 1168 +#define OBJ_uacurve8 OBJ_dstu4145le,2L,8L + +#define SN_uacurve9 "uacurve9" +#define LN_uacurve9 "DSTU curve 9" +#define NID_uacurve9 1169 +#define OBJ_uacurve9 OBJ_dstu4145le,2L,9L diff --git a/openSSL/win64/include/openssl/objects.h b/openSSL/win64/include/openssl/objects.h new file mode 100644 index 0000000..5e8b576 --- /dev/null +++ b/openSSL/win64/include/openssl/objects.h @@ -0,0 +1,175 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OBJECTS_H +# define HEADER_OBJECTS_H + +# include +# include +# include +# include + +# define OBJ_NAME_TYPE_UNDEF 0x00 +# define OBJ_NAME_TYPE_MD_METH 0x01 +# define OBJ_NAME_TYPE_CIPHER_METH 0x02 +# define OBJ_NAME_TYPE_PKEY_METH 0x03 +# define OBJ_NAME_TYPE_COMP_METH 0x04 +# define OBJ_NAME_TYPE_NUM 0x05 + +# define OBJ_NAME_ALIAS 0x8000 + +# define OBJ_BSEARCH_VALUE_ON_NOMATCH 0x01 +# define OBJ_BSEARCH_FIRST_VALUE_ON_MATCH 0x02 + + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct obj_name_st { + int type; + int alias; + const char *name; + const char *data; +} OBJ_NAME; + +# define OBJ_create_and_add_object(a,b,c) OBJ_create(a,b,c) + +int OBJ_NAME_init(void); +int OBJ_NAME_new_index(unsigned long (*hash_func) (const char *), + int (*cmp_func) (const char *, const char *), + void (*free_func) (const char *, int, const char *)); +const char *OBJ_NAME_get(const char *name, int type); +int OBJ_NAME_add(const char *name, int type, const char *data); +int OBJ_NAME_remove(const char *name, int type); +void OBJ_NAME_cleanup(int type); /* -1 for everything */ +void OBJ_NAME_do_all(int type, void (*fn) (const OBJ_NAME *, void *arg), + void *arg); +void OBJ_NAME_do_all_sorted(int type, + void (*fn) (const OBJ_NAME *, void *arg), + void *arg); + +ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o); +ASN1_OBJECT *OBJ_nid2obj(int n); +const char *OBJ_nid2ln(int n); +const char *OBJ_nid2sn(int n); +int OBJ_obj2nid(const ASN1_OBJECT *o); +ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name); +int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name); +int OBJ_txt2nid(const char *s); +int OBJ_ln2nid(const char *s); +int OBJ_sn2nid(const char *s); +int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b); +const void *OBJ_bsearch_(const void *key, const void *base, int num, int size, + int (*cmp) (const void *, const void *)); +const void *OBJ_bsearch_ex_(const void *key, const void *base, int num, + int size, + int (*cmp) (const void *, const void *), + int flags); + +# define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *, const void *); \ + static int nm##_cmp(type1 const *, type2 const *); \ + scope type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +# define DECLARE_OBJ_BSEARCH_CMP_FN(type1, type2, cmp) \ + _DECLARE_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp) +# define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +/*- + * Unsolved problem: if a type is actually a pointer type, like + * nid_triple is, then its impossible to get a const where you need + * it. Consider: + * + * typedef int nid_triple[3]; + * const void *a_; + * const nid_triple const *a = a_; + * + * The assignment discards a const because what you really want is: + * + * const int const * const *a = a_; + * + * But if you do that, you lose the fact that a is an array of 3 ints, + * which breaks comparison functions. + * + * Thus we end up having to cast, sadly, or unpack the + * declarations. Or, as I finally did in this case, declare nid_triple + * to be a struct, which it should have been in the first place. + * + * Ben, August 2008. + * + * Also, strictly speaking not all types need be const, but handling + * the non-constness means a lot of complication, and in practice + * comparison routines do always not touch their arguments. + */ + +# define IMPLEMENT_OBJ_BSEARCH_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a,b); \ + } \ + static type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +# define IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a,b); \ + } \ + type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +# define OBJ_bsearch(type1,key,type2,base,num,cmp) \ + ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \ + num,sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \ + (void)CHECKED_PTR_OF(type2,cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN))) + +# define OBJ_bsearch_ex(type1,key,type2,base,num,cmp,flags) \ + ((type2 *)OBJ_bsearch_ex_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \ + num,sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \ + (void)type_2=CHECKED_PTR_OF(type2,cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN)),flags) + +int OBJ_new_nid(int num); +int OBJ_add_object(const ASN1_OBJECT *obj); +int OBJ_create(const char *oid, const char *sn, const char *ln); +#if OPENSSL_API_COMPAT < 0x10100000L +# define OBJ_cleanup() while(0) continue +#endif +int OBJ_create_objects(BIO *in); + +size_t OBJ_length(const ASN1_OBJECT *obj); +const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj); + +int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid); +int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid); +int OBJ_add_sigid(int signid, int dig_id, int pkey_id); +void OBJ_sigid_free(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/objectserr.h b/openSSL/win64/include/openssl/objectserr.h new file mode 100644 index 0000000..02e166f --- /dev/null +++ b/openSSL/win64/include/openssl/objectserr.h @@ -0,0 +1,42 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OBJERR_H +# define HEADER_OBJERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OBJ_strings(void); + +/* + * OBJ function codes. + */ +# define OBJ_F_OBJ_ADD_OBJECT 105 +# define OBJ_F_OBJ_ADD_SIGID 107 +# define OBJ_F_OBJ_CREATE 100 +# define OBJ_F_OBJ_DUP 101 +# define OBJ_F_OBJ_NAME_NEW_INDEX 106 +# define OBJ_F_OBJ_NID2LN 102 +# define OBJ_F_OBJ_NID2OBJ 103 +# define OBJ_F_OBJ_NID2SN 104 +# define OBJ_F_OBJ_TXT2OBJ 108 + +/* + * OBJ reason codes. + */ +# define OBJ_R_OID_EXISTS 102 +# define OBJ_R_UNKNOWN_NID 101 + +#endif diff --git a/openSSL/win64/include/openssl/ocsp.h b/openSSL/win64/include/openssl/ocsp.h new file mode 100644 index 0000000..4d759a4 --- /dev/null +++ b/openSSL/win64/include/openssl/ocsp.h @@ -0,0 +1,352 @@ +/* + * Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OCSP_H +# define HEADER_OCSP_H + +#include + +/* + * These definitions are outside the OPENSSL_NO_OCSP guard because although for + * historical reasons they have OCSP_* names, they can actually be used + * independently of OCSP. E.g. see RFC5280 + */ +/*- + * CRLReason ::= ENUMERATED { + * unspecified (0), + * keyCompromise (1), + * cACompromise (2), + * affiliationChanged (3), + * superseded (4), + * cessationOfOperation (5), + * certificateHold (6), + * removeFromCRL (8) } + */ +# define OCSP_REVOKED_STATUS_NOSTATUS -1 +# define OCSP_REVOKED_STATUS_UNSPECIFIED 0 +# define OCSP_REVOKED_STATUS_KEYCOMPROMISE 1 +# define OCSP_REVOKED_STATUS_CACOMPROMISE 2 +# define OCSP_REVOKED_STATUS_AFFILIATIONCHANGED 3 +# define OCSP_REVOKED_STATUS_SUPERSEDED 4 +# define OCSP_REVOKED_STATUS_CESSATIONOFOPERATION 5 +# define OCSP_REVOKED_STATUS_CERTIFICATEHOLD 6 +# define OCSP_REVOKED_STATUS_REMOVEFROMCRL 8 + + +# ifndef OPENSSL_NO_OCSP + +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Various flags and values */ + +# define OCSP_DEFAULT_NONCE_LENGTH 16 + +# define OCSP_NOCERTS 0x1 +# define OCSP_NOINTERN 0x2 +# define OCSP_NOSIGS 0x4 +# define OCSP_NOCHAIN 0x8 +# define OCSP_NOVERIFY 0x10 +# define OCSP_NOEXPLICIT 0x20 +# define OCSP_NOCASIGN 0x40 +# define OCSP_NODELEGATED 0x80 +# define OCSP_NOCHECKS 0x100 +# define OCSP_TRUSTOTHER 0x200 +# define OCSP_RESPID_KEY 0x400 +# define OCSP_NOTIME 0x800 + +typedef struct ocsp_cert_id_st OCSP_CERTID; + +DEFINE_STACK_OF(OCSP_CERTID) + +typedef struct ocsp_one_request_st OCSP_ONEREQ; + +DEFINE_STACK_OF(OCSP_ONEREQ) + +typedef struct ocsp_req_info_st OCSP_REQINFO; +typedef struct ocsp_signature_st OCSP_SIGNATURE; +typedef struct ocsp_request_st OCSP_REQUEST; + +# define OCSP_RESPONSE_STATUS_SUCCESSFUL 0 +# define OCSP_RESPONSE_STATUS_MALFORMEDREQUEST 1 +# define OCSP_RESPONSE_STATUS_INTERNALERROR 2 +# define OCSP_RESPONSE_STATUS_TRYLATER 3 +# define OCSP_RESPONSE_STATUS_SIGREQUIRED 5 +# define OCSP_RESPONSE_STATUS_UNAUTHORIZED 6 + +typedef struct ocsp_resp_bytes_st OCSP_RESPBYTES; + +# define V_OCSP_RESPID_NAME 0 +# define V_OCSP_RESPID_KEY 1 + +DEFINE_STACK_OF(OCSP_RESPID) + +typedef struct ocsp_revoked_info_st OCSP_REVOKEDINFO; + +# define V_OCSP_CERTSTATUS_GOOD 0 +# define V_OCSP_CERTSTATUS_REVOKED 1 +# define V_OCSP_CERTSTATUS_UNKNOWN 2 + +typedef struct ocsp_cert_status_st OCSP_CERTSTATUS; +typedef struct ocsp_single_response_st OCSP_SINGLERESP; + +DEFINE_STACK_OF(OCSP_SINGLERESP) + +typedef struct ocsp_response_data_st OCSP_RESPDATA; + +typedef struct ocsp_basic_response_st OCSP_BASICRESP; + +typedef struct ocsp_crl_id_st OCSP_CRLID; +typedef struct ocsp_service_locator_st OCSP_SERVICELOC; + +# define PEM_STRING_OCSP_REQUEST "OCSP REQUEST" +# define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE" + +# define d2i_OCSP_REQUEST_bio(bp,p) ASN1_d2i_bio_of(OCSP_REQUEST,OCSP_REQUEST_new,d2i_OCSP_REQUEST,bp,p) + +# define d2i_OCSP_RESPONSE_bio(bp,p) ASN1_d2i_bio_of(OCSP_RESPONSE,OCSP_RESPONSE_new,d2i_OCSP_RESPONSE,bp,p) + +# define PEM_read_bio_OCSP_REQUEST(bp,x,cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \ + (char *(*)())d2i_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST, \ + bp,(char **)(x),cb,NULL) + +# define PEM_read_bio_OCSP_RESPONSE(bp,x,cb) (OCSP_RESPONSE *)PEM_ASN1_read_bio(\ + (char *(*)())d2i_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE, \ + bp,(char **)(x),cb,NULL) + +# define PEM_write_bio_OCSP_REQUEST(bp,o) \ + PEM_ASN1_write_bio((int (*)())i2d_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST,\ + bp,(char *)(o), NULL,NULL,0,NULL,NULL) + +# define PEM_write_bio_OCSP_RESPONSE(bp,o) \ + PEM_ASN1_write_bio((int (*)())i2d_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE,\ + bp,(char *)(o), NULL,NULL,0,NULL,NULL) + +# define i2d_OCSP_RESPONSE_bio(bp,o) ASN1_i2d_bio_of(OCSP_RESPONSE,i2d_OCSP_RESPONSE,bp,o) + +# define i2d_OCSP_REQUEST_bio(bp,o) ASN1_i2d_bio_of(OCSP_REQUEST,i2d_OCSP_REQUEST,bp,o) + +# define ASN1_BIT_STRING_digest(data,type,md,len) \ + ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING),type,data,md,len) + +# define OCSP_CERTSTATUS_dup(cs)\ + (OCSP_CERTSTATUS*)ASN1_dup((int(*)())i2d_OCSP_CERTSTATUS,\ + (char *(*)())d2i_OCSP_CERTSTATUS,(char *)(cs)) + +OCSP_CERTID *OCSP_CERTID_dup(OCSP_CERTID *id); + +OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); +OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, OCSP_REQUEST *req, + int maxline); +int OCSP_REQ_CTX_nbio(OCSP_REQ_CTX *rctx); +int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx); +OCSP_REQ_CTX *OCSP_REQ_CTX_new(BIO *io, int maxline); +void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx); +void OCSP_set_max_response_length(OCSP_REQ_CTX *rctx, unsigned long len); +int OCSP_REQ_CTX_i2d(OCSP_REQ_CTX *rctx, const ASN1_ITEM *it, + ASN1_VALUE *val); +int OCSP_REQ_CTX_nbio_d2i(OCSP_REQ_CTX *rctx, ASN1_VALUE **pval, + const ASN1_ITEM *it); +BIO *OCSP_REQ_CTX_get0_mem_bio(OCSP_REQ_CTX *rctx); +int OCSP_REQ_CTX_http(OCSP_REQ_CTX *rctx, const char *op, const char *path); +int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req); +int OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx, + const char *name, const char *value); + +OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, const X509 *subject, + const X509 *issuer); + +OCSP_CERTID *OCSP_cert_id_new(const EVP_MD *dgst, + const X509_NAME *issuerName, + const ASN1_BIT_STRING *issuerKey, + const ASN1_INTEGER *serialNumber); + +OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid); + +int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len); +int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len); +int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *bs); +int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req); + +int OCSP_request_set1_name(OCSP_REQUEST *req, X509_NAME *nm); +int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert); + +int OCSP_request_sign(OCSP_REQUEST *req, + X509 *signer, + EVP_PKEY *key, + const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); + +int OCSP_response_status(OCSP_RESPONSE *resp); +OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp); + +const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs); +const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs); +const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_signer(OCSP_BASICRESP *bs, X509 **signer, + STACK_OF(X509) *extra_certs); + +int OCSP_resp_count(OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx); +const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(const OCSP_BASICRESP* bs); +const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_id(const OCSP_BASICRESP *bs, + const ASN1_OCTET_STRING **pid, + const X509_NAME **pname); +int OCSP_resp_get1_id(const OCSP_BASICRESP *bs, + ASN1_OCTET_STRING **pid, + X509_NAME **pname); + +int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last); +int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status, + int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, + ASN1_GENERALIZEDTIME *nextupd, long sec, long maxsec); + +int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, + X509_STORE *store, unsigned long flags); + +int OCSP_parse_url(const char *url, char **phost, char **pport, char **ppath, + int *pssl); + +int OCSP_id_issuer_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); +int OCSP_id_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); + +int OCSP_request_onereq_count(OCSP_REQUEST *req); +OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i); +OCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one); +int OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, + ASN1_OCTET_STRING **pikeyHash, + ASN1_INTEGER **pserial, OCSP_CERTID *cid); +int OCSP_request_is_signed(OCSP_REQUEST *req); +OCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp, + OCSP_CERTID *cid, + int status, int reason, + ASN1_TIME *revtime, + ASN1_TIME *thisupd, + ASN1_TIME *nextupd); +int OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert); +int OCSP_basic_sign(OCSP_BASICRESP *brsp, + X509 *signer, EVP_PKEY *key, const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_basic_sign_ctx(OCSP_BASICRESP *brsp, + X509 *signer, EVP_MD_CTX *ctx, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_RESPID_set_by_name(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_match(OCSP_RESPID *respid, X509 *cert); + +X509_EXTENSION *OCSP_crlID_new(const char *url, long *n, char *tim); + +X509_EXTENSION *OCSP_accept_responses_new(char **oids); + +X509_EXTENSION *OCSP_archive_cutoff_new(char *tim); + +X509_EXTENSION *OCSP_url_svcloc_new(X509_NAME *issuer, const char **urls); + +int OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x); +int OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos); +int OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos); +X509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc); +X509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc); +void *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit, + int *idx); +int OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc); + +int OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x); +int OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos); +int OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, const ASN1_OBJECT *obj, int lastpos); +int OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos); +X509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc); +X509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc); +void *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx); +int OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc); + +int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x); +int OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos); +int OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc); +X509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc); +void *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit, + int *idx); +int OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc); + +int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x); +int OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos); +int OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc); +X509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc); +void *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit, + int *idx); +int OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc); +const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x); + +DECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS) +DECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPID) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES) +DECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTID) +DECLARE_ASN1_FUNCTIONS(OCSP_REQUEST) +DECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE) +DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_CRLID) +DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC) + +const char *OCSP_response_status_str(long s); +const char *OCSP_cert_status_str(long s); +const char *OCSP_crl_reason_str(long s); + +int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *a, unsigned long flags); +int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags); + +int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, + X509_STORE *st, unsigned long flags); + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/win64/include/openssl/ocsperr.h b/openSSL/win64/include/openssl/ocsperr.h new file mode 100644 index 0000000..8dd9e01 --- /dev/null +++ b/openSSL/win64/include/openssl/ocsperr.h @@ -0,0 +1,78 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OCSPERR_H +# define HEADER_OCSPERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_OCSP + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OCSP_strings(void); + +/* + * OCSP function codes. + */ +# define OCSP_F_D2I_OCSP_NONCE 102 +# define OCSP_F_OCSP_BASIC_ADD1_STATUS 103 +# define OCSP_F_OCSP_BASIC_SIGN 104 +# define OCSP_F_OCSP_BASIC_SIGN_CTX 119 +# define OCSP_F_OCSP_BASIC_VERIFY 105 +# define OCSP_F_OCSP_CERT_ID_NEW 101 +# define OCSP_F_OCSP_CHECK_DELEGATED 106 +# define OCSP_F_OCSP_CHECK_IDS 107 +# define OCSP_F_OCSP_CHECK_ISSUER 108 +# define OCSP_F_OCSP_CHECK_VALIDITY 115 +# define OCSP_F_OCSP_MATCH_ISSUERID 109 +# define OCSP_F_OCSP_PARSE_URL 114 +# define OCSP_F_OCSP_REQUEST_SIGN 110 +# define OCSP_F_OCSP_REQUEST_VERIFY 116 +# define OCSP_F_OCSP_RESPONSE_GET1_BASIC 111 +# define OCSP_F_PARSE_HTTP_LINE1 118 + +/* + * OCSP reason codes. + */ +# define OCSP_R_CERTIFICATE_VERIFY_ERROR 101 +# define OCSP_R_DIGEST_ERR 102 +# define OCSP_R_ERROR_IN_NEXTUPDATE_FIELD 122 +# define OCSP_R_ERROR_IN_THISUPDATE_FIELD 123 +# define OCSP_R_ERROR_PARSING_URL 121 +# define OCSP_R_MISSING_OCSPSIGNING_USAGE 103 +# define OCSP_R_NEXTUPDATE_BEFORE_THISUPDATE 124 +# define OCSP_R_NOT_BASIC_RESPONSE 104 +# define OCSP_R_NO_CERTIFICATES_IN_CHAIN 105 +# define OCSP_R_NO_RESPONSE_DATA 108 +# define OCSP_R_NO_REVOKED_TIME 109 +# define OCSP_R_NO_SIGNER_KEY 130 +# define OCSP_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 110 +# define OCSP_R_REQUEST_NOT_SIGNED 128 +# define OCSP_R_RESPONSE_CONTAINS_NO_REVOCATION_DATA 111 +# define OCSP_R_ROOT_CA_NOT_TRUSTED 112 +# define OCSP_R_SERVER_RESPONSE_ERROR 114 +# define OCSP_R_SERVER_RESPONSE_PARSE_ERROR 115 +# define OCSP_R_SIGNATURE_FAILURE 117 +# define OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND 118 +# define OCSP_R_STATUS_EXPIRED 125 +# define OCSP_R_STATUS_NOT_YET_VALID 126 +# define OCSP_R_STATUS_TOO_OLD 127 +# define OCSP_R_UNKNOWN_MESSAGE_DIGEST 119 +# define OCSP_R_UNKNOWN_NID 120 +# define OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE 129 + +# endif +#endif diff --git a/openSSL/win64/include/openssl/opensslconf.h b/openSSL/win64/include/openssl/opensslconf.h new file mode 100644 index 0000000..f81a393 --- /dev/null +++ b/openSSL/win64/include/openssl/opensslconf.h @@ -0,0 +1,203 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_SYS_MINGW64 +# define OPENSSL_SYS_MINGW64 1 +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +#endif +#ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#endif +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +#endif +#ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +#endif +#ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_STATIC_ENGINE +# define OPENSSL_NO_STATIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#ifndef OPENSSL_FILE +# ifdef OPENSSL_NO_FILENAMES +# define OPENSSL_FILE "" +# define OPENSSL_LINE 0 +# else +# define OPENSSL_FILE __FILE__ +# define OPENSSL_LINE __LINE__ +# endif +#endif + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#define OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# undef SIXTY_FOUR_BIT_LONG +# define SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#define RC4_INT unsigned int + +#ifdef __cplusplus +} +#endif diff --git a/openSSL/win64/include/openssl/opensslv.h b/openSSL/win64/include/openssl/opensslv.h new file mode 100644 index 0000000..fec5f57 --- /dev/null +++ b/openSSL/win64/include/openssl/opensslv.h @@ -0,0 +1,101 @@ +/* + * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OPENSSLV_H +# define HEADER_OPENSSLV_H + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * Numeric release version identifier: + * MNNFFPPS: major minor fix patch status + * The status nibble has one of the values 0 for development, 1 to e for betas + * 1 to 14, and f for release. The patch level is exactly that. + * For example: + * 0.9.3-dev 0x00903000 + * 0.9.3-beta1 0x00903001 + * 0.9.3-beta2-dev 0x00903002 + * 0.9.3-beta2 0x00903002 (same as ...beta2-dev) + * 0.9.3 0x0090300f + * 0.9.3a 0x0090301f + * 0.9.4 0x0090400f + * 1.2.3z 0x102031af + * + * For continuity reasons (because 0.9.5 is already out, and is coded + * 0x00905100), between 0.9.5 and 0.9.6 the coding of the patch level + * part is slightly different, by setting the highest bit. This means + * that 0.9.5a looks like this: 0x0090581f. At 0.9.6, we can start + * with 0x0090600S... + * + * (Prior to 0.9.3-dev a different scheme was used: 0.9.2b is 0x0922.) + * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for + * major minor fix final patch/beta) + */ +# define OPENSSL_VERSION_NUMBER 0x1010111fL +# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1q 5 Jul 2022" + +/*- + * The macros below are to be used for shared library (.so, .dll, ...) + * versioning. That kind of versioning works a bit differently between + * operating systems. The most usual scheme is to set a major and a minor + * number, and have the runtime loader check that the major number is equal + * to what it was at application link time, while the minor number has to + * be greater or equal to what it was at application link time. With this + * scheme, the version number is usually part of the file name, like this: + * + * libcrypto.so.0.9 + * + * Some unixen also make a softlink with the major version number only: + * + * libcrypto.so.0 + * + * On Tru64 and IRIX 6.x it works a little bit differently. There, the + * shared library version is stored in the file, and is actually a series + * of versions, separated by colons. The rightmost version present in the + * library when linking an application is stored in the application to be + * matched at run time. When the application is run, a check is done to + * see if the library version stored in the application matches any of the + * versions in the version string of the library itself. + * This version string can be constructed in any way, depending on what + * kind of matching is desired. However, to implement the same scheme as + * the one used in the other unixen, all compatible versions, from lowest + * to highest, should be part of the string. Consecutive builds would + * give the following versions strings: + * + * 3.0 + * 3.0:3.1 + * 3.0:3.1:3.2 + * 4.0 + * 4.0:4.1 + * + * Notice how version 4 is completely incompatible with version, and + * therefore give the breach you can see. + * + * There may be other schemes as well that I haven't yet discovered. + * + * So, here's the way it works here: first of all, the library version + * number doesn't need at all to match the overall OpenSSL version. + * However, it's nice and more understandable if it actually does. + * The current library version is stored in the macro SHLIB_VERSION_NUMBER, + * which is just a piece of text in the format "M.m.e" (Major, minor, edit). + * For the sake of Tru64, IRIX, and any other OS that behaves in similar ways, + * we need to keep a history of version numbers, which is done in the + * macro SHLIB_VERSION_HISTORY. The numbers are separated by colons and + * should only keep the versions that are binary compatible with the current. + */ +# define SHLIB_VERSION_HISTORY "" +# define SHLIB_VERSION_NUMBER "1.1" + + +#ifdef __cplusplus +} +#endif +#endif /* HEADER_OPENSSLV_H */ diff --git a/openSSL/win64/include/openssl/ossl_typ.h b/openSSL/win64/include/openssl/ossl_typ.h new file mode 100644 index 0000000..e0edfaa --- /dev/null +++ b/openSSL/win64/include/openssl/ossl_typ.h @@ -0,0 +1,197 @@ +/* + * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OPENSSL_TYPES_H +# define HEADER_OPENSSL_TYPES_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +# ifdef NO_ASN1_TYPEDEFS +# define ASN1_INTEGER ASN1_STRING +# define ASN1_ENUMERATED ASN1_STRING +# define ASN1_BIT_STRING ASN1_STRING +# define ASN1_OCTET_STRING ASN1_STRING +# define ASN1_PRINTABLESTRING ASN1_STRING +# define ASN1_T61STRING ASN1_STRING +# define ASN1_IA5STRING ASN1_STRING +# define ASN1_UTCTIME ASN1_STRING +# define ASN1_GENERALIZEDTIME ASN1_STRING +# define ASN1_TIME ASN1_STRING +# define ASN1_GENERALSTRING ASN1_STRING +# define ASN1_UNIVERSALSTRING ASN1_STRING +# define ASN1_BMPSTRING ASN1_STRING +# define ASN1_VISIBLESTRING ASN1_STRING +# define ASN1_UTF8STRING ASN1_STRING +# define ASN1_BOOLEAN int +# define ASN1_NULL int +# else +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct asn1_string_st ASN1_ENUMERATED; +typedef struct asn1_string_st ASN1_BIT_STRING; +typedef struct asn1_string_st ASN1_OCTET_STRING; +typedef struct asn1_string_st ASN1_PRINTABLESTRING; +typedef struct asn1_string_st ASN1_T61STRING; +typedef struct asn1_string_st ASN1_IA5STRING; +typedef struct asn1_string_st ASN1_GENERALSTRING; +typedef struct asn1_string_st ASN1_UNIVERSALSTRING; +typedef struct asn1_string_st ASN1_BMPSTRING; +typedef struct asn1_string_st ASN1_UTCTIME; +typedef struct asn1_string_st ASN1_TIME; +typedef struct asn1_string_st ASN1_GENERALIZEDTIME; +typedef struct asn1_string_st ASN1_VISIBLESTRING; +typedef struct asn1_string_st ASN1_UTF8STRING; +typedef struct asn1_string_st ASN1_STRING; +typedef int ASN1_BOOLEAN; +typedef int ASN1_NULL; +# endif + +typedef struct asn1_object_st ASN1_OBJECT; + +typedef struct ASN1_ITEM_st ASN1_ITEM; +typedef struct asn1_pctx_st ASN1_PCTX; +typedef struct asn1_sctx_st ASN1_SCTX; + +# ifdef _WIN32 +# undef X509_NAME +# undef X509_EXTENSIONS +# undef PKCS7_ISSUER_AND_SERIAL +# undef PKCS7_SIGNER_INFO +# undef OCSP_REQUEST +# undef OCSP_RESPONSE +# endif + +# ifdef BIGNUM +# undef BIGNUM +# endif +struct dane_st; +typedef struct bio_st BIO; +typedef struct bignum_st BIGNUM; +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; + +typedef struct buf_mem_st BUF_MEM; + +typedef struct evp_cipher_st EVP_CIPHER; +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; +typedef struct evp_md_st EVP_MD; +typedef struct evp_md_ctx_st EVP_MD_CTX; +typedef struct evp_pkey_st EVP_PKEY; + +typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; + +typedef struct evp_pkey_method_st EVP_PKEY_METHOD; +typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; + +typedef struct evp_Encode_Ctx_st EVP_ENCODE_CTX; + +typedef struct hmac_ctx_st HMAC_CTX; + +typedef struct dh_st DH; +typedef struct dh_method DH_METHOD; + +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; + +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; +typedef struct rsa_pss_params_st RSA_PSS_PARAMS; + +typedef struct ec_key_st EC_KEY; +typedef struct ec_key_method_st EC_KEY_METHOD; + +typedef struct rand_meth_st RAND_METHOD; +typedef struct rand_drbg_st RAND_DRBG; + +typedef struct ssl_dane_st SSL_DANE; +typedef struct x509_st X509; +typedef struct X509_algor_st X509_ALGOR; +typedef struct X509_crl_st X509_CRL; +typedef struct x509_crl_method_st X509_CRL_METHOD; +typedef struct x509_revoked_st X509_REVOKED; +typedef struct X509_name_st X509_NAME; +typedef struct X509_pubkey_st X509_PUBKEY; +typedef struct x509_store_st X509_STORE; +typedef struct x509_store_ctx_st X509_STORE_CTX; + +typedef struct x509_object_st X509_OBJECT; +typedef struct x509_lookup_st X509_LOOKUP; +typedef struct x509_lookup_method_st X509_LOOKUP_METHOD; +typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM; + +typedef struct x509_sig_info_st X509_SIG_INFO; + +typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; + +typedef struct v3_ext_ctx X509V3_CTX; +typedef struct conf_st CONF; +typedef struct ossl_init_settings_st OPENSSL_INIT_SETTINGS; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct engine_st ENGINE; +typedef struct ssl_st SSL; +typedef struct ssl_ctx_st SSL_CTX; + +typedef struct comp_ctx_st COMP_CTX; +typedef struct comp_method_st COMP_METHOD; + +typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; +typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; +typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; +typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; + +typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; +typedef struct DIST_POINT_st DIST_POINT; +typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; +typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; + +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; + +typedef struct ocsp_req_ctx_st OCSP_REQ_CTX; +typedef struct ocsp_response_st OCSP_RESPONSE; +typedef struct ocsp_responder_id_st OCSP_RESPID; + +typedef struct sct_st SCT; +typedef struct sct_ctx_st SCT_CTX; +typedef struct ctlog_st CTLOG; +typedef struct ctlog_store_st CTLOG_STORE; +typedef struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX; + +typedef struct ossl_store_info_st OSSL_STORE_INFO; +typedef struct ossl_store_search_st OSSL_STORE_SEARCH; + +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && \ + defined(INTMAX_MAX) && defined(UINTMAX_MAX) +typedef intmax_t ossl_intmax_t; +typedef uintmax_t ossl_uintmax_t; +#else +/* + * Not long long, because the C-library can only be expected to provide + * strtoll(), strtoull() at the same time as intmax_t and strtoimax(), + * strtoumax(). Since we use these for parsing arguments, we need the + * conversion functions, not just the sizes. + */ +typedef long ossl_intmax_t; +typedef unsigned long ossl_uintmax_t; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* def HEADER_OPENSSL_TYPES_H */ diff --git a/openSSL/win64/include/openssl/pem.h b/openSSL/win64/include/openssl/pem.h new file mode 100644 index 0000000..2ef5b5d --- /dev/null +++ b/openSSL/win64/include/openssl/pem.h @@ -0,0 +1,378 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEM_H +# define HEADER_PEM_H + +# include +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define PEM_BUFSIZE 1024 + +# define PEM_STRING_X509_OLD "X509 CERTIFICATE" +# define PEM_STRING_X509 "CERTIFICATE" +# define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +# define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +# define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +# define PEM_STRING_X509_CRL "X509 CRL" +# define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +# define PEM_STRING_PUBLIC "PUBLIC KEY" +# define PEM_STRING_RSA "RSA PRIVATE KEY" +# define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +# define PEM_STRING_DSA "DSA PRIVATE KEY" +# define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +# define PEM_STRING_PKCS7 "PKCS7" +# define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +# define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +# define PEM_STRING_PKCS8INF "PRIVATE KEY" +# define PEM_STRING_DHPARAMS "DH PARAMETERS" +# define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +# define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +# define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +# define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +# define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +# define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +# define PEM_STRING_PARAMETERS "PARAMETERS" +# define PEM_STRING_CMS "CMS" + +# define PEM_TYPE_ENCRYPTED 10 +# define PEM_TYPE_MIC_ONLY 20 +# define PEM_TYPE_MIC_CLEAR 30 +# define PEM_TYPE_CLEAR 40 + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +# ifdef OPENSSL_NO_STDIO + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +# else + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ +type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str,fp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, const type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# endif + +# define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ +type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str,bp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, const type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_read_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb(name, type, str, asn1) + +/* These are the same except they are for the declarations */ + +# if defined(OPENSSL_NO_STDIO) + +# define DECLARE_PEM_read_fp(name, type) /**/ +# define DECLARE_PEM_write_fp(name, type) /**/ +# define DECLARE_PEM_write_fp_const(name, type) /**/ +# define DECLARE_PEM_write_cb_fp(name, type) /**/ +# else + +# define DECLARE_PEM_read_fp(name, type) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x); + +# define DECLARE_PEM_write_fp_const(name, type) \ + int PEM_write_##name(FILE *fp, const type *x); + +# define DECLARE_PEM_write_cb_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# endif + +# define DECLARE_PEM_read_bio(name, type) \ + type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x); + +# define DECLARE_PEM_write_bio_const(name, type) \ + int PEM_write_bio_##name(BIO *bp, const type *x); + +# define DECLARE_PEM_write_cb_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_fp(name, type) +# define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_fp_const(name, type) +# define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_fp(name, type) +# define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_fp(name, type) +# define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write(name, type) +# define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_const(name, type) +# define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_cb(name, type) +typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata); + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +# define PEM_FLAG_SECURE 0x1 +# define PEM_FLAG_EAY_COMPATIBLE 0x2 +# define PEM_FLAG_ONLY_B64 0x4 +int PEM_read_bio_ex(BIO *bp, char **name, char **header, + unsigned char **data, long *len, unsigned int flags); +int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, void *x, + const EVP_CIPHER *enc, unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, + unsigned char *kstr, int klen, + pem_password_cb *cd, void *u); + +#ifndef OPENSSL_NO_STDIO +int PEM_read(FILE *fp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write(FILE *fp, const char *name, const char *hdr, + const unsigned char *data, long len); +void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, + void *x, const EVP_CIPHER *enc, unsigned char *kstr, + int klen, pem_password_cb *callback, void *u); +STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +#endif + +int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +int PEM_SignUpdate(EVP_MD_CTX *ctx, unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +/* The default pem_password_cb that's used internally */ +int PEM_def_callback(char *buf, int num, int rwflag, void *userdata); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, char *str); + +# include + +DECLARE_PEM_rw(X509, X509) +DECLARE_PEM_rw(X509_AUX, X509) +DECLARE_PEM_rw(X509_REQ, X509_REQ) +DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) +DECLARE_PEM_rw(X509_CRL, X509_CRL) +DECLARE_PEM_rw(PKCS7, PKCS7) +DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) +DECLARE_PEM_rw(PKCS8, X509_SIG) +DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) +# ifndef OPENSSL_NO_RSA +DECLARE_PEM_rw_cb(RSAPrivateKey, RSA) +DECLARE_PEM_rw_const(RSAPublicKey, RSA) +DECLARE_PEM_rw(RSA_PUBKEY, RSA) +# endif +# ifndef OPENSSL_NO_DSA +DECLARE_PEM_rw_cb(DSAPrivateKey, DSA) +DECLARE_PEM_rw(DSA_PUBKEY, DSA) +DECLARE_PEM_rw_const(DSAparams, DSA) +# endif +# ifndef OPENSSL_NO_EC +DECLARE_PEM_rw_const(ECPKParameters, EC_GROUP) +DECLARE_PEM_rw_cb(ECPrivateKey, EC_KEY) +DECLARE_PEM_rw(EC_PUBKEY, EC_KEY) +# endif +# ifndef OPENSSL_NO_DH +DECLARE_PEM_rw_const(DHparams, DH) +DECLARE_PEM_write_const(DHxparams, DH) +# endif +DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PrivateKey_traditional(BIO *bp, EVP_PKEY *x, + const EVP_CIPHER *enc, + unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *, + char *, int, pem_password_cb *, void *); +int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +# ifndef OPENSSL_NO_STDIO +int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); + +EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, pem_password_cb *cd, + void *u); +# endif +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x); + +# ifndef OPENSSL_NO_DSA +EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PrivateKey_bio(BIO *in); +EVP_PKEY *b2i_PublicKey_bio(BIO *in); +int i2b_PrivateKey_bio(BIO *out, EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk); +# ifndef OPENSSL_NO_RC4 +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +# endif +# endif + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/pem2.h b/openSSL/win64/include/openssl/pem2.h new file mode 100644 index 0000000..038fe79 --- /dev/null +++ b/openSSL/win64/include/openssl/pem2.h @@ -0,0 +1,13 @@ +/* + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEM2_H +# define HEADER_PEM2_H +# include +#endif diff --git a/openSSL/win64/include/openssl/pemerr.h b/openSSL/win64/include/openssl/pemerr.h new file mode 100644 index 0000000..4f7e357 --- /dev/null +++ b/openSSL/win64/include/openssl/pemerr.h @@ -0,0 +1,105 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEMERR_H +# define HEADER_PEMERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PEM_strings(void); + +/* + * PEM function codes. + */ +# define PEM_F_B2I_DSS 127 +# define PEM_F_B2I_PVK_BIO 128 +# define PEM_F_B2I_RSA 129 +# define PEM_F_CHECK_BITLEN_DSA 130 +# define PEM_F_CHECK_BITLEN_RSA 131 +# define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120 +# define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121 +# define PEM_F_DO_B2I 132 +# define PEM_F_DO_B2I_BIO 133 +# define PEM_F_DO_BLOB_HEADER 134 +# define PEM_F_DO_I2B 146 +# define PEM_F_DO_PK8PKEY 126 +# define PEM_F_DO_PK8PKEY_FP 125 +# define PEM_F_DO_PVK_BODY 135 +# define PEM_F_DO_PVK_HEADER 136 +# define PEM_F_GET_HEADER_AND_DATA 143 +# define PEM_F_GET_NAME 144 +# define PEM_F_I2B_PVK 137 +# define PEM_F_I2B_PVK_BIO 138 +# define PEM_F_LOAD_IV 101 +# define PEM_F_PEM_ASN1_READ 102 +# define PEM_F_PEM_ASN1_READ_BIO 103 +# define PEM_F_PEM_ASN1_WRITE 104 +# define PEM_F_PEM_ASN1_WRITE_BIO 105 +# define PEM_F_PEM_DEF_CALLBACK 100 +# define PEM_F_PEM_DO_HEADER 106 +# define PEM_F_PEM_GET_EVP_CIPHER_INFO 107 +# define PEM_F_PEM_READ 108 +# define PEM_F_PEM_READ_BIO 109 +# define PEM_F_PEM_READ_BIO_DHPARAMS 141 +# define PEM_F_PEM_READ_BIO_EX 145 +# define PEM_F_PEM_READ_BIO_PARAMETERS 140 +# define PEM_F_PEM_READ_BIO_PRIVATEKEY 123 +# define PEM_F_PEM_READ_DHPARAMS 142 +# define PEM_F_PEM_READ_PRIVATEKEY 124 +# define PEM_F_PEM_SIGNFINAL 112 +# define PEM_F_PEM_WRITE 113 +# define PEM_F_PEM_WRITE_BIO 114 +# define PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL 147 +# define PEM_F_PEM_WRITE_PRIVATEKEY 139 +# define PEM_F_PEM_X509_INFO_READ 115 +# define PEM_F_PEM_X509_INFO_READ_BIO 116 +# define PEM_F_PEM_X509_INFO_WRITE_BIO 117 + +/* + * PEM reason codes. + */ +# define PEM_R_BAD_BASE64_DECODE 100 +# define PEM_R_BAD_DECRYPT 101 +# define PEM_R_BAD_END_LINE 102 +# define PEM_R_BAD_IV_CHARS 103 +# define PEM_R_BAD_MAGIC_NUMBER 116 +# define PEM_R_BAD_PASSWORD_READ 104 +# define PEM_R_BAD_VERSION_NUMBER 117 +# define PEM_R_BIO_WRITE_FAILURE 118 +# define PEM_R_CIPHER_IS_NULL 127 +# define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +# define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 +# define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +# define PEM_R_HEADER_TOO_LONG 128 +# define PEM_R_INCONSISTENT_HEADER 121 +# define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 +# define PEM_R_KEYBLOB_TOO_SHORT 123 +# define PEM_R_MISSING_DEK_IV 129 +# define PEM_R_NOT_DEK_INFO 105 +# define PEM_R_NOT_ENCRYPTED 106 +# define PEM_R_NOT_PROC_TYPE 107 +# define PEM_R_NO_START_LINE 108 +# define PEM_R_PROBLEMS_GETTING_PASSWORD 109 +# define PEM_R_PVK_DATA_TOO_SHORT 124 +# define PEM_R_PVK_TOO_SHORT 125 +# define PEM_R_READ_KEY 111 +# define PEM_R_SHORT_HEADER 112 +# define PEM_R_UNEXPECTED_DEK_IV 130 +# define PEM_R_UNSUPPORTED_CIPHER 113 +# define PEM_R_UNSUPPORTED_ENCRYPTION 114 +# define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 +# define PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE 110 + +#endif diff --git a/openSSL/win64/include/openssl/pkcs12.h b/openSSL/win64/include/openssl/pkcs12.h new file mode 100644 index 0000000..3f43dad --- /dev/null +++ b/openSSL/win64/include/openssl/pkcs12.h @@ -0,0 +1,223 @@ +/* + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS12_H +# define HEADER_PKCS12_H + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define PKCS12_KEY_ID 1 +# define PKCS12_IV_ID 2 +# define PKCS12_MAC_ID 3 + +/* Default iteration count */ +# ifndef PKCS12_DEFAULT_ITER +# define PKCS12_DEFAULT_ITER PKCS5_DEFAULT_ITER +# endif + +# define PKCS12_MAC_KEY_LENGTH 20 + +# define PKCS12_SALT_LEN 8 + +/* It's not clear if these are actually needed... */ +# define PKCS12_key_gen PKCS12_key_gen_utf8 +# define PKCS12_add_friendlyname PKCS12_add_friendlyname_utf8 + +/* MS key usage constants */ + +# define KEY_EX 0x10 +# define KEY_SIG 0x80 + +typedef struct PKCS12_MAC_DATA_st PKCS12_MAC_DATA; + +typedef struct PKCS12_st PKCS12; + +typedef struct PKCS12_SAFEBAG_st PKCS12_SAFEBAG; + +DEFINE_STACK_OF(PKCS12_SAFEBAG) + +typedef struct pkcs12_bag_st PKCS12_BAGS; + +# define PKCS12_ERROR 0 +# define PKCS12_OK 1 + +/* Compatibility macros */ + +#if OPENSSL_API_COMPAT < 0x10100000L + +# define M_PKCS12_bag_type PKCS12_bag_type +# define M_PKCS12_cert_bag_type PKCS12_cert_bag_type +# define M_PKCS12_crl_bag_type PKCS12_cert_bag_type + +# define PKCS12_certbag2x509 PKCS12_SAFEBAG_get1_cert +# define PKCS12_certbag2scrl PKCS12_SAFEBAG_get1_crl +# define PKCS12_bag_type PKCS12_SAFEBAG_get_nid +# define PKCS12_cert_bag_type PKCS12_SAFEBAG_get_bag_nid +# define PKCS12_x5092certbag PKCS12_SAFEBAG_create_cert +# define PKCS12_x509crl2certbag PKCS12_SAFEBAG_create_crl +# define PKCS12_MAKE_KEYBAG PKCS12_SAFEBAG_create0_p8inf +# define PKCS12_MAKE_SHKEYBAG PKCS12_SAFEBAG_create_pkcs8_encrypt + +#endif + +DEPRECATEDIN_1_1_0(ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, int attr_nid)) + +ASN1_TYPE *PKCS8_get_attr(PKCS8_PRIV_KEY_INFO *p8, int attr_nid); +int PKCS12_mac_present(const PKCS12 *p12); +void PKCS12_get0_mac(const ASN1_OCTET_STRING **pmac, + const X509_ALGOR **pmacalg, + const ASN1_OCTET_STRING **psalt, + const ASN1_INTEGER **piter, + const PKCS12 *p12); + +const ASN1_TYPE *PKCS12_SAFEBAG_get0_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_type(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_nid(const PKCS12_SAFEBAG *bag); +int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); + +X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); +const STACK_OF(PKCS12_SAFEBAG) * +PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); +const PKCS8_PRIV_KEY_INFO *PKCS12_SAFEBAG_get0_p8inf(const PKCS12_SAFEBAG *bag); +const X509_SIG *PKCS12_SAFEBAG_get0_pkcs8(const PKCS12_SAFEBAG *bag); + +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_cert(X509 *x509); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_crl(X509_CRL *crl); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_p8inf(PKCS8_PRIV_KEY_INFO *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create0_pkcs8(X509_SIG *p8); +PKCS12_SAFEBAG *PKCS12_SAFEBAG_create_pkcs8_encrypt(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf); + +PKCS12_SAFEBAG *PKCS12_item_pack_safebag(void *obj, const ASN1_ITEM *it, + int nid1, int nid2); +PKCS8_PRIV_KEY_INFO *PKCS8_decrypt(const X509_SIG *p8, const char *pass, + int passlen); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen); +X509_SIG *PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8); +X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); +PKCS7 *PKCS12_pack_p7data(STACK_OF(PKCS12_SAFEBAG) *sk); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7); +PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags); +STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, + int passlen); + +int PKCS12_pack_authsafes(PKCS12 *p12, STACK_OF(PKCS7) *safes); +STACK_OF(PKCS7) *PKCS12_unpack_authsafes(const PKCS12 *p12); + +int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name, + int namelen); +int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_utf8(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name, + int namelen); +int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag, + const unsigned char *name, int namelen); +int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage); +ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, + int attr_nid); +char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); +const STACK_OF(X509_ATTRIBUTE) * +PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de); +void *PKCS12_item_decrypt_d2i(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf); +PKCS12 *PKCS12_init(int mode); +int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_key_gen_utf8(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type); +int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de); +int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *mac, unsigned int *maclen); +int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen); +int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + const EVP_MD *md_type); +int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, + int saltlen, const EVP_MD *md_type); +unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2asc(const unsigned char *uni, int unilen); +unsigned char *OPENSSL_utf82uni(const char *asc, int asclen, + unsigned char **uni, int *unilen); +char *OPENSSL_uni2utf8(const unsigned char *uni, int unilen); + +DECLARE_ASN1_FUNCTIONS(PKCS12) +DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA) +DECLARE_ASN1_FUNCTIONS(PKCS12_SAFEBAG) +DECLARE_ASN1_FUNCTIONS(PKCS12_BAGS) + +DECLARE_ASN1_ITEM(PKCS12_SAFEBAGS) +DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) + +void PKCS12_PBE_add(void); +int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, + STACK_OF(X509) **ca); +PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype); + +PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); +PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass); +int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass); +PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); + +int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12); +# ifndef OPENSSL_NO_STDIO +int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12); +# endif +PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); +# ifndef OPENSSL_NO_STDIO +PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); +# endif +int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/pkcs12err.h b/openSSL/win64/include/openssl/pkcs12err.h new file mode 100644 index 0000000..eff5eb2 --- /dev/null +++ b/openSSL/win64/include/openssl/pkcs12err.h @@ -0,0 +1,81 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS12ERR_H +# define HEADER_PKCS12ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PKCS12_strings(void); + +/* + * PKCS12 function codes. + */ +# define PKCS12_F_OPENSSL_ASC2UNI 121 +# define PKCS12_F_OPENSSL_UNI2ASC 124 +# define PKCS12_F_OPENSSL_UNI2UTF8 127 +# define PKCS12_F_OPENSSL_UTF82UNI 129 +# define PKCS12_F_PKCS12_CREATE 105 +# define PKCS12_F_PKCS12_GEN_MAC 107 +# define PKCS12_F_PKCS12_INIT 109 +# define PKCS12_F_PKCS12_ITEM_DECRYPT_D2I 106 +# define PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT 108 +# define PKCS12_F_PKCS12_ITEM_PACK_SAFEBAG 117 +# define PKCS12_F_PKCS12_KEY_GEN_ASC 110 +# define PKCS12_F_PKCS12_KEY_GEN_UNI 111 +# define PKCS12_F_PKCS12_KEY_GEN_UTF8 116 +# define PKCS12_F_PKCS12_NEWPASS 128 +# define PKCS12_F_PKCS12_PACK_P7DATA 114 +# define PKCS12_F_PKCS12_PACK_P7ENCDATA 115 +# define PKCS12_F_PKCS12_PARSE 118 +# define PKCS12_F_PKCS12_PBE_CRYPT 119 +# define PKCS12_F_PKCS12_PBE_KEYIVGEN 120 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE0_P8INF 112 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE0_PKCS8 113 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE_PKCS8_ENCRYPT 133 +# define PKCS12_F_PKCS12_SETUP_MAC 122 +# define PKCS12_F_PKCS12_SET_MAC 123 +# define PKCS12_F_PKCS12_UNPACK_AUTHSAFES 130 +# define PKCS12_F_PKCS12_UNPACK_P7DATA 131 +# define PKCS12_F_PKCS12_VERIFY_MAC 126 +# define PKCS12_F_PKCS8_ENCRYPT 125 +# define PKCS12_F_PKCS8_SET0_PBE 132 + +/* + * PKCS12 reason codes. + */ +# define PKCS12_R_CANT_PACK_STRUCTURE 100 +# define PKCS12_R_CONTENT_TYPE_NOT_DATA 121 +# define PKCS12_R_DECODE_ERROR 101 +# define PKCS12_R_ENCODE_ERROR 102 +# define PKCS12_R_ENCRYPT_ERROR 103 +# define PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE 120 +# define PKCS12_R_INVALID_NULL_ARGUMENT 104 +# define PKCS12_R_INVALID_NULL_PKCS12_POINTER 105 +# define PKCS12_R_IV_GEN_ERROR 106 +# define PKCS12_R_KEY_GEN_ERROR 107 +# define PKCS12_R_MAC_ABSENT 108 +# define PKCS12_R_MAC_GENERATION_ERROR 109 +# define PKCS12_R_MAC_SETUP_ERROR 110 +# define PKCS12_R_MAC_STRING_SET_ERROR 111 +# define PKCS12_R_MAC_VERIFY_FAILURE 113 +# define PKCS12_R_PARSE_ERROR 114 +# define PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR 115 +# define PKCS12_R_PKCS12_CIPHERFINAL_ERROR 116 +# define PKCS12_R_PKCS12_PBE_CRYPT_ERROR 117 +# define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118 +# define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119 + +#endif diff --git a/openSSL/win64/include/openssl/pkcs7.h b/openSSL/win64/include/openssl/pkcs7.h new file mode 100644 index 0000000..9b66e00 --- /dev/null +++ b/openSSL/win64/include/openssl/pkcs7.h @@ -0,0 +1,319 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS7_H +# define HEADER_PKCS7_H + +# include +# include +# include + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +Encryption_ID DES-CBC +Digest_ID MD5 +Digest_Encryption_ID rsaEncryption +Key_Encryption_ID rsaEncryption +*/ + +typedef struct pkcs7_issuer_and_serial_st { + X509_NAME *issuer; + ASN1_INTEGER *serial; +} PKCS7_ISSUER_AND_SERIAL; + +typedef struct pkcs7_signer_info_st { + ASN1_INTEGER *version; /* version 1 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *digest_alg; + STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */ + X509_ALGOR *digest_enc_alg; + ASN1_OCTET_STRING *enc_digest; + STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */ + /* The private key to sign with */ + EVP_PKEY *pkey; +} PKCS7_SIGNER_INFO; + +DEFINE_STACK_OF(PKCS7_SIGNER_INFO) + +typedef struct pkcs7_recip_info_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *key_enc_algor; + ASN1_OCTET_STRING *enc_key; + X509 *cert; /* get the pub-key from this */ +} PKCS7_RECIP_INFO; + +DEFINE_STACK_OF(PKCS7_RECIP_INFO) + +typedef struct pkcs7_signed_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + struct pkcs7_st *contents; +} PKCS7_SIGNED; +/* + * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about + * merging the two + */ + +typedef struct pkcs7_enc_content_st { + ASN1_OBJECT *content_type; + X509_ALGOR *algorithm; + ASN1_OCTET_STRING *enc_data; /* [ 0 ] */ + const EVP_CIPHER *cipher; +} PKCS7_ENC_CONTENT; + +typedef struct pkcs7_enveloped_st { + ASN1_INTEGER *version; /* version 0 */ + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENVELOPE; + +typedef struct pkcs7_signedandenveloped_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + PKCS7_ENC_CONTENT *enc_data; + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; +} PKCS7_SIGN_ENVELOPE; + +typedef struct pkcs7_digest_st { + ASN1_INTEGER *version; /* version 0 */ + X509_ALGOR *md; /* md used */ + struct pkcs7_st *contents; + ASN1_OCTET_STRING *digest; +} PKCS7_DIGEST; + +typedef struct pkcs7_encrypted_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENCRYPT; + +typedef struct pkcs7_st { + /* + * The following is non NULL if it contains ASN1 encoding of this + * structure + */ + unsigned char *asn1; + long length; +# define PKCS7_S_HEADER 0 +# define PKCS7_S_BODY 1 +# define PKCS7_S_TAIL 2 + int state; /* used during processing */ + int detached; + ASN1_OBJECT *type; + /* content as defined by the type */ + /* + * all encryption/message digests are applied to the 'contents', leaving + * out the 'type' field. + */ + union { + char *ptr; + /* NID_pkcs7_data */ + ASN1_OCTET_STRING *data; + /* NID_pkcs7_signed */ + PKCS7_SIGNED *sign; + /* NID_pkcs7_enveloped */ + PKCS7_ENVELOPE *enveloped; + /* NID_pkcs7_signedAndEnveloped */ + PKCS7_SIGN_ENVELOPE *signed_and_enveloped; + /* NID_pkcs7_digest */ + PKCS7_DIGEST *digest; + /* NID_pkcs7_encrypted */ + PKCS7_ENCRYPT *encrypted; + /* Anything else */ + ASN1_TYPE *other; + } d; +} PKCS7; + +DEFINE_STACK_OF(PKCS7) + +# define PKCS7_OP_SET_DETACHED_SIGNATURE 1 +# define PKCS7_OP_GET_DETACHED_SIGNATURE 2 + +# define PKCS7_get_signed_attributes(si) ((si)->auth_attr) +# define PKCS7_get_attributes(si) ((si)->unauth_attr) + +# define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed) +# define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted) +# define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped) +# define PKCS7_type_is_signedAndEnveloped(a) \ + (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped) +# define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) +# define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest) + +# define PKCS7_set_detached(p,v) \ + PKCS7_ctrl(p,PKCS7_OP_SET_DETACHED_SIGNATURE,v,NULL) +# define PKCS7_get_detached(p) \ + PKCS7_ctrl(p,PKCS7_OP_GET_DETACHED_SIGNATURE,0,NULL) + +# define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7)) + +/* S/MIME related flags */ + +# define PKCS7_TEXT 0x1 +# define PKCS7_NOCERTS 0x2 +# define PKCS7_NOSIGS 0x4 +# define PKCS7_NOCHAIN 0x8 +# define PKCS7_NOINTERN 0x10 +# define PKCS7_NOVERIFY 0x20 +# define PKCS7_DETACHED 0x40 +# define PKCS7_BINARY 0x80 +# define PKCS7_NOATTR 0x100 +# define PKCS7_NOSMIMECAP 0x200 +# define PKCS7_NOOLDMIMETYPE 0x400 +# define PKCS7_CRLFEOL 0x800 +# define PKCS7_STREAM 0x1000 +# define PKCS7_NOCRL 0x2000 +# define PKCS7_PARTIAL 0x4000 +# define PKCS7_REUSE_DIGEST 0x8000 +# define PKCS7_NO_DUAL_CONTENT 0x10000 + +/* Flags: for compatibility with older code */ + +# define SMIME_TEXT PKCS7_TEXT +# define SMIME_NOCERTS PKCS7_NOCERTS +# define SMIME_NOSIGS PKCS7_NOSIGS +# define SMIME_NOCHAIN PKCS7_NOCHAIN +# define SMIME_NOINTERN PKCS7_NOINTERN +# define SMIME_NOVERIFY PKCS7_NOVERIFY +# define SMIME_DETACHED PKCS7_DETACHED +# define SMIME_BINARY PKCS7_BINARY +# define SMIME_NOATTR PKCS7_NOATTR + +/* CRLF ASCII canonicalisation */ +# define SMIME_ASCIICRLF 0x80000 + +DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) + +int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, + const EVP_MD *type, unsigned char *md, + unsigned int *len); +# ifndef OPENSSL_NO_STDIO +PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7); +int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7); +# endif +PKCS7 *PKCS7_dup(PKCS7 *p7); +PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); +int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7); +int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); +int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); + +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) +DECLARE_ASN1_FUNCTIONS(PKCS7) + +DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN) +DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY) + +DECLARE_ASN1_NDEF_FUNCTION(PKCS7) +DECLARE_ASN1_PRINT_FUNCTION(PKCS7) + +long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); + +int PKCS7_set_type(PKCS7 *p7, int type); +int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other); +int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); +int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, + const EVP_MD *dgst); +int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); +int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); +int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_content_new(PKCS7 *p7, int nid); +int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, + BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, + X509 *x509); + +BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); +int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); +BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert); + +PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, + EVP_PKEY *pkey, const EVP_MD *dgst); +X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md); +STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7); + +PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); +void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk, + X509_ALGOR **pdig, X509_ALGOR **psig); +void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc); +int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); +int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); +int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); +int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7); + +PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); +ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type, + void *data); +int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype, + void *value); +ASN1_TYPE *PKCS7_get_attribute(PKCS7_SIGNER_INFO *si, int nid); +ASN1_TYPE *PKCS7_get_signed_attribute(PKCS7_SIGNER_INFO *si, int nid); +int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); + +PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags); + +PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, + X509 *signcert, EVP_PKEY *pkey, + const EVP_MD *md, int flags); + +int PKCS7_final(PKCS7 *p7, BIO *data, int flags); +int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, + BIO *indata, BIO *out, int flags); +STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, + int flags); +PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, + int flags); +int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, + int flags); + +int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, + STACK_OF(X509_ALGOR) *cap); +STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); +int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg); + +int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid); +int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t); +int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, + const unsigned char *md, int mdlen); + +int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); +PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); + +BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/pkcs7err.h b/openSSL/win64/include/openssl/pkcs7err.h new file mode 100644 index 0000000..02e0299 --- /dev/null +++ b/openSSL/win64/include/openssl/pkcs7err.h @@ -0,0 +1,103 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS7ERR_H +# define HEADER_PKCS7ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PKCS7_strings(void); + +/* + * PKCS7 function codes. + */ +# define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 136 +# define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 135 +# define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 118 +# define PKCS7_F_PKCS7_ADD_CERTIFICATE 100 +# define PKCS7_F_PKCS7_ADD_CRL 101 +# define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102 +# define PKCS7_F_PKCS7_ADD_SIGNATURE 131 +# define PKCS7_F_PKCS7_ADD_SIGNER 103 +# define PKCS7_F_PKCS7_BIO_ADD_DIGEST 125 +# define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 138 +# define PKCS7_F_PKCS7_CTRL 104 +# define PKCS7_F_PKCS7_DATADECODE 112 +# define PKCS7_F_PKCS7_DATAFINAL 128 +# define PKCS7_F_PKCS7_DATAINIT 105 +# define PKCS7_F_PKCS7_DATAVERIFY 107 +# define PKCS7_F_PKCS7_DECRYPT 114 +# define PKCS7_F_PKCS7_DECRYPT_RINFO 133 +# define PKCS7_F_PKCS7_ENCODE_RINFO 132 +# define PKCS7_F_PKCS7_ENCRYPT 115 +# define PKCS7_F_PKCS7_FINAL 134 +# define PKCS7_F_PKCS7_FIND_DIGEST 127 +# define PKCS7_F_PKCS7_GET0_SIGNERS 124 +# define PKCS7_F_PKCS7_RECIP_INFO_SET 130 +# define PKCS7_F_PKCS7_SET_CIPHER 108 +# define PKCS7_F_PKCS7_SET_CONTENT 109 +# define PKCS7_F_PKCS7_SET_DIGEST 126 +# define PKCS7_F_PKCS7_SET_TYPE 110 +# define PKCS7_F_PKCS7_SIGN 116 +# define PKCS7_F_PKCS7_SIGNATUREVERIFY 113 +# define PKCS7_F_PKCS7_SIGNER_INFO_SET 129 +# define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 139 +# define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 137 +# define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 119 +# define PKCS7_F_PKCS7_VERIFY 117 + +/* + * PKCS7 reason codes. + */ +# define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117 +# define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144 +# define PKCS7_R_CIPHER_NOT_INITIALIZED 116 +# define PKCS7_R_CONTENT_AND_DATA_PRESENT 118 +# define PKCS7_R_CTRL_ERROR 152 +# define PKCS7_R_DECRYPT_ERROR 119 +# define PKCS7_R_DIGEST_FAILURE 101 +# define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149 +# define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150 +# define PKCS7_R_ERROR_ADDING_RECIPIENT 120 +# define PKCS7_R_ERROR_SETTING_CIPHER 121 +# define PKCS7_R_INVALID_NULL_POINTER 143 +# define PKCS7_R_INVALID_SIGNED_DATA_TYPE 155 +# define PKCS7_R_NO_CONTENT 122 +# define PKCS7_R_NO_DEFAULT_DIGEST 151 +# define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154 +# define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115 +# define PKCS7_R_NO_SIGNATURES_ON_DATA 123 +# define PKCS7_R_NO_SIGNERS 142 +# define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104 +# define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124 +# define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153 +# define PKCS7_R_PKCS7_DATASIGN 145 +# define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127 +# define PKCS7_R_SIGNATURE_FAILURE 105 +# define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128 +# define PKCS7_R_SIGNING_CTRL_FAILURE 147 +# define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148 +# define PKCS7_R_SMIME_TEXT_ERROR 129 +# define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106 +# define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107 +# define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108 +# define PKCS7_R_UNKNOWN_DIGEST_TYPE 109 +# define PKCS7_R_UNKNOWN_OPERATION 110 +# define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111 +# define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112 +# define PKCS7_R_WRONG_CONTENT_TYPE 113 +# define PKCS7_R_WRONG_PKCS7_TYPE 114 + +#endif diff --git a/openSSL/win64/include/openssl/rand.h b/openSSL/win64/include/openssl/rand.h new file mode 100644 index 0000000..38a2a27 --- /dev/null +++ b/openSSL/win64/include/openssl/rand.h @@ -0,0 +1,77 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RAND_H +# define HEADER_RAND_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +struct rand_meth_st { + int (*seed) (const void *buf, int num); + int (*bytes) (unsigned char *buf, int num); + void (*cleanup) (void); + int (*add) (const void *buf, int num, double randomness); + int (*pseudorand) (unsigned char *buf, int num); + int (*status) (void); +}; + +int RAND_set_rand_method(const RAND_METHOD *meth); +const RAND_METHOD *RAND_get_rand_method(void); +# ifndef OPENSSL_NO_ENGINE +int RAND_set_rand_engine(ENGINE *engine); +# endif + +RAND_METHOD *RAND_OpenSSL(void); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define RAND_cleanup() while(0) continue +# endif +int RAND_bytes(unsigned char *buf, int num); +int RAND_priv_bytes(unsigned char *buf, int num); +DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num)) + +void RAND_seed(const void *buf, int num); +void RAND_keep_random_devices_open(int keep); + +# if defined(__ANDROID__) && defined(__NDK_FPABI__) +__NDK_FPABI__ /* __attribute__((pcs("aapcs"))) on ARM */ +# endif +void RAND_add(const void *buf, int num, double randomness); +int RAND_load_file(const char *file, long max_bytes); +int RAND_write_file(const char *file); +const char *RAND_file_name(char *file, size_t num); +int RAND_status(void); + +# ifndef OPENSSL_NO_EGD +int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes); +int RAND_egd(const char *path); +int RAND_egd_bytes(const char *path, int bytes); +# endif + +int RAND_poll(void); + +# if defined(_WIN32) && (defined(BASETYPES) || defined(_WINDEF_H)) +/* application has to include in order to use these */ +DEPRECATEDIN_1_1_0(void RAND_screen(void)) +DEPRECATEDIN_1_1_0(int RAND_event(UINT, WPARAM, LPARAM)) +# endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/win64/include/openssl/rand_drbg.h b/openSSL/win64/include/openssl/rand_drbg.h new file mode 100644 index 0000000..45b731b --- /dev/null +++ b/openSSL/win64/include/openssl/rand_drbg.h @@ -0,0 +1,130 @@ +/* + * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DRBG_RAND_H +# define HEADER_DRBG_RAND_H + +# include +# include +# include + +/* + * RAND_DRBG flags + * + * Note: if new flags are added, the constant `rand_drbg_used_flags` + * in drbg_lib.c needs to be updated accordingly. + */ + +/* In CTR mode, disable derivation function ctr_df */ +# define RAND_DRBG_FLAG_CTR_NO_DF 0x1 + + +# if OPENSSL_API_COMPAT < 0x10200000L +/* This #define was replaced by an internal constant and should not be used. */ +# define RAND_DRBG_USED_FLAGS (RAND_DRBG_FLAG_CTR_NO_DF) +# endif + +/* + * Default security strength (in the sense of [NIST SP 800-90Ar1]) + * + * NIST SP 800-90Ar1 supports the strength of the DRBG being smaller than that + * of the cipher by collecting less entropy. The current DRBG implementation + * does not take RAND_DRBG_STRENGTH into account and sets the strength of the + * DRBG to that of the cipher. + * + * RAND_DRBG_STRENGTH is currently only used for the legacy RAND + * implementation. + * + * Currently supported ciphers are: NID_aes_128_ctr, NID_aes_192_ctr and + * NID_aes_256_ctr + */ +# define RAND_DRBG_STRENGTH 256 +/* Default drbg type */ +# define RAND_DRBG_TYPE NID_aes_256_ctr +/* Default drbg flags */ +# define RAND_DRBG_FLAGS 0 + + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * Object lifetime functions. + */ +RAND_DRBG *RAND_DRBG_new(int type, unsigned int flags, RAND_DRBG *parent); +RAND_DRBG *RAND_DRBG_secure_new(int type, unsigned int flags, RAND_DRBG *parent); +int RAND_DRBG_set(RAND_DRBG *drbg, int type, unsigned int flags); +int RAND_DRBG_set_defaults(int type, unsigned int flags); +int RAND_DRBG_instantiate(RAND_DRBG *drbg, + const unsigned char *pers, size_t perslen); +int RAND_DRBG_uninstantiate(RAND_DRBG *drbg); +void RAND_DRBG_free(RAND_DRBG *drbg); + +/* + * Object "use" functions. + */ +int RAND_DRBG_reseed(RAND_DRBG *drbg, + const unsigned char *adin, size_t adinlen, + int prediction_resistance); +int RAND_DRBG_generate(RAND_DRBG *drbg, unsigned char *out, size_t outlen, + int prediction_resistance, + const unsigned char *adin, size_t adinlen); +int RAND_DRBG_bytes(RAND_DRBG *drbg, unsigned char *out, size_t outlen); + +int RAND_DRBG_set_reseed_interval(RAND_DRBG *drbg, unsigned int interval); +int RAND_DRBG_set_reseed_time_interval(RAND_DRBG *drbg, time_t interval); + +int RAND_DRBG_set_reseed_defaults( + unsigned int master_reseed_interval, + unsigned int slave_reseed_interval, + time_t master_reseed_time_interval, + time_t slave_reseed_time_interval + ); + +RAND_DRBG *RAND_DRBG_get0_master(void); +RAND_DRBG *RAND_DRBG_get0_public(void); +RAND_DRBG *RAND_DRBG_get0_private(void); + +/* + * EXDATA + */ +# define RAND_DRBG_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DRBG, l, p, newf, dupf, freef) +int RAND_DRBG_set_ex_data(RAND_DRBG *drbg, int idx, void *arg); +void *RAND_DRBG_get_ex_data(const RAND_DRBG *drbg, int idx); + +/* + * Callback function typedefs + */ +typedef size_t (*RAND_DRBG_get_entropy_fn)(RAND_DRBG *drbg, + unsigned char **pout, + int entropy, size_t min_len, + size_t max_len, + int prediction_resistance); +typedef void (*RAND_DRBG_cleanup_entropy_fn)(RAND_DRBG *ctx, + unsigned char *out, size_t outlen); +typedef size_t (*RAND_DRBG_get_nonce_fn)(RAND_DRBG *drbg, unsigned char **pout, + int entropy, size_t min_len, + size_t max_len); +typedef void (*RAND_DRBG_cleanup_nonce_fn)(RAND_DRBG *drbg, + unsigned char *out, size_t outlen); + +int RAND_DRBG_set_callbacks(RAND_DRBG *drbg, + RAND_DRBG_get_entropy_fn get_entropy, + RAND_DRBG_cleanup_entropy_fn cleanup_entropy, + RAND_DRBG_get_nonce_fn get_nonce, + RAND_DRBG_cleanup_nonce_fn cleanup_nonce); + + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/openSSL/win64/include/openssl/randerr.h b/openSSL/win64/include/openssl/randerr.h new file mode 100644 index 0000000..79d5790 --- /dev/null +++ b/openSSL/win64/include/openssl/randerr.h @@ -0,0 +1,94 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RANDERR_H +# define HEADER_RANDERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_RAND_strings(void); + +/* + * RAND function codes. + */ +# define RAND_F_DATA_COLLECT_METHOD 127 +# define RAND_F_DRBG_BYTES 101 +# define RAND_F_DRBG_GET_ENTROPY 105 +# define RAND_F_DRBG_SETUP 117 +# define RAND_F_GET_ENTROPY 106 +# define RAND_F_RAND_BYTES 100 +# define RAND_F_RAND_DRBG_ENABLE_LOCKING 119 +# define RAND_F_RAND_DRBG_GENERATE 107 +# define RAND_F_RAND_DRBG_GET_ENTROPY 120 +# define RAND_F_RAND_DRBG_GET_NONCE 123 +# define RAND_F_RAND_DRBG_INSTANTIATE 108 +# define RAND_F_RAND_DRBG_NEW 109 +# define RAND_F_RAND_DRBG_RESEED 110 +# define RAND_F_RAND_DRBG_RESTART 102 +# define RAND_F_RAND_DRBG_SET 104 +# define RAND_F_RAND_DRBG_SET_DEFAULTS 121 +# define RAND_F_RAND_DRBG_UNINSTANTIATE 118 +# define RAND_F_RAND_LOAD_FILE 111 +# define RAND_F_RAND_POOL_ACQUIRE_ENTROPY 122 +# define RAND_F_RAND_POOL_ADD 103 +# define RAND_F_RAND_POOL_ADD_BEGIN 113 +# define RAND_F_RAND_POOL_ADD_END 114 +# define RAND_F_RAND_POOL_ATTACH 124 +# define RAND_F_RAND_POOL_BYTES_NEEDED 115 +# define RAND_F_RAND_POOL_GROW 125 +# define RAND_F_RAND_POOL_NEW 116 +# define RAND_F_RAND_PSEUDO_BYTES 126 +# define RAND_F_RAND_WRITE_FILE 112 + +/* + * RAND reason codes. + */ +# define RAND_R_ADDITIONAL_INPUT_TOO_LONG 102 +# define RAND_R_ALREADY_INSTANTIATED 103 +# define RAND_R_ARGUMENT_OUT_OF_RANGE 105 +# define RAND_R_CANNOT_OPEN_FILE 121 +# define RAND_R_DRBG_ALREADY_INITIALIZED 129 +# define RAND_R_DRBG_NOT_INITIALISED 104 +# define RAND_R_ENTROPY_INPUT_TOO_LONG 106 +# define RAND_R_ENTROPY_OUT_OF_RANGE 124 +# define RAND_R_ERROR_ENTROPY_POOL_WAS_IGNORED 127 +# define RAND_R_ERROR_INITIALISING_DRBG 107 +# define RAND_R_ERROR_INSTANTIATING_DRBG 108 +# define RAND_R_ERROR_RETRIEVING_ADDITIONAL_INPUT 109 +# define RAND_R_ERROR_RETRIEVING_ENTROPY 110 +# define RAND_R_ERROR_RETRIEVING_NONCE 111 +# define RAND_R_FAILED_TO_CREATE_LOCK 126 +# define RAND_R_FUNC_NOT_IMPLEMENTED 101 +# define RAND_R_FWRITE_ERROR 123 +# define RAND_R_GENERATE_ERROR 112 +# define RAND_R_INTERNAL_ERROR 113 +# define RAND_R_IN_ERROR_STATE 114 +# define RAND_R_NOT_A_REGULAR_FILE 122 +# define RAND_R_NOT_INSTANTIATED 115 +# define RAND_R_NO_DRBG_IMPLEMENTATION_SELECTED 128 +# define RAND_R_PARENT_LOCKING_NOT_ENABLED 130 +# define RAND_R_PARENT_STRENGTH_TOO_WEAK 131 +# define RAND_R_PERSONALISATION_STRING_TOO_LONG 116 +# define RAND_R_PREDICTION_RESISTANCE_NOT_SUPPORTED 133 +# define RAND_R_PRNG_NOT_SEEDED 100 +# define RAND_R_RANDOM_POOL_OVERFLOW 125 +# define RAND_R_RANDOM_POOL_UNDERFLOW 134 +# define RAND_R_REQUEST_TOO_LARGE_FOR_DRBG 117 +# define RAND_R_RESEED_ERROR 118 +# define RAND_R_SELFTEST_FAILURE 119 +# define RAND_R_TOO_LITTLE_NONCE_REQUESTED 135 +# define RAND_R_TOO_MUCH_NONCE_REQUESTED 136 +# define RAND_R_UNSUPPORTED_DRBG_FLAGS 132 +# define RAND_R_UNSUPPORTED_DRBG_TYPE 120 + +#endif diff --git a/openSSL/win64/include/openssl/rc2.h b/openSSL/win64/include/openssl/rc2.h new file mode 100644 index 0000000..585f9e4 --- /dev/null +++ b/openSSL/win64/include/openssl/rc2.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC2_H +# define HEADER_RC2_H + +# include + +# ifndef OPENSSL_NO_RC2 +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned int RC2_INT; + +# define RC2_ENCRYPT 1 +# define RC2_DECRYPT 0 + +# define RC2_BLOCK 8 +# define RC2_KEY_LENGTH 16 + +typedef struct rc2_key_st { + RC2_INT data[64]; +} RC2_KEY; + +void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits); +void RC2_ecb_encrypt(const unsigned char *in, unsigned char *out, + RC2_KEY *key, int enc); +void RC2_encrypt(unsigned long *data, RC2_KEY *key); +void RC2_decrypt(unsigned long *data, RC2_KEY *key); +void RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, + RC2_KEY *ks, unsigned char *iv, int enc); +void RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC2_KEY *schedule, unsigned char *ivec, + int *num, int enc); +void RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC2_KEY *schedule, unsigned char *ivec, + int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/rc4.h b/openSSL/win64/include/openssl/rc4.h new file mode 100644 index 0000000..86803b3 --- /dev/null +++ b/openSSL/win64/include/openssl/rc4.h @@ -0,0 +1,36 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC4_H +# define HEADER_RC4_H + +# include + +# ifndef OPENSSL_NO_RC4 +# include +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct rc4_key_st { + RC4_INT x, y; + RC4_INT data[256]; +} RC4_KEY; + +const char *RC4_options(void); +void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data); +void RC4(RC4_KEY *key, size_t len, const unsigned char *indata, + unsigned char *outdata); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/rc5.h b/openSSL/win64/include/openssl/rc5.h new file mode 100644 index 0000000..793f88e --- /dev/null +++ b/openSSL/win64/include/openssl/rc5.h @@ -0,0 +1,63 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC5_H +# define HEADER_RC5_H + +# include + +# ifndef OPENSSL_NO_RC5 +# ifdef __cplusplus +extern "C" { +# endif + +# define RC5_ENCRYPT 1 +# define RC5_DECRYPT 0 + +# define RC5_32_INT unsigned int + +# define RC5_32_BLOCK 8 +# define RC5_32_KEY_LENGTH 16/* This is a default, max is 255 */ + +/* + * This are the only values supported. Tweak the code if you want more The + * most supported modes will be RC5-32/12/16 RC5-32/16/8 + */ +# define RC5_8_ROUNDS 8 +# define RC5_12_ROUNDS 12 +# define RC5_16_ROUNDS 16 + +typedef struct rc5_key_st { + /* Number of rounds */ + int rounds; + RC5_32_INT data[2 * (RC5_16_ROUNDS + 1)]; +} RC5_32_KEY; + +void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data, + int rounds); +void RC5_32_ecb_encrypt(const unsigned char *in, unsigned char *out, + RC5_32_KEY *key, int enc); +void RC5_32_encrypt(unsigned long *data, RC5_32_KEY *key); +void RC5_32_decrypt(unsigned long *data, RC5_32_KEY *key); +void RC5_32_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *ks, unsigned char *iv, + int enc); +void RC5_32_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void RC5_32_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *schedule, + unsigned char *ivec, int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/ripemd.h b/openSSL/win64/include/openssl/ripemd.h new file mode 100644 index 0000000..c42026a --- /dev/null +++ b/openSSL/win64/include/openssl/ripemd.h @@ -0,0 +1,47 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RIPEMD_H +# define HEADER_RIPEMD_H + +# include + +#ifndef OPENSSL_NO_RMD160 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define RIPEMD160_LONG unsigned int + +# define RIPEMD160_CBLOCK 64 +# define RIPEMD160_LBLOCK (RIPEMD160_CBLOCK/4) +# define RIPEMD160_DIGEST_LENGTH 20 + +typedef struct RIPEMD160state_st { + RIPEMD160_LONG A, B, C, D, E; + RIPEMD160_LONG Nl, Nh; + RIPEMD160_LONG data[RIPEMD160_LBLOCK]; + unsigned int num; +} RIPEMD160_CTX; + +int RIPEMD160_Init(RIPEMD160_CTX *c); +int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, size_t len); +int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); +unsigned char *RIPEMD160(const unsigned char *d, size_t n, unsigned char *md); +void RIPEMD160_Transform(RIPEMD160_CTX *c, const unsigned char *b); + +# ifdef __cplusplus +} +# endif +# endif + + +#endif diff --git a/openSSL/win64/include/openssl/rsa.h b/openSSL/win64/include/openssl/rsa.h new file mode 100644 index 0000000..5e76365 --- /dev/null +++ b/openSSL/win64/include/openssl/rsa.h @@ -0,0 +1,513 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RSA_H +# define HEADER_RSA_H + +# include + +# ifndef OPENSSL_NO_RSA +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* The types RSA and RSA_METHOD are defined in ossl_typ.h */ + +# ifndef OPENSSL_RSA_MAX_MODULUS_BITS +# define OPENSSL_RSA_MAX_MODULUS_BITS 16384 +# endif + +# define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 1024 + +# ifndef OPENSSL_RSA_SMALL_MODULUS_BITS +# define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 +# endif +# ifndef OPENSSL_RSA_MAX_PUBEXP_BITS + +/* exponent limit enforced for "large" modulus only */ +# define OPENSSL_RSA_MAX_PUBEXP_BITS 64 +# endif + +# define RSA_3 0x3L +# define RSA_F4 0x10001L + +/* based on RFC 8017 appendix A.1.2 */ +# define RSA_ASN1_VERSION_DEFAULT 0 +# define RSA_ASN1_VERSION_MULTI 1 + +# define RSA_DEFAULT_PRIME_NUM 2 + +# define RSA_METHOD_FLAG_NO_CHECK 0x0001/* don't check pub/private + * match */ + +# define RSA_FLAG_CACHE_PUBLIC 0x0002 +# define RSA_FLAG_CACHE_PRIVATE 0x0004 +# define RSA_FLAG_BLINDING 0x0008 +# define RSA_FLAG_THREAD_SAFE 0x0010 +/* + * This flag means the private key operations will be handled by rsa_mod_exp + * and that they do not depend on the private key components being present: + * for example a key stored in external hardware. Without this flag + * bn_mod_exp gets called when private key components are absent. + */ +# define RSA_FLAG_EXT_PKEY 0x0020 + +/* + * new with 0.9.6j and 0.9.7b; the built-in + * RSA implementation now uses blinding by + * default (ignoring RSA_FLAG_BLINDING), + * but other engines might not need it + */ +# define RSA_FLAG_NO_BLINDING 0x0080 +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define RSA_FLAG_NO_CONSTTIME 0x0000 +# endif +# if OPENSSL_API_COMPAT < 0x00908000L +/* deprecated name for the flag*/ +/* + * new with 0.9.7h; the built-in RSA + * implementation now uses constant time + * modular exponentiation for secret exponents + * by default. This flag causes the + * faster variable sliding window method to + * be used for all exponents. + */ +# define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME +# endif + +# define EVP_PKEY_CTX_set_rsa_padding(ctx, pad) \ + RSA_pkey_ctx_ctrl(ctx, -1, EVP_PKEY_CTRL_RSA_PADDING, pad, NULL) + +# define EVP_PKEY_CTX_get_rsa_padding(ctx, ppad) \ + RSA_pkey_ctx_ctrl(ctx, -1, EVP_PKEY_CTRL_GET_RSA_PADDING, 0, ppad) + +# define EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, len) \ + RSA_pkey_ctx_ctrl(ctx, (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ + EVP_PKEY_CTRL_RSA_PSS_SALTLEN, len, NULL) +/* Salt length matches digest */ +# define RSA_PSS_SALTLEN_DIGEST -1 +/* Verify only: auto detect salt length */ +# define RSA_PSS_SALTLEN_AUTO -2 +/* Set salt length to maximum possible */ +# define RSA_PSS_SALTLEN_MAX -3 +/* Old compatible max salt length for sign only */ +# define RSA_PSS_SALTLEN_MAX_SIGN -2 + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_PSS_SALTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_rsa_pss_saltlen(ctx, plen) \ + RSA_pkey_ctx_ctrl(ctx, (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ + EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN, 0, plen) + +# define EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, bits) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_BITS, bits, NULL) + +# define EVP_PKEY_CTX_set_rsa_keygen_pubexp(ctx, pubexp) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP, 0, pubexp) + +# define EVP_PKEY_CTX_set_rsa_keygen_primes(ctx, primes) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES, primes, NULL) + +# define EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_MGF1_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_MGF1_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set_rsa_oaep_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_OAEP_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_rsa_mgf1_md(ctx, pmd) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_MGF1_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_get_rsa_oaep_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_OAEP_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set0_rsa_oaep_label(ctx, l, llen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_OAEP_LABEL, llen, (void *)(l)) + +# define EVP_PKEY_CTX_get0_rsa_oaep_label(ctx, l) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL, 0, (void *)(l)) + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, \ + EVP_PKEY_OP_KEYGEN, EVP_PKEY_CTRL_MD, \ + 0, (void *)(md)) + +# define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5) + +# define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8) + +# define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 10) + +# define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 12) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) + +# define RSA_PKCS1_PADDING 1 +# define RSA_SSLV23_PADDING 2 +# define RSA_NO_PADDING 3 +# define RSA_PKCS1_OAEP_PADDING 4 +# define RSA_X931_PADDING 5 +/* EVP_PKEY_ only */ +# define RSA_PKCS1_PSS_PADDING 6 + +# define RSA_PKCS1_PADDING_SIZE 11 + +# define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg) +# define RSA_get_app_data(s) RSA_get_ex_data(s,0) + +RSA *RSA_new(void); +RSA *RSA_new_method(ENGINE *engine); +int RSA_bits(const RSA *rsa); +int RSA_size(const RSA *rsa); +int RSA_security_bits(const RSA *rsa); + +int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); +int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); +int RSA_set0_crt_params(RSA *r,BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp); +int RSA_set0_multi_prime_params(RSA *r, BIGNUM *primes[], BIGNUM *exps[], + BIGNUM *coeffs[], int pnum); +void RSA_get0_key(const RSA *r, + const BIGNUM **n, const BIGNUM **e, const BIGNUM **d); +void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q); +int RSA_get_multi_prime_extra_count(const RSA *r); +int RSA_get0_multi_prime_factors(const RSA *r, const BIGNUM *primes[]); +void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, const BIGNUM **dmq1, + const BIGNUM **iqmp); +int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], + const BIGNUM *coeffs[]); +const BIGNUM *RSA_get0_n(const RSA *d); +const BIGNUM *RSA_get0_e(const RSA *d); +const BIGNUM *RSA_get0_d(const RSA *d); +const BIGNUM *RSA_get0_p(const RSA *d); +const BIGNUM *RSA_get0_q(const RSA *d); +const BIGNUM *RSA_get0_dmp1(const RSA *r); +const BIGNUM *RSA_get0_dmq1(const RSA *r); +const BIGNUM *RSA_get0_iqmp(const RSA *r); +const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); +void RSA_clear_flags(RSA *r, int flags); +int RSA_test_flags(const RSA *r, int flags); +void RSA_set_flags(RSA *r, int flags); +int RSA_get_version(RSA *r); +ENGINE *RSA_get0_engine(const RSA *r); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void + (*callback) (int, int, void *), + void *cb_arg)) + +/* New version */ +int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); +/* Multi-prime version */ +int RSA_generate_multi_prime_key(RSA *rsa, int bits, int primes, + BIGNUM *e, BN_GENCB *cb); + +int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, BIGNUM *q1, + BIGNUM *q2, const BIGNUM *Xp1, const BIGNUM *Xp2, + const BIGNUM *Xp, const BIGNUM *Xq1, const BIGNUM *Xq2, + const BIGNUM *Xq, const BIGNUM *e, BN_GENCB *cb); +int RSA_X931_generate_key_ex(RSA *rsa, int bits, const BIGNUM *e, + BN_GENCB *cb); + +int RSA_check_key(const RSA *); +int RSA_check_key_ex(const RSA *, BN_GENCB *cb); + /* next 4 return -1 on error */ +int RSA_public_encrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_private_encrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_public_decrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_private_decrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +void RSA_free(RSA *r); +/* "up" the RSA object's reference count */ +int RSA_up_ref(RSA *r); + +int RSA_flags(const RSA *r); + +void RSA_set_default_method(const RSA_METHOD *meth); +const RSA_METHOD *RSA_get_default_method(void); +const RSA_METHOD *RSA_null_method(void); +const RSA_METHOD *RSA_get_method(const RSA *rsa); +int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); + +/* these are the actual RSA functions */ +const RSA_METHOD *RSA_PKCS1_OpenSSL(void); + +int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey) + +struct rsa_pss_params_st { + X509_ALGOR *hashAlgorithm; + X509_ALGOR *maskGenAlgorithm; + ASN1_INTEGER *saltLength; + ASN1_INTEGER *trailerField; + /* Decoded hash algorithm from maskGenAlgorithm */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) + +typedef struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; + /* Decoded hash algorithm from maskGenFunc */ + X509_ALGOR *maskHash; +} RSA_OAEP_PARAMS; + +DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) + +# ifndef OPENSSL_NO_STDIO +int RSA_print_fp(FILE *fp, const RSA *r, int offset); +# endif + +int RSA_print(BIO *bp, const RSA *r, int offset); + +/* + * The following 2 functions sign and verify a X509_SIG ASN1 object inside + * PKCS#1 padded RSA encryption + */ +int RSA_sign(int type, const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, RSA *rsa); +int RSA_verify(int type, const unsigned char *m, unsigned int m_length, + const unsigned char *sigbuf, unsigned int siglen, RSA *rsa); + +/* + * The following 2 function sign and verify a ASN1_OCTET_STRING object inside + * PKCS#1 padded RSA encryption + */ +int RSA_sign_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + RSA *rsa); +int RSA_verify_ASN1_OCTET_STRING(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigbuf, + unsigned int siglen, RSA *rsa); + +int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); +void RSA_blinding_off(RSA *rsa); +BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); + +int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int PKCS1_MGF1(unsigned char *mask, long len, const unsigned char *seed, + long seedlen, const EVP_MD *dgst); +int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, + const unsigned char *p, int pl); +int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len, + const unsigned char *p, int pl); +int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + int num, const unsigned char *param, + int plen, const EVP_MD *md, + const EVP_MD *mgf1md); +int RSA_padding_add_SSLv23(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_SSLv23(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_padding_add_none(unsigned char *to, int tlen, const unsigned char *f, + int fl); +int RSA_padding_check_none(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_padding_add_X931(unsigned char *to, int tlen, const unsigned char *f, + int fl); +int RSA_padding_check_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_X931_hash_id(int nid); + +int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const unsigned char *EM, + int sLen); +int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, const EVP_MD *Hash, + int sLen); + +int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + const unsigned char *EM, int sLen); + +int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + int sLen); + +#define RSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, l, p, newf, dupf, freef) +int RSA_set_ex_data(RSA *r, int idx, void *arg); +void *RSA_get_ex_data(const RSA *r, int idx); + +RSA *RSAPublicKey_dup(RSA *rsa); +RSA *RSAPrivateKey_dup(RSA *rsa); + +/* + * If this flag is set the RSA method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define RSA_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define RSA_FLAG_NON_FIPS_ALLOW 0x0400 +/* + * Application has decided PRNG is good enough to generate a key: don't + * check. + */ +# define RSA_FLAG_CHECKED 0x0800 + +RSA_METHOD *RSA_meth_new(const char *name, int flags); +void RSA_meth_free(RSA_METHOD *meth); +RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); +const char *RSA_meth_get0_name(const RSA_METHOD *meth); +int RSA_meth_set1_name(RSA_METHOD *meth, const char *name); +int RSA_meth_get_flags(const RSA_METHOD *meth); +int RSA_meth_set_flags(RSA_METHOD *meth, int flags); +void *RSA_meth_get0_app_data(const RSA_METHOD *meth); +int RSA_meth_set0_app_data(RSA_METHOD *meth, void *app_data); +int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_pub_enc(RSA_METHOD *rsa, + int (*pub_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_pub_dec(RSA_METHOD *rsa, + int (*pub_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_priv_enc(RSA_METHOD *rsa, + int (*priv_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_priv_dec(RSA_METHOD *rsa, + int (*priv_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth)) + (BIGNUM *r0, const BIGNUM *i, RSA *rsa, BN_CTX *ctx); +int RSA_meth_set_mod_exp(RSA_METHOD *rsa, + int (*mod_exp) (BIGNUM *r0, const BIGNUM *i, RSA *rsa, + BN_CTX *ctx)); +int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth)) + (BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx)); +int (*RSA_meth_get_init(const RSA_METHOD *meth)) (RSA *rsa); +int RSA_meth_set_init(RSA_METHOD *rsa, int (*init) (RSA *rsa)); +int (*RSA_meth_get_finish(const RSA_METHOD *meth)) (RSA *rsa); +int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish) (RSA *rsa)); +int (*RSA_meth_get_sign(const RSA_METHOD *meth)) + (int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa); +int RSA_meth_set_sign(RSA_METHOD *rsa, + int (*sign) (int type, const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa)); +int (*RSA_meth_get_verify(const RSA_METHOD *meth)) + (int dtype, const unsigned char *m, + unsigned int m_length, const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa); +int RSA_meth_set_verify(RSA_METHOD *rsa, + int (*verify) (int dtype, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa)); +int (*RSA_meth_get_keygen(const RSA_METHOD *meth)) + (RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); +int RSA_meth_set_keygen(RSA_METHOD *rsa, + int (*keygen) (RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb)); +int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth)) + (RSA *rsa, int bits, int primes, BIGNUM *e, BN_GENCB *cb); +int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, + int (*keygen) (RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb)); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/win64/include/openssl/rsaerr.h b/openSSL/win64/include/openssl/rsaerr.h new file mode 100644 index 0000000..59b15e1 --- /dev/null +++ b/openSSL/win64/include/openssl/rsaerr.h @@ -0,0 +1,167 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RSAERR_H +# define HEADER_RSAERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_RSA_strings(void); + +/* + * RSA function codes. + */ +# define RSA_F_CHECK_PADDING_MD 140 +# define RSA_F_ENCODE_PKCS1 146 +# define RSA_F_INT_RSA_VERIFY 145 +# define RSA_F_OLD_RSA_PRIV_DECODE 147 +# define RSA_F_PKEY_PSS_INIT 165 +# define RSA_F_PKEY_RSA_CTRL 143 +# define RSA_F_PKEY_RSA_CTRL_STR 144 +# define RSA_F_PKEY_RSA_SIGN 142 +# define RSA_F_PKEY_RSA_VERIFY 149 +# define RSA_F_PKEY_RSA_VERIFYRECOVER 141 +# define RSA_F_RSA_ALGOR_TO_MD 156 +# define RSA_F_RSA_BUILTIN_KEYGEN 129 +# define RSA_F_RSA_CHECK_KEY 123 +# define RSA_F_RSA_CHECK_KEY_EX 160 +# define RSA_F_RSA_CMS_DECRYPT 159 +# define RSA_F_RSA_CMS_VERIFY 158 +# define RSA_F_RSA_ITEM_VERIFY 148 +# define RSA_F_RSA_METH_DUP 161 +# define RSA_F_RSA_METH_NEW 162 +# define RSA_F_RSA_METH_SET1_NAME 163 +# define RSA_F_RSA_MGF1_TO_MD 157 +# define RSA_F_RSA_MULTIP_INFO_NEW 166 +# define RSA_F_RSA_NEW_METHOD 106 +# define RSA_F_RSA_NULL 124 +# define RSA_F_RSA_NULL_PRIVATE_DECRYPT 132 +# define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 133 +# define RSA_F_RSA_NULL_PUBLIC_DECRYPT 134 +# define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 135 +# define RSA_F_RSA_OSSL_PRIVATE_DECRYPT 101 +# define RSA_F_RSA_OSSL_PRIVATE_ENCRYPT 102 +# define RSA_F_RSA_OSSL_PUBLIC_DECRYPT 103 +# define RSA_F_RSA_OSSL_PUBLIC_ENCRYPT 104 +# define RSA_F_RSA_PADDING_ADD_NONE 107 +# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 121 +# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1 154 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 125 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 152 +# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 108 +# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 109 +# define RSA_F_RSA_PADDING_ADD_SSLV23 110 +# define RSA_F_RSA_PADDING_ADD_X931 127 +# define RSA_F_RSA_PADDING_CHECK_NONE 111 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 122 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1 153 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 112 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 113 +# define RSA_F_RSA_PADDING_CHECK_SSLV23 114 +# define RSA_F_RSA_PADDING_CHECK_X931 128 +# define RSA_F_RSA_PARAM_DECODE 164 +# define RSA_F_RSA_PRINT 115 +# define RSA_F_RSA_PRINT_FP 116 +# define RSA_F_RSA_PRIV_DECODE 150 +# define RSA_F_RSA_PRIV_ENCODE 138 +# define RSA_F_RSA_PSS_GET_PARAM 151 +# define RSA_F_RSA_PSS_TO_CTX 155 +# define RSA_F_RSA_PUB_DECODE 139 +# define RSA_F_RSA_SETUP_BLINDING 136 +# define RSA_F_RSA_SIGN 117 +# define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 118 +# define RSA_F_RSA_VERIFY 119 +# define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 120 +# define RSA_F_RSA_VERIFY_PKCS1_PSS_MGF1 126 +# define RSA_F_SETUP_TBUF 167 + +/* + * RSA reason codes. + */ +# define RSA_R_ALGORITHM_MISMATCH 100 +# define RSA_R_BAD_E_VALUE 101 +# define RSA_R_BAD_FIXED_HEADER_DECRYPT 102 +# define RSA_R_BAD_PAD_BYTE_COUNT 103 +# define RSA_R_BAD_SIGNATURE 104 +# define RSA_R_BLOCK_TYPE_IS_NOT_01 106 +# define RSA_R_BLOCK_TYPE_IS_NOT_02 107 +# define RSA_R_DATA_GREATER_THAN_MOD_LEN 108 +# define RSA_R_DATA_TOO_LARGE 109 +# define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110 +# define RSA_R_DATA_TOO_LARGE_FOR_MODULUS 132 +# define RSA_R_DATA_TOO_SMALL 111 +# define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE 122 +# define RSA_R_DIGEST_DOES_NOT_MATCH 158 +# define RSA_R_DIGEST_NOT_ALLOWED 145 +# define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY 112 +# define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124 +# define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125 +# define RSA_R_D_E_NOT_CONGRUENT_TO_1 123 +# define RSA_R_FIRST_OCTET_INVALID 133 +# define RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 144 +# define RSA_R_INVALID_DIGEST 157 +# define RSA_R_INVALID_DIGEST_LENGTH 143 +# define RSA_R_INVALID_HEADER 137 +# define RSA_R_INVALID_LABEL 160 +# define RSA_R_INVALID_MESSAGE_LENGTH 131 +# define RSA_R_INVALID_MGF1_MD 156 +# define RSA_R_INVALID_MULTI_PRIME_KEY 167 +# define RSA_R_INVALID_OAEP_PARAMETERS 161 +# define RSA_R_INVALID_PADDING 138 +# define RSA_R_INVALID_PADDING_MODE 141 +# define RSA_R_INVALID_PSS_PARAMETERS 149 +# define RSA_R_INVALID_PSS_SALTLEN 146 +# define RSA_R_INVALID_SALT_LENGTH 150 +# define RSA_R_INVALID_TRAILER 139 +# define RSA_R_INVALID_X931_DIGEST 142 +# define RSA_R_IQMP_NOT_INVERSE_OF_Q 126 +# define RSA_R_KEY_PRIME_NUM_INVALID 165 +# define RSA_R_KEY_SIZE_TOO_SMALL 120 +# define RSA_R_LAST_OCTET_INVALID 134 +# define RSA_R_MISSING_PRIVATE_KEY 179 +# define RSA_R_MGF1_DIGEST_NOT_ALLOWED 152 +# define RSA_R_MODULUS_TOO_LARGE 105 +# define RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R 168 +# define RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D 169 +# define RSA_R_MP_R_NOT_PRIME 170 +# define RSA_R_NO_PUBLIC_EXPONENT 140 +# define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 +# define RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES 172 +# define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 +# define RSA_R_OAEP_DECODING_ERROR 121 +# define RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 148 +# define RSA_R_PADDING_CHECK_FAILED 114 +# define RSA_R_PKCS_DECODING_ERROR 159 +# define RSA_R_PSS_SALTLEN_TOO_SMALL 164 +# define RSA_R_P_NOT_PRIME 128 +# define RSA_R_Q_NOT_PRIME 129 +# define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130 +# define RSA_R_SLEN_CHECK_FAILED 136 +# define RSA_R_SLEN_RECOVERY_FAILED 135 +# define RSA_R_SSLV3_ROLLBACK_ATTACK 115 +# define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116 +# define RSA_R_UNKNOWN_ALGORITHM_TYPE 117 +# define RSA_R_UNKNOWN_DIGEST 166 +# define RSA_R_UNKNOWN_MASK_DIGEST 151 +# define RSA_R_UNKNOWN_PADDING_TYPE 118 +# define RSA_R_UNSUPPORTED_ENCRYPTION_TYPE 162 +# define RSA_R_UNSUPPORTED_LABEL_SOURCE 163 +# define RSA_R_UNSUPPORTED_MASK_ALGORITHM 153 +# define RSA_R_UNSUPPORTED_MASK_PARAMETER 154 +# define RSA_R_UNSUPPORTED_SIGNATURE_TYPE 155 +# define RSA_R_VALUE_MISSING 147 +# define RSA_R_WRONG_SIGNATURE_LENGTH 119 + +#endif diff --git a/openSSL/win64/include/openssl/safestack.h b/openSSL/win64/include/openssl/safestack.h new file mode 100644 index 0000000..38b5578 --- /dev/null +++ b/openSSL/win64/include/openssl/safestack.h @@ -0,0 +1,207 @@ +/* + * Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SAFESTACK_H +# define HEADER_SAFESTACK_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define STACK_OF(type) struct stack_st_##type + +# define SKM_DEFINE_STACK_OF(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 * const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 *a); \ + typedef t3 * (*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + { \ + return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + { \ + return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_free((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + { \ + return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ + (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + { \ + OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + { \ + return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) * sk_##t1##_dup(const STACK_OF(t1) *sk) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + sk_##t1##_copyfunc copyfunc, \ + sk_##t1##_freefunc freefunc) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, \ + (OPENSSL_sk_copyfunc)copyfunc, \ + (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + { \ + return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ + } + +# define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) +# define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) +# define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ + SKM_DEFINE_STACK_OF(t1, const t2, t2) +# define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) + +/*- + * Strings are special: normally an lhash entry will point to a single + * (somewhat) mutable object. In the case of strings: + * + * a) Instead of a single char, there is an array of chars, NUL-terminated. + * b) The string may have be immutable. + * + * So, they need their own declarations. Especially important for + * type-checking tools, such as Deputy. + * + * In practice, however, it appears to be hard to have a const + * string. For now, I'm settling for dealing with the fact it is a + * string at all. + */ +typedef char *OPENSSL_STRING; +typedef const char *OPENSSL_CSTRING; + +/*- + * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but + * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned + * above, instead of a single char each entry is a NUL-terminated array of + * chars. So, we have to implement STRING specially for STACK_OF. This is + * dealt with in the autogenerated macros below. + */ +DEFINE_SPECIAL_STACK_OF(OPENSSL_STRING, char) +DEFINE_SPECIAL_STACK_OF_CONST(OPENSSL_CSTRING, char) + +/* + * Similarly, we sometimes use a block of characters, NOT nul-terminated. + * These should also be distinguished from "normal" stacks. + */ +typedef void *OPENSSL_BLOCK; +DEFINE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void) + +/* + * If called without higher optimization (min. -xO3) the Oracle Developer + * Studio compiler generates code for the defined (static inline) functions + * above. + * This would later lead to the linker complaining about missing symbols when + * this header file is included but the resulting object is not linked against + * the Crypto library (openssl#6912). + */ +# ifdef __SUNPRO_C +# pragma weak OPENSSL_sk_num +# pragma weak OPENSSL_sk_value +# pragma weak OPENSSL_sk_new +# pragma weak OPENSSL_sk_new_null +# pragma weak OPENSSL_sk_new_reserve +# pragma weak OPENSSL_sk_reserve +# pragma weak OPENSSL_sk_free +# pragma weak OPENSSL_sk_zero +# pragma weak OPENSSL_sk_delete +# pragma weak OPENSSL_sk_delete_ptr +# pragma weak OPENSSL_sk_push +# pragma weak OPENSSL_sk_unshift +# pragma weak OPENSSL_sk_pop +# pragma weak OPENSSL_sk_shift +# pragma weak OPENSSL_sk_pop_free +# pragma weak OPENSSL_sk_insert +# pragma weak OPENSSL_sk_set +# pragma weak OPENSSL_sk_find +# pragma weak OPENSSL_sk_find_ex +# pragma weak OPENSSL_sk_sort +# pragma weak OPENSSL_sk_is_sorted +# pragma weak OPENSSL_sk_dup +# pragma weak OPENSSL_sk_deep_copy +# pragma weak OPENSSL_sk_set_cmp_func +# endif /* __SUNPRO_C */ + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/seed.h b/openSSL/win64/include/openssl/seed.h new file mode 100644 index 0000000..de10b08 --- /dev/null +++ b/openSSL/win64/include/openssl/seed.h @@ -0,0 +1,96 @@ +/* + * Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Neither the name of author nor the names of its contributors may + * be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef HEADER_SEED_H +# define HEADER_SEED_H + +# include + +# ifndef OPENSSL_NO_SEED +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* look whether we need 'long' to get 32 bits */ +# ifdef AES_LONG +# ifndef SEED_LONG +# define SEED_LONG 1 +# endif +# endif + +# include + +# define SEED_BLOCK_SIZE 16 +# define SEED_KEY_LENGTH 16 + +typedef struct seed_key_st { +# ifdef SEED_LONG + unsigned long data[32]; +# else + unsigned int data[32]; +# endif +} SEED_KEY_SCHEDULE; + +void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], + SEED_KEY_SCHEDULE *ks); + +void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); + +void SEED_ecb_encrypt(const unsigned char *in, unsigned char *out, + const SEED_KEY_SCHEDULE *ks, int enc); +void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t len, + const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], int enc); +void SEED_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], int *num, + int enc); +void SEED_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SEED_KEY_SCHEDULE *ks, + unsigned char ivec[SEED_BLOCK_SIZE], int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/sha.h b/openSSL/win64/include/openssl/sha.h new file mode 100644 index 0000000..6a1eb0d --- /dev/null +++ b/openSSL/win64/include/openssl/sha.h @@ -0,0 +1,119 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SHA_H +# define HEADER_SHA_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! SHA_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define SHA_LONG unsigned int + +# define SHA_LBLOCK 16 +# define SHA_CBLOCK (SHA_LBLOCK*4)/* SHA treats input data as a + * contiguous array of 32 bit wide + * big-endian values. */ +# define SHA_LAST_BLOCK (SHA_CBLOCK-8) +# define SHA_DIGEST_LENGTH 20 + +typedef struct SHAstate_st { + SHA_LONG h0, h1, h2, h3, h4; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num; +} SHA_CTX; + +int SHA1_Init(SHA_CTX *c); +int SHA1_Update(SHA_CTX *c, const void *data, size_t len); +int SHA1_Final(unsigned char *md, SHA_CTX *c); +unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); +void SHA1_Transform(SHA_CTX *c, const unsigned char *data); + +# define SHA256_CBLOCK (SHA_LBLOCK*4)/* SHA-256 treats input data as a + * contiguous array of 32 bit wide + * big-endian values. */ + +typedef struct SHA256state_st { + SHA_LONG h[8]; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num, md_len; +} SHA256_CTX; + +int SHA224_Init(SHA256_CTX *c); +int SHA224_Update(SHA256_CTX *c, const void *data, size_t len); +int SHA224_Final(unsigned char *md, SHA256_CTX *c); +unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); +int SHA256_Init(SHA256_CTX *c); +int SHA256_Update(SHA256_CTX *c, const void *data, size_t len); +int SHA256_Final(unsigned char *md, SHA256_CTX *c); +unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); +void SHA256_Transform(SHA256_CTX *c, const unsigned char *data); + +# define SHA224_DIGEST_LENGTH 28 +# define SHA256_DIGEST_LENGTH 32 +# define SHA384_DIGEST_LENGTH 48 +# define SHA512_DIGEST_LENGTH 64 + +/* + * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64 + * being exactly 64-bit wide. See Implementation Notes in sha512.c + * for further details. + */ +/* + * SHA-512 treats input data as a + * contiguous array of 64 bit + * wide big-endian values. + */ +# define SHA512_CBLOCK (SHA_LBLOCK*8) +# if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__) +# define SHA_LONG64 unsigned __int64 +# define U64(C) C##UI64 +# elif defined(__arch64__) +# define SHA_LONG64 unsigned long +# define U64(C) C##UL +# else +# define SHA_LONG64 unsigned long long +# define U64(C) C##ULL +# endif + +typedef struct SHA512state_st { + SHA_LONG64 h[8]; + SHA_LONG64 Nl, Nh; + union { + SHA_LONG64 d[SHA_LBLOCK]; + unsigned char p[SHA512_CBLOCK]; + } u; + unsigned int num, md_len; +} SHA512_CTX; + +int SHA384_Init(SHA512_CTX *c); +int SHA384_Update(SHA512_CTX *c, const void *data, size_t len); +int SHA384_Final(unsigned char *md, SHA512_CTX *c); +unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md); +int SHA512_Init(SHA512_CTX *c); +int SHA512_Update(SHA512_CTX *c, const void *data, size_t len); +int SHA512_Final(unsigned char *md, SHA512_CTX *c); +unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md); +void SHA512_Transform(SHA512_CTX *c, const unsigned char *data); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/win64/include/openssl/srp.h b/openSSL/win64/include/openssl/srp.h new file mode 100644 index 0000000..aaf1355 --- /dev/null +++ b/openSSL/win64/include/openssl/srp.h @@ -0,0 +1,135 @@ +/* + * Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2004, EdelKey Project. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + * + * Originally written by Christophe Renou and Peter Sylvester, + * for the EdelKey project. + */ + +#ifndef HEADER_SRP_H +# define HEADER_SRP_H + +#include + +#ifndef OPENSSL_NO_SRP +# include +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct SRP_gN_cache_st { + char *b64_bn; + BIGNUM *bn; +} SRP_gN_cache; + + +DEFINE_STACK_OF(SRP_gN_cache) + +typedef struct SRP_user_pwd_st { + /* Owned by us. */ + char *id; + BIGNUM *s; + BIGNUM *v; + /* Not owned by us. */ + const BIGNUM *g; + const BIGNUM *N; + /* Owned by us. */ + char *info; +} SRP_user_pwd; + +void SRP_user_pwd_free(SRP_user_pwd *user_pwd); + +DEFINE_STACK_OF(SRP_user_pwd) + +typedef struct SRP_VBASE_st { + STACK_OF(SRP_user_pwd) *users_pwd; + STACK_OF(SRP_gN_cache) *gN_cache; +/* to simulate a user */ + char *seed_key; + const BIGNUM *default_g; + const BIGNUM *default_N; +} SRP_VBASE; + +/* + * Internal structure storing N and g pair + */ +typedef struct SRP_gN_st { + char *id; + const BIGNUM *g; + const BIGNUM *N; +} SRP_gN; + +DEFINE_STACK_OF(SRP_gN) + +SRP_VBASE *SRP_VBASE_new(char *seed_key); +void SRP_VBASE_free(SRP_VBASE *vb); +int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); + +/* This method ignores the configured seed and fails for an unknown user. */ +DEPRECATEDIN_1_1_0(SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username)) +/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ +SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); + +char *SRP_create_verifier(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g); +int SRP_create_verifier_BN(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g); + +# define SRP_NO_ERROR 0 +# define SRP_ERR_VBASE_INCOMPLETE_FILE 1 +# define SRP_ERR_VBASE_BN_LIB 2 +# define SRP_ERR_OPEN_FILE 3 +# define SRP_ERR_MEMORY 4 + +# define DB_srptype 0 +# define DB_srpverifier 1 +# define DB_srpsalt 2 +# define DB_srpid 3 +# define DB_srpgN 4 +# define DB_srpinfo 5 +# undef DB_NUMBER +# define DB_NUMBER 6 + +# define DB_SRP_INDEX 'I' +# define DB_SRP_VALID 'V' +# define DB_SRP_REVOKED 'R' +# define DB_SRP_MODIF 'v' + +/* see srp.c */ +char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); +SRP_gN *SRP_get_default_gN(const char *id); + +/* server side .... */ +BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, + const BIGNUM *b, const BIGNUM *N); +BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v); +int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); +BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); + +/* client side .... */ +BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); +BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); +BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); +int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); + +# define SRP_MINIMAL_N 1024 + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/srtp.h b/openSSL/win64/include/openssl/srtp.h new file mode 100644 index 0000000..0b57c23 --- /dev/null +++ b/openSSL/win64/include/openssl/srtp.h @@ -0,0 +1,50 @@ +/* + * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * DTLS code by Eric Rescorla + * + * Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. + */ + +#ifndef HEADER_D1_SRTP_H +# define HEADER_D1_SRTP_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define SRTP_AES128_CM_SHA1_80 0x0001 +# define SRTP_AES128_CM_SHA1_32 0x0002 +# define SRTP_AES128_F8_SHA1_80 0x0003 +# define SRTP_AES128_F8_SHA1_32 0x0004 +# define SRTP_NULL_SHA1_80 0x0005 +# define SRTP_NULL_SHA1_32 0x0006 + +/* AEAD SRTP protection profiles from RFC 7714 */ +# define SRTP_AEAD_AES_128_GCM 0x0007 +# define SRTP_AEAD_AES_256_GCM 0x0008 + +# ifndef OPENSSL_NO_SRTP + +__owur int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); +__owur int SSL_set_tlsext_use_srtp(SSL *ssl, const char *profiles); + +__owur STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl); +__owur SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); + +# endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/win64/include/openssl/ssl.h b/openSSL/win64/include/openssl/ssl.h new file mode 100644 index 0000000..9af0c89 --- /dev/null +++ b/openSSL/win64/include/openssl/ssl.h @@ -0,0 +1,2448 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL_H +# define HEADER_SSL_H + +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# endif +# include +# include +# include +# include + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* OpenSSL version number for ASN.1 encoding of the session information */ +/*- + * Version 0 - initial version + * Version 1 - added the optional peer certificate + */ +# define SSL_SESSION_ASN1_VERSION 0x0001 + +# define SSL_MAX_SSL_SESSION_ID_LENGTH 32 +# define SSL_MAX_SID_CTX_LENGTH 32 + +# define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512/8) +# define SSL_MAX_KEY_ARG_LENGTH 8 +# define SSL_MAX_MASTER_KEY_LENGTH 48 + +/* The maximum number of encrypt/decrypt pipelines we can support */ +# define SSL_MAX_PIPELINES 32 + +/* text strings for the ciphers */ + +/* These are used to specify which ciphers to use and not to use */ + +# define SSL_TXT_LOW "LOW" +# define SSL_TXT_MEDIUM "MEDIUM" +# define SSL_TXT_HIGH "HIGH" +# define SSL_TXT_FIPS "FIPS" + +# define SSL_TXT_aNULL "aNULL" +# define SSL_TXT_eNULL "eNULL" +# define SSL_TXT_NULL "NULL" + +# define SSL_TXT_kRSA "kRSA" +# define SSL_TXT_kDHr "kDHr"/* this cipher class has been removed */ +# define SSL_TXT_kDHd "kDHd"/* this cipher class has been removed */ +# define SSL_TXT_kDH "kDH"/* this cipher class has been removed */ +# define SSL_TXT_kEDH "kEDH"/* alias for kDHE */ +# define SSL_TXT_kDHE "kDHE" +# define SSL_TXT_kECDHr "kECDHr"/* this cipher class has been removed */ +# define SSL_TXT_kECDHe "kECDHe"/* this cipher class has been removed */ +# define SSL_TXT_kECDH "kECDH"/* this cipher class has been removed */ +# define SSL_TXT_kEECDH "kEECDH"/* alias for kECDHE */ +# define SSL_TXT_kECDHE "kECDHE" +# define SSL_TXT_kPSK "kPSK" +# define SSL_TXT_kRSAPSK "kRSAPSK" +# define SSL_TXT_kECDHEPSK "kECDHEPSK" +# define SSL_TXT_kDHEPSK "kDHEPSK" +# define SSL_TXT_kGOST "kGOST" +# define SSL_TXT_kSRP "kSRP" + +# define SSL_TXT_aRSA "aRSA" +# define SSL_TXT_aDSS "aDSS" +# define SSL_TXT_aDH "aDH"/* this cipher class has been removed */ +# define SSL_TXT_aECDH "aECDH"/* this cipher class has been removed */ +# define SSL_TXT_aECDSA "aECDSA" +# define SSL_TXT_aPSK "aPSK" +# define SSL_TXT_aGOST94 "aGOST94" +# define SSL_TXT_aGOST01 "aGOST01" +# define SSL_TXT_aGOST12 "aGOST12" +# define SSL_TXT_aGOST "aGOST" +# define SSL_TXT_aSRP "aSRP" + +# define SSL_TXT_DSS "DSS" +# define SSL_TXT_DH "DH" +# define SSL_TXT_DHE "DHE"/* same as "kDHE:-ADH" */ +# define SSL_TXT_EDH "EDH"/* alias for DHE */ +# define SSL_TXT_ADH "ADH" +# define SSL_TXT_RSA "RSA" +# define SSL_TXT_ECDH "ECDH" +# define SSL_TXT_EECDH "EECDH"/* alias for ECDHE" */ +# define SSL_TXT_ECDHE "ECDHE"/* same as "kECDHE:-AECDH" */ +# define SSL_TXT_AECDH "AECDH" +# define SSL_TXT_ECDSA "ECDSA" +# define SSL_TXT_PSK "PSK" +# define SSL_TXT_SRP "SRP" + +# define SSL_TXT_DES "DES" +# define SSL_TXT_3DES "3DES" +# define SSL_TXT_RC4 "RC4" +# define SSL_TXT_RC2 "RC2" +# define SSL_TXT_IDEA "IDEA" +# define SSL_TXT_SEED "SEED" +# define SSL_TXT_AES128 "AES128" +# define SSL_TXT_AES256 "AES256" +# define SSL_TXT_AES "AES" +# define SSL_TXT_AES_GCM "AESGCM" +# define SSL_TXT_AES_CCM "AESCCM" +# define SSL_TXT_AES_CCM_8 "AESCCM8" +# define SSL_TXT_CAMELLIA128 "CAMELLIA128" +# define SSL_TXT_CAMELLIA256 "CAMELLIA256" +# define SSL_TXT_CAMELLIA "CAMELLIA" +# define SSL_TXT_CHACHA20 "CHACHA20" +# define SSL_TXT_GOST "GOST89" +# define SSL_TXT_ARIA "ARIA" +# define SSL_TXT_ARIA_GCM "ARIAGCM" +# define SSL_TXT_ARIA128 "ARIA128" +# define SSL_TXT_ARIA256 "ARIA256" + +# define SSL_TXT_MD5 "MD5" +# define SSL_TXT_SHA1 "SHA1" +# define SSL_TXT_SHA "SHA"/* same as "SHA1" */ +# define SSL_TXT_GOST94 "GOST94" +# define SSL_TXT_GOST89MAC "GOST89MAC" +# define SSL_TXT_GOST12 "GOST12" +# define SSL_TXT_GOST89MAC12 "GOST89MAC12" +# define SSL_TXT_SHA256 "SHA256" +# define SSL_TXT_SHA384 "SHA384" + +# define SSL_TXT_SSLV3 "SSLv3" +# define SSL_TXT_TLSV1 "TLSv1" +# define SSL_TXT_TLSV1_1 "TLSv1.1" +# define SSL_TXT_TLSV1_2 "TLSv1.2" + +# define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +# define SSL_TXT_CMPALL "COMPLEMENTOFALL" +# define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + * This applies to ciphersuites for TLSv1.2 and below. + */ +# define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* This is the default set of TLSv1.3 ciphersuites */ +# if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305) +# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_CHACHA20_POLY1305_SHA256:" \ + "TLS_AES_128_GCM_SHA256" +# else +# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_AES_128_GCM_SHA256" +#endif +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +# define SSL_SENT_SHUTDOWN 1 +# define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +# define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; +typedef struct ssl_comp_st SSL_COMP; + +STACK_OF(SSL_CIPHER); +STACK_OF(SSL_COMP); + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; + +DEFINE_STACK_OF(SRTP_PROTECTION_PROFILE) + +typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + const SSL_CIPHER **cipher, void *arg); + +/* Extension context codes */ +/* This extension is only allowed in TLS */ +#define SSL_EXT_TLS_ONLY 0x0001 +/* This extension is only allowed in DTLS */ +#define SSL_EXT_DTLS_ONLY 0x0002 +/* Some extensions may be allowed in DTLS but we don't implement them for it */ +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ +#define SSL_EXT_SSL3_ALLOWED 0x0008 +/* Extension is only defined for TLS1.2 and below */ +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +/* Extension is only defined for TLS1.3 and above */ +#define SSL_EXT_TLS1_3_ONLY 0x0020 +/* Ignore this extension during parsing if we are resuming */ +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 +#define SSL_EXT_CLIENT_HELLO 0x0080 +/* Really means TLS1.2 or below */ +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type, + const unsigned char **out, size_t *outlen, + int *al, void *add_arg); + +typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type, + const unsigned char *in, size_t inlen, + int *al, void *parse_arg); + + +typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char **out, + size_t *outlen, X509 *x, + size_t chainidx, + int *al, void *add_arg); + +typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *out, + void *add_arg); + +typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *in, + size_t inlen, X509 *x, + size_t chainidx, + int *al, void *parse_arg); + +/* Typedef for verification callback */ +typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); + +/* + * Some values are reserved until OpenSSL 1.2.0 because they were previously + * included in SSL_OP_ALL in a 1.1.x release. + * + * Reserved value (until OpenSSL 1.2.0) 0x00000001U + * Reserved value (until OpenSSL 1.2.0) 0x00000002U + */ +/* Allow initial connection to servers that don't support RI */ +# define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004U + +/* Reserved value (until OpenSSL 1.2.0) 0x00000008U */ +# define SSL_OP_TLSEXT_PADDING 0x00000010U +/* Reserved value (until OpenSSL 1.2.0) 0x00000020U */ +# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040U +/* + * Reserved value (until OpenSSL 1.2.0) 0x00000080U + * Reserved value (until OpenSSL 1.2.0) 0x00000100U + * Reserved value (until OpenSSL 1.2.0) 0x00000200U + */ + +/* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ +# define SSL_OP_ALLOW_NO_DHE_KEX 0x00000400U + +/* + * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added in + * OpenSSL 0.9.6d. Usually (depending on the application protocol) the + * workaround is not needed. Unfortunately some broken SSL/TLS + * implementations cannot handle it at all, which is why we include it in + * SSL_OP_ALL. Added in 0.9.6e + */ +# define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS 0x00000800U + +/* DTLS options */ +# define SSL_OP_NO_QUERY_MTU 0x00001000U +/* Turn on Cookie Exchange (on relevant for servers) */ +# define SSL_OP_COOKIE_EXCHANGE 0x00002000U +/* Don't use RFC4507 ticket extension */ +# define SSL_OP_NO_TICKET 0x00004000U +# ifndef OPENSSL_NO_DTLS1_METHOD +/* Use Cisco's "speshul" version of DTLS_BAD_VER + * (only with deprecated DTLSv1_client_method()) */ +# define SSL_OP_CISCO_ANYCONNECT 0x00008000U +# endif + +/* As server, disallow session resumption on renegotiation */ +# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000U +/* Don't use compression even if supported */ +# define SSL_OP_NO_COMPRESSION 0x00020000U +/* Permit unsafe legacy renegotiation */ +# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x00040000U +/* Disable encrypt-then-mac */ +# define SSL_OP_NO_ENCRYPT_THEN_MAC 0x00080000U + +/* + * Enable TLSv1.3 Compatibility mode. This is on by default. A future version + * of OpenSSL may have this disabled by default. + */ +# define SSL_OP_ENABLE_MIDDLEBOX_COMPAT 0x00100000U + +/* Prioritize Chacha20Poly1305 when client does. + * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE */ +# define SSL_OP_PRIORITIZE_CHACHA 0x00200000U + +/* + * Set on servers to choose the cipher according to the server's preferences + */ +# define SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000U +/* + * If set, a server will allow a client to issue a SSLv3.0 version number as + * latest version supported in the premaster secret, even when TLSv1.0 + * (version 3.1) was announced in the client hello. Normally this is + * forbidden to prevent version rollback attacks. + */ +# define SSL_OP_TLS_ROLLBACK_BUG 0x00800000U + +/* + * Switches off automatic TLSv1.3 anti-replay protection for early data. This + * is a server-side option only (no effect on the client). + */ +# define SSL_OP_NO_ANTI_REPLAY 0x01000000U + +# define SSL_OP_NO_SSLv3 0x02000000U +# define SSL_OP_NO_TLSv1 0x04000000U +# define SSL_OP_NO_TLSv1_2 0x08000000U +# define SSL_OP_NO_TLSv1_1 0x10000000U +# define SSL_OP_NO_TLSv1_3 0x20000000U + +# define SSL_OP_NO_DTLSv1 0x04000000U +# define SSL_OP_NO_DTLSv1_2 0x08000000U + +# define SSL_OP_NO_SSL_MASK (SSL_OP_NO_SSLv3|\ + SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1_2|SSL_OP_NO_TLSv1_3) +# define SSL_OP_NO_DTLS_MASK (SSL_OP_NO_DTLSv1|SSL_OP_NO_DTLSv1_2) + +/* Disallow all renegotiation */ +# define SSL_OP_NO_RENEGOTIATION 0x40000000U + +/* + * Make server add server-hello extension from early version of cryptopro + * draft, when GOST ciphersuite is negotiated. Required for interoperability + * with CryptoPro CSP 3.x + */ +# define SSL_OP_CRYPTOPRO_TLSEXT_BUG 0x80000000U + +/* + * SSL_OP_ALL: various bug workarounds that should be rather harmless. + * This used to be 0x000FFFFFL before 0.9.7. + * This used to be 0x80000BFFU before 1.1.1. + */ +# define SSL_OP_ALL (SSL_OP_CRYPTOPRO_TLSEXT_BUG|\ + SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS|\ + SSL_OP_LEGACY_SERVER_CONNECT|\ + SSL_OP_TLSEXT_PADDING|\ + SSL_OP_SAFARI_ECDHE_ECDSA_BUG) + +/* OBSOLETE OPTIONS: retained for compatibility */ + +/* Removed from OpenSSL 1.1.0. Was 0x00000001L */ +/* Related to removed SSLv2. */ +# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000002L */ +/* Related to removed SSLv2. */ +# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 +/* Removed from OpenSSL 0.9.8q and 1.0.0c. Was 0x00000008L */ +/* Dead forever, see CVE-2010-4180 */ +# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 +/* Removed from OpenSSL 1.0.1h and 1.0.2. Was 0x00000010L */ +/* Refers to ancient SSLREF and SSLv2. */ +# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000020 */ +# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 +/* Removed from OpenSSL 0.9.7h and 0.9.8b. Was 0x00000040L */ +# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000080 */ +/* Ancient SSLeay version. */ +# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000100L */ +# define SSL_OP_TLS_D5_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000200L */ +# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00080000L */ +# define SSL_OP_SINGLE_ECDH_USE 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00100000L */ +# define SSL_OP_SINGLE_DH_USE 0x0 +/* Removed from OpenSSL 1.0.1k and 1.0.2. Was 0x00200000L */ +# define SSL_OP_EPHEMERAL_RSA 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x01000000L */ +# define SSL_OP_NO_SSLv2 0x0 +/* Removed from OpenSSL 1.0.1. Was 0x08000000L */ +# define SSL_OP_PKCS1_CHECK_1 0x0 +/* Removed from OpenSSL 1.0.1. Was 0x10000000L */ +# define SSL_OP_PKCS1_CHECK_2 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x20000000L */ +# define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x40000000L */ +# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0 + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +# define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001U +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U +/* + * Never bother the application with retries if the transport is blocking: + */ +# define SSL_MODE_AUTO_RETRY 0x00000004U +/* Don't attempt to automatically build certificate chain */ +# define SSL_MODE_NO_AUTO_CHAIN 0x00000008U +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) Released buffers are freed. + */ +# define SSL_MODE_RELEASE_BUFFERS 0x00000010U +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U +# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U +/* + * Support Asynchronous operation + */ +# define SSL_MODE_ASYNC 0x00000100U + +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +# define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certificate chain algorithms. When this is set we enforce them. + */ +# define SSL_CERT_FLAG_TLS_STRICT 0x00000001U + +/* Suite B modes, takes same values as certificate verify flags */ +# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +# define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +# define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +# define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +# define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +# define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +# define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +# define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +# define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +# define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +# define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +# define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +# define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +# define CERT_PKEY_SUITEB 0x800 + +# define SSL_CONF_FLAG_CMDLINE 0x1 +# define SSL_CONF_FLAG_FILE 0x2 +# define SSL_CONF_FLAG_CLIENT 0x4 +# define SSL_CONF_FLAG_SERVER 0x8 +# define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +# define SSL_CONF_FLAG_CERTIFICATE 0x20 +# define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40 +/* Configuration value types */ +# define SSL_CONF_TYPE_UNKNOWN 0x0 +# define SSL_CONF_TYPE_STRING 0x1 +# define SSL_CONF_TYPE_FILE 0x2 +# define SSL_CONF_TYPE_DIR 0x3 +# define SSL_CONF_TYPE_NONE 0x4 + +/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */ +# define SSL_COOKIE_LENGTH 4096 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +unsigned long SSL_CTX_get_options(const SSL_CTX *ctx); +unsigned long SSL_get_options(const SSL *s); +unsigned long SSL_CTX_clear_options(SSL_CTX *ctx, unsigned long op); +unsigned long SSL_clear_options(SSL *s, unsigned long op); +unsigned long SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op); +unsigned long SSL_set_options(SSL *s, unsigned long op); + +# define SSL_CTX_set_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) +# define SSL_CTX_clear_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_CTX_get_mode(ctx) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL) +# define SSL_clear_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_set_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL) +# define SSL_get_mode(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL) +# define SSL_set_mtu(ssl, mtu) \ + SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL) +# define DTLS_set_link_mtu(ssl, mtu) \ + SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL) +# define DTLS_get_link_min_mtu(ssl) \ + SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL) + +# define SSL_get_secure_renegotiation_support(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_heartbeat(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT,0,NULL) +# endif + +# define SSL_CTX_set_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_set_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_CTX_clear_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) +# define SSL_clear_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) + +void 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)); +void 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)); +# define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) +# define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) + +# define SSL_get_extms_support(s) \ + SSL_ctrl((s),SSL_CTRL_GET_EXTMS_SUPPORT,0,NULL) + +# ifndef OPENSSL_NO_SRP + +/* see tls_srp.c */ +__owur int SSL_SRP_CTX_init(SSL *s); +__owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +int SSL_SRP_CTX_free(SSL *ctx); +int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +__owur int SSL_srp_server_param_with_username(SSL *s, int *ad); +__owur int SRP_Calc_A_param(SSL *s); + +# endif + +/* 100k max cert list */ +# define SSL_MAX_CERT_LIST_DEFAULT 1024*100 + +# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32 + * bytes. The callback can alter this length to be less if desired. It is + * also an error for the callback to set the size to zero. + */ +typedef int (*GEN_SESSION_CB) (SSL *ssl, unsigned char *id, + unsigned int *id_len); + +# define SSL_SESS_CACHE_OFF 0x0000 +# define SSL_SESS_CACHE_CLIENT 0x0001 +# define SSL_SESS_CACHE_SERVER 0x0002 +# define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER) +# define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +# define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +# define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE) + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +# define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL) +# define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL) +# define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL) +# define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL) +# define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL) +# define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL) +# define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL) +# define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL) +# define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL) +# define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb) (struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb) (struct ssl_ctx_st + *ctx, + SSL_SESSION *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb) (struct ssl_st + *ssl, + const unsigned char + *data, int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + const unsigned char *data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb) (const SSL *ssl, int type, int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +# ifndef OPENSSL_NO_ENGINE +__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +# endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb) (SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb) (SSL *ssl, + const unsigned + char *cookie, + unsigned int + cookie_len)); + +void SSL_CTX_set_stateless_cookie_generate_cb( + SSL_CTX *ctx, + int (*gen_stateless_cookie_cb) (SSL *ssl, + unsigned char *cookie, + size_t *cookie_len)); +void SSL_CTX_set_stateless_cookie_verify_cb( + SSL_CTX *ctx, + int (*verify_stateless_cookie_cb) (SSL *ssl, + const unsigned char *cookie, + size_t cookie_len)); +# ifndef OPENSSL_NO_NEXTPROTONEG + +typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned int *outlen, + void *arg); +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + SSL_CTX_npn_advertised_cb_func cb, + void *arg); +# define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb + +typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + SSL_CTX_npn_select_cb_func cb, + void *arg); +# define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb + +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +# define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated +# endif + +__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *in, unsigned int inlen, + const unsigned char *client, + unsigned int client_len); + +# define OPENSSL_NPN_UNSUPPORTED 0 +# define OPENSSL_NPN_NEGOTIATED 1 +# define OPENSSL_NPN_NO_OVERLAP 2 + +__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned int protos_len); +__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned int protos_len); +typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + SSL_CTX_alpn_select_cb_func cb, + void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned int *len); + +# ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +# define PSK_MAX_IDENTITY_LEN 128 +# define PSK_MAX_PSK_LEN 256 +typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl, + const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); +void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); + +typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl, + const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb); +void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb); + +__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +# endif + +typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl, + const unsigned char *identity, + size_t identity_len, + SSL_SESSION **sess); +typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, + const unsigned char **id, + size_t *idlen, + SSL_SESSION **sess); + +void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb); +void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, + SSL_psk_find_session_cb_func cb); +void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); +void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, + SSL_psk_use_session_cb_func cb); + +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, + unsigned int ext_type); + +__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + unsigned int context, + SSL_custom_ext_add_cb_ex add_cb, + SSL_custom_ext_free_cb_ex free_cb, + void *add_arg, + SSL_custom_ext_parse_cb_ex parse_cb, + void *parse_arg); + +__owur int SSL_extension_supported(unsigned int ext_type); + +# define SSL_NOTHING 1 +# define SSL_WRITING 2 +# define SSL_READING 3 +# define SSL_X509_LOOKUP 4 +# define SSL_ASYNC_PAUSED 5 +# define SSL_ASYNC_NO_JOBS 6 +# define SSL_CLIENT_HELLO_CB 7 + +/* These will only be used when doing non-blocking IO */ +# define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +# define SSL_want_read(s) (SSL_want(s) == SSL_READING) +# define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +# define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) +# define SSL_want_async(s) (SSL_want(s) == SSL_ASYNC_PAUSED) +# define SSL_want_async_job(s) (SSL_want(s) == SSL_ASYNC_NO_JOBS) +# define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB) + +# define SSL_MAC_FLAG_READ_MAC_STREAM 1 +# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 + +/* + * A callback for logging out TLS key material. This callback should log out + * |line| followed by a newline. + */ +typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line); + +/* + * SSL_CTX_set_keylog_callback configures a callback to log key material. This + * is intended for debugging use with tools like Wireshark. The cb function + * should log line followed by a newline. + */ +void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb); + +/* + * SSL_CTX_get_keylog_callback returns the callback configured by + * SSL_CTX_set_keylog_callback. + */ +SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx); + +int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data); +uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx); +int SSL_set_max_early_data(SSL *s, uint32_t max_early_data); +uint32_t SSL_get_max_early_data(const SSL *s); +int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data); +uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx); +int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data); +uint32_t SSL_get_recv_max_early_data(const SSL *s); + +#ifdef __cplusplus +} +#endif + +# include +# include +# include /* This is mostly sslv3 with a few tweaks */ +# include /* Datagram TLS */ +# include /* Support for the use_srtp extension */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These need to be after the above set of includes due to a compiler bug + * in VisualStudio 2015 + */ +DEFINE_STACK_OF_CONST(SSL_CIPHER) +DEFINE_STACK_OF(SSL_COMP) + +/* compatibility */ +# define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)(arg))) +# define SSL_get_app_data(s) (SSL_get_ex_data(s,0)) +# define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0, \ + (char *)(a))) +# define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0)) +# define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0)) +# define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0, \ + (char *)(arg))) +DEPRECATEDIN_1_1_0(void SSL_set_debug(SSL *s, int debug)) + +/* TLSv1.3 KeyUpdate message types */ +/* -1 used so that this is an invalid value for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NONE -1 +/* Values as defined for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NOT_REQUESTED 0 +#define SSL_KEY_UPDATE_REQUESTED 1 + +/* + * The valid handshake states (one for each type message sent and one for each + * type of message received). There are also two "special" states: + * TLS = TLS or DTLS state + * DTLS = DTLS specific state + * CR/SR = Client Read/Server Read + * CW/SW = Client Write/Server Write + * + * The "special" states are: + * TLS_ST_BEFORE = No handshake has been initiated yet + * TLS_ST_OK = A handshake has been successfully completed + */ +typedef enum { + TLS_ST_BEFORE, + TLS_ST_OK, + DTLS_ST_CR_HELLO_VERIFY_REQUEST, + TLS_ST_CR_SRVR_HELLO, + TLS_ST_CR_CERT, + TLS_ST_CR_CERT_STATUS, + TLS_ST_CR_KEY_EXCH, + TLS_ST_CR_CERT_REQ, + TLS_ST_CR_SRVR_DONE, + TLS_ST_CR_SESSION_TICKET, + TLS_ST_CR_CHANGE, + TLS_ST_CR_FINISHED, + TLS_ST_CW_CLNT_HELLO, + TLS_ST_CW_CERT, + TLS_ST_CW_KEY_EXCH, + TLS_ST_CW_CERT_VRFY, + TLS_ST_CW_CHANGE, + TLS_ST_CW_NEXT_PROTO, + TLS_ST_CW_FINISHED, + TLS_ST_SW_HELLO_REQ, + TLS_ST_SR_CLNT_HELLO, + DTLS_ST_SW_HELLO_VERIFY_REQUEST, + TLS_ST_SW_SRVR_HELLO, + TLS_ST_SW_CERT, + TLS_ST_SW_KEY_EXCH, + TLS_ST_SW_CERT_REQ, + TLS_ST_SW_SRVR_DONE, + TLS_ST_SR_CERT, + TLS_ST_SR_KEY_EXCH, + TLS_ST_SR_CERT_VRFY, + TLS_ST_SR_NEXT_PROTO, + TLS_ST_SR_CHANGE, + TLS_ST_SR_FINISHED, + TLS_ST_SW_SESSION_TICKET, + TLS_ST_SW_CERT_STATUS, + TLS_ST_SW_CHANGE, + TLS_ST_SW_FINISHED, + TLS_ST_SW_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_CERT_VRFY, + TLS_ST_SW_CERT_VRFY, + TLS_ST_CR_HELLO_REQ, + TLS_ST_SW_KEY_UPDATE, + TLS_ST_CW_KEY_UPDATE, + TLS_ST_SR_KEY_UPDATE, + TLS_ST_CR_KEY_UPDATE, + TLS_ST_EARLY_DATA, + TLS_ST_PENDING_EARLY_DATA_END, + TLS_ST_CW_END_OF_EARLY_DATA, + TLS_ST_SR_END_OF_EARLY_DATA +} OSSL_HANDSHAKE_STATE; + +/* + * Most of the following state values are no longer used and are defined to be + * the closest equivalent value in the current state machine code. Not all + * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT + * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP, + * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT. + */ + +# define SSL_ST_CONNECT 0x1000 +# define SSL_ST_ACCEPT 0x2000 + +# define SSL_ST_MASK 0x0FFF + +# define SSL_CB_LOOP 0x01 +# define SSL_CB_EXIT 0x02 +# define SSL_CB_READ 0x04 +# define SSL_CB_WRITE 0x08 +# define SSL_CB_ALERT 0x4000/* used in callback */ +# define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ) +# define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE) +# define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP) +# define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT) +# define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP) +# define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT) +# define SSL_CB_HANDSHAKE_START 0x10 +# define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +# define SSL_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a)) +# define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a)) +int SSL_in_init(const SSL *s); +int SSL_in_before(const SSL *s); +int SSL_is_init_finished(const SSL *s); + +/* + * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you + * should not need these + */ +# define SSL_ST_READ_HEADER 0xF0 +# define SSL_ST_READ_BODY 0xF1 +# define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +# define SSL_VERIFY_NONE 0x00 +# define SSL_VERIFY_PEER 0x01 +# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +# define SSL_VERIFY_CLIENT_ONCE 0x04 +# define SSL_VERIFY_POST_HANDSHAKE 0x08 + +# if OPENSSL_API_COMPAT < 0x10100000L +# define OpenSSL_add_ssl_algorithms() SSL_library_init() +# define SSLeay_add_ssl_algorithms() SSL_library_init() +# endif + +/* More backward compatibility */ +# define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_cipher_bits(s,np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np) +# define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +# define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_time(a) SSL_SESSION_get_time(a) +# define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b)) +# define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +# define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b)) + +# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id) +# define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +# define SSL_AD_REASON_OFFSET 1000/* offset to get SSL_R_... value + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +# define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +# define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +# define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +# define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +# define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +# define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +# define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +# define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +# define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +# define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +# define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +# define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +# define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +# define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +# define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +# define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +# define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +# define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +# define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +# define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +# define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +# define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +# define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +# define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +# define SSL_AD_MISSING_EXTENSION TLS13_AD_MISSING_EXTENSION +# define SSL_AD_CERTIFICATE_REQUIRED TLS13_AD_CERTIFICATE_REQUIRED +# define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +# define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +# define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +# define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +# define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +# define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +# define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +# define SSL_AD_NO_APPLICATION_PROTOCOL TLS1_AD_NO_APPLICATION_PROTOCOL +# define SSL_ERROR_NONE 0 +# define SSL_ERROR_SSL 1 +# define SSL_ERROR_WANT_READ 2 +# define SSL_ERROR_WANT_WRITE 3 +# define SSL_ERROR_WANT_X509_LOOKUP 4 +# define SSL_ERROR_SYSCALL 5/* look at error stack/return + * value/errno */ +# define SSL_ERROR_ZERO_RETURN 6 +# define SSL_ERROR_WANT_CONNECT 7 +# define SSL_ERROR_WANT_ACCEPT 8 +# define SSL_ERROR_WANT_ASYNC 9 +# define SSL_ERROR_WANT_ASYNC_JOB 10 +# define SSL_ERROR_WANT_CLIENT_HELLO_CB 11 +# define SSL_CTRL_SET_TMP_DH 3 +# define SSL_CTRL_SET_TMP_ECDH 4 +# define SSL_CTRL_SET_TMP_DH_CB 6 +# define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 +# define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 +# define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +# define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +# define SSL_CTRL_GET_FLAGS 13 +# define SSL_CTRL_EXTRA_CHAIN_CERT 14 +# define SSL_CTRL_SET_MSG_CALLBACK 15 +# define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 +/* only applies to datagram connections */ +# define SSL_CTRL_SET_MTU 17 +/* Stats */ +# define SSL_CTRL_SESS_NUMBER 20 +# define SSL_CTRL_SESS_CONNECT 21 +# define SSL_CTRL_SESS_CONNECT_GOOD 22 +# define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 +# define SSL_CTRL_SESS_ACCEPT 24 +# define SSL_CTRL_SESS_ACCEPT_GOOD 25 +# define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 +# define SSL_CTRL_SESS_HIT 27 +# define SSL_CTRL_SESS_CB_HIT 28 +# define SSL_CTRL_SESS_MISSES 29 +# define SSL_CTRL_SESS_TIMEOUTS 30 +# define SSL_CTRL_SESS_CACHE_FULL 31 +# define SSL_CTRL_MODE 33 +# define SSL_CTRL_GET_READ_AHEAD 40 +# define SSL_CTRL_SET_READ_AHEAD 41 +# define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +# define SSL_CTRL_GET_SESS_CACHE_SIZE 43 +# define SSL_CTRL_SET_SESS_CACHE_MODE 44 +# define SSL_CTRL_GET_SESS_CACHE_MODE 45 +# define SSL_CTRL_GET_MAX_CERT_LIST 50 +# define SSL_CTRL_SET_MAX_CERT_LIST 51 +# define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 +/* see tls1.h for macros based on these */ +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 +# define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 +# define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 +# define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +# define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */ +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 +# define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 +# define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 +# define SSL_CTRL_SET_SRP_ARG 78 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 +# define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 +# define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT 85 +# define SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING 86 +# define SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS 87 +# endif +# define DTLS_CTRL_GET_TIMEOUT 73 +# define DTLS_CTRL_HANDLE_TIMEOUT 74 +# define SSL_CTRL_GET_RI_SUPPORT 76 +# define SSL_CTRL_CLEAR_MODE 78 +# define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79 +# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +# define SSL_CTRL_CHAIN 88 +# define SSL_CTRL_CHAIN_CERT 89 +# define SSL_CTRL_GET_GROUPS 90 +# define SSL_CTRL_SET_GROUPS 91 +# define SSL_CTRL_SET_GROUPS_LIST 92 +# define SSL_CTRL_GET_SHARED_GROUP 93 +# define SSL_CTRL_SET_SIGALGS 97 +# define SSL_CTRL_SET_SIGALGS_LIST 98 +# define SSL_CTRL_CERT_FLAGS 99 +# define SSL_CTRL_CLEAR_CERT_FLAGS 100 +# define SSL_CTRL_SET_CLIENT_SIGALGS 101 +# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +# define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +# define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +# define SSL_CTRL_BUILD_CERT_CHAIN 105 +# define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +# define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +# define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +# define SSL_CTRL_GET_PEER_TMP_KEY 109 +# define SSL_CTRL_GET_RAW_CIPHERLIST 110 +# define SSL_CTRL_GET_EC_POINT_FORMATS 111 +# define SSL_CTRL_GET_CHAIN_CERTS 115 +# define SSL_CTRL_SELECT_CURRENT_CERT 116 +# define SSL_CTRL_SET_CURRENT_CERT 117 +# define SSL_CTRL_SET_DH_AUTO 118 +# define DTLS_CTRL_SET_LINK_MTU 120 +# define DTLS_CTRL_GET_LINK_MIN_MTU 121 +# define SSL_CTRL_GET_EXTMS_SUPPORT 122 +# define SSL_CTRL_SET_MIN_PROTO_VERSION 123 +# define SSL_CTRL_SET_MAX_PROTO_VERSION 124 +# define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125 +# define SSL_CTRL_SET_MAX_PIPELINES 126 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129 +# define SSL_CTRL_GET_MIN_PROTO_VERSION 130 +# define SSL_CTRL_GET_MAX_PROTO_VERSION 131 +# define SSL_CTRL_GET_SIGNATURE_NID 132 +# define SSL_CTRL_GET_TMP_KEY 133 +# define SSL_CTRL_GET_VERIFY_CERT_STORE 137 +# define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CERT_SET_FIRST 1 +# define SSL_CERT_SET_NEXT 2 +# define SSL_CERT_SET_SERVER 3 +# define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)(arg)) +# define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL) +# define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL) +# define SSL_CTX_set_tmp_dh(ctx,dh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) +# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) +# define SSL_CTX_set_dh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_DH_AUTO,onoff,NULL) +# define SSL_set_dh_auto(s, onoff) \ + SSL_ctrl(s,SSL_CTRL_SET_DH_AUTO,onoff,NULL) +# define SSL_set_tmp_dh(ssl,dh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) +# define SSL_set_tmp_ecdh(ssl,ecdh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) +# define SSL_CTX_add_extra_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)(x509)) +# define SSL_CTX_get_extra_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509) +# define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509) +# define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL) +# define SSL_CTX_set0_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)(sk)) +# define SSL_CTX_set1_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)(sk)) +# define SSL_CTX_add0_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)(x509)) +# define SSL_CTX_add1_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)(x509)) +# define SSL_CTX_get0_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx,NULL) +# define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_CTX_select_current_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509)) +# define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_CTX_set0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set1_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st)) +# define SSL_CTX_get0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set1_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st)) +# define SSL_CTX_get0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_set0_chain(s,sk) \ + SSL_ctrl(s,SSL_CTRL_CHAIN,0,(char *)(sk)) +# define SSL_set1_chain(s,sk) \ + SSL_ctrl(s,SSL_CTRL_CHAIN,1,(char *)(sk)) +# define SSL_add0_chain_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,0,(char *)(x509)) +# define SSL_add1_chain_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,1,(char *)(x509)) +# define SSL_get0_chain_certs(s,px509) \ + SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_clear_chain_certs(s) \ + SSL_set0_chain(s,NULL) +# define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_select_current_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509)) +# define SSL_set_current_cert(s,op) \ + SSL_ctrl(s,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_set0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_set1_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st)) +#define SSL_get0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_set0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_set1_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st)) +#define SSL_get0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_get1_groups(s, glist) \ + SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_CTX_set1_groups(ctx, glist, glistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) +# define SSL_CTX_set1_groups_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_set1_groups(s, glist, glistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) +# define SSL_set1_groups_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(str)) +# define SSL_get_shared_group(s, n) \ + SSL_ctrl(s,SSL_CTRL_GET_SHARED_GROUP,n,NULL) +# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist)) +# define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(s)) +# define SSL_set1_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist)) +# define SSL_set1_sigalgs_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(str)) +# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist)) +# define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(s)) +# define SSL_set1_client_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist)) +# define SSL_set1_client_sigalgs_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(str)) +# define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist)) +# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen, \ + (char *)(clist)) +# define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) +# define SSL_get_peer_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_TMP_KEY,0,pk) +# define SSL_get_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_TMP_KEY,0,pk) +# define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,plst) +# define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,plst) +# define SSL_CTX_set_min_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +# define SSL_CTX_set_max_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +# define SSL_CTX_get_min_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +# define SSL_CTX_get_max_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +# define SSL_set_min_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +# define SSL_set_max_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +# define SSL_get_min_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +# define SSL_get_max_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) + +/* Backwards compatibility, original 1.1.0 names */ +# define SSL_CTRL_GET_SERVER_TMP_KEY \ + SSL_CTRL_GET_PEER_TMP_KEY +# define SSL_get_server_tmp_key(s, pk) \ + SSL_get_peer_tmp_key(s, pk) + +/* + * The following symbol names are old and obsolete. They are kept + * for compatibility reasons only and should not be used anymore. + */ +# define SSL_CTRL_GET_CURVES SSL_CTRL_GET_GROUPS +# define SSL_CTRL_SET_CURVES SSL_CTRL_SET_GROUPS +# define SSL_CTRL_SET_CURVES_LIST SSL_CTRL_SET_GROUPS_LIST +# define SSL_CTRL_GET_SHARED_CURVE SSL_CTRL_GET_SHARED_GROUP + +# define SSL_get1_curves SSL_get1_groups +# define SSL_CTX_set1_curves SSL_CTX_set1_groups +# define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list +# define SSL_set1_curves SSL_set1_groups +# define SSL_set1_curves_list SSL_set1_groups_list +# define SSL_get_shared_curve SSL_get_shared_group + + +# if OPENSSL_API_COMPAT < 0x10100000L +/* Provide some compatibility macros for removed functionality. */ +# define SSL_CTX_need_tmp_RSA(ctx) 0 +# define SSL_CTX_set_tmp_rsa(ctx,rsa) 1 +# define SSL_need_tmp_RSA(ssl) 0 +# define SSL_set_tmp_rsa(ssl,rsa) 1 +# define SSL_CTX_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +# define SSL_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +/* + * We "pretend" to call the callback to avoid warnings about unused static + * functions. + */ +# define SSL_CTX_set_tmp_rsa_callback(ctx, cb) while(0) (cb)(NULL, 0, 0) +# define SSL_set_tmp_rsa_callback(ssl, cb) while(0) (cb)(NULL, 0, 0) +# endif +__owur const BIO_METHOD *BIO_f_ssl(void); +__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +int SSL_CTX_up_ref(SSL_CTX *ctx); +void SSL_CTX_free(SSL_CTX *); +__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx); +__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); +__owur int SSL_want(const SSL *s); +__owur int SSL_clear(SSL *s); + +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); + +__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); +__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +__owur const char *OPENSSL_cipher_name(const char *rfc_name); +__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c); +__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c); +__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c); +__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c); + +__owur int SSL_get_fd(const SSL *s); +__owur int SSL_get_rfd(const SSL *s); +__owur int SSL_get_wfd(const SSL *s); +__owur const char *SSL_get_cipher_list(const SSL *s, int n); +__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size); +__owur int SSL_get_read_ahead(const SSL *s); +__owur int SSL_pending(const SSL *s); +__owur int SSL_has_pending(const SSL *s); +# ifndef OPENSSL_NO_SOCK +__owur int SSL_set_fd(SSL *s, int fd); +__owur int SSL_set_rfd(SSL *s, int fd); +__owur int SSL_set_wfd(SSL *s, int fd); +# endif +void SSL_set0_rbio(SSL *s, BIO *rbio); +void SSL_set0_wbio(SSL *s, BIO *wbio); +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +__owur BIO *SSL_get_rbio(const SSL *s); +__owur BIO *SSL_get_wbio(const SSL *s); +__owur int SSL_set_cipher_list(SSL *s, const char *str); +__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str); +__owur int SSL_set_ciphersuites(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +__owur int SSL_get_verify_mode(const SSL *s); +__owur int SSL_get_verify_depth(const SSL *s); +__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s); +void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg); +# ifndef OPENSSL_NO_RSA +__owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, const unsigned char *d, + long len); +# endif +__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +__owur int SSL_use_certificate(SSL *ssl, X509 *x); +__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); +__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + + +/* serverinfo file format versions */ +# define SSL_SERVERINFOV1 1 +# define SSL_SERVERINFOV2 2 + +/* Set serverinfo data for the current active cert. */ +__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, + const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); + +#ifndef OPENSSL_NO_RSA +__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +#endif + +__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type); + +#ifndef OPENSSL_NO_RSA +__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +#endif +__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, + int type); +/* PEM type */ +__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_load_error_strings() \ + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +# endif + +__owur const char *SSL_state_string(const SSL *s); +__owur const char *SSL_rstate_string(const SSL *s); +__owur const char *SSL_state_string_long(const SSL *s); +__owur const char *SSL_rstate_string_long(const SSL *s); +__owur long SSL_SESSION_get_time(const SSL_SESSION *s); +__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); +__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); +__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); + +__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); +__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); +void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, + const unsigned char **alpn, + size_t *len); +__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s, + const unsigned char *alpn, + size_t len); +__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); +__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher); +__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s); +__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s); +void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick, + size_t *len); +__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s); +__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s, + uint32_t max_early_data); +__owur int SSL_copy_session_id(SSL *to, const SSL *from); +__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); +__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, + unsigned int sid_len); +__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s); + +__owur SSL_SESSION *SSL_SESSION_new(void); +__owur SSL_SESSION *SSL_SESSION_dup(SSL_SESSION *src); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, + unsigned int *len); +__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +# ifndef OPENSSL_NO_STDIO +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +# endif +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x); +int SSL_SESSION_up_ref(SSL_SESSION *ses); +void SSL_SESSION_free(SSL_SESSION *ses); +__owur int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); +__owur int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session); +int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session); +__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); +__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb); +__owur int SSL_has_matching_session_id(const SSL *s, + const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); + +# ifdef HEADER_X509_H +__owur X509 *SSL_get_peer_certificate(const SSL *s); +# endif + +__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback); +void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); +void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, + int (*cb) (X509_STORE_CTX *, void *), + void *arg); +void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg), + void *arg); +# ifndef OPENSSL_NO_RSA +__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +# endif +__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); +__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); +pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx); +void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx); +void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb); +void SSL_set_default_passwd_cb_userdata(SSL *s, void *u); +pem_password_cb *SSL_get_default_passwd_cb(SSL *s); +void *SSL_get_default_passwd_cb_userdata(SSL *s); + +__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx); +__owur int SSL_check_private_key(const SSL *ctx); + +__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_up_ref(SSL *s); +int SSL_is_dtls(const SSL *s); +__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose); +__owur int SSL_set_purpose(SSL *ssl, int purpose); +__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); +__owur int SSL_set_trust(SSL *ssl, int trust); + +__owur int SSL_set1_host(SSL *s, const char *hostname); +__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur const char *SSL_get0_peername(SSL *s); +void SSL_set_hostflags(SSL *s, unsigned int flags); + +__owur int SSL_CTX_dane_enable(SSL_CTX *ctx); +__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md, + uint8_t mtype, uint8_t ord); +__owur int SSL_dane_enable(SSL *s, const char *basedomain); +__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector, + uint8_t mtype, unsigned const char *data, size_t dlen); +__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki); +__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector, + uint8_t *mtype, unsigned const char **data, + size_t *dlen); +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +SSL_DANE *SSL_get0_dane(SSL *ssl); +/* + * DANE flags + */ +unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags); +unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags); + +__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +__owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); + +# ifndef OPENSSL_NO_SRP +int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb) (SSL *, void *)); +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb) (SSL *, void *)); +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb) (SSL *, int *, void *)); +int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +__owur BIGNUM *SSL_get_srp_g(SSL *s); +__owur BIGNUM *SSL_get_srp_N(SSL *s); + +__owur char *SSL_get_srp_username(SSL *s); +__owur char *SSL_get_srp_userinfo(SSL *s); +# endif + +/* + * ClientHello callback and helpers. + */ + +# define SSL_CLIENT_HELLO_SUCCESS 1 +# define SSL_CLIENT_HELLO_ERROR 0 +# define SSL_CLIENT_HELLO_RETRY (-1) + +typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); +void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, + void *arg); +int SSL_client_hello_isv2(SSL *s); +unsigned int SSL_client_hello_get0_legacy_version(SSL *s); +size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_compression_methods(SSL *s, + const unsigned char **out); +int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get0_ext(SSL *s, unsigned int type, + const unsigned char **out, size_t *outlen); + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +# ifdef OSSL_ASYNC_FD +/* + * Windows application developer has to include windows.h to use these. + */ +__owur int SSL_waiting_for_async(SSL *s); +__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds); +__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +# endif +__owur int SSL_accept(SSL *ssl); +__owur int SSL_stateless(SSL *s); +__owur int SSL_connect(SSL *ssl); +__owur int SSL_read(SSL *ssl, void *buf, int num); +__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); + +# define SSL_READ_EARLY_DATA_ERROR 0 +# define SSL_READ_EARLY_DATA_SUCCESS 1 +# define SSL_READ_EARLY_DATA_FINISH 2 + +__owur int SSL_read_early_data(SSL *s, void *buf, size_t num, + size_t *readbytes); +__owur int SSL_peek(SSL *ssl, void *buf, int num); +__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); +__owur int SSL_write(SSL *ssl, const void *buf, int num); +__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written); +__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num, + size_t *written); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +# define SSL_EARLY_DATA_NOT_SENT 0 +# define SSL_EARLY_DATA_REJECTED 1 +# define SSL_EARLY_DATA_ACCEPTED 2 + +__owur int SSL_get_early_data_status(const SSL *s); + +__owur int SSL_get_error(const SSL *s, int ret_code); +__owur const char *SSL_get_version(const SSL *s); + +/* This sets the 'default' SSL version that SSL_new() will create */ +__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); + +# ifndef OPENSSL_NO_SSL3_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_method(void)) /* SSLv3 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_client_method(void)) +# endif + +#define SSLv23_method TLS_method +#define SSLv23_server_method TLS_server_method +#define SSLv23_client_method TLS_client_method + +/* Negotiate highest available SSL/TLS version */ +__owur const SSL_METHOD *TLS_method(void); +__owur const SSL_METHOD *TLS_server_method(void); +__owur const SSL_METHOD *TLS_client_method(void); + +# ifndef OPENSSL_NO_TLS1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_method(void)) /* TLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_TLS1_1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_method(void)) /* TLSv1.1 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_TLS1_2_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_method(void)) /* TLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_client_method(void)) +# endif + +# ifndef OPENSSL_NO_DTLS1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_method(void)) /* DTLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_DTLS1_2_METHOD +/* DTLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_client_method(void)) +# endif + +__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +__owur size_t DTLS_get_data_mtu(const SSL *s); + +__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx); +__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); + +__owur int SSL_do_handshake(SSL *s); +int SSL_key_update(SSL *s, int updatetype); +int SSL_get_key_update_type(const SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); +int SSL_shutdown(SSL *s); +__owur int SSL_verify_client_post_handshake(SSL *s); +void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); +void SSL_set_post_handshake_auth(SSL *s, int val); + +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); +__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +__owur const char *SSL_alert_type_string_long(int value); +__owur const char *SSL_alert_type_string(int value); +__owur const char *SSL_alert_desc_string_long(int value); +__owur const char *SSL_alert_desc_string(int value); + +void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s); +__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx); +__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x); +__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x); +__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +__owur int SSL_add_client_CA(SSL *ssl, X509 *x); +__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +__owur long SSL_get_default_timeout(const SSL *s); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_library_init() OPENSSL_init_ssl(0, NULL) +# endif + +__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk); + +__owur SSL *SSL_dup(SSL *ssl); + +__owur X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ +struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +__owur int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +__owur int SSL_get_shutdown(const SSL *ssl); +__owur int SSL_version(const SSL *ssl); +__owur int SSL_client_version(const SSL *s); +__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx); +__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, + const char *CApath); +# define SSL_get0_session SSL_get_session/* just peek at pointer */ +__owur SSL_SESSION *SSL_get_session(const SSL *ssl); +__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb) (const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type, + int val); +__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); + +void SSL_set_verify_result(SSL *ssl, long v); +__owur long SSL_get_verify_result(const SSL *ssl); +__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s); + +__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess, + unsigned char *out, size_t outlen); +__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess, + const unsigned char *in, size_t len); +uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess); + +#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef) +__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef) +__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef) +__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); + +__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +# define SSL_CTX_sess_set_cache_size(ctx,t) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL) +# define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL) +# define SSL_CTX_set_session_cache_mode(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL) +# define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL) + +# define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +# define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m) +# define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) +# define SSL_CTX_set_read_ahead(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL) +# define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_CTX_set_max_cert_list(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) +# define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_set_max_cert_list(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) + +# define SSL_CTX_set_max_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) +# define SSL_set_max_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) +# define SSL_CTX_set_split_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL) +# define SSL_set_split_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL) +# define SSL_CTX_set_max_pipelines(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_PIPELINES,m,NULL) +# define SSL_set_max_pipelines(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_PIPELINES,m,NULL) + +void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len); +void SSL_set_default_read_buffer_len(SSL *s, size_t len); + +# ifndef OPENSSL_NO_DH +/* NB: the |keylength| is only applicable when is_export is true */ +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +# endif + +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); +__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); +__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); +__owur int SSL_COMP_get_id(const SSL_COMP *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_COMP_free_compression_methods() while(0) continue +# endif +__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); +int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c); +int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c); +int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len, + int isv2format, STACK_OF(SSL_CIPHER) **sk, + STACK_OF(SSL_CIPHER) **scsvs); + +/* TLS extensions functions */ +__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +__owur int SSL_set_session_ticket_ext_cb(SSL *s, + tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +__owur int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn session_secret_cb, + void *arg); + +void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, + int (*cb) (SSL *ssl, + int + is_forward_secure)); + +void SSL_set_not_resumable_session_callback(SSL *ssl, + int (*cb) (SSL *ssl, + int is_forward_secure)); + +void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, + size_t (*cb) (SSL *ssl, int type, + size_t len, void *arg)); +void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); +int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); + +void SSL_set_record_padding_callback(SSL *ssl, + size_t (*cb) (SSL *ssl, int type, + size_t len, void *arg)); +void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); +int SSL_set_block_padding(SSL *ssl, size_t block_size); + +int SSL_set_num_tickets(SSL *s, size_t num_tickets); +size_t SSL_get_num_tickets(const SSL *s); +int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_cache_hit(s) SSL_session_reused(s) +# endif + +__owur int SSL_session_reused(const SSL *s); +__owur int SSL_is_server(const SSL *s); + +__owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, + unsigned int flags); +__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +void SSL_add_ssl_module(void); +int SSL_config(SSL *s, const char *name); +int SSL_CTX_config(SSL_CTX *ctx, const char *name); + +# ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +# endif + +# ifndef OPENSSL_NO_SOCK +int DTLSv1_listen(SSL *s, BIO_ADDR *client); +# endif + +# ifndef OPENSSL_NO_CT + +/* + * A callback for verifying that the received SCTs are sufficient. + * Expected to return 1 if they are sufficient, otherwise 0. + * May return a negative integer if an error occurs. + * A connection should be aborted if the SCTs are deemed insufficient. + */ +typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, + const STACK_OF(SCT) *scts, void *arg); + +/* + * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate + * the received SCTs. + * If the callback returns a non-positive result, the connection is terminated. + * Call this function before beginning a handshake. + * If a NULL |callback| is provided, SCT validation is disabled. + * |arg| is arbitrary userdata that will be passed to the callback whenever it + * is invoked. Ownership of |arg| remains with the caller. + * + * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response + * will be requested. + */ +int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, + void *arg); +int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, + ssl_ct_validation_cb callback, + void *arg); +#define SSL_disable_ct(s) \ + ((void) SSL_set_validation_callback((s), NULL, NULL)) +#define SSL_CTX_disable_ct(ctx) \ + ((void) SSL_CTX_set_validation_callback((ctx), NULL, NULL)) + +/* + * The validation type enumerates the available behaviours of the built-in SSL + * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct(). + * The underlying callback is a static function in libssl. + */ +enum { + SSL_CT_VALIDATION_PERMISSIVE = 0, + SSL_CT_VALIDATION_STRICT +}; + +/* + * Enable CT by setting up a callback that implements one of the built-in + * validation variants. The SSL_CT_VALIDATION_PERMISSIVE variant always + * continues the handshake, the application can make appropriate decisions at + * handshake completion. The SSL_CT_VALIDATION_STRICT variant requires at + * least one valid SCT, or else handshake termination will be requested. The + * handshake may continue anyway if SSL_VERIFY_NONE is in effect. + */ +int SSL_enable_ct(SSL *s, int validation_mode); +int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); + +/* + * Report whether a non-NULL callback is enabled. + */ +int SSL_ct_is_enabled(const SSL *s); +int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx); + +/* Gets the SCTs received from a connection */ +const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s); + +/* + * Loads the CT log list from the default location. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx); + +/* + * Loads the CT log list from the specified file path. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path); + +/* + * Sets the CT log list used by all SSL connections created from this SSL_CTX. + * Ownership of the CTLOG_STORE is transferred to the SSL_CTX. + */ +void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs); + +/* + * Gets the CT log list used by all SSL connections created from this SSL_CTX. + * This will be NULL unless one of the following functions has been called: + * - SSL_CTX_set_default_ctlog_list_file + * - SSL_CTX_set_ctlog_list_file + * - SSL_CTX_set_ctlog_store + */ +const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx); + +# endif /* OPENSSL_NO_CT */ + +/* What the "other" parameter contains in security callback */ +/* Mask for type */ +# define SSL_SECOP_OTHER_TYPE 0xffff0000 +# define SSL_SECOP_OTHER_NONE 0 +# define SSL_SECOP_OTHER_CIPHER (1 << 16) +# define SSL_SECOP_OTHER_CURVE (2 << 16) +# define SSL_SECOP_OTHER_DH (3 << 16) +# define SSL_SECOP_OTHER_PKEY (4 << 16) +# define SSL_SECOP_OTHER_SIGALG (5 << 16) +# define SSL_SECOP_OTHER_CERT (6 << 16) + +/* Indicated operation refers to peer key or certificate */ +# define SSL_SECOP_PEER 0x1000 + +/* Values for "op" parameter in security callback */ + +/* Called to filter ciphers */ +/* Ciphers client supports */ +# define SSL_SECOP_CIPHER_SUPPORTED (1 | SSL_SECOP_OTHER_CIPHER) +/* Cipher shared by client/server */ +# define SSL_SECOP_CIPHER_SHARED (2 | SSL_SECOP_OTHER_CIPHER) +/* Sanity check of cipher server selects */ +# define SSL_SECOP_CIPHER_CHECK (3 | SSL_SECOP_OTHER_CIPHER) +/* Curves supported by client */ +# define SSL_SECOP_CURVE_SUPPORTED (4 | SSL_SECOP_OTHER_CURVE) +/* Curves shared by client/server */ +# define SSL_SECOP_CURVE_SHARED (5 | SSL_SECOP_OTHER_CURVE) +/* Sanity check of curve server selects */ +# define SSL_SECOP_CURVE_CHECK (6 | SSL_SECOP_OTHER_CURVE) +/* Temporary DH key */ +# define SSL_SECOP_TMP_DH (7 | SSL_SECOP_OTHER_PKEY) +/* SSL/TLS version */ +# define SSL_SECOP_VERSION (9 | SSL_SECOP_OTHER_NONE) +/* Session tickets */ +# define SSL_SECOP_TICKET (10 | SSL_SECOP_OTHER_NONE) +/* Supported signature algorithms sent to peer */ +# define SSL_SECOP_SIGALG_SUPPORTED (11 | SSL_SECOP_OTHER_SIGALG) +/* Shared signature algorithm */ +# define SSL_SECOP_SIGALG_SHARED (12 | SSL_SECOP_OTHER_SIGALG) +/* Sanity check signature algorithm allowed */ +# define SSL_SECOP_SIGALG_CHECK (13 | SSL_SECOP_OTHER_SIGALG) +/* Used to get mask of supported public key signature algorithms */ +# define SSL_SECOP_SIGALG_MASK (14 | SSL_SECOP_OTHER_SIGALG) +/* Use to see if compression is allowed */ +# define SSL_SECOP_COMPRESSION (15 | SSL_SECOP_OTHER_NONE) +/* EE key in certificate */ +# define SSL_SECOP_EE_KEY (16 | SSL_SECOP_OTHER_CERT) +/* CA key in certificate */ +# define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT) +/* CA digest algorithm in certificate */ +# define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT) +/* Peer EE key in certificate */ +# define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER) +/* Peer CA key in certificate */ +# define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER) +/* Peer CA digest algorithm in certificate */ +# define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER) + +void SSL_set_security_level(SSL *s, int level); +__owur int SSL_get_security_level(const SSL *s); +void SSL_set_security_callback(SSL *s, + int (*cb) (const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_get_security_callback(const SSL *s)) (const SSL *s, + const SSL_CTX *ctx, int op, + int bits, int nid, void *other, + void *ex); +void SSL_set0_security_ex_data(SSL *s, void *ex); +__owur void *SSL_get0_security_ex_data(const SSL *s); + +void SSL_CTX_set_security_level(SSL_CTX *ctx, int level); +__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx); +void SSL_CTX_set_security_callback(SSL_CTX *ctx, + int (*cb) (const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx)) (const SSL *s, + const SSL_CTX *ctx, + int op, int bits, + int nid, + void *other, + void *ex); +void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex); +__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx); + +/* OPENSSL_INIT flag 0x010000 reserved for internal use */ +# define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L +# define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L + +# define OPENSSL_INIT_SSL_DEFAULT \ + (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS) + +int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); + +# ifndef OPENSSL_NO_UNIT_TEST +__owur const struct openssl_ssl_test_functions *SSL_test_functions(void); +# endif + +__owur int SSL_free_buffers(SSL *ssl); +__owur int SSL_alloc_buffers(SSL *ssl); + +/* Status codes passed to the decrypt session ticket callback. Some of these + * are for internal use only and are never passed to the callback. */ +typedef int SSL_TICKET_STATUS; + +/* Support for ticket appdata */ +/* fatal error, malloc failure */ +# define SSL_TICKET_FATAL_ERR_MALLOC 0 +/* fatal error, either from parsing or decrypting the ticket */ +# define SSL_TICKET_FATAL_ERR_OTHER 1 +/* No ticket present */ +# define SSL_TICKET_NONE 2 +/* Empty ticket present */ +# define SSL_TICKET_EMPTY 3 +/* the ticket couldn't be decrypted */ +# define SSL_TICKET_NO_DECRYPT 4 +/* a ticket was successfully decrypted */ +# define SSL_TICKET_SUCCESS 5 +/* same as above but the ticket needs to be renewed */ +# define SSL_TICKET_SUCCESS_RENEW 6 + +/* Return codes for the decrypt session ticket callback */ +typedef int SSL_TICKET_RETURN; + +/* An error occurred */ +#define SSL_TICKET_RETURN_ABORT 0 +/* Do not use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE 1 +/* Do not use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE_RENEW 2 +/* Use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE 3 +/* Use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE_RENEW 4 + +typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg); +typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss, + const unsigned char *keyname, + size_t keyname_length, + SSL_TICKET_STATUS status, + void *arg); +int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, + SSL_CTX_generate_session_ticket_fn gen_cb, + SSL_CTX_decrypt_session_ticket_fn dec_cb, + void *arg); +int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len); +int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); + +extern const char SSL_version_str[]; + +typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); + +void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); + + +typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/ssl2.h b/openSSL/win64/include/openssl/ssl2.h new file mode 100644 index 0000000..5321bd2 --- /dev/null +++ b/openSSL/win64/include/openssl/ssl2.h @@ -0,0 +1,24 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL2_H +# define HEADER_SSL2_H + +#ifdef __cplusplus +extern "C" { +#endif + +# define SSL2_VERSION 0x0002 + +# define SSL2_MT_CLIENT_HELLO 1 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/win64/include/openssl/ssl3.h b/openSSL/win64/include/openssl/ssl3.h new file mode 100644 index 0000000..07effba --- /dev/null +++ b/openSSL/win64/include/openssl/ssl3.h @@ -0,0 +1,342 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL3_H +# define HEADER_SSL3_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Signalling cipher suite value from RFC 5746 + * (TLS_EMPTY_RENEGOTIATION_INFO_SCSV) + */ +# define SSL3_CK_SCSV 0x030000FF + +/* + * Signalling cipher suite value from draft-ietf-tls-downgrade-scsv-00 + * (TLS_FALLBACK_SCSV) + */ +# define SSL3_CK_FALLBACK_SCSV 0x03005600 + +# define SSL3_CK_RSA_NULL_MD5 0x03000001 +# define SSL3_CK_RSA_NULL_SHA 0x03000002 +# define SSL3_CK_RSA_RC4_40_MD5 0x03000003 +# define SSL3_CK_RSA_RC4_128_MD5 0x03000004 +# define SSL3_CK_RSA_RC4_128_SHA 0x03000005 +# define SSL3_CK_RSA_RC2_40_MD5 0x03000006 +# define SSL3_CK_RSA_IDEA_128_SHA 0x03000007 +# define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008 +# define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009 +# define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A + +# define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B +# define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C +# define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D +# define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E +# define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F +# define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010 + +# define SSL3_CK_DHE_DSS_DES_40_CBC_SHA 0x03000011 +# define SSL3_CK_EDH_DSS_DES_40_CBC_SHA SSL3_CK_DHE_DSS_DES_40_CBC_SHA +# define SSL3_CK_DHE_DSS_DES_64_CBC_SHA 0x03000012 +# define SSL3_CK_EDH_DSS_DES_64_CBC_SHA SSL3_CK_DHE_DSS_DES_64_CBC_SHA +# define SSL3_CK_DHE_DSS_DES_192_CBC3_SHA 0x03000013 +# define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA SSL3_CK_DHE_DSS_DES_192_CBC3_SHA +# define SSL3_CK_DHE_RSA_DES_40_CBC_SHA 0x03000014 +# define SSL3_CK_EDH_RSA_DES_40_CBC_SHA SSL3_CK_DHE_RSA_DES_40_CBC_SHA +# define SSL3_CK_DHE_RSA_DES_64_CBC_SHA 0x03000015 +# define SSL3_CK_EDH_RSA_DES_64_CBC_SHA SSL3_CK_DHE_RSA_DES_64_CBC_SHA +# define SSL3_CK_DHE_RSA_DES_192_CBC3_SHA 0x03000016 +# define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA SSL3_CK_DHE_RSA_DES_192_CBC3_SHA + +# define SSL3_CK_ADH_RC4_40_MD5 0x03000017 +# define SSL3_CK_ADH_RC4_128_MD5 0x03000018 +# define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019 +# define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A +# define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +# define SSL3_RFC_RSA_NULL_MD5 "TLS_RSA_WITH_NULL_MD5" +# define SSL3_RFC_RSA_NULL_SHA "TLS_RSA_WITH_NULL_SHA" +# define SSL3_RFC_RSA_DES_192_CBC3_SHA "TLS_RSA_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_ADH_DES_192_CBC_SHA "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_RSA_IDEA_128_SHA "TLS_RSA_WITH_IDEA_CBC_SHA" +# define SSL3_RFC_RSA_RC4_128_MD5 "TLS_RSA_WITH_RC4_128_MD5" +# define SSL3_RFC_RSA_RC4_128_SHA "TLS_RSA_WITH_RC4_128_SHA" +# define SSL3_RFC_ADH_RC4_128_MD5 "TLS_DH_anon_WITH_RC4_128_MD5" + +# define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5" +# define SSL3_TXT_RSA_NULL_SHA "NULL-SHA" +# define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5" +# define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5" +# define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA" +# define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5" +# define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA" +# define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA" +# define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA" +# define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA" + +# define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA" +# define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA" +# define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA" +# define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA" +# define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA" +# define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA" + +# define SSL3_TXT_DHE_DSS_DES_40_CBC_SHA "EXP-DHE-DSS-DES-CBC-SHA" +# define SSL3_TXT_DHE_DSS_DES_64_CBC_SHA "DHE-DSS-DES-CBC-SHA" +# define SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA "DHE-DSS-DES-CBC3-SHA" +# define SSL3_TXT_DHE_RSA_DES_40_CBC_SHA "EXP-DHE-RSA-DES-CBC-SHA" +# define SSL3_TXT_DHE_RSA_DES_64_CBC_SHA "DHE-RSA-DES-CBC-SHA" +# define SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA "DHE-RSA-DES-CBC3-SHA" + +/* + * This next block of six "EDH" labels is for backward compatibility with + * older versions of OpenSSL. New code should use the six "DHE" labels above + * instead: + */ +# define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA" +# define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA" +# define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA" +# define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA" +# define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA" +# define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA" + +# define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5" +# define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5" +# define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA" +# define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA" +# define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" + +# define SSL3_SSL_SESSION_ID_LENGTH 32 +# define SSL3_MAX_SSL_SESSION_ID_LENGTH 32 + +# define SSL3_MASTER_SECRET_SIZE 48 +# define SSL3_RANDOM_SIZE 32 +# define SSL3_SESSION_ID_SIZE 32 +# define SSL3_RT_HEADER_LENGTH 5 + +# define SSL3_HM_HEADER_LENGTH 4 + +# ifndef SSL3_ALIGN_PAYLOAD + /* + * Some will argue that this increases memory footprint, but it's not + * actually true. Point is that malloc has to return at least 64-bit aligned + * pointers, meaning that allocating 5 bytes wastes 3 bytes in either case. + * Suggested pre-gaping simply moves these wasted bytes from the end of + * allocated region to its front, but makes data payload aligned, which + * improves performance:-) + */ +# define SSL3_ALIGN_PAYLOAD 8 +# else +# if (SSL3_ALIGN_PAYLOAD&(SSL3_ALIGN_PAYLOAD-1))!=0 +# error "insane SSL3_ALIGN_PAYLOAD" +# undef SSL3_ALIGN_PAYLOAD +# endif +# endif + +/* + * This is the maximum MAC (digest) size used by the SSL library. Currently + * maximum of 20 is used by SHA1, but we reserve for future extension for + * 512-bit hashes. + */ + +# define SSL3_RT_MAX_MD_SIZE 64 + +/* + * Maximum block size used in all ciphersuites. Currently 16 for AES. + */ + +# define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16 + +# define SSL3_RT_MAX_EXTRA (16384) + +/* Maximum plaintext length: defined by SSL/TLS standards */ +# define SSL3_RT_MAX_PLAIN_LENGTH 16384 +/* Maximum compression overhead: defined by SSL/TLS standards */ +# define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024 + +/* + * The standards give a maximum encryption overhead of 1024 bytes. In + * practice the value is lower than this. The overhead is the maximum number + * of padding bytes (256) plus the mac size. + */ +# define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE) +# define SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD 256 + +/* + * OpenSSL currently only uses a padding length of at most one block so the + * send overhead is smaller. + */ + +# define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \ + (SSL_RT_MAX_CIPHER_BLOCK_SIZE + SSL3_RT_MAX_MD_SIZE) + +/* If compression isn't used don't include the compression overhead */ + +# ifdef OPENSSL_NO_COMP +# define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH +# else +# define SSL3_RT_MAX_COMPRESSED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH+SSL3_RT_MAX_COMPRESSED_OVERHEAD) +# endif +# define SSL3_RT_MAX_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_ENCRYPTED_OVERHEAD+SSL3_RT_MAX_COMPRESSED_LENGTH) +# define SSL3_RT_MAX_TLS13_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD) +# define SSL3_RT_MAX_PACKET_SIZE \ + (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH) + +# define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54" +# define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52" + +# define SSL3_VERSION 0x0300 +# define SSL3_VERSION_MAJOR 0x03 +# define SSL3_VERSION_MINOR 0x00 + +# define SSL3_RT_CHANGE_CIPHER_SPEC 20 +# define SSL3_RT_ALERT 21 +# define SSL3_RT_HANDSHAKE 22 +# define SSL3_RT_APPLICATION_DATA 23 +# define DTLS1_RT_HEARTBEAT 24 + +/* Pseudo content types to indicate additional parameters */ +# define TLS1_RT_CRYPTO 0x1000 +# define TLS1_RT_CRYPTO_PREMASTER (TLS1_RT_CRYPTO | 0x1) +# define TLS1_RT_CRYPTO_CLIENT_RANDOM (TLS1_RT_CRYPTO | 0x2) +# define TLS1_RT_CRYPTO_SERVER_RANDOM (TLS1_RT_CRYPTO | 0x3) +# define TLS1_RT_CRYPTO_MASTER (TLS1_RT_CRYPTO | 0x4) + +# define TLS1_RT_CRYPTO_READ 0x0000 +# define TLS1_RT_CRYPTO_WRITE 0x0100 +# define TLS1_RT_CRYPTO_MAC (TLS1_RT_CRYPTO | 0x5) +# define TLS1_RT_CRYPTO_KEY (TLS1_RT_CRYPTO | 0x6) +# define TLS1_RT_CRYPTO_IV (TLS1_RT_CRYPTO | 0x7) +# define TLS1_RT_CRYPTO_FIXED_IV (TLS1_RT_CRYPTO | 0x8) + +/* Pseudo content types for SSL/TLS header info */ +# define SSL3_RT_HEADER 0x100 +# define SSL3_RT_INNER_CONTENT_TYPE 0x101 + +# define SSL3_AL_WARNING 1 +# define SSL3_AL_FATAL 2 + +# define SSL3_AD_CLOSE_NOTIFY 0 +# define SSL3_AD_UNEXPECTED_MESSAGE 10/* fatal */ +# define SSL3_AD_BAD_RECORD_MAC 20/* fatal */ +# define SSL3_AD_DECOMPRESSION_FAILURE 30/* fatal */ +# define SSL3_AD_HANDSHAKE_FAILURE 40/* fatal */ +# define SSL3_AD_NO_CERTIFICATE 41 +# define SSL3_AD_BAD_CERTIFICATE 42 +# define SSL3_AD_UNSUPPORTED_CERTIFICATE 43 +# define SSL3_AD_CERTIFICATE_REVOKED 44 +# define SSL3_AD_CERTIFICATE_EXPIRED 45 +# define SSL3_AD_CERTIFICATE_UNKNOWN 46 +# define SSL3_AD_ILLEGAL_PARAMETER 47/* fatal */ + +# define TLS1_HB_REQUEST 1 +# define TLS1_HB_RESPONSE 2 + + +# define SSL3_CT_RSA_SIGN 1 +# define SSL3_CT_DSS_SIGN 2 +# define SSL3_CT_RSA_FIXED_DH 3 +# define SSL3_CT_DSS_FIXED_DH 4 +# define SSL3_CT_RSA_EPHEMERAL_DH 5 +# define SSL3_CT_DSS_EPHEMERAL_DH 6 +# define SSL3_CT_FORTEZZA_DMS 20 +/* + * SSL3_CT_NUMBER is used to size arrays and it must be large enough to + * contain all of the cert types defined for *either* SSLv3 and TLSv1. + */ +# define SSL3_CT_NUMBER 10 + +# if defined(TLS_CT_NUMBER) +# if TLS_CT_NUMBER != SSL3_CT_NUMBER +# error "SSL/TLS CT_NUMBER values do not match" +# endif +# endif + +/* No longer used as of OpenSSL 1.1.1 */ +# define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 + +/* Removed from OpenSSL 1.1.0 */ +# define TLS1_FLAGS_TLS_PADDING_BUG 0x0 + +# define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 + +/* Set if we encrypt then mac instead of usual mac then encrypt */ +# define TLS1_FLAGS_ENCRYPT_THEN_MAC_READ 0x0100 +# define TLS1_FLAGS_ENCRYPT_THEN_MAC TLS1_FLAGS_ENCRYPT_THEN_MAC_READ + +/* Set if extended master secret extension received from peer */ +# define TLS1_FLAGS_RECEIVED_EXTMS 0x0200 + +# define TLS1_FLAGS_ENCRYPT_THEN_MAC_WRITE 0x0400 + +# define TLS1_FLAGS_STATELESS 0x0800 + +/* Set if extended master secret extension required on renegotiation */ +# define TLS1_FLAGS_REQUIRED_EXTMS 0x1000 + +# define SSL3_MT_HELLO_REQUEST 0 +# define SSL3_MT_CLIENT_HELLO 1 +# define SSL3_MT_SERVER_HELLO 2 +# define SSL3_MT_NEWSESSION_TICKET 4 +# define SSL3_MT_END_OF_EARLY_DATA 5 +# define SSL3_MT_ENCRYPTED_EXTENSIONS 8 +# define SSL3_MT_CERTIFICATE 11 +# define SSL3_MT_SERVER_KEY_EXCHANGE 12 +# define SSL3_MT_CERTIFICATE_REQUEST 13 +# define SSL3_MT_SERVER_DONE 14 +# define SSL3_MT_CERTIFICATE_VERIFY 15 +# define SSL3_MT_CLIENT_KEY_EXCHANGE 16 +# define SSL3_MT_FINISHED 20 +# define SSL3_MT_CERTIFICATE_URL 21 +# define SSL3_MT_CERTIFICATE_STATUS 22 +# define SSL3_MT_SUPPLEMENTAL_DATA 23 +# define SSL3_MT_KEY_UPDATE 24 +# ifndef OPENSSL_NO_NEXTPROTONEG +# define SSL3_MT_NEXT_PROTO 67 +# endif +# define SSL3_MT_MESSAGE_HASH 254 +# define DTLS1_MT_HELLO_VERIFY_REQUEST 3 + +/* Dummy message type for handling CCS like a normal handshake message */ +# define SSL3_MT_CHANGE_CIPHER_SPEC 0x0101 + +# define SSL3_MT_CCS 1 + +/* These are used when changing over to a new cipher */ +# define SSL3_CC_READ 0x001 +# define SSL3_CC_WRITE 0x002 +# define SSL3_CC_CLIENT 0x010 +# define SSL3_CC_SERVER 0x020 +# define SSL3_CC_EARLY 0x040 +# define SSL3_CC_HANDSHAKE 0x080 +# define SSL3_CC_APPLICATION 0x100 +# define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT|SSL3_CC_WRITE) +# define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER|SSL3_CC_READ) +# define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT|SSL3_CC_READ) +# define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER|SSL3_CC_WRITE) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/win64/include/openssl/sslerr.h b/openSSL/win64/include/openssl/sslerr.h new file mode 100644 index 0000000..701d61c --- /dev/null +++ b/openSSL/win64/include/openssl/sslerr.h @@ -0,0 +1,776 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSLERR_H +# define HEADER_SSLERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_SSL_strings(void); + +/* + * SSL function codes. + */ +# define SSL_F_ADD_CLIENT_KEY_SHARE_EXT 438 +# define SSL_F_ADD_KEY_SHARE 512 +# define SSL_F_BYTES_TO_CIPHER_LIST 519 +# define SSL_F_CHECK_SUITEB_CIPHER_LIST 331 +# define SSL_F_CIPHERSUITE_CB 622 +# define SSL_F_CONSTRUCT_CA_NAMES 552 +# define SSL_F_CONSTRUCT_KEY_EXCHANGE_TBS 553 +# define SSL_F_CONSTRUCT_STATEFUL_TICKET 636 +# define SSL_F_CONSTRUCT_STATELESS_TICKET 637 +# define SSL_F_CREATE_SYNTHETIC_MESSAGE_HASH 539 +# define SSL_F_CREATE_TICKET_PREQUEL 638 +# define SSL_F_CT_MOVE_SCTS 345 +# define SSL_F_CT_STRICT 349 +# define SSL_F_CUSTOM_EXT_ADD 554 +# define SSL_F_CUSTOM_EXT_PARSE 555 +# define SSL_F_D2I_SSL_SESSION 103 +# define SSL_F_DANE_CTX_ENABLE 347 +# define SSL_F_DANE_MTYPE_SET 393 +# define SSL_F_DANE_TLSA_ADD 394 +# define SSL_F_DERIVE_SECRET_KEY_AND_IV 514 +# define SSL_F_DO_DTLS1_WRITE 245 +# define SSL_F_DO_SSL3_WRITE 104 +# define SSL_F_DTLS1_BUFFER_RECORD 247 +# define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 318 +# define SSL_F_DTLS1_HEARTBEAT 305 +# define SSL_F_DTLS1_HM_FRAGMENT_NEW 623 +# define SSL_F_DTLS1_PREPROCESS_FRAGMENT 288 +# define SSL_F_DTLS1_PROCESS_BUFFERED_RECORDS 424 +# define SSL_F_DTLS1_PROCESS_RECORD 257 +# define SSL_F_DTLS1_READ_BYTES 258 +# define SSL_F_DTLS1_READ_FAILED 339 +# define SSL_F_DTLS1_RETRANSMIT_MESSAGE 390 +# define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 268 +# define SSL_F_DTLS1_WRITE_BYTES 545 +# define SSL_F_DTLSV1_LISTEN 350 +# define SSL_F_DTLS_CONSTRUCT_CHANGE_CIPHER_SPEC 371 +# define SSL_F_DTLS_CONSTRUCT_HELLO_VERIFY_REQUEST 385 +# define SSL_F_DTLS_GET_REASSEMBLED_MESSAGE 370 +# define SSL_F_DTLS_PROCESS_HELLO_VERIFY 386 +# define SSL_F_DTLS_RECORD_LAYER_NEW 635 +# define SSL_F_DTLS_WAIT_FOR_DRY 592 +# define SSL_F_EARLY_DATA_COUNT_OK 532 +# define SSL_F_FINAL_EARLY_DATA 556 +# define SSL_F_FINAL_EC_PT_FORMATS 485 +# define SSL_F_FINAL_EMS 486 +# define SSL_F_FINAL_KEY_SHARE 503 +# define SSL_F_FINAL_MAXFRAGMENTLEN 557 +# define SSL_F_FINAL_PSK 639 +# define SSL_F_FINAL_RENEGOTIATE 483 +# define SSL_F_FINAL_SERVER_NAME 558 +# define SSL_F_FINAL_SIG_ALGS 497 +# define SSL_F_GET_CERT_VERIFY_TBS_DATA 588 +# define SSL_F_NSS_KEYLOG_INT 500 +# define SSL_F_OPENSSL_INIT_SSL 342 +# define SSL_F_OSSL_STATEM_CLIENT13_READ_TRANSITION 436 +# define SSL_F_OSSL_STATEM_CLIENT13_WRITE_TRANSITION 598 +# define SSL_F_OSSL_STATEM_CLIENT_CONSTRUCT_MESSAGE 430 +# define SSL_F_OSSL_STATEM_CLIENT_POST_PROCESS_MESSAGE 593 +# define SSL_F_OSSL_STATEM_CLIENT_PROCESS_MESSAGE 594 +# define SSL_F_OSSL_STATEM_CLIENT_READ_TRANSITION 417 +# define SSL_F_OSSL_STATEM_CLIENT_WRITE_TRANSITION 599 +# define SSL_F_OSSL_STATEM_SERVER13_READ_TRANSITION 437 +# define SSL_F_OSSL_STATEM_SERVER13_WRITE_TRANSITION 600 +# define SSL_F_OSSL_STATEM_SERVER_CONSTRUCT_MESSAGE 431 +# define SSL_F_OSSL_STATEM_SERVER_POST_PROCESS_MESSAGE 601 +# define SSL_F_OSSL_STATEM_SERVER_POST_WORK 602 +# define SSL_F_OSSL_STATEM_SERVER_PRE_WORK 640 +# define SSL_F_OSSL_STATEM_SERVER_PROCESS_MESSAGE 603 +# define SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION 418 +# define SSL_F_OSSL_STATEM_SERVER_WRITE_TRANSITION 604 +# define SSL_F_PARSE_CA_NAMES 541 +# define SSL_F_PITEM_NEW 624 +# define SSL_F_PQUEUE_NEW 625 +# define SSL_F_PROCESS_KEY_SHARE_EXT 439 +# define SSL_F_READ_STATE_MACHINE 352 +# define SSL_F_SET_CLIENT_CIPHERSUITE 540 +# define SSL_F_SRP_GENERATE_CLIENT_MASTER_SECRET 595 +# define SSL_F_SRP_GENERATE_SERVER_MASTER_SECRET 589 +# define SSL_F_SRP_VERIFY_SERVER_PARAM 596 +# define SSL_F_SSL3_CHANGE_CIPHER_STATE 129 +# define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130 +# define SSL_F_SSL3_CTRL 213 +# define SSL_F_SSL3_CTX_CTRL 133 +# define SSL_F_SSL3_DIGEST_CACHED_RECORDS 293 +# define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 292 +# define SSL_F_SSL3_ENC 608 +# define SSL_F_SSL3_FINAL_FINISH_MAC 285 +# define SSL_F_SSL3_FINISH_MAC 587 +# define SSL_F_SSL3_GENERATE_KEY_BLOCK 238 +# define SSL_F_SSL3_GENERATE_MASTER_SECRET 388 +# define SSL_F_SSL3_GET_RECORD 143 +# define SSL_F_SSL3_INIT_FINISHED_MAC 397 +# define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 +# define SSL_F_SSL3_READ_BYTES 148 +# define SSL_F_SSL3_READ_N 149 +# define SSL_F_SSL3_SETUP_KEY_BLOCK 157 +# define SSL_F_SSL3_SETUP_READ_BUFFER 156 +# define SSL_F_SSL3_SETUP_WRITE_BUFFER 291 +# define SSL_F_SSL3_WRITE_BYTES 158 +# define SSL_F_SSL3_WRITE_PENDING 159 +# define SSL_F_SSL_ADD_CERT_CHAIN 316 +# define SSL_F_SSL_ADD_CERT_TO_BUF 319 +# define SSL_F_SSL_ADD_CERT_TO_WPACKET 493 +# define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 298 +# define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 277 +# define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 307 +# define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 215 +# define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 216 +# define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 299 +# define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 278 +# define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 308 +# define SSL_F_SSL_BAD_METHOD 160 +# define SSL_F_SSL_BUILD_CERT_CHAIN 332 +# define SSL_F_SSL_BYTES_TO_CIPHER_LIST 161 +# define SSL_F_SSL_CACHE_CIPHERLIST 520 +# define SSL_F_SSL_CERT_ADD0_CHAIN_CERT 346 +# define SSL_F_SSL_CERT_DUP 221 +# define SSL_F_SSL_CERT_NEW 162 +# define SSL_F_SSL_CERT_SET0_CHAIN 340 +# define SSL_F_SSL_CHECK_PRIVATE_KEY 163 +# define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 280 +# define SSL_F_SSL_CHECK_SRP_EXT_CLIENTHELLO 606 +# define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 279 +# define SSL_F_SSL_CHOOSE_CLIENT_VERSION 607 +# define SSL_F_SSL_CIPHER_DESCRIPTION 626 +# define SSL_F_SSL_CIPHER_LIST_TO_BYTES 425 +# define SSL_F_SSL_CIPHER_PROCESS_RULESTR 230 +# define SSL_F_SSL_CIPHER_STRENGTH_SORT 231 +# define SSL_F_SSL_CLEAR 164 +# define SSL_F_SSL_CLIENT_HELLO_GET1_EXTENSIONS_PRESENT 627 +# define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 165 +# define SSL_F_SSL_CONF_CMD 334 +# define SSL_F_SSL_CREATE_CIPHER_LIST 166 +# define SSL_F_SSL_CTRL 232 +# define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168 +# define SSL_F_SSL_CTX_ENABLE_CT 398 +# define SSL_F_SSL_CTX_MAKE_PROFILES 309 +# define SSL_F_SSL_CTX_NEW 169 +# define SSL_F_SSL_CTX_SET_ALPN_PROTOS 343 +# define SSL_F_SSL_CTX_SET_CIPHER_LIST 269 +# define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 290 +# define SSL_F_SSL_CTX_SET_CT_VALIDATION_CALLBACK 396 +# define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219 +# define SSL_F_SSL_CTX_SET_SSL_VERSION 170 +# define SSL_F_SSL_CTX_SET_TLSEXT_MAX_FRAGMENT_LENGTH 551 +# define SSL_F_SSL_CTX_USE_CERTIFICATE 171 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 173 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY 174 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176 +# define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 272 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179 +# define SSL_F_SSL_CTX_USE_SERVERINFO 336 +# define SSL_F_SSL_CTX_USE_SERVERINFO_EX 543 +# define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 337 +# define SSL_F_SSL_DANE_DUP 403 +# define SSL_F_SSL_DANE_ENABLE 395 +# define SSL_F_SSL_DERIVE 590 +# define SSL_F_SSL_DO_CONFIG 391 +# define SSL_F_SSL_DO_HANDSHAKE 180 +# define SSL_F_SSL_DUP_CA_LIST 408 +# define SSL_F_SSL_ENABLE_CT 402 +# define SSL_F_SSL_GENERATE_PKEY_GROUP 559 +# define SSL_F_SSL_GENERATE_SESSION_ID 547 +# define SSL_F_SSL_GET_NEW_SESSION 181 +# define SSL_F_SSL_GET_PREV_SESSION 217 +# define SSL_F_SSL_GET_SERVER_CERT_INDEX 322 +# define SSL_F_SSL_GET_SIGN_PKEY 183 +# define SSL_F_SSL_HANDSHAKE_HASH 560 +# define SSL_F_SSL_INIT_WBIO_BUFFER 184 +# define SSL_F_SSL_KEY_UPDATE 515 +# define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 +# define SSL_F_SSL_LOG_MASTER_SECRET 498 +# define SSL_F_SSL_LOG_RSA_CLIENT_KEY_EXCHANGE 499 +# define SSL_F_SSL_MODULE_INIT 392 +# define SSL_F_SSL_NEW 186 +# define SSL_F_SSL_NEXT_PROTO_VALIDATE 565 +# define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 300 +# define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 302 +# define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 310 +# define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 301 +# define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 303 +# define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 311 +# define SSL_F_SSL_PEEK 270 +# define SSL_F_SSL_PEEK_EX 432 +# define SSL_F_SSL_PEEK_INTERNAL 522 +# define SSL_F_SSL_READ 223 +# define SSL_F_SSL_READ_EARLY_DATA 529 +# define SSL_F_SSL_READ_EX 434 +# define SSL_F_SSL_READ_INTERNAL 523 +# define SSL_F_SSL_RENEGOTIATE 516 +# define SSL_F_SSL_RENEGOTIATE_ABBREVIATED 546 +# define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 320 +# define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 321 +# define SSL_F_SSL_SESSION_DUP 348 +# define SSL_F_SSL_SESSION_NEW 189 +# define SSL_F_SSL_SESSION_PRINT_FP 190 +# define SSL_F_SSL_SESSION_SET1_ID 423 +# define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 312 +# define SSL_F_SSL_SET_ALPN_PROTOS 344 +# define SSL_F_SSL_SET_CERT 191 +# define SSL_F_SSL_SET_CERT_AND_KEY 621 +# define SSL_F_SSL_SET_CIPHER_LIST 271 +# define SSL_F_SSL_SET_CT_VALIDATION_CALLBACK 399 +# define SSL_F_SSL_SET_FD 192 +# define SSL_F_SSL_SET_PKEY 193 +# define SSL_F_SSL_SET_RFD 194 +# define SSL_F_SSL_SET_SESSION 195 +# define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218 +# define SSL_F_SSL_SET_SESSION_TICKET_EXT 294 +# define SSL_F_SSL_SET_TLSEXT_MAX_FRAGMENT_LENGTH 550 +# define SSL_F_SSL_SET_WFD 196 +# define SSL_F_SSL_SHUTDOWN 224 +# define SSL_F_SSL_SRP_CTX_INIT 313 +# define SSL_F_SSL_START_ASYNC_JOB 389 +# define SSL_F_SSL_UNDEFINED_FUNCTION 197 +# define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 244 +# define SSL_F_SSL_USE_CERTIFICATE 198 +# define SSL_F_SSL_USE_CERTIFICATE_ASN1 199 +# define SSL_F_SSL_USE_CERTIFICATE_FILE 200 +# define SSL_F_SSL_USE_PRIVATEKEY 201 +# define SSL_F_SSL_USE_PRIVATEKEY_ASN1 202 +# define SSL_F_SSL_USE_PRIVATEKEY_FILE 203 +# define SSL_F_SSL_USE_PSK_IDENTITY_HINT 273 +# define SSL_F_SSL_USE_RSAPRIVATEKEY 204 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 205 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 206 +# define SSL_F_SSL_VALIDATE_CT 400 +# define SSL_F_SSL_VERIFY_CERT_CHAIN 207 +# define SSL_F_SSL_VERIFY_CLIENT_POST_HANDSHAKE 616 +# define SSL_F_SSL_WRITE 208 +# define SSL_F_SSL_WRITE_EARLY_DATA 526 +# define SSL_F_SSL_WRITE_EARLY_FINISH 527 +# define SSL_F_SSL_WRITE_EX 433 +# define SSL_F_SSL_WRITE_INTERNAL 524 +# define SSL_F_STATE_MACHINE 353 +# define SSL_F_TLS12_CHECK_PEER_SIGALG 333 +# define SSL_F_TLS12_COPY_SIGALGS 533 +# define SSL_F_TLS13_CHANGE_CIPHER_STATE 440 +# define SSL_F_TLS13_ENC 609 +# define SSL_F_TLS13_FINAL_FINISH_MAC 605 +# define SSL_F_TLS13_GENERATE_SECRET 591 +# define SSL_F_TLS13_HKDF_EXPAND 561 +# define SSL_F_TLS13_RESTORE_HANDSHAKE_DIGEST_FOR_PHA 617 +# define SSL_F_TLS13_SAVE_HANDSHAKE_DIGEST_FOR_PHA 618 +# define SSL_F_TLS13_SETUP_KEY_BLOCK 441 +# define SSL_F_TLS1_CHANGE_CIPHER_STATE 209 +# define SSL_F_TLS1_CHECK_DUPLICATE_EXTENSIONS 341 +# define SSL_F_TLS1_ENC 401 +# define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 314 +# define SSL_F_TLS1_GET_CURVELIST 338 +# define SSL_F_TLS1_PRF 284 +# define SSL_F_TLS1_SAVE_U16 628 +# define SSL_F_TLS1_SETUP_KEY_BLOCK 211 +# define SSL_F_TLS1_SET_GROUPS 629 +# define SSL_F_TLS1_SET_RAW_SIGALGS 630 +# define SSL_F_TLS1_SET_SERVER_SIGALGS 335 +# define SSL_F_TLS1_SET_SHARED_SIGALGS 631 +# define SSL_F_TLS1_SET_SIGALGS 632 +# define SSL_F_TLS_CHOOSE_SIGALG 513 +# define SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK 354 +# define SSL_F_TLS_COLLECT_EXTENSIONS 435 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_AUTHORITIES 542 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST 372 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS 429 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS_BODY 494 +# define SSL_F_TLS_CONSTRUCT_CERT_VERIFY 496 +# define SSL_F_TLS_CONSTRUCT_CHANGE_CIPHER_SPEC 427 +# define SSL_F_TLS_CONSTRUCT_CKE_DHE 404 +# define SSL_F_TLS_CONSTRUCT_CKE_ECDHE 405 +# define SSL_F_TLS_CONSTRUCT_CKE_GOST 406 +# define SSL_F_TLS_CONSTRUCT_CKE_PSK_PREAMBLE 407 +# define SSL_F_TLS_CONSTRUCT_CKE_RSA 409 +# define SSL_F_TLS_CONSTRUCT_CKE_SRP 410 +# define SSL_F_TLS_CONSTRUCT_CLIENT_CERTIFICATE 484 +# define SSL_F_TLS_CONSTRUCT_CLIENT_HELLO 487 +# define SSL_F_TLS_CONSTRUCT_CLIENT_KEY_EXCHANGE 488 +# define SSL_F_TLS_CONSTRUCT_CLIENT_VERIFY 489 +# define SSL_F_TLS_CONSTRUCT_CTOS_ALPN 466 +# define SSL_F_TLS_CONSTRUCT_CTOS_CERTIFICATE 355 +# define SSL_F_TLS_CONSTRUCT_CTOS_COOKIE 535 +# define SSL_F_TLS_CONSTRUCT_CTOS_EARLY_DATA 530 +# define SSL_F_TLS_CONSTRUCT_CTOS_EC_PT_FORMATS 467 +# define SSL_F_TLS_CONSTRUCT_CTOS_EMS 468 +# define SSL_F_TLS_CONSTRUCT_CTOS_ETM 469 +# define SSL_F_TLS_CONSTRUCT_CTOS_HELLO 356 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_EXCHANGE 357 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_SHARE 470 +# define SSL_F_TLS_CONSTRUCT_CTOS_MAXFRAGMENTLEN 549 +# define SSL_F_TLS_CONSTRUCT_CTOS_NPN 471 +# define SSL_F_TLS_CONSTRUCT_CTOS_PADDING 472 +# define SSL_F_TLS_CONSTRUCT_CTOS_POST_HANDSHAKE_AUTH 619 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK 501 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK_KEX_MODES 509 +# define SSL_F_TLS_CONSTRUCT_CTOS_RENEGOTIATE 473 +# define SSL_F_TLS_CONSTRUCT_CTOS_SCT 474 +# define SSL_F_TLS_CONSTRUCT_CTOS_SERVER_NAME 475 +# define SSL_F_TLS_CONSTRUCT_CTOS_SESSION_TICKET 476 +# define SSL_F_TLS_CONSTRUCT_CTOS_SIG_ALGS 477 +# define SSL_F_TLS_CONSTRUCT_CTOS_SRP 478 +# define SSL_F_TLS_CONSTRUCT_CTOS_STATUS_REQUEST 479 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_GROUPS 480 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_VERSIONS 481 +# define SSL_F_TLS_CONSTRUCT_CTOS_USE_SRTP 482 +# define SSL_F_TLS_CONSTRUCT_CTOS_VERIFY 358 +# define SSL_F_TLS_CONSTRUCT_ENCRYPTED_EXTENSIONS 443 +# define SSL_F_TLS_CONSTRUCT_END_OF_EARLY_DATA 536 +# define SSL_F_TLS_CONSTRUCT_EXTENSIONS 447 +# define SSL_F_TLS_CONSTRUCT_FINISHED 359 +# define SSL_F_TLS_CONSTRUCT_HELLO_REQUEST 373 +# define SSL_F_TLS_CONSTRUCT_HELLO_RETRY_REQUEST 510 +# define SSL_F_TLS_CONSTRUCT_KEY_UPDATE 517 +# define SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET 428 +# define SSL_F_TLS_CONSTRUCT_NEXT_PROTO 426 +# define SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE 490 +# define SSL_F_TLS_CONSTRUCT_SERVER_HELLO 491 +# define SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE 492 +# define SSL_F_TLS_CONSTRUCT_STOC_ALPN 451 +# define SSL_F_TLS_CONSTRUCT_STOC_CERTIFICATE 374 +# define SSL_F_TLS_CONSTRUCT_STOC_COOKIE 613 +# define SSL_F_TLS_CONSTRUCT_STOC_CRYPTOPRO_BUG 452 +# define SSL_F_TLS_CONSTRUCT_STOC_DONE 375 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA 531 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA_INFO 525 +# define SSL_F_TLS_CONSTRUCT_STOC_EC_PT_FORMATS 453 +# define SSL_F_TLS_CONSTRUCT_STOC_EMS 454 +# define SSL_F_TLS_CONSTRUCT_STOC_ETM 455 +# define SSL_F_TLS_CONSTRUCT_STOC_HELLO 376 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_EXCHANGE 377 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_SHARE 456 +# define SSL_F_TLS_CONSTRUCT_STOC_MAXFRAGMENTLEN 548 +# define SSL_F_TLS_CONSTRUCT_STOC_NEXT_PROTO_NEG 457 +# define SSL_F_TLS_CONSTRUCT_STOC_PSK 504 +# define SSL_F_TLS_CONSTRUCT_STOC_RENEGOTIATE 458 +# define SSL_F_TLS_CONSTRUCT_STOC_SERVER_NAME 459 +# define SSL_F_TLS_CONSTRUCT_STOC_SESSION_TICKET 460 +# define SSL_F_TLS_CONSTRUCT_STOC_STATUS_REQUEST 461 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_GROUPS 544 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_VERSIONS 611 +# define SSL_F_TLS_CONSTRUCT_STOC_USE_SRTP 462 +# define SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO 521 +# define SSL_F_TLS_FINISH_HANDSHAKE 597 +# define SSL_F_TLS_GET_MESSAGE_BODY 351 +# define SSL_F_TLS_GET_MESSAGE_HEADER 387 +# define SSL_F_TLS_HANDLE_ALPN 562 +# define SSL_F_TLS_HANDLE_STATUS_REQUEST 563 +# define SSL_F_TLS_PARSE_CERTIFICATE_AUTHORITIES 566 +# define SSL_F_TLS_PARSE_CLIENTHELLO_TLSEXT 449 +# define SSL_F_TLS_PARSE_CTOS_ALPN 567 +# define SSL_F_TLS_PARSE_CTOS_COOKIE 614 +# define SSL_F_TLS_PARSE_CTOS_EARLY_DATA 568 +# define SSL_F_TLS_PARSE_CTOS_EC_PT_FORMATS 569 +# define SSL_F_TLS_PARSE_CTOS_EMS 570 +# define SSL_F_TLS_PARSE_CTOS_KEY_SHARE 463 +# define SSL_F_TLS_PARSE_CTOS_MAXFRAGMENTLEN 571 +# define SSL_F_TLS_PARSE_CTOS_POST_HANDSHAKE_AUTH 620 +# define SSL_F_TLS_PARSE_CTOS_PSK 505 +# define SSL_F_TLS_PARSE_CTOS_PSK_KEX_MODES 572 +# define SSL_F_TLS_PARSE_CTOS_RENEGOTIATE 464 +# define SSL_F_TLS_PARSE_CTOS_SERVER_NAME 573 +# define SSL_F_TLS_PARSE_CTOS_SESSION_TICKET 574 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS 575 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS_CERT 615 +# define SSL_F_TLS_PARSE_CTOS_SRP 576 +# define SSL_F_TLS_PARSE_CTOS_STATUS_REQUEST 577 +# define SSL_F_TLS_PARSE_CTOS_SUPPORTED_GROUPS 578 +# define SSL_F_TLS_PARSE_CTOS_USE_SRTP 465 +# define SSL_F_TLS_PARSE_STOC_ALPN 579 +# define SSL_F_TLS_PARSE_STOC_COOKIE 534 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA 538 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA_INFO 528 +# define SSL_F_TLS_PARSE_STOC_EC_PT_FORMATS 580 +# define SSL_F_TLS_PARSE_STOC_KEY_SHARE 445 +# define SSL_F_TLS_PARSE_STOC_MAXFRAGMENTLEN 581 +# define SSL_F_TLS_PARSE_STOC_NPN 582 +# define SSL_F_TLS_PARSE_STOC_PSK 502 +# define SSL_F_TLS_PARSE_STOC_RENEGOTIATE 448 +# define SSL_F_TLS_PARSE_STOC_SCT 564 +# define SSL_F_TLS_PARSE_STOC_SERVER_NAME 583 +# define SSL_F_TLS_PARSE_STOC_SESSION_TICKET 584 +# define SSL_F_TLS_PARSE_STOC_STATUS_REQUEST 585 +# define SSL_F_TLS_PARSE_STOC_SUPPORTED_VERSIONS 612 +# define SSL_F_TLS_PARSE_STOC_USE_SRTP 446 +# define SSL_F_TLS_POST_PROCESS_CLIENT_HELLO 378 +# define SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE 384 +# define SSL_F_TLS_PREPARE_CLIENT_CERTIFICATE 360 +# define SSL_F_TLS_PROCESS_AS_HELLO_RETRY_REQUEST 610 +# define SSL_F_TLS_PROCESS_CERTIFICATE_REQUEST 361 +# define SSL_F_TLS_PROCESS_CERT_STATUS 362 +# define SSL_F_TLS_PROCESS_CERT_STATUS_BODY 495 +# define SSL_F_TLS_PROCESS_CERT_VERIFY 379 +# define SSL_F_TLS_PROCESS_CHANGE_CIPHER_SPEC 363 +# define SSL_F_TLS_PROCESS_CKE_DHE 411 +# define SSL_F_TLS_PROCESS_CKE_ECDHE 412 +# define SSL_F_TLS_PROCESS_CKE_GOST 413 +# define SSL_F_TLS_PROCESS_CKE_PSK_PREAMBLE 414 +# define SSL_F_TLS_PROCESS_CKE_RSA 415 +# define SSL_F_TLS_PROCESS_CKE_SRP 416 +# define SSL_F_TLS_PROCESS_CLIENT_CERTIFICATE 380 +# define SSL_F_TLS_PROCESS_CLIENT_HELLO 381 +# define SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE 382 +# define SSL_F_TLS_PROCESS_ENCRYPTED_EXTENSIONS 444 +# define SSL_F_TLS_PROCESS_END_OF_EARLY_DATA 537 +# define SSL_F_TLS_PROCESS_FINISHED 364 +# define SSL_F_TLS_PROCESS_HELLO_REQ 507 +# define SSL_F_TLS_PROCESS_HELLO_RETRY_REQUEST 511 +# define SSL_F_TLS_PROCESS_INITIAL_SERVER_FLIGHT 442 +# define SSL_F_TLS_PROCESS_KEY_EXCHANGE 365 +# define SSL_F_TLS_PROCESS_KEY_UPDATE 518 +# define SSL_F_TLS_PROCESS_NEW_SESSION_TICKET 366 +# define SSL_F_TLS_PROCESS_NEXT_PROTO 383 +# define SSL_F_TLS_PROCESS_SERVER_CERTIFICATE 367 +# define SSL_F_TLS_PROCESS_SERVER_DONE 368 +# define SSL_F_TLS_PROCESS_SERVER_HELLO 369 +# define SSL_F_TLS_PROCESS_SKE_DHE 419 +# define SSL_F_TLS_PROCESS_SKE_ECDHE 420 +# define SSL_F_TLS_PROCESS_SKE_PSK_PREAMBLE 421 +# define SSL_F_TLS_PROCESS_SKE_SRP 422 +# define SSL_F_TLS_PSK_DO_BINDER 506 +# define SSL_F_TLS_SCAN_CLIENTHELLO_TLSEXT 450 +# define SSL_F_TLS_SETUP_HANDSHAKE 508 +# define SSL_F_USE_CERTIFICATE_CHAIN_FILE 220 +# define SSL_F_WPACKET_INTERN_INIT_LEN 633 +# define SSL_F_WPACKET_START_SUB_PACKET_LEN__ 634 +# define SSL_F_WRITE_STATE_MACHINE 586 + +/* + * SSL reason codes. + */ +# define SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY 291 +# define SSL_R_APP_DATA_IN_HANDSHAKE 100 +# define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 +# define SSL_R_AT_LEAST_TLS_1_0_NEEDED_IN_FIPS_MODE 143 +# define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE 158 +# define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +# define SSL_R_BAD_CIPHER 186 +# define SSL_R_BAD_DATA 390 +# define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 +# define SSL_R_BAD_DECOMPRESSION 107 +# define SSL_R_BAD_DH_VALUE 102 +# define SSL_R_BAD_DIGEST_LENGTH 111 +# define SSL_R_BAD_EARLY_DATA 233 +# define SSL_R_BAD_ECC_CERT 304 +# define SSL_R_BAD_ECPOINT 306 +# define SSL_R_BAD_EXTENSION 110 +# define SSL_R_BAD_HANDSHAKE_LENGTH 332 +# define SSL_R_BAD_HANDSHAKE_STATE 236 +# define SSL_R_BAD_HELLO_REQUEST 105 +# define SSL_R_BAD_HRR_VERSION 263 +# define SSL_R_BAD_KEY_SHARE 108 +# define SSL_R_BAD_KEY_UPDATE 122 +# define SSL_R_BAD_LEGACY_VERSION 292 +# define SSL_R_BAD_LENGTH 271 +# define SSL_R_BAD_PACKET 240 +# define SSL_R_BAD_PACKET_LENGTH 115 +# define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +# define SSL_R_BAD_PSK 219 +# define SSL_R_BAD_PSK_IDENTITY 114 +# define SSL_R_BAD_RECORD_TYPE 443 +# define SSL_R_BAD_RSA_ENCRYPT 119 +# define SSL_R_BAD_SIGNATURE 123 +# define SSL_R_BAD_SRP_A_LENGTH 347 +# define SSL_R_BAD_SRP_PARAMETERS 371 +# define SSL_R_BAD_SRTP_MKI_VALUE 352 +# define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 +# define SSL_R_BAD_SSL_FILETYPE 124 +# define SSL_R_BAD_VALUE 384 +# define SSL_R_BAD_WRITE_RETRY 127 +# define SSL_R_BINDER_DOES_NOT_VERIFY 253 +# define SSL_R_BIO_NOT_SET 128 +# define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 +# define SSL_R_BN_LIB 130 +# define SSL_R_CALLBACK_FAILED 234 +# define SSL_R_CANNOT_CHANGE_CIPHER 109 +# define SSL_R_CA_DN_LENGTH_MISMATCH 131 +# define SSL_R_CA_KEY_TOO_SMALL 397 +# define SSL_R_CA_MD_TOO_WEAK 398 +# define SSL_R_CCS_RECEIVED_EARLY 133 +# define SSL_R_CERTIFICATE_VERIFY_FAILED 134 +# define SSL_R_CERT_CB_ERROR 377 +# define SSL_R_CERT_LENGTH_MISMATCH 135 +# define SSL_R_CIPHERSUITE_DIGEST_HAS_CHANGED 218 +# define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 +# define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138 +# define SSL_R_CLIENTHELLO_TLSEXT 226 +# define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 +# define SSL_R_COMPRESSION_DISABLED 343 +# define SSL_R_COMPRESSION_FAILURE 141 +# define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 +# define SSL_R_COMPRESSION_LIBRARY_ERROR 142 +# define SSL_R_CONNECTION_TYPE_NOT_SET 144 +# define SSL_R_CONTEXT_NOT_DANE_ENABLED 167 +# define SSL_R_COOKIE_GEN_CALLBACK_FAILURE 400 +# define SSL_R_COOKIE_MISMATCH 308 +# define SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED 206 +# define SSL_R_DANE_ALREADY_ENABLED 172 +# define SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL 173 +# define SSL_R_DANE_NOT_ENABLED 175 +# define SSL_R_DANE_TLSA_BAD_CERTIFICATE 180 +# define SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE 184 +# define SSL_R_DANE_TLSA_BAD_DATA_LENGTH 189 +# define SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH 192 +# define SSL_R_DANE_TLSA_BAD_MATCHING_TYPE 200 +# define SSL_R_DANE_TLSA_BAD_PUBLIC_KEY 201 +# define SSL_R_DANE_TLSA_BAD_SELECTOR 202 +# define SSL_R_DANE_TLSA_NULL_DATA 203 +# define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 +# define SSL_R_DATA_LENGTH_TOO_LONG 146 +# define SSL_R_DECRYPTION_FAILED 147 +# define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 +# define SSL_R_DH_KEY_TOO_SMALL 394 +# define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 +# define SSL_R_DIGEST_CHECK_FAILED 149 +# define SSL_R_DTLS_MESSAGE_TOO_BIG 334 +# define SSL_R_DUPLICATE_COMPRESSION_ID 309 +# define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 +# define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 +# define SSL_R_EE_KEY_TOO_SMALL 399 +# define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 +# define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 +# define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 +# define SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN 204 +# define SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE 194 +# define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 +# define SSL_R_EXTENSION_NOT_RECEIVED 279 +# define SSL_R_EXTRA_DATA_IN_MESSAGE 153 +# define SSL_R_EXT_LENGTH_MISMATCH 163 +# define SSL_R_FAILED_TO_INIT_ASYNC 405 +# define SSL_R_FRAGMENTED_CLIENT_HELLO 401 +# define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 +# define SSL_R_HTTPS_PROXY_REQUEST 155 +# define SSL_R_HTTP_REQUEST 156 +# define SSL_R_ILLEGAL_POINT_COMPRESSION 162 +# define SSL_R_ILLEGAL_SUITEB_DIGEST 380 +# define SSL_R_INAPPROPRIATE_FALLBACK 373 +# define SSL_R_INCONSISTENT_COMPRESSION 340 +# define SSL_R_INCONSISTENT_EARLY_DATA_ALPN 222 +# define SSL_R_INCONSISTENT_EARLY_DATA_SNI 231 +# define SSL_R_INCONSISTENT_EXTMS 104 +# define SSL_R_INSUFFICIENT_SECURITY 241 +# define SSL_R_INVALID_ALERT 205 +# define SSL_R_INVALID_CCS_MESSAGE 260 +# define SSL_R_INVALID_CERTIFICATE_OR_ALG 238 +# define SSL_R_INVALID_COMMAND 280 +# define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +# define SSL_R_INVALID_CONFIG 283 +# define SSL_R_INVALID_CONFIGURATION_NAME 113 +# define SSL_R_INVALID_CONTEXT 282 +# define SSL_R_INVALID_CT_VALIDATION_TYPE 212 +# define SSL_R_INVALID_KEY_UPDATE_TYPE 120 +# define SSL_R_INVALID_MAX_EARLY_DATA 174 +# define SSL_R_INVALID_NULL_CMD_NAME 385 +# define SSL_R_INVALID_SEQUENCE_NUMBER 402 +# define SSL_R_INVALID_SERVERINFO_DATA 388 +# define SSL_R_INVALID_SESSION_ID 999 +# define SSL_R_INVALID_SRP_USERNAME 357 +# define SSL_R_INVALID_STATUS_RESPONSE 328 +# define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 +# define SSL_R_LENGTH_MISMATCH 159 +# define SSL_R_LENGTH_TOO_LONG 404 +# define SSL_R_LENGTH_TOO_SHORT 160 +# define SSL_R_LIBRARY_BUG 274 +# define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +# define SSL_R_MISSING_DSA_SIGNING_CERT 165 +# define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 +# define SSL_R_MISSING_FATAL 256 +# define SSL_R_MISSING_PARAMETERS 290 +# define SSL_R_MISSING_PSK_KEX_MODES_EXTENSION 310 +# define SSL_R_MISSING_RSA_CERTIFICATE 168 +# define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 +# define SSL_R_MISSING_RSA_SIGNING_CERT 170 +# define SSL_R_MISSING_SIGALGS_EXTENSION 112 +# define SSL_R_MISSING_SIGNING_CERT 221 +# define SSL_R_MISSING_SRP_PARAM 358 +# define SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION 209 +# define SSL_R_MISSING_TMP_DH_KEY 171 +# define SSL_R_MISSING_TMP_ECDH_KEY 311 +# define SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA 293 +# define SSL_R_NOT_ON_RECORD_BOUNDARY 182 +# define SSL_R_NOT_REPLACING_CERTIFICATE 289 +# define SSL_R_NOT_SERVER 284 +# define SSL_R_NO_APPLICATION_PROTOCOL 235 +# define SSL_R_NO_CERTIFICATES_RETURNED 176 +# define SSL_R_NO_CERTIFICATE_ASSIGNED 177 +# define SSL_R_NO_CERTIFICATE_SET 179 +# define SSL_R_NO_CHANGE_FOLLOWING_HRR 214 +# define SSL_R_NO_CIPHERS_AVAILABLE 181 +# define SSL_R_NO_CIPHERS_SPECIFIED 183 +# define SSL_R_NO_CIPHER_MATCH 185 +# define SSL_R_NO_CLIENT_CERT_METHOD 331 +# define SSL_R_NO_COMPRESSION_SPECIFIED 187 +# define SSL_R_NO_COOKIE_CALLBACK_SET 287 +# define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 +# define SSL_R_NO_METHOD_SPECIFIED 188 +# define SSL_R_NO_PEM_EXTENSIONS 389 +# define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 +# define SSL_R_NO_PROTOCOLS_AVAILABLE 191 +# define SSL_R_NO_RENEGOTIATION 339 +# define SSL_R_NO_REQUIRED_DIGEST 324 +# define SSL_R_NO_SHARED_CIPHER 193 +# define SSL_R_NO_SHARED_GROUPS 410 +# define SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS 376 +# define SSL_R_NO_SRTP_PROFILES 359 +# define SSL_R_NO_SUITABLE_KEY_SHARE 101 +# define SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM 118 +# define SSL_R_NO_VALID_SCTS 216 +# define SSL_R_NO_VERIFY_COOKIE_CALLBACK 403 +# define SSL_R_NULL_SSL_CTX 195 +# define SSL_R_NULL_SSL_METHOD_PASSED 196 +# define SSL_R_OCSP_CALLBACK_FAILURE 294 +# define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 +# define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +# define SSL_R_OVERFLOW_ERROR 237 +# define SSL_R_PACKET_LENGTH_TOO_LONG 198 +# define SSL_R_PARSE_TLSEXT 227 +# define SSL_R_PATH_TOO_LONG 270 +# define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 +# define SSL_R_PEM_NAME_BAD_PREFIX 391 +# define SSL_R_PEM_NAME_TOO_SHORT 392 +# define SSL_R_PIPELINE_FAILURE 406 +# define SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR 278 +# define SSL_R_PRIVATE_KEY_MISMATCH 288 +# define SSL_R_PROTOCOL_IS_SHUTDOWN 207 +# define SSL_R_PSK_IDENTITY_NOT_FOUND 223 +# define SSL_R_PSK_NO_CLIENT_CB 224 +# define SSL_R_PSK_NO_SERVER_CB 225 +# define SSL_R_READ_BIO_NOT_SET 211 +# define SSL_R_READ_TIMEOUT_EXPIRED 312 +# define SSL_R_RECORD_LENGTH_MISMATCH 213 +# define SSL_R_RECORD_TOO_SMALL 298 +# define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 +# define SSL_R_RENEGOTIATION_ENCODING_ERR 336 +# define SSL_R_RENEGOTIATION_MISMATCH 337 +# define SSL_R_REQUEST_PENDING 285 +# define SSL_R_REQUEST_SENT 286 +# define SSL_R_REQUIRED_CIPHER_MISSING 215 +# define SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING 342 +# define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 +# define SSL_R_SCT_VERIFICATION_FAILED 208 +# define SSL_R_SERVERHELLO_TLSEXT 275 +# define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 +# define SSL_R_SHUTDOWN_WHILE_IN_INIT 407 +# define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 +# define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 +# define SSL_R_SRP_A_CALC 361 +# define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 +# define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 +# define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 +# define SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH 232 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 +# define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 +# define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 +# define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 +# define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 +# define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 +# define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 +# define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 +# define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 +# define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 +# define SSL_R_SSL_COMMAND_SECTION_EMPTY 117 +# define SSL_R_SSL_COMMAND_SECTION_NOT_FOUND 125 +# define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 +# define SSL_R_SSL_HANDSHAKE_FAILURE 229 +# define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 +# define SSL_R_SSL_NEGATIVE_LENGTH 372 +# define SSL_R_SSL_SECTION_EMPTY 126 +# define SSL_R_SSL_SECTION_NOT_FOUND 136 +# define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 +# define SSL_R_SSL_SESSION_ID_CONFLICT 302 +# define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 +# define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 +# define SSL_R_SSL_SESSION_ID_TOO_LONG 408 +# define SSL_R_SSL_SESSION_VERSION_MISMATCH 210 +# define SSL_R_STILL_IN_INIT 121 +# define SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED 1116 +# define SSL_R_TLSV13_ALERT_MISSING_EXTENSION 1109 +# define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 +# define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 +# define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 +# define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 +# define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 +# define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 +# define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 +# define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 +# define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 +# define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 +# define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 +# define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 +# define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 +# define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 +# define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 +# define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 +# define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 +# define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 +# define SSL_R_TLS_HEARTBEAT_PEER_DOESNT_ACCEPT 365 +# define SSL_R_TLS_HEARTBEAT_PENDING 366 +# define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 +# define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 +# define SSL_R_TOO_MANY_KEY_UPDATES 132 +# define SSL_R_TOO_MANY_WARN_ALERTS 409 +# define SSL_R_TOO_MUCH_EARLY_DATA 164 +# define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 +# define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 +# define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 +# define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 +# define SSL_R_UNEXPECTED_CCS_MESSAGE 262 +# define SSL_R_UNEXPECTED_END_OF_EARLY_DATA 178 +# define SSL_R_UNEXPECTED_MESSAGE 244 +# define SSL_R_UNEXPECTED_RECORD 245 +# define SSL_R_UNINITIALIZED 276 +# define SSL_R_UNKNOWN_ALERT_TYPE 246 +# define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 +# define SSL_R_UNKNOWN_CIPHER_RETURNED 248 +# define SSL_R_UNKNOWN_CIPHER_TYPE 249 +# define SSL_R_UNKNOWN_CMD_NAME 386 +# define SSL_R_UNKNOWN_COMMAND 139 +# define SSL_R_UNKNOWN_DIGEST 368 +# define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +# define SSL_R_UNKNOWN_PKEY_TYPE 251 +# define SSL_R_UNKNOWN_PROTOCOL 252 +# define SSL_R_UNKNOWN_SSL_VERSION 254 +# define SSL_R_UNKNOWN_STATE 255 +# define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 +# define SSL_R_UNSOLICITED_EXTENSION 217 +# define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 +# define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 +# define SSL_R_UNSUPPORTED_PROTOCOL 258 +# define SSL_R_UNSUPPORTED_SSL_VERSION 259 +# define SSL_R_UNSUPPORTED_STATUS_TYPE 329 +# define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 +# define SSL_R_VERSION_TOO_HIGH 166 +# define SSL_R_VERSION_TOO_LOW 396 +# define SSL_R_WRONG_CERTIFICATE_TYPE 383 +# define SSL_R_WRONG_CIPHER_RETURNED 261 +# define SSL_R_WRONG_CURVE 378 +# define SSL_R_WRONG_SIGNATURE_LENGTH 264 +# define SSL_R_WRONG_SIGNATURE_SIZE 265 +# define SSL_R_WRONG_SIGNATURE_TYPE 370 +# define SSL_R_WRONG_SSL_VERSION 266 +# define SSL_R_WRONG_VERSION_NUMBER 267 +# define SSL_R_X509_LIB 268 +# define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 + +#endif diff --git a/openSSL/win64/include/openssl/stack.h b/openSSL/win64/include/openssl/stack.h new file mode 100644 index 0000000..cfc0750 --- /dev/null +++ b/openSSL/win64/include/openssl/stack.h @@ -0,0 +1,83 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_STACK_H +# define HEADER_STACK_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */ + +typedef int (*OPENSSL_sk_compfunc)(const void *, const void *); +typedef void (*OPENSSL_sk_freefunc)(void *); +typedef void *(*OPENSSL_sk_copyfunc)(const void *); + +int OPENSSL_sk_num(const OPENSSL_STACK *); +void *OPENSSL_sk_value(const OPENSSL_STACK *, int); + +void *OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data); + +OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_new_null(void); +OPENSSL_STACK *OPENSSL_sk_new_reserve(OPENSSL_sk_compfunc c, int n); +int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n); +void OPENSSL_sk_free(OPENSSL_STACK *); +void OPENSSL_sk_pop_free(OPENSSL_STACK *st, void (*func) (void *)); +OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *, + OPENSSL_sk_copyfunc c, + OPENSSL_sk_freefunc f); +int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where); +void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc); +void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p); +int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_unshift(OPENSSL_STACK *st, const void *data); +void *OPENSSL_sk_shift(OPENSSL_STACK *st); +void *OPENSSL_sk_pop(OPENSSL_STACK *st); +void OPENSSL_sk_zero(OPENSSL_STACK *st); +OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, + OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_dup(const OPENSSL_STACK *st); +void OPENSSL_sk_sort(OPENSSL_STACK *st); +int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define _STACK OPENSSL_STACK +# define sk_num OPENSSL_sk_num +# define sk_value OPENSSL_sk_value +# define sk_set OPENSSL_sk_set +# define sk_new OPENSSL_sk_new +# define sk_new_null OPENSSL_sk_new_null +# define sk_free OPENSSL_sk_free +# define sk_pop_free OPENSSL_sk_pop_free +# define sk_deep_copy OPENSSL_sk_deep_copy +# define sk_insert OPENSSL_sk_insert +# define sk_delete OPENSSL_sk_delete +# define sk_delete_ptr OPENSSL_sk_delete_ptr +# define sk_find OPENSSL_sk_find +# define sk_find_ex OPENSSL_sk_find_ex +# define sk_push OPENSSL_sk_push +# define sk_unshift OPENSSL_sk_unshift +# define sk_shift OPENSSL_sk_shift +# define sk_pop OPENSSL_sk_pop +# define sk_zero OPENSSL_sk_zero +# define sk_set_cmp_func OPENSSL_sk_set_cmp_func +# define sk_dup OPENSSL_sk_dup +# define sk_sort OPENSSL_sk_sort +# define sk_is_sorted OPENSSL_sk_is_sorted +# endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/win64/include/openssl/store.h b/openSSL/win64/include/openssl/store.h new file mode 100644 index 0000000..a40a733 --- /dev/null +++ b/openSSL/win64/include/openssl/store.h @@ -0,0 +1,266 @@ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OSSL_STORE_H +# define HEADER_OSSL_STORE_H + +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * The main OSSL_STORE functions. + * ------------------------------ + * + * These allow applications to open a channel to a resource with supported + * data (keys, certs, crls, ...), read the data a piece at a time and decide + * what to do with it, and finally close. + */ + +typedef struct ossl_store_ctx_st OSSL_STORE_CTX; + +/* + * Typedef for the OSSL_STORE_INFO post processing callback. This can be used + * to massage the given OSSL_STORE_INFO, or to drop it entirely (by returning + * NULL). + */ +typedef OSSL_STORE_INFO *(*OSSL_STORE_post_process_info_fn)(OSSL_STORE_INFO *, + void *); + +/* + * Open a channel given a URI. The given UI method will be used any time the + * loader needs extra input, for example when a password or pin is needed, and + * will be passed the same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + */ +OSSL_STORE_CTX *OSSL_STORE_open(const char *uri, const UI_METHOD *ui_method, + void *ui_data, + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/* + * Control / fine tune the OSSL_STORE channel. |cmd| determines what is to be + * done, and depends on the underlying loader (use OSSL_STORE_get0_scheme to + * determine which loader is used), except for common commands (see below). + * Each command takes different arguments. + */ +int OSSL_STORE_ctrl(OSSL_STORE_CTX *ctx, int cmd, ... /* args */); +int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, va_list args); + +/* + * Common ctrl commands that different loaders may choose to support. + */ +/* int on = 0 or 1; STORE_ctrl(ctx, STORE_C_USE_SECMEM, &on); */ +# define OSSL_STORE_C_USE_SECMEM 1 +/* Where custom commands start */ +# define OSSL_STORE_C_CUSTOM_START 100 + +/* + * Read one data item (a key, a cert, a CRL) that is supported by the OSSL_STORE + * functionality, given a context. + * Returns a OSSL_STORE_INFO pointer, from which OpenSSL typed data can be + * extracted with OSSL_STORE_INFO_get0_PKEY(), OSSL_STORE_INFO_get0_CERT(), ... + * NULL is returned on error, which may include that the data found at the URI + * can't be figured out for certain or is ambiguous. + */ +OSSL_STORE_INFO *OSSL_STORE_load(OSSL_STORE_CTX *ctx); + +/* + * Check if end of data (end of file) is reached + * Returns 1 on end, 0 otherwise. + */ +int OSSL_STORE_eof(OSSL_STORE_CTX *ctx); + +/* + * Check if an error occurred + * Returns 1 if it did, 0 otherwise. + */ +int OSSL_STORE_error(OSSL_STORE_CTX *ctx); + +/* + * Close the channel + * Returns 1 on success, 0 on error. + */ +int OSSL_STORE_close(OSSL_STORE_CTX *ctx); + + +/*- + * Extracting OpenSSL types from and creating new OSSL_STORE_INFOs + * --------------------------------------------------------------- + */ + +/* + * Types of data that can be ossl_stored in a OSSL_STORE_INFO. + * OSSL_STORE_INFO_NAME is typically found when getting a listing of + * available "files" / "tokens" / what have you. + */ +# define OSSL_STORE_INFO_NAME 1 /* char * */ +# define OSSL_STORE_INFO_PARAMS 2 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_PKEY 3 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_CERT 4 /* X509 * */ +# define OSSL_STORE_INFO_CRL 5 /* X509_CRL * */ + +/* + * Functions to generate OSSL_STORE_INFOs, one function for each type we + * support having in them, as well as a generic constructor. + * + * In all cases, ownership of the object is transferred to the OSSL_STORE_INFO + * and will therefore be freed when the OSSL_STORE_INFO is freed. + */ +OSSL_STORE_INFO *OSSL_STORE_INFO_new_NAME(char *name); +int OSSL_STORE_INFO_set0_NAME_description(OSSL_STORE_INFO *info, char *desc); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PARAMS(EVP_PKEY *params); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PKEY(EVP_PKEY *pkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CERT(X509 *x509); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CRL(X509_CRL *crl); + +/* + * Functions to try to extract data from a OSSL_STORE_INFO. + */ +int OSSL_STORE_INFO_get_type(const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME(const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME_description(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME_description(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PKEY(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get0_CERT(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get1_CERT(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get0_CRL(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get1_CRL(const OSSL_STORE_INFO *info); + +const char *OSSL_STORE_INFO_type_string(int type); + +/* + * Free the OSSL_STORE_INFO + */ +void OSSL_STORE_INFO_free(OSSL_STORE_INFO *info); + + +/*- + * Functions to construct a search URI from a base URI and search criteria + * ----------------------------------------------------------------------- + */ + +/* OSSL_STORE search types */ +# define OSSL_STORE_SEARCH_BY_NAME 1 /* subject in certs, issuer in CRLs */ +# define OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 2 +# define OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 3 +# define OSSL_STORE_SEARCH_BY_ALIAS 4 + +/* To check what search types the scheme handler supports */ +int OSSL_STORE_supports_search(OSSL_STORE_CTX *ctx, int search_type); + +/* Search term constructors */ +/* + * The input is considered to be owned by the caller, and must therefore + * remain present throughout the lifetime of the returned OSSL_STORE_SEARCH + */ +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_name(X509_NAME *name); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_issuer_serial(X509_NAME *name, + const ASN1_INTEGER + *serial); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_key_fingerprint(const EVP_MD *digest, + const unsigned char + *bytes, size_t len); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_alias(const char *alias); + +/* Search term destructor */ +void OSSL_STORE_SEARCH_free(OSSL_STORE_SEARCH *search); + +/* Search term accessors */ +int OSSL_STORE_SEARCH_get_type(const OSSL_STORE_SEARCH *criterion); +X509_NAME *OSSL_STORE_SEARCH_get0_name(OSSL_STORE_SEARCH *criterion); +const ASN1_INTEGER *OSSL_STORE_SEARCH_get0_serial(const OSSL_STORE_SEARCH + *criterion); +const unsigned char *OSSL_STORE_SEARCH_get0_bytes(const OSSL_STORE_SEARCH + *criterion, size_t *length); +const char *OSSL_STORE_SEARCH_get0_string(const OSSL_STORE_SEARCH *criterion); +const EVP_MD *OSSL_STORE_SEARCH_get0_digest(const OSSL_STORE_SEARCH *criterion); + +/* + * Add search criterion and expected return type (which can be unspecified) + * to the loading channel. This MUST happen before the first OSSL_STORE_load(). + */ +int OSSL_STORE_expect(OSSL_STORE_CTX *ctx, int expected_type); +int OSSL_STORE_find(OSSL_STORE_CTX *ctx, OSSL_STORE_SEARCH *search); + + +/*- + * Function to register a loader for the given URI scheme. + * ------------------------------------------------------- + * + * The loader receives all the main components of an URI except for the + * scheme. + */ + +typedef struct ossl_store_loader_st OSSL_STORE_LOADER; +OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(ENGINE *e, const char *scheme); +const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader); +const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); +/* struct ossl_store_loader_ctx_st is defined differently by each loader */ +typedef struct ossl_store_loader_ctx_st OSSL_STORE_LOADER_CTX; +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_fn)(const OSSL_STORE_LOADER + *loader, + const char *uri, + const UI_METHOD *ui_method, + void *ui_data); +int OSSL_STORE_LOADER_set_open(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_fn open_function); +typedef int (*OSSL_STORE_ctrl_fn)(OSSL_STORE_LOADER_CTX *ctx, int cmd, + va_list args); +int OSSL_STORE_LOADER_set_ctrl(OSSL_STORE_LOADER *loader, + OSSL_STORE_ctrl_fn ctrl_function); +typedef int (*OSSL_STORE_expect_fn)(OSSL_STORE_LOADER_CTX *ctx, int expected); +int OSSL_STORE_LOADER_set_expect(OSSL_STORE_LOADER *loader, + OSSL_STORE_expect_fn expect_function); +typedef int (*OSSL_STORE_find_fn)(OSSL_STORE_LOADER_CTX *ctx, + OSSL_STORE_SEARCH *criteria); +int OSSL_STORE_LOADER_set_find(OSSL_STORE_LOADER *loader, + OSSL_STORE_find_fn find_function); +typedef OSSL_STORE_INFO *(*OSSL_STORE_load_fn)(OSSL_STORE_LOADER_CTX *ctx, + const UI_METHOD *ui_method, + void *ui_data); +int OSSL_STORE_LOADER_set_load(OSSL_STORE_LOADER *loader, + OSSL_STORE_load_fn load_function); +typedef int (*OSSL_STORE_eof_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_eof(OSSL_STORE_LOADER *loader, + OSSL_STORE_eof_fn eof_function); +typedef int (*OSSL_STORE_error_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_error(OSSL_STORE_LOADER *loader, + OSSL_STORE_error_fn error_function); +typedef int (*OSSL_STORE_close_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *loader, + OSSL_STORE_close_fn close_function); +void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader); + +int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); +OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme); + +/*- + * Functions to list STORE loaders + * ------------------------------- + */ +int OSSL_STORE_do_all_loaders(void (*do_function) (const OSSL_STORE_LOADER + *loader, void *do_arg), + void *do_arg); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/storeerr.h b/openSSL/win64/include/openssl/storeerr.h new file mode 100644 index 0000000..190eab0 --- /dev/null +++ b/openSSL/win64/include/openssl/storeerr.h @@ -0,0 +1,91 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OSSL_STOREERR_H +# define HEADER_OSSL_STOREERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OSSL_STORE_strings(void); + +/* + * OSSL_STORE function codes. + */ +# define OSSL_STORE_F_FILE_CTRL 129 +# define OSSL_STORE_F_FILE_FIND 138 +# define OSSL_STORE_F_FILE_GET_PASS 118 +# define OSSL_STORE_F_FILE_LOAD 119 +# define OSSL_STORE_F_FILE_LOAD_TRY_DECODE 124 +# define OSSL_STORE_F_FILE_NAME_TO_URI 126 +# define OSSL_STORE_F_FILE_OPEN 120 +# define OSSL_STORE_F_OSSL_STORE_ATTACH_PEM_BIO 127 +# define OSSL_STORE_F_OSSL_STORE_EXPECT 130 +# define OSSL_STORE_F_OSSL_STORE_FILE_ATTACH_PEM_BIO_INT 128 +# define OSSL_STORE_F_OSSL_STORE_FIND 131 +# define OSSL_STORE_F_OSSL_STORE_GET0_LOADER_INT 100 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CERT 101 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CRL 102 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME 103 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME_DESCRIPTION 135 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PARAMS 104 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PKEY 105 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CERT 106 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CRL 107 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_EMBEDDED 123 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_NAME 109 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PARAMS 110 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PKEY 111 +# define OSSL_STORE_F_OSSL_STORE_INFO_SET0_NAME_DESCRIPTION 134 +# define OSSL_STORE_F_OSSL_STORE_INIT_ONCE 112 +# define OSSL_STORE_F_OSSL_STORE_LOADER_NEW 113 +# define OSSL_STORE_F_OSSL_STORE_OPEN 114 +# define OSSL_STORE_F_OSSL_STORE_OPEN_INT 115 +# define OSSL_STORE_F_OSSL_STORE_REGISTER_LOADER_INT 117 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ALIAS 132 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 133 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 136 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_NAME 137 +# define OSSL_STORE_F_OSSL_STORE_UNREGISTER_LOADER_INT 116 +# define OSSL_STORE_F_TRY_DECODE_PARAMS 121 +# define OSSL_STORE_F_TRY_DECODE_PKCS12 122 +# define OSSL_STORE_F_TRY_DECODE_PKCS8ENCRYPTED 125 + +/* + * OSSL_STORE reason codes. + */ +# define OSSL_STORE_R_AMBIGUOUS_CONTENT_TYPE 107 +# define OSSL_STORE_R_BAD_PASSWORD_READ 115 +# define OSSL_STORE_R_ERROR_VERIFYING_PKCS12_MAC 113 +# define OSSL_STORE_R_FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST 121 +# define OSSL_STORE_R_INVALID_SCHEME 106 +# define OSSL_STORE_R_IS_NOT_A 112 +# define OSSL_STORE_R_LOADER_INCOMPLETE 116 +# define OSSL_STORE_R_LOADING_STARTED 117 +# define OSSL_STORE_R_NOT_A_CERTIFICATE 100 +# define OSSL_STORE_R_NOT_A_CRL 101 +# define OSSL_STORE_R_NOT_A_KEY 102 +# define OSSL_STORE_R_NOT_A_NAME 103 +# define OSSL_STORE_R_NOT_PARAMETERS 104 +# define OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR 114 +# define OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE 108 +# define OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 119 +# define OSSL_STORE_R_UI_PROCESS_INTERRUPTED_OR_CANCELLED 109 +# define OSSL_STORE_R_UNREGISTERED_SCHEME 105 +# define OSSL_STORE_R_UNSUPPORTED_CONTENT_TYPE 110 +# define OSSL_STORE_R_UNSUPPORTED_OPERATION 118 +# define OSSL_STORE_R_UNSUPPORTED_SEARCH_TYPE 120 +# define OSSL_STORE_R_URI_AUTHORITY_UNSUPPORTED 111 + +#endif diff --git a/openSSL/win64/include/openssl/symhacks.h b/openSSL/win64/include/openssl/symhacks.h new file mode 100644 index 0000000..156ea6e --- /dev/null +++ b/openSSL/win64/include/openssl/symhacks.h @@ -0,0 +1,37 @@ +/* + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SYMHACKS_H +# define HEADER_SYMHACKS_H + +# include + +/* Case insensitive linking causes problems.... */ +# if defined(OPENSSL_SYS_VMS) +# undef ERR_load_CRYPTO_strings +# define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings +# undef OCSP_crlID_new +# define OCSP_crlID_new OCSP_crlID2_new + +# undef d2i_ECPARAMETERS +# define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS +# undef i2d_ECPARAMETERS +# define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS +# undef d2i_ECPKPARAMETERS +# define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS +# undef i2d_ECPKPARAMETERS +# define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS + +/* This one clashes with CMS_data_create */ +# undef cms_Data_create +# define cms_Data_create priv_cms_Data_create + +# endif + +#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/openSSL/win64/include/openssl/tls1.h b/openSSL/win64/include/openssl/tls1.h new file mode 100644 index 0000000..76d9fda --- /dev/null +++ b/openSSL/win64/include/openssl/tls1.h @@ -0,0 +1,1237 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TLS1_H +# define HEADER_TLS1_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Default security level if not overridden at config time */ +# ifndef OPENSSL_TLS_SECURITY_LEVEL +# define OPENSSL_TLS_SECURITY_LEVEL 1 +# endif + +# define TLS1_VERSION 0x0301 +# define TLS1_1_VERSION 0x0302 +# define TLS1_2_VERSION 0x0303 +# define TLS1_3_VERSION 0x0304 +# define TLS_MAX_VERSION TLS1_3_VERSION + +/* Special value for method supporting multiple versions */ +# define TLS_ANY_VERSION 0x10000 + +# define TLS1_VERSION_MAJOR 0x03 +# define TLS1_VERSION_MINOR 0x01 + +# define TLS1_1_VERSION_MAJOR 0x03 +# define TLS1_1_VERSION_MINOR 0x02 + +# define TLS1_2_VERSION_MAJOR 0x03 +# define TLS1_2_VERSION_MINOR 0x03 + +# define TLS1_get_version(s) \ + ((SSL_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_version(s) : 0) + +# define TLS1_get_client_version(s) \ + ((SSL_client_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_client_version(s) : 0) + +# define TLS1_AD_DECRYPTION_FAILED 21 +# define TLS1_AD_RECORD_OVERFLOW 22 +# define TLS1_AD_UNKNOWN_CA 48/* fatal */ +# define TLS1_AD_ACCESS_DENIED 49/* fatal */ +# define TLS1_AD_DECODE_ERROR 50/* fatal */ +# define TLS1_AD_DECRYPT_ERROR 51 +# define TLS1_AD_EXPORT_RESTRICTION 60/* fatal */ +# define TLS1_AD_PROTOCOL_VERSION 70/* fatal */ +# define TLS1_AD_INSUFFICIENT_SECURITY 71/* fatal */ +# define TLS1_AD_INTERNAL_ERROR 80/* fatal */ +# define TLS1_AD_INAPPROPRIATE_FALLBACK 86/* fatal */ +# define TLS1_AD_USER_CANCELLED 90 +# define TLS1_AD_NO_RENEGOTIATION 100 +/* TLSv1.3 alerts */ +# define TLS13_AD_MISSING_EXTENSION 109 /* fatal */ +# define TLS13_AD_CERTIFICATE_REQUIRED 116 /* fatal */ +/* codes 110-114 are from RFC3546 */ +# define TLS1_AD_UNSUPPORTED_EXTENSION 110 +# define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 +# define TLS1_AD_UNRECOGNIZED_NAME 112 +# define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 +# define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 +# define TLS1_AD_UNKNOWN_PSK_IDENTITY 115/* fatal */ +# define TLS1_AD_NO_APPLICATION_PROTOCOL 120 /* fatal */ + +/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ +# define TLSEXT_TYPE_server_name 0 +# define TLSEXT_TYPE_max_fragment_length 1 +# define TLSEXT_TYPE_client_certificate_url 2 +# define TLSEXT_TYPE_trusted_ca_keys 3 +# define TLSEXT_TYPE_truncated_hmac 4 +# define TLSEXT_TYPE_status_request 5 +/* ExtensionType values from RFC4681 */ +# define TLSEXT_TYPE_user_mapping 6 +/* ExtensionType values from RFC5878 */ +# define TLSEXT_TYPE_client_authz 7 +# define TLSEXT_TYPE_server_authz 8 +/* ExtensionType values from RFC6091 */ +# define TLSEXT_TYPE_cert_type 9 + +/* ExtensionType values from RFC4492 */ +/* + * Prior to TLSv1.3 the supported_groups extension was known as + * elliptic_curves + */ +# define TLSEXT_TYPE_supported_groups 10 +# define TLSEXT_TYPE_elliptic_curves TLSEXT_TYPE_supported_groups +# define TLSEXT_TYPE_ec_point_formats 11 + + +/* ExtensionType value from RFC5054 */ +# define TLSEXT_TYPE_srp 12 + +/* ExtensionType values from RFC5246 */ +# define TLSEXT_TYPE_signature_algorithms 13 + +/* ExtensionType value from RFC5764 */ +# define TLSEXT_TYPE_use_srtp 14 + +/* ExtensionType value from RFC5620 */ +# define TLSEXT_TYPE_heartbeat 15 + +/* ExtensionType value from RFC7301 */ +# define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * Extension type for Certificate Transparency + * https://tools.ietf.org/html/rfc6962#section-3.3.1 + */ +# define TLSEXT_TYPE_signed_certificate_timestamp 18 + +/* + * ExtensionType value for TLS padding extension. + * http://tools.ietf.org/html/draft-agl-tls-padding + */ +# define TLSEXT_TYPE_padding 21 + +/* ExtensionType value from RFC7366 */ +# define TLSEXT_TYPE_encrypt_then_mac 22 + +/* ExtensionType value from RFC7627 */ +# define TLSEXT_TYPE_extended_master_secret 23 + +/* ExtensionType value from RFC4507 */ +# define TLSEXT_TYPE_session_ticket 35 + +/* As defined for TLS1.3 */ +# define TLSEXT_TYPE_psk 41 +# define TLSEXT_TYPE_early_data 42 +# define TLSEXT_TYPE_supported_versions 43 +# define TLSEXT_TYPE_cookie 44 +# define TLSEXT_TYPE_psk_kex_modes 45 +# define TLSEXT_TYPE_certificate_authorities 47 +# define TLSEXT_TYPE_post_handshake_auth 49 +# define TLSEXT_TYPE_signature_algorithms_cert 50 +# define TLSEXT_TYPE_key_share 51 + +/* Temporary extension type */ +# define TLSEXT_TYPE_renegotiate 0xff01 + +# ifndef OPENSSL_NO_NEXTPROTONEG +/* This is not an IANA defined extension number */ +# define TLSEXT_TYPE_next_proto_neg 13172 +# endif + +/* NameType value from RFC3546 */ +# define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC3546 */ +# define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from RFC4492 */ +# define TLSEXT_ECPOINTFORMAT_first 0 +# define TLSEXT_ECPOINTFORMAT_uncompressed 0 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 +# define TLSEXT_ECPOINTFORMAT_last 2 + +/* Signature and hash algorithms from RFC5246 */ +# define TLSEXT_signature_anonymous 0 +# define TLSEXT_signature_rsa 1 +# define TLSEXT_signature_dsa 2 +# define TLSEXT_signature_ecdsa 3 +# define TLSEXT_signature_gostr34102001 237 +# define TLSEXT_signature_gostr34102012_256 238 +# define TLSEXT_signature_gostr34102012_512 239 + +/* Total number of different signature algorithms */ +# define TLSEXT_signature_num 7 + +# define TLSEXT_hash_none 0 +# define TLSEXT_hash_md5 1 +# define TLSEXT_hash_sha1 2 +# define TLSEXT_hash_sha224 3 +# define TLSEXT_hash_sha256 4 +# define TLSEXT_hash_sha384 5 +# define TLSEXT_hash_sha512 6 +# define TLSEXT_hash_gostr3411 237 +# define TLSEXT_hash_gostr34112012_256 238 +# define TLSEXT_hash_gostr34112012_512 239 + +/* Total number of different digest algorithms */ + +# define TLSEXT_hash_num 10 + +/* Flag set for unrecognised algorithms */ +# define TLSEXT_nid_unknown 0x1000000 + +/* ECC curves */ + +# define TLSEXT_curve_P_256 23 +# define TLSEXT_curve_P_384 24 + +/* OpenSSL value to disable maximum fragment length extension */ +# define TLSEXT_max_fragment_length_DISABLED 0 +/* Allowed values for max fragment length extension */ +# define TLSEXT_max_fragment_length_512 1 +# define TLSEXT_max_fragment_length_1024 2 +# define TLSEXT_max_fragment_length_2048 3 +# define TLSEXT_max_fragment_length_4096 4 + +int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); +int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); + +# define TLSEXT_MAXLEN_host_name 255 + +__owur const char *SSL_get_servername(const SSL *s, const int type); +__owur int SSL_get_servername_type(const SSL *s); +/* + * SSL_export_keying_material exports a value derived from the master secret, + * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and + * optional context. (Since a zero length context is allowed, the |use_context| + * flag controls whether a context is included.) It returns 1 on success and + * 0 or -1 otherwise. + */ +__owur int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *context, + size_t contextlen, int use_context); + +/* + * SSL_export_keying_material_early exports a value derived from the + * early exporter master secret, as specified in + * https://tools.ietf.org/html/draft-ietf-tls-tls13-23. It writes + * |olen| bytes to |out| given a label and optional context. It + * returns 1 on success and 0 otherwise. + */ +__owur int SSL_export_keying_material_early(SSL *s, unsigned char *out, + size_t olen, const char *label, + size_t llen, + const unsigned char *context, + size_t contextlen); + +int SSL_get_peer_signature_type_nid(const SSL *s, int *pnid); +int SSL_get_signature_type_nid(const SSL *s, int *pnid); + +int SSL_get_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +int SSL_get_shared_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +__owur int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); + +# define SSL_set_tlsext_host_name(s,name) \ + SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,\ + (void *)name) + +# define SSL_set_tlsext_debug_callback(ssl, cb) \ + SSL_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_CB,\ + (void (*)(void))cb) + +# define SSL_set_tlsext_debug_arg(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_ARG,0,arg) + +# define SSL_get_tlsext_status_type(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE,0,NULL) + +# define SSL_set_tlsext_status_type(ssl, type) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type,NULL) + +# define SSL_get_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS,0,arg) + +# define SSL_set_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS,0,arg) + +# define SSL_get_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS,0,arg) + +# define SSL_set_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS,0,arg) + +# define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,0,arg) + +# define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,arglen,arg) + +# define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ + SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_CB,\ + (void (*)(void))cb) + +# define SSL_TLSEXT_ERR_OK 0 +# define SSL_TLSEXT_ERR_ALERT_WARNING 1 +# define SSL_TLSEXT_ERR_ALERT_FATAL 2 +# define SSL_TLSEXT_ERR_NOACK 3 + +# define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0,arg) + +# define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_TLSEXT_TICKET_KEYS,keylen,keys) +# define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_TICKET_KEYS,keylen,keys) + +# define SSL_CTX_get_tlsext_status_cb(ssl, cb) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB,0,(void *)cb) +# define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,\ + (void (*)(void))cb) + +# define SSL_CTX_get_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG,0,arg) +# define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0,arg) + +# define SSL_CTX_set_tlsext_status_type(ssl, type) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type,NULL) + +# define SSL_CTX_get_tlsext_status_type(ssl) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE,0,NULL) + +# define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,\ + (void (*)(void))cb) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_DTLSEXT_HB_ENABLED 0x01 +# define SSL_DTLSEXT_HB_DONT_SEND_REQUESTS 0x02 +# define SSL_DTLSEXT_HB_DONT_RECV_REQUESTS 0x04 +# define SSL_get_dtlsext_heartbeat_pending(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING,0,NULL) +# define SSL_set_dtlsext_heartbeat_no_requests(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS,arg,NULL) + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_CTRL_TLS_EXT_SEND_HEARTBEAT \ + SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT +# define SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING \ + SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING +# define SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS \ + SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS +# define SSL_TLSEXT_HB_ENABLED \ + SSL_DTLSEXT_HB_ENABLED +# define SSL_TLSEXT_HB_DONT_SEND_REQUESTS \ + SSL_DTLSEXT_HB_DONT_SEND_REQUESTS +# define SSL_TLSEXT_HB_DONT_RECV_REQUESTS \ + SSL_DTLSEXT_HB_DONT_RECV_REQUESTS +# define SSL_get_tlsext_heartbeat_pending(ssl) \ + SSL_get_dtlsext_heartbeat_pending(ssl) +# define SSL_set_tlsext_heartbeat_no_requests(ssl, arg) \ + SSL_set_dtlsext_heartbeat_no_requests(ssl,arg) +# endif +# endif + +/* PSK ciphersuites from 4279 */ +# define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A +# define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D +# define TLS1_CK_DHE_PSK_WITH_RC4_128_SHA 0x0300008E +# define TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008F +# define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA 0x03000090 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA 0x03000091 +# define TLS1_CK_RSA_PSK_WITH_RC4_128_SHA 0x03000092 +# define TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x03000093 +# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA 0x03000094 +# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA 0x03000095 + +/* PSK ciphersuites from 5487 */ +# define TLS1_CK_PSK_WITH_AES_128_GCM_SHA256 0x030000A8 +# define TLS1_CK_PSK_WITH_AES_256_GCM_SHA384 0x030000A9 +# define TLS1_CK_DHE_PSK_WITH_AES_128_GCM_SHA256 0x030000AA +# define TLS1_CK_DHE_PSK_WITH_AES_256_GCM_SHA384 0x030000AB +# define TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256 0x030000AC +# define TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384 0x030000AD +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA256 0x030000AE +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA384 0x030000AF +# define TLS1_CK_PSK_WITH_NULL_SHA256 0x030000B0 +# define TLS1_CK_PSK_WITH_NULL_SHA384 0x030000B1 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA256 0x030000B2 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384 0x030000B3 +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA256 0x030000B4 +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA384 0x030000B5 +# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256 0x030000B6 +# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384 0x030000B7 +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA256 0x030000B8 +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA384 0x030000B9 + +/* NULL PSK ciphersuites from RFC4785 */ +# define TLS1_CK_PSK_WITH_NULL_SHA 0x0300002C +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA 0x0300002D +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA 0x0300002E + +/* AES ciphersuites from RFC3268 */ +# define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 +# define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 +# define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 +# define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B +# define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C +# define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B +# define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C +# define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 +# define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 +# define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 +# define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 +# define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A +# define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C +# define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D +# define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E +# define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F +# define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 +# define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 +# define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 +# define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 +# define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 +# define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 +# define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 +# define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 + +/* CCM ciphersuites from RFC6655 */ +# define TLS1_CK_RSA_WITH_AES_128_CCM 0x0300C09C +# define TLS1_CK_RSA_WITH_AES_256_CCM 0x0300C09D +# define TLS1_CK_DHE_RSA_WITH_AES_128_CCM 0x0300C09E +# define TLS1_CK_DHE_RSA_WITH_AES_256_CCM 0x0300C09F +# define TLS1_CK_RSA_WITH_AES_128_CCM_8 0x0300C0A0 +# define TLS1_CK_RSA_WITH_AES_256_CCM_8 0x0300C0A1 +# define TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8 0x0300C0A2 +# define TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8 0x0300C0A3 +# define TLS1_CK_PSK_WITH_AES_128_CCM 0x0300C0A4 +# define TLS1_CK_PSK_WITH_AES_256_CCM 0x0300C0A5 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CCM 0x0300C0A6 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CCM 0x0300C0A7 +# define TLS1_CK_PSK_WITH_AES_128_CCM_8 0x0300C0A8 +# define TLS1_CK_PSK_WITH_AES_256_CCM_8 0x0300C0A9 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8 0x0300C0AA +# define TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8 0x0300C0AB + +/* CCM ciphersuites from RFC7251 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM 0x0300C0AC +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM 0x0300C0AD +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM_8 0x0300C0AE +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM_8 0x0300C0AF + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BA +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BB +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BC +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BD +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BE +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA256 0x030000BF + +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C0 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C1 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C2 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C3 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C4 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA256 0x030000C5 + +/* ECC ciphersuites from RFC4492 */ +# define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 +# define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 +# define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 + +# define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 +# define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 +# define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A + +# define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B +# define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C +# define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D +# define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E +# define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F + +# define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 +# define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 +# define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 + +# define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 +# define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 +# define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 +# define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 +# define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 + +/* SRP ciphersuites from RFC 5054 */ +# define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A +# define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B +# define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C +# define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F +# define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 + +/* ECDH HMAC based ciphersuites from RFC5289 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 + +/* ECDHE PSK ciphersuites from RFC5489 */ +# define TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA 0x0300C033 +# define TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300C034 +# define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA 0x0300C035 +# define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA 0x0300C036 + +# define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0x0300C037 +# define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0x0300C038 + +/* NULL PSK ciphersuites from RFC4785 */ +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA 0x0300C039 +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256 0x0300C03A +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384 0x0300C03B + +/* Camellia-CBC ciphersuites from RFC6367 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C072 +# define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C073 +# define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C074 +# define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C075 +# define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C076 +# define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C077 +# define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C078 +# define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C079 + +# define TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C094 +# define TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C095 +# define TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C096 +# define TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C097 +# define TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C098 +# define TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C099 +# define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C09A +# define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C09B + +/* draft-ietf-tls-chacha20-poly1305-03 */ +# define TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCA8 +# define TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 0x0300CCA9 +# define TLS1_CK_DHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCAA +# define TLS1_CK_PSK_WITH_CHACHA20_POLY1305 0x0300CCAB +# define TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAC +# define TLS1_CK_DHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAD +# define TLS1_CK_RSA_PSK_WITH_CHACHA20_POLY1305 0x0300CCAE + +/* TLS v1.3 ciphersuites */ +# define TLS1_3_CK_AES_128_GCM_SHA256 0x03001301 +# define TLS1_3_CK_AES_256_GCM_SHA384 0x03001302 +# define TLS1_3_CK_CHACHA20_POLY1305_SHA256 0x03001303 +# define TLS1_3_CK_AES_128_CCM_SHA256 0x03001304 +# define TLS1_3_CK_AES_128_CCM_8_SHA256 0x03001305 + +/* Aria ciphersuites from RFC6209 */ +# define TLS1_CK_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C050 +# define TLS1_CK_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C051 +# define TLS1_CK_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C052 +# define TLS1_CK_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C053 +# define TLS1_CK_DH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C054 +# define TLS1_CK_DH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C055 +# define TLS1_CK_DHE_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C056 +# define TLS1_CK_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C057 +# define TLS1_CK_DH_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C058 +# define TLS1_CK_DH_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C059 +# define TLS1_CK_DH_anon_WITH_ARIA_128_GCM_SHA256 0x0300C05A +# define TLS1_CK_DH_anon_WITH_ARIA_256_GCM_SHA384 0x0300C05B +# define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05C +# define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05D +# define TLS1_CK_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05E +# define TLS1_CK_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05F +# define TLS1_CK_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C060 +# define TLS1_CK_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C061 +# define TLS1_CK_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C062 +# define TLS1_CK_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C063 +# define TLS1_CK_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06A +# define TLS1_CK_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06B +# define TLS1_CK_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06C +# define TLS1_CK_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06D +# define TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06E +# define TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06F + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +# define TLS1_RFC_RSA_WITH_AES_128_SHA "TLS_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ADH_WITH_AES_128_SHA "TLS_DH_anon_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_RSA_WITH_AES_256_SHA "TLS_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ADH_WITH_AES_256_SHA "TLS_DH_anon_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_RSA_WITH_NULL_SHA256 "TLS_RSA_WITH_NULL_SHA256" +# define TLS1_RFC_RSA_WITH_AES_128_SHA256 "TLS_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_AES_256_SHA256 "TLS_RSA_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256 "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256 "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256 "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256 "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_AES_128_SHA256 "TLS_DH_anon_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_AES_256_SHA256 "TLS_DH_anon_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256 "TLS_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384 "TLS_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256 "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384 "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256 "TLS_DH_anon_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384 "TLS_DH_anon_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_RSA_WITH_AES_128_CCM "TLS_RSA_WITH_AES_128_CCM" +# define TLS1_RFC_RSA_WITH_AES_256_CCM "TLS_RSA_WITH_AES_256_CCM" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM "TLS_DHE_RSA_WITH_AES_128_CCM" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM "TLS_DHE_RSA_WITH_AES_256_CCM" +# define TLS1_RFC_RSA_WITH_AES_128_CCM_8 "TLS_RSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_RSA_WITH_AES_256_CCM_8 "TLS_RSA_WITH_AES_256_CCM_8" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8 "TLS_DHE_RSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8 "TLS_DHE_RSA_WITH_AES_256_CCM_8" +# define TLS1_RFC_PSK_WITH_AES_128_CCM "TLS_PSK_WITH_AES_128_CCM" +# define TLS1_RFC_PSK_WITH_AES_256_CCM "TLS_PSK_WITH_AES_256_CCM" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM "TLS_DHE_PSK_WITH_AES_128_CCM" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM "TLS_DHE_PSK_WITH_AES_256_CCM" +# define TLS1_RFC_PSK_WITH_AES_128_CCM_8 "TLS_PSK_WITH_AES_128_CCM_8" +# define TLS1_RFC_PSK_WITH_AES_256_CCM_8 "TLS_PSK_WITH_AES_256_CCM_8" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8 "TLS_PSK_DHE_WITH_AES_128_CCM_8" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8 "TLS_PSK_DHE_WITH_AES_256_CCM_8" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM "TLS_ECDHE_ECDSA_WITH_AES_128_CCM" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM "TLS_ECDHE_ECDSA_WITH_AES_256_CCM" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8" +# define TLS1_3_RFC_AES_128_GCM_SHA256 "TLS_AES_128_GCM_SHA256" +# define TLS1_3_RFC_AES_256_GCM_SHA384 "TLS_AES_256_GCM_SHA384" +# define TLS1_3_RFC_CHACHA20_POLY1305_SHA256 "TLS_CHACHA20_POLY1305_SHA256" +# define TLS1_3_RFC_AES_128_CCM_SHA256 "TLS_AES_128_CCM_SHA256" +# define TLS1_3_RFC_AES_128_CCM_8_SHA256 "TLS_AES_128_CCM_8_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA "TLS_ECDHE_ECDSA_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA "TLS_ECDHE_RSA_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_NULL_SHA "TLS_ECDH_anon_WITH_NULL_SHA" +# define TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA "TLS_ECDH_anon_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA "TLS_ECDH_anon_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_NULL_SHA "TLS_PSK_WITH_NULL_SHA" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA "TLS_DHE_PSK_WITH_NULL_SHA" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA "TLS_RSA_PSK_WITH_NULL_SHA" +# define TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA "TLS_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA "TLS_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA "TLS_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA "TLS_DHE_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA "TLS_DHE_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA "TLS_RSA_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA "TLS_RSA_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256 "TLS_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384 "TLS_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256 "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384 "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256 "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384 "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256 "TLS_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384 "TLS_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_PSK_WITH_NULL_SHA256 "TLS_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_PSK_WITH_NULL_SHA384 "TLS_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA256 "TLS_DHE_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA384 "TLS_DHE_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256 "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384 "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA256 "TLS_RSA_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA384 "TLS_RSA_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA "TLS_ECDHE_PSK_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256 "TLS_ECDHE_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384 "TLS_ECDHE_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305 "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_PSK_WITH_CHACHA20_POLY1305 "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305 "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305 "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305 "TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_RSA_WITH_SEED_SHA "TLS_RSA_WITH_SEED_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_SEED_SHA "TLS_DHE_DSS_WITH_SEED_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_SEED_SHA "TLS_DHE_RSA_WITH_SEED_CBC_SHA" +# define TLS1_RFC_ADH_WITH_SEED_SHA "TLS_DH_anon_WITH_SEED_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA "TLS_ECDHE_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA "TLS_ECDH_anon_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA "TLS_ECDHE_RSA_WITH_RC4_128_SHA" +# define TLS1_RFC_PSK_WITH_RC4_128_SHA "TLS_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA "TLS_RSA_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA "TLS_DHE_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_anon_WITH_ARIA_128_GCM_SHA256 "TLS_DH_anon_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_anon_WITH_ARIA_256_GCM_SHA384 "TLS_DH_anon_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_PSK_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384" + + +/* + * XXX Backward compatibility alert: Older versions of OpenSSL gave some DHE + * ciphers names with "EDH" instead of "DHE". Going forward, we should be + * using DHE everywhere, though we may indefinitely maintain aliases for + * users or configurations that used "EDH" + */ +# define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" + +# define TLS1_TXT_PSK_WITH_NULL_SHA "PSK-NULL-SHA" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA "DHE-PSK-NULL-SHA" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA "RSA-PSK-NULL-SHA" + +/* AES ciphersuites from RFC3268 */ +# define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" +# define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" + +# define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" +# define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" + +/* ECC ciphersuites from RFC4492 */ +# define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" + +# define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" +# define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" +# define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" + +/* PSK ciphersuites from RFC 4279 */ +# define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" +# define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" + +# define TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA "DHE-PSK-RC4-SHA" +# define TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA "DHE-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA "DHE-PSK-AES128-CBC-SHA" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA "DHE-PSK-AES256-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA "RSA-PSK-RC4-SHA" +# define TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA "RSA-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA "RSA-PSK-AES128-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA "RSA-PSK-AES256-CBC-SHA" + +/* PSK ciphersuites from RFC 5487 */ +# define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256 "DHE-PSK-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384 "DHE-PSK-AES256-GCM-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256 "RSA-PSK-AES128-GCM-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384 "RSA-PSK-AES256-GCM-SHA384" + +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256 "PSK-AES128-CBC-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384 "PSK-AES256-CBC-SHA384" +# define TLS1_TXT_PSK_WITH_NULL_SHA256 "PSK-NULL-SHA256" +# define TLS1_TXT_PSK_WITH_NULL_SHA384 "PSK-NULL-SHA384" + +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256 "DHE-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384 "DHE-PSK-AES256-CBC-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA256 "DHE-PSK-NULL-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA384 "DHE-PSK-NULL-SHA384" + +# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256 "RSA-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384 "RSA-PSK-AES256-CBC-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA256 "RSA-PSK-NULL-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA384 "RSA-PSK-NULL-SHA384" + +/* SRP ciphersuite from RFC 5054 */ +# define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256 "CAMELLIA128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DH-DSS-CAMELLIA128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DH-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DHE-DSS-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DHE-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA256 "ADH-CAMELLIA128-SHA256" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA256 "CAMELLIA256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DH-DSS-CAMELLIA256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DH-RSA-CAMELLIA256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DHE-DSS-CAMELLIA256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DHE-RSA-CAMELLIA256-SHA256" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA256 "ADH-CAMELLIA256-SHA256" + +# define TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256 "PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384 "PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "DHE-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "DHE-PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "RSA-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "RSA-PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-PSK-CAMELLIA256-SHA384" + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" +# define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" +# define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" +# define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" +# define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" +# define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" + +/* TLS v1.2 ciphersuites */ +# define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" +# define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" +# define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" + +/* CCM ciphersuites from RFC6655 */ +# define TLS1_TXT_RSA_WITH_AES_128_CCM "AES128-CCM" +# define TLS1_TXT_RSA_WITH_AES_256_CCM "AES256-CCM" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM "DHE-RSA-AES128-CCM" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM "DHE-RSA-AES256-CCM" + +# define TLS1_TXT_RSA_WITH_AES_128_CCM_8 "AES128-CCM8" +# define TLS1_TXT_RSA_WITH_AES_256_CCM_8 "AES256-CCM8" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8 "DHE-RSA-AES128-CCM8" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8 "DHE-RSA-AES256-CCM8" + +# define TLS1_TXT_PSK_WITH_AES_128_CCM "PSK-AES128-CCM" +# define TLS1_TXT_PSK_WITH_AES_256_CCM "PSK-AES256-CCM" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM "DHE-PSK-AES128-CCM" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM "DHE-PSK-AES256-CCM" + +# define TLS1_TXT_PSK_WITH_AES_128_CCM_8 "PSK-AES128-CCM8" +# define TLS1_TXT_PSK_WITH_AES_256_CCM_8 "PSK-AES256-CCM8" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8 "DHE-PSK-AES128-CCM8" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8 "DHE-PSK-AES256-CCM8" + +/* CCM ciphersuites from RFC7251 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM "ECDHE-ECDSA-AES128-CCM" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM "ECDHE-ECDSA-AES256-CCM" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8 "ECDHE-ECDSA-AES128-CCM8" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 "ECDHE-ECDSA-AES256-CCM8" + +/* ECDH HMAC based ciphersuites from RFC5289 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" + +/* TLS v1.2 PSK GCM ciphersuites from RFC5487 */ +# define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" + +/* ECDHE PSK ciphersuites from RFC 5489 */ +# define TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA "ECDHE-PSK-RC4-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "ECDHE-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA "ECDHE-PSK-AES128-CBC-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA "ECDHE-PSK-AES256-CBC-SHA" + +# define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "ECDHE-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "ECDHE-PSK-AES256-CBC-SHA384" + +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA "ECDHE-PSK-NULL-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256 "ECDHE-PSK-NULL-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384 "ECDHE-PSK-NULL-SHA384" + +/* Camellia-CBC ciphersuites from RFC6367 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-ECDSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-ECDSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-ECDSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-ECDSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-RSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-RSA-CAMELLIA256-SHA384" + +/* draft-ietf-tls-chacha20-poly1305-03 */ +# define TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 "ECDHE-RSA-CHACHA20-POLY1305" +# define TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "ECDHE-ECDSA-CHACHA20-POLY1305" +# define TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305 "DHE-RSA-CHACHA20-POLY1305" +# define TLS1_TXT_PSK_WITH_CHACHA20_POLY1305 "PSK-CHACHA20-POLY1305" +# define TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305 "ECDHE-PSK-CHACHA20-POLY1305" +# define TLS1_TXT_DHE_PSK_WITH_CHACHA20_POLY1305 "DHE-PSK-CHACHA20-POLY1305" +# define TLS1_TXT_RSA_PSK_WITH_CHACHA20_POLY1305 "RSA-PSK-CHACHA20-POLY1305" + +/* Aria ciphersuites from RFC6209 */ +# define TLS1_TXT_RSA_WITH_ARIA_128_GCM_SHA256 "ARIA128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_ARIA_256_GCM_SHA384 "ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "DHE-RSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "DHE-RSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_ARIA_128_GCM_SHA256 "DH-RSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_ARIA_256_GCM_SHA384 "DH-RSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "DHE-DSS-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "DHE-DSS-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_ARIA_128_GCM_SHA256 "DH-DSS-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_ARIA_256_GCM_SHA384 "DH-DSS-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_anon_WITH_ARIA_128_GCM_SHA256 "ADH-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_anon_WITH_ARIA_256_GCM_SHA384 "ADH-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ECDSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ECDSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ECDSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ECDSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ARIA256-GCM-SHA384" +# define TLS1_TXT_PSK_WITH_ARIA_128_GCM_SHA256 "PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_ARIA_256_GCM_SHA384 "PSK-ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "DHE-PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "DHE-PSK-ARIA256-GCM-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "RSA-PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "RSA-PSK-ARIA256-GCM-SHA384" + +# define TLS_CT_RSA_SIGN 1 +# define TLS_CT_DSS_SIGN 2 +# define TLS_CT_RSA_FIXED_DH 3 +# define TLS_CT_DSS_FIXED_DH 4 +# define TLS_CT_ECDSA_SIGN 64 +# define TLS_CT_RSA_FIXED_ECDH 65 +# define TLS_CT_ECDSA_FIXED_ECDH 66 +# define TLS_CT_GOST01_SIGN 22 +# define TLS_CT_GOST12_SIGN 238 +# define TLS_CT_GOST12_512_SIGN 239 + +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +# define TLS_CT_NUMBER 10 + +# if defined(SSL3_CT_NUMBER) +# if TLS_CT_NUMBER != SSL3_CT_NUMBER +# error "SSL/TLS CT_NUMBER values do not match" +# endif +# endif + +# define TLS1_FINISH_MAC_LENGTH 12 + +# define TLS_MD_MAX_CONST_SIZE 22 +# define TLS_MD_CLIENT_FINISH_CONST "client finished" +# define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 +# define TLS_MD_SERVER_FINISH_CONST "server finished" +# define TLS_MD_SERVER_FINISH_CONST_SIZE 15 +# define TLS_MD_KEY_EXPANSION_CONST "key expansion" +# define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 +# define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key" +# define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" +# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_IV_BLOCK_CONST "IV block" +# define TLS_MD_IV_BLOCK_CONST_SIZE 8 +# define TLS_MD_MASTER_SECRET_CONST "master secret" +# define TLS_MD_MASTER_SECRET_CONST_SIZE 13 +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST "extended master secret" +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE 22 + +# ifdef CHARSET_EBCDIC +# undef TLS_MD_CLIENT_FINISH_CONST +/* + * client finished + */ +# define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_FINISH_CONST +/* + * server finished + */ +# define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_KEY_EXPANSION_CONST +/* + * key expansion + */ +# define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" + +# undef TLS_MD_CLIENT_WRITE_KEY_CONST +/* + * client write key + */ +# define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_IV_BLOCK_CONST +/* + * IV block + */ +# define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" + +# undef TLS_MD_MASTER_SECRET_CONST +/* + * master secret + */ +# define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# undef TLS_MD_EXTENDED_MASTER_SECRET_CONST +/* + * extended master secret + */ +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST "\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# endif + +/* TLS Session Ticket extension struct */ +struct tls_session_ticket_ext_st { + unsigned short length; + void *data; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/win64/include/openssl/ts.h b/openSSL/win64/include/openssl/ts.h new file mode 100644 index 0000000..3b58aa5 --- /dev/null +++ b/openSSL/win64/include/openssl/ts.h @@ -0,0 +1,559 @@ +/* + * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TS_H +# define HEADER_TS_H + +# include + +# ifndef OPENSSL_NO_TS +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# include +# include + +typedef struct TS_msg_imprint_st TS_MSG_IMPRINT; +typedef struct TS_req_st TS_REQ; +typedef struct TS_accuracy_st TS_ACCURACY; +typedef struct TS_tst_info_st TS_TST_INFO; + +/* Possible values for status. */ +# define TS_STATUS_GRANTED 0 +# define TS_STATUS_GRANTED_WITH_MODS 1 +# define TS_STATUS_REJECTION 2 +# define TS_STATUS_WAITING 3 +# define TS_STATUS_REVOCATION_WARNING 4 +# define TS_STATUS_REVOCATION_NOTIFICATION 5 + +/* Possible values for failure_info. */ +# define TS_INFO_BAD_ALG 0 +# define TS_INFO_BAD_REQUEST 2 +# define TS_INFO_BAD_DATA_FORMAT 5 +# define TS_INFO_TIME_NOT_AVAILABLE 14 +# define TS_INFO_UNACCEPTED_POLICY 15 +# define TS_INFO_UNACCEPTED_EXTENSION 16 +# define TS_INFO_ADD_INFO_NOT_AVAILABLE 17 +# define TS_INFO_SYSTEM_FAILURE 25 + + +typedef struct TS_status_info_st TS_STATUS_INFO; +typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL; +typedef struct ESS_cert_id ESS_CERT_ID; +typedef struct ESS_signing_cert ESS_SIGNING_CERT; + +DEFINE_STACK_OF(ESS_CERT_ID) + +typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; +typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; + +DEFINE_STACK_OF(ESS_CERT_ID_V2) + +typedef struct TS_resp_st TS_RESP; + +TS_REQ *TS_REQ_new(void); +void TS_REQ_free(TS_REQ *a); +int i2d_TS_REQ(const TS_REQ *a, unsigned char **pp); +TS_REQ *d2i_TS_REQ(TS_REQ **a, const unsigned char **pp, long length); + +TS_REQ *TS_REQ_dup(TS_REQ *a); + +#ifndef OPENSSL_NO_STDIO +TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a); +int i2d_TS_REQ_fp(FILE *fp, TS_REQ *a); +#endif +TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a); +int i2d_TS_REQ_bio(BIO *fp, TS_REQ *a); + +TS_MSG_IMPRINT *TS_MSG_IMPRINT_new(void); +void TS_MSG_IMPRINT_free(TS_MSG_IMPRINT *a); +int i2d_TS_MSG_IMPRINT(const TS_MSG_IMPRINT *a, unsigned char **pp); +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT(TS_MSG_IMPRINT **a, + const unsigned char **pp, long length); + +TS_MSG_IMPRINT *TS_MSG_IMPRINT_dup(TS_MSG_IMPRINT *a); + +#ifndef OPENSSL_NO_STDIO +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_fp(FILE *fp, TS_MSG_IMPRINT *a); +#endif +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT **a); +int i2d_TS_MSG_IMPRINT_bio(BIO *bio, TS_MSG_IMPRINT *a); + +TS_RESP *TS_RESP_new(void); +void TS_RESP_free(TS_RESP *a); +int i2d_TS_RESP(const TS_RESP *a, unsigned char **pp); +TS_RESP *d2i_TS_RESP(TS_RESP **a, const unsigned char **pp, long length); +TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token); +TS_RESP *TS_RESP_dup(TS_RESP *a); + +#ifndef OPENSSL_NO_STDIO +TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a); +int i2d_TS_RESP_fp(FILE *fp, TS_RESP *a); +#endif +TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a); +int i2d_TS_RESP_bio(BIO *bio, TS_RESP *a); + +TS_STATUS_INFO *TS_STATUS_INFO_new(void); +void TS_STATUS_INFO_free(TS_STATUS_INFO *a); +int i2d_TS_STATUS_INFO(const TS_STATUS_INFO *a, unsigned char **pp); +TS_STATUS_INFO *d2i_TS_STATUS_INFO(TS_STATUS_INFO **a, + const unsigned char **pp, long length); +TS_STATUS_INFO *TS_STATUS_INFO_dup(TS_STATUS_INFO *a); + +TS_TST_INFO *TS_TST_INFO_new(void); +void TS_TST_INFO_free(TS_TST_INFO *a); +int i2d_TS_TST_INFO(const TS_TST_INFO *a, unsigned char **pp); +TS_TST_INFO *d2i_TS_TST_INFO(TS_TST_INFO **a, const unsigned char **pp, + long length); +TS_TST_INFO *TS_TST_INFO_dup(TS_TST_INFO *a); + +#ifndef OPENSSL_NO_STDIO +TS_TST_INFO *d2i_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO **a); +int i2d_TS_TST_INFO_fp(FILE *fp, TS_TST_INFO *a); +#endif +TS_TST_INFO *d2i_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO **a); +int i2d_TS_TST_INFO_bio(BIO *bio, TS_TST_INFO *a); + +TS_ACCURACY *TS_ACCURACY_new(void); +void TS_ACCURACY_free(TS_ACCURACY *a); +int i2d_TS_ACCURACY(const TS_ACCURACY *a, unsigned char **pp); +TS_ACCURACY *d2i_TS_ACCURACY(TS_ACCURACY **a, const unsigned char **pp, + long length); +TS_ACCURACY *TS_ACCURACY_dup(TS_ACCURACY *a); + +ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_new(void); +void ESS_ISSUER_SERIAL_free(ESS_ISSUER_SERIAL *a); +int i2d_ESS_ISSUER_SERIAL(const ESS_ISSUER_SERIAL *a, unsigned char **pp); +ESS_ISSUER_SERIAL *d2i_ESS_ISSUER_SERIAL(ESS_ISSUER_SERIAL **a, + const unsigned char **pp, + long length); +ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_dup(ESS_ISSUER_SERIAL *a); + +ESS_CERT_ID *ESS_CERT_ID_new(void); +void ESS_CERT_ID_free(ESS_CERT_ID *a); +int i2d_ESS_CERT_ID(const ESS_CERT_ID *a, unsigned char **pp); +ESS_CERT_ID *d2i_ESS_CERT_ID(ESS_CERT_ID **a, const unsigned char **pp, + long length); +ESS_CERT_ID *ESS_CERT_ID_dup(ESS_CERT_ID *a); + +ESS_SIGNING_CERT *ESS_SIGNING_CERT_new(void); +void ESS_SIGNING_CERT_free(ESS_SIGNING_CERT *a); +int i2d_ESS_SIGNING_CERT(const ESS_SIGNING_CERT *a, unsigned char **pp); +ESS_SIGNING_CERT *d2i_ESS_SIGNING_CERT(ESS_SIGNING_CERT **a, + const unsigned char **pp, long length); +ESS_SIGNING_CERT *ESS_SIGNING_CERT_dup(ESS_SIGNING_CERT *a); + +ESS_CERT_ID_V2 *ESS_CERT_ID_V2_new(void); +void ESS_CERT_ID_V2_free(ESS_CERT_ID_V2 *a); +int i2d_ESS_CERT_ID_V2(const ESS_CERT_ID_V2 *a, unsigned char **pp); +ESS_CERT_ID_V2 *d2i_ESS_CERT_ID_V2(ESS_CERT_ID_V2 **a, + const unsigned char **pp, long length); +ESS_CERT_ID_V2 *ESS_CERT_ID_V2_dup(ESS_CERT_ID_V2 *a); + +ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_new(void); +void ESS_SIGNING_CERT_V2_free(ESS_SIGNING_CERT_V2 *a); +int i2d_ESS_SIGNING_CERT_V2(const ESS_SIGNING_CERT_V2 *a, unsigned char **pp); +ESS_SIGNING_CERT_V2 *d2i_ESS_SIGNING_CERT_V2(ESS_SIGNING_CERT_V2 **a, + const unsigned char **pp, + long length); +ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_dup(ESS_SIGNING_CERT_V2 *a); + +int TS_REQ_set_version(TS_REQ *a, long version); +long TS_REQ_get_version(const TS_REQ *a); + +int TS_STATUS_INFO_set_status(TS_STATUS_INFO *a, int i); +const ASN1_INTEGER *TS_STATUS_INFO_get0_status(const TS_STATUS_INFO *a); + +const STACK_OF(ASN1_UTF8STRING) * +TS_STATUS_INFO_get0_text(const TS_STATUS_INFO *a); + +const ASN1_BIT_STRING * +TS_STATUS_INFO_get0_failure_info(const TS_STATUS_INFO *a); + +int TS_REQ_set_msg_imprint(TS_REQ *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_REQ_get_msg_imprint(TS_REQ *a); + +int TS_MSG_IMPRINT_set_algo(TS_MSG_IMPRINT *a, X509_ALGOR *alg); +X509_ALGOR *TS_MSG_IMPRINT_get_algo(TS_MSG_IMPRINT *a); + +int TS_MSG_IMPRINT_set_msg(TS_MSG_IMPRINT *a, unsigned char *d, int len); +ASN1_OCTET_STRING *TS_MSG_IMPRINT_get_msg(TS_MSG_IMPRINT *a); + +int TS_REQ_set_policy_id(TS_REQ *a, const ASN1_OBJECT *policy); +ASN1_OBJECT *TS_REQ_get_policy_id(TS_REQ *a); + +int TS_REQ_set_nonce(TS_REQ *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_REQ_get_nonce(const TS_REQ *a); + +int TS_REQ_set_cert_req(TS_REQ *a, int cert_req); +int TS_REQ_get_cert_req(const TS_REQ *a); + +STACK_OF(X509_EXTENSION) *TS_REQ_get_exts(TS_REQ *a); +void TS_REQ_ext_free(TS_REQ *a); +int TS_REQ_get_ext_count(TS_REQ *a); +int TS_REQ_get_ext_by_NID(TS_REQ *a, int nid, int lastpos); +int TS_REQ_get_ext_by_OBJ(TS_REQ *a, const ASN1_OBJECT *obj, int lastpos); +int TS_REQ_get_ext_by_critical(TS_REQ *a, int crit, int lastpos); +X509_EXTENSION *TS_REQ_get_ext(TS_REQ *a, int loc); +X509_EXTENSION *TS_REQ_delete_ext(TS_REQ *a, int loc); +int TS_REQ_add_ext(TS_REQ *a, X509_EXTENSION *ex, int loc); +void *TS_REQ_get_ext_d2i(TS_REQ *a, int nid, int *crit, int *idx); + +/* Function declarations for TS_REQ defined in ts/ts_req_print.c */ + +int TS_REQ_print_bio(BIO *bio, TS_REQ *a); + +/* Function declarations for TS_RESP defined in ts/ts_resp_utils.c */ + +int TS_RESP_set_status_info(TS_RESP *a, TS_STATUS_INFO *info); +TS_STATUS_INFO *TS_RESP_get_status_info(TS_RESP *a); + +/* Caller loses ownership of PKCS7 and TS_TST_INFO objects. */ +void TS_RESP_set_tst_info(TS_RESP *a, PKCS7 *p7, TS_TST_INFO *tst_info); +PKCS7 *TS_RESP_get_token(TS_RESP *a); +TS_TST_INFO *TS_RESP_get_tst_info(TS_RESP *a); + +int TS_TST_INFO_set_version(TS_TST_INFO *a, long version); +long TS_TST_INFO_get_version(const TS_TST_INFO *a); + +int TS_TST_INFO_set_policy_id(TS_TST_INFO *a, ASN1_OBJECT *policy_id); +ASN1_OBJECT *TS_TST_INFO_get_policy_id(TS_TST_INFO *a); + +int TS_TST_INFO_set_msg_imprint(TS_TST_INFO *a, TS_MSG_IMPRINT *msg_imprint); +TS_MSG_IMPRINT *TS_TST_INFO_get_msg_imprint(TS_TST_INFO *a); + +int TS_TST_INFO_set_serial(TS_TST_INFO *a, const ASN1_INTEGER *serial); +const ASN1_INTEGER *TS_TST_INFO_get_serial(const TS_TST_INFO *a); + +int TS_TST_INFO_set_time(TS_TST_INFO *a, const ASN1_GENERALIZEDTIME *gtime); +const ASN1_GENERALIZEDTIME *TS_TST_INFO_get_time(const TS_TST_INFO *a); + +int TS_TST_INFO_set_accuracy(TS_TST_INFO *a, TS_ACCURACY *accuracy); +TS_ACCURACY *TS_TST_INFO_get_accuracy(TS_TST_INFO *a); + +int TS_ACCURACY_set_seconds(TS_ACCURACY *a, const ASN1_INTEGER *seconds); +const ASN1_INTEGER *TS_ACCURACY_get_seconds(const TS_ACCURACY *a); + +int TS_ACCURACY_set_millis(TS_ACCURACY *a, const ASN1_INTEGER *millis); +const ASN1_INTEGER *TS_ACCURACY_get_millis(const TS_ACCURACY *a); + +int TS_ACCURACY_set_micros(TS_ACCURACY *a, const ASN1_INTEGER *micros); +const ASN1_INTEGER *TS_ACCURACY_get_micros(const TS_ACCURACY *a); + +int TS_TST_INFO_set_ordering(TS_TST_INFO *a, int ordering); +int TS_TST_INFO_get_ordering(const TS_TST_INFO *a); + +int TS_TST_INFO_set_nonce(TS_TST_INFO *a, const ASN1_INTEGER *nonce); +const ASN1_INTEGER *TS_TST_INFO_get_nonce(const TS_TST_INFO *a); + +int TS_TST_INFO_set_tsa(TS_TST_INFO *a, GENERAL_NAME *tsa); +GENERAL_NAME *TS_TST_INFO_get_tsa(TS_TST_INFO *a); + +STACK_OF(X509_EXTENSION) *TS_TST_INFO_get_exts(TS_TST_INFO *a); +void TS_TST_INFO_ext_free(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_count(TS_TST_INFO *a); +int TS_TST_INFO_get_ext_by_NID(TS_TST_INFO *a, int nid, int lastpos); +int TS_TST_INFO_get_ext_by_OBJ(TS_TST_INFO *a, const ASN1_OBJECT *obj, + int lastpos); +int TS_TST_INFO_get_ext_by_critical(TS_TST_INFO *a, int crit, int lastpos); +X509_EXTENSION *TS_TST_INFO_get_ext(TS_TST_INFO *a, int loc); +X509_EXTENSION *TS_TST_INFO_delete_ext(TS_TST_INFO *a, int loc); +int TS_TST_INFO_add_ext(TS_TST_INFO *a, X509_EXTENSION *ex, int loc); +void *TS_TST_INFO_get_ext_d2i(TS_TST_INFO *a, int nid, int *crit, int *idx); + +/* + * Declarations related to response generation, defined in ts/ts_resp_sign.c. + */ + +/* Optional flags for response generation. */ + +/* Don't include the TSA name in response. */ +# define TS_TSA_NAME 0x01 + +/* Set ordering to true in response. */ +# define TS_ORDERING 0x02 + +/* + * Include the signer certificate and the other specified certificates in + * the ESS signing certificate attribute beside the PKCS7 signed data. + * Only the signer certificates is included by default. + */ +# define TS_ESS_CERT_ID_CHAIN 0x04 + +/* Forward declaration. */ +struct TS_resp_ctx; + +/* This must return a unique number less than 160 bits long. */ +typedef ASN1_INTEGER *(*TS_serial_cb) (struct TS_resp_ctx *, void *); + +/* + * This must return the seconds and microseconds since Jan 1, 1970 in the sec + * and usec variables allocated by the caller. Return non-zero for success + * and zero for failure. + */ +typedef int (*TS_time_cb) (struct TS_resp_ctx *, void *, long *sec, + long *usec); + +/* + * This must process the given extension. It can modify the TS_TST_INFO + * object of the context. Return values: !0 (processed), 0 (error, it must + * set the status info/failure info of the response). + */ +typedef int (*TS_extension_cb) (struct TS_resp_ctx *, X509_EXTENSION *, + void *); + +typedef struct TS_resp_ctx TS_RESP_CTX; + +DEFINE_STACK_OF_CONST(EVP_MD) + +/* Creates a response context that can be used for generating responses. */ +TS_RESP_CTX *TS_RESP_CTX_new(void); +void TS_RESP_CTX_free(TS_RESP_CTX *ctx); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_cert(TS_RESP_CTX *ctx, X509 *signer); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_key(TS_RESP_CTX *ctx, EVP_PKEY *key); + +int TS_RESP_CTX_set_signer_digest(TS_RESP_CTX *ctx, + const EVP_MD *signer_digest); +int TS_RESP_CTX_set_ess_cert_id_digest(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *def_policy); + +/* No additional certs are included in the response by default. */ +int TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, STACK_OF(X509) *certs); + +/* + * Adds a new acceptable policy, only the default policy is accepted by + * default. + */ +int TS_RESP_CTX_add_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *policy); + +/* + * Adds a new acceptable message digest. Note that no message digests are + * accepted by default. The md argument is shared with the caller. + */ +int TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* Accuracy is not included by default. */ +int TS_RESP_CTX_set_accuracy(TS_RESP_CTX *ctx, + int secs, int millis, int micros); + +/* + * Clock precision digits, i.e. the number of decimal digits: '0' means sec, + * '3' msec, '6' usec, and so on. Default is 0. + */ +int TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx, + unsigned clock_precision_digits); +/* At most we accept usec precision. */ +# define TS_MAX_CLOCK_PRECISION_DIGITS 6 + +/* Maximum status message length */ +# define TS_MAX_STATUS_LENGTH (1024 * 1024) + +/* No flags are set by default. */ +void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags); + +/* Default callback always returns a constant. */ +void TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data); + +/* Default callback uses the gettimeofday() and gmtime() system calls. */ +void TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data); + +/* + * Default callback rejects all extensions. The extension callback is called + * when the TS_TST_INFO object is already set up and not signed yet. + */ +/* FIXME: extension handling is not tested yet. */ +void TS_RESP_CTX_set_extension_cb(TS_RESP_CTX *ctx, + TS_extension_cb cb, void *data); + +/* The following methods can be used in the callbacks. */ +int TS_RESP_CTX_set_status_info(TS_RESP_CTX *ctx, + int status, const char *text); + +/* Sets the status info only if it is still TS_STATUS_GRANTED. */ +int TS_RESP_CTX_set_status_info_cond(TS_RESP_CTX *ctx, + int status, const char *text); + +int TS_RESP_CTX_add_failure_info(TS_RESP_CTX *ctx, int failure); + +/* The get methods below can be used in the extension callback. */ +TS_REQ *TS_RESP_CTX_get_request(TS_RESP_CTX *ctx); + +TS_TST_INFO *TS_RESP_CTX_get_tst_info(TS_RESP_CTX *ctx); + +/* + * Creates the signed TS_TST_INFO and puts it in TS_RESP. + * In case of errors it sets the status info properly. + * Returns NULL only in case of memory allocation/fatal error. + */ +TS_RESP *TS_RESP_create_response(TS_RESP_CTX *ctx, BIO *req_bio); + +/* + * Declarations related to response verification, + * they are defined in ts/ts_resp_verify.c. + */ + +int TS_RESP_verify_signature(PKCS7 *token, STACK_OF(X509) *certs, + X509_STORE *store, X509 **signer_out); + +/* Context structure for the generic verify method. */ + +/* Verify the signer's certificate and the signature of the response. */ +# define TS_VFY_SIGNATURE (1u << 0) +/* Verify the version number of the response. */ +# define TS_VFY_VERSION (1u << 1) +/* Verify if the policy supplied by the user matches the policy of the TSA. */ +# define TS_VFY_POLICY (1u << 2) +/* + * Verify the message imprint provided by the user. This flag should not be + * specified with TS_VFY_DATA. + */ +# define TS_VFY_IMPRINT (1u << 3) +/* + * Verify the message imprint computed by the verify method from the user + * provided data and the MD algorithm of the response. This flag should not + * be specified with TS_VFY_IMPRINT. + */ +# define TS_VFY_DATA (1u << 4) +/* Verify the nonce value. */ +# define TS_VFY_NONCE (1u << 5) +/* Verify if the TSA name field matches the signer certificate. */ +# define TS_VFY_SIGNER (1u << 6) +/* Verify if the TSA name field equals to the user provided name. */ +# define TS_VFY_TSA_NAME (1u << 7) + +/* You can use the following convenience constants. */ +# define TS_VFY_ALL_IMPRINT (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_IMPRINT \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) +# define TS_VFY_ALL_DATA (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_DATA \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) + +typedef struct TS_verify_ctx TS_VERIFY_CTX; + +int TS_RESP_verify_response(TS_VERIFY_CTX *ctx, TS_RESP *response); +int TS_RESP_verify_token(TS_VERIFY_CTX *ctx, PKCS7 *token); + +/* + * Declarations related to response verification context, + */ +TS_VERIFY_CTX *TS_VERIFY_CTX_new(void); +void TS_VERIFY_CTX_init(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_free(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_cleanup(TS_VERIFY_CTX *ctx); +int TS_VERIFY_CTX_set_flags(TS_VERIFY_CTX *ctx, int f); +int TS_VERIFY_CTX_add_flags(TS_VERIFY_CTX *ctx, int f); +BIO *TS_VERIFY_CTX_set_data(TS_VERIFY_CTX *ctx, BIO *b); +unsigned char *TS_VERIFY_CTX_set_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +X509_STORE *TS_VERIFY_CTX_set_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +STACK_OF(X509) *TS_VERIFY_CTS_set_certs(TS_VERIFY_CTX *ctx, STACK_OF(X509) *certs); + +/*- + * If ctx is NULL, it allocates and returns a new object, otherwise + * it returns ctx. It initialises all the members as follows: + * flags = TS_VFY_ALL_IMPRINT & ~(TS_VFY_TSA_NAME | TS_VFY_SIGNATURE) + * certs = NULL + * store = NULL + * policy = policy from the request or NULL if absent (in this case + * TS_VFY_POLICY is cleared from flags as well) + * md_alg = MD algorithm from request + * imprint, imprint_len = imprint from request + * data = NULL + * nonce, nonce_len = nonce from the request or NULL if absent (in this case + * TS_VFY_NONCE is cleared from flags as well) + * tsa_name = NULL + * Important: after calling this method TS_VFY_SIGNATURE should be added! + */ +TS_VERIFY_CTX *TS_REQ_to_TS_VERIFY_CTX(TS_REQ *req, TS_VERIFY_CTX *ctx); + +/* Function declarations for TS_RESP defined in ts/ts_resp_print.c */ + +int TS_RESP_print_bio(BIO *bio, TS_RESP *a); +int TS_STATUS_INFO_print_bio(BIO *bio, TS_STATUS_INFO *a); +int TS_TST_INFO_print_bio(BIO *bio, TS_TST_INFO *a); + +/* Common utility functions defined in ts/ts_lib.c */ + +int TS_ASN1_INTEGER_print_bio(BIO *bio, const ASN1_INTEGER *num); +int TS_OBJ_print_bio(BIO *bio, const ASN1_OBJECT *obj); +int TS_ext_print_bio(BIO *bio, const STACK_OF(X509_EXTENSION) *extensions); +int TS_X509_ALGOR_print_bio(BIO *bio, const X509_ALGOR *alg); +int TS_MSG_IMPRINT_print_bio(BIO *bio, TS_MSG_IMPRINT *msg); + +/* + * Function declarations for handling configuration options, defined in + * ts/ts_conf.c + */ + +X509 *TS_CONF_load_cert(const char *file); +STACK_OF(X509) *TS_CONF_load_certs(const char *file); +EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass); +const char *TS_CONF_get_tsa_section(CONF *conf, const char *section); +int TS_CONF_set_serial(CONF *conf, const char *section, TS_serial_cb cb, + TS_RESP_CTX *ctx); +#ifndef OPENSSL_NO_ENGINE +int TS_CONF_set_crypto_device(CONF *conf, const char *section, + const char *device); +int TS_CONF_set_default_engine(const char *name); +#endif +int TS_CONF_set_signer_cert(CONF *conf, const char *section, + const char *cert, TS_RESP_CTX *ctx); +int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_key(CONF *conf, const char *section, + const char *key, const char *pass, + TS_RESP_CTX *ctx); +int TS_CONF_set_signer_digest(CONF *conf, const char *section, + const char *md, TS_RESP_CTX *ctx); +int TS_CONF_set_def_policy(CONF *conf, const char *section, + const char *policy, TS_RESP_CTX *ctx); +int TS_CONF_set_policies(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_digests(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_accuracy(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_clock_precision_digits(CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ordering(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_tsa_name(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_chain(CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_digest(CONF *conf, const char *section, + TS_RESP_CTX *ctx); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/openSSL/win64/include/openssl/tserr.h b/openSSL/win64/include/openssl/tserr.h new file mode 100644 index 0000000..07f2333 --- /dev/null +++ b/openSSL/win64/include/openssl/tserr.h @@ -0,0 +1,132 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TSERR_H +# define HEADER_TSERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_TS + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_TS_strings(void); + +/* + * TS function codes. + */ +# define TS_F_DEF_SERIAL_CB 110 +# define TS_F_DEF_TIME_CB 111 +# define TS_F_ESS_ADD_SIGNING_CERT 112 +# define TS_F_ESS_ADD_SIGNING_CERT_V2 147 +# define TS_F_ESS_CERT_ID_NEW_INIT 113 +# define TS_F_ESS_CERT_ID_V2_NEW_INIT 156 +# define TS_F_ESS_SIGNING_CERT_NEW_INIT 114 +# define TS_F_ESS_SIGNING_CERT_V2_NEW_INIT 157 +# define TS_F_INT_TS_RESP_VERIFY_TOKEN 149 +# define TS_F_PKCS7_TO_TS_TST_INFO 148 +# define TS_F_TS_ACCURACY_SET_MICROS 115 +# define TS_F_TS_ACCURACY_SET_MILLIS 116 +# define TS_F_TS_ACCURACY_SET_SECONDS 117 +# define TS_F_TS_CHECK_IMPRINTS 100 +# define TS_F_TS_CHECK_NONCES 101 +# define TS_F_TS_CHECK_POLICY 102 +# define TS_F_TS_CHECK_SIGNING_CERTS 103 +# define TS_F_TS_CHECK_STATUS_INFO 104 +# define TS_F_TS_COMPUTE_IMPRINT 145 +# define TS_F_TS_CONF_INVALID 151 +# define TS_F_TS_CONF_LOAD_CERT 153 +# define TS_F_TS_CONF_LOAD_CERTS 154 +# define TS_F_TS_CONF_LOAD_KEY 155 +# define TS_F_TS_CONF_LOOKUP_FAIL 152 +# define TS_F_TS_CONF_SET_DEFAULT_ENGINE 146 +# define TS_F_TS_GET_STATUS_TEXT 105 +# define TS_F_TS_MSG_IMPRINT_SET_ALGO 118 +# define TS_F_TS_REQ_SET_MSG_IMPRINT 119 +# define TS_F_TS_REQ_SET_NONCE 120 +# define TS_F_TS_REQ_SET_POLICY_ID 121 +# define TS_F_TS_RESP_CREATE_RESPONSE 122 +# define TS_F_TS_RESP_CREATE_TST_INFO 123 +# define TS_F_TS_RESP_CTX_ADD_FAILURE_INFO 124 +# define TS_F_TS_RESP_CTX_ADD_MD 125 +# define TS_F_TS_RESP_CTX_ADD_POLICY 126 +# define TS_F_TS_RESP_CTX_NEW 127 +# define TS_F_TS_RESP_CTX_SET_ACCURACY 128 +# define TS_F_TS_RESP_CTX_SET_CERTS 129 +# define TS_F_TS_RESP_CTX_SET_DEF_POLICY 130 +# define TS_F_TS_RESP_CTX_SET_SIGNER_CERT 131 +# define TS_F_TS_RESP_CTX_SET_STATUS_INFO 132 +# define TS_F_TS_RESP_GET_POLICY 133 +# define TS_F_TS_RESP_SET_GENTIME_WITH_PRECISION 134 +# define TS_F_TS_RESP_SET_STATUS_INFO 135 +# define TS_F_TS_RESP_SET_TST_INFO 150 +# define TS_F_TS_RESP_SIGN 136 +# define TS_F_TS_RESP_VERIFY_SIGNATURE 106 +# define TS_F_TS_TST_INFO_SET_ACCURACY 137 +# define TS_F_TS_TST_INFO_SET_MSG_IMPRINT 138 +# define TS_F_TS_TST_INFO_SET_NONCE 139 +# define TS_F_TS_TST_INFO_SET_POLICY_ID 140 +# define TS_F_TS_TST_INFO_SET_SERIAL 141 +# define TS_F_TS_TST_INFO_SET_TIME 142 +# define TS_F_TS_TST_INFO_SET_TSA 143 +# define TS_F_TS_VERIFY 108 +# define TS_F_TS_VERIFY_CERT 109 +# define TS_F_TS_VERIFY_CTX_NEW 144 + +/* + * TS reason codes. + */ +# define TS_R_BAD_PKCS7_TYPE 132 +# define TS_R_BAD_TYPE 133 +# define TS_R_CANNOT_LOAD_CERT 137 +# define TS_R_CANNOT_LOAD_KEY 138 +# define TS_R_CERTIFICATE_VERIFY_ERROR 100 +# define TS_R_COULD_NOT_SET_ENGINE 127 +# define TS_R_COULD_NOT_SET_TIME 115 +# define TS_R_DETACHED_CONTENT 134 +# define TS_R_ESS_ADD_SIGNING_CERT_ERROR 116 +# define TS_R_ESS_ADD_SIGNING_CERT_V2_ERROR 139 +# define TS_R_ESS_SIGNING_CERTIFICATE_ERROR 101 +# define TS_R_INVALID_NULL_POINTER 102 +# define TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE 117 +# define TS_R_MESSAGE_IMPRINT_MISMATCH 103 +# define TS_R_NONCE_MISMATCH 104 +# define TS_R_NONCE_NOT_RETURNED 105 +# define TS_R_NO_CONTENT 106 +# define TS_R_NO_TIME_STAMP_TOKEN 107 +# define TS_R_PKCS7_ADD_SIGNATURE_ERROR 118 +# define TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR 119 +# define TS_R_PKCS7_TO_TS_TST_INFO_FAILED 129 +# define TS_R_POLICY_MISMATCH 108 +# define TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 120 +# define TS_R_RESPONSE_SETUP_ERROR 121 +# define TS_R_SIGNATURE_FAILURE 109 +# define TS_R_THERE_MUST_BE_ONE_SIGNER 110 +# define TS_R_TIME_SYSCALL_ERROR 122 +# define TS_R_TOKEN_NOT_PRESENT 130 +# define TS_R_TOKEN_PRESENT 131 +# define TS_R_TSA_NAME_MISMATCH 111 +# define TS_R_TSA_UNTRUSTED 112 +# define TS_R_TST_INFO_SETUP_ERROR 123 +# define TS_R_TS_DATASIGN 124 +# define TS_R_UNACCEPTABLE_POLICY 125 +# define TS_R_UNSUPPORTED_MD_ALGORITHM 126 +# define TS_R_UNSUPPORTED_VERSION 113 +# define TS_R_VAR_BAD_VALUE 135 +# define TS_R_VAR_LOOKUP_FAILURE 136 +# define TS_R_WRONG_CONTENT_TYPE 114 + +# endif +#endif diff --git a/openSSL/win64/include/openssl/txt_db.h b/openSSL/win64/include/openssl/txt_db.h new file mode 100644 index 0000000..ec981a4 --- /dev/null +++ b/openSSL/win64/include/openssl/txt_db.h @@ -0,0 +1,57 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TXT_DB_H +# define HEADER_TXT_DB_H + +# include +# include +# include +# include + +# define DB_ERROR_OK 0 +# define DB_ERROR_MALLOC 1 +# define DB_ERROR_INDEX_CLASH 2 +# define DB_ERROR_INDEX_OUT_OF_RANGE 3 +# define DB_ERROR_NO_INDEX 4 +# define DB_ERROR_INSERT_INDEX_CLASH 5 +# define DB_ERROR_WRONG_NUM_FIELDS 6 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OPENSSL_STRING *OPENSSL_PSTRING; +DEFINE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING) + +typedef struct txt_db_st { + int num_fields; + STACK_OF(OPENSSL_PSTRING) *data; + LHASH_OF(OPENSSL_STRING) **index; + int (**qual) (OPENSSL_STRING *); + long error; + long arg1; + long arg2; + OPENSSL_STRING *arg_row; +} TXT_DB; + +TXT_DB *TXT_DB_read(BIO *in, int num); +long TXT_DB_write(BIO *out, TXT_DB *db); +int TXT_DB_create_index(TXT_DB *db, int field, int (*qual) (OPENSSL_STRING *), + OPENSSL_LH_HASHFUNC hash, OPENSSL_LH_COMPFUNC cmp); +void TXT_DB_free(TXT_DB *db); +OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx, + OPENSSL_STRING *value); +int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *value); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/openSSL/win64/include/openssl/ui.h b/openSSL/win64/include/openssl/ui.h new file mode 100644 index 0000000..7c721ec --- /dev/null +++ b/openSSL/win64/include/openssl/ui.h @@ -0,0 +1,368 @@ +/* + * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_UI_H +# define HEADER_UI_H + +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# include +# include +# include + +/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ +# if OPENSSL_API_COMPAT < 0x10200000L +# ifdef OPENSSL_NO_UI_CONSOLE +# define OPENSSL_NO_UI +# endif +# endif + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * All the following functions return -1 or NULL on error and in some cases + * (UI_process()) -2 if interrupted or in some other way cancelled. When + * everything is fine, they return 0, a positive value or a non-NULL pointer, + * all depending on their purpose. + */ + +/* Creators and destructor. */ +UI *UI_new(void); +UI *UI_new_method(const UI_METHOD *method); +void UI_free(UI *ui); + +/*- + The following functions are used to add strings to be printed and prompt + strings to prompt for data. The names are UI_{add,dup}__string + and UI_{add,dup}_input_boolean. + + UI_{add,dup}__string have the following meanings: + add add a text or prompt string. The pointers given to these + functions are used verbatim, no copying is done. + dup make a copy of the text or prompt string, then add the copy + to the collection of strings in the user interface. + + The function is a name for the functionality that the given + string shall be used for. It can be one of: + input use the string as data prompt. + verify use the string as verification prompt. This + is used to verify a previous input. + info use the string for informational output. + error use the string for error output. + Honestly, there's currently no difference between info and error for the + moment. + + UI_{add,dup}_input_boolean have the same semantics for "add" and "dup", + and are typically used when one wants to prompt for a yes/no response. + + All of the functions in this group take a UI and a prompt string. + The string input and verify addition functions also take a flag argument, + a buffer for the result to end up with, a minimum input size and a maximum + input size (the result buffer MUST be large enough to be able to contain + the maximum number of characters). Additionally, the verify addition + functions takes another buffer to compare the result against. + The boolean input functions take an action description string (which should + be safe to ignore if the expected user action is obvious, for example with + a dialog box with an OK button and a Cancel button), a string of acceptable + characters to mean OK and to mean Cancel. The two last strings are checked + to make sure they don't have common characters. Additionally, the same + flag argument as for the string input is taken, as well as a result buffer. + The result buffer is required to be at least one byte long. Depending on + the answer, the first character from the OK or the Cancel character strings + will be stored in the first byte of the result buffer. No NUL will be + added, so the result is *not* a string. + + On success, the all return an index of the added information. That index + is useful when retrieving results with UI_get0_result(). */ +int UI_add_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_dup_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_add_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_dup_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_add_info_string(UI *ui, const char *text); +int UI_dup_info_string(UI *ui, const char *text); +int UI_add_error_string(UI *ui, const char *text); +int UI_dup_error_string(UI *ui, const char *text); + +/* These are the possible flags. They can be or'ed together. */ +/* Use to have echoing of input */ +# define UI_INPUT_FLAG_ECHO 0x01 +/* + * Use a default password. Where that password is found is completely up to + * the application, it might for example be in the user data set with + * UI_add_user_data(). It is not recommended to have more than one input in + * each UI being marked with this flag, or the application might get + * confused. + */ +# define UI_INPUT_FLAG_DEFAULT_PWD 0x02 + +/*- + * The user of these routines may want to define flags of their own. The core + * UI won't look at those, but will pass them on to the method routines. They + * must use higher bits so they don't get confused with the UI bits above. + * UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good + * example of use is this: + * + * #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE) + * +*/ +# define UI_INPUT_FLAG_USER_BASE 16 + +/*- + * The following function helps construct a prompt. object_desc is a + * textual short description of the object, for example "pass phrase", + * and object_name is the name of the object (might be a card name or + * a file name. + * The returned string shall always be allocated on the heap with + * OPENSSL_malloc(), and need to be free'd with OPENSSL_free(). + * + * If the ui_method doesn't contain a pointer to a user-defined prompt + * constructor, a default string is built, looking like this: + * + * "Enter {object_desc} for {object_name}:" + * + * So, if object_desc has the value "pass phrase" and object_name has + * the value "foo.key", the resulting string is: + * + * "Enter pass phrase for foo.key:" +*/ +char *UI_construct_prompt(UI *ui_method, + const char *object_desc, const char *object_name); + +/* + * The following function is used to store a pointer to user-specific data. + * Any previous such pointer will be returned and replaced. + * + * For callback purposes, this function makes a lot more sense than using + * ex_data, since the latter requires that different parts of OpenSSL or + * applications share the same ex_data index. + * + * Note that the UI_OpenSSL() method completely ignores the user data. Other + * methods may not, however. + */ +void *UI_add_user_data(UI *ui, void *user_data); +/* + * Alternatively, this function is used to duplicate the user data. + * This uses the duplicator method function. The destroy function will + * be used to free the user data in this case. + */ +int UI_dup_user_data(UI *ui, void *user_data); +/* We need a user data retrieving function as well. */ +void *UI_get0_user_data(UI *ui); + +/* Return the result associated with a prompt given with the index i. */ +const char *UI_get0_result(UI *ui, int i); +int UI_get_result_length(UI *ui, int i); + +/* When all strings have been added, process the whole thing. */ +int UI_process(UI *ui); + +/* + * Give a user interface parameterised control commands. This can be used to + * send down an integer, a data pointer or a function pointer, as well as be + * used to get information from a UI. + */ +int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f) (void)); + +/* The commands */ +/* + * Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the + * OpenSSL error stack before printing any info or added error messages and + * before any prompting. + */ +# define UI_CTRL_PRINT_ERRORS 1 +/* + * Check if a UI_process() is possible to do again with the same instance of + * a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0 + * if not. + */ +# define UI_CTRL_IS_REDOABLE 2 + +/* Some methods may use extra data */ +# define UI_set_app_data(s,arg) UI_set_ex_data(s,0,arg) +# define UI_get_app_data(s) UI_get_ex_data(s,0) + +# define UI_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef) +int UI_set_ex_data(UI *r, int idx, void *arg); +void *UI_get_ex_data(UI *r, int idx); + +/* Use specific methods instead of the built-in one */ +void UI_set_default_method(const UI_METHOD *meth); +const UI_METHOD *UI_get_default_method(void); +const UI_METHOD *UI_get_method(UI *ui); +const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth); + +# ifndef OPENSSL_NO_UI_CONSOLE + +/* The method with all the built-in thingies */ +UI_METHOD *UI_OpenSSL(void); + +# endif + +/* + * NULL method. Literally does nothing, but may serve as a placeholder + * to avoid internal default. + */ +const UI_METHOD *UI_null(void); + +/* ---------- For method writers ---------- */ +/*- + A method contains a number of functions that implement the low level + of the User Interface. The functions are: + + an opener This function starts a session, maybe by opening + a channel to a tty, or by opening a window. + a writer This function is called to write a given string, + maybe to the tty, maybe as a field label in a + window. + a flusher This function is called to flush everything that + has been output so far. It can be used to actually + display a dialog box after it has been built. + a reader This function is called to read a given prompt, + maybe from the tty, maybe from a field in a + window. Note that it's called with all string + structures, not only the prompt ones, so it must + check such things itself. + a closer This function closes the session, maybe by closing + the channel to the tty, or closing the window. + + All these functions are expected to return: + + 0 on error. + 1 on success. + -1 on out-of-band events, for example if some prompting has + been canceled (by pressing Ctrl-C, for example). This is + only checked when returned by the flusher or the reader. + + The way this is used, the opener is first called, then the writer for all + strings, then the flusher, then the reader for all strings and finally the + closer. Note that if you want to prompt from a terminal or other command + line interface, the best is to have the reader also write the prompts + instead of having the writer do it. If you want to prompt from a dialog + box, the writer can be used to build up the contents of the box, and the + flusher to actually display the box and run the event loop until all data + has been given, after which the reader only grabs the given data and puts + them back into the UI strings. + + All method functions take a UI as argument. Additionally, the writer and + the reader take a UI_STRING. +*/ + +/* + * The UI_STRING type is the data structure that contains all the needed info + * about a string or a prompt, including test data for a verification prompt. + */ +typedef struct ui_string_st UI_STRING; +DEFINE_STACK_OF(UI_STRING) + +/* + * The different types of strings that are currently supported. This is only + * needed by method authors. + */ +enum UI_string_types { + UIT_NONE = 0, + UIT_PROMPT, /* Prompt for a string */ + UIT_VERIFY, /* Prompt for a string and verify */ + UIT_BOOLEAN, /* Prompt for a yes/no response */ + UIT_INFO, /* Send info to the user */ + UIT_ERROR /* Send an error message to the user */ +}; + +/* Create and manipulate methods */ +UI_METHOD *UI_create_method(const char *name); +void UI_destroy_method(UI_METHOD *ui_method); +int UI_method_set_opener(UI_METHOD *method, int (*opener) (UI *ui)); +int UI_method_set_writer(UI_METHOD *method, + int (*writer) (UI *ui, UI_STRING *uis)); +int UI_method_set_flusher(UI_METHOD *method, int (*flusher) (UI *ui)); +int UI_method_set_reader(UI_METHOD *method, + int (*reader) (UI *ui, UI_STRING *uis)); +int UI_method_set_closer(UI_METHOD *method, int (*closer) (UI *ui)); +int UI_method_set_data_duplicator(UI_METHOD *method, + void *(*duplicator) (UI *ui, void *ui_data), + void (*destructor)(UI *ui, void *ui_data)); +int UI_method_set_prompt_constructor(UI_METHOD *method, + char *(*prompt_constructor) (UI *ui, + const char + *object_desc, + const char + *object_name)); +int UI_method_set_ex_data(UI_METHOD *method, int idx, void *data); +int (*UI_method_get_opener(const UI_METHOD *method)) (UI *); +int (*UI_method_get_writer(const UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_flusher(const UI_METHOD *method)) (UI *); +int (*UI_method_get_reader(const UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_closer(const UI_METHOD *method)) (UI *); +char *(*UI_method_get_prompt_constructor(const UI_METHOD *method)) + (UI *, const char *, const char *); +void *(*UI_method_get_data_duplicator(const UI_METHOD *method)) (UI *, void *); +void (*UI_method_get_data_destructor(const UI_METHOD *method)) (UI *, void *); +const void *UI_method_get_ex_data(const UI_METHOD *method, int idx); + +/* + * The following functions are helpers for method writers to access relevant + * data from a UI_STRING. + */ + +/* Return type of the UI_STRING */ +enum UI_string_types UI_get_string_type(UI_STRING *uis); +/* Return input flags of the UI_STRING */ +int UI_get_input_flags(UI_STRING *uis); +/* Return the actual string to output (the prompt, info or error) */ +const char *UI_get0_output_string(UI_STRING *uis); +/* + * Return the optional action string to output (the boolean prompt + * instruction) + */ +const char *UI_get0_action_string(UI_STRING *uis); +/* Return the result of a prompt */ +const char *UI_get0_result_string(UI_STRING *uis); +int UI_get_result_string_length(UI_STRING *uis); +/* + * Return the string to test the result against. Only useful with verifies. + */ +const char *UI_get0_test_string(UI_STRING *uis); +/* Return the required minimum size of the result */ +int UI_get_result_minsize(UI_STRING *uis); +/* Return the required maximum size of the result */ +int UI_get_result_maxsize(UI_STRING *uis); +/* Set the result of a UI_STRING. */ +int UI_set_result(UI *ui, UI_STRING *uis, const char *result); +int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len); + +/* A couple of popular utility functions */ +int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt, + int verify); +int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt, + int verify); +UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/uierr.h b/openSSL/win64/include/openssl/uierr.h new file mode 100644 index 0000000..bd68864 --- /dev/null +++ b/openSSL/win64/include/openssl/uierr.h @@ -0,0 +1,65 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_UIERR_H +# define HEADER_UIERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_UI_strings(void); + +/* + * UI function codes. + */ +# define UI_F_CLOSE_CONSOLE 115 +# define UI_F_ECHO_CONSOLE 116 +# define UI_F_GENERAL_ALLOCATE_BOOLEAN 108 +# define UI_F_GENERAL_ALLOCATE_PROMPT 109 +# define UI_F_NOECHO_CONSOLE 117 +# define UI_F_OPEN_CONSOLE 114 +# define UI_F_UI_CONSTRUCT_PROMPT 121 +# define UI_F_UI_CREATE_METHOD 112 +# define UI_F_UI_CTRL 111 +# define UI_F_UI_DUP_ERROR_STRING 101 +# define UI_F_UI_DUP_INFO_STRING 102 +# define UI_F_UI_DUP_INPUT_BOOLEAN 110 +# define UI_F_UI_DUP_INPUT_STRING 103 +# define UI_F_UI_DUP_USER_DATA 118 +# define UI_F_UI_DUP_VERIFY_STRING 106 +# define UI_F_UI_GET0_RESULT 107 +# define UI_F_UI_GET_RESULT_LENGTH 119 +# define UI_F_UI_NEW_METHOD 104 +# define UI_F_UI_PROCESS 113 +# define UI_F_UI_SET_RESULT 105 +# define UI_F_UI_SET_RESULT_EX 120 + +/* + * UI reason codes. + */ +# define UI_R_COMMON_OK_AND_CANCEL_CHARACTERS 104 +# define UI_R_INDEX_TOO_LARGE 102 +# define UI_R_INDEX_TOO_SMALL 103 +# define UI_R_NO_RESULT_BUFFER 105 +# define UI_R_PROCESSING_ERROR 107 +# define UI_R_RESULT_TOO_LARGE 100 +# define UI_R_RESULT_TOO_SMALL 101 +# define UI_R_SYSASSIGN_ERROR 109 +# define UI_R_SYSDASSGN_ERROR 110 +# define UI_R_SYSQIOW_ERROR 111 +# define UI_R_UNKNOWN_CONTROL_COMMAND 106 +# define UI_R_UNKNOWN_TTYGET_ERRNO_VALUE 108 +# define UI_R_USER_DATA_DUPLICATION_UNSUPPORTED 112 + +#endif diff --git a/openSSL/win64/include/openssl/whrlpool.h b/openSSL/win64/include/openssl/whrlpool.h new file mode 100644 index 0000000..20ea350 --- /dev/null +++ b/openSSL/win64/include/openssl/whrlpool.h @@ -0,0 +1,48 @@ +/* + * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_WHRLPOOL_H +# define HEADER_WHRLPOOL_H + +#include + +# ifndef OPENSSL_NO_WHIRLPOOL +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define WHIRLPOOL_DIGEST_LENGTH (512/8) +# define WHIRLPOOL_BBLOCK 512 +# define WHIRLPOOL_COUNTER (256/8) + +typedef struct { + union { + unsigned char c[WHIRLPOOL_DIGEST_LENGTH]; + /* double q is here to ensure 64-bit alignment */ + double q[WHIRLPOOL_DIGEST_LENGTH / sizeof(double)]; + } H; + unsigned char data[WHIRLPOOL_BBLOCK / 8]; + unsigned int bitoff; + size_t bitlen[WHIRLPOOL_COUNTER / sizeof(size_t)]; +} WHIRLPOOL_CTX; + +int WHIRLPOOL_Init(WHIRLPOOL_CTX *c); +int WHIRLPOOL_Update(WHIRLPOOL_CTX *c, const void *inp, size_t bytes); +void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, const void *inp, size_t bits); +int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c); +unsigned char *WHIRLPOOL(const void *inp, size_t bytes, unsigned char *md); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/openSSL/win64/include/openssl/x509.h b/openSSL/win64/include/openssl/x509.h new file mode 100644 index 0000000..3ff86ec --- /dev/null +++ b/openSSL/win64/include/openssl/x509.h @@ -0,0 +1,1050 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509_H +# define HEADER_X509_H + +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Flags for X509_get_signature_info() */ +/* Signature info is valid */ +# define X509_SIG_INFO_VALID 0x1 +/* Signature is suitable for TLS use */ +# define X509_SIG_INFO_TLS 0x2 + +# define X509_FILETYPE_PEM 1 +# define X509_FILETYPE_ASN1 2 +# define X509_FILETYPE_DEFAULT 3 + +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 +# define X509v3_KU_NON_REPUDIATION 0x0040 +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 +# define X509v3_KU_KEY_AGREEMENT 0x0008 +# define X509v3_KU_KEY_CERT_SIGN 0x0004 +# define X509v3_KU_CRL_SIGN 0x0002 +# define X509v3_KU_ENCIPHER_ONLY 0x0001 +# define X509v3_KU_DECIPHER_ONLY 0x8000 +# define X509v3_KU_UNDEF 0xffff + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */ ; + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +typedef struct X509_sig_st X509_SIG; + +typedef struct X509_name_entry_st X509_NAME_ENTRY; + +DEFINE_STACK_OF(X509_NAME_ENTRY) + +DEFINE_STACK_OF(X509_NAME) + +# define X509_EX_V_NETSCAPE_HACK 0x8000 +# define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st X509_EXTENSION; + +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; + +DEFINE_STACK_OF(X509_EXTENSION) + +typedef struct x509_attributes_st X509_ATTRIBUTE; + +DEFINE_STACK_OF(X509_ATTRIBUTE) + +typedef struct X509_req_info_st X509_REQ_INFO; + +typedef struct X509_req_st X509_REQ; + +typedef struct x509_cert_aux_st X509_CERT_AUX; + +typedef struct x509_cinf_st X509_CINF; + +DEFINE_STACK_OF(X509) + +/* This is used for a table of trust checking functions */ + +typedef struct x509_trust_st { + int trust; + int flags; + int (*check_trust) (struct x509_trust_st *, X509 *, int); + char *name; + int arg1; + void *arg2; +} X509_TRUST; + +DEFINE_STACK_OF(X509_TRUST) + +/* standard trust ids */ + +# define X509_TRUST_DEFAULT 0 /* Only valid in purpose settings */ + +# define X509_TRUST_COMPAT 1 +# define X509_TRUST_SSL_CLIENT 2 +# define X509_TRUST_SSL_SERVER 3 +# define X509_TRUST_EMAIL 4 +# define X509_TRUST_OBJECT_SIGN 5 +# define X509_TRUST_OCSP_SIGN 6 +# define X509_TRUST_OCSP_REQUEST 7 +# define X509_TRUST_TSA 8 + +/* Keep these up to date! */ +# define X509_TRUST_MIN 1 +# define X509_TRUST_MAX 8 + +/* trust_flags values */ +# define X509_TRUST_DYNAMIC (1U << 0) +# define X509_TRUST_DYNAMIC_NAME (1U << 1) +/* No compat trust if self-signed, preempts "DO_SS" */ +# define X509_TRUST_NO_SS_COMPAT (1U << 2) +/* Compat trust if no explicit accepted trust EKUs */ +# define X509_TRUST_DO_SS_COMPAT (1U << 3) +/* Accept "anyEKU" as a wildcard trust OID */ +# define X509_TRUST_OK_ANY_EKU (1U << 4) + +/* check_trust return codes */ + +# define X509_TRUST_TRUSTED 1 +# define X509_TRUST_REJECTED 2 +# define X509_TRUST_UNTRUSTED 3 + +/* Flags for X509_print_ex() */ + +# define X509_FLAG_COMPAT 0 +# define X509_FLAG_NO_HEADER 1L +# define X509_FLAG_NO_VERSION (1L << 1) +# define X509_FLAG_NO_SERIAL (1L << 2) +# define X509_FLAG_NO_SIGNAME (1L << 3) +# define X509_FLAG_NO_ISSUER (1L << 4) +# define X509_FLAG_NO_VALIDITY (1L << 5) +# define X509_FLAG_NO_SUBJECT (1L << 6) +# define X509_FLAG_NO_PUBKEY (1L << 7) +# define X509_FLAG_NO_EXTENSIONS (1L << 8) +# define X509_FLAG_NO_SIGDUMP (1L << 9) +# define X509_FLAG_NO_AUX (1L << 10) +# define X509_FLAG_NO_ATTRIBUTES (1L << 11) +# define X509_FLAG_NO_IDS (1L << 12) + +/* Flags specific to X509_NAME_print_ex() */ + +/* The field separator information */ + +# define XN_FLAG_SEP_MASK (0xf << 16) + +# define XN_FLAG_COMPAT 0/* Traditional; use old X509_NAME_print */ +# define XN_FLAG_SEP_COMMA_PLUS (1 << 16)/* RFC2253 ,+ */ +# define XN_FLAG_SEP_CPLUS_SPC (2 << 16)/* ,+ spaced: more readable */ +# define XN_FLAG_SEP_SPLUS_SPC (3 << 16)/* ;+ spaced */ +# define XN_FLAG_SEP_MULTILINE (4 << 16)/* One line per field */ + +# define XN_FLAG_DN_REV (1 << 20)/* Reverse DN order */ + +/* How the field name is shown */ + +# define XN_FLAG_FN_MASK (0x3 << 21) + +# define XN_FLAG_FN_SN 0/* Object short name */ +# define XN_FLAG_FN_LN (1 << 21)/* Object long name */ +# define XN_FLAG_FN_OID (2 << 21)/* Always use OIDs */ +# define XN_FLAG_FN_NONE (3 << 21)/* No field names */ + +# define XN_FLAG_SPC_EQ (1 << 23)/* Put spaces round '=' */ + +/* + * This determines if we dump fields we don't recognise: RFC2253 requires + * this. + */ + +# define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) + +# define XN_FLAG_FN_ALIGN (1 << 25)/* Align field names to 20 + * characters */ + +/* Complete set of RFC2253 flags */ + +# define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \ + XN_FLAG_SEP_COMMA_PLUS | \ + XN_FLAG_DN_REV | \ + XN_FLAG_FN_SN | \ + XN_FLAG_DUMP_UNKNOWN_FIELDS) + +/* readable oneline form */ + +# define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \ + ASN1_STRFLGS_ESC_QUOTE | \ + XN_FLAG_SEP_CPLUS_SPC | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_SN) + +/* readable multiline form */ + +# define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + XN_FLAG_SEP_MULTILINE | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_LN | \ + XN_FLAG_FN_ALIGN) + +DEFINE_STACK_OF(X509_REVOKED) + +typedef struct X509_crl_info_st X509_CRL_INFO; + +DEFINE_STACK_OF(X509_CRL) + +typedef struct private_key_st { + int version; + /* The PKCS#8 data types */ + X509_ALGOR *enc_algor; + ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ + /* When decrypted, the following will not be NULL */ + EVP_PKEY *dec_pkey; + /* used to encrypt and decrypt */ + int key_length; + char *key_data; + int key_free; /* true if we should auto free key_data */ + /* expanded version of 'enc_algor' */ + EVP_CIPHER_INFO cipher; +} X509_PKEY; + +typedef struct X509_info_st { + X509 *x509; + X509_CRL *crl; + X509_PKEY *x_pkey; + EVP_CIPHER_INFO enc_cipher; + int enc_len; + char *enc_data; +} X509_INFO; + +DEFINE_STACK_OF(X509_INFO) + +/* + * The next 2 structures and their 8 routines are used to manipulate Netscape's + * spki structures - useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { +/* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +#ifndef OPENSSL_NO_SCRYPT +typedef struct SCRYPT_PARAMS_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *costParameter; + ASN1_INTEGER *blockSize; + ASN1_INTEGER *parallelizationParameter; + ASN1_INTEGER *keyLength; +} SCRYPT_PARAMS; +#endif + +#ifdef __cplusplus +} +#endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define X509_EXT_PACK_UNKNOWN 1 +# define X509_EXT_PACK_STRING 2 + +# define X509_extract_key(x) X509_get_pubkey(x)/*****/ +# define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +# define X509_name_cmp(a,b) X509_NAME_cmp((a),(b)) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl), + int (*crl_free) (X509_CRL *crl), + int (*crl_lookup) (X509_CRL *crl, + X509_REVOKED **ret, + ASN1_INTEGER *ser, + X509_NAME *issuer), + int (*crl_verify) (X509_CRL *crl, + EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); + +const char *X509_verify_cert_error_string(long n); + +int X509_verify(X509 *a, EVP_PKEY *r); + +int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); +int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); +int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); + +NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); +char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); +EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); +int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); + +int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); + +int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); +int X509_signature_print(BIO *bp, const X509_ALGOR *alg, + const ASN1_STRING *sig); + +int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); +# ifndef OPENSSL_NO_OCSP +int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert); +# endif +int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); +int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); +# ifndef OPENSSL_NO_OCSP +int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl); +# endif +int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); + +int X509_pubkey_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); + +# ifndef OPENSSL_NO_STDIO +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa); +DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); +# endif + +X509 *d2i_X509_bio(BIO *bp, X509 **x509); +int i2d_X509_bio(BIO *bp, X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa); +DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); + +X509 *X509_dup(X509 *x509); +X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa); +X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex); +X509_CRL *X509_CRL_dup(X509_CRL *crl); +X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev); +X509_REQ *X509_REQ_dup(X509_REQ *req); +X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn); +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, + const void **ppval, const X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); +int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src); + +X509_NAME *X509_NAME_dup(X509_NAME *xn); +X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne); + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, + int offset_day, long offset_sec, time_t *t); +ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); + +const char *X509_get_default_cert_area(void); +const char *X509_get_default_cert_dir(void); +const char *X509_get_default_cert_file(void); +const char *X509_get_default_cert_dir_env(void); +const char *X509_get_default_cert_file_env(void); +const char *X509_get_default_private_dir(void); + +X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); + +DECLARE_ASN1_FUNCTIONS(X509_ALGOR) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) +DECLARE_ASN1_FUNCTIONS(X509_VAL) + +DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) + +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get0(X509_PUBKEY *key); +EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +long X509_get_pathlen(X509 *x); +int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp); +EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length); +# ifndef OPENSSL_NO_RSA +int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp); +RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_DSA +int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp); +DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_EC +int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp); +EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length); +# endif + +DECLARE_ASN1_FUNCTIONS(X509_SIG) +void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **palg, + const ASN1_OCTET_STRING **pdigest); +void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **palg, + ASN1_OCTET_STRING **pdigest); + +DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) +DECLARE_ASN1_FUNCTIONS(X509_REQ) + +DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) +X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); + +DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) + +DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) + +DECLARE_ASN1_FUNCTIONS(X509_NAME) + +int X509_NAME_set(X509_NAME **xn, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) + +DECLARE_ASN1_FUNCTIONS(X509) +DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) + +#define X509_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509, l, p, newf, dupf, freef) +int X509_set_ex_data(X509 *r, int idx, void *arg); +void *X509_get_ex_data(X509 *r, int idx); +int i2d_X509_AUX(X509 *a, unsigned char **pp); +X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length); + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid, + int *secbits, uint32_t *flags); +void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid, + int secbits, uint32_t flags); + +int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, + uint32_t *flags); + +void X509_get0_signature(const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg, const X509 *x); +int X509_get_signature_nid(const X509 *x); + +int X509_trusted(const X509 *x); +int X509_alias_set1(X509 *x, const unsigned char *name, int len); +int X509_keyid_set1(X509 *x, const unsigned char *id, int len); +unsigned char *X509_alias_get0(X509 *x, int *len); +unsigned char *X509_keyid_get0(X509 *x, int *len); +int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, + int); +int X509_TRUST_set(int *t, int trust); +int X509_add1_trust_object(X509 *x, const ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, const ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); + +STACK_OF(ASN1_OBJECT) *X509_get0_trust_objects(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_reject_objects(X509 *x); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); + +X509_PKEY *X509_PKEY_new(void); +void X509_PKEY_free(X509_PKEY *a); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(const X509_NAME *a, char *buf, int size); + +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); + +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); + +int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + char *data, EVP_PKEY *pkey, const EVP_MD *type); + +int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, + unsigned char *md, unsigned int *len); + +int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, void *data, EVP_PKEY *pkey); + +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, void *data, + EVP_PKEY *pkey, const EVP_MD *type); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + void *asn, EVP_MD_CTX *ctx); + +long X509_get_version(const X509 *x); +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x); +int X509_set_issuer_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_issuer_name(const X509 *a); +int X509_set_subject_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_subject_name(const X509 *a); +const ASN1_TIME * X509_get0_notBefore(const X509 *x); +ASN1_TIME *X509_getm_notBefore(const X509 *x); +int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm); +const ASN1_TIME *X509_get0_notAfter(const X509 *x); +ASN1_TIME *X509_getm_notAfter(const X509 *x); +int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +int X509_up_ref(X509 *x); +int X509_get_signature_type(const X509 *x); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_get_notBefore X509_getm_notBefore +# define X509_get_notAfter X509_getm_notAfter +# define X509_set_notBefore X509_set1_notBefore +# define X509_set_notAfter X509_set1_notAfter +#endif + + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &buf) + */ +X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x); +const STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x); +void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid, + const ASN1_BIT_STRING **psuid); +const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x); + +EVP_PKEY *X509_get0_pubkey(const X509 *x); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); +int X509_certificate_type(const X509 *x, const EVP_PKEY *pubkey); + +long X509_REQ_get_version(const X509_REQ *req); +int X509_REQ_set_version(X509_REQ *x, long version); +X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req); +int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name); +void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig); +int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg); +int X509_REQ_get_signature_nid(const X509_REQ *req); +int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts, + int nid); +int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts); +int X509_REQ_get_attr_count(const X509_REQ *req); +int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); +int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); +X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); +int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); +int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name); +int X509_CRL_set1_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set1_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); +int X509_CRL_up_ref(X509_CRL *crl); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate +# define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate +#endif + +long X509_CRL_get_version(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl); +DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl)) +DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl)) +X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl); +const STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(const X509_CRL *crl); +STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl); +void X509_CRL_get0_signature(const X509_CRL *crl, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_CRL_get_signature_nid(const X509_CRL *crl); +int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp); + +const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *x); +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *x); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); +const STACK_OF(X509_EXTENSION) * +X509_REVOKED_get0_extensions(const X509_REVOKED *r); + +X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, + EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); + +int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); + +int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_chain_check_suiteb(int *perror_depth, + X509 *x, STACK_OF(X509) *chain, + unsigned long flags); +int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); + +int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_and_serial_hash(X509 *a); + +int X509_issuer_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_name_hash(X509 *a); + +int X509_subject_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_subject_name_hash(X509 *x); + +# ifndef OPENSSL_NO_MD5 +unsigned long X509_issuer_name_hash_old(X509 *a); +unsigned long X509_subject_name_hash_old(X509 *x); +# endif + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +unsigned long X509_NAME_hash(X509_NAME *x); +unsigned long X509_NAME_hash_old(X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +int X509_aux_print(BIO *out, X509 *x, int indent); +# ifndef OPENSSL_NO_STDIO +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent, + unsigned long flags); +# endif + +int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); + +int X509_NAME_entry_count(const X509_NAME *name); +int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len); +int X509_NAME_get_text_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passing -1, not 0 as lastpos. The functions that use + * lastpos, search after that position on. + */ +int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc); +X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); +int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, + const char *field, int type, + const unsigned char *bytes, + int len); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, + int type, + const unsigned char *bytes, + int len); +int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj); +int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, + const unsigned char *bytes, int len); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne); +ASN1_STRING * X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne); +int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne); + +int X509_NAME_get0_der(X509_NAME *nm, const unsigned char **pder, + size_t *pderlen); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + const ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); + +int X509_get_ext_count(const X509 *x); +int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(const X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(const X509_CRL *x); +int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(const X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit, + int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *x, int nid, int *crit, + int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + const ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(const X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *x, + const ASN1_OBJECT *obj, int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_verify_cert(X509_STORE_CTX *ctx); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, X509_NAME *name, + ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) +#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) +#endif + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid); + +#ifndef OPENSSL_NO_SCRYPT +X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, + const unsigned char *salt, int saltlen, + unsigned char *aiv, uint64_t N, uint64_t r, + uint64_t p); +#endif + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen); + +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey); + +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, + int version, int ptype, void *pval, + unsigned char *penc, int penclen); +int PKCS8_pkey_get0(const ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + const X509_ALGOR **pa, const PKCS8_PRIV_KEY_INFO *p8); + +const STACK_OF(X509_ATTRIBUTE) * +PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8); +int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, + const unsigned char *bytes, int len); + +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, + int ptype, void *pval, + unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, X509_PUBKEY *pub); + +int X509_check_trust(X509 *x, int id, int flags); +int X509_TRUST_get_count(void); +X509_TRUST *X509_TRUST_get0(int idx); +int X509_TRUST_get_by_id(int id); +int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int), + const char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(const X509_TRUST *xp); +char *X509_TRUST_get0_name(const X509_TRUST *xp); +int X509_TRUST_get_trust(const X509_TRUST *xp); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/x509_vfy.h b/openSSL/win64/include/openssl/x509_vfy.h new file mode 100644 index 0000000..25c79f1 --- /dev/null +++ b/openSSL/win64/include/openssl/x509_vfy.h @@ -0,0 +1,632 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509_VFY_H +# define HEADER_X509_VFY_H + +/* + * Protect against recursion, x509.h and x509_vfy.h each include the other. + */ +# ifndef HEADER_X509_H +# include +# endif + +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +SSL_CTX -> X509_STORE + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + +SSL -> X509_STORE_CTX + ->X509_STORE + +The X509_STORE holds the tables etc for verification stuff. +A X509_STORE_CTX is used while validating a single certificate. +The X509_STORE has X509_LOOKUPs for looking up certs. +The X509_STORE then calls a function to actually verify the +certificate chain. +*/ + +typedef enum { + X509_LU_NONE = 0, + X509_LU_X509, X509_LU_CRL +} X509_LOOKUP_TYPE; + +#if OPENSSL_API_COMPAT < 0x10100000L +#define X509_LU_RETRY -1 +#define X509_LU_FAIL 0 +#endif + +DEFINE_STACK_OF(X509_LOOKUP) +DEFINE_STACK_OF(X509_OBJECT) +DEFINE_STACK_OF(X509_VERIFY_PARAM) + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, + X509_STORE_CTX *ctx, X509 *x); +typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, + X509 *x, X509 *issuer); +typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL **crl, X509 *x); +typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl); +typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL *crl, X509 *x); +typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx); +typedef STACK_OF(X509) *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx, + X509_NAME *nm); +typedef STACK_OF(X509_CRL) *(*X509_STORE_CTX_lookup_crls_fn)(X509_STORE_CTX *ctx, + X509_NAME *nm); +typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx); + + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +# define X509_STORE_CTX_set_app_data(ctx,data) \ + X509_STORE_CTX_set_ex_data(ctx,0,data) +# define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx,0) + +# define X509_L_FILE_LOAD 1 +# define X509_L_ADD_DIR 2 + +# define X509_LOOKUP_load_file(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_FILE_LOAD,(name),(long)(type),NULL) + +# define X509_LOOKUP_add_dir(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_ADD_DIR,(name),(long)(type),NULL) + +# define X509_V_OK 0 +# define X509_V_ERR_UNSPECIFIED 1 +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +# define X509_V_ERR_UNABLE_TO_GET_CRL 3 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +# define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +# define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +# define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +# define X509_V_ERR_CERT_NOT_YET_VALID 9 +# define X509_V_ERR_CERT_HAS_EXPIRED 10 +# define X509_V_ERR_CRL_NOT_YET_VALID 11 +# define X509_V_ERR_CRL_HAS_EXPIRED 12 +# define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +# define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +# define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +# define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +# define X509_V_ERR_OUT_OF_MEM 17 +# define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +# define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +# define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +# define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +# define X509_V_ERR_CERT_REVOKED 23 +# define X509_V_ERR_INVALID_CA 24 +# define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +# define X509_V_ERR_INVALID_PURPOSE 26 +# define X509_V_ERR_CERT_UNTRUSTED 27 +# define X509_V_ERR_CERT_REJECTED 28 +/* These are 'informational' when looking for issuer cert */ +# define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +# define X509_V_ERR_AKID_SKID_MISMATCH 30 +# define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +# define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 +# define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +# define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +# define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +# define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +# define X509_V_ERR_INVALID_NON_CA 37 +# define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +# define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +# define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 +# define X509_V_ERR_INVALID_EXTENSION 41 +# define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +# define X509_V_ERR_NO_EXPLICIT_POLICY 43 +# define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +# define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 +# define X509_V_ERR_UNNESTED_RESOURCE 46 +# define X509_V_ERR_PERMITTED_VIOLATION 47 +# define X509_V_ERR_EXCLUDED_VIOLATION 48 +# define X509_V_ERR_SUBTREE_MINMAX 49 +/* The application is not happy */ +# define X509_V_ERR_APPLICATION_VERIFICATION 50 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +# define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +# define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 +/* Another issuer check debug option */ +# define X509_V_ERR_PATH_LOOP 55 +/* Suite B mode algorithm violation */ +# define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +# define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +# define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +# define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +# define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +# define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 +/* Host, email and IP check errors */ +# define X509_V_ERR_HOSTNAME_MISMATCH 62 +# define X509_V_ERR_EMAIL_MISMATCH 63 +# define X509_V_ERR_IP_ADDRESS_MISMATCH 64 +/* DANE TLSA errors */ +# define X509_V_ERR_DANE_NO_MATCH 65 +/* security level errors */ +# define X509_V_ERR_EE_KEY_TOO_SMALL 66 +# define X509_V_ERR_CA_KEY_TOO_SMALL 67 +# define X509_V_ERR_CA_MD_TOO_WEAK 68 +/* Caller error */ +# define X509_V_ERR_INVALID_CALL 69 +/* Issuer lookup error */ +# define X509_V_ERR_STORE_LOOKUP 70 +/* Certificate transparency */ +# define X509_V_ERR_NO_VALID_SCTS 71 + +# define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72 +/* OCSP status errors */ +# define X509_V_ERR_OCSP_VERIFY_NEEDED 73 /* Need OCSP verification */ +# define X509_V_ERR_OCSP_VERIFY_FAILED 74 /* Couldn't verify cert through OCSP */ +# define X509_V_ERR_OCSP_CERT_UNKNOWN 75 /* Certificate wasn't recognized by the OCSP responder */ +# define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 76 +# define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 77 +# define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 78 +# define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 79 + +/* Certificate verify flags */ + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_V_FLAG_CB_ISSUER_CHECK 0x0 /* Deprecated */ +# endif +/* Use check time instead of current time */ +# define X509_V_FLAG_USE_CHECK_TIME 0x2 +/* Lookup CRLs */ +# define X509_V_FLAG_CRL_CHECK 0x4 +/* Lookup CRLs for whole chain */ +# define X509_V_FLAG_CRL_CHECK_ALL 0x8 +/* Ignore unhandled critical extensions */ +# define X509_V_FLAG_IGNORE_CRITICAL 0x10 +/* Disable workarounds for broken certificates */ +# define X509_V_FLAG_X509_STRICT 0x20 +/* Enable proxy certificate validation */ +# define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 +/* Enable policy checking */ +# define X509_V_FLAG_POLICY_CHECK 0x80 +/* Policy variable require-explicit-policy */ +# define X509_V_FLAG_EXPLICIT_POLICY 0x100 +/* Policy variable inhibit-any-policy */ +# define X509_V_FLAG_INHIBIT_ANY 0x200 +/* Policy variable inhibit-policy-mapping */ +# define X509_V_FLAG_INHIBIT_MAP 0x400 +/* Notify callback that policy is OK */ +# define X509_V_FLAG_NOTIFY_POLICY 0x800 +/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ +# define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 +/* Delta CRL support */ +# define X509_V_FLAG_USE_DELTAS 0x2000 +/* Check self-signed CA signature */ +# define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +# define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +# define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define X509_V_FLAG_SUITEB_128_LOS 0x30000 +/* Allow partial chains if at least one certificate is in trusted store */ +# define X509_V_FLAG_PARTIAL_CHAIN 0x80000 +/* + * If the initial chain is not trusted, do not attempt to build an alternative + * chain. Alternate chain checking was introduced in 1.1.0. Setting this flag + * will force the behaviour to match that of previous versions. + */ +# define X509_V_FLAG_NO_ALT_CHAINS 0x100000 +/* Do not check certificate/CRL validity against current time */ +# define X509_V_FLAG_NO_CHECK_TIME 0x200000 + +# define X509_VP_FLAG_DEFAULT 0x1 +# define X509_VP_FLAG_OVERWRITE 0x2 +# define X509_VP_FLAG_RESET_FLAGS 0x4 +# define X509_VP_FLAG_LOCKED 0x8 +# define X509_VP_FLAG_ONCE 0x10 + +/* Internal use: mask of policy related options */ +# define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ + | X509_V_FLAG_EXPLICIT_POLICY \ + | X509_V_FLAG_INHIBIT_ANY \ + | X509_V_FLAG_INHIBIT_MAP) + +int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, X509_LOOKUP_TYPE type, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + X509_LOOKUP_TYPE type, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +int X509_OBJECT_up_ref_count(X509_OBJECT *a); +X509_OBJECT *X509_OBJECT_new(void); +void X509_OBJECT_free(X509_OBJECT *a); +X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a); +X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a); +int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); +X509_CRL *X509_OBJECT_get0_X509_CRL(X509_OBJECT *a); +int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *v); +int X509_STORE_lock(X509_STORE *ctx); +int X509_STORE_unlock(X509_STORE *ctx); +int X509_STORE_up_ref(X509_STORE *v); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(X509_STORE *v); + +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(X509_STORE_CTX *st, X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); +int X509_STORE_set_trust(X509_STORE *ctx, int trust); +int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(X509_STORE *ctx); + +void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +#define X509_STORE_set_verify_func(ctx, func) \ + X509_STORE_set_verify((ctx),(func)) +void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_fn verify); +X509_STORE_CTX_verify_fn X509_STORE_get_verify(X509_STORE *ctx); +void X509_STORE_set_verify_cb(X509_STORE *ctx, + X509_STORE_CTX_verify_cb verify_cb); +# define X509_STORE_set_verify_cb_func(ctx,func) \ + X509_STORE_set_verify_cb((ctx),(func)) +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(X509_STORE *ctx); +void X509_STORE_set_get_issuer(X509_STORE *ctx, + X509_STORE_CTX_get_issuer_fn get_issuer); +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(X509_STORE *ctx); +void X509_STORE_set_check_issued(X509_STORE *ctx, + X509_STORE_CTX_check_issued_fn check_issued); +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(X509_STORE *ctx); +void X509_STORE_set_check_revocation(X509_STORE *ctx, + X509_STORE_CTX_check_revocation_fn check_revocation); +X509_STORE_CTX_check_revocation_fn X509_STORE_get_check_revocation(X509_STORE *ctx); +void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(X509_STORE *ctx); +void X509_STORE_set_check_crl(X509_STORE *ctx, + X509_STORE_CTX_check_crl_fn check_crl); +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(X509_STORE *ctx); +void X509_STORE_set_cert_crl(X509_STORE *ctx, + X509_STORE_CTX_cert_crl_fn cert_crl); +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(X509_STORE *ctx); +void X509_STORE_set_check_policy(X509_STORE *ctx, + X509_STORE_CTX_check_policy_fn check_policy); +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(X509_STORE *ctx); +void X509_STORE_set_lookup_certs(X509_STORE *ctx, + X509_STORE_CTX_lookup_certs_fn lookup_certs); +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(X509_STORE *ctx); +void X509_STORE_set_lookup_crls(X509_STORE *ctx, + X509_STORE_CTX_lookup_crls_fn lookup_crls); +#define X509_STORE_set_lookup_crls_cb(ctx, func) \ + X509_STORE_set_lookup_crls((ctx), (func)) +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(X509_STORE *ctx); +void X509_STORE_set_cleanup(X509_STORE *ctx, + X509_STORE_CTX_cleanup_fn cleanup); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(X509_STORE *ctx); + +#define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) +int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); +void *X509_STORE_get_ex_data(X509_STORE *ctx, int idx); + +X509_STORE_CTX *X509_STORE_CTX_new(void); + +int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + +void X509_STORE_CTX_free(X509_STORE_CTX *ctx); +int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, + X509 *x509, STACK_OF(X509) *chain); +void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); + +X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_cert(X509_STORE_CTX *ctx); +STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_cb verify); +X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(X509_STORE_CTX *ctx); +X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(X509_STORE_CTX *ctx); +X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(X509_STORE_CTX *ctx); +X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(X509_STORE_CTX *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(X509_STORE_CTX *ctx); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define X509_STORE_CTX_get_chain X509_STORE_CTX_get0_chain +# define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted +# define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack +# define X509_STORE_get_by_subject X509_STORE_CTX_get_by_subject +# define X509_STORE_get1_certs X509_STORE_CTX_get1_certs +# define X509_STORE_get1_crls X509_STORE_CTX_get1_crls +/* the following macro is misspelled; use X509_STORE_get1_certs instead */ +# define X509_STORE_get1_cert X509_STORE_CTX_get1_certs +/* the following macro is misspelled; use X509_STORE_get1_crls instead */ +# define X509_STORE_get1_crl X509_STORE_CTX_get1_crls +#endif + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); + +typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + X509_NAME *name, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + X509_NAME *name, + ASN1_INTEGER *serial, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const unsigned char* bytes, + int len, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const char *str, + int len, + X509_OBJECT *ret); + +X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); +void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method, + int (*new_item) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method, + void (*free_fn) (X509_LOOKUP *ctx)); +void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method, + int (*init) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method, + int (*shutdown) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method, + X509_LOOKUP_ctrl_fn ctrl_fn); +X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_subject_fn fn); +X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_issuer_serial_fn fn); +X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_fingerprint_fn fn); +X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_alias_fn fn); +X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( + const X509_LOOKUP_METHOD *method); + + +int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); +int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); + +int X509_STORE_CTX_get_by_subject(X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, + X509_NAME *name, X509_OBJECT *ret); +X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + X509_NAME *name); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); + +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); + +X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); +void X509_LOOKUP_free(X509_LOOKUP *ctx); +int X509_LOOKUP_init(X509_LOOKUP *ctx); +int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + X509_NAME *name, X509_OBJECT *ret); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + X509_NAME *name, ASN1_INTEGER *serial, + X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const char *str, int len, X509_OBJECT *ret); +int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); +void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); +X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +int X509_STORE_load_locations(X509_STORE *ctx, + const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *ctx); + +#define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) +int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); +void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); +X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); +X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *c, X509 *x); +void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, STACK_OF(X509_CRL) *sk); +int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); +int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, + int purpose, int trust); +void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); +void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, + time_t t); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_num_untrusted(X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); +int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); + +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +void X509_STORE_CTX_set0_dane(X509_STORE_CTX *ctx, SSL_DANE *dane); +#define DANE_FLAG_NO_DANE_EE_NAMECHECKS (1L << 0) + +/* X509_VERIFY_PARAM functions */ + +X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); +void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); +int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); +void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); +void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); +time_t X509_VERIFY_PARAM_get_time(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); +int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, + ASN1_OBJECT *policy); +int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, + STACK_OF(ASN1_OBJECT) *policies); + +int X509_VERIFY_PARAM_set_inh_flags(X509_VERIFY_PARAM *param, + uint32_t flags); +uint32_t X509_VERIFY_PARAM_get_inh_flags(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param); +char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *); +void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, + const unsigned char *ip, size_t iplen); +int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, + const char *ipasc); + +int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param); +const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_count(void); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); +void X509_VERIFY_PARAM_table_cleanup(void); + +/* Non positive return values are errors */ +#define X509_PCY_TREE_FAILURE -2 /* Failure to satisfy explicit policy */ +#define X509_PCY_TREE_INVALID -1 /* Inconsistent or invalid extensions */ +#define X509_PCY_TREE_INTERNAL 0 /* Internal error, most likely malloc */ + +/* + * Positive return values form a bit mask, all but the first are internal to + * the library and don't appear in results from X509_policy_check(). + */ +#define X509_PCY_TREE_VALID 1 /* The policy tree is valid */ +#define X509_PCY_TREE_EMPTY 2 /* The policy tree is empty */ +#define X509_PCY_TREE_EXPLICIT 4 /* Explicit policy required */ + +int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, + STACK_OF(X509) *certs, + STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); + +void X509_policy_tree_free(X509_POLICY_TREE *tree); + +int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); +X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, + int i); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_policies(const + X509_POLICY_TREE + *tree); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_user_policies(const + X509_POLICY_TREE + *tree); + +int X509_policy_level_node_count(X509_POLICY_LEVEL *level); + +X509_POLICY_NODE *X509_policy_level_get0_node(X509_POLICY_LEVEL *level, + int i); + +const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); + +STACK_OF(POLICYQUALINFO) *X509_policy_node_get0_qualifiers(const + X509_POLICY_NODE + *node); +const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE + *node); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/openSSL/win64/include/openssl/x509err.h b/openSSL/win64/include/openssl/x509err.h new file mode 100644 index 0000000..cd08673 --- /dev/null +++ b/openSSL/win64/include/openssl/x509err.h @@ -0,0 +1,129 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509ERR_H +# define HEADER_X509ERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_X509_strings(void); + +/* + * X509 function codes. + */ +# define X509_F_ADD_CERT_DIR 100 +# define X509_F_BUILD_CHAIN 106 +# define X509_F_BY_FILE_CTRL 101 +# define X509_F_CHECK_NAME_CONSTRAINTS 149 +# define X509_F_CHECK_POLICY 145 +# define X509_F_DANE_I2D 107 +# define X509_F_DIR_CTRL 102 +# define X509_F_GET_CERT_BY_SUBJECT 103 +# define X509_F_I2D_X509_AUX 151 +# define X509_F_LOOKUP_CERTS_SK 152 +# define X509_F_NETSCAPE_SPKI_B64_DECODE 129 +# define X509_F_NETSCAPE_SPKI_B64_ENCODE 130 +# define X509_F_NEW_DIR 153 +# define X509_F_X509AT_ADD1_ATTR 135 +# define X509_F_X509V3_ADD_EXT 104 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140 +# define X509_F_X509_ATTRIBUTE_GET0_DATA 139 +# define X509_F_X509_ATTRIBUTE_SET1_DATA 138 +# define X509_F_X509_CHECK_PRIVATE_KEY 128 +# define X509_F_X509_CRL_DIFF 105 +# define X509_F_X509_CRL_METHOD_NEW 154 +# define X509_F_X509_CRL_PRINT_FP 147 +# define X509_F_X509_EXTENSION_CREATE_BY_NID 108 +# define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109 +# define X509_F_X509_GET_PUBKEY_PARAMETERS 110 +# define X509_F_X509_LOAD_CERT_CRL_FILE 132 +# define X509_F_X509_LOAD_CERT_FILE 111 +# define X509_F_X509_LOAD_CRL_FILE 112 +# define X509_F_X509_LOOKUP_METH_NEW 160 +# define X509_F_X509_LOOKUP_NEW 155 +# define X509_F_X509_NAME_ADD_ENTRY 113 +# define X509_F_X509_NAME_CANON 156 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131 +# define X509_F_X509_NAME_ENTRY_SET_OBJECT 115 +# define X509_F_X509_NAME_ONELINE 116 +# define X509_F_X509_NAME_PRINT 117 +# define X509_F_X509_OBJECT_NEW 150 +# define X509_F_X509_PRINT_EX_FP 118 +# define X509_F_X509_PUBKEY_DECODE 148 +# define X509_F_X509_PUBKEY_GET 161 +# define X509_F_X509_PUBKEY_GET0 119 +# define X509_F_X509_PUBKEY_SET 120 +# define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144 +# define X509_F_X509_REQ_PRINT_EX 121 +# define X509_F_X509_REQ_PRINT_FP 122 +# define X509_F_X509_REQ_TO_X509 123 +# define X509_F_X509_STORE_ADD_CERT 124 +# define X509_F_X509_STORE_ADD_CRL 125 +# define X509_F_X509_STORE_ADD_LOOKUP 157 +# define X509_F_X509_STORE_CTX_GET1_ISSUER 146 +# define X509_F_X509_STORE_CTX_INIT 143 +# define X509_F_X509_STORE_CTX_NEW 142 +# define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134 +# define X509_F_X509_STORE_NEW 158 +# define X509_F_X509_TO_X509_REQ 126 +# define X509_F_X509_TRUST_ADD 133 +# define X509_F_X509_TRUST_SET 141 +# define X509_F_X509_VERIFY_CERT 127 +# define X509_F_X509_VERIFY_PARAM_NEW 159 + +/* + * X509 reason codes. + */ +# define X509_R_AKID_MISMATCH 110 +# define X509_R_BAD_SELECTOR 133 +# define X509_R_BAD_X509_FILETYPE 100 +# define X509_R_BASE64_DECODE_ERROR 118 +# define X509_R_CANT_CHECK_DH_KEY 114 +# define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 +# define X509_R_CRL_ALREADY_DELTA 127 +# define X509_R_CRL_VERIFY_FAILURE 131 +# define X509_R_IDP_MISMATCH 128 +# define X509_R_INVALID_ATTRIBUTES 138 +# define X509_R_INVALID_DIRECTORY 113 +# define X509_R_INVALID_FIELD_NAME 119 +# define X509_R_INVALID_TRUST 123 +# define X509_R_ISSUER_MISMATCH 129 +# define X509_R_KEY_TYPE_MISMATCH 115 +# define X509_R_KEY_VALUES_MISMATCH 116 +# define X509_R_LOADING_CERT_DIR 103 +# define X509_R_LOADING_DEFAULTS 104 +# define X509_R_METHOD_NOT_SUPPORTED 124 +# define X509_R_NAME_TOO_LONG 134 +# define X509_R_NEWER_CRL_NOT_NEWER 132 +# define X509_R_NO_CERTIFICATE_FOUND 135 +# define X509_R_NO_CERTIFICATE_OR_CRL_FOUND 136 +# define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 +# define X509_R_NO_CRL_FOUND 137 +# define X509_R_NO_CRL_NUMBER 130 +# define X509_R_PUBLIC_KEY_DECODE_ERROR 125 +# define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 +# define X509_R_SHOULD_RETRY 106 +# define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 +# define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 +# define X509_R_UNKNOWN_KEY_TYPE 117 +# define X509_R_UNKNOWN_NID 109 +# define X509_R_UNKNOWN_PURPOSE_ID 121 +# define X509_R_UNKNOWN_TRUST_ID 120 +# define X509_R_UNSUPPORTED_ALGORITHM 111 +# define X509_R_WRONG_LOOKUP_TYPE 112 +# define X509_R_WRONG_TYPE 122 + +#endif diff --git a/openSSL/win64/include/openssl/x509v3.h b/openSSL/win64/include/openssl/x509v3.h new file mode 100644 index 0000000..90fa359 --- /dev/null +++ b/openSSL/win64/include/openssl/x509v3.h @@ -0,0 +1,938 @@ +/* + * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509V3_H +# define HEADER_X509V3_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward reference */ +struct v3_ext_method; +struct v3_ext_ctx; + +/* Useful typedefs */ + +typedef void *(*X509V3_EXT_NEW)(void); +typedef void (*X509V3_EXT_FREE) (void *); +typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); +typedef int (*X509V3_EXT_I2D) (void *, unsigned char **); +typedef STACK_OF(CONF_VALUE) * + (*X509V3_EXT_I2V) (const struct v3_ext_method *method, void *ext, + STACK_OF(CONF_VALUE) *extlist); +typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, + STACK_OF(CONF_VALUE) *values); +typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method, + void *ext); +typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); +typedef int (*X509V3_EXT_I2R) (const struct v3_ext_method *method, void *ext, + BIO *out, int indent); +typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method, + struct v3_ext_ctx *ctx, const char *str); + +/* V3 extension structure */ + +struct v3_ext_method { + int ext_nid; + int ext_flags; +/* If this is set the following four fields are ignored */ + ASN1_ITEM_EXP *it; +/* Old style ASN1 calls */ + X509V3_EXT_NEW ext_new; + X509V3_EXT_FREE ext_free; + X509V3_EXT_D2I d2i; + X509V3_EXT_I2D i2d; +/* The following pair is used for string extensions */ + X509V3_EXT_I2S i2s; + X509V3_EXT_S2I s2i; +/* The following pair is used for multi-valued extensions */ + X509V3_EXT_I2V i2v; + X509V3_EXT_V2I v2i; +/* The following are used for raw extensions */ + X509V3_EXT_I2R i2r; + X509V3_EXT_R2I r2i; + void *usr_data; /* Any extension specific data */ +}; + +typedef struct X509V3_CONF_METHOD_st { + char *(*get_string) (void *db, const char *section, const char *value); + STACK_OF(CONF_VALUE) *(*get_section) (void *db, const char *section); + void (*free_string) (void *db, char *string); + void (*free_section) (void *db, STACK_OF(CONF_VALUE) *section); +} X509V3_CONF_METHOD; + +/* Context specific info */ +struct v3_ext_ctx { +# define CTX_TEST 0x1 +# define X509V3_CTX_REPLACE 0x2 + int flags; + X509 *issuer_cert; + X509 *subject_cert; + X509_REQ *subject_req; + X509_CRL *crl; + X509V3_CONF_METHOD *db_meth; + void *db; +/* Maybe more here */ +}; + +typedef struct v3_ext_method X509V3_EXT_METHOD; + +DEFINE_STACK_OF(X509V3_EXT_METHOD) + +/* ext_flags values */ +# define X509V3_EXT_DYNAMIC 0x1 +# define X509V3_EXT_CTX_DEP 0x2 +# define X509V3_EXT_MULTILINE 0x4 + +typedef BIT_STRING_BITNAME ENUMERATED_NAMES; + +typedef struct BASIC_CONSTRAINTS_st { + int ca; + ASN1_INTEGER *pathlen; +} BASIC_CONSTRAINTS; + +typedef struct PKEY_USAGE_PERIOD_st { + ASN1_GENERALIZEDTIME *notBefore; + ASN1_GENERALIZEDTIME *notAfter; +} PKEY_USAGE_PERIOD; + +typedef struct otherName_st { + ASN1_OBJECT *type_id; + ASN1_TYPE *value; +} OTHERNAME; + +typedef struct EDIPartyName_st { + ASN1_STRING *nameAssigner; + ASN1_STRING *partyName; +} EDIPARTYNAME; + +typedef struct GENERAL_NAME_st { +# define GEN_OTHERNAME 0 +# define GEN_EMAIL 1 +# define GEN_DNS 2 +# define GEN_X400 3 +# define GEN_DIRNAME 4 +# define GEN_EDIPARTY 5 +# define GEN_URI 6 +# define GEN_IPADD 7 +# define GEN_RID 8 + int type; + union { + char *ptr; + OTHERNAME *otherName; /* otherName */ + ASN1_IA5STRING *rfc822Name; + ASN1_IA5STRING *dNSName; + ASN1_TYPE *x400Address; + X509_NAME *directoryName; + EDIPARTYNAME *ediPartyName; + ASN1_IA5STRING *uniformResourceIdentifier; + ASN1_OCTET_STRING *iPAddress; + ASN1_OBJECT *registeredID; + /* Old names */ + ASN1_OCTET_STRING *ip; /* iPAddress */ + X509_NAME *dirn; /* dirn */ + ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, + * uniformResourceIdentifier */ + ASN1_OBJECT *rid; /* registeredID */ + ASN1_TYPE *other; /* x400Address */ + } d; +} GENERAL_NAME; + +typedef struct ACCESS_DESCRIPTION_st { + ASN1_OBJECT *method; + GENERAL_NAME *location; +} ACCESS_DESCRIPTION; + +typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; + +typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; + +typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; + +DEFINE_STACK_OF(GENERAL_NAME) +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; +DEFINE_STACK_OF(GENERAL_NAMES) + +DEFINE_STACK_OF(ACCESS_DESCRIPTION) + +typedef struct DIST_POINT_NAME_st { + int type; + union { + GENERAL_NAMES *fullname; + STACK_OF(X509_NAME_ENTRY) *relativename; + } name; +/* If relativename then this contains the full distribution point name */ + X509_NAME *dpname; +} DIST_POINT_NAME; +/* All existing reasons */ +# define CRLDP_ALL_REASONS 0x807f + +# define CRL_REASON_NONE -1 +# define CRL_REASON_UNSPECIFIED 0 +# define CRL_REASON_KEY_COMPROMISE 1 +# define CRL_REASON_CA_COMPROMISE 2 +# define CRL_REASON_AFFILIATION_CHANGED 3 +# define CRL_REASON_SUPERSEDED 4 +# define CRL_REASON_CESSATION_OF_OPERATION 5 +# define CRL_REASON_CERTIFICATE_HOLD 6 +# define CRL_REASON_REMOVE_FROM_CRL 8 +# define CRL_REASON_PRIVILEGE_WITHDRAWN 9 +# define CRL_REASON_AA_COMPROMISE 10 + +struct DIST_POINT_st { + DIST_POINT_NAME *distpoint; + ASN1_BIT_STRING *reasons; + GENERAL_NAMES *CRLissuer; + int dp_reasons; +}; + +typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; + +DEFINE_STACK_OF(DIST_POINT) + +struct AUTHORITY_KEYID_st { + ASN1_OCTET_STRING *keyid; + GENERAL_NAMES *issuer; + ASN1_INTEGER *serial; +}; + +/* Strong extranet structures */ + +typedef struct SXNET_ID_st { + ASN1_INTEGER *zone; + ASN1_OCTET_STRING *user; +} SXNETID; + +DEFINE_STACK_OF(SXNETID) + +typedef struct SXNET_st { + ASN1_INTEGER *version; + STACK_OF(SXNETID) *ids; +} SXNET; + +typedef struct NOTICEREF_st { + ASN1_STRING *organization; + STACK_OF(ASN1_INTEGER) *noticenos; +} NOTICEREF; + +typedef struct USERNOTICE_st { + NOTICEREF *noticeref; + ASN1_STRING *exptext; +} USERNOTICE; + +typedef struct POLICYQUALINFO_st { + ASN1_OBJECT *pqualid; + union { + ASN1_IA5STRING *cpsuri; + USERNOTICE *usernotice; + ASN1_TYPE *other; + } d; +} POLICYQUALINFO; + +DEFINE_STACK_OF(POLICYQUALINFO) + +typedef struct POLICYINFO_st { + ASN1_OBJECT *policyid; + STACK_OF(POLICYQUALINFO) *qualifiers; +} POLICYINFO; + +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; + +DEFINE_STACK_OF(POLICYINFO) + +typedef struct POLICY_MAPPING_st { + ASN1_OBJECT *issuerDomainPolicy; + ASN1_OBJECT *subjectDomainPolicy; +} POLICY_MAPPING; + +DEFINE_STACK_OF(POLICY_MAPPING) + +typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; + +typedef struct GENERAL_SUBTREE_st { + GENERAL_NAME *base; + ASN1_INTEGER *minimum; + ASN1_INTEGER *maximum; +} GENERAL_SUBTREE; + +DEFINE_STACK_OF(GENERAL_SUBTREE) + +struct NAME_CONSTRAINTS_st { + STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; + STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; +}; + +typedef struct POLICY_CONSTRAINTS_st { + ASN1_INTEGER *requireExplicitPolicy; + ASN1_INTEGER *inhibitPolicyMapping; +} POLICY_CONSTRAINTS; + +/* Proxy certificate structures, see RFC 3820 */ +typedef struct PROXY_POLICY_st { + ASN1_OBJECT *policyLanguage; + ASN1_OCTET_STRING *policy; +} PROXY_POLICY; + +typedef struct PROXY_CERT_INFO_EXTENSION_st { + ASN1_INTEGER *pcPathLengthConstraint; + PROXY_POLICY *proxyPolicy; +} PROXY_CERT_INFO_EXTENSION; + +DECLARE_ASN1_FUNCTIONS(PROXY_POLICY) +DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) + +struct ISSUING_DIST_POINT_st { + DIST_POINT_NAME *distpoint; + int onlyuser; + int onlyCA; + ASN1_BIT_STRING *onlysomereasons; + int indirectCRL; + int onlyattr; +}; + +/* Values in idp_flags field */ +/* IDP present */ +# define IDP_PRESENT 0x1 +/* IDP values inconsistent */ +# define IDP_INVALID 0x2 +/* onlyuser true */ +# define IDP_ONLYUSER 0x4 +/* onlyCA true */ +# define IDP_ONLYCA 0x8 +/* onlyattr true */ +# define IDP_ONLYATTR 0x10 +/* indirectCRL true */ +# define IDP_INDIRECT 0x20 +/* onlysomereasons present */ +# define IDP_REASONS 0x40 + +# define X509V3_conf_err(val) ERR_add_error_data(6, \ + "section:", (val)->section, \ + ",name:", (val)->name, ",value:", (val)->value) + +# define X509V3_set_ctx_test(ctx) \ + X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST) +# define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL; + +# define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \ + 0,0,0,0, \ + 0,0, \ + (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ + (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ + NULL, NULL, \ + table} + +# define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \ + 0,0,0,0, \ + (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \ + 0,0,0,0, \ + NULL} + +# define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + +/* X509_PURPOSE stuff */ + +# define EXFLAG_BCONS 0x1 +# define EXFLAG_KUSAGE 0x2 +# define EXFLAG_XKUSAGE 0x4 +# define EXFLAG_NSCERT 0x8 + +# define EXFLAG_CA 0x10 +/* Really self issued not necessarily self signed */ +# define EXFLAG_SI 0x20 +# define EXFLAG_V1 0x40 +# define EXFLAG_INVALID 0x80 +/* EXFLAG_SET is set to indicate that some values have been precomputed */ +# define EXFLAG_SET 0x100 +# define EXFLAG_CRITICAL 0x200 +# define EXFLAG_PROXY 0x400 + +# define EXFLAG_INVALID_POLICY 0x800 +# define EXFLAG_FRESHEST 0x1000 +# define EXFLAG_SS 0x2000 /* cert is apparently self-signed */ + +# define EXFLAG_NO_FINGERPRINT 0x100000 + +# define KU_DIGITAL_SIGNATURE 0x0080 +# define KU_NON_REPUDIATION 0x0040 +# define KU_KEY_ENCIPHERMENT 0x0020 +# define KU_DATA_ENCIPHERMENT 0x0010 +# define KU_KEY_AGREEMENT 0x0008 +# define KU_KEY_CERT_SIGN 0x0004 +# define KU_CRL_SIGN 0x0002 +# define KU_ENCIPHER_ONLY 0x0001 +# define KU_DECIPHER_ONLY 0x8000 + +# define NS_SSL_CLIENT 0x80 +# define NS_SSL_SERVER 0x40 +# define NS_SMIME 0x20 +# define NS_OBJSIGN 0x10 +# define NS_SSL_CA 0x04 +# define NS_SMIME_CA 0x02 +# define NS_OBJSIGN_CA 0x01 +# define NS_ANY_CA (NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA) + +# define XKU_SSL_SERVER 0x1 +# define XKU_SSL_CLIENT 0x2 +# define XKU_SMIME 0x4 +# define XKU_CODE_SIGN 0x8 +# define XKU_SGC 0x10 +# define XKU_OCSP_SIGN 0x20 +# define XKU_TIMESTAMP 0x40 +# define XKU_DVCS 0x80 +# define XKU_ANYEKU 0x100 + +# define X509_PURPOSE_DYNAMIC 0x1 +# define X509_PURPOSE_DYNAMIC_NAME 0x2 + +typedef struct x509_purpose_st { + int purpose; + int trust; /* Default trust ID */ + int flags; + int (*check_purpose) (const struct x509_purpose_st *, const X509 *, int); + char *name; + char *sname; + void *usr_data; +} X509_PURPOSE; + +# define X509_PURPOSE_SSL_CLIENT 1 +# define X509_PURPOSE_SSL_SERVER 2 +# define X509_PURPOSE_NS_SSL_SERVER 3 +# define X509_PURPOSE_SMIME_SIGN 4 +# define X509_PURPOSE_SMIME_ENCRYPT 5 +# define X509_PURPOSE_CRL_SIGN 6 +# define X509_PURPOSE_ANY 7 +# define X509_PURPOSE_OCSP_HELPER 8 +# define X509_PURPOSE_TIMESTAMP_SIGN 9 + +# define X509_PURPOSE_MIN 1 +# define X509_PURPOSE_MAX 9 + +/* Flags for X509V3_EXT_print() */ + +# define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) +/* Return error for unknown extensions */ +# define X509V3_EXT_DEFAULT 0 +/* Print error for unknown extensions */ +# define X509V3_EXT_ERROR_UNKNOWN (1L << 16) +/* ASN1 parse unknown extensions */ +# define X509V3_EXT_PARSE_UNKNOWN (2L << 16) +/* BIO_dump unknown extensions */ +# define X509V3_EXT_DUMP_UNKNOWN (3L << 16) + +/* Flags for X509V3_add1_i2d */ + +# define X509V3_ADD_OP_MASK 0xfL +# define X509V3_ADD_DEFAULT 0L +# define X509V3_ADD_APPEND 1L +# define X509V3_ADD_REPLACE 2L +# define X509V3_ADD_REPLACE_EXISTING 3L +# define X509V3_ADD_KEEP_EXISTING 4L +# define X509V3_ADD_DELETE 5L +# define X509V3_ADD_SILENT 0x10 + +DEFINE_STACK_OF(X509_PURPOSE) + +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) + +DECLARE_ASN1_FUNCTIONS(SXNET) +DECLARE_ASN1_FUNCTIONS(SXNETID) + +int SXNET_add_id_asc(SXNET **psx, const char *zone, const char *user, int userlen); +int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, const char *user, + int userlen); +int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, const char *user, + int userlen); + +ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, const char *zone); +ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone); +ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone); + +DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID) + +DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) +GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a); +int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b); + +ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, + STACK_OF(CONF_VALUE) *nval); +STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, + ASN1_BIT_STRING *bits, + STACK_OF(CONF_VALUE) *extlist); +char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5); +ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, + GENERAL_NAME *gen, + STACK_OF(CONF_VALUE) *ret); +int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, + GENERAL_NAMES *gen, + STACK_OF(CONF_VALUE) *extlist); +GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); + +DECLARE_ASN1_FUNCTIONS(OTHERNAME) +DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) +int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b); +void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value); +void *GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype); +int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, + ASN1_OBJECT *oid, ASN1_TYPE *value); +int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen, + ASN1_OBJECT **poid, ASN1_TYPE **pvalue); + +char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + const ASN1_OCTET_STRING *ia5); +ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) +int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE) + +DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) +DECLARE_ASN1_FUNCTIONS(POLICYINFO) +DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) +DECLARE_ASN1_FUNCTIONS(USERNOTICE) +DECLARE_ASN1_FUNCTIONS(NOTICEREF) + +DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) +DECLARE_ASN1_FUNCTIONS(DIST_POINT) +DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) +DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT) + +int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, X509_NAME *iname); + +int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc); +int NAME_CONSTRAINTS_check_CN(X509 *x, NAME_CONSTRAINTS *nc); + +DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) +DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) + +DECLARE_ASN1_ITEM(POLICY_MAPPING) +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING) +DECLARE_ASN1_ITEM(POLICY_MAPPINGS) + +DECLARE_ASN1_ITEM(GENERAL_SUBTREE) +DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE) + +DECLARE_ASN1_ITEM(NAME_CONSTRAINTS) +DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS) + +DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS) +DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS) + +GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, int gen_type, + const char *value, int is_nc); + +# ifdef HEADER_CONF_H +GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf); +GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, + const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, CONF_VALUE *cnf, + int is_nc); +void X509V3_conf_free(CONF_VALUE *val); + +X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name, + const char *value); +int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section, + STACK_OF(X509_EXTENSION) **sk); +int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509 *cert); +int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_REQ *req); +int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section, + X509_CRL *crl); + +X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, + X509V3_CTX *ctx, int ext_nid, + const char *value); +X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *name, const char *value); +int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509 *cert); +int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_REQ *req); +int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, + const char *section, X509_CRL *crl); + +int X509V3_add_value_bool_nf(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool); +int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint); +void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); +void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash); +# endif + +char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section); +STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section); +void X509V3_string_free(X509V3_CTX *ctx, char *str); +void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section); +void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, + X509_REQ *req, X509_CRL *crl, int flags); + +int X509V3_add_value(const char *name, const char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_uchar(const char *name, const unsigned char *value, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_bool(const char *name, int asn1_bool, + STACK_OF(CONF_VALUE) **extlist); +int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint, + STACK_OF(CONF_VALUE) **extlist); +char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint); +ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value); +char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint); +char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth, + const ASN1_ENUMERATED *aint); +int X509V3_EXT_add(X509V3_EXT_METHOD *ext); +int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist); +int X509V3_EXT_add_alias(int nid_to, int nid_from); +void X509V3_EXT_cleanup(void); + +const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); +const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); +int X509V3_add_standard_extensions(void); +STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); +void *X509V3_EXT_d2i(X509_EXTENSION *ext); +void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit, + int *idx); + +X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); +int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, + int crit, unsigned long flags); + +#if OPENSSL_API_COMPAT < 0x10100000L +/* The new declarations are in crypto.h, but the old ones were here. */ +# define hex_to_string OPENSSL_buf2hexstr +# define string_to_hex OPENSSL_hexstr2buf +#endif + +void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, + int ml); +int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, + int indent); +#ifndef OPENSSL_NO_STDIO +int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent); +#endif +int X509V3_extensions_print(BIO *out, const char *title, + const STACK_OF(X509_EXTENSION) *exts, + unsigned long flag, int indent); + +int X509_check_ca(X509 *x); +int X509_check_purpose(X509 *x, int id, int ca); +int X509_supported_extension(X509_EXTENSION *ex); +int X509_PURPOSE_set(int *p, int purpose); +int X509_check_issued(X509 *issuer, X509 *subject); +int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid); +void X509_set_proxy_flag(X509 *x); +void X509_set_proxy_pathlen(X509 *x, long l); +long X509_get_proxy_pathlen(X509 *x); + +uint32_t X509_get_extension_flags(X509 *x); +uint32_t X509_get_key_usage(X509 *x); +uint32_t X509_get_extended_key_usage(X509 *x); +const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x); +const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x); +const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); +const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); + +int X509_PURPOSE_get_count(void); +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_by_sname(const char *sname); +int X509_PURPOSE_get_by_id(int id); +int X509_PURPOSE_add(int id, int trust, int flags, + int (*ck) (const X509_PURPOSE *, const X509 *, int), + const char *name, const char *sname, void *arg); +char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); +char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); +int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); +void X509_PURPOSE_cleanup(void); +int X509_PURPOSE_get_id(const X509_PURPOSE *); + +STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); +STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); +void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); +STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); +/* Flags for X509_check_* functions */ + +/* + * Always check subject name for host match even if subject alt names present + */ +# define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1 +/* Disable wildcard matching for dnsName fields and common name. */ +# define X509_CHECK_FLAG_NO_WILDCARDS 0x2 +/* Wildcards must not match a partial label. */ +# define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4 +/* Allow (non-partial) wildcards to match multiple labels. */ +# define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8 +/* Constraint verifier subdomain patterns to match a single labels. */ +# define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10 +/* Never check the subject CN */ +# define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20 +/* + * Match reference identifiers starting with "." to any sub-domain. + * This is a non-public flag, turned on implicitly when the subject + * reference identity is a DNS name. + */ +# define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000 + +int X509_check_host(X509 *x, const char *chk, size_t chklen, + unsigned int flags, char **peername); +int X509_check_email(X509 *x, const char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags); + +ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); +ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); +int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk, + unsigned long chtype); + +void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); +DEFINE_STACK_OF(X509_POLICY_NODE) + +#ifndef OPENSSL_NO_RFC3779 +typedef struct ASRange_st { + ASN1_INTEGER *min, *max; +} ASRange; + +# define ASIdOrRange_id 0 +# define ASIdOrRange_range 1 + +typedef struct ASIdOrRange_st { + int type; + union { + ASN1_INTEGER *id; + ASRange *range; + } u; +} ASIdOrRange; + +typedef STACK_OF(ASIdOrRange) ASIdOrRanges; +DEFINE_STACK_OF(ASIdOrRange) + +# define ASIdentifierChoice_inherit 0 +# define ASIdentifierChoice_asIdsOrRanges 1 + +typedef struct ASIdentifierChoice_st { + int type; + union { + ASN1_NULL *inherit; + ASIdOrRanges *asIdsOrRanges; + } u; +} ASIdentifierChoice; + +typedef struct ASIdentifiers_st { + ASIdentifierChoice *asnum, *rdi; +} ASIdentifiers; + +DECLARE_ASN1_FUNCTIONS(ASRange) +DECLARE_ASN1_FUNCTIONS(ASIdOrRange) +DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice) +DECLARE_ASN1_FUNCTIONS(ASIdentifiers) + +typedef struct IPAddressRange_st { + ASN1_BIT_STRING *min, *max; +} IPAddressRange; + +# define IPAddressOrRange_addressPrefix 0 +# define IPAddressOrRange_addressRange 1 + +typedef struct IPAddressOrRange_st { + int type; + union { + ASN1_BIT_STRING *addressPrefix; + IPAddressRange *addressRange; + } u; +} IPAddressOrRange; + +typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; +DEFINE_STACK_OF(IPAddressOrRange) + +# define IPAddressChoice_inherit 0 +# define IPAddressChoice_addressesOrRanges 1 + +typedef struct IPAddressChoice_st { + int type; + union { + ASN1_NULL *inherit; + IPAddressOrRanges *addressesOrRanges; + } u; +} IPAddressChoice; + +typedef struct IPAddressFamily_st { + ASN1_OCTET_STRING *addressFamily; + IPAddressChoice *ipAddressChoice; +} IPAddressFamily; + +typedef STACK_OF(IPAddressFamily) IPAddrBlocks; +DEFINE_STACK_OF(IPAddressFamily) + +DECLARE_ASN1_FUNCTIONS(IPAddressRange) +DECLARE_ASN1_FUNCTIONS(IPAddressOrRange) +DECLARE_ASN1_FUNCTIONS(IPAddressChoice) +DECLARE_ASN1_FUNCTIONS(IPAddressFamily) + +/* + * API tag for elements of the ASIdentifer SEQUENCE. + */ +# define V3_ASID_ASNUM 0 +# define V3_ASID_RDI 1 + +/* + * AFI values, assigned by IANA. It'd be nice to make the AFI + * handling code totally generic, but there are too many little things + * that would need to be defined for other address families for it to + * be worth the trouble. + */ +# define IANA_AFI_IPV4 1 +# define IANA_AFI_IPV6 2 + +/* + * Utilities to construct and extract values from RFC3779 extensions, + * since some of the encodings (particularly for IP address prefixes + * and ranges) are a bit tedious to work with directly. + */ +int X509v3_asid_add_inherit(ASIdentifiers *asid, int which); +int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which, + ASN1_INTEGER *min, ASN1_INTEGER *max); +int X509v3_addr_add_inherit(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi); +int X509v3_addr_add_prefix(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *a, const int prefixlen); +int X509v3_addr_add_range(IPAddrBlocks *addr, + const unsigned afi, const unsigned *safi, + unsigned char *min, unsigned char *max); +unsigned X509v3_addr_get_afi(const IPAddressFamily *f); +int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi, + unsigned char *min, unsigned char *max, + const int length); + +/* + * Canonical forms. + */ +int X509v3_asid_is_canonical(ASIdentifiers *asid); +int X509v3_addr_is_canonical(IPAddrBlocks *addr); +int X509v3_asid_canonize(ASIdentifiers *asid); +int X509v3_addr_canonize(IPAddrBlocks *addr); + +/* + * Tests for inheritance and containment. + */ +int X509v3_asid_inherits(ASIdentifiers *asid); +int X509v3_addr_inherits(IPAddrBlocks *addr); +int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b); +int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b); + +/* + * Check whether RFC 3779 extensions nest properly in chains. + */ +int X509v3_asid_validate_path(X509_STORE_CTX *); +int X509v3_addr_validate_path(X509_STORE_CTX *); +int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain, + ASIdentifiers *ext, + int allow_inheritance); +int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain, + IPAddrBlocks *ext, int allow_inheritance); + +#endif /* OPENSSL_NO_RFC3779 */ + +DEFINE_STACK_OF(ASN1_STRING) + +/* + * Admission Syntax + */ +typedef struct NamingAuthority_st NAMING_AUTHORITY; +typedef struct ProfessionInfo_st PROFESSION_INFO; +typedef struct Admissions_st ADMISSIONS; +typedef struct AdmissionSyntax_st ADMISSION_SYNTAX; +DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY) +DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO) +DECLARE_ASN1_FUNCTIONS(ADMISSIONS) +DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX) +DEFINE_STACK_OF(ADMISSIONS) +DEFINE_STACK_OF(PROFESSION_INFO) +typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS; + +const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId( + const NAMING_AUTHORITY *n); +const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL( + const NAMING_AUTHORITY *n); +const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText( + const NAMING_AUTHORITY *n); +void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n, + ASN1_OBJECT* namingAuthorityId); +void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n, + ASN1_IA5STRING* namingAuthorityUrl); +void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n, + ASN1_STRING* namingAuthorityText); + +const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_admissionAuthority( + ADMISSION_SYNTAX *as, GENERAL_NAME *aa); +const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_contentsOfAdmissions( + ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a); +const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa); +const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na); +const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a); +void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi); +const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_addProfessionInfo( + PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos); +const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_namingAuthority( + PROFESSION_INFO *pi, NAMING_AUTHORITY *na); +const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionItems( + PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as); +const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionOIDs( + PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po); +const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_registrationNumber( + PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/openSSL/win64/include/openssl/x509v3err.h b/openSSL/win64/include/openssl/x509v3err.h new file mode 100644 index 0000000..3b9f713 --- /dev/null +++ b/openSSL/win64/include/openssl/x509v3err.h @@ -0,0 +1,164 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509V3ERR_H +# define HEADER_X509V3ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_X509V3_strings(void); + +/* + * X509V3 function codes. + */ +# define X509V3_F_A2I_GENERAL_NAME 164 +# define X509V3_F_ADDR_VALIDATE_PATH_INTERNAL 166 +# define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 161 +# define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 162 +# define X509V3_F_BIGNUM_TO_STRING 167 +# define X509V3_F_COPY_EMAIL 122 +# define X509V3_F_COPY_ISSUER 123 +# define X509V3_F_DO_DIRNAME 144 +# define X509V3_F_DO_EXT_I2D 135 +# define X509V3_F_DO_EXT_NCONF 151 +# define X509V3_F_GNAMES_FROM_SECTNAME 156 +# define X509V3_F_I2S_ASN1_ENUMERATED 121 +# define X509V3_F_I2S_ASN1_IA5STRING 149 +# define X509V3_F_I2S_ASN1_INTEGER 120 +# define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 138 +# define X509V3_F_I2V_AUTHORITY_KEYID 173 +# define X509V3_F_LEVEL_ADD_NODE 168 +# define X509V3_F_NOTICE_SECTION 132 +# define X509V3_F_NREF_NOS 133 +# define X509V3_F_POLICY_CACHE_CREATE 169 +# define X509V3_F_POLICY_CACHE_NEW 170 +# define X509V3_F_POLICY_DATA_NEW 171 +# define X509V3_F_POLICY_SECTION 131 +# define X509V3_F_PROCESS_PCI_VALUE 150 +# define X509V3_F_R2I_CERTPOL 130 +# define X509V3_F_R2I_PCI 155 +# define X509V3_F_S2I_ASN1_IA5STRING 100 +# define X509V3_F_S2I_ASN1_INTEGER 108 +# define X509V3_F_S2I_ASN1_OCTET_STRING 112 +# define X509V3_F_S2I_SKEY_ID 115 +# define X509V3_F_SET_DIST_POINT_NAME 158 +# define X509V3_F_SXNET_ADD_ID_ASC 125 +# define X509V3_F_SXNET_ADD_ID_INTEGER 126 +# define X509V3_F_SXNET_ADD_ID_ULONG 127 +# define X509V3_F_SXNET_GET_ID_ASC 128 +# define X509V3_F_SXNET_GET_ID_ULONG 129 +# define X509V3_F_TREE_INIT 172 +# define X509V3_F_V2I_ASIDENTIFIERS 163 +# define X509V3_F_V2I_ASN1_BIT_STRING 101 +# define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 139 +# define X509V3_F_V2I_AUTHORITY_KEYID 119 +# define X509V3_F_V2I_BASIC_CONSTRAINTS 102 +# define X509V3_F_V2I_CRLD 134 +# define X509V3_F_V2I_EXTENDED_KEY_USAGE 103 +# define X509V3_F_V2I_GENERAL_NAMES 118 +# define X509V3_F_V2I_GENERAL_NAME_EX 117 +# define X509V3_F_V2I_IDP 157 +# define X509V3_F_V2I_IPADDRBLOCKS 159 +# define X509V3_F_V2I_ISSUER_ALT 153 +# define X509V3_F_V2I_NAME_CONSTRAINTS 147 +# define X509V3_F_V2I_POLICY_CONSTRAINTS 146 +# define X509V3_F_V2I_POLICY_MAPPINGS 145 +# define X509V3_F_V2I_SUBJECT_ALT 154 +# define X509V3_F_V2I_TLS_FEATURE 165 +# define X509V3_F_V3_GENERIC_EXTENSION 116 +# define X509V3_F_X509V3_ADD1_I2D 140 +# define X509V3_F_X509V3_ADD_LEN_VALUE 174 +# define X509V3_F_X509V3_ADD_VALUE 105 +# define X509V3_F_X509V3_EXT_ADD 104 +# define X509V3_F_X509V3_EXT_ADD_ALIAS 106 +# define X509V3_F_X509V3_EXT_I2D 136 +# define X509V3_F_X509V3_EXT_NCONF 152 +# define X509V3_F_X509V3_GET_SECTION 142 +# define X509V3_F_X509V3_GET_STRING 143 +# define X509V3_F_X509V3_GET_VALUE_BOOL 110 +# define X509V3_F_X509V3_PARSE_LIST 109 +# define X509V3_F_X509_PURPOSE_ADD 137 +# define X509V3_F_X509_PURPOSE_SET 141 + +/* + * X509V3 reason codes. + */ +# define X509V3_R_BAD_IP_ADDRESS 118 +# define X509V3_R_BAD_OBJECT 119 +# define X509V3_R_BN_DEC2BN_ERROR 100 +# define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 +# define X509V3_R_DIRNAME_ERROR 149 +# define X509V3_R_DISTPOINT_ALREADY_SET 160 +# define X509V3_R_DUPLICATE_ZONE_ID 133 +# define X509V3_R_ERROR_CONVERTING_ZONE 131 +# define X509V3_R_ERROR_CREATING_EXTENSION 144 +# define X509V3_R_ERROR_IN_EXTENSION 128 +# define X509V3_R_EXPECTED_A_SECTION_NAME 137 +# define X509V3_R_EXTENSION_EXISTS 145 +# define X509V3_R_EXTENSION_NAME_ERROR 115 +# define X509V3_R_EXTENSION_NOT_FOUND 102 +# define X509V3_R_EXTENSION_SETTING_NOT_SUPPORTED 103 +# define X509V3_R_EXTENSION_VALUE_ERROR 116 +# define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151 +# define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152 +# define X509V3_R_INVALID_ASNUMBER 162 +# define X509V3_R_INVALID_ASRANGE 163 +# define X509V3_R_INVALID_BOOLEAN_STRING 104 +# define X509V3_R_INVALID_EXTENSION_STRING 105 +# define X509V3_R_INVALID_INHERITANCE 165 +# define X509V3_R_INVALID_IPADDRESS 166 +# define X509V3_R_INVALID_MULTIPLE_RDNS 161 +# define X509V3_R_INVALID_NAME 106 +# define X509V3_R_INVALID_NULL_ARGUMENT 107 +# define X509V3_R_INVALID_NULL_NAME 108 +# define X509V3_R_INVALID_NULL_VALUE 109 +# define X509V3_R_INVALID_NUMBER 140 +# define X509V3_R_INVALID_NUMBERS 141 +# define X509V3_R_INVALID_OBJECT_IDENTIFIER 110 +# define X509V3_R_INVALID_OPTION 138 +# define X509V3_R_INVALID_POLICY_IDENTIFIER 134 +# define X509V3_R_INVALID_PROXY_POLICY_SETTING 153 +# define X509V3_R_INVALID_PURPOSE 146 +# define X509V3_R_INVALID_SAFI 164 +# define X509V3_R_INVALID_SECTION 135 +# define X509V3_R_INVALID_SYNTAX 143 +# define X509V3_R_ISSUER_DECODE_ERROR 126 +# define X509V3_R_MISSING_VALUE 124 +# define X509V3_R_NEED_ORGANIZATION_AND_NUMBERS 142 +# define X509V3_R_NO_CONFIG_DATABASE 136 +# define X509V3_R_NO_ISSUER_CERTIFICATE 121 +# define X509V3_R_NO_ISSUER_DETAILS 127 +# define X509V3_R_NO_POLICY_IDENTIFIER 139 +# define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154 +# define X509V3_R_NO_PUBLIC_KEY 114 +# define X509V3_R_NO_SUBJECT_DETAILS 125 +# define X509V3_R_OPERATION_NOT_DEFINED 148 +# define X509V3_R_OTHERNAME_ERROR 147 +# define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155 +# define X509V3_R_POLICY_PATH_LENGTH 156 +# define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED 157 +# define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159 +# define X509V3_R_SECTION_NOT_FOUND 150 +# define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122 +# define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123 +# define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111 +# define X509V3_R_UNKNOWN_EXTENSION 129 +# define X509V3_R_UNKNOWN_EXTENSION_NAME 130 +# define X509V3_R_UNKNOWN_OPTION 120 +# define X509V3_R_UNSUPPORTED_OPTION 117 +# define X509V3_R_UNSUPPORTED_TYPE 167 +# define X509V3_R_USER_TOO_LONG 132 + +#endif diff --git a/openSSL/win64/libcrypto-1_1-x64.dll b/openSSL/win64/libcrypto-1_1-x64.dll new file mode 100755 index 0000000000000000000000000000000000000000..38d03dfa280792a8ac551696726544561336f5fa GIT binary patch literal 2835456 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%0D=8ifa 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 u%3 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

    cF$=9y4|M4*lPh1Q&py0OjOq|Vm-M~ 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%0DICvfRm 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 KL(> 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�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�OS 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

    $n>&>%btc13 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�&{C?Uc*p))HhO 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≧&lYd8d>gN9`JE-qI#f{ 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�+(m3(8*JYrDlykX7O_m@O$I6Yn^d+zS1P~(etMs`5 z%lYo|(H)F$1XT_k*sy&UbvIr3&jwyraJrpx!g4PzcM(OEXR=h*8i?e$kgkK z9D{R~ryHUOSVY?NE1?E~_I;nj_p?m0rl@b}@a4NuZEceMW174IcjYH*iTb4oefD&< z#@HVW&E< z%sv!QpX0ftuBGH$8`G7r6kLX0ntr-iRQPi5j)Au+C((|5lS1rl9O*7I;R-8}Ot@Gb z#wg>5hO#G)Zf-ieA)@xx-#vzwK3Vu^?Ko$ymkY;M%VU?*QucjQ=su*s zLB;^_+2o#qpwkw8QyC8*s7#8rb7vCYCRdY;lzRyYuLUP3IPM6XVG0`T5M{hET3!j6 z7dCK&gr5yi;s}cSKsH;3=eejyR@&hc(n4K(SCNX;3oZu?53@Twtr7J6i=BzfEYrd0 zYavBg-;Ej3fZ&>Py`-nMtg>Q9uAS>Rcx!1V`WrugkN>YrmC}?`$o+hn4i~ir&6SV(gR3x@Jcm zIRJPVaS~I8LJihu?090sbGk$^{b0B(TJ8qdq(Hv8qxSY&S(>K4p9b~`%y8W2KRXab*pZ557=6C#Vd=v9sA0N1OQL_pPe0{u?Yeou zasAtLlGVZNcPT{KE$3P6+Vw`x-x}!A@KgNU>1+RN@NrC~N3OlAI&!DAR}+VQ>2QGU z#_|og?Vmpv90?wDE9zukP{E8@;bq>}VG5DzZEr;9L|k$+u$**D+pyZ+PFb?E*sr?u zz}0YUY=lE!R7?*s}x+`i27!jXARX zq*?Z!XxMmc=g3L!ShggYs}yc4Pib*Yjn}0P&b3p?N9%mluPPNRtT({2QM6W0G4ZSX zFe9DkweXnoc58|GXgRU6vcTK_WMY{4q}b}<&;^<2!(nqn_I&ss(P>A}Y3u8;7=^}G z{RAfOI`^xugo}bXr2Q=-suDLrlN0mlp5hNY%#?9P00rk`a=O|!GJ|6YEJ(Cc<$MotwoEu_>@-gLQ< zy*D+_A&&>V*E)V!c#}*%zCDWHO_%dASA}T?pP<9G*Pq9YjLv=d8C5PaupeCi_SFaS zBTnaY(_ni+xLD>5gHD$TbDrSYV{dOQzNLy!(BC(R*ytBdJVCZz*114j4Cm<<}UVEbcYWr>*E90nV6xm~xq zK6`u2CHzQgK3m^Mr}24C=GdWem~1knP<#m;v`vXib&s_!T`o>wel1;nRtgt6fI8)1 zLC(6?`?Vo-$v0lQSTSHmI3 zq}Hy=YX*;i(}P!s(*y&X?@4vIMqZ*_2$Y)S5=pEIDsGzXHfS*!7v9SymZ z6=KI{kFR$tN3d2JGDK@y-F)~+ki~E6g#r+MYieCrig-08osCh+>ToLdxJ$@|{r7ud@%eSZBE`}5M(2Bu-DbMVjA?xL{lPc#-IW;j zmvz(k6wI(ytk#}IsB%6B)fz*i98ayjSTL3=0crTU?emn5Xs)#o&*|00Hdip}qt223 z@)xC?Gx$sfhj=M;zCnBa^WvzqtFgQrFo%N+DkhTv&)AbVmXb|vt?*Ed1bn99a z4I*Y3EA;|zugJNEeR-;Lm$T`C#F6)i7%Zj0L}qrc*t*SOXsH&NryUpC={(b{2Y0^v zDJgaG;wJ$3wGLZ$<6${#owpYn8~-Q+wlsRvwNF=epVpr}B5)_VSM|ByhF&bAg;4$L z66kuOV~1c}{I@Mrd-L0o_Q^@f*Og*?V+?I$3`6|_{CqCy14^c^6hGw`rJU8BneMB_ zM^CJqJdC7|3bV87*Gglm(l0acr!A{{spUAQpY{1iz8C2iCO`ya&Wlxz)lYpxYYO8(i7Xl;e#;RC0<00S zLjftty7oQp-vZ^MI`Kzqude6{r2g!{4~={M53Xe9wdHr8 zpskf?&Al9-zsz7^IltTK--STXL+n<>mJrWXV}hTBCzwuKWwTc~eu1>kx_rvD-~(Uj z1rNVxFZ)I@Ft)Aczfzwzc62Dsu=_rP;rIRvK-i*6FlYDQWWL?(@?%xYnCJDbU-r1n zSRf|8T#NmlJ7{v#WcF&w91V3;*iO#Ul+ffn{|c3+Lq9sSsOo>I3lOk57}Dt^zA5xL zo~L3j*H-bZoP!OD;WI1Df@9-yf$xvIp5z>6tl*LztME4aWPMw9-7%@j$steop9aT3 zzyX)dj+Dgsy^9dId+#XW)1>X?Iw^P85O9)V&yq%99P}CxK5Ea6wZZeE9mVR z_KSP@U!h-tB}M&;|2F|p@LcJYsH=wuJ@L_(qWG^AHStwzRXq*dU~RxIBKg`!6o(qy zte^G@T*Dv|Ga$*3Q{+7@y20dOnYG?%9p~a2jQwXG29*x3Tf=b$cp0S`R zhj*`rfE4(&Lx!>@L-a)4lnM5oqU-w*mCE;Qswr>xSxW7aSYhG&hI`+iI}(F=n;X4- z`AlX*6IIq?*0OA~_+{UV$6GO(WlWns-qLhJvuoep0#COg%Ha*pEu})!(e;>$BX|Fo z^aLUT?V#H7ea;uN^N+Hh6OpS+{^_G4l6n4OxVrIIz8#`l{m*|vPsy%7QT8UT=hW`w zZUtS#n?J5EHwei|59{qonXJECA6dw$hqSfRpW$U%b2GNTxrl@)(RKZXkR-n;IArTz z%Q)JlayNYC#DXalo=iW*$tIakpE?@HvLCe}=u>VnmTvnJRJm#Pu-sTijsDYx{fhc; zdc?0n{zU);%ty_vV>RyQZYhkRxF6vn|HMc2VQaPcbDot?eGRIrHfPJYaqXJr2>0f~ zVgvbSg9vF=u+JV%2->BXbBiPA9!fA>!rV_d{$w_PznHG|;0K1j4l^gk!J0kH*V4}i z?6n$JZ|fFt1VVqWJr;*%%nlbdf8dlSR~rPIzUUjM+pl@xaC!GyvuA&?HwlsXd+kM? zkZx}@ozwI!pL!$PXsR{SpKCi_OS4{E(UObsf7A{jz;&^zb|iD?faV$Rt$}Kep{IM zonyWn+6C)o_Dj4=M!sHe9C>s_n64o*@4C7FF8vDsq|1Os;j`@cjMc?usi^@{@dT0`zAeuAK&)k8V1v;a{1foOgNm-HMyv zJn~+bau%!#yqv#U3?)*#kNwD3uwIL4$JnC_|HfV!*>rlw&RD%Ij=%CMK2$-bRHRMw zU8}6j+W5|r12ev{RzVElU;2@x^grAa(%PC<|AupWzilClUsrdeSfChcwuCbBF#P9n z``@(M|62QlhzW8CH`nLWor3PHW#g^F2ON@TpB(=*R_}PFVdojP+#|Es@0|R;PkiG* zuC3uE7r~uB*^K>WS6*@CZO60S<|BLqR8&%4X8Gm)_8+rst>4 zu0R(jD7CKwH{7}NPF824^7*Oymn$ypxBbDCnrDuTWEzv*dGA6=txh|C&wx+*$zdUO zWZ-8{#SW`9=cltXW!vpv9(Uru1f*Bgv4>6S$#T8FbVPB7(yfA{MwapUv8to>ALW|*|tiZKY#Vn`}_Z#YZi~3G^*dCfo;|x#S@24W3%IlSo`QrdKL@E z;C5ZFR+qzv1}lW$?^2_Wjr9Ar=YQ^x=r7ZzAQrn`^@h?OiEQp}za;MovD!q*&OM62 zW8Gj(3omKgtjr@#&eD2q*R##-*nInx)2a;H{lzk$Zug3&h*!KvJ^_b$xK{78$^F0~ z7xnGKUiG}uvbs##05b2ueoF13HIKCO^6vw{GJC3`|8yTmmqjmJ3r$j{-{$NkX7^_P zTviqkSDfKnU5LBe9{!OWLtYW2yJpmb`l*Q_nfzVq$K}1mXY+Qi31^Y%;skj4Tz1`H zaE6k!6RIQ0eD1H(oNBO{cG_JwM{4TVACrkgtmcXAYRatn-9SITYWFa&dQ}$7aQXL| zp3bArld<*#SAX4YjyXtOC|{OG>_xtZ+jp!#Z+H%CpQ*3bx8bef4Knf@hBaj*}ff>N7*?`s+6$rX~Y}jI;@z&yI5U?@{xfI^KEb3HqkwJ|eRz>j(8AxpDVnG26eK zK{x*9ac0#B6J-T7o5YC!eZR#@Z3`Fbj^Q8k!W@HG;BEga!PA%n^1)|i%NvsdliW0~ z3_d0RCLLC+~~r2@F=eoF0a{XFmfcSgImzQ%ZrU(PJf7-kXmL9`D|1lmfVB z>!l0jzG=O6gC*FaM5?EKW1)lLCR(KldY;L{*7d>>&m2DzMvec|AwU5ey+B*rJys5OU##_e_~iK=4`zJZV`;lt zh5A)}z|YmT0Jl2v^o4eP%P*Z!R>ZJWamVC&G0ar;=hT-)tJ0<7r9ap1?72qr**_p5 zUOZ(gE+{rYKCe>8%l3gh6~^{MenF+E^W?Y(akjOmDsEm}&dz23VH~E(HaF+Ge-i%0 z`^(PncDEm34qH&i?;rw{XAtn!_Vs;KX5-9g^FfKzoqu=CEI7c1;Y6JfxP1p%%A20b zwlU~yUKd7< z|I;BrClISz#yW-yFjexIhWZDvar^P*lOZe=v{X3AmWAbbq@|#b6-2oVwB*P^8M82ASmg@&;4#L-`;(> zZ`k7)5)_Gy*fYps(Ke#v`#^5^>sXc}--);O4<32#x_Z_9VCJK%7FKA^#k^3o6=!=i zHfWq0t82A+tF}xZTK2}AKJU@wr`h9%ODV!#*>rm};j`uE4-Q*g({E}{enk<`*XXkC z_qRMLhG||_>znl$^RYI32mQ+o_500qq(4|IBt09gKU8#or|`4Qa+AJ$B5tU72qQn# zmuU)2HSUT7>}y}Eor{o|@p*m|D0}%y^ov_2CsFG>+R#>9OC^8&#<{JzXJ49ba=&`Y z(lA(G@7s45?vPsXh1N>7+ik7_5$n@M`=+~?ReARaEtHG;sydK?b^X<@J!>=H_)c*u z{IgsjPn4I9gRPIVjn6l~exFkNR8||C{wN#gD4T~4nGT8UzPBufm#HWi~j>gL8?Oky@rlOA>C2P&n`yvljCd_hk((l%R zrz-*we=dG>tJ$rcMNcQvcfH}J6bQHrDc<$oxJe$beXIUPboml>CSt71V2hXsC; z>_s)Q*uLuazwQs?jF1j7ixyg~OHgJ3yzUEx`AHcglWP0Jfjh5~-x*wl;!Y|Rtnoj2 zvE!0o?Ar7GyQaUm+mzpzmo;B&aL7~sF2Ej$Jz|>H+wSm+Vzw=G)9jsq9p$An4-SO3 zhVs4nDqwtYw-?061oULyEps7dx$A~JlV7bPkT%N1AQrtRAWgx6!8DAIpr84AbwcG< z+L+d2Xtd#aPT21NLg+yJ8&tL

    AhRhQEL$3yKk|ZI>5i{EQ{E3?D+9P? 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�R(3 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 SCbsJQ{Rt-j|M!2l2L2mUltpg< literal 0 HcmV?d00001 diff --git a/openSSL/win64/libssl-1_1-x64.dll b/openSSL/win64/libssl-1_1-x64.dll new file mode 100755 index 0000000000000000000000000000000000000000..4d593535e9001f93b25774303e76eb53b3659d56 GIT binary patch literal 616960 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

    +H;kP;+n`46=_Hes4n`pC}HckKL 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[DPXE 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⁢kW$OMB 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�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%0A4)&*GHXBFkKXw}j!E>mx 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�|Wflg7&@(s*5FV+`LHeDDmbHP_O@$1i7#Xja??`RWDSBBqtEzkv5t zkXZ!vGBOjFY{Omjsc>o(iq9?&m%^SjS?^x&vsiOiZ_5)`dANkt%H=67>8?s^?iz+B zfCocdD)DyBF22R&YAIt-kq)#=S0nFoQrSo<%dwMX?rJ!$p@T?&3<*NJne%|)jpQcN z&%#W%TXWYQLaMd+P#p>(bqDhuWIlYb2eU{v>%(l;A_FZAdk{@u2wM|@Qs$PW6uHBtg!xC}^{`MmQO$uF zBs@ii?P$zpdo28Wa0U`~;c7O6bY~-?DTa^KUVpUy)fgkr=GUbb4(M7q)6~LP>lQqR zZ({8d2B(Y02;Biq4t{8ltlM*F;0NJgBHivs7)LM^F_jD&`2nwfum%|>!KTjNk&LVF z;9?IiCbi*eC$C+5RJZ9MD_$AV4~wbpcQmeeX2jQU^@xKnU5);;vz9k1 zuV4v8BwAjF{Y*)HuODVhVngl&+3O-H%PId^tZwk9bhS77 zUYNC}(Py8xd6<7q2=uJ zN>H^VMX8Fizi^<8ggPcx9aN2>C+mR39Tcp+`(BQuz zc&L$x*daOLr#D12^@fOD&7k1);WQQNZf*$|4c*deQ1{)j;jFXn#ga)2X z9v6cQJexAkv=?AoRO>$;T8E37b-lu)jPO9RWEv*ffiP19Hi!y;^StI;{Kvb{&6qui z|9DVzApSsTD|i$y>J=Dn0t3m4(#S;i9n2L03jzX6Hs9h8bZw64Jp6&6=sWy-Lp#94 z(aCvw21U2w-x=BqCa$Jl;ZR37AX#xX znaCc4xgx+o7=X#vTl_n_V4ut`!@n~qdJO;B&~h*-YU|ZDETaCA%mLTH=q#9vOmxdY z&4WqPE&j7z4H3PC|7_6D&VufT#ZW#Py6_yNg%}cIf9`0|_3kPnlg+~#efgnNebYQD zT=)ypF5D1eFYanGbY4vQ+XelTeN;MNBisaO4l+XQyo=fleV38JHo@RT9~CZ20PjFr zfvgbw?3wL`uH9s?RWLZyM`dU0?Ob*TDX8hQl{Q1owWPmA&3Q;-Yvuwi!BJL{}Du4BNYr;ZmHI(8(k<90HL)p3K-kc$#lvW4_xbbTv|v6~F~*pAUD+l)>*JIW&)(sBVWFvu3; zeA$kN$o|-WuF^vNi=jOF{N`KGRbxypoH07^co{jck9Er&QEu4{E$8Wo)j{DH=F0|s z13UuyaOV&cOduGXHVaNCq(?>v9xo$@ak0KxQIv0%(Q=O7*dnMN!+fdr4EP3g|-6Y;wT3#tEG!BSpzW8YN$U8P6EBTbBO6BHVjT%1*g-} zH=_fOmyrYeSTC(C%1cXWxk$gP31Gl5U*aHz-U3{@bBNg`NDNL*f)hG=I%ss<@G^2> zZ@OxF7w(P+h_?8Ea1t9vt!TP}d6{(h|S}hPjbbJbIV0 zs24!k5&=YUJU}$`0*LHB0RoPM!*C?v@$~c<9n?NOiY9hbiH!>2@$~cP&a5^ZFV z*s!3M3}RizVk(;sL^~NI<}%iiL9EMIMjgXPu#tXZ9^)d?kM$Vc)GWP)G&1O;$Ef=T z4P+2I@}sjTbSz4cn2wvsAa+zhCsF7)J8>PikwL7E=^F|iI}+D%I~m04m@c81t}9Ad z$!Vk?t7AHXLdV64>sT;|)iM1)q2n?#NKD6oNlzWq?Grk7lR;wbIJ<|Ab@kSgc4AE! z2#HazuGu=$POSMB^-!&@)kUP8Sj#OY?I^A43T+_m#1vXa+EI;G*JTrFC#Fj`X-BnJ zU6*a7otQ3bNjs{k>bh(v?Y`-fBqLiVDd96K$77h-J{>c49yw!<*>XLG4}lvD-@^|> z_wd80J^bv(m;D?J>p~5fx5qbKWp<~3O;?9MtK~C)MoTN0T<^c3-|4Os2=_>asV-U_@hS-ROX220R~bmZ#9E7B7^hN@z@B? zL&!sKp%zi`6Xq7Q3y(OszifCXNt@Vi_RgQ(YOypQmJt*q@yNbe>??_@0?*&YY$ti3 zz%#eUc9KU6JTLaxP7*sDFX*wIKyZ7 zy1qqanP=+D=ELFKqSD`0I>@E(Oo{7hHj3{?L?&(?a^TP7#rX4EHzG{@3rY)%!~4Vf zUt@d*;w^@XonhgJzB1Rw2tP(oyoQ}CpBGnlM)@^P$Qp4SLN#8*)eR#?=;0g6h;g{8 zbolR_g~*2d5ji55!++DPgQWFnW@F=oJ98Nl@XB0AW8?TcEeM?@w z6UK}fkDnFFh|0z!|827nj*&lNJ}&Q_wX)IoSl1!HAIl~Dr&~|@Pq!TQzgAh~=Hq>h z6K>1hk>vl&yryCPZJ}f2@?_>}|Au+TZ*KJE1v>@X)&AXG2mGh!HTT2Cp~msIS$6tQ z2R8~i5Fi3MRkFD5`Y}|r09DJ z^C}Z=%59?@_!g$i@m%J5$k84l$9n&PuHF8N^P2kMqP21SO_sg>i$RnR^?~pa$g#e0 z!jKVj85;sQ@IyJ)C;6|Pg#Zi4flDFB^Ie}oj*|oZyIYU@ceiMeqqw2b_dHtpglls( z%7I3&%Tb=$1Uc}*%&dre< z^vtc01CbY|99#XTyEga_AQT4|n;ORtwjB2#2<{PbFiK?Z3n)+4hzEfl%7Gusu{Ftn z+I(CJIbQ2p1v!on^dD_K31jIlNO~4dkE|dd5lmo3$w}|s`DddO))A@D17uCBu-CV0;dSIfgGm><3=x!j7WuOAQPFyBpyv3*XX+oku9K&5ih%Z zJe)F4^!v(fLD}ysH-!#@Z&@3$*0V=<3kdpe3YFA>rO}}?kBL7bkBsmcMY*YKf4EOq zZVJjiUAZ;{H>EUFCwIgVhCh9> zb)b*om(cm?5d9(69Q-n>x)}6@sx@e|PpW>T0rWA77W%#zqMtLT*idts8}x;mk3gG! zQgcZg=pP4t>UuW;Tshxus2CqhbsYzx$}gp3L%nx^e6)5Ss58_%vjOB2RId&6qt*LJ zgQ4EyHqcK{y$;ZiR&Pn0q27@opP+V&K|Wf$cbLkxfqY`hEp~%^jB;(Javh*A8gQSL zJEsoxW3=lqwOb7OiD|d20rX?ETWn~z#0~n1X%~@nvDz(m8`^!g4)haKZ#u|FYj;ka zq2BooAfKRmZJ-~m-m(Tmy$`g3euCoB!j4El*_x1<5|W3*drXt&4>`hC+bdtaMjo}U%^ z)TdewU=_-3p_z5)NDqQMw0j_=cf1QKA8-rJ%Q3X*dHvg3&~4J`Vz-P;5fd)4j#my9 ztNUF?TaKgeMbOFtgbNET9}VgK?}Exl>I4K#HV7u()`H%XE*E_&W!3Wwt9n$;Z1(hWY0tzOdZRCSqlztZ-GGvOFFNt-)9&u37x&w9* z3z7zhvf){61RE&*Vo2|f7gVx-IX5C^9)#NkHn6vJz37u6Q^a>PfUFOnvJ<*lt8V z-5Emk&_%dkLixKxy5(L_iTdT-hrtHHyD3t;zUp|v#kdT=GVoA0c*JLFtGJN!2=C(QNRjL z00!U_1A|A};=+Ix%$ZmNZdg|EC2T>NqX!Ibjf(=-FDF_JHeb#b6czVGfh{fyY>9y2 z5qD1zIO2l=aZ$hu=5)G&wlCQu*m}UAtSv4KSiuRvz|jK+X>n1&`u*~@fX)HF2+3I*3}0jY zKh&ml|7OxbOVIzLgBI=oJ%U=4LvuuwCh7oU^cw2`mZ0|J(0mRZw8R`h3}0g%z-Nnv zZaD)(2Q4uN5X09V4xn2o6@CEb9s2438tNSh@-g0houOV#J0z@L8|X)?cV>g3UQ9bA ztX>D`$N2YchI;P+`2@9F4D!+L{YX=}HjqzDxfs3nP_E5Xt^@S@=G`00#ptz%b{(d6 zi$OoJ#*5)=5A7Bk+Qqy>qT0pqHA=gNVlm~AsAh+Oa)e?HrDC!nVWrwYI%3FX=o9k{ z3G34V(h;rIP-QwOC#cC{P>yJ)rV?!+o!Af@qty6Hbbxe%&9e@q<7u%Nr2E!1K`=sh zAk&P6iReP{og*klQNlGqXB!?$aW-3o&=|oZV#AaJGL+`145c|OLuoGFGX-%U46{L` z2g7U-+rcm!L~|g_rmGYarJ-*B#nRLM4YND^+ps41V#`W=64?lbgYboWJDiDWHhgm5 z1MlS_49{8)!dpU=$L=l}<Eq=;zViCRm-_ds;Lf?1`nPN8uy-!?Z@X{S z+DrZG-!I8B=!$^@uDUWM*?RTh)YyAI<2$C|y9Zo~-S&LNbLG$6IqSL7l4ot@^PZSH zAIJ1QZ~Jm*^;&OXG>*mT8JzO=5c~|hLi}9YA3sV*g9VBxzhCKCjx;uFO+}i;qAc7u z5+Oax!gKtwR{!Z6ylF#%G-csl{5bMbRx1lTaaClk?w?_?1eRTc<7mSt09$X7C+f<0 zD4hB1sygE0Vc1ps8}il7E*1OcD4uM^^YVZ^&&=dJPjPCVXHHt=dGv~Bh;^;vd1io9 zZBvJ4s>iJxoc0|)-@uH{iQbQHrz({sJZkf;x>-r`=XqX8cB(tn=Q5EYpjbEBJDIk9 zqW8nwWZL!2z7lC070-RCYNt~z&qS8J*0uI_Bz0zJle{0?EYq&DcPc(V(yo96X==MV zJu}s*?xYBsNZaOJdN-3MZL+s3zQ&uARzZNFPE~^dY3f<%MH1ixMDD07{Vhn&kcP?_}C=!63nC6l{7Xa_mJFgv)iK zOd2j1M977@p35AKVhIsUecdahjVRWAV^J&$kc)Dm2J~_%-jBa6l76J^E4$VhksnZRe#y5{8oD5OXg00owJ;%2B+C9Xy}GYps#qW1QrP0jwK zRTLpjA~jV#%e!>F?6}Mh1D03?t)z{REomiW7%D|eLmf;9#zcMLYBXU>%PC5-K{m(c zUqUv|O~w5zN3std~u)S=1PS%LW9b?-dngR@qo$SY&BOxs9gTOsRlh z(UOpNCvHc|8XKBPAWNyVq)oDk3ZbA6wkDf;R#cI|J+20LKmL|X-i8v3W-4VGDVh}Q z4<*VD*HkjB(48^|6sQ*)RRtMF$(Dsy6JY)51&0YCxJ4-<3eJiGuGzlO5cc9OR}>o; zX(;uLB7H=urBr}7+Zi(Mq+DZVo50mj@6vmvRA#ZIP`P?*8;ybw&D22xt3tTT4B>)P zrm>>M!mO0EqOOetf z##05x^>zV~vU|n&P=Rr@Ct@6pf))=~qkF|Tz)g&!RS1mROpK#h^oDU@TVNb{iSbOs zDva$7RVIswv~Vf%n}I z1}NV_BMKTVtf`Dn3HxM%omuVYMb5_NvZ2u+EnBe~#O+wv zM^q3D8{2@)`2};XY+mlnXwl8U9*CDKafke0uq$Bg;AuMBg3P8@PP0FvZYUj^0|AKq zLh=Eka`*!6=)>DYIrZ9My+%|I93Ipo2%vh{wQAN3f^KDKe+58d0g?x)FYnz$Pes!Mc>S z17pS}BXb(Hvpk}9AQT!6L5fD&g1dAH9N08A9Z^ODIR1#5p-kwAAZwa>o;Slq-S7%+ z?t_~|M!j-`tdX??b0Cggcq0@;RRHsA^%pF>k z%%%ee^=eiQWkQo;%R+Y1ve1o-mNh!_uQx0-s2zj=NU&jzG8)!^zt*tWW5Gy>hLvqJ zEOb|YwPB&(f~+HD!x|lKSgC)lVWB~ZhJ_A{4GV2jHmtP2*06N9PBf>nW+yY04U1!` zD33yT2&Qv~UIrb9Ft@B{w8anqU+&%pE~@j+7iR>OC}yxVt!YR)WG5-MreRv$i;3AV z%G4P<6Sc-B*(42#i8UJq#F&?+Du&qYxs>O$@9#P1%$b3iqGGREKhEL2Jm);Wx99hEe&>1a;4K!P0_+Dc z7=i*D#vrXsnli4?jT}mHN34}GT|H%F(v_}-a>Ni)FvS@ej2XIl%En|UT}zOlZD*?+ z;%toJ;)#vPH2tU?4j6TV#kA7wnf@JZ46K-LV`g%o2nJEZs_Y&{7DqEime`o-rj5ba z`oXPoiv?*#Cm19d$GDd^Cd;rfvp6&qSW(0Y6~+RG?=-P7@b2hn<8&T|glcZ0t$@ms zQ9E537O+m-ZO{q6-J5r*JEC|im>g=fV)W3Ff*ljgr@=vZ{Z7Hcf;d6KkO8mhL(MdN zC|Ix`d`8+@FjfHN2*%<+<(mFeI%Hh|V`8gdfovZXYXN^wP=)5Ac&o-yTnR@mP^E>) zGesJ%Tq2R4MI^;(!U!OO6dnwL1o8|y796KJ4N0D!K$68915fEIr5R$JHKG_3HK3(S zEMah&7`an(-KmJvQxT`9B2G_Tnd#PY-5O45IHlo~wldRKegdE4`10+W=l3$h^Sm=3 zUn(K5Q-r+E3gmT)FuVCTFuVDkF|(UTQwEr9ec}px(V|Suj(h9fd7Os4_)eKL7du5b zTe9O8?7e`Aa5-7Hy?8?|_qw?`jcIp_F^4YZ?e3na=R3SZJN=bk$>${DKD&qOK@?ZX zEZElRvW+ROF_$zKtdCCfjSHBgd*?~qfoXoD6KuEO!bdoHQB9B?y#o^hbC&I$kx}&_ zb8e5+hfJzHQXevF_DFrmwAi@t0Xpun;*qcqnfQ66K6qh7Jb2;2NPX}E)(#p@tAu^X z?9sSGXr)-Js4LS$>#UY3-W6?S-e;5V;C8fiizx)02wixW>IOhc5HPK>EZA7Q!@jxq z($J8ae_2V@=+iouE>rm`Z{^d@DwV1lK+*~cD_`}o2>}}fYWD2e$c0tl z|HEnS3U9i*VsVCc#EsmQw%65?Eo)uAkdGOniyx@sB=$CLd@{}b5(oDm5vi@Etb%ZP zDb2p}>U_dl%_A;ziRDPKX~b;yX-@17;sU0)&*UyJ+X%OXyN%s9#^&3qcZ~yz?LDq$ ziuyKAM7>L^OP%S&O#Me)yQ-_k+s@#|wFlF(+g!WA0em}Cy?r9ug=<`UwVqViMqCfK zLkES%<1{+WwGC$1@^MYBgSHdZ^=w@nbP>w6gBciF?`tioekT`Qz|4rQP<73CTOX0% znH_e8cy`}yw#Mq66S3Rf?yA%Fq(0`%;Q79B*oKd}xO9E-*Q@AtU&!Wi58#)-4nzMGc4*9BUIyKD!mcL_GTTrFB{ zDhwr`)+LzZ{*BX|woBPZ__&a3mw|e5y^HI%t{osUr?fDLFdfI3@=2&*>nC^(*>$di zJlk-aA_9=Y^b7fC7R>A+U!pC=vjhkS+qV&`)?kFef&Cr$e}p=K+5M z_u@KmAI}j%8xrp45k3f-&VRtSQ`k=&Z&OqNHUqi<%w=mOXoEl*t-s#RVL&lJ|L4(l z$(|lV80_JoYY!w~niJ<&?Ny_|9xG8W04yw%AVa=4uQET?Eo_x_G-Fjy;Ue zTyme7gOrB!gW9fIVLAs(ceR0gNlTCIG`Viu1ukch+m!7AS2Koy?I5UE4=!dxN&!@Z zRtNZTZl~>xYcGM?u4Fz^W#ecI?}YqL16Vz31Q$2j28B(~BpB+p6A)OezY3ZF7Fo|{ z-)%BvU3DDWfNQ6%5ptP@&Pu9!0L&g4n64fSVH$9x-L%@q}~YNxgrpyJ#i+i6!=_(in?X!ZecK=Upjp9R4n zc?r!f(il6`r$TB#n+Ir4kAoD{;SO+2bf#-BX$)xI6^Q2&nteSwkx5^nEP8HF&2Y*P zU$tLr0i-x}+}7t3;n}WqXJi}T1~A6}c$!XL0@Gx>AZTD*=L)F-EN1;L{b-!4S(62N zz$mIbR|{zjV2;@i0^ke+v#m!bGU+RXMbBLzZl>^lRZt649PHs9l9r@tRC+(MTgh@K z#A2FGUP2SHofkYdW;lh?0G3j7W}K@>+e^xTPgGg1u&&uVMR-MOcJ}~4?Fir$DHi2~ zuKNM3BO6CbURTv?b&v&n_?(bf*agtQtplQ)!hJ$(Csmb#wRn#Pnxh5yl_@F-AlggM zj-yHjgScG+53r=sIBFS! zx$ibGCNKMlpxHeL-mchpf?g zBJ7|#!{{e7l#s1zBr^cye&Qmwe>=u6fUFj=3hxunICaht$bDoFfrLfYxdbSo(#R^s z@5dmPGzWlkAH@#b0zQPY8oJ+Q=>D0s0x^T9S@eG!c#*60e~qF44;lJj7rV$#rT-5C zpIH|Dzs=D9u&_W;px2e0ZU8Wp$q&;2927RpjaU7tX-;Y)Mcs(f_%arA0kIG{EnW!$ zlyoX~A*HBv={_S~j|VWp#A|nWBy8MvL4V$|zDT;y#V4UR-D; z;54V`V6a+%olYGuszT2+cCtf2$k8dL zYi;Rx<_J{E74t{uKT0Y*CDJJLnnijkw_nK@tsgsS6d3YIg(v}} znqEFRqm+yiF-pG6r(Be1QF=uwbtOb1fk-FPjD!N+Kp>JQP_g!4pyIjqK*jP-U&V91 zzKTZ&e3gH2dK>B;;^Rk786(vW!$QdZJClZx_;woOAn1O%_#0Kh>Tea>xbflR)Nd6p zad7)cE|(mrBhP-5zadAbYcSs5?f@Ft@Rc5H(TLd z1UuH)+tVdZ#B4gdT)XVASB($7y|y*Yb|$+GleM)|Rfgt-YwT}UO@#DHoQM@%7$@3a zKQ%t|vJoeS-o{7D)c*E2Pfc_k3H^BO#SG5+szO9p$o~4i@th=RA11_jq`TeLM_q5j z94#}TFZsly_BZ!Ugt$wP$P)+;?XT~U$dFp!{^pK}uAX4Wv-YlZ6$}F8-L6La>#YR& zP@1hbdvB-_F(33kK;8xvC+e}lv|#m;aHo#m%kXR%1pwj$2#stZ!EFy9zLXJaG~z&o zp8@fb?oLJm#Ls|uNw`Z;)gwXnfOt>PB=g!;7+`A@v}%JLPulx2*f6dffV*Dd2DlHW zF#^D96a7RIa0dlZJ?`UVO1(OcB(=nS0K6GdknNyg*bKlU8JHkR5BU_92H?K#Ub2#C z8i4!4eHL!cWEcGkTSj_O76v;Wv0q46!5u)}qmTp0N7Bf>P<8kMIS7zJL6dc}Fkcgc zJF-rsLxMYi-16Bd7Xk86MyNWX$8`!p17vsi09i={4Upa8^A>K-WfzF)D6C|pAh+CY zuT97Fe;^+uRfTdmgy|MJ&5rCP12IIxRVIpU0IT6PCBqWWr|CGJXY3|noWVa8yy5ol zDqSq&;x>vQg9>sFfG>a9UYCvuA@%r8tCNw{r(!oyb35@NPu7ID!&XYzCV;*TUltHS zL=jvN7u$(Y9~>Xpqv^Cq6fjzB${vT$n(pn8sVo{JHCkLfBe9(x~)Tl1quV8RQDH}S9APr7Y z9*ww20D@tIm``@o2bxP;F5sCY3@(4tUXxCRCSjT)BMv1*0|?MAik#4FAg4rU0wuJX zE+7oj6riDZ5t=bZqlp*3BQi7S2;BzgGHB_Qd>X_HE`P+nEu9JqAR;(Z6vVLvW`JS0 zK}o18P*P$tQj&T~7YUQ5n3w#_H~>1G4uJ3-@t8qIC@VmhMTqF?>yin7o^rXw9!#gU z0gw`sk#smdM;{+R)GLxIy<_dfE*0EL~#IY1Yx+j8_6P) zly1K+u`vM{L8XJQi>!oT!R0=CD4lA>2*ij1jtA)41GYV46&;G=O3fHf{wyjOT~??% zh?Q0ws%Gp3`lwKhdIGdZ{Dqs5CsKI8=hsC!CiW8O;oa-9EYVlcR5E%DMl`5o=+y&2 zofAsQ7@mEaMaj^~S8NGU#l-Rk96{8jRE$CZEYT(0;Dkh6iu|#ZwH8wt6)?! zNtC5)X=)}Y6+i~fq_i|OlO9|VSioj#CR4{K&E$t>8bM7{Gd%{)G)zq+wn9g{qN+rh zBSWD;C?vLu)g^#MqAOi+bsdb+C-Idovby?}2g@YfUaP4(+7wpz|tjG*Uf-fLM(yUBpDz^kR=|hQppgpNO#n{Deo1)NU)_V z3tbDNcZsodG1L_>dY33`7`+f@iIc3!ti-KqK*1Ed9{Cgjum#7QIWLrEsTc z*$!T2sP*zkd@ZG~zo`fwugk}Z!trjySWz_I3%FVeB5JY{@rpt*wVtUZ9>YUXg09}= zc`ILcmf>}vywR(CHXkusnR>JL=*<$A1?C(G*ynfQm7e*6&s|Z1@M{Cd&dBkY%vrf@ zeV!);vs|sq3uM}Y$JVFR2Dh!wTjs$2Is|Fkp2>SW7yGLbtGPEYwmbF=BewO7*w#h5 z@zsRW$@o z)?u!Hh8d6$VLjg69<07gBCE&4SS{`GFxLKfJhCgaVdM9lWvJW_cC1Dmg~uIA!m$2teQbA3+Vzjit`VlCK!X?9j=BcjsgHjzc&wywj!Lt}aoK$Zwhq^M zck1e`!DEH}5nDa4cF5ITtj=|;Y7}=Z(Hv`-4f-MgAb6njPi#7&SxIxDqsKB2%g)sr#cMI;ZcxPk6 zjMd!@f;X^j7i@#>)j%bN%h?A7m3%=3oCezOkH}wxwOEli5u(B6s~H;|54VA>Ck163 z9ExQvbV2x_&R<{w&*L~^AmE-dBB#;38!`xX1JN`=H0XW?Sj2ESyI!y;6fD4LV4OZ8 ze+|}VR8AX5F)`%V)kFM_1eZU<$OLxNo*!C0^t$_vQlRL-2i%Z3Px{&I;Np9W$x1^hCAUzs+Y?F{jCiR2ytKKYfi zzQ`-a@N~(@+#X#1I0G?gJ#el7SYcNf9K}pjp`Zt(ynq-1*a1XbK#vcMq9$0Ob$2IF z^T#11%2CG(2o(y%TM2P2W>KV`9vPS5@@0(Lpi+U=N??WEbFr9-o+Ycc1F2Pk%6~~g zKL8wITRpW0Xghq zs$^IfM=Z-kuXE&)Z(9L3g1Hcaw*(yIYze^g^*FRd-|KP-wB8W7+X?rGd;`ng)Xur; zM#3ule0PS$1Z=VD|J7BlJ}Q4iR_BN}wLZ}?B-OPa2U_oDv|%uj+G^g8&-CrL02djs(lSA9}^ z(~{w9wF!ZAMB^|B2KF=p#3wpzfsbwrAmiCIsTr;sqAwO;m^_FPFfez3`NSum_~;T4 z!+ZmAr($_Rd~=fFYc&kZX1Wg2Dj3|RIUqh!eFc1Us{o}X%+FWM7h5n)0>m5`m=}Qg z#HWz>BpeN3xmU4#7`F|4{jU8Z;VMJAa3m=fUG?-x^6NSR`CT~-ZbKm%`fV7a=mJ#( z)UuI)bkS_QmJr16CIs<&2|?VN5X9FL!uCc&*xpPCTUA2Xf(c>Uo)EU(31Mqb2;2J! zVe3o?+es5PNM)e%$8^4Zm2dNp5oV=ks+W^1@sbU@56gQutpRT<@#gI$Ub>}g@42;y zGqf{!5tpg$L3y|2Gwz(sdA{$a!@4sq zy50WS0u>x=0bp@)fUmr(3_7_isb}DQohx?bAl;a7R*rhS zk4~3|rsIlTbBw+1BRZu}65@}J?06e6E1x^w-8MYXEB3NMXXRVR`qj~pX=F#*fLZy_ z@$Rz$^A&l`pfP>rSgT~HH)q1}8SfKEJ;#{|$7dohSkFQrQK7rRu_ndzeiMQj@9tVW z-Gpi+k%KEa62!jSbO)EP#JTMjzt+?%9Idq|Of!IucVsO-Y(knQa9v>&)0}#~2GOkU zzY?zDfyUN^Dlpzdje`0{Lb@jLNdXixrh4iKxgrcV_@YU@5Z&<{Njwa9GpW~gRbHlL z{TE4PNmdJ^5e{ckS3~zMM-n6Prr}dwJ6BTW+b}}mMj9?8*dFyB4bMsU8Ap;V@sZ&v zCS}dlIf#-E#Grt4NXJkzgK-0cQ8^QZB6X52jQWOf8BwnhjSiwIM2sm^upw$UQ;CAG zkz7MQ5gdfqC|N~=jZ7|ba9CmnBh_d)&R6U|s$3;BL%bI$=}SGTXFSg=CMY5Gp@M-I;(lEyR6Z98SRu$( zNyEmeCTluC5ULV{9#7!o20NIx1;X*3u4Hm`lf|3>6S}}#++L(>2ZkwEAcU$BrUd8! zM>D=a$S@8DLP!XRAQ+573RozC1T+%CapS_8ClG|%1);!o<}w=zYxfm;$=~^0*U%8& zek810vpB&CcE4!6pW>7#$$p$pA=!_gNhka9JIZ9g)GL`k>FQ=qvXW%WY5Q%1?qxp2 zArJbri_4aJwf&gX=%uH<6=`?mKzcZ*(Mng9S3BefVS8MCM55f04g>oG3eCuoDaqmHIh2OdIY44Xaq=R*n zz2(7|9(~;XnEUZBT)4iLk*4^VPzj(j> zPv6Fq3bf}Q^H#o+<=2jRwVuwy=emXfPx`OWTZ#h8{SEgM+syZw{>qJ6fy!BFzRI~1 z`IHwY`N|{r+rN`W@P3nzyL>Z(xR7oy{}B${XM<_>%|qA=Y<~awO#3fADc_xlljH20 zBRKhMcH`F~AeG;Cyz}l~3=IV;S5%=^yQ*&fW4M-LpE^IwZJ)XzlN$#&x$O3Z&nkd% zqqq9Rgw8WR9~$y&?cVbCDz7aB5YV0dwJ!|~4SBTVU7yBZ{rgctY+IDX-U?5OxALKM zAnz?dHsIAJF03fHV_>0H@VNo+j27>Vh~M_1xBNp)bv2Z3fAy<)5|1De6&Vw}TE;kU zc~!c1&Om9n>uy}z0DjYH#k_J1$9BeH@g zB3*sbR`@Mc>AD>#tx)p$puciO7Px$AX~kC_^J=GS3npZhp<|n`G9%4fK9Fbs(yeK>FHmy#eA6;w0pAa;+`p4Ujz*B==U#pC+=}CS7^$+r8TS2Rq;T zx1k}O?0)UTck*##=fy?iQz}yJ+ci&0#r!n>O{&V~~Z(YGuPAit;E&l*i?W>%Y4qBHFf}m?a2kg75v}zJkn|tG&hSJkr ze~i--zyCU)x6P<|-tMZZg^&?zFPrG1g8|ppdG2TA{?T6%|1KMDjq+EkQXte7*e>E~ zN>_?JIR(RZ-wN$PTcj%t!bjV4yixoF7s?&Qj#7tTK7NbwP3rg;C#I*=Ey(OWx^J6( z>O_k)MW6Hg*ke7nw_?hae5fS*uaDkmf3@dxDJkcwfo7(C^Q*ZaoYuZ{nRnAk2bmsS zwK9{3m3QU8z&}55@|A+O@;}RPpY~VI={R!j^H)rWTemXguXteCx|Q|*imwk_xAK6$ z;v2)(tvpO6mIe4ug3FEMFGDHAkP}+YZKDk_7hNJU5eIwfkD_Y49eT&?(T`1e7Y4HTOKmhhDDi{R7H&QwQw%}?6A05RLV5@X( z5CFyiUE?_bR3|_Phpq2RE1U=LssTQ$j}jorTiUrnb&O5`e4Rf60YKO|0`&3@lK`9- zAi@vVg#c%GbPmrgTFH+vi`=qZDBGp@+%8rEz*SuW_OWk~08n2iz*amUateoW5ms7!tXuaC=x*AT3e+R5X9#rssTRnh!Q{~fS>&pM|ht|06!xejRa6CqXalfl?E`Bozz--~)7>0B_-HQi6m!bp^3HX5hU*dg2faBO3PJrPO@B!~IC7^>ShYSK7 z=h26FZqdq2Zr!q7DBGo(@dUu|(T08-$EQ&EStr9?eqm*C+u14^+dOQIff*MYX1k@S$aRe&@RO7~0B`0`3l!_t% zlueWXA_4ES{|mfNB!F6EI01%B04W)jfc-@Ij6neT`ktRY7p0`|0rgC*1hk@Iv6vSj z0JX?)0t}Y`kkmo|nLPoj3Y~xw_1y3)-lCP9yP(J|+l8`SniWrgO9TKz(<%WNvN{2J zaaF8Q+z==f)C>twqYuyF2v!8B!;P&Ns8E$S52d0A0A&*;fJguhwlZo$0BVup1Q;#> z(7P4_$XpocToE8d0@Qg`eFPp~w9>(?Teb^jyA&cEs|zohf-r(Rkc0a_&fb7i@R#jE z*)GMLA+h);_XemxKhE9&8Cc|&?Lyfu&50*Ka&LfA^KteDW(omhyHK`EXT}pCxi^qY z0(^|U0m5J8mhD2>F3pW6Kyq&&p9J_Adjp)2rN}MYg|b~bE1m$!y@ACfz{l7d$P)s{ zcA;#S=EV~rxi?Tq0(^|Ufw_Uod`fYV8+$(4TZp}{$=*`zJqo`j)+!|T4oXN6#;VD^ z16hOF@Bl_~5oGygJnM4&1X-Usv9lm6HS_Wf=vV^hQF{!?F03qj8~NN}`2~A%$reQC zh%6*-V{BL2l8OU~?T|Mp&WB?pnF19ePR1#O1#nADZv}I2Ou|_@aQmm~m-?odi2+qBZR!A226--WGlF~avCdY2+FOBs2|O~!f{YgxQ6*j!qLz?+H-Zupcax~? zI2cY;L|UayF+|18eqkhON}FPciZi5eq?hzG93S2JCu1b~0jnY1XK@%S-Rl6Y0z{%8 zGUzfhAPOjS-Om0KWI%ce2ZXnExbG{MKm|a76p&;xz!)Dbc@Dp-b)en3e@%AmNUfs(p7 zv7~MtM$|Es)B%n`K=5BG`vXY@?;|CJi6!-|VML|0jFCo`eu z#7JtLA*m3LQD&4(NqwLEOpsCP<>N+{R9e-zj1pA8(y5$8F496t#RDQMOA^l%=v4BM^_2lqD9_hG8@vLqRqCTb-t6;tQOHpi*Aq1hp_mP_H2IWeRGt z#1}hGAgCj_u}rf`=1->TG!tKt*G$Ummc;T3N?tp8P2{aI|MGE7ra`efD6d-+%d7A% zMhAe(W2IOVI;)u^>c`hv&848el~7PquBDtN^i>_C>8W8lV0BfD4#0o}ccGf!Baqk2 z8$bwZJ_Qx9Ch}D?hY_`X>;yHTubNAuetdn^#T3+rgo2vy7)I3Jhp);E&c`)32}v!a zq(b--NowveqK=`YCiGPolc*nGU$umi+M8HX^M?_23?((8uUbf=cA@K7ziKt0v4pBB zNQ6$kuHL9ZQp-S8NMj;FT|A7YV<@Nzebo}u6r7Hu>AJ!gnqJSo>JV0N_}ddhL;8xh zcl~S;CX2Nf-+M2UCRJ*2+ccawrxv(PUtwR-s}{M<07D{N=oVSq1!V}-T5GYlXe;;j zVDF(S?lof%**5GQ!6s6LL(UwI7t}b~!5bVrYa2I$BOC7p9q^kTrpyGFE@kOl)Qfnx2I%# zR<=X8j5xmw7vFH4#-n6Oj+L3*RSR=4xtxb3WpHAN1AyeEY-8h>a`{GtXCJ{H-iX+X zJ!Nd!4XFxZRE6KisqOeJE0eo8Ep?;;yO_RbvB#db>m)!6Lt7Qs@Z`6hB|M3QYe_Ye z!?+!1pLXW+EM9z+)ZD1r$wo_8#HiJtxBIxIBRqU79=<2$xm)?%eezsvcC#<|uf=UVql0a~$9@E3 zEz*Ie#Vk*`$NpX#+V-%Gjs%|l7MkqksdIb~DqIxcZvnsv(~6P(_PqKJ*#Iw%r4uBw z@3FU~@l*txdSuQ?COR(Y>7ew~%AWW{OHWm3vYV%*Ckl>`sER!)hTvf**}&)t^-=fO z4@G+d2USm8gF^~0@39|bPZwi*YCuo*W=}AOswXl$vY$9LqNg*~o?xHuu^*21g!&fM zlLTt-2~O{_r#Q~EqbJ1~JWbdjIJL7U(mb*cJ&{T#PADcKV|YrahiF6f^gH+jyD$=; zxLVQ}^C@LyKBbI3pE5`0Q|8$7$uTmY9AnR?+>!Z|JNA6aADK`2W6!6>BlBtT)$(Zz zM?q8-6`D*kMr>g$f26%A2XQdqQ=A<(j*0^%ix8r#=$-zmG2zZU=aw zZ&^N2z`>%e*gRB)%@gg|d=9^22R1L}W3#akvr^1n=T9{MT=fjj)Aw>w4mX%baLMhT z$M)shQ*EKfr#gejmZV_5ICp8&1Wa97`q5`XgZK^sbB;&Cm@>1pX>zC<)7|mPO`%47 ziGV{)frkq>n-?Yqt8Z?r#isSJx@s$J7^kkTDeb)t)7WALKv(!+$QC}2XUKCKrtq1) zpTu!z=-t+i&?fcRhEExf?VS{Ig)d?TQ+X)QhHQ~b_+ehYm+`3qx9&8e^CxM7&-}Dl zg!T(Urv;%cLU2y@h9)B3);dP8Z8iO@MBgpWVxgg*@3 z5biS&Y7vCaDTI!;9tvp+p%xRNbCWQk`RUM%$N@f75V|39CUipta~%PpbU`Rx5K31F zrN<()PY~)Cgz!1-63(BvrgWc)P`@BlWgxWAM5rGK&1eJ6Gg@2K)v2Y;CPHU*4%xy- zLR0anv(BMrLFjChLw~LiYBmu%I|&>;8FEGHO@yXKPKBnD!$2rQ5XumQG894?u?RH^ zLVbeJTSVw25o$CM>Jx<84TKs^g!+JxtBq3CdQ4rtx%7aE&>5XWH-wLeZVn$c5IP_T zor!YjuN6WEOoYx%0!KSSb0Q%Vp_?OkM&v_52y=Bpz%*2TyG(R&Ip$0*yR}iWq zLRc?hO=*LPP_H1AVj$FDBGe0n=Ct9%_c^Was;k+k9>E@l-kQ>nbPi1o9|~oM-!%|w z5`;dAa_C12p(Ycdk0ybmhh*FsBFFKR9cdGUuy_FwnkEQMQwU9qMW{s(IwuG<5Fsp5 zu%@)dMChC#m0fn)SeM;G!WV^2%U~{=*J47 z{U$=ECxN5;F=o!NOFmA<(~Jn_KZD3k7lft@LemvO(_;~87KF|ULhVEdvyHAPZ8i}) zD+uKq2sN7sodrTSw1KHNw6>|MSaHHcs9)z$cKAJLtsMqJ`vjr>D2INk5ZY%V)ISLv z-HkDG%0!6c$rafv2xSRES%OfOLMSU1p#y@@89}I*2w^7GHKhkkgw6;;g$6C& z5rlFSLOHPrS*;P+dA(aBtVRM|H&YOrsSuhOi;&eC2wmUS2~^EQQdlScI(BXfYAGzO7N7Ae1KvnViB@hqe3EdeOn_b zi^Om$__$DSM+CF~f+KRlbb>A~ z)RW%e{)!WXP;W=1He6C{orbg|4m+`|kRH_B9QlA@ zC#9u<(z19|(z5lcq{ZqkR8d;4TX%ud(oSh99F?@Zbyd=0aXLyGC@uYzmY5J2(&8|r zdEGlNxfGVSMk6dKS0yV}-^Fp=`!4wuma0(+ zOXgJxi`93@z3zRN#T1r?(FjYvbvA$_r6OZrKNpT(vo{s(qi>p7GL+iO9`c= zcU01ne^t_A^<4_Dci&}Y8Kfn5RKl|Os)WVryOew!d>7VlZs>{DZ}#7jk|K2yAyp?) zfA3e*Q7&=d-mhlh&*9Md;(PJxwhDjGg?6lfphY4u^b5*Db6RV$gO}{C);-w4i}o3< z&Dbe!4`sI=fw#mJASQ-x#)}eHWCxo%LQ`9N;B)U|^Zd{at!L#$HEt;k*;*rr-P-X^ zrz`X=6l@~w@5c@v&-d5gLa`<`e2>2o@9|Noi4EW5qfQgA-tWZ&Xa9Jns?&70oAnje zI?Y$wqIH^F4L+vkAv*1&wLa7RASP@5y89u_#K_fUj4Dl(XF7OTdDkzU{A1KN@wmUDXxL1Qr~DN!44aAZjK5;Tu$dSy`76GXU-5uc3bGcQ(eJr&))t?Tj zkNm*_^;}k1tY(G90aREVMuo*@^;lF`=>4I>Vm2x)?!X&iJd|fc;~}BrRfPqXhb5}{ zvJJ>~iIiIusd9^X{IllvMX0*akzR`3;aJnXU0sSY3}C$#vzoIEV;##dbSO}U0j#$Y z1i4^h&D`7_EW@}1Wf*dG3d=BbtWk!6B@=_y_n{193d%5ateKlzU5eZsu|AG6j7s%b zlws)op$y|blwsV3G7JOjDR`YcMU`P-rDVZcwgK5Lk(!JmRg*D~e}FYgGYqV;I~;4e zud7Q@s{yR5h&57g>zI1ep+Kz$u&yEqa>2x!wHkM^R^u+zYRJ`_SgWC9jam)i^?1~3 z+=N;U9c$KVtS&{ZhQaIqsUC}34ZT0qYK%v%#%#P>Hn6@4@0@Q^wHjDfT(FjHK(18eLK$C}>h>QWSR0PA*QjaO*vm|4@IKtTtvZYKzG!Ni&c9kW@` zF&hOPa`jdgbm&;4phI{)1qB_q;)S%1H8X3gOHt5a@cM`9u_)-!`$Iv;6qFd;hZoQW z*0NYwQlkn$9Oi8nMnH(#V^wW6_5W z1d2X@bP6Gm3ntPm`nZopANQf?L$2Pzq7NNu6nzM*Z$bgb9Vq(Hk!H~cR7I54|DYa= zq7S`46n*d>4rK#r4)Hrw(Z?#MRDI;jHXz$2QUOw=DnRD(50FM7h=DYAha*kb5(7qaKU9X?ipmfUWdmyt@w-%I$SS9lhUCjOAloHUCQ_uzMCS1iutv3r zfi-rAV@=Ny15L2bC)Rjjw~pl_Ius}$0oM5hK`xkBvwUO<%SWc5d_=Bd4Ga@&l#d9n z??Cy;Y?P1aShIWtN+inbU#Q2Td_?aLUz?wsRwkjW4<&^r7eAxzMyF_Y9 zic~GhJpKXJC@C?p#_n*e=^0|63D$+gx|7JE#zcn#H73BiP~n9OCf0m`cN1$&Zi4G1 zSl`DQ6S-|2U)u?F4UNCC>vOFh~F1eV8ib7e&SI=9+R(P^>`$aaa8r4*^M zlzIFEtWlj}V2$13SX-?2b6bh^b#Aqxc)@Gg24uTLYFCPKfbPq;&*L9pofE|xyTh@z zSncPki1jH7`t@tIXA0J`4ajzh6u1uEwa|LVJ z24uTLs$hy#70f*T0oEvnF|fw&aI7s>`wK++I=9-h1Zmj@WV=KvWr|d#%sl=9(kPfQ zkjCzCq%BtaIR~-6&aJkT(B#WDAloHUPE(}HY3A_{utrslfi-rAV{Nh8&*c;A>)dLi zx&~ic2*b^in*jD!%ef_H@l6pcZeEb$n|VeZ4#>gXjrk@?^s=1cWU-j_=L$)d(U^4< z*!Z2Ox`97nG441UxIfmy|-_fIE7N57^{y{EcHPv)AZvM zDt$(_{|M@hik%ef<2BBK$a7n z@RImytdPauDJi6|^io)2(ijjH@J9*Dm8LOtVKLJfhOopqG%>!6yG=8u`{vbOztcU{)fbwQQeXk=x~T$k%R(?Z2U*9BGRqfjjK$INwE>$u)s zm$h_VRu+y%SW?Hzb-B({H4qk*=D^P_8KGg3-SidtH^*a$3d)$Tkoe1l9?m+#{eW>4wpnm68yo8#K`W-ZNgl&Da$xB$=ioj!47L}P_W~#c&Wi(QF72$%z|-|6 zCMmJhpIpDYdVSIN@BZ)elKuX?;J>X&_S<`*>KDm=|Iqr2u4KPQYrZ}w*{^SE-y_L> zufKZ#UnKh-_(s-GlKsB_&l3+O``I2X|3tFiJDXk3WWR0eGnOU$J^%PSrOAGgpB^bo z_WP#^hyEtn@A{qw(k^fBgJ3YC*Hra2% zpa0W=WWOcLcTPz5`{s-p(~|u*Px|-ICHv)N-}1#|zl*D929o_gIVEptvfqPiCq0ww z_aBq~l8X6auf`~9f%KmRV-@2e|5^G32?NyS%dlKuXE$*Q_!zneS% zqA}UeIpMFHll?Z&zVV}Ezmlzgl9}xHsp{8nPWDS*_1|tw_Vd5!{amu&FMjjZtYp7` z%gCCO?6>fr4?d9Ww`k`N9!>T;UHrwB$$mYr{@L@%e#OiG;iY81X)kSmE!i)9T;2DQ z{RW5L*^=zny=w96$$sbl{`@=1e*G`4sZI7v9cN3KIAMI+}DlzNi7 zkot}~je3i^iTZ~+hI)j$g8G1Cp5vNhm*bOTkmHPFiQ|Q1f^tvUru_2p@UbpJ`XYYDyRq^uY9M6|NS+sUVap`IYHjbC_ z{_u%EoHf%i|7(vdesIwOcVMaGsh1sdpDZaUEzU14d8TOX+ErgHF8$^or9^AHqkCKY zmA7hDnJJ!%$)1X(X`YHl)7|H`!H0C%H~(l_N{V|^M-FPB-J34(kNvgE**rLk2Knwy z$57s#>A7L2d($BH7TaGdz7to^)!+aV<^A2KQ4`MDea-6e>SJl%@{^c#Z`%LzmcL)+ z)xPb__iE2Oy=VGr`;C#4ZV#O0_6^qg<9?B@FSddvzv1nRB#Y58zDxS#dPP2bD zKSgUp7_eX}3e5KwRNU#<_rZQt##uD{Wv?e(}q?&>`^cw8+7n$zia)q1k)aA~~9 zb_nNiX);=PY!}^HT|w$IDQMt!wV}ZTx7J#aJ%k41Jhqc=*M$PxF^{doTe&*TV>?|? zu_Dc_9q?#J^qvZ|I=AZpdny1J+SAT7kLyS_p3k0|aE?8(h3#U2*2bQ2-9<>yQH|T| z$m1F;upRZ-j;W6N(NVfvtM_QldPi=p#qFwRM;=!lJ4*Msn%&uWK6~1Yld7kB;N;O- zR8P$wg_B2n*NW5m0$Yd2c2srMhpsZ*+F_5jNAF78>vkPxPo&+`&J2%hPc}(|eu9d0 zyiSDns&4ia@O1qIkJeztXrRE>?y(!pL*Nq;DzK4u(>&T?w@Ev#&Z8sLMueuhUCjjw zBe!igDMVo)Mv88{tXNc_RYwsjaGeK#z$MiU={DV?9dMg;^Jr}zB@1rFqUmne9*+_R zx9t#4s-6yr*a_{>z^!Pf?YH1_0o(zPR7VuLERR<2wg_E|N6A8gOEAiEyN(nnS#aBe zIH@|SCrTo8xUT4?ZMPyc0QP`M;;10?X{WOw)#=1g6h%>s zX4lA~5yW&r2(k!-uyAfI5({8~0#Lz+1HzZX4Gkd_3~eC*ye5W_@WJ}e1ub;=`bSB@ znS@X*C?RYngxAP|62?r>FwKOqZ&WnQC4@A*Lc=|T@ERCiLI=O;+i({Q5{^~~XAwX# z*(9Mz;WaYZfN?rN%+NuE2_F>&^9Z0=db)AK<7;8*0bLd;m}!F7H%cL#O91I3$T$`j zUmG6*AUXgcXrU{b(F|j1nWvpu)QF^?K8mk_X94J(Bp@hpnR+md5Yi_}s0hc(C*e5B z0gNEWWog26LP%F8i6$HiSBCJ-BoRT4%T$FK1W}xz#Hw&?oFD?33mBv7dUUEVlMvE( zN~j9Q!gnHcvq-`mlZ2yHh0_S2cwLEA;n;XxfH4ms&NPS0=v3i!0w~T}B2_ph&KjVb zOA6+i;Eh%lW)VQTc}Y~^n7DZrGo1hsq__-C2qi-B<|bE#W8fT?txrWdq~i?V;vwS! zhmcDqrA|zJA}w`MdMYvAh}cP`c@YEPtTi_$e**Kl3Kbq&|G zC$j9Xp2fRSZ^iS@hw*(pUIxB^mw`oi8Mp#31BgYn1l`NH_)`21n~aeO{8{y0A08h@N(8<(1X!=%YW`oH+&MCXlmdj9e%GndhX zWsLL|aMp<_Z(kZ3!h&aZu7QSCc8cHTtPNag=oV~t{1lsgw_qudVyw`8k9{Xr0$J4% zjn{C~ZTPLo#HPr><*M4S_X1Y7DR!4(aTP51l$Y`$Z^!CJySP+R)s0(txC4h=LCU=q zt%7V7HXCq!V~M0gMw2Qu!BTd4Dd)^4xD#tv-DAI$wgng4xZ0A@x*aEKv6RvgYh$bq zevdsOjXy-=9=)**ZMUIqhqdiRw!I*20n_f&#)BPb97N-j*2b6E_@XohbWxb|(Kv+0 zXRM7Afn0bQAa5#TiNff?-n3PY0>7zUwI40XH*p&J%Yoma+9!fvaVNrc zdN$>&rT|?RH8KDT*c1<_R>hkNRg2m!W)ttwP9E$;v&cSfP&;!ch6LrF!hhZv2CE^i z_t;y~Pun+QtZaNJ6Bc62m}cn5t$;8W-}lA^8ITh&kRIT;`nrR%Ux&SK{k%7Y&(6k*#>+*SorNfHX7vfYGept{nf&s9RJ~tMw!$NkM8X90dI)@8S z!5Vh(O+wwNuxH-#Q)P^*ar@B%4X)m9>|H=+6dCl8$JK;uH==B^-%i-Kdo(^>ah(n`)O;&9mqT}j|7L3 zc-_G3s0`k6HVGuF1@WdolJFhPi;Bm$8JA#jVw2F8>O zELLe}P+=Dcbrw~<(8oG0bX0+4F!89#(a0-+EZY|%9ADM7t2c`bo?%; zbk24GZZ)uIndCMG1EJwy!1I+H;BAIS5daBTkpoZmZk&V|WU&ojtmt?{3djHv0*8*c z2mw>Kwobe?igKW;K!gBjhTI|q&m*6uq@csp2MI#JABRqz8AD5>R_>OV7 zN;rSDD#3XLDuLr2pp1=5K=hngCA3&o!r)k|gqf6ugeoE5Dh*bZpmRc32^e^~N`TGK zrJ>!_34@ddzLt#92^|)laGp8=M&|N#0^i6D(+PuDsS{>hfllBs8Y`WUmrN(LS#`pN zG1Uokljwv(s}xvug3bY5CqVm{Iw800x8-pB5Sj15%6}9Ir5q>YS#t@|jT^3Nxror?Q&5#Z=Z(hm$WZ#Yn10?lf&9;f&fv zWfE}?ej;AvH$^SsFe7LRyJ`Ex?&&5^Svv)$#nMHMoN3_1wwX}s7EM7($yHLTprl8u z9%=Dr4H1p8S7Rrmv_4}lqqHbvFQYTBg^XJC{+P)qwD_3IC^hpK%jn$8lTnr6)Ou4V zN{aK!6P&;38%=_f@!sWDnBfbGBt>SSmy5^WaB64>f2U;QZ?`=r;gp{eI$wO>_LFEZ zSUds02Qsnwx&xbU!;=x4 zFoS=D&2PkNI>(h!W1}1Js57i|gL>fQ@wkk*Rkv@r7jcOm(V~UiOBlq`g{s%KOyx~_ zKns|I%I5LO<3c;a=it36!^gI$%)?^D00HKY7ZK62Aq;DMu*R3t3uVH~w1jvRYRYyS z)(|)iELQ4^d6bS3@e&AxwbHd|D0z|h00@S(?6{9D^`Mp=^D=FzP_u<*{288l^h5M{;WcNDv%|Momi2f>=&E-Ywe+G1GC9Z*kSe5U_NfL26yKGD8s)n_>boK^ zsTlRj54g->k06zJD-Tu}f3?G2_Zv*sk38(VB28m8?7Jc;jx~mT4p=|~)8Pq`jPB4@^kq($F^lyTP(T7h?@r7V!L_2vfJ!jH`$hPYnp0{m9|)D zi*b&QQ0AG{1sW#inC01~B}SmCgT2c%z-*x#UtZJgF3;+N?<&l#{%qP<{n?CI^=HGO zV1hUrva$*7sl}9hc<%%!Dq_;>i{}Xfc5n>jzRR!xuGrhP~4t%!IA}V8*cegK6Tf)Vk>prbW{q z98#idIIk8Hc8z3OH%#n)tYumcYvs{nEz?(GON83Weh9Ud<=|P2m#9qVs???q_E^fa zG6VA9F_vjP+?7XT|!Zf8K;8{D=&FU^TbR@deEotO>(*!q;Z;I`Fy4>~b< z_OW#ckheXP_n0%+hM@WRRtC+h5iehoc=;K`%V!ubpJKdxobmD{#LFJnS^P!eD=Gf4 z7ZaVzXJi9f8&1!1BD%SR=o#gbyZIux+qOlT3_b76<4$_8V;v&tf>f;Rfz&U|XK?;2 zy`47)JDx#2&HaJN^D5JF7gT2bL8u-fb#Pu@|1pp25-;^m0BCi*iypur^u*RCEiW-7$jwI^Y7|p$E3F600$|B-EvQU$ z2rN$(_8-%Ua#~>N<0YXAL_xuF6tJY_Am+x2bt#0UPhjZ+ENP%SUS}g`0Z#6ueO;-6$%;A0;W^&+C8%X>Q&Fnov--ktBHPm%!p| zB`8lh`a4JyG&(JU!b^Yz+z~lhPWIs34CrHd22OxG*q#6!(=dCjDJXcO3{+t1d(eIk zd<+sDqvs8QqlsNWU`0-_I|x8BTwpK;59H*j93>~X(y!!%mjDQS5j=Gddprt2ICj7r z#OXW(-eB7WNHT7=$O&2yEK-DHM+0P(uCjb~Z*meU9LqzbBS?G|4g4W#-5rk;*%H?0_bbqL!D zVRGeiD$;Vb$^{|(^`Tr&A*R0u%H>p~nRK)&m%;y6%0-7Is$6KO2;JzE%X-B2!Gq+LqBG$EtdKEE)o(EQE!t^5q4RIk@N#;lXolozE z&9=G?!5Ehz>MiiG=3wT*?-<9RR3TCV>;i59w$U*gjPV7cLzPc8T>u_ft-pZ=jf^t- zAk@>Qv5z(M!5ABF+INCsnsy#o&AQ>};Kh(J;2=;dkuoDFCvN68YQbZzchqq6sph!i zfz@8?0!3F!S!wWLm1&-dLew$`W2~}ikoibsym0?_*kQimy7of?g+RJ#WuW_gC9J?0tAa>f@Q$dH^n)cCE)>VEQ#5ex9srJ^GgAUgNGW2td-!*y3ZoxSp+{kB0AQda#6Y9YlwbwMG14*YWQ%g1jqs<+24SeTwtw_sJ4 zG?~aV9-P6|%x$B(|I?ot&-)$G`)|S-^M3E6;H$3BGUjKaa?{33^|Ldo2#CmTx&~t1FX1+ zLvO`=ht7@AK?G`-4 z{VN=$y!d=|=eXyetw^hbIeNGmK1_zlPnm@yr(@_`?Q;xFMUd6=ew|OeX4E`ycU9G5 z@R9r8ISr+!Ej;X8^iz(Cqap`gXZelW7Oh5+q^@A*uBsJU0hUmgM$yrs z%iGs|+FAE9pLR)CH=9l}@%^;7BJGYGf`OUnUc!jbjzd#pVnzWYapuWJFGrOPGe5A>D9%^z5k zlFqvNqnH5Dy(xD7z$tTh?kMPxKf?ThcYlt=kDoGd)5)zQYvr_NHEZB+oMk-LelD*o zyxLzmx5)8p&hPVY#YAt#6Y1WHMVVgA9O$oD;P6*0%JEk`lUeXiO-b{#II1#E|K4wojN zMZk8^r`7o}&mS82Ty1D@qfcw~XAhx4R={@B=eppx9Sg|hZs`HrX?&`m?$Ztgv?F>? zeyz^uI>4U%0D}|#1zbnG+30{>HQ^+?ViVg%Ka2~yVgnapL02_Cv#Wq>&~G~$ka_W@ z2WZ$zHD^Bu6E<3>Z%@C1+*5`RdYaL70}+b zVs+kc>j=o)c)+R;UBQbv9MJaYU3s;=KG$J(@3#Efg?W<@x}I)#?HUR&B&8$LDJHE3ACB-Ck0P zVnM9DihyjOc;(lsqgeS}=fNnj3tdh33juQj+5w+Qz<|~kP-5Xzyvp^t_5_qz_-u!8 zQgwAeBv1&520leVueRTc)desL>{3`!0`me|z0V?nEdeDKewSdC=W`wLE3xp|f;g$V zsu!$80?`12h6MC#+pSm)fKgzV!iv1gPd2QuSmhXwD{t~~T0Dm1>fz+$ z>ftdQSB1&PRpA(ptCh*e)ygp(S0%~ERmm8RtCy0GtCz-PTy^6MT>4>t%+8bUM==Bt zJc*$=(QoSwXc1ra-p>bI$9>f&C;A%e1Fmzv>YfQW`N@FmB#!);_{QtUbb}a|qB?4E z>oqcWgb=3q+fL9$AcXz%Aw-IS(61oGNkWJtLb#Y4+DWJ!no59pjqD_0gsU(Y^w2@< z9~}`NCWvBR31TxryhiqwAUa6KbQ8wD(UGx`Fw!s!8TSyzYh;)SBRnn4nrFf|N?}|{ z7{#KKjv|fM%Ay0tT+(s64kJwb=;&BN7{wK!yC=N9R;~bG%p)BgCX9WflgF0`V=i=^ zjB4TaweleVV?OB!is*`GRKwcoB#7dBkc|4MzBaxGK=hJ~AjswE#&p6+rzN3s94n`V zLuN6_2#Q>ucFZJ<^mdYH$FcEt2;;+~BPeot>Tx<@6gMfcdK?=!i7*zDj$RYSQL0A= zVWfYRL_Lm;e?=Hql8%c_7)Plda|ok2W{K6~7&&Huv4nJdSch@c>M@rvuB1noSUrxB zM+X>RA{`4&7)Pld^9W-}a`iYyt{|o)BpE@F%h8TdD+KW+x{!(06W$Py*OY-Gm=$cz-IgD5=Pzq&|`7z4zyO(q*DoLo*G{Fgc+g zNqWDAW*VAlPvqHO{h>@$_;bn3_^)cNLQC4lvb*K>f6Zy(oQ3tzg#Uo+gv1};eQ)3- z*ADqjtG0>jhr}P}{la^ia~j^?H#Gn4JPuUVu4VF9 zcRst9>zTwK?_1dSx12MvFLM2p_~UiszVHa=R4jl0 zAB(syO8jxt1@~{cR?07yPA%tpDe=cYXn zEpf-EJ|FyJuHDl1Z~ya$T)!p$_{j4ATfsRU-}u>!bGfcd{P73>dTIgJdbxM@tJApN zOZ@TEseOLV`Dn|X_ZzMQ6My{Y|KC6Z*M`Y`=fMeFA13~I`q#qEoD(wh$ImR|x-s#` zpLeWzh-=CGs_{R*#Pww2kGD7M`xWPmT>2CD60S27fBe_o|D%m-&%ELNo1q{Bh|| zdVj>VZBEX4`ZHYLCjL0*w&j1oIVrn-`|1&{dlP?r)62C#<61ahSX$b_^>E^kfAHj; zC-(f&=XOr4smiYV)pr`>k8kU4uWw%e-ienQi+VOLT7M?~_}9gsF8$|k_D=Z6?{ELR z(E8<*;*bAz%K3NFzJLGJTNY$}a`xmkx5OX6wm$6-&b-)~^Ow%L{8xUm^Gor^zj3i&_3;hBp+n6dGZ_~Vm<&G-DIc-Ir3et5yc z@7-LmD*l*jCvnbBuARg+l;V#u|K@DhmmJq_{>`gQ*YgXM-;uG;uG4AB79g3a)k;gOXw)X{3Xvt1R`5JR-BT>+VE)BT zp%lE+3oc({uS!=Lj^5z%CH6z<0c|%juH*mA`_i`Ud3?#>Y6@1*S=%rXt%6Ciu@*zO=0^m8n)+H?P*HOm$Z1 z$7@?A_-*g`Y!~>)?O`S z2x$GmizBx(=y#Le*Ap*fS9j-$rA&|5UWaH%+2mye+;7JbNf}jO~kYR;a zA$aGZ6M{KjTbFw4l;yMS^xMueRcqTLguu5LkJz{A1EVjv{AGI^28M+Yd_7{72;^~t z)lW9H2C|!Q$%_itT%WdANdy|2gupuzybQ4r;ysLvJ$`d!@XZtnu@8iJ*UORdWYaIEP#Bq9$Q0WE|OPc|)U=PO53BA6Dob*dLtAVihl zHo&(gxA|7dKzhV^ufT$w878UVG z(=xn!9i@tR(3wxQ5Q^%EXYKEfLPsoV>W=D&#iP>^hep;BO{R`m($smyIsyPuM?7rN z5lfnuIW9v-ET&qhjp~Re?eC33NBEjfM|A|^=h5hh!z1g61E!AfHT7PxjsQT^5i2b^ zf>!l1bOb)Bc-dYT)e(=_TSuWI+)WpvI-+EBI^xL4I-=Rs5$-08Sw!wvq9Xthb;L^+ z9pP?TM&DtyI-;cPw||NX2n6;2h|fi!+wi&sj1f0NIS@EU*TK*U;x*|0LX4}RoCMuJ zP_BU*@_Z=#ff!eS4>i4jI0s;K16w^6X?Rhi%E+syqAMFdv+s9VMuqo~ZGs?h+fG=fUD z)l(q@7Ne)0s@uCbQ#U#ZR!>bTuF8asy}Vki(HP1rt<2cVtHof9p}f)%jJ>>Cbov;| zD|PkQ%d180j!s@#-(3b}3l+;`sjA~1lbq?zG6#gpnf|WY?h)qizr1p}D~Z3q8#d$b zOPK2rf%Jco_&b1UQD`&G030XIjt^GPSleJTB5(%XXht&{tjBJI%DhTY&f6J}^Oinbu*T!OBP;ZyXh1GeyaeP3M$V=3UJ1wM@K5^?D8J_37cgpik;GfON z_>^^sBOkLFk{ghm0TKiPUZM;EE^_EbQv?DWf#A?pIRd5yNIuCCsG&R zECRbT#x6sIIPw8ml~F(vb6Gpm3IblDyaMT>G@qVWVCy)|$7F&cpDul|nooIWLcXg~ zeP*H|M)jRG1~15m1cXKP?H{%3qn~Gx?{}#_BCAv%^AibFpP7vi@`>)#(-9W(8M+S< zzmPAX?xVw~lg}!Bm#O>A^hAvA`^X?4bf2UxOx@QsYTZZI(-^$JOZO33rTduGNT~bt z9EMIl=srD(5ko$u`;aHl$(KO)(TCLs?^WnNGpP}y`_34H7rGD04vX$PFlyaLZ`dH8 zW$=!u`riJsgM}mch(>u z2Ct+@Ox@Q!YTZW%-59(U@+oJXfWJ%pl-~kmb=}7dNRgR`m_0pM1S`GPu<(VSyk2h|8rzy=I9J()G^1TWV};CVX*}Y6p{`5z!@8^ zl%l3m7D{&0v>fsgrDi7C9Zr|JRNNaC6&9rx72-ITXwE$IIK%Uk%7YK=VSwR5U;ttM z@6X!%%$xywx%t518yyV_z@J< z0B(g)^bELVC8-p+&kmxfPH*27QXL;|89?Xaf7Ot^Lm)-((YE+pr7~~M3Z2)zVw zzq9lm1YiQV-&y*WzVHeEou}_07-Qi6N9p_Bi^qfscf{iVSUe_uZ9na^({o;$?>BmW z?nwU5^Z61n$lpo+XYVwC>{o$h`Ic58&vzvlU0_GFQ;T!c8q%sMd^GirS zefN2HfWd^Au|6pq+_rnqwRcue)K;1 zLm&0?hfbc#HjNT8AZpVF{!iVQlLx#3b(1HuVMEs)7vD%$$eYM>SeLv8*RyVP<)K~U zm5lM^fdhT&lGE1L)+Ikc;6qi$TSr)utxFCia#Ux3puMJU^2q}`uIAB)k-TbPZC0H< zvOTHt16S#<*Y`$pit3ev=24B&-*2)~Q~xYMBU5|4wSPS6mvE8le@n<`*A^&8512T!m z7^-mE(v8!TfSqIAM5f7foPJ@)p;IXZAABi#RqYQ-PDf0<6%1#npcK}`HAc)D#IE4Cz zjzc>Gq>4}N?G2qNMWb`vV)5GsGYzR=($=Rj&RNL|x~ROB0k zPzO>Eg474rx5S`>7$6fkGV~*)t_hG@d-A|Z_$&WfXv)w+icr5W@6c;PD*g6As_Fr| z94~{^$sz>`2Vm^^L!<;E;O`#bCH1MKObV$YR4Nb0((|Q6-Q-E^MTx=vcN+*voF-PP zn>>wODY`xZbU7B(^e@7Rkh;L9RGx{0?p?nvh17uiL0%8;-wAl)e&)Ozses4K^S2cs zb1pv%shE-=b!{3_#r^9+>LHMN@A}O#DD^%AGMQ4vTp)FAH&TxScHhAeRS!xXy|4?Z z;<7I8S3QH&fct^#HK5Myj}Y~TND17}-!|ZdQtwp&N`401&j$-)(J1Jl_L@?1q zz)n(-DnRks0(LwbX3imCA7JZ@rs?kq*oo`gQaF9*1?>7XoTdcqTi|r!dhc8Uc6~Qa z-$?Z%}FhrKXyCGmVbRo4{z#ajq z)EL1BlVpZ zup85mni8-_L27h;$GHUT#%`p(lLA&l1gSj)Y*bOMzb;^ZD`R!~v}f2DbPa(nNms30 zcbl(ZHchVfFj>>=RC?_;PPs|9NW08X#CsqcB@vbIrpx3!!_e$uU8b3o0Ml(va+5CS zQiDtraguBEOgCMIV-JZoI^9^55owH>O`@i5vyhu~ThJd32A~;@kxG(93rshGv8U0b zNuVBfos2%ZkugWh-F6%|=@KTz2Wi4Z0;Sq?(`B*s5G6gVv^2><%iZ=EH|a)LYBW;4 zfjE#5Xrh}gE32-yhi%ovph~l%CZ`)v+@!O1YBXtFEl%EHx=EQzfR@I?J;GGCJ&C=g5f@-gSl?fBU=6kCPsH z*V!@p=)290i3g^eT(sL#xoA_YIsb35Ci@s=Eb2RNqR3}_>TM#)f9rGaZ~d-SA?tyB z`Tl}(@%_Esi(UC>A3Xo9!&w=zO5Vv(*4dc*Obb6jl3J62_BARfZ>qAAKCo z9;6(rJRen?7J^S}e|=Z`{m$KfZCd+{Y3;B0$J$@i)&8J!xBrW@_J5Vu{&W9W`{gxc zY&7^8b?){bra}rokNDRHKTr7Ae+xe*|LO!k|LV7dcRvN|gz0_?)*(v4`cUMV&qEkh z59#rMnwZ-{y3vOV7m$2)I7g0=e05|)Z<4Q;e$1`5)=qJ6>3zEG!#bZk@l>{36Km|v zd&*n-o(^-N1hfNACvpZ^)ydXghhxu?u60yes!x-ywM-@|4`TjZHFw_3-$G#(`y%DF z+{Me*^S7*HP^5e%z&&!KN#PpiQYl<3=J7BV?`7U5D=t}1{Y#QVj>+>cNlZ1Sz`rcG z(~z5=bCm{0O`ZHtyi7a&{C4_r+26nH&*dQhl9WSZhWVGn+P>edzwWe5me;O)#8uM) zI!f|UgX5S$Y1&nq|So0XcQ)=7T;-G5{V zcgC2ZR+>-a4ZcTD+@(;Hj>&|DY{HrEE_01sHzBLvksJ17TBp#fgbg^&2CmXD_ zH^+L78>Jl8@tb0i@4*k;m7NI1+&yt4x?*Kp$Wgs#WGu9t%orr8j+Fm_X>n^Rr}GmV z&@w*ZT$&LZULX1908OhwR=Xa>`xGZ0%~n$8Vi!s+>CJCRMo0004ji$Jk^v2*zJ_C- zElHGqXgYalQ`6sACf3z|q-*r<`3+wHm7RY2>mMv}j|iXc9!R5DX={~XIxAN8#&o;v z&8NNVRWY=8e8tg7ML!_v;sRyLuALPtJN5J5IU25YihyJIG}UUB@E zOt5&%`C#$X=tRjipmD#C#nzh*A!fw;*lsq+ep`LL-TG5#!=@=-x8qI@rB3eKtyfbQ zbhhr}X^{U`^wQdBXja28`L4~3wC-BamEZd8e7E#>gNncXRU|MPfy z%HccdD@f@(ijUuy>P4j@zT|49^z|F+nRQrwrDq-f(sEBpoXaWp;kEyH_$qpJ!}pmU z@cp;!4L>FFJRWqx_wWb*QTUcEI|IJTQ2<)&=Q}j~IeFZ`R92k(hl zhbYL4RekI9gLo*Fu6Zz(cCAQp>qU@NPU*z2bQN`lvNo?oSt{%J@U^Wtw2$(O$ZJdar6tzB5{nPC>-!CF znYyglddqE&mF?^(P7ERMdsgxAW2LvL@#1(SX07-?Z@-KWNUfD6!%t8BZAItQ;Zuqu zU#XiCi+p93{;adzr}|Hc+@B<0|JZCjtLLspcLkg-P>^=8!1%=2VOF(U!{{Q5bKYam z$jMVO{kGr5Togf0k#{}RO|JbSJM^#p&v;k(Nzr%IT1NWwse>loToS)B=GGP`UmI5T zbpNbJ9@I1?E-i1xUY?x!%~+`A6P-J{?Fq+iGV~i+Jnj>*kb;aV<7a@pU%9KmHj z|MGe+3;fILxXkk}hjW?jUk>931=lbBAi1;0K^Eg6i<=5ctSuG$p87--J8u?S%!)(H zV#(@UyR3!@O){a?#mQ|iE<{isl-YaCzJi`;d`c%d3w1Mzio&;{U8g2 zo2MVzUv@ID817`?QKoZLK(Dkf6-xVQZQEtZP|R8r3t_f&wI8!uXg`*$=@%WoW@_Vj z5-ro6wWiowR^s+4dwO8D{SqXbQTjP2e$$X4uS6@BJ!M-dIo{n*S!4Pz{zf8SL(bBOnVSlSyM@;mN zm0cHk2?O1tK&yd64(#en@S%eNyZE$J>m(Ht8JxmCPbC zT_2k$_`Mrx%RpD}-JoV=ax{8F{$)=mqGWcppouIFjy4GB9m39-%1BS-m1bGhhJF!A z<^T}nT4_ZASlP+* zpT60uE;|`wObKVyX(RYhygB9wfk?%CAM<%B*$~W|nftPneWo_YCLh62De$gCOSUCb z`nc?5@2OYB+<`?HWTjYXBZ~4$KWtUE%}eFm=cs|(fg^@}16mW=0;!>GP3nDvl@j-8 z35aPaG>A#+`j($U9du_cv(}0}9C~eyL5JQQHK^N|D7_MPf5+3jn>D;YdADf>pf*I&B*?g z<&)%R{b@IdxGEMWJ`R%e4U(shWu^^+gxjuVrO;f8K0xyYzO-UK->-aP?rm9{3$wN7d_VpF9o@ zjIhvXQutJV@;M)w_|k=X-8~gcjGRIX@F#n>TLi`7Uq*gdGkt4D`P$Okjgdo@MakY& zZb*Cd0Jks69^&bLU2%Sf9#!|vD6gLSWdQIiWA&9sdZ|xpkcg59OxH{Zmhb1 zr{0&ABHDa<`2;|lmnR?Ar10Wi7C4Rlc2<*XW1tm(hAET$H6q%VKNG92Obu=5{kyU< z{vvF7pWfu7_L{~~naqqvqnZ2f8x2OSwboJZr(FB<--R!`vLAJ;Z2l~r#-G1L_!CRy z=F_gX{qkd-OlG9x6j9`m! z4JCP3`!I^5`kKq_?6LAb^&_7EFOIpds@A9G?CC^tKs`4ejyyP~!2Yw;BSsCMIa2UR zol`{e9xiVl#^o(V!??UN#^qf_G2zj1y_8Dnk{<$N0h33EqRY(zU8aaKm$7;M84UoW z=<)cDtPDe-UW5n!NG8%m+mE0}AD~qP_wF+@aq1rZwtGkT70TFv4|f^Yx?5f_ zx)nTjJ7Zbw7Q4>VD++bw6uT>V9a2?pr?X-``x!H|QMpfILCIYO`y0 zEP;l!I=vr5>6(Xr5<>A&1+mG{aW8MNijkd$c<+RG!SgsKzv@2zEY+XC4CN1ieQP@t zcJ*Zj$$3`wo$0jOr9UU~nTx1*C1lIVU8308dk#tPc~8P?AVj42-C6``#kSIWM01aR zHt}$%N?s69eth#Aqt~lVrQ3CuP(SYnH64ib_G)hOA_K}z?o@N4 z*KbYiH1eHi`4!!aH{Lx-uWA+z5F$MI~B8;jSktCBHT#D z1GEG2M#}HuLWFnM+P#JVhpach0w?BO-Fdh&7$SYinkeW>L_o`p`6>d}oCdkXu6Erw?PEmHGJWK6WRF|O5 zIbrg+MoGiCn;a4#K~Hfkp6A`YNUjnoojFm>d#wdd(hC*Uw%ZsfzXVMob07wrTFb_Z zQN?-YW$y?1hf|eHKOoEOZdJW~yz8acnttJ7*`yUa0Kl$%!2q56{g;t5GMkrvkw1nF zqL64&{;^IRp0;s;9cEX4+pm8w^{s8NJ#wiEMRmq|doO`?8Z(P{Kv;Jz5%3~8(tz&o zPZzv--q;5*Zz-9@6K^;-8fjkDTdJ5CdLCVrxSPB|&7hG(3aXCy<$Jcln^%}ZSib70 zU%FnU=Tj;fzwc2)rd~y}rvI3C>ZGAc?}&bh7A@eNu4qxD;&B#1?yYhRc+uTWX8_4I*Zq#{uFFyD9TThx88hHPu|Ni?@@3)rmq|2VO zD}UlYKed(iSqM(Uuc#?clk-ekCkAs}Xl|Wtx*5ee84$iGp`W!DVnGFpvA%M#p@8z! zu$>_;WtF}UGV!06xNAz>6Plua-pygZ>N=`2Iiq6nAw?x_r}s%odI}UMnei(CG&~X` z{WDX>*?kCQ&LR8&wN&9-rUFUxtNvn!HS~iF%iFy=Q15@xW5lPNU_}EP`SO6CW)@9X zZPA2WAB2=sG{{SiJBC&~b6f(2_YaIZ z+7OA9f53D?hW*Im{49G={&}&)1kP>S7%9JyCy~V^Ss{B+&c&3TXG%r6Dm^bK?PW^0 z2c^A&(o9pjEGW$kO3yc?e+o*^4@!HR(jNzXD^!vjl=M+aII`Hu>SGVeyx7be z9O)C&$HbNa(UiMj%4FB~Ny@JR-Fc(ZYfUzoz6Ja<31rva?G>g!cGQS_B8a^9PJd+9 z7vwQ(4Q99Z?eu54ymmP96p82}?{SLmmTsC3(!6K?P5!p8sJuD438a&O8riLfbA;aV z2LxC}Cn|@F6p3Q!h-v=y62cRyaX#WdX8m3$E@lu@BuqDkIdMmri-Uh7a^F=EKBOzIWee`Nx%w5_l!n^Mhm zzfXhL^3)&s>fBUAd-2D;=08f|!Lo+Y2$(L;hkalw#Y%@aOl@y{L4ryu!>)Wat-l=` zvNBq4M<&~qdwd91Q{s=xrZ{-zHJ%Xw>Gt-6^ANFzOaz2{lLUiH+*N^9G(&A+PQvrh zoJ=DOB9jD#OfB9Yc1V{r$^`nsTS5a~hA{>DdB1$A1M38uScO7yYniz3)JnC)CuS_| zq)}NW-+bN!u0v+7!RcX|uq)rk^j6*D58*EkWJ?8Q4ISk)ws{E(Yih>V|YQN z;w8Ur42V)Bt zN0#|&viAz}tBQAf$Cs;Oqp5g}u{t=dqiQ5@pqr-vf_L?@wQlfheUw^QZL!I=71P@QT05R&a^;uco#2#2Dnc4Z#kNR!N2V}n zIX`rsoN<$t?yH)&wrIug$rbb%9IJlv0%X+9@`9Ei0)x7hlU$^W;1| z`N+AR^wN`j|4Gl*GWFzyIOELL&exM2=X%mxPa4kkBuh`8Ki8A&;fEsS#_F5AwkHH( zRNj;H-m~-qN~fGvdLgBt<&3&HlwNmMX)dKjl$KTZNpE_1Lunt>08;Y2Yq36NQ=rq}pgPy-4qRbJ;# zZ+`mYfA4PKO+9=j{o&VmC~h$7*ECK)Z+gAH>O)`_*#0$W;32htyR`KDa3*j0W@W{T z<}t>u7+{#agxN>Npkp^xJt0a+4Bg(07|N@a(cfP6q+hl|WpCHWXOMd^%`bgHrEjW~ z9V7eO<*y#|rqtr;A(MZ?r_LI{;`_1M{qt%acSo8ZFssY5Mh{y17`XVI4TQg5PUe#1w* zx@-HXA1|>hNArHl(Xh64zwP&!$X&mh0Zye2zt?+=r-GCL1iMn!g}-o+$bF8A-LFfp z-_Z5eN6cG}{6g)z>Fy8p{qPy@?ensDFWtFoZTDRm^ZszX4*}x-fiK=4+~a+3`T1wO ztW&nT{GR}B35k?(ad;KVeoUa%8PjLY|=ArQ?M()tYXwv+8C*@m7z$Y`0Aoc8ZohHVpY?*WUM29 z_NP7>-iRaANQ`{pk6aJpy1Qa`e9bIxqYqimAg(vk?An=@;aU6S15eAV8f@AddQc#( z{0mBYh+nXS0&ztpWwFLF{Y}4RT8QgjZ!qyBe*qop|6KoXoX#b9@O05PPG|7@)Sz$d z5Aj=eI)^p9#K>Q&#mSj3#zGye+L}1D!f;}+)cTMHT6Q|Cba&b5+^IBqGp2x+|NKg2 zr$bYlV(ur|9~6|Z`-$b5knYXcOklF7TULB1n1u*xWj#L$&1ML)Z}^-CpJwE8czqdrnD+cM^^ zHsR7nZ{lxc$v%-+wNk~2q2K2%;` z!u@B~e|-h@KkC>2Opp3aYTrJy{vy@y44L)^q}BK7qu5=;=lE;^@Z*h&(z2Ewi{ICu zU;cl{Ec=d8boBiic(J>gbIzeX&1P$?ts7p0U!q*gyl;|vv#cX@xmHy3?ksBxiHK&E zxH&~;?!3|O(WJ9pRuWfHL)*_%@!DdSGZzk)VEdB7BR)D$QI6#$@lpL-e|JenMw)v- zT-d-*wA5eIQf&8bc82s%3yES&6FJau++!v2hx&W1zc&kJiiiH>w;jZD?RXR|SNded zwnrxv$Hx~G$0z2MB<|N)4Vb5>+;(pRD?1g{Q(1q$tLSzDQhogeJ~CR=-JMcDu>L5x zhd4K{?Dnqu(y`9AX1h|v?aP<1rOkKIa^~Z~49!Q|Z%lmqVlhD?_d*_+U93yHs$*~G zcw?xG3d?DI4C?oy&uT>wq3X}yOBd6$S>!%25jOU|sl}}gAfuprfh$rjJ^|4$#Xk=-16dV=3l;hV}P^d1b5iF8LD!#`9 z+prDMp_k5s;6VZtcbz7%2PLy);BRty6tAe$yYfXL@Trf*=4e6agR$Yg zzQ#VYlA_GGOtU(@rfQP=kdXTG>Jj_)4H_`qXYdZe?nGT?L)3O$I=xJ>Oi@x3nzn4gP z8;uo%c%;_@{c$|eqzVI-=6VCn%11B3@_4LlS{{g)R#5tps$$-too~~Q_x(z#0(M~= zzq-_l#ii>e7I=NKz%kuhSd1L7D?iyau7}gcHBhZT^7hfr zVh#y3`u=)B<~eWlRQ8#wxBbO#Wq-KdSN1C?D<(=WoU;1dmhkO}zlO&pyyj)mAA03; zvb)UM5>XTua3w8?)e?F0-e{KQWf@GXL635y^-%&2?<0l+iQ}bsqhC{Ly?5PDo zD$e_5_{&APR2NiARQiVcy;bH{%W8L|E*)Yr<5M@Ry4dDgGo%)7rUmaKBed+<;C+x^ z!BU_lr1HE}FItyjtwo+e>5C>{T|ST^v%*rWp!wE7_I`}z12y_P$yC^lycF>?7s zhx}*X3!ceRI~VEkOMs&^)@}X*EIj4X@YVs09`!N zfALPq=X|hDCWG`BHY5pB{JF3ey88X`qjJx1r@TdDHDJc-{f4Wy`6+o| zSFX^26S+_Gg3sn^261Ov^6sYzIZ*`^X0-j0{@S@P?!waa{zj?48>rm&onT#Or|Q}K z=~1sh^)91c>tyCZ@Nb|>>l54r@9pNk?I(6+hkk!xS6;yQ+7@@gd)rwXPh$!!A}HgT zM(K+#*+S`kdZjRE!i&dV<}$^Tx)?;;@I$SayGZC|mg~LqU?qjrwEDS`J`L5c(giAR z;tM|CTw|Ea@L`_U&)k3;Q+2JX5_p#6k0n?I_NFg9)ajl4xQ}>bT!Z%=$d1{b@gC}W zJA)^K^rSR+qR$LOGF0F0eadPYHs<_lrh)@Ta>QESgH^T&8$M}8tO*hd8 z%R3^j&j~c~hxfiu@W>QaTuY%C=)b^|R=3cj5d40>NtaDuyS;xu=Ck5BRTUkl@hPEK z@9F*i^Q%q!u&L?92Sv{x6d*nb&A||m(u54r#}FilyqStS)xe5+wGRU1_3XiQIoz z`}SGwKS}#-KS_t@W5Cn4x{LlQZ{faGLd32VUITy9=Rkp);=qs4fp-nfwU!v-_Vuq_ zc?U1~3&iQQGgP}12ekG5)b`H*QM&z@qIotM`XP2{hDSyANIZC&txY}1|31k7=4FRE z8=RsqLcX$YGVeSlo#FNUg9sVz@Oq?tLP~Cr(*@e$Cb*$X%Z%>6AwJuEGsx@TeKX9v zqWfl)*Qfg?=7r2ntznL9e9a)DdVJC`P-lawH0mt=#_7{+qKZ7T7wn8qTe!MeWI4O8#TD527IroUUe`;!3E?ns;k z!u`;xpvpJ3?(D85uU6(D>_xy&G)?V(qTX!pS6dII=z6bEM`1s2EqrMR78~W-rCAwH z;?ZDxPluiCWP8sshq+nRjzh;x4S8C{UKOov|+62JnTZ@AgTIe zQD4k9<4AX-(Sije4PTqu^i_rCW*{D6R~k$fBNuJ!*&~M!Sx? z$GbRadXHJsgNO~Slmtz$r<7WhYD(X9e1s@W){T&ULEQzEinRo=#oslRPx{NG ztsA*B^LsbghW>8)Z{`Ir5K>B;mXQaUmgh{>l)Te680ufC`kKcc^>bDK3F>>7{6G>f zL-udlZfXg-{xNq54jDRLjv5Ta>a92ARziQi;(qMM9h$2dHtbO{xufbwro*AXtIA^O zP;OY$Z^drDX5Xuanpwr0O5&MC!aEHU&d|1D>>kf$O%}`T9)D-Dw;b}<3*XcW+Red! z^mgxcQ(F3vUJup{DP8TC-XTPqYLh;rmrIMSwOS8r_pTXb3}^#E(lpp!wMZZ(hMs0~ ztCx7r=e?;D;kmLpY>Bh{z2{8z+-9m9eg@>F_fY0D^pbYC>(}Y}OIsVj|4&ul=cDxc zGpXPD^=>}$BOz*!c8NIKl|S^~{~Yi8U3^BbD1Pko=^uFR+k;(D(A^-7=A){4IW@cC zN%{9?zrQf7&3>Y9loD7ez1mD_gZI`UJ}Z=u)9xL=9t*0hj!D{~pn>mCVbiwlf?iB} zP|QYxV}uN(Ae#hs>XU+?3oYRd@_q`T1^rxv&5x-q@%n4F{IZW#U419$irt`e zhP^8uKr~BH073vOfFDl*60+8M6ELoV=3~Jyu3;EvFJ)kf{`pzSl}A5=k8gI%s{hM> z>6|qP%&$+fi~8xp zJ2YRzpx6+%tgMpBL>Le&v4qikC%oUADt=6Pr(Tv#sw(}w`8*n48>yIUiYYOyw%dF1 zd!D$jLej)q>-Zlg>^APF-;UYiCPi*Ux;(iphc%ydMk`lsGuRvYv&E3(panj2Ex__L zU3)(fK&Uq2k%N8jAyQ#1RXnYp3s>FxYPD%G_a<8Ox4SCPEO$IAaAKwezKgl&a zIH-L_HD=>tUbanb??Tm`VCvTSEgyLy;8bX7=^2fCFSk*>&{SWqrbQ9mm1z1!-VT~x zsJchsEpPEG^GT%R$A1)%@&5E*in6v(Lff^zIH1dpP4Q><_Y2=vMZuUO*ziF5m8n7E7Dk2Q|#M-7aP6S2h8d>HrO`5ypkily^2 z^ija>jsYEs*!`)m`y&^fr&=j?d z;(d!8g3CMNPvpl3$I5C)#mBV7KUo)PcH%cT#cy7TZMP);#OBEANK<54WVy{h_jvq? zm+i)_!E2W$SU)EQT&Mm zwtG7M#9MY`wF4lPrgjIl&GVV@Cy=6ji>MP+nB~9-FGt-2QR}dstj>vATWt5RU$oG1 z?aL>) zcRNs6?UY%^lB>hkcE??jtj)1`*?q-M%q_U~+j9=v)?uJuLUlDWTfKmum-(6NScl#1 zT0fb)VdUT@i2N4){az!rf zBpbqZvM!9ABkan(om?4VJl3nUJ5!Ktack+@c2_d`Mb-)`^Zd2svaq$nJ)TVF0Ms0w zCg%3JH{aUrxXT>tpm|{xGdth5Ubd}MjwsoqvN0SDZB4GuwL{f*XnE9Kr#W=oE#_(keQpu<=hLMcoXyiLI;MPW)ZH4jPT0I* zt)(~;wYCBsH|`!Fb5ITQc<3Z%U-ZLI)dA%$Dkp2e>INEG5Vd%3pH*Xr*0@_OKx@^! z&9Rn?BwcXUGT13vq-lzVTB6oYX3lYIpyFf=6NmJ#NiGLVT+kbR*H|qYFbfj&!N_Jp zgc0$;600WJ1jcKk?q(-+)T)89nS|;b0IVL9n0?+ye=%dYV;$hNP@`?NIH6`c)ZsQ; z+uaVwY6&$^zcREjSs!)}+3rErT$XDmmqh?X?JshG*-cu9xSq@8<|G>;)&Xu7xQ)q% ztih$sXJf=_00;|XeY@~$HCXMV6Xh3tcI-tD!_0MT^^r^f%Z(0`y)apw6@_S2WHs2K zw;gvAGoNcUJE0X$=uL;fW0SQhbTU-yZr2Q2$D?A$o$%mxrdMDsOg2ZX4#!0%l@!gh zHUk-xX6~LBqb9S|(`>_=$CJ&>+ZGqTI}R@z8I@R4uw>>{aK{!0W@yZEtZiazgo$-L z^okQ&WxHztDGE(m(DpKi?8agQx0#M1aqBn=eWqhAQ~%XAm~h|}0ACP55_JzoL%X6@ zt9w#2UupVgMz;VAMC%N`r)XA`Zz)x+O&n{TcH5)$Mdjy{jX5@a0PdO+bB8~M{DN%M z(_HA&+Kwau`7qcfi^)7;Cq}#%)<6}sucpyO|}iw068c$6v%NWQGVTSBvgv(+SLx|b~k~?fS|0`faujwhZ9=uAOhT^+ei;# zCNb(Z(JEl^Qw>OSAY-UsfXy=Hstv>jAomU6wwfVwO_=oxg*jl-IwB563cJl?66M*e z5mL|%2wR9ySp@Nj(ygS`2q}fO*w(9}B%gpQLy*-zl!7z(ei+ML7CPlN2cYp;w1HrO z)#M;6+#}*JLvYlCSO-5@#Izzb=Y~kU30blG&7qT$7lY zJr_ZRP=eUR9&R&)7j=(Vjn)dmFi#_&135WvyB*qQyZaEB6621GI7T!h5+vFU#m@=^ zro_GBwE4c&+yos4^kl>q+;iM<2?rtKqb^z@nKL#qJ3JhrWP~LXZFM^8vkf^Qgw@l< zHajF`I1?ek8~}p&0+H1m5*al)p|yxe5G|NQ@F)dDCGxS_f$piY&^D84u4kKyjfizg zh)!!0QXHH?KVSv1ZG<_xD4JMu@xw?gcawv}-a`w4ET0PkrBF8WHVU&Yw9y4GNI6u^ ze#jqP5jst$i$u$_knGV=hq_0EOP14|FUvQ%TOIc`F(%6tP}4TkLkp9+z&dOp0TJk; z6vVDr0aM4?h*GmWK^Ur!x-Ak2U}TM*n0?ush%d?XS8RwRK+(3^VkS;7KRf3=uBl7vaTa8%% z&@+#J`^SbM+r_sq<4oHzF`-7(Xc0URNI(bBC}J`P_0GGVMAz3G%@6Q zXe^Wj)TTlx=7{^Moooh=;GjMnI&Qm|B+}BG&6TwDW~&M4mx$(9b1~072HhD|0%shQ zp>^DCcf!Yb!Eq0|C*5`^4KvFrY;y{ap?=`Wmax!J2O~s|&r#fYQwe-)@t`SGdc_Ps4f7wkg+3ZXI}XJJp;aOhY!M$^8r+H zV?VQo5M#D&Yl9uyJ~olln-Bl&5Zr&i#6d&YDSVX?JTJw7IkeRYownU$G%O}*M8G$L zxtX>FH|__K0OMO>FlLK&&?i4*fjLM|g%(<(B%WY;;UL6vO-?l2G$t|gvJvZV-s`v< zWiQP`d5ToPW#QpyVUr!+3__Y5Yn^mxy@kwOOV^3JhVqfrD-tIwaxI8tGaH=?Pg@P4 zL+%FjERv-@Y#HOylJ&IEpWG#ImU?ONWs8^|0f7x>474>iY=||sHL%9!0BvICrH?K6 z)nS>e|3RvIciVTUCf7C6=}JH(R{Sc{GYdUjZ=3-^SYqKW*EF*zy%-%ZGga5UTk z8#5lr693v~U?$eK*3;4~+p2>}76FEJ0E@~!1S7ghtg@9DW02@_S!C`S1cVFEY?f3m zY{4Fz3*+V-o^aD2?65S>^StI*UZ~LtHDdCH+9ZZ6Lr^l-s~{E=Se;A{E(ll-48OuA zr*MbkHaO_S5G+!QEzryq*8(0Y31wthZ#K*X=Xkce%5B6D6?->EWTu^vOxj~LqOv}` z`)5D-0@k!0UWL|}hZLI+PuqpBIN|-GtA$wl*sii;J0)rD&_O%Y=$^*xLtqZPDC+Li zKuC~dwc=)=EATm%`=X=8DMXGU+>wD@!dljx(N}Y9vAZ$a5XDBq__s~Q&XK-vm+^s7 zfl5h~->`bj$a>7Zun{^E8yK-pAxv)!3Y6^u2N6?)^-rtVj`aWrA%&g9kV}y0?qPUi zr399>3%NE+r05i$;0~K;gS$y)9YlD_$VzCX+1kLCb_qUBa|@!+h`eKg{ZXBmJ@Us0 zLX2o5c$l2RW<{&pkvHLE5K^V}DuRJGLod_wOruyk?GQpjDh?ZtDQRX}O^5ReJ%k)` zMN}y<_59gnx5y{E*>q*K7}x|D018)|d|WLsxEgUi5>9G2yh#HtYzJAoE!^Z{WIEvn zX_zH=uTZE3Oxv7L(hk)EW(yC{1P$TPL7(h!UrzYbImap7WfwLNeua z4wFx71THWEu$D0|N{XJx?xj3uT%tU(7b%AshP@RHQ-~Q?NKIU~Wl=k4 z1d)YK8PRqUp(otptH0`=1fR3*&{2$h>4i`O3cRqx1?9UEnICeKyasC~k$%=HSBj(( z!K=4dTJ;jVczO{Z_4BZVan4(04oXkJ6bqfi%-qcgJJoD;!pLt#9k|t9;lZ%1#THyQ zs83duNP9c*$iBlzLlP%)E{;MhkRXn&Ya*ah) zu+V%2aKIv(!X-T8c@DIR+-n(^n4SLzWS#F7Bm5R2C&SC}nB7B#%hAj3CU=j~$k>uV z3MdUs_XRR?MCN;uH0l^uK?wyQ*8=jo zKxrt>sVfnG}3(5J0s*!!RF|crf zBgX8SWh31UI&mB+^C6R^C0|_|=ftV#5UF1eC@-r=5WE>e-`ll(;11SGiG zh(dpEtH&nF&;K^kPqr+4h|_h8ocukAJ|}$0J&oqwh%GPfAe0eWhSU=@$Xv`j{M|Zt zBcN70iTse`9tRYWA)y%5uG^GGh=w^thPJhm_wk{ncc0e`$_ku=;!S1&qSZvy0viy7 ztwk9^gU2wU^79dcXf>Fokv^!37M8|9b<)hdFw(l&1Y|I~?T|uK%mJcL9%Se+OdeW? znmlMI@xq>iCRksq2?auCUUozb_% zti-~iIdtVAUlP`dM-^1UHNkRUgULdCXRQ#5ZH8s#5{ts@+apF6>9xq*wy$QS(i%GlkAV-RW# z%h`S2fyYFDN9;stZbsC71J$HiBETR(H!GMSdr)KvF0DO2BjBt0_TUD&pgw)JM_uTq z9?As6*ea(2YcMch>#;%c_Z0WJAGS)&ykR6VP=-@jULf^}R26P0JO+c+hFygSs-5s2 zW4;2Rbt<$f8p1gxXtM%kM?@X#3CdqWOjx#ZO8hm#EVLzKnhs?+EHFZFrsT3%@p<>S zKZupWnoL8h$vr6RtI-K30T70n<0PIRiGTcz%u^SwTrYMm1aIq&PKMpQXlO5D2DTKH zVOC4_NhiaPC3te78n+`|2>RB&gy7pC)lk{26i5qG)>(_hpaBUXSOe)1b}=>~N&t#t zR!89UN|-z0wa^zdRS1)~sLZ zILD`XT;N9Hma++ZvS_QMZw~J+1SN?@5&YZ{=#Tlp3vY(oSS0(cne1aK?}KA z{6+kqz+p3Fw-u~bqS)M;bc#!wkU>iA&hu%`h>B((yxDx>0O0iYnQ6N@gy!QJiFD*m#TX;f_1 z!3ZrpWF2(EhYg!A5s^8CwZ#(6`*`Za?n&mmn zHbmwNTM-!%KI6I>X|d8k<>PBE!2nryKE4_(DBCO|h1(JRi}1?`u3v_KyW03^gx8@g zLXJoY7DWm6h8x@tK(Lw!_h}*PfbqbQg*kaF`xpxk#l6E&9e#r}Ny?^^C7EpUsm%9H z44utmCeW^psHrqB*If>q*5o7>U8)$L>|)Wzp73(hrsChS z>I(ASiiTKlN0z+l1!Py+78Xk@8u7&Qag&t^HX|yRogs`X@2soYL@yZ4=!fw9r z@Y1`Oqy<9{Ha~E z;8!f=V>ZFCRe*{y$mmW(aG*WsoT@Z1?ySvY5_1PDLMKP(0LF#ZL+~>2aZeM$D?AER z)vl<#B@kS*g$ZOg+_xQhFpuFA+&&TrF+`ZL;||HJD@43XsEtYFe0n`X)sEbk~ zOrbdfC##t}B4Ef^EWGd@_^&Q%9g7kWEUbYL%@_cPV3#7Yd&VUeeOz%n+c4i8$qoff ztYx8tP6z{vrOsUrD-z7lJn$)t4I&5B`LvJ6phZ<#cA=Lg0*OUpAjn#X7!eU(;ho9 z@Y)_es;tIBpx%s?+fPAS6KiD|i>sA{WcRR;%9>UXoFq&~II|8I$_o{A!);?x8~fG{ z@0A`5HR5GP3->CHPmB(dVL8wX9di;zm*J#>V?_9gXyFbPqa9pU>qJO2L^QP44^Oj3 z!qp09VjB@(OQkuZ6N|1;OigQ2Zd)|`8kn{VS46{`%{ntWG8%d%s*v+0ri8B%kJ z%xqXe7{UZ0uuc4-5G-K!(B?ejNicDWT316}1lCz`WAqBl%+B^hTdP=1iYn*oy1k-ebQFQrMUg zv;3})j!i5YtWc1zx)l=0vOKH{XiyfL_JGtxLmNZ};ay05E}X(G(ZXGDLWt-p1xOTF zQ0tZ_FcyHZ5=RNKL{*ru@KqTcL>^!`BBBWPkZiUlvx+#|L>)2BA1Ek|8C|A zoGtekeZl;CXdSOsG(&6w@hp#hC-Ub~MTiPLgEOWF{m0VaaRPUF;)cyOnEaQu}q+;^u&BXS-je%hR$_ z5Xw^d_>x%d>||hL89jK^_IP=(Yv*&h*Riw{%`V{jtytOpMI9m6?yF6S9qw22NF~!5 zsd#z|yGYCY5B9Yw)qMJ?9g+TiKC{1V4Ey5j+k)dp_()f~;Xsnv&S|o0x+k?yuh+PK z@!N_b-{bUxe(`bll^qZ9p?KL=&KhZbAI{coMeN?3dR=kZ+c!j>d5QKN_sjQ@_n3{y z+WqJK`QOZ!_1zy+2H8+RX z8|+s!+Y8gq7vbwscHeTE0{gkkc6G$utQ+Ib2Rd$aovS-y12%C8QAudGIVq&9ljCYW zNlUuZcfdKlV{VReZ;>{R6#lIr<=HI2@*e$?$1?Qf`&yN$Bj}fI+^o?w{q|^@e!KNN zDvyr5=zQSx6cwCqJ!tBh{mup}t>-bMAph1aC5b8h+0}XK=J?qA{KJ>}Pgfp|;zW)P zUm6y9M%!eohVjQg7|7z&f2QCE6zBvMeUHZG>kAt~=3t;Jxg{?IdvMtkzuk0ajvg9w zw>NWRXJ>$V_AW0SMFZaEnqC?4UXdm@nh_t9sozY_O44t3d`ymhb2u4bg@;$!;Wsf)e_@7mrS;3Jm!YPQR{Pe1}Jjm|~-9FR{=-URCh6ZzT9McD}uJ`p@| zjgU+V(e8*o!&|;~xb+hhN3=h*YLs3ZP*WPQsv96eKf4H30@Bg|y%#r#I(AkHKdn1K z^puaJ_WN?akO8653BAqJjMmrvc?eFa3Y~6U*Q37K-^w=&@!PUX5|=*y?X2`;TKH6u zT{T&e<&mbL4OM^mg_~JKxHLWvoDH2Y_&2xWTV%?iYl+{MGxUewo%Tht0Q~oNvN9se zzj5g0s~-9z&$BV3bKErs`nLY$qsI40+<4yj$<<{$df8<=dpYsG<%!Xu(ea#_l#Gq% zl*cp6!vFri&xpnHaIaS5{)e0 zW-26iX4}cv@~FTX70ckY(o4x&EI|Uci5old!RXm_e(*L2G=<#EndHVQj8xpsBuJ3) zjeM}Xdg=vcp7muztyg%D=bxXX{kysA66{+Jw(xSWL$(wDTqXxCa3~N?#Jc!L?FjOD z+u-+VKdrSQvdY~YS$vWaFp$jQ?)J!H{$+-e?Rldji#yF|s?8&tgDIS_xxSq1Y_3tb zEG9LgYtKtIUSP8tOwfa^W7)~(K3tleTheTUM`vOvkN|4&=45*Tn7TZ&c*OAJ?gGNz zoQhFr(3HtJ9ozJbw!snZ@*UaXM(q?ikCkWbrm$*tM?d;)&Q3Pb3G30sMtQv1svSH! zNAS0qJ_Zg*_0jIW!l07-n2NraGpK!$#RCTz8Bx~tpt9IMcynbnZ z1 z8QQ?uPT>H#ZRTwlW^m4Q^C}w>B8%J4c$r1~9BiW`FN3RoT^NEA8^^|nOgDQ*yn@m3 zzW!wceC2_SldxJfR+p)hT+M(EgBzDgW3Yk$yM1Dsv!P&e`@*7yyCF;7>A619eRNgY7@AN%htv?^V$1% zE);@O`Pa287R&nP~tUI12*Ropvnl5m0OW=erD@65wLl>c(Mo1WnPDp;va6 z6N7+U*EoYeJ%V?($T@cb(vUrs2ajOpYekFlWTAa3ZPR1?(G-OS!6QWb63S3J)EUq_RB1lM@aY^Pw@$_%zuP8i!Jchm zpxXhY*-#a%ciiW~fipy1?s3fy@C^}}Sie_Mh?quUznJ;u_#OADDOEGVk2voN5cM*0y;95RwN!cyYDfAEe*Au_5^iAqbsYxIj4r93 zNdPw~PSMty064!w7ypQJ4Br^0>7vRS!!uoSS#)riPLRp;0OdlGTz1Rk{L1*~heVxd zaQs;eAnXO{65k#{=Sa0;ZxpcZD|J=}X-X4|Hhoo`o!p(r!}#N+YM&QR}I0&d};K9&{GJ<585m1`vjT*>DO!&<%o0 z;kgS^S4|*cMIRv<^M(Oo3Y?5IOP7l9+QcxjK`;pkS(%}Ef89o5>nj@{VHYDou_q9i zd|-n?p$lj59Z#B3t?1)E1)EZ~%^k}=ZMvD(Qg$!1NofJ8RND4DSHFG}vhNL8=^ zn(dlj|6$JMq(w>Y%#*3ghnuQ~o6Oc4He0ilPybvdlXS1&<=M$)m`Q{$*G87R?@9Cb z{O=*LN5_=?L-r`c_`hk8KKeg0NK5}&gY=>Q{}`nA`v&RkY43nRdY{qo$k3*L&LF)f zFavopWk&v0gY@qIMT7J%c-uGG;jI5NgY@=y%pgU_zGDU{<^U4;9WqEu{tpb&*gJ2K zGG%|&ARUFS`d>3hN4#?e>9BX)AjLEIpBkitWB{bJ|37Mw;u6W~G*0%rV378Irw!7g zziW{8gYf?M4AQ>ufI(XDKQl=4ng4&#Ae9;Xzi*J{yh8?Q_WuQgH1q#CgY>=sPuin? zK1h>z)Z~xdM3{er$%@k>;}>yd?^6f%k}S7m_#35{n5?+Fz2-KP2hmmjxRT-fg7S9n z#h_fNE}X=}eadRHs;<&?q?mIMhsGYm^yNglafuNh8$X%Icqiu%DRqX)&@zc_03?l2 z=8}JZTkSvk$>Pa;;6etX_E>1Y_qbp9G4C5+?jVKB>tu{o+PG>~K1?>EcJIDRO;VhE zny}U`&8K7U(&IWKqpqzNd0nbLL8TKdbpz#vS?e{7 zPtSMpPv9`OT{tWrzPAg9@jX5c+W@LK4Tld0fHw=6h@WI2z?VmDqnm6WN^ zbHAVze##zbj$7aa2v$n7y_(%hMyK>~rT=CgLqH~PE_p<8VPE$`|0&FsemYgSRcmyt z=3IWBl3kTv=S`;t**o3=sB1XhxY-M7F^q}p#ea`zi1wMWv<$YA}T?#lwpx8|^;z;?= z4W18_xI0NT?4!n{=kb>Pki2dzt()VLUZAA}8s{P**#%H)39ns$C0^*;~HFNCE z4lCcHpQ31%dEV|VL}a9r?Y;hRR)(J-FjCw>dcfG^POtiNskDHl@A1Y=>EJva$yCzO z{eae>)=xuipeL2#Y#wcRck+@li;ba5PwtLXd=Rn#JFMd>b5{3KJ?o;P+ZOP|tb1Nm zCn<6A2z}Lf7vvbpGTUGFO$=?nx;M4jy+aqOJW~EBt9nXe_($^=8MMq>>w~9v@D!nM zAg4|5<)B=t`n(74O&e29w%=ZV(;iFw?cRgFOr3ElMY?~wRpdZkyY|Ec&C{4Y+n1p&{sh*%YZkd!~$RnI=c}BcH0zC4c=SUE?d3MamBt+B;(8i}+dwg9P$s zbG^~Xnw93dIi~v6T&LvDBCa{O%X|B-ZmBYlGVl6bDoCaEdR9gKgCalgt@6rymj*@s zjLgt^eBOB!`Ld|=(@1P{I;$}NNVnxpWTtgyUEb16>IyHHV3SBVkZN5kW*2W@iH8)r_OV=Q0;nO&NY z05u89$ONs?iO;?kNW=bOs{2Io2s%;;0zwJ}`@MY~-QzAdXST4Js~^WLDA})n^uf2U zkN~DLwbReEbHCa_hZ@1(?lnzFYvif7m zSDUxlqj}W(!rq{~^*IVt`y~wj_{;d(ZX{m0%h!3Ow;&_Exp#E2iQ{eGt{W-2QWP=S zhl31b-r~26cD~NYyLK<@PP#(mv_m7zb~dTm0(n-eTWVpH?nou<3+4kLU-zzgLk*E+ zxK1ggk$Zx#^)|2+*o(RskdFk}{YmO)z&=_^w*R+diTC}B9m%lvwOyLpmr_9rhzA|dx8m_$5tzU33(e82ZA|9%~5pdY}JJ%7`v2s$*grL7m|#S3CzSFzVc z=aZ*tAAdg&Z#=6v#JkFehslq4JQa(N{0_xl62Ysvo+Db0kNlph(&=x4Vw24^KJq_; z;{PzkrH@f_PEa)6FM5EY9|uJb_(h+m=;uMv9e&Y7ihdOojiX4LC(Kb3y(bC&+Dhe= zjV1C&0d@Ngk&H>PL}p7ZiSOIYR*$yVE6<}s+bfmIRM)n#QvBZ5TzS5Jn#lic@_iol z4+wdi#DnX=KgpbX<{b1YF7N1sfBW(lgRQr!Q)vgMAeuf1QkAv4#XRIZ3MwyEchVu- zxZ#*QcWdlR)wfQZI5BzR%2?9tH=revIcmUWCvjh|(tbLV;e*QA-8ZT{^Xv&~_tx>A zuxzr4PA)C#TS6AYeyoI;T%jD4*A+BY`&s4CobMTd^O z=+_J20kyAPcB)tD`^Hb+7n@8=yGsVNeKIj*AbIP(FN^}Y4Virn)Grit1V<5xv)MnB z;~!{pm4scIrNjQ8cACxc%6Wl)a@tmV%V?;}K26d0ZQ33di$9(1{l=4co0jJ#;SHT_ zP^A-Z@V6fNGUi0iZE_N(^{;x-FT7KQ$8MG9(mtuG(k~oKVe2jmr_4&HUXy>)_y*=| zY}np#(^*GkL>BjM^iMQq7DW#ki3!K1p9npY4?S?=X;G-StS;o2eSQCkex;EBT|6UM-|$zb4dW1+PbNx-(ssKu z;Bd)+L*Big@H*YTMQueTiP9eJV?wlhzcN(zm<84tvN4TjzlSE3y%tH{O&-@n9tCOS z(FKs2ak~Nf!TSugWQH<}+Wt_fHrrnCz6%Vqd`49EM~^G+VU%CAyjs<6+J zIuT!LT%OV=I(Di<_4D>yOqyZ7Od zD?=nh`%50s{`G-*AG<}CxbYl|izN@3>0@3$;3nY=fPW=*eCG%n)eKc!bAlH@Fhls1 zz9lv<+yJZTj1zgbI!D|`T=#CcQ32%L_IYh_ob$Q0mlue)e-Yk$;%3?RyQ`vp*$T>} z*zTdY?YG`5BYHUK><5(6P)goFpP|Gi-psLaD7Ch$kk|gPoWFdpCW~DE!{80?p&O)7 zN(YtIvKe@{_az<Q}xlsQL6WANtk zS}-#=dpBGz>hrOFt7n4-AMeKBu)zvI=m zAEhb$Stj4=XEir^_J8UZ>l|v0ln;it5pvxLW~rhRGunRL zCcXHbOL)H2=zje4AD}`~(Tbn*K#nN(?kEzmqWcVAlli^hG1-@3oiZtNiGDED7Gd5; z+!`tW|7d#?@TiLH?>~V65s4j?XdD-!28D40H4+pgJ%DsH2#PEYE-0cnZYbS?vIWyo z+qM<=aYjdGbkzB|FEbNb4Jb>*eHoW=!<}kc2rew5(*Mu5>fY{7i2nZ1^S&?7L;BuZ z%QgT2+9#I;@e_+qw9!>rPRK=ikg*!Ge=nw{E{ zH|fc``0NT@3PqF*7ad0iq)%~v3RhQGwUZ&a8za=tnYfPU#iMnzQIASKACD0#kV|%D zq?-9JX=bvFQ>;Ut>*wE$+VuX`-t}_cs+=q4zT>LDpEs8`yxPA={?aK>us;+eXuZ-@ zjm}X~=c)^^qV7X2HTGhoKu=3pTG5wJlBT?$2#JEkV2`VSfJ_cEjJ9`_lBnuM?PhY{ zJj%^mw1rwhthc zd3DEv0&$j9Iyo92L1Jr=a|?%^Kz#hH@ZGGlpTEo)+Il6Uysz+H~E^rNzkPgnIR2Wm#U|?UBCMLp1RO7fSq?&z#R?b z9q<915IHbi<;mw()3pp}PVDy7jI2V9TQ$gv>3yu2ZZ*#%7!cF1sy!8EIfq_*C4To^ z;9_0h3|9|WC%Awp2=wbw8R!`*Ppz|)HA^LsXKIuBfG>VFUSIZJMZ?q*Uh>41x8H!N z(MA;MfOVJ%c2@~~9jQzcG!J!;W-fB96@St%$ZAvS5Z_r-C)D{4LVU%Xw;B4Lxb-xE z#znrovesiL&+y=y7n%BKI0fYc8$2XH4$b)k0U$xKg3H`;3hst#H)C2tsUQMISTv9W z`2zhKW^0&6RAa;JavuNS9@RZ(@aT__F_XO!Vs@+Zl~5o$gdE<;u*1NPjIkB|K+(vr z#kW}@9m925>tJ|qOcYR`Sg^KF)^-R)KZNR79ClSiHpfqcezM|rIp57tT~_MJHkq(y z?~~+EgTv({yo6K@3(Z&QF(rq|wI}DATn>kBQI7CjLH%xkQe@jIrOc&F(Y1;d zwnoxSZ})YShS2BVb4Qt5tr1>lGj-3tQpGZJ5?{^<1uptPf7qgP0dZVtU2FU7z-4_A zY`PlwO_kk7WimBRhik1w+?*uNW3?P8f<^S7~IAuQEexWpA>#i3Ntwp&@MuMBf)N_3(y$0E-uF z5>BI01@djWl?Ug_E`giv)+p`QvQ9KGb4eQlny@*o)k3esakeC^kpVS0UZK;#LN1SxoIfRCv_IMsarm4-9$y zEw2f2D3TtFyumq2<03WUstxbRO|-_m7gB9eOO>p#9ccVi6)adT3Ub0p8^)@EH%1lc zM(Wx@KZKt&_fb>&AZF5M15WLlf|6njCp(btC=I=0dE<`dd$Gn zuU~cjS?_FM9VrE2&x;`jY`e#VbdJ+-Jcp>Z9bZ{K{VRCf*y4 zT_}8YJ6H%IS|fJG&|Yu;^oE>+foqOZiaweLUS~QqA8auwemq4tMNRf@iuxq@+)tfH z6n-&k3hO*;%%dYD+Fa{&-=Qmh9>tx_nZGJxxCqT+VDC>;yF(4t^urWe4qHI(_P%wo zzT&_Gvi1%9X0G9WV2B-=ZO0P}_M3E56KoHd)#eI2sy3TT`Ca@+uy(WfP@-%oxSKy8 zi!nsi{mmtBY1pZO=h`R7M0o>HH<>d4jn&Ot+6+LN76QX*_;R@kp3d{+N#E2Ugrtv` zP)f;Fo*OUTP;^~sPCrcAa^Ai|12yJi3l_hZ>&Vn$wz?Y04HQpm4=S^IMHdH`^9A^> z>8S$2Sty8`Y?-LoA3SY7GD&e++sWyrt6hH{I1#-h6WM$_Or7TzY@ebAYscBODowVE zpgF3z#Bpe>IyI3jaCtKB>iK+vCYu>Ehgwn*(#*F9F|gfyF+Q?9G-yM(TgymidB(YyCaHYr}gsgNXd(z4o&&dztCu) zEw!ez2@RLMJVKU0p%y5-V8nWS?5sVh;H1u)2-O-^jpmth58AxN|PE(36D>76oKi@ zf%0!~BEm{26S(0sxQr+ib#&@Go-JQ@v_1iM;Tgmm6Cc>PY2MVj_~_!q31Im1fTgvu z7mz6F-Lvu~lo-Q$Nef$`UkD$~X4TN3-jVe1K}*AX^;?-3pTR%+T(O6?ncUB0*atm4 zQNyk^Cg=^zY4UrM>^g&9G8<-?!hlpj1%Yu(r_0>czfb)j1K$q+fP&D8HN?kAj}B zJ(0br&KS4PXb>vKCEg8om3ok8E)*Y)U9>7ZCqALH@y+lkyI%W8n=k`qH4NRiW^u7f z?Gjv!G$=45tC%>$hL?p7gbSYA(z%`6cPc2APJ-oX3b@gIUYSNhXv&79Dlu1pe<*%L zB`hjQkX~r}6)A~!oL@}42E3W>k?SwcNqaqX^bzld{~Xeo8uUiwYv&-28}4S$h~ED% z+ba~!gd_eB+I#H*|F_y(PfcpCWMa4YZmH=6##mb9@r%+2yqOwDlBH`qejH*Srpz+V`e zGP_r@MjsPZS5dnaxC3pa6!RqRaiJ-69u7kFN>coltHG0}!KTBg#HqDbY?(X8YGUh0WW@*HjpBZ285mfo`*n@>VExVfyCLYOH_1TyhMxn!Aqnn;VD*py7AH zz{OqFW`0kwjjo;2l~(udu+`=5C)AP`MN6bIlau)q3e>d#cpiX*SiZeNiNSKf6_~5C z1d$MXhEG8x%770VH_hKUeV^ox-dPtf9Q5(L+iK(Ei|eMOS&REfr9<(-?~5fqsbvwA zo4i{xZ`a1UIb$GkVP*sq?SYA5EYhy4?YAQI+?Sn?OYFIBgH=`NLu<*#2lusu&{|6w z?gv|kLP74Q=9XUa>&21_z}UFF*md3M$6 zQ68Iapp-4(X!#3<)njBgf1kU_$tREh#xY$<--$j`d$IR3sm_+*-n+duE-TMO`jI+G z=6jK3Y`hyCzjXdC@-Pv6KCn%wG-Y7Jw!-v4=u)R|yYGXT^mOe<);?&GQge+Q zS(+zXHEu-z*vyd4qW0)LKA{Lv{$}9rrOP~ff5^Drfr3=QAjaJU&o{(f(6#P-9~SsL zd(52vhyXD}t0Z6THP7K4Z9qed>9k5yH@O1MKt{Eq(-Kw7j)#}{5?LmzSqq+l=pA5- zni!E7g{=N>QWgmAMdg}L^}(j$e1I%0Se2Yd@nm1#n=iA4)-5@RUo&vFb?+s|^8%1z z0!QE@tN;}$;y9$xd!wawrmRztBrlc`A3nbf=wq-la0FyHr3clOV%If z-IB<3%|dsepSc22+mK_SU{kHj->m!>^4vE6b>z3#FJ|TVkuLxB9oK)V@(<40(dw^I z>;>tf(3E#V@miQ>TV1?{VNh*GBT!Hw)@L2=V(RyFnj>Fls=Obc{)%^f;Y9gln5wt+ z$qcUy*@|4ea9yIyOI_4=+gRaU+yk7s1pK@E0=F;Svmi<*-eSMlDE-CHZq3A=r)RHM zT;2f0-&dyWos91lrcL9Jtlm*-QSW|{y1;giduIxLifWi>ztt3&2M@!C z?wbU@Gkp^!LkWC63ctW>qeV+zYxGo}-i>i7zI^QPocn#bO7QK1ll09-seeekF>(oC zKM7gSS>|<2?dLGcn9bKEDjSO^nBF&!-&@QB=Mtl0+f_j1OH0wHK|h6W(1*Tqa&7Wz zbM7|~s!>vZ4*03gyoJtqMX%L#W_a1An&QI9vqGU<9Y{!>`6);rl6JrI(M4{sRMjNF zqt6F*iL)zf(!cTeU-U1}!w11`ir-3Q2E7-!zFzDsv|_7OOO5GGf`$2C4;&GE=2{Qp z3J>DL4&ozT|BIE(zX)zltw3v=JsA^u=BS%b!5W%Ud9KM9B|7(k(-*V4M>h>w)~Q=T zmenH%2U`loL3pd^ykfI<*G}||owo1nc*{)KmvVNBv`|0HBN4T({q4rzsMyPP)v2$A zo#zpS58N>Bi$FUQ1ki-$jO11VLRvJA{sam^;&X&a;0B$i#YKnE7H23fC0)nv;Neh9 zz2Q-9=Xigy&>fR(q*>#Q6cxGeART2oM5M+7h2Q1jW_{-rKa?r5IM{R?gUsFMemUi= z@IxTKHv&=H6cJChnlXf12O9=g76zhUl1IxnLll9%)N%*|wwDbm3pCmQhlb^Sedk5q z`EshK=|7&ZINc7pn(0<@oX88u;5wBeE)PVH;gel_xD9YB`Rdui0IIOAs7q_lS!f=d zs2wdf=5sb@F5}1)%YAvOi?-7+6`mt}kR$m(Ab|sE7hKfI7Vc&Tw2$h|&R0};OK+fq zPh&5VQeF5nU};KAFO1{b*!t8TcnmgGcSyk7heN=bVb;2qrevg>*}J!4Q1Q#Sv5rBR zs9WE8jzL*k5QAniUGo_9WRF2Ddm@j1AgaJys@=yis3>rAg+)5N6C6qiSJtk8id$5G zuh#$Jk5m6WZ}9l`gp1*Vk=vljAmXy$EsHe;0>`_H#KS8!j-Ic7zaaW%c+TRUE@{Sg zNqdviDj5p?p49B<3p8rA(X~Qrhs8($iT3qo3XAYwD<}D_Y&An%*M$4KRw`tdmJZk0 zv4hys$kt)@%~lXu;#Lip?m?AayS+mtNFmlL35PT;sQNX_z$vxtbx}@QfgPd zB!+ZpOD9Ds<~I_Q`+v38o4W?0ib`r3Q6TYQwtTb>{ydXsUqAKWne|6ehvkU(k_AFE zQPT5wFzZ?ZKm0|4`z&Z_AaXL>TVr|vLq6*YEnjAKacjQu$I$4W_S59^ZQezGUi%YZxu1V+bNn4$}2}~jJfYiSqAHA<*`3^EinJyKdZpc(88N& zm9+;V7vu96nX~4A?A&0}G}@G$0m995`Qr<)-GVe}^K`d7Jk)||HRnPQIX>W zgoTW=7uv5ddu-Oiw6n}_r|CW*7U@w$g&M>yzrvMf$31@3vQVS^)dSv?QLx5r{*Asx zW*{uvv((!|q2ujP$PeeL0jA{BvYz4{6<55#KV1#g!KSaNH+czvny=uG-;HBbP5+B+ zH)?*}xM^!9rOi5ZiK>SRKpI|yNikGhoprEbUvucr!YlleIp>=k0#8t___N$B{EgVm zt*B_8jZmTm13oYlSo*TwuRx>1mL&&SxvGm1HTB`%FkW0Sxh>{(J+qMb0>2RNIs3ZV z><%yop!exA#1u|5Za1V!qUr?wXl$78aY%&dWBr2$YSZHzY13}BN$?oXf7N?8|D6@I zrCL0iVU>*{8j_dtrwx^Udkj?Sei1VYsTv1)58KG48h~Nfz>wMzX1z%5kebydk93vA z3oHG7VMgmd+g%i~mgtqPpc(2GnFhHgoT+6#+nB2!Vw8O2_vFTMx)fi_%f znT`4}SMF>?RJGwz+o*cbxARjsU-1S@{(ABYWJq@5PaDbE#3Gee1~yxlc%mvc#0GlR zpIuqJ&GY~Ytk^$TKflYNwTUyj1fu^Hm)odpH*tRMlcM^%qT<3(Y|o-}i9b(kCKr)Y z>@~A7EB<(A!2m~p(Wc=P2=7!IKd7jFZo#2}#^sic-(%*XMQXe*pA;!k3$(ijY;@2y zyOUt%T(~KdypR>4CGxky0#^;DkFM&MbGtpv7{)TI?o+U#pkPQr4g40pkD`h_8L)J* z4H-;4Q@NDlfqv1-$N2p&^q{%<3>Rhj!NuvUxJG3O#Ik4+J=ba~UR09oJ!>BYqCZlt z75fj_YD{Z`>PRIsteG|MMa5q37BjA%6zkJZRQ(>2Om!=xm5)OC0<#0{6Fc?D+NT;H z2q$$+R!j#PFBUcnmcPK)tf=eD(i?m6iO%kpWKCWam_t>JShLM_MWfao zNiPk$US68o3}-q!q3IM*K=-XbiuwEn4W6uws_T} z6qhV`IrBqCbWtlr%?cNorPCLW=wfD+)1iFS>{^y_8{ld{9PYhnq^cIY`T~fr!upIf`Si`(Of5B ztzf0vE0QIyjvGmmOxadROyfP)1(c(4uqo>BKVKCbPX$4wN=;J6OKdKEzK}4 zMVhEJ+;gn)?$rR@pI$M0?bOD)cI(@A*yCsmcUrbE-l<{Bp)>b!r~7t3t~Ayu6fcb9 ze+uubC6xXRql*h=PlV#f6^9avKK&i;3Y#PHal^UA+iYdI^$Iy^Sd$e&v}M6AK|_m0 z)hyc|#0N8bnrwf}%wno_{<*OYLpxzRgb&1lXggp>Rz;w{wlMEZd~qog|2M6`GOx@@ zXEeDiAgBG6eWCg5ZUSs}vI3cH!>XUtWtJ`U(96zWtUaPV3L9-~C9|2Wd&(PD7_Nd# z;J5HT!KTlJzPhscTK@Pt_rrm7$1~?{Vpe9u<}Ci)AEH8EHyqt5%x1|if=%zL@Jzoj zZNHatuI=;N6s{+a1c|u@48#rf`!EmTEbwMG%_)0>f`kz>);ArM&ZMvL={3&M>*w$= z$W&^!BAOcJ7If09qJr7u5lYPU**DOWZ?RUNdCS#?Yxe!YZGJk9^_c`!4E*s2TZMcZ zbF)nP^^xQ~mAvWZ-2BhkbG5OIAM#X((MO~cys2Xa@GqTQIkAm;dXFUbla0i0t_c?~Z?+YStqKooNZvtl?ldbDz(GV;#`b<>=SGU3XJp~U$W#E-4gb8XC6ODl0* zGLNX%Iwt#P_4%_|jnd66X3t%FEytp|#>@fHW4 zVZfsZHiZzke55}lZpl1LPk7nESWmbj9U6KGdHO!t-9g@b1k75k(%`C2(m(UnK5{O* zK&d2T3}H^5T}OXc!}3h|>k6qnrdez?$VLn`K|Rv zQa4+L7Q`(2SC{PsD`2PQNTb#?>YV$!*v2}Ls}43$Y4l5olpN$pdhg*H#;vAjZ}lD9 zkA}GK*YVx_w70e&Z8l%Lwhq@09^eB>6gp!u6YS*#J0nl@;R)+vl#?{@m@vi!{q9;mn*LH%?I)RKM8ovlME+IwYBoI9x__e+s zVWfI`WLFK^oE~YsOuK9%J%St#&mg?M59@VEG8@n~V?TYU(jQg&qBiMuiF+#rSQElonh;Lc zjC7hu*b|_Aa525ei7}s;F?U#N;(CiWV+JA9A|9$S`*+sL%9iedt8{ot)&ijyYh;GZ zyiNtfW4{Z`8?NCQ7N{=epj4OeL`|aPu&+c*cAyi@9<5vi%)qXUZQ1aWiP*CidgER| z$h9xnFtUhv3pmcnx70nBmf-udW7h-E6uXk1ijlI=#4qsP(FTzdEqe!>E=0yAF9J%l z6f-)xv_It9a7H$3CcJ+rwv~h#BrFj@uu&3Krzl&Db!`j5$$#)k?Exq!-(aBf)DyY> z6&=mrnCm@BH^>hoad7>ou$PC*RH1Ty9x9E80%IzuzaO((YSoB-PI?J|xh1I#1jovcup@1JRoS(eNYl$yz>! z5~uADXx?I%u?hPi!!Z!ilYU492YGoAd`;F=tX=f!@bs|!TDalAXBZ0dbK(SzyL-n%pTX&Rs&m+cFC{gKa>2c1E9(Pvj4V-F9MbqXJUfDg_Ys^_(wHE{ z%|bLjJWlOpTT=4nL8ve09IumNo;`I_#>^^Ysv4i5p&u)?(-O6l_{-d%0vh zU#$AlI`cdqTT=;QsRFj4!IELe&YCyEtli`O*j26ty$K~iQB;D?z*u>Hn>rG~+L1e3= zmKK{UCP|#|lwOW}5IoGb)OhOgljUjp z;Uh`g&8KANplWaGT=IHy%F=5>U1G=`KX&!wp%s*4_v&wx^BPJx&voML%Kn!7?d}f7 zex2;DHglh9G7nfP^Sr{G#DH!-3REOHzWjNOV~*i4&8VVxHum+A%;RbIA}^x)1x8>OCJ zvXHkx^j48(tcoV8zCvnRgWnXwIlfn#Ad-S}Y6BOw=+7%`HhYdBIPJJvCZ$~*=*iY& zc$kxPjiy^w)^ z&bgV#NU)X6k!a;7EI5CdJTSI4(0g(#pIA zJMnvbsUZBm8N;l0OWqMM!0*(*8U? zJGOj(g~~V>yF1ciqbv>MU?++i8Ibuzc2d(F**Y6|^80Tj6`PT{I)hDrQNGLg)105L zxAOHSU;3TA*7^H6y4f)GcnzJ>LT~1}(~JM|)9JYm((%Nr334;hzdu{NG5a%PLh`J9 z4l0bJzaV@iQxEKkil9}A9V$#=Wa9*CvpqMbc`8^ z)|9;dTfaYFI(fVP%*XeBWt6D3_%^HYlFKaxScf10zU}qn9)e}@l|k;~dj|D5e18wX zw)!z2-oQ5SPRPOQ{7dk(HPXS8E7*tE+Rul#cI>agYaw5*eIJ)*+lMvMar(oAe zj;<|Njst^D69nvB;56%x5A1J!8GL^uQp-AawO0zIM7*XBD+6fnBn{;(vlU_RjoL@UJuSro-WmjnTy6fNk{CAVzVgDxzIqd)F zjW^-n=~w70|95!*V3VDHO#?`?{`kZlAxuVCOeW#4)fzjeOhv1-lsc>!(=$hmJb0ad z9bRX_yGboMNAS+egZK9SzC6whprm1r5MvzrRi!5j-QHw>RIA5DBlU;LiVslHEqSbwBCt0t}HX{K>< z8H5H6>(7z{U;c{;rYZa5TV%;c4h|9Z5+92POh>xRF3yZWX|8~_GAkl?10eEP4jz$5 zD9e!C@>c$M<9Yj2DXdLq4Ts7YTO)w@75L#3*1-n7-05wK?Fvy1Dz50p3`38HuF2l&m>(-hQXEI z888Y!NmQLjDHHR6?uq-XsM2Xp-^!NywDL6Aq{V71ts^Poz&B>W#|U89&w}N=u~+g0 zf_I*XcV1-d?PPbJzdbojt%@@!)ikHS=}P_B z>TdIKqU?b)yA{}Vu=Ty|0zD3MKdA=1!Srnsf=xt|6eKSfj6}&!Bs5>cv+W^MR7bCX z`E^@1XIN^hV#RAz>>DC@mpH|`l7R0m`_PApvTgiO=l2s@NxSn657p?sAY$t1wTjTLbY~ z9n%1TV6r9^pVcpmha`^Af4zlAZ}3RJzFq$(2Ri6KR^UvDcSQ{4#-FwS+t~xw2FRNa z^Iq!9DLX#nBm0J8Ob|v^Ec4zg+NHPKFKrE6+i;nRb~2r)x&U;{b=|Vhm%ioX2EJ@Wzwk;I@)6)AFgi}=RP}m9Bi7BrPu5{dbRcjcxx^6a_5%f zBknL?i}JOQk10B9UFK_?ulf5Q)PCvr%&+L9cIn&MFPdL4tw;>%lkRGFq?Ou89z{)> zgJ4g!_hQQy%gm|7zIjsl)a3P!K>LBCo5CMM=X#O;8*e0;@SC!F|cvi@~NFvUHkHJwE^4y*G5aJETF@ni(6)uPu+; z{PAGht0|RC8LlQ!spNyMHRGsB6RFQSBa3qrsW$w0ByonR-5G1%{B3Be*QeT};Nl51 zr!ix@S;B>4T?!8f6!`w7b^CjMCtrW6|LlI-kk(MyD$Kkz_FeK&HEj%k7_?<-+80Gm zGYqw4^{8g4mS^HJa&Wa9e>;L$3(6P?Z7UQrn?cTi&RSsTq zF0dig*Lxyg4(zm@d2n-gq$ z(xO&!BB&*UJj2t?a$GpAuzm!zc0A_70+t1v8bM|oZQ^6q#_;|g{|1_8>wM!vn@i`gyIfOkuE?j^C6bffht~tmoNB%%7~5!` zNLiO*=ATpAH#}>H4tZlg=y^*K zREQ7xC(kl}hvQsyt_<@(tC@MwqTi5wpR&f3wG9zTnL~=?@qRUAFVcnULKT#t6z;^ON(!zX~vesocj&p$dr4UX_-K}M~oG$ane{h@v zx3mb&o=UFF{(4#)U)n@wsTg94;3$P&cv=aA(1RRx{mr!&PNQw=% zcYG9V`bghdFxWlIvFn=8=9}Z#!NX8lPvzPiZ2F3{q$Y5=Toj*7aT6djORl!(?Rw?~ z`ns4E)6`k8p2@6fW39BMpW4p>AiqvS_BrfBvwwk*M>3kloEQi@F`812n>xf=IIeJ}Oo<}c@TSu=Rzk^;)`Sj|7TyXTt z=7L`RDQ;E=+tF*VzQ!g)uX9AN*S_kIUY0+{t`UFAJccp_6i`Z?2R;Cc z@<}Q+pFDZ?#o_-8eoy`~d~BDp)oa|m!fy}zCT`?gn-=-wQ5uujcu z+%AcNUZ(dA4cYV&D*s9Lz3QJzuejVxXJ93U{7s)e+98#% zVSM|FZFS#}Wj;ayuGs?NQp1W;^ntV2+}KPE=}mfS>yA{B9b&e>i8Qh0hr04jDt~ha z9g|jeL_t-_*d~&ec-F3uu?a7-X7oiN;vM9@x9xXFITqDJ19R? z3Eexux8&{bL2l7xpZ;Yl^j>qR|32iOdLMJ8|6cWXy)T@Z-@cplX;g7X{gJ4uQsU$` z`S;bQy*kYA(|XuDFUZv&(R*pG z{;7H&)29BD^r_?*>fg9t_2ugSQtyi{^4l}yZM{D>&wsC4q4y0lymyQL6Z-TpQY=qn zI(g~2oACzE&kv6nu4BB+k82eprA5q!ExSf8%Z6ymS(hPZ2#X@ncpu5ugB+ho2=MH3 zvw~7XUgK-z7=3T3E{dGyLSMhaH5?y32mxfH|@Vtghm+(ypO8C%91 zX6r_~D}^u~`I#pxR?wue+2wXOS4vpNhRItNc`VqZ(+HCbgqAjs`^{WX0$S!sw-_RO z!`5*>b$9@SO$iljXkRd-f{$hkS_}eLk3gXXoBpU0LaPm^T~%VPS0Za)NgoDJMu?tG z)TLc!H<#ZcC$F7A4G=pxbMl_s{C%3?JuunKl%vUowTpQv&!}&o1e=ZoFdcXY;F9vt zYd);l0^4NsQx)@pC2i$ba6It8U?OfeE{`=^Zq`0AyM=zTIl76UIfuj9agQhYFIf zt36=}{Quhnr=FP6)Pgbyo^|(HIU&u9|5l*kW^)#MLMAbJr1iSf%=4o=dUBKyC3?~% zN7DUikw?-)xOBj$Y2ex{O*xya)dZ-r4NVnSb0#=|Pc8T)uXT7f|CwKh+(Sn|&%7x_ z4n73v?%V$GRibPUY5=R{yTAu;f3x13E<`?HNtNo7^3^wsb$s4@cSkbTQ9saE^PCOK zE>!YPv!-rCBUa-`>k9vg=E?fXFW9x4;X8}^vlf9e?#>tX4=JRQ0Bd1wr zx3lnHLgqLjv&0@yvL0Uw^LY{Fy_eYvm?#^i#Ir!;G`6E@%Y8fk8fT9ibVn>_oxOXg z5wZ2zt^Sc7oSJMqQ+B($qvpGf{+ueb*e+8fhHUKKwp93{<_yA9jB(~C8<{_Z_i}Lb z<%TsIiSP3&b$pujh+R%aNqKM;M|qP^cJtw3&^xv^=Q5Z>K64ez&*_IHAK0-vV3oFj zICq1f{CCyHOzJX5zCT~FP26bxd<5n7330dNMuZVgUC=vZyNDRK-kB)tElAI_(o5DG z6n-bo{Z*Eqnx+FUspa}Iud=KxhW3JSJbCM%-@pmb z+}Rf%46Px8xkTO`H`3XOucLkRbrMruIk0YBp)R?LmE9~wt-MT>Ee{ZP41*O~)Frnf z5C0Mybrx2$2FT5@KFiM~S5gBgcO_9E%fUK*qw6o*es0xqTx{{h7iaMec8Ko>IeZgU z>)Goov~NQQ<)Muq0dR9Akn7fq-WKTx9OI;0@)WqEKkJ9wD4Rn<{tE~<%*Bbz&DYo- z7cl(7+`z^*OFOpQw3>Y?@F`?F!^y0L;89g9`fW1Lt;?cvpQ9gr{AM@URH8v*JS!bc zRezCiQ;vii$VXkv_%ZLD0R0kq^z&ta&yq)pB|8<${pfChmAV$C#m>L6NV8xdTnS3G z>uyyve;<-k+^-Wh zj!v{|C2-8(ud|)-U3#ShkbTiuBeEe1!~0DRDH5&erdGB%8PdOgG7O2OQx6J?QsRe=lM#9?NQ? z^viUL^FP_~&-g>YsK@_9)q|;e+*otdTEC|PQTc#HpPlyV%&#?_F5;b|8-99Jf|pa^ zBbBL7$Ypli#?rkrZjKi{ULum(W(d!POd6-FC?X2Uc;X!jy~`J$Le2J?o)tg)wM6Ji zkvnM~%uc1V1~SCB|3@o&fB=9L=D6Mvrm@$PrBOv%c( zu2o2soo_WU$H184l;0C!6i17>W)Hs?+ds{u? z7%&{LTlOK?ey^>e<5qZmQUyuWCwEaz>|+sW7+&5T`KA2}-6_}PZbC-Hb6!_)vZhh6s9Yo}gFN#d{%DT%`{ql1tFShp1zAhl_ zxQ8}Nm2&nJx3ozTq{_3hCsB1!!1Zy_!?0At^1g^6e-LmgmgZxU7jVyi3laQM`4aqD zt#1bZ7KzCQv+|ta`3(I*f4o2e^ARi1=|AT6pdCNn!0AncWD24Nwws5BxHQ(=H*2Pu z^%zo-Bm58UP?y83Vs#72ZD*8`@wBAe>Ivp&I;VA8*UMi1B~C05o{@f5GI&M+&28W- zjp(ezavH&M@t@2Y5I3(a;uFsvu(x&i0%0l#zE~4?{#P&}HrAQiD?@cdhO5>#j4`^t z`l9e3vQ(ZyQIE>&@~HeyU#qloH10$`&^wzSb2$stSz`k3b35~=(97AcIs3PMR^i2w zh4r&K6-2JhCFjyRYR^r6dmjC=U3IlY`bpwr?0r3Igs z6qq}AB?r^0k9l6mv(>+|9`mZPr0%E@O6;nhW6;ELUBYERt~MrB!WYk{!PjnD#mwg<1LWJv{@?#h9A4 zo8-4>HGks>HrU|$7pV?|1F_C7tAc-ZEl5|&528Uw>F@rj5wSYRwjlHRq3O(sL0<); z693#frdod5TQeFF+YH!GkE_LEyYB1GQji@lN{v?%d}7smRW)ZOk&(N?1H<3N;6v#Wi*_rGoI&}z`1#lct)}H(*}kocs`{G8;W2f**Z!4e_g86R z+h*kKQS~prtUy$5O^bMJvk%ww<{Lo&2fZrfW6#T<`@Q&xv)q9@+97qjODFMTB|_D! zw6^cfz2s9;=EK}#N;I4KaaR-jumFFZm+Jy8F%T@~vCHx&kpvGMoX#k`SoFg&ClOIK zf@&IO!zS3I1@vT)KmK<1OF-F8%l6!-?fEpe|Fowgf4ApL%zMU)%WB_We`t;6L}RJ(^1LUj0*Urq33| z&M)5%{sme1vmAZiKyy0!%;^|@n|RsAO?EvbFk*w1EU}ptZO3DLLWMoQ{MPLGyIO|X;Lp7M${ofxkU#Yuht_)jGL=u=T;BG*efpE_ z(#LY#TYmX_^4=x08e00AR=z>boN3^n#}2%=?&;*04~|E_SRa_Y+JC_YkRTds7H;5t zPfjW^|NhAyPthfC^(ZTm%D(!D7?(uVb@$rIMkwA(lIcvc^YJp-5E{13j!)ndXV+Z* zC|an$9oP0|f!N3L7<{^jgKhoGAEU>?Yl*6p$tm&C2a)4$BK|YE1}&Sr8=>*bQ07W3 zCNcdl=U36Kgzs4hK4|kr!?M!GO_x8*0VxrcIN*L?UQJL5 zt8Jo>bXBbTv3!_hnJqWxcJ>tIj>Ot>7564vYB8?d9Dby)_{mSttS5bE$-%6@EUQ1p zBJ!Q@o8_)!h_N+=KhkT2fxF^Pdpt`Ge4CoB@*#cj)JZ7^CD>gh(BykIn~?F9Y{mwc z(P@iU#RlX$h64e7RdL6|uIsKifJKf()jipgwXS4^3LLza^CUdoGR-Sc>k7=z7AU7c zU3^Mkdy(VQ3C`zxXhmR z*+0|Cn!&|)L7kiqFQ9(&MIS1U&j=~|0|3u*qi2T$_}qJalyCnUKC2WTF3i)%BeUr< zNl)M9>*+(Y-_KCFw&z(>Zy=jKRO$D$=kL~ge7L={aI^eP`PZ`PnKb23YG3}*Z2D@Y z@7N|?<71oxQr!^)NEq2KnqWOa=1}}_5riXZMfs6RvVC@&O=E~dd2EMPbF0jvJaZ=N zKO~WoyHk>3euj$Wxo||#2I~ADMKh{#H+Ya;$ zjAAnHZ|1|716B!&Jg;lb*Ie+3M33G{x@5DxkPo?NKHt-t=uxdCODO8t*;;osYP3a_ z-Lz1=W9^T#vO8hSL9dG;Tg(wp6p}iE@v}61ti7~G!j_frr*E}!mxp;5*>HvUe+f$v zO?pzamZO<5MRgyblsC6~VQC*lyK%%xv>psl=3hu*(}~svn<`n^O9sIQtLA&C=7Ra{ zI_z`1F;&EKi|@$0iXpN;)a>i+k+3Iib6(>|BGPb;bS4!0L(ufi=C)^;G&w)%1be8Y z^LYD&e+!y#7o#k%VGW2VD!EjDDr|hR{?wQ*d0n9Z26M}QnRx4nswsL~iDlww8Hlb` zW9-ooCNoERXD&L15OrxK4os`G+pcsxR1b2ou&iF(|7O>VkC4ZzIriE0P%rMahwDY1 zAfaAV2!@&Xp=+{24Z`!xDz>G#^C`lYxQ^6v^^{j#N1p$fI&viU6xpsGr+#DO38Adj zruAm^Wgz;f1n|`$i(6yR3uTZg! zISzEZE?y0y!KP$h7x(;uE*7sk>+It)*TuOw?Z|<2@w99gXU}V`^_+#NXSZqLQ*hHU z^GLGIsvqLEhcM(JS6c#$faAyBbGoZ=%bjuC$Wp$vm%S4~w3s z^L&qej#k!FiNCBqTz+@0;aZMu){|`qyjv|G0h*J3GtYzQ%}=loXSzw~Q1cS5MD~jk zFH(e;f#V;+@ZWqhXWedvPP`X}Pke4)bCTZUbNidi-Ir=Jo$lgGjX9S=tc;;$a-LVL|)h(b*K3hKhFUWb_o4uAfS zgN?Q9*Op8xU(m@;HCoxS-Z&gR%dNYr|+Y=9mi^7A?bSs7;Yp zA#l>z`>-yutD0@;>6}X*ADOo<(1;s0M$Rz^9jKkM z(cI9gi9_TS#!Q@%HEt#@Z3>0Xi4 zG1>g$za3`g;=T0FK_-(!u?f@YQ|n*jeLC;6a_|4HhkBvd?bq;=-(BANp7mY+Y?o8U zaT%SN`5*D5)lV0rm$*^R47ccnC+jkT!DfGu_9DbiK)0B#Pso#tgOW4YpEt7-Qj+0; zh(xS_OqhEBHkn-#mIe2%jX(QGi_Cg6eP=nwIXB!M&V)xe-Ix22HwByQ8B>Xp@V7Ys zgJeboHfy*z(hmx_G4SbIE)eV==QDXj!sVuJ=mpboquPMMkn#(T~P01S6InzCa$yd&0gX(RE=Cube0>h?tU;gC@%6*f<0dNhCy-nP8Kt}AjCu@ z1pY?nbbIQz24H!0TKT8`vrGRPFWS{+FPT7HHtIdaBqvyrXc`;g&!&oVJgb@X{ z)u}40g=x3yv#|qyO>s7%&&D#zg!i-)8uR|Ewsi++^ty2*K0yrhFaZ!m3iJRVLrHc< z&)WV%!wA&`~m3r(X)x=&>TG!p-9-{!XRlokm7d#?=z;h>f+8ufAN3xRqu6RQfL>PRK`Qt1g<339 zlz^F^7I<^CFp58Iac!{}Db);r-F{xgb6z2{*K2%kY0zi=(*li3W@jLQ#@$Q!ykNPA z)z(UN@--BH(6$;{T*Agi1qySC2aT+YN4N~0>A)ei%m_^QSxlAKa_pzs)ushmHGI&P z!1a666nz;U+ZJqSDKxK=z^FhrnqmLmoCywE9(h%k#wzNtqOQ#Rd7K<&Wp_fchAmwJ zjh_LlHhwH}sC9U}!W`s^1sXL^3B_HP#Lw@~-SiC7b%AKlVv%=U_zXK6X*CbNXc1En ziF-oiC10e**WVZ#W;cuPCxPqPz9oE#D)`E-Ani>8(>&{jSYakp6$9vHVa$CVFZr|C zaG4c-666mJ3Es=9^0wn8gtVtnmkN^BFWk6ibTnOzGl4W*~#U65=OFRZ~UIUL^B1WTu$Q-$VIrEGf${uPJ|VoBYA1Mw*@sQg@pX zU^tqfdQM9%C?PS4S@ ze4ZNsdxEM4K=^Ds0El+|ExQ1-EO5^vs8Sc7+}F1^RB?3-7rU8PX_v|gqBkS?Am`$0 zx+`;YJw+JSZ>Nrd<7hhTp+}pdWe%BJPzC1dRor)O?YTfy*E6^qR-p0eKe+od_U9uf zc~=lHuZL>(KRV*u`#Su#9?sE-5)PY+l<9cp7h@&XOnJeNo)Hy@e#+Qd@*1_6=b!u` zlVmbq(0mwwXa`q0m=auhBI{RVL$pAqqHs}Nd`1OJwdMBoacvbh_qE^o$ggNAsnQCnFE~G({FS7nlO7c%IzKMvJMq(m9{% z_?&#h)jo#Wg}_rwbf@VL$x=t_=3_w4+|7+qYVt(aWHZ0T-|rBJJ}x@%Jw-zg*P5l< zU-;zuuIm%-sF`vz_zdys^EQ1R>GFnExQLoJPSC2lY*2F<*KY~XspN2m$M83EpuPlr zDE{OkP}9J^qeY731;n?C3?k91W%^gHmI|ByW}Dx$6mY#g552@iIc>rD@o6yN{x)w= z-Mxx&kueXf-0B-DsVi7BkzE#S+EJQI^VsG_{$%aHuVnvqlHKk!1cIy{nwrnQMNu%K zCECq>-y_RcvzWsCL@|s=bMh6FFRObFCyNH_`5sPhfr|$Ej{J&5yMR>cPO9+z9#;#W zSpcwl)*Y%ObIY&3B=RL_)PY+1=3vt{X{B>WZiD?v%F>T4DYp4T)az8I)m_&J^F+x2 zGT5eO@itov$$kt*cwPKJbJ`0UPLA7V10vK=T@Z*)=E*VgM@HB?hMmOMTJ~Yr&Ubd+ z@w|g1(3it2|Yd2ZYZV1|JCQ>NKj-aOnGh-IRAIan3 zBnHnVU*rZ);j{iB34v%|B`XY)0ul^0rh!ss?*$q>4&A$f;0BLXC!f!AgXbDPCr@^@ z??Ub3pPA2S@O+aUJgaGdIqO@;jX3nx%v3XCosN`6(rpX!G(MYAlZo_6AFTH4)wjAH zXs|hf3O4CdLU$pM$CP)HD|HU_u-VIp(L9~nY*DJ2O$KukHHf8NoS(`hC%Fzgiv)Gp z%H)=eJ)Fi48#iKtO;0!^hGdZl2#K-kw}#oFfC+@c06cD4X#9&zjuzKYMe1ek5Ft7k zVV(&lF6*SY__E)qp}W6HI2JttYO6BeJ`&=#@6E4|O3dj7+^w9?JTg}ZY8O_^3IBwRV8CN<&#ra_qVvguO(@~IH#$J5{SOpKoy+&^#N}jkhEh1! zCzCpkl)QK!{9$d*gK8Jw;>G{`?KzEF>-4hmKUdoK4zr-81OSMvnJ{x#dzcmAX; zXSsMB>!0JmS>K+s{vLnpigncL2(V2^gu2)iEH`$r_FF1M&bON*{PX47#4l}s9^KH? zz3=NzQs4j3_Pt$u{dlXwr?dWQ7jLyl0SPPvs)&ur$ZfYKlEcq?funw zD?gs;#%Hqx7yME)-G1mGp6Sdid>br>TFb&esAKqT&g*O6elMQsn^)9a+u<&rY0-Gu zIvvC_DayTLVBcG&(l@l5UESGahpeP-h+$ic5LlP6mE=#d=%So+)J#_g!O z-oYP`g?~`T@Y|e6*dBgg2mh~a>EGAXJNn~2Xa|2$w*7WbOrqrRkF)Lnp~LpKiN|UO z-y3h2zMLh$9dG-NQ|mh%Z%74?{#pWKybZ|0Kd3|aZO5C7GxQd_I2tC*{qwy|4f zvswF67LUVV!(wyC$+jEZB7^+3`Rg@$Z^9xd;G?rEU&Wf z^LzBHrZeiv>-LAVjqjXU8e!NGs-10Vh~n>vJF zlMf&H9BT89^WDZH4vqTph#}MYa-?6&u#k}c-{TQOsVS|5LU`*t@%f=t=M8P&+o$i> zE`3?M_g%ipmDkW{XbG7!_@}#>Hk?_(MZeHl+sOpt1gIE;XRJQMJUa zKedZz&DU32h?woWxfz0I*!aw$=494q@Xba> z)AteS`beb`4kAILR^R)-U^0_VW5eyKZkN*L_m(Z3)Wl3D<1OI~Cy-ySdHd6?&s_^9 z+r|8Vsf!0=>!EcGJxBAnhf@`Rw9L?X zmhJ9JFm+2X9R%a(SmGY(^AulDZ9@0`pfiNOk&BSu#mntp$U6Lo_`x_+m?_0p^ZCW1 z0q3@Ih&cz598CaCg!2GrVgGJ3T>%c#Wm5ZU38&evH=q8jmV}2n61AG(WsXD#xrHus zBJZKtGA)eB(z}#?Fn9ga!cJf5^Pg*B8o+9E=ciq!3aDBMP%>IIcWK0HoPh9}19Gxq5t|Arf#O1}&voADwZofXk? z!iITchua9%V8hBn6Xjb-I~iNdUp%C2)nCeZ`}y*Vb_JMO~o zZ?Zo?c6$#v@Z?NbmriEaE75SSUi0lgawFxd|8dsx02-CP)oi{kd!E@Z+`Zj)$6&Ow zxRkN5RHsW4%i4m`Pu)6&UCn-=kxW1V@=EAYq7 z*X_BdkfZxwHp2$9P7lUL$ZwV$P3?FBCcJ~f+J<{Q*fd68Nc9~T`vcfCjORLN&yx}0 zgN+7mspW9R^SJFu3?p5V?(WfziK}LH7g9>@(!b02aHo{8YF&_==74_oHb74i(3TNu z9BmGHPoemAmI`!H54+|VXly0}OHt*}#_uNW>2&KEQ(gxnf$VP42`@+%kk5WwWB$eF zBQ8vTKNOE3Vw5ZDkd98EhxERDoVPbCeU+_`MRJQ`$xu+V;Z?M#`9?5sda~CBW?R1z z&pN#rY#L8~r&P1K(5wY&;hI)5uS1ZSb+@!z-}Lr1q0;RF?JHw7TraJQ4{&n3maR8C zJZ6`bG?=Ye8fx?6zLnd*yx?n5 zJ=D;nQcD@3ys^%$OArLT5&>NK9M2hla7e$J2z6xsPV}+@z!am^`s8* zv7NMEj&s-v#X$6DMy5zLl?oNz#sykmTYTh;(IF`g-Z>=8tygU3RLK+I9F&{I@t!{% zxvP4fJ+jd4-Va2Ht1Pe)bQ&&wD5l?!`q^J_y8atVo4pRV@2nu0-%(Weyf#~J-*VOh zt)zNO7-~N`>a4GX1d*9KPD{&boTt^}N%aS%%PV-Z z3M!vglcN7azESaGtdmvOqm`Q(&>f6rK1{>$A}SV>iBCa$|uZhWS7J_DF1xQiq8EzUZ(+y*aXkJTl6u<2*VW20Y(ucz`%L3as{Bnrc6 z-?a4?lGoh+xZloEv^aH_Jb-?mnfG7G@37;%4%4l$ba$J+{zTQ-uEm^i{d=CoalG30 zn;<=_;i<@P?kC3cq+UBoS?D$Enlf|9V0$gK8<5UfhzX$K-N<*r#uGh`Yl z`B;*JgI3OYLxlPrq;P`!Lf33)7;Ji!XDduZ&`k`!BVR+J?zI+)nlb0V=BfMS0DOk) znCzW1j?TfRCd$Q@HLEJ_9!ZpBUiGFnYR<>0jhWDtAI+wZ=v*#tDJ&|mCn34bDfKLW ztEI)NJw)yKJ)RoK2cfI@|D>w7vc-a>_hbqK?M5FOJYuE;EydcQF#h6Ezsvsg7+p3Q z<}j15$9XxSHui3iaPe)jWE3DHW4$^Q|3ghMzIUGdW>uS8*1eM^vYbPxgPzNQUSQ8K z;-x|_o0iqM=xv?39$m?ohL^b5e0*_j{4&Cj>sV@hj!*%6W>X+43uDtV)_z63P0NY` zjbZzxIMA53UrJf*wO=X%jjMRD3yQ$-uHw9&PYXV;C##Ef3p5r<8jZeDB1ogZ&nWB< zEv+U0qtcvG{tCUh`W}TO)3Q9tFEx%W=uetGb2dA^HZ7|UG!B3TH*w!=BOUYL)l2#}iQ^;*xV zaOAiuSLr{fH2sfk`>2mDnpbXazTaK7I+Jv-9sMCqQtHpOqmSC5B{S14+m0ByojoCj zB0dUFvDe3ne{$H1gMIq}c-7vW59cXEqU6<=q~tb*_XCX@^UPwmP_A7q!KPc)If;@7 z$&!@5wTRiBiq~_@@xx{zgYQOzw{BhMB{D4wQKBo!`V524ai&Y zbzchC#Sf{ApHrMS;G&gsldy2XfUzM|1C|>a)w)zWG}>?2&^PXYB&=V5xC1g;Sx*!6 zyU_bxrOlM@6YqC}_gesT%gR?dW4&bbi*yW^PU6eh(q$%txa{t~+oQgp zx2A+bw6KxQ+H@2g;H5aa;Yfk=RBZ`pCnO&w|#9~vTWFB8f1xBwYFUXldYvtzZUF?I0aZTH=B(HbPoZMzQWufW%(=SFgv-T)X4RcEy<04z*Ue-9fa-Wi_QaZ|Q7C25Fz;_s zUvRj=3e);`9vig5B6}*P^^fZQt)9YS41ZvhgCV@x8M3Rk5=v;fB1)Q=vKN0H;tP55 z5#I{pb{LuDrxF_2d$yddpTXnZ)!Z%6b7U$1EBN1^|250TB!5FS0BuqYi6JkE0>?hH z-jjbSAMduqhL~K4=nK8a2F5nRnbA0D#k-xHIro?B{;n*x#J zbIZ*opWx4C!;qOaLdtt?UmMZ}+*eo9#Qgxn$7=KYtv0pB1P9xPkZGDIw;|UgEU`>w z+u5eQ(9@mIkMXX)JuO*D3#d6v&8by?{$I}L*PPuNN}9(q5dzqcZp9-I{X!MRHe;5V zo~j%NoGvfZ{1h1&h(5)GS@Rb!{73w8kWSIC0{*e#xoDwq*{Jx1`0`rKAI_8jAjFW_ z_dYg+Rr6!8mdbmW7IH{yHa34DlMFE$ZFyh?R63ZpC;+LiAU!_<3!uNXf2mWEMt!Yq z{jIrA(v~9!B&JU@)lV2(sD?t3zoz4MeoG@X3r(G1Efwx7L8Cd55@_6&Zz&vZ?3YD4 z2(Me);gyv)!G_Ap)u~$Y+BrLT7Jw&wJ3#1OzZkyF>Q%S+DrbE(si4dXAyt2E(`UV@hh=XrpgkD_1)I~EL~1pk^(5YJ1>Wf=9tahJVqQ_%15oz zkcudF)W+2FpbO}Jt_(tBfq`L)oUj_D#8=3U$S7$QfvT1<@-0N_2b$c7AbBl7oYxH! zzCh9seh;uBQj=_;A+J1^O%^1FSZ%mn{^yQ8?KE)lt^)1=?+6{*YBQ6 z+hiZOQz9UL)YzWJg&oSv&3JhToC*sGw4zFm=(s(sE%=B7JQ|v-LQAu=w$NLmiM)b8 zB%-UQUE8z{kPjTFAO&XL71G)^Qty?E_vT_Z6uPbZh?`wKmbSjM#EPc$MF4|r_EqNj zTNP~;@b1tU(i6#`Gbg`$NJRcZ&EL1f4As-Mj0O7mNYjgFP#!GBlEkkJZ0kbOl0r-w zQWYy%JeT`QP`UHA1+EtNcwDY`>0Aw2uiVZ1y!XjDmxjthu#-Z;8d=@&8$(cMOSzDa zo_0{3_=Ncl-ZCU9DLpzD5lAmJped+sb$5ra(a>}xy@iryX^Y9Le~pasC(`g*3P(>1 z%Ok$sU_7amEla?Et!Facl-eBHu7cw*F4>vVYXcvvXC|h@B|HZx=TYhiNP&Nuom+7F z(mE%9o9+**>lg1oa_q^LDCahp=SqFLoX0A0-a87q1JVWKz0<%`fC#GiMPVp8IFqCl zhxRtxEU8yCejTKkn-Wbi&6|v38XngdE=5TX&uz|gF&w0!cQ0~&HAl5%4m+o#pNwma zfqQznU7}%xgW06sTeIRj4By3W-x=p~#pQP_{=D3i^zgh!ETk&o+Fh!=XLUhSv>mQU zMaL=RGwQZGt@p5)MTpM_bH4<4nsfWb9g+6B9|H-Vb08I-GMP?woh#Su`x$M*DvP~M zo^aTuuwlx09odbz6Vp^&`fh)!L^Ly393co`x*dxBXv}Td5-dB`5l6(l zK41}eL2x&-FXgXnz9DF;n$lF1ML7s@-xz#@rHK@=3#hau7f(Ypn4U^!XY80Pi%v&T zV+h`nLogUKhBgX~!T;QK@dPQ?PS;>`8R&iyuPy{s zA0u+0;6Zw#b@Oq|F|5#XoG|I=IRLXcgq2|9opHdlh#C&sRbx)ZVq{$xV1O15eN`&X zcd+P2h(h8=Kz9hDz5bRk#)qj44CqSZ4McMGPM zNxN3TacXHLW*4yzxpIW# zBxEr>;Ck4RY7GTvw_^8TP2%IN8NXpzI7*LoLX*%EURkyV%@wLC5}6@Xwb@=?wf8mI z^WZ$bd>j&?9EUysyCB;Szr5f-bL0lwU7kZXAN?P9gy*Y$BW)w{u~;8vd2DljWBoDp!gR6U* z7potyNR(24W21h|;xppwNop?QH|Azjaj$}B?;e2l9%mTyHtDU_iFbgC-;;^-cnx82 zJmj2|M0t`XCtTq8#}b$)DV_s3Gu<|3YR?gcHn4a=|2{kXVmgm2!(H{dHF1jtl%yq<=xLAvJ82nWV z%6vS$B%{TtJsx1kaP_i|NC|Omah?sG-r73iH`f7cvwduZ%@ecjA}S5YkZ4E)VkW+s z!0w$xg@WU3Rt###a`GE4P>5d_%ao`r&QU~eW8_v9$+I%$98Og0&&8?n$4GUGP%!D~ z6Aiu$owKNcRO^VoJWJ{BZjN@my#%N|hk4R1DpQy(%d~E*L~h@3SD$zxyivU*;f(r~P-Y(ElZV2Qn&p<9f}l z;MFe4p^m%RsLq_0o`g;7&?awtKv#SVTg9x0RniAY5{;1JoD)*ku^XM&G^>qDaxp0a zNr;TiYO5mcjJ)iTk%?LDROB#5{(;E+7lK%bvbS-b8$hu?)l~$MC`ct|iLqi@xyzWE zL0$t3N=8-Coq-qePc;9;;)Da2_OV+EN1C+#CL=cSIq?Ia`F9{xWfvaisSi#^jiYTx zIJ#~?j@Uc3n6iTW#6Jb7mWP;&+bR~wz+u*mop9hJW#w(%QE&QF_zgGbrj2o_JoNbi zC#v*32FgfIziRKO=>a_~b~v!qu*_bdxRDB7bLK}9Td&fpHpPb|n3nsm`0zp~YH)0q z=W3sWGOX~bGa$s2E)}Ibh`?x71)NP*{1)q8l-nn12gG}p{lMbGQZahnU5*GI^HV^A z?Lji)dm#ibfh`F(R^&IP^e_OxJLOp5MyHx4{E+GzkG0?er2@S84Y8m(_MecB647DB z1T5V?)5a;r`=_{5W&*`}Eyef&r|#7h(AoposAyX2y|!Ek*6%Q}$BhYsA0=w%mPixd zeLC-Z$ZIAAvVdbX^7yH+Eb@rwkd8<{6<)|h{BfCqyI6bNaCX z3*cB~~rr)WDLw_b0*beS)K4lo=I(zV~h7Y3ApE8 zOh~}=d8tQGN89S@N)D^en!v0v{;bc*tnc}2CH?5E6`A$g9$jmHnRNv+S404Rq9BgJA5`&em5OzB+L`2v0OR9C&2RC$zw_XqAmtazvbUzxQJB!}ZIXz467 z4Jjewnfp;n?z$YgV$r?wBY%UR|Kf@Wa%GwEXX9A>(LHq>j%mf-AFudmN`ZA5B8OHF zY(o-tC}tO!lgFS3b0(@TrJkj%X94O#1t^r&2)WSk`HT)h1ya=##Nfzp<9x;wzksXt zas3q&jxJ-b2y;U#PL+JU61gm)vH`qQ@J&zd`TBwdT~K{8ys~7dO+^LtBG}51tlkQC zIAD9z7pnKNgLQv?`7B^BLY~I+dP>%KbV72qRrn1)SBch7cq-fAFkgOWaF`TVZi;J< z=nVkS{YdiVh3ixcTsKvc&ZMlaArZML$-oB3_(LMWb5J9Cc)VgUzsmSIkdiJ~T#n`t zKw_Cy?1xqgtfgj&$*PMfn*zeav_*0DS0r!I?jD-sv;~t4KfPFK6UE24LwNR??Bk@2+Ut&p4=tl&H_kGM3hn zD9Ux<`16`)R6rip&VS<{v(x1QO&jUwUw8`B73{(@aP|4QU1HEAw-;u|DC0r>0& zQ^s(>5AKF7Og1AqxEnraWOEhi?}nv}tc^(TJ#546`#nWpv~UMKneifzt1#HCPH|$G>bnaG7T4|6*Sm|PzAhzb=-`L zdBRYvShC!m>p^O#^M8;02E9fUr`I|}V=0n@2P%w_P8I1NsDjmqoL~SBqSv>u zkV`D2N|+ z{V#q9S+O`jq!89Cm@Hi>u_7Cy6Br`>^b}`nST{CEFuxf!5#YnBO9qmf5$FnWEBH&5PcniX$IH$|KNw(>F&Pyn!YOjpZqYI;7stt zs_5lcNn+@if1|I9Um*W6Y?oAil4LM_?Pqc?z%QL2e$C`KBnNlH+l;KIBK_U4kdfsP z`QP-l0R#}>hnMgL&Spc|06&~O(BOx^Yks)0RDM{C5Vxh3puYd&hon9~KdjE$OQXJy z9VPYkxQ+VKP#pbSx?H;uPIbk!t^ZGau@A~fzPNYZ9r48&oqsv&K_3wdvpCWlKl7oBT zEF+&%k^Ua|nUQ@E>21Vm7udUKd66a=KAiWNA5DqdDb7N{Lz+O}!(yAFX!Gxe7i$)*FbmbFdia{oIRB4YzTaw{R0xrhP zYmp_ScdAQ3MZ+V(%4poc$I(1oit`^-nlpJ|qy~rw$$E`j#){pWulTZfvIIzOM4+9b z{2ZLg!Q7K^(_~zMxI7zi^03;IFha)p#4*OfOqcn3A`XXjKOjnx#xx8Db{$B~Pd8`Y zEpt_FhFlU6TEqKs5#@k{eA_C3B+u_?M@h3in9y8Yh2@HbC4S3B-ma)z%8zpV`pPq1 zX!fuZcn0}XY2d0Pe0QDB3Bq7L9my0iBhldlZqe) zm@^mrLjUjWC6}QRniqn3=`f9XN?YHW0|&WYeLTy*zNtb1ngzA{h1?q}jr`M)zx4I( zS7Z?bkQ_WqwlcDliuBKtFB#d=035_8u0x3`kEIPgL2dM`WD~tKn{c2c*~F!pdT6N^ z@$V~3=cCC4*J_jI6Gux-{)S9mfeP6y$7{h8zZ{b?kQCgcOCKY0l8W><>32pBLZmc* zRDA0;df;&-cJNs#q$3#RcoIHjv7dT#`l^{p-M-!?E<~cF8Sx;Y1q(zx*uf?c61f!4 z|ASa~$N~zvjaa^HD~YA8pICVRqV)a?A(90f4bQIhoZE($AFaZauxT{sM8be%K`)l91JL%=z+UK7&h5`=V^ z$^B82B&21*ZP~!2b_#937HuUX?^BWfw!Ff~YKZg>Ks$m~5Mw`h2mGZMtMKtuGni!l zmA_EAdq@0bcG8{mmmfYb=%5Sm;IIVf%&(tE2l@HSGM&FR^84wbm_A_!vWTLo#pz)r zBTuPFe;@W_D{#d|<<@!C7$FLvaW>sA4d6pPbUG5%uH`ErrZPfx}8OEZF9$&<+- z&2|k&zM>-io$q@Wk#h}zLHwl~c<6ugmu)CXdNQMMFn<~1=P#o$`!s)fgK(bD)Pz)$ zzf5OxA#4e5=PyH;^t-fx2x#f8jLcP${lXn)W zGlIE-)Tk!YoX+0Lw~taMMj_zl-;^aw_9RrGv==7(Gw?+hRW158b?DFq!<;h$XWdGcpj!N4sXtz(ifrvo)u&wE^7ue zK)1UB%4UzfT;=W~aB-$k+<@(b7K>LPKkx0}Jp3=7L|*KE4Qgiml-JHW_JBl-)Vrj) zZk~7$-}0wSjWJRy7^yYz?G2Y)B@NZ`CQgLL;iu&=y;k7o_`%~{Zv!+XT1PR^x%kR| z*U&%C^pnL5)T_xN4Rwl%Yj^|jwAX`0M@$}s!!@ZNgsS_BG*`vmz}+R<1~Z|RWgIn~ z$02n-6Y1&{jiG>~fQyqkm>=a~uLE5;9sr}g)Netni{78$!5L`Gd&Tmg507(BPYj_$ zgzG-}JPF1;kv4AdPvvuVi-upKLAXTt7LlF=d^hrbpGJE3J3uq$1`Dl=qW0gE5NfXY0xfvp^$+Tj$SEP}HX%Y3ES5q3|I?H|d#RUdWAIBT? z2VaRep_>yykF@n*fYdyZ)0emK&Ay*l+70}fL7p#ze~#n&27(9Mk>aWF?dbS;@fw-2BXd{Eaiu{cnSR z$hwl75`%DwfjP4w^bYDa0Po`HKJSm*>QcK%{+7omL2uK)hct2afMl{bc0I24Wa!#t zFsKVS*4}dhgylMf4b3)?7~`FzqHh6*A+lD)fl;zm3X@EU2`(ak$@!SU<38jKMPBa^ zIW?61HR6sgLmb-9^d0=on?|f3-zWH87vIu4@O1v$LBp@luW7enpXj_5YVYj4RmM>j zWbQnUgHivxljh8J><*grDu2xscCk;hqH^)@HwFpH0&`r6x!%t@BwQ6KRI)wyzieYL<7}% z6u+J41K%b6U$`Dt=IGG3N&4=S^*8{7o4o)?Jjhap_@H+2;zZ5Q?1Qrgs$3(H3nL+x zbm1D0qkIs_13d7vVi&%t3a}C>fR5OziW6uT<$#y!4vWbes_LmH>&X>M$J63HFKd{J z4o5W4@8%=gocRPIrBsa0&3_X&ra0>*@riw_6=f-|AJAuT?7G0ocYiBwH=f7Ya)+kEQG)tpVYJ5W=XoR$934BME_>L;^9bMwPX^HRT65p{Uz7yp)eZhF&58wmxE;b(&`wp5P zCH%e6XGU2E@mKKOwAjVQ688?L!P#pUIBn!Bl4&Fgj;GYFL}Xl@J{+qO?_9X92+M=K zu!GlFuqlRbkiPgNtq;OFKg9d7WHz$AIrDoiL8DRC#%J(Hv(4zGpgz-=ihybHW%yw* zZaeZQrda-qZy^7%FK)|E{M_XYGqXfKICDHR-;2!o`-w06zl`jEHNL_4H!TJK;PmFDq-z@= z`sjyTav95XVlfdC6UAN5IVSp+v#89}InE-Sn0|n^Slyku#G29*f%SG+BCUB4mO6%< z2S4WdO>rLsFR!UPUI!jkRzDfnP!w(t?J=Re*+uK1fyt(gklG4B2%o83cC6o>qL8a^ z$U?Az{7RZ%<5ERyUWofSuV=P_&Z*^qQPMQsmj3JA}D6M3Oehx}(Ws}@`3jYkwrpUPs)sm0ki9e*@| zcX$nB-tsfOXhk5avwL)?In%}L+<}0h-;GRxQo{EsE)}|pAo6bFo)5PQGm3B(3D!2q z$5tf_X01zcES|qo)wYDSja0S$@G72({K}lU6mj0C0Z?r0Rl*=lt#{aMTv4xy$OYn% zIMbci@NnUQ??b{5wA3AYSHLb_@^eqPV?yP?`w6c0Prp!wpIFaix;y-6QWfI{SNq{e zv$jpNhl^O!f;&8^4IxQ{Q`~(WJtxAz zoTk!Gkn-*Z1QmRnyRp}W`mr2WMMkh6jH4LcgOJN>QxnjALVAq|>;=`oqnycm!h-U|5e z-(~Bkcrj}=WFT(vA|-v})^#DqbO&1ML#uJFH*+g|62O!s1GShe$GOd%kBZ#k zWo1gJY0=C0#Cu=7#Q=Kqq+G>5%U+4@)&Ibtx3lH>Xd6C1hn?fR8SOZlKMryrH+{+0 zJo+o~)I7AH3LmPD#5eZ<8Bihk+~FT07D(vU01ez(*=jEQo#SD3C%lC8O%+kASkM*s zi^8A9H%7>`cm*Nxjy^7}`Zk6{%XW(ct1wmJ35J6mY@dv&b|N3=Q*tnqzTQoz+@qeBp-x?pLX7#_rhbuf!M!kf;re=-5mO+bk2smUj zNUiSn>G%|RosEv2i!XHS_xMJ~W&+I+j-uCw%&L7>PkPL!h?dqb`E|fQXU9ay7K-_b zKuj6U(Ty@5e#w;U@-rAIwA``Z`zv^mC`8U6c|>^xgK?K+65`rbFo>cu_82Z~>2=ZH za&UG5s$?#bnQ3{3j6$FQnzA~hN{Dm<0t#uegd+WBJcp2vwjl9UB#KsKBPj4O3doZ- zrMkez#kECj0lR^9!@JDTq=-|w0E!RsDe}stBv(YCc+lfwru50Op_LO+ca{n08PMB* zzZhKo07u*1zAgc;!L-Kuf)i}rZkxMBC{hTl8PO-7yCCMK$})NBDDxc3Fc}U<5mJdV z1c;gkOT^7XTwA=6z!>$cMQ&!qJz-tXL#PKS%Z(IlNOej*1tEhFq74X3OF)R*DXU)% zGe2cN)d!3_8iL|&iY#$-Bx?2~)NYA~k3H@8E-DA+Q6F`4ev3)$dRKTuVnLE4k3r@c zH@OD3e-D{Oca`O;Q)aP0iw^q>zZF-;eH>KaNoa}+K$WZ2bcaf%gtkn2l5lQ~#(Y#y zM}e=1PH3n*!g;OEw85FfL#$=2ruTPDc{DeC9;)ZR{I!z*U|u~H58!Ze=L(;QH17-y zQb2!z^!*R&^!`k5Q!L%)85vUr1m}Q>uk?mQ&(e9~yJ>vaOd5>w+#O5)dJi&8#&5OP zJN-U&3n!(w7byvRgLLi^-CLkNpd&G{AMI89cTf1JRJlMWtM%E{KB3sRJG^o5ckmvM z>#v+OhMZa2Hzr;dJ?f#W`v42?;i0tEOh=3%4`A7b?6Mz7@ew2VNN6H+S6+-5wHf^x zFSF)`uX|06yem8$_;8U{`x|!~Zm?o{ukFEdu7mPnDsb@W8msP z-w0gul}ft#=OV+vliV#nuvP(A_N!IXVHd2GeE(7G$rbPZMXJXn-X@+`j|ITF z0(|iZan9$Pf1PK-X51Iu$RBuB*3{!NI0pE%+4l?l;oV~$v2S}=jSzcHMxIqOPz*su zh5I&(23Gen2@)$qJt_7&BC#qEIW6_(h{!I6e-F46(A-UmK(&Dxc$&Qw`G=im%y#o& z?=AA(05KZ+kdouc`(&S?XDRzYb}{!&ac!eGcmp!mkG7wrXIM*`KQ^n!{&lh&79c%|oQ!g*sIiEuf|fAq7Zn8^ zP{K2;&(nUu%V6NghOtijBku4NeBxJYcY-?wGmpYVo`}R;z)&`T1uFD^N9>(o8X;$; z&9Az|`x>W_m5k?Q;EoQ<;>~ox>FPpz_6$TjL6Lz1@Y&+s25tMdLF+fWWK(Sv6Bix< z!$vCu4s8R(``^Dbzp=WG_l7eChy?x2{XrEgiH-Agw$1ZuOd5Wty4s|=Cd2pHV{m2H zG1>;|_O!^2KqfeZg$q2W=iNP_GVUK~a}UEaHe;a9pV-vqo`x5{=Hco{7$hzEC;)C? z+i;N+x{;AFs0LRNZMXx9n|*kd$rfME7T+Vn7T+(@7C$t~7C$=L7C)h>Eq-dOEq*R) zvCv=#H+F2$O!Zu(`K~vb~PQOCxhT0JJ>0zcdJ4|bS z+6+R@EdwB0K0kj>raN;#W*@Xhee`9`ro(#R`N z_>8+*mbULDs&w10l(D&I--N>UHfT0Li|-?$m8>#;FrdYcEDc)xI6#ZHOK3GpK#QLZ zXz`X(q4goO!4ewoqZeyi{76C@S1L3+q0N@i>Xn3MAv9a5&;}FQNC_>vB(!maW-k@m zY(le0XfY+B*$AyqsnA9e+BgZVX-Q~yLYrMGGz+2GB(&xwq4goO!KFeQM`(5lEw&`I z*@R{(6`GCE`bcQ4OF|n=Xd_F7W+$}S5*qxA6(2VXq1j4>)`!prOK5N%P@K$1656;@ zq0J^Vi-eY35}J+B`jiT7Frkf<&@3gPjUzPsP54K;BQ{XVMB%hVGdV4-C6VH^L_15F zmY`}NrKY8=BvPD~=+*yYTJ|al?aroUpOVn-Y+4Q|3GL3N<=~Rg?rd5 zD^5&zHZ8}Ngm!1sa$HGhcQ!32m4tR@)6!lN+MP|y=_R4v*|eNp651V1%aV}pU`m#R zqNk(PvrMk-@c9P+>DzHEd8?xRAugSFy3%?-#D?A2&$U%g@^!+}jrsT=t9X2QTRcRC zc!&z|5EbGfD#Sxnh=-^UPf-B}{YZ8p*@a{ml3hr4A=!m@zCBZutvIHDJ1-Yr0L1IP z-sOc5pybnfbN9hX-(j13!g2WU6IS0MZkW>(mjiRESh{~QGdsv5! z8ok&k{L9Wwbhv$chwXE(y_Bg#Ar^@06Mwv}!vzbPEU>*>eYXxXGk?omHGF(k9fpR6 zg+_#zsi4E2JsbAyIN_bjI(+D%!w-FaVcc6f{OF_iK6*UtQJ)SE9GH0Ej}2=p>F~;x z%U7Q z#M@8YcQd<-4%e^Wwca&#RDurQdaK`CpZ)m2!#Z5FsLZ0U7eimr;rs8edH>m(gAVAh zQl;2RPqd2~r^8vZF3s}2a5Y_r2?;+Xe0SpMG#%EjZ?7+&YI8-0$B%z}ymyzQ-{|nr zp;?Ene)dg69d6muYRk~`|68WRmMt?|j(>e{CmnX{7T0a~%-5Ug@Ybzkx884fVu%j= z_c!-{uGSYn>#%0cJ~daG@86)qY11}OTfXLk(BZ=m|NiiY`4e8&;h%qg^XII7hu+cQ z^5vbEzxZpT>N>o5G4JBR+BX~Nuxr*YntH9agN^v|_J&YYf!k>eaVapXfQSmkw8~$XfB#-9vWj z@R?^;KQr&QUux(uBco-;;7@D+s>2N%_H39xWlTFA4jJ;)kOQr=7V9uFGC4A>SM(Ac z{{461-dP?t~-_YTG_bt1x@wy&mbZ9o$F+VuqxhXnyyKA|dzkS!oI{f(Kk3N1hwD(mV z&Y9z#v-j11zSiMuuT6OE_v;U*>hSR4E{7K_|Gb|LuV3GN-5r}hNrx9MEWgm`+08%d zaQ5u;vvXf6TBpO&qccX=KJ~-1Iy`!`_tB3QeLPEtwQCQqo!PDBmpbgyCA3SK&WloX z_|7{W-%0KCV^wNwGEp=GFe7*9Cb*psH z;pd+(`aHBzm(O%KaG+!0*;e0vr9-FlA?LX7>K5oQKK_UJ4BzNAIvg?Lr4b$e+CEr^ zWy(a9iL4k_O^2U+^71E1iK(yX@Y!d7efGQ*X)y;Zjr49!TdUnvs``4`1 z;lhP?FKqpC<@Gvz^UcTJ{9s43M|9Yv$Z^ag@^+o` zxDLHur?>9Yd;ij*$<)p?J^r3)I{f+PDLvuD-+TZbDrZrS+1*-zf5 z!ykXF{$rCr7Ub)&b?betH=G{p(xKJb-a6B<S-!G0lr7v5X>6H6-{ zjvVP3S>C&2gbpuVI(6wtHQ)U@oHAwqluhrQ`9X)(s#&Wo85r}N4wIAXC$|}rHdBWY z5z!IJO(U&3%*lBmr=NK1H65Ni_r|&SS=)~3@W_#FM_ym@X?GpI`|iefpKLHJTZbM` z6;C~9`ImIqzWv|ruk4(;Lx*p?G5U=kF2xVhAygj4{_Wjccke?#Ij`yPfd@W&AZ0+tgB{L8ze zt|#g+Ha0uDw>TuL3*C^AuT~F&UE9*ek+ObcS)nThv>syU_WoTC&W@q1*-6QYq zMLPWBk70jood50Z3QoZBj5^w16=FNjQ*R{;+ti$fzn{|I|Up{?2 zX{rt#j-8Ih>(Bn9!*b=K%EjJO=^-7y@Itj0VwP6;LWf^}{nyvml4o?&;h8g=&Ww0` ze})dLR7tEd>7jaab=aW6>;^?69?8?;@Zqlwf4FdKUmgDR)3l#1y#HMr9j;vY=E`Od zcAu}q*Iyt0`qsbW9@F8qYdP26YEv*=hugNrZySB}jrVofxbdrv6IOSP)Zycg&v^W= z=&wK3VS4)g>3zPaxlf0aC;vS8`;Sj=(_vE5>7<{JPClnYo2`Xy;FC*h>2T=KQA2mN zUH_^Mr%%5*Jul+r)5zxdF6 zSO3#GJbCiVlbyQ%`mPS2eDZ%!wkq1vLx1`DYH82uwldWhBZIz*jk6nmUUhB z>MxBWba>A_)9<-By4?jGcIs5M)4h*9|D+CcbKB-lz46Lw9p1Qc=*Bk>{Ml27VPTPB z(KRAsbol6_k3af##CxZ7_`m-R{onfBR*iKye*CKOJ-7aLuMR6$Ze4k7(%qwU_|HFk z|8XXGXXxjNQgvb9d;h1y#f!@=uH-7~)M1YvjeB%`W?7gHzyJQs z_xm56GFpfE`R@F?p4fd{hwa*3Y6>*pfBqx$XK!k7Q-`m<`t++m-AYK-VPWC* z!u(2?>*;Xq+CSF5J7!{(4y#wURbM)+iCc%wn}5}O&awfI>hR#fXAb_7xh`CXd3o#d zo*8`bMIBC<@Zp61yMIs8;nuAWZ=G=YwNG?dwrr)cQKoWrb=a?8O1~GXfA+f$Etblb zyHghq)#1E(C*~b{=hg}xu3GiZs)i5uT&TnQ?_YU;_viYI(c!vvzpPt5{+Wt8+`PHb z=FTUVFVJD{-jDWvugpi6bol%4{eS<${o!OC-gQ^=y9V4>tG5o{e!Iup%MRWbs>5;P zJ|EX*^Wg_{7#FuS?zJn!KhUAw{-b@tT5(y2SFif6o~m%ErVcxI4)0vC(~CA8e)ic5 zpH*m*@}Ul0u6tbV-Y|Wq!x}Yu)mUL^`mGL6oOu7lppM6~bXcp_fLdSmX#SB7+q4mF zemr0=)ZtT4t$k|Zz60fSSfK(gIJBr{*5RZ{M<;#!`SC+KT(jonnqT`oJ5h)G_Kn%M z=lc!!=k<4wo(+xb)jCEt>1_gAYFW zAhk;0^EzzWbVbu43wt?qIC${*!N0|2KCi=~qTHfaI-Gw-htEHM@AH-qs&3I?RHN-; zL1t*rhdw%RWyZvp9(!W_TZ`VWG%KP0@k3i$cDvQT=Cp_ZTz;|ZZv%EVtGIf_GZ`C( zMElbE^K3coWJG)wJD*yRFXS}rM$}LYB!s@za^~{5juQhi8 zjcfSN>dY&$HoG=|GtXHzd&|O-Nu4h0^B8Hr)!((x>e??K1}Qv@qZtR_B5xNDg)2 z5LBWQ>VW@|1uGawV}UPWLg4xh7KbSzo6nX_N!qTSNl$h9B23SxBiC9S`h>W4Sej+y zI3^mt3r!gvV6&9!=~CF;bBwII&vfVwl@KBtaqN3R`p{6x>6~mbmK|{wB)0#dp zzJoaU+-yF0(o*42^1|6QljmQjFJaRHo`Si4bG@C05b(Pvop7vA4c%rfJe=yWAgmS&d@9$#olNLF>@ zbS>CUa>+t}F~=WlgLKS`W4X8^;>2mV=-X+WyXpA(r--iwT>wu^usxHfTUJ-=81Xf- z;|M7x!i8tfTF0Of21MwtBhelU!YEV5DI76+1Mi1y^r69M2Aq3_9=z4?BAb!Pp0+f* z2ydj#a&?<7b9`j?;6T}w-WsL=IAZLd$ri(%v}aUuv%{MU%ED)UXr3+UAJc*|NWg%= z%q6wiAvnl#;mv@fqTT(tdxWY&q>T;UPdbJ7sWZ|L!GE%9`qHqj!z0c7*Py%WM(XBs zWmD(-)Ih0wOLLOrj#xtRNF;3@MP9Q!U#Z;-d(Yy1>H#>sp)(91w0+Z@&f$=BgJXvQNVH0d{3EHg~-kjyf{>haKQ0HE`G?fd!yi7LH1W z^J(;Iewv2IsrLYSgFT-y8)wblfxsr9pY->iw+C{;z)RVfrZ)WDy7_E{?xBB*Ho(F> zKTnQM1~Yl1g4$yYU$OTctkM_&Xqf1^!AFx1b$yOZ1!Qf<5opqusZ&z<;2-~8gi&_{!|mNe|F(sWjKMXh^NxD7a*$k6n|4Sy!{k9=V;CQ}5wCHcA2f5=4XdgA zAN}^ul7IHeN<-^t0o&WXD2=6D*Ihd>8Js7|ySCf!%3|EXe=7D#NCrVIM8NsuEQ&Tg ze*-Dbq7J6#+hdYwI-p7H!Q-&CO-Ab4X#BxTTA{+V%Xuxr^xRo|TRoE^thxAspShOM zBKgC42E6{Fr$(srWRdfqh{-iv`{E8bj~9_Jp~7xgC27m#%T{*=*>=#Jw3>EUT`AL% zK!&ZpCgF=~i253fuND5UC&a_R4a*GpLBeIz#FUVYE1BpjFjXy!@9uc8qFW?>^u?x?!w+l&d9>~E>F7LuGN@H!NMb7AR#2pCje z-GV2WXv`hA6E`3uZ%K#gS;@$RXOY5_<9yAwp#4)GxVk0GF^lEi2bpdURps8mZ*aHxjle3%cYRPx@h-g-x=Zz_>A8U@jNftDuFcMD)u;O=U-ouFv>J_E zOC*Oh#QUlQqv}I-DzYvjgN_9ZdmqE92VO7?Bk%d=GEqe_yBPK`y4>|A7FgIK_nia- zU080S)5SHMOQ?&O{Blcs6q*wXKKexqSC$Rf#Z-e`46BFDhqSab56uys?}crQJYSLW z1mDUv$r)jFSF%39JYzBuo&?y?7pmqi-^vYK)?xczJn+E+J7*bR|J#sstK5*82gaCSQ~{(U~dA~ z^%j*mQhM>e8+YB3xO94+B~-Fg@BlcAhKKKakcJm~>G68RJ<@#BGpQ>5b^l4&WMhu$Oww5`CZQ`rYQr2YBAKNCuoa5qzxm#9)2}vwgP&v zs>53$m0;9@TPUJKPri8KK%>rXBB6>ZK*Bu0{CGz8jE%H$hgnDjZumrrE1igXrzqa3 zjg_dEExhG}7k0+6C4FFe#+)>PJ&eq_fN9EDhf1AjdZ>K7RQ8LzH!6hWMl)bBF@kq7 z?MsUz+uh|2AZvBwelT%;rH8^*B8qie46mQ(8#)Y_e&&VtQQOG^AwC1afr&;3!qYQ5 zoQ5{Zz%x>`gE=PfjATQS#UodNHEuvhqw&CGdJQJIwu|R)BA!)P+~A9>K^E>H3*&|< zdp^G*`?*+qhE2N3Q$&oM0vF}f+zJIx19$fdZJvKL168Zv+5_39&qyRst<6pot zZnPeXfai9Z!tVe1#w}?`h6vz0JxcUJ!2sf;;YEUOccVj0=^vn}Oo_H6O^TQkW^o0# za0oJT=+aZbS@U_j1u|oJF}6X;6(> z^uV9~S(K3lUSiJV3negc?KT3gfVk1XaH)qP@4|<;J{>imlQi805Q#r7r5r*EzZoqrwuI;9b zA~aZb7>zyTXg``rff&~{$EwQTMCE)3&Ku8rnNJ}y%S=2ymD7+C)PzJdA-}oef9A{r zio^kF z%E9XDX+YycW?dn^1927OOOawSt_S0KDXPd{SDfE+e`a-e$a+DxF5$f=VcGZhgXmAV zKSw90LShl8uW<};Vf00nX$~@Z_aaje@8@3 zQ#g>3)$#oaWNpdn(omf&pEXRyMj=)jR+809!%7d);xNC;7+CJEKY0$V8Y91OaT*+; z9qzY+&wwV5ClClcMkBU1ujy1NV_2%R+v~%MrMeHwwdK zT2l@-x-i&4Z2UtnbU$FxG(R)C*Dt`V0xf77Nn$Yj-RD|v~{XUcSD+SQ6Pg}f`F0h%bXxW>4S>50;Zc|KwuRKtM}a?`enpw0MG4D`J$ae4|t z=R5Hjx`tK}@!+rW;;u{D> zv}3Nj2G`CZC}7TY)B6!o3z-msr$V+y(q&pQ`n?Zu16r+tmbyVZ8WFPlWg|~bR`})b zmh(!)%lfzHe_D*;sQV6{@NH4S_a8jrHR}X@>pOpR^XK}R3`O#im-a!z0LDpE`HY%! z4R#Ya!00^-;-B(#&kW*uKD}&ObR3b+o1ymJ&YO@a%Yd}yyThVLu<5FT8i)loU{|_b zWLv51+Dc}Ba1J4_hJg;jwjpQEFN+(Ujo3fBj@haXbY3Rvp@b(^ z$-1t|s}`v8?gQFWpktR9Kl_TWF&>7*o^YHaoDW}4HD^8vywTIO2BW7TvG5v+^5GyC z;F-^20UiJ%F!+}-E@BXJV<9r!Jus_$Dq3`9{-%Na(^c)6%+DE=zlZpXMi{>o*WdDr zf}CfQRK6w5$BVqhvG{uuYCTYLd!yEqe;L31d(`;Nu>T+9*EHk5$1gLl^zn=A>>s~T z*GU%zVvgfK$8U3J$?^LkMb;5KesyGB{_%TZPSE&$4ms<#@q1JCT)%-qqEdr&*EKq5%wboSIwy%3i8MhT#Cm1B2LN1FR;__ zq~ZCv^W1{`Ipr+nSVuSSW@HAv$qRAfi%S$dV&!Ud)m~LTRD3^11jEtK%xk20MHcI= zkrHi@Deaho|F{M2jtclrDQ~;Pm^1%Cu%=YAn$ng+BpqUK2QTwaL#g@D@{K{p9EVyIh3J^~bN^1H(pt zx=<%YRBHR8gEs%zC1Iafw*wpjV5Bb}(fAKL!@#TAoGo2%em~T*$I3oWnl|Kym zMLQ!a-(Hb&5j{Z>^prqZf%i87)vBPPndOZ_i;)MHHKl%D!r6jsTl=Bf1U!e!TIR@F z@Ye4(G5ms*tQKK)VUK)yLiEP8OQEWqj zSaqHvt?5O&N203GPOA9OYgt8j`d;WKT!Dl82yY@Nbh%8Rg5NLC&pKi>oL|q{jQ9 z*%sG77=+z@7Nak=!`h2_N9;?A%9s|Ml0~g}l&@x|YvGDNp($^m zD&b2~?RXJYsC&svvKlH-Hr+pym26ZGs7vN^t4NalI|eH2RTYb%Z<5pchi;U5t?;}O z8@Ds=0MHPtD)A*|>Ip%T^+vHvO^bd&exUI!YeRGfWNb!%XH+u^)u>&9Dcy@9j@y|P zNyLz~;!wKMGA;fSQ^cEr{BnMhwR>tliRvT=M%8;BLksI0E&PO;2N;z%?auyD4z^b# z0R@{XJmRt;XQS->?41*ds&}pdu(zHBlnlL#-1$1Z5F9);FBQtp$OR~%1}+K4^oc6A z=qzd``)Pxf4vA#q4MwWQ?=_N!F$w%%)zbEC7&B&MLtXY$3TiZ^>_dG6jr!h1p|z?L zep82LqGx0oh$@b@a$rWOT3iYj(a0z^!hm&fq#upUXA~M%Bx%xqfTe+LrDxSZG)EeD z6Wr#H#f4Zi4$xmDjiPs&UgkXUiHq<~;hhBOOv*Lz;Ul%dq`))iVY1p-jyn`=cuxxR z5u=vT2id)QWtlYeD@V&y^OLKx8%I5=$bRg@3Wt@*#@Z4=3{c9l?W`kxI+%i-uZVAp zc+;YjIFSP+xnj4Gq=P3-p_>%r!Q#Laxqfx5ea#2<=z}lX0F8wco3I z`Pfb+Mtn5!th~T|!n+liOaA3acwNZx7c&%hS+ojCc&M+|v|4gK!s)Q};PF)g>#uFs7I4vCc-3sVHJWN5E;!_Ry51!g-CMZjTK0?!mw*{i9N}KLm8mu3UCzCh(S# ze06Xr;w?BMf!^C1VWD7bi;40!mTZd>EwXxQ-uPP)eNP2DD?v?@p^zWFSMbLM1hBs? zNOez*FuQAswOD%0ZOfT54kHodlg;wz)0Y%$S&Ro;eBSj)V?RiGcvC^RXh0aCAS_zS z@+df9A$aMTYgE-Zfs)jJ1XwM2a61$fTZSXopU5S4l;`5A@R#c=7?U?1DWKbu>+7;? zwZ2+L|J(Zd4_MXh>udU$Qr6eH#EvTMjWcD}ReryRUSDH?oqs+4m-Us`$L~T@0^T-n zTVO@I){0j9$T?9U)`Q^X76=SZn83QSE=bS`e*m;?#6|kX8e5+VIMA%VYF=9w#@Jxs z=rk)@{9FV@-M&VJxa7YxZYNG$z{nxRVb<|xa)kH}FNBeLj-zs$3#vEI;F#7B0qZ?q z7Rxc@7U@*{cx!WR zM%j@3Y7#%ZiwoY?Iwlnl4fnRWTgMPt3Qa(~mN@eu5uW$kXx?wnQcn&fEbA_@71!!Y zL~#&8fuoZ0-f$mmjs;ryMVZFn&kT$28z--TN=jH1)u-f>5$ ze{#3P<*$hR*2cL3y3LYw(>@RQ)xh=T%41K1TVOJ6rI1^Qj-#;MQsO-~+3Y%&bad`B zPvs;nI+eJ8M|=FOGHt!)LLGn@=^*+UwsLMYi|Z_0UNB~(~_WgsUTTb+dcT_vkmVz=1Y3Jef^5RGN89w3F}KOA6Sn2dO-L-aj<3&s;0 zA&8RFuqhMYMADtJWCu&ffi_T9YEbS%PAnMpk}l3|l#=dqY{Up0YOj`-iO9&b{8fJX zLu%RuH9n6bRlcjnM?|SS0P;^T4U9!0jE$N)s^kG}w8fKL#8omcq2i&)Z5 zJ&wWO7{OG?te}{NG^wfw&Q%G-K@M2?O_snLC8=1(2DMbBaD%i!TtF#(bP@upmW4c( zpH>hg_jIEWSY3Zai3TW(EK$0#aoKpDx1ExgN9;4LsZ<@yd4uC&q$L>EfwB_@ptwXs zoNR%@KnxZ|SS#v5(2AP9Q_t}m=Tw`HVwv<#g{-L8S7IdF@QccUDpy+3j8{<`2P>m@ z0PSy77K!#3%rp_1yfoJnHA8~-!%Dv!?4uAmdcMSS+j3ZPzj+3f!TlyWpi(qwF?h#$ z0%>x`2~`J%;+WZ)7iOP+H3yr`E{M6B6KP7Xg008ZoM=;eW0^VGl)g+RrJ2%uGbtB& z{tDv{>`Zrt^9S~%3-LpFpi0YwaS`8!hG!A!OA*V7r~t7Nhs>tewt6cdNzq?cEue?a zI^RW+e)=fMd={OSGYIrj6*~Jw_$}FDT11CK=J_+jc*20Oq7xAuztkL=PpYZ>-A2fm zo`iL*$ds}R^d8k*)wPs$VSpm@yZGmm+0!4>5OLBSeA2#DcgKj1SYi?#;cL0;RD*L^ zimhC_#qI|%`&kM2ZdbFrj3udPUY6mm8tZ-*@Fe(tMmyGzlpH%c3z8+{dl~T`$avG@ z_2^IXU35&GFY8y8>A}t*hL>yb+^qPn{u{KM3oRt4ptY9eIl{y@Xh+=ugd{c50J{)1 zqN_v;h0aTQN1b6&@ii4XiyUCga#x)%X*wC)t3X&g`S;V)CR(8gLT49x13S%bs6>2o zzwG42U!$P6C8|;5%JP{g4;+qdP`!wy<8?@jSXvg9Lq3wmE#h{mNGe$uKgSx*0eQI| z$$hOW2-?+7fRFX1e*vDUgO=c2ceiO9TVB1=9IP;z8BVLy^D0e z{$W`kwfB9Ik)DLs1|s3$V;m3%qKQI6b@YQgr8K3JKLqI?Ug%!v^Oga^l8-WTqM4cH z4u8(uvikHEs7F5S{Btp1yUuDMZFiv=f>ZX=+kciGu99rVoLu4uw*SSt6D}Gwe&J-*~h$C zUt|5XtWmXO*ooz8B>VZBL{X}vAb*KJ;8?J@UIOQ#9QegHmYjx?#`yzVwXXyCiJ=_- zRSqz9%NIIg{?&vvy4Qpk(yl`1Nt?)X=Azbgk3qjb4h{Z7&rz1(MMU><7a(C zz!v=yyU`A*=Z!{Zt9|HHb~{}0CF_0YvffvUmkSck$$$L&Hom=G zez~RlP3@<-i{T!IZu^GNYJEN6V!W@zRK;RSJt=CU1U7Bvq^+~7$E!=Z{wOyRe#Q@BJx$h$NcG$Tj?$FDX|RtBwZG_Nh9_)@)sRGi zlsFuM!$I^gEfrAXNjbFJu?O%zf<`hj6THfYh#Xm-t>^-uVoKL7tLXbPRbpG`;NHmT z>2*~-91>RYIMM?2huY$}_c82S;Zi=Rht>NbrPP1rr+=@%&X50(^~=%VB@5c)*xYz3 zjN<^A-yTOYO@;qUb(Cs<3_K4Kyr>1GGCJs9tFvv0eX!xZP417xk%P*z5F+E2xbt|g zY&a^-0xJvIxB!2owi^_7qXTA1hewqu+oAnjbEKEJbErAEKAWpi;1lwLIg@(^`Q`&f zg7c_qHL42KEzb7B@#ZQmZ<5~Fe-HNs$KW$8lIpJ78?ce?4q|pM^1}kL6=FQb-0CXp zKjFlah&eb9D0Mtc>91fZGz<$|KkC8P#vxJj&(H~*DdQ-R#l8W|)zKKF;CPI?=pFln z+U|ocf-QqMpXkAP$6f)05}Lr6((3^X_TMCR%>4^Ls^tUP4#b{8jrK2~j;kaZf9XXL zs;uoXX6H@rE-INa-T`!2W63F#E1rBy7S4DbvFf2kH7qaSTMx^qM=&fad(wBPPaOY( z2hoKh3iuM$V%A4`exVN|%3Oo43L*p1#N{pQ??x@qO|U!Mlfop9^HCk~0+K)#YFf-8 zX*Z57@Kw?KO#qQE=G_wCL;GLM5iZ^smlzZi>e7HWI@jlIg;YJ>7%!z?%H)ZW6z?_$ zH!vMrFp=9szSBGhvsm-nLUX?qyfFh!0|qn5%7?Tw2y=q7p*KnYQ>@OQ?fYy=jqGC$ zqOFay9nNusQq4mQs~pfPw6fsG%9O0=oBK;L@qDb;%*m*xt_}NSELD?YBvzxaC0{_O|x7C8?EYzgows4{7n^owQ%Q4{OE^ zM*qod+*P~~n`iVxgm9EoOAJi;aXgC^8ohB%%G}$@wa?M>lKsteJPK7FV+(PpRQ_s|Z&_-2b06h&HbU&dU>TFAuIsS#_;q@{h5jT@ zoPG_bmxmpZ-Dw+dQ0O46vgXWW@CB?IvyyNQOSL=tWusg7p!lq-GO^`U*6TY|Z%Pz1 zv~PeeTEkQmF3jyuLb!5X_szzlS%9g6XME6A+aPQ3j5u!RkhrUgj=hF_g!_teqc1MQ z@)8v|qLB{_T708QI!`F4;L4~)40wISANE~I+NfmsXCaU>S{+Al@R z>{T+8kjm*J*JIQ!ijc@EC)K~ikktK~c%|hfpKD9|-PpX?yJogQnfd=LM+J_pX6Fqb zs%c9g^KaY@J%-~etGg_#Y>dmZnEyqgb+Vnu+j0CPw4nEVWZ`PMa9tEOWlZFha#xo& zK80ICaD&s7K8SJiag`7HG_1PSz3PQtLhQ8bUbi1L;bkd>iI5KPMdWMB!;3I zFvKcVP0erjD`_Z$2M4NPII$E$c9QFnJ4422JA~EUd%Cr4-|4d-n0GI(^i0CoO;S0% zx#!py%t(G9%Vh#iNd9-3#1$ONZy&?<85Sj%r7Y*17ZqYpa`(q$2hevrXW^@xyHf-( zvsg#;jdtyOpi{J?IS^}#0mj{|{9(kDXyA!+ z*^|(x$Rjdw5rhvh%pDe!g6_mif;<`_NgHQc<k~{KbY)x2a$SpdIlot;01#|W zSp*rLV)^2euLChHwvXVwFJ!jL`&yAA1rrt^H~1%g9~JSL#T^rqze;@QWfLJ^`P;|q zpTX^G6!?bd!~O02bJIb@LHsK{hBt%IjadI4!?n~hR(D4rAuV5S#vOr=czNn-s%nXe z$ZxFZ&-DkJ)FhX?B5naFgiKd*Up1WQG10r7_G`0$X7h0$h%o#|K8~t5?jag}(KJW= zDx|U@FkX~W^wOrz7V}%_@l^0X0tf^6EC_=N6+zPubehKFNrlIc!~>Hc05OQ*{rhFg z2fe%#z+Xz24^;ZCQqwX2G5;V_qFAPV9EIUdBia{Q&Bxa!u zh)uqojQyfH^Fh`>rC3H3Z^Zh0-d;cH$=F6Jod~R9+QkGB4HgkDkkHc=ZVm}4i=}fX z>Q3dM*+Fbp*x9`BQ?Cri*e8~O1<2L$2oB$Y3FB5aM+<1|mCmgnN@OM?wBlN)HDjl} zti{!k7dJVv>lrU>rJy!+L{lw=2hImca4Tb#JP}<}%M+&b7XeFjXyTVCOz9^P6D(J} zCD;F}mY8ax_Qe=+ z@<}Pil+LxOJ!KeEhI}Fn!xFiQ5{oH)9INr*TW%uq`}pCDy5|Yt7(_5w{fG@Y2BGJQ z$qyiby_Qh~IPAw{3g%FjLMH^a1d7`x#zTq&>xrd$ikxZ)$|EcFRv(J&a|89k{0nPU9q$Vd;VLnm=~3sp3^-XCOpR40|evT21O51Wq| zFRcbSE|OHd`;apLpF)p!1EK)mKd7LtHHgA1G+!bBn$loUj5~eCC#69zHR@`;qYPL! z#1V$IehE0GRLfwuKsj~;4mo(`1xNHIQo`FU{zI;fMw8j}rPVY|*nbo28u@9^{$Mcu zl`7X3Vz(R$`9Y~Ra%hhgEd17`@atBBD{@kBor%#?kIbc^8&vzfeAr3#kDSk#$zsX| ztp~Hm;u2l7A>Tj-#Vxdccs81tUua6X!hSb6Ifc^(hz2J=5?HB1JkP-G$=pVMdX<_4 z*o=wlMiocS@KTY_aRwEj*TtvngB56Uy`sD%8to=ykcSY{aS%qj!3vy9>jN~BA|R#+ z^!c#E6M4J*d2P(A_6#vWdBGn-#8=Ea>k&Lz$D-<97FlOWe(!%e4gfFnxMCI4)&Fy&5M73SR#ExiSKhIzP-i1As=oE zNiKJnc&DWjZK}#1<0`4w8C-B|Sf(=izd3Sv+P~(j1p6xd4rC0_7naUMZ=(brjB0r# z(VJ7^yJY&Q66wx|ikClF;=9pi@J;{wxQX80TY|o!xp(F!3LnaVkkFZI3cFXW@9ueH zz0TIb^^Yxq@9pWGis3ibTO8l9Uf$pH<0IjZ74!ZB{)p@#d~?ToUkPfDdtS8nRD7U5 zeiz60_Vo9QwI|wJ9N%c~D?#{UywN|=;uzve@1JOI4s6u@?a7VyUJk<74e6(rI~20F z<$*Geiktuq_+nW_3m#fkbYOK)#*TGHg!lSowGQa--S`fgfaFJ<|CBi^;bBlz)tpt~ zK663VA-O6hEQl=^GQ`{QN}+tOa$bb^ek=A~f5`O)v=$+zomAKIApcUfO?CaiDy4*r zX%-}`K>9=kypyz!kuEfT!6d|8P*eJM_+j1vF6qPcA82f>FMcZzd0;_r<+Sc(&JCk2 zM2KfVXnq}oU-GsWu6&iTk2X7zYKXj7*O5`qsj8&Y2(UbNWZN1s_We=-mN>&A zD+f5$t1(s?GL@SEG2>`S`MQtXF+)#Kzm;(zJsQoF+s47@bwh(?vAPBTr%pH(%eLbk z`#e6EZl~Tr%F>EoAv&u*3&U=xrFzlJb-B=&|Etko=1e}6lV!%Ajc?(PmT%ujX0i8S zsQR#MCGs%^&|i%h%EGq~BIvsvRUf zDEt+?y2u|(c-1WKE@9jgS0LhPXscgu5uCp|@+X$S@4wo^{K@~1`K@=7-!(1L=vRY3 zcZt;Nj)8Af@VB{7)_Z8urlt4;Ivb0%P<;EBrc>o60Bh8v*a?ao-(wDELdwRL1Tz5G zn9}FsOV4GoTW0ve$RK?wJSnzAHIJ8@jYvK!Y`3L)UX4jZ4778b!VrqMNrkBTd;COl z3-K5ndZfD2V@O&oP}7{79zzvBS%&EgST6H*K6B; z%4(=l`3w9F%2xi06yxzr2~t@*P!g?wnuVHNq(!l+|3k#zUUw&En~1u-cJP3}{E+=i zo$WysGxwE*rQS}HN0Apzn-{PRcMoE@W!4u}%Vo@b}5m%S{O zUj_`xe)6);0LwwBWZ?Z^0@P`Hs}>acmXtRCC9Ua}$sIUFgMj=J>~Bh1GsE3Sem#}0 zIQm0G(zVqFk2CgogXfoFt8!-J-e95l2q!WI*Bokdjg3mBrx9$i=6)s5rK{n3usZ9< z0g|fMoLL!kqQ>oQG)2>dyBWsq`v-YmqRyXDb8u;MW_YRPdb8X-l*@nRHh!v>*_vEt zqh((N@iVTc-a?qg8sjOyKYq>sO?pupqRP$=bXlq1VyAGL2DBw*`_s#mo?h~OcPunf zSs$Po>VY}jBxwrdPhP<82}D;pm-TYHAI1Go=Ewf_zK&?!Pa{x7u7Ki&I7q12T1Vvn zpye0H7CqHA4k|svh@v{$2o5Rrp+Wvi++`_(B(ZN|a_NsIMD`H8tH@It|GVy54-B1T zgt!mpA^H1_bsOJ#umjBBEWeHUbvyjtuigQC$OU%-|KoMV;g2Z}KW?Y@Pwege_{ja% zDX;+^5LLm<#-YM`8=>zyP%<+q5sAz8iIW3L|~s^UR#s~cWbz~(=UlGMH# z*a#P}0HfXl;hR-G4R|oHkW<#L7dB;Z)^pC=To;41e6UB5`dwU}*(Q=v5id*NJQ7C4 zAP%ENv`_f|SbG!rDvRs?KY^f8!5aiMC~CB^MMWhFm54~LByyvnQWZr(rJ_iyR@56o zWeMI~<>@7Wb#L9Ot>RL(txJr`4gpuh4Yd_qnWqtP4Y-m2`!n-AcLVJA_j>(#y~urL zJ2P|U%$YN1&YWRw0m+li?QAzxY0s}X2jIh{t<6~0iUrbo?qROsO#26c4 z!z&1@Qw8*Zj(q!u?TCur`6xFEk07Th2Q)GE?wQ$fb^83sjUVb!5sj|QIISwm&8*p^ zt0G4N3i>hc!tfc-;i%t^`ALKhn5Rs8avGvswiqwZ^KxBaIRU z)YO~UENHp?k-=s$VzsR+FA58oR#M%a!kHRF4SmJC+#fn@ytQXtBVxQX*w;BzktZH- z<3E+`!T3*mU4V~k>VKr!leUK=f8iWE@;vX1zW@M%u+2{jVRkvY_>nCgZF@lHYUJl% z*s+q9D9J3zrHJ}pIcmr?oCXf|s{+gK-M|I>Z5i;p3j9;b(~~?wod*HC?H+U4DxI&{ z@xbA#o4HZ|nQ!k?-zFajMpz9@Aqzs}I(D44jlF?r4gZ!;87BImvDwSq%H{ zwJle_qHT`d-=*RG2|ve7)Z}H5U8-~2tYDnd>1WDqGMnW_8ik1DY74lIe=(J2F|+_5 zqDd+389Kyfp6>n1oC=4wdi#a(DXsEx3^vd(k193~Vi+K)`j5nEwrIaKq}P8DUwZv7 zLu8n9knCr~E)Yjte_LzFTS3mv~w`8zvnq~2eqC4N)8D7+X5%a?(c(8 zZMyY;hxMfUdp9X+cPSNbx4#!cZ6JsKUP|_y{;uQI+i3IU>Hbck6=8ob-;e&@)#s=B z`xlCDyT7dGmiag@!-3f$N2}UvTuAroQs-N}P~*eYUE7M1QbUVwc8TeVYulLjwp}{t z8%7FRzuyE~nkLCZDZoKGE4;29W3mPQ*v4L7+yZr4WQ;ya{2-FtTRAzA_?~BX5fHSa zvQ9ST2*lFS$xw;KYnrcf#KH^8GD_*%Ha%FEtpK2QCz#c!TrRLhkQiA7KV(ulnD+^{!kR9<>+*qbyqFFiNxO`4FGo*VWiP0UNr4SSO& z=cVU{6B`@+ak!ZX$4}v*=VZdxv@Js)=u`H9YFRpu+}mAVT`)pniLqne5A`bXeZmVN z-N+@rHumYwh$uyz(gt=VZdXgws?eV74TzQ~f9BuKpOA08x)*$F{m;VvY|GC`qv94t zk6nwR@TnXIZRK6yQFCm+#N5$i~Oud)nu@4IlSliaCm0 zu1F5GM^td~g{2$YL~eHO)oX`>%=lPtt6LIF{)%A5nR3(NDkUDQ{Spb!lfbV|vxmIC z85bB@e4l_7nsuv0f4YN;7hodlJdBpH05a>BU_>WdAbC|u)!+$YU}{8BbVdhOV+D~p zm(%dN)QIB5cY9-ZM#1rsOS)Z-o0iByb>&qxXv1dzNNlueI?_bN>b4!MeEK;nN8*#t z)u}O$ljq&|o?IpG->JIkxWdHZqQqxqRSjFtjz*4Oh3omkSmoyWm#Uji-MLduQ~$l9 zGq$*jr&F=ICM{#6vAeC~3eM#br0UAc@RRMD-`o^9%RVQ}?>a+|%3_^I6)*36c&zE_ zLht!H?`4%NHSMjRfFpHy+{#$tqUD8y)opyX;{k4RF+G}g8CRlpF3eq(24+jaqVI|l z??<9fkC{x963dHX<5rKa_I~w)?#K6>dD<5JcAa?|;`#{O9W0C=!PQh2`@{zz;M5yI z!0I^9KJ?tNy6J><-mB5Xw`Wg!cqV&VJaoGf^)D~S^8;??YRA3j?~y*|*P7NRmKs?Q z-mNw*`f<_SVks^6mJ@#)XlCc!6Hs z8X9eyq;BmJu6Hyu+Hefk0_Zi=+SckDtAGU^j$l+iuU`xLt9Gd_ujYRYCzn(T+14qG z27bHNqZjabrO&eGWUHBo@> zue|;@?8l z78Hk^(()ihV1?HJvo3W(vFZ8_J}_|Z_gHj!QF%ez1JP#I^#cD2uu4sBw*~g-Q6h61 z6;-2#&?tXAS!3hi1J=L6ncBb&5_DvnbC!P60o>jN{;wqMV9GqO?T@xGEdv1fjNQXG z4fqD<=_10}I=Bvfp6FYrIpg*y$15RPHaSI4^x|2xbyXsJCYCm(&-Bx${ z3vq{q2ejv&_X;#wgCT zFU}zBPe6&KMwPbwT;OP~=;5UvI}|u|ra5?x7R{mTMp4UgqGOM$Mu2g3Z}96@YL$@u z!5=KTeyQkB)<}4_z5cm+-R{!%lJ=#{-jT5=o#T4FEA0&WeK8Ho?l=0|{b*4OC@q+; zbC|HdeQBV1WpDbsEK2~$od3z*u8%+anV+)9>*LRF*=BlbSk8JI+7p_)M77pzQLD?P z*lc3k!^oaF9mA?E@vGTtM3Rrv%CwK!F<(OdEhp_GuxR;svXS@#iPi^MZp+7zJvcOOAS3xNcKQFT{HiB6e_!SA z4&H)w#K}{;f4s0;L8=p|O6NW4?2I0ba1ph?kJ7JfA4oPTp(MNqbCt>(*@m=kntaAIId{XjdBnz}vrNmu64 zCl#>o5hy-;mdD1Gm{R;hww1blUFvdnf=h~UTzrQeXWGHKjWRtnTHeuZ6qlIQ&xQIa zNWY(dLstKs{YF2tmN+d+`SvYg`U06D{Y3g*vbowiU8?LioDsAnZ+l=O2My~!?wV~( z;jqXZ1k55pBl6gAAND)#a9M6zQga$_%tTBQw8e07-m*jpZyGQd)~sv47rzEGf)NP; zMb03i8we;#--R_VJe#9(*Z8+Q3=schKnDCF?C&ev?vLBgw#y@jqp$q^C zw*xP&@Qv|M%sU!_4EG=3pc#~fy7tW+X?MiCm~$`3>!){NjOM!A1P!#x!Kb)??^Hii zANEj*l`stnV|8fBhJ%s+%)qCev|S4WnY6br(H(f z(he|sTnU97>t9!1lwW~9%?wo*r;bpHoq40Tdta3MrioU!Ns3i&s^5vOyZP%6;-V7m z4$r&7_Hu64+Rs1iv2F5Ony&Pizw0*B-BFy7S$R}^Um+Hab>e2Ol5t+ljKaKQka^8s zd_6?-bVESky6>7@|3Lo{(LgYdXmWK1pQ^vgpZ$~RBmCJM@o!z;;!5Yk3mGM*hxMS8 zbw11x`Hz34F$wrpYFO@mEHx~5|MkDpEnO{`No{6KD>rnYD9m5q=bBKsU(MA&q=x0{ z3j+Ebm8Rd+u(2_(Q%JwDrab)%`HNCJI%4mFsfgD}hSq!)dxfcCU57IUJ4C$#J`?K- zvro|7eDjX-PA~FKVuLoUYj$dgkLYQ`(^pkF2ehnIV?LkJuorvG74H=CkOL+WI?;H0&{Ajjlt?js z3wT?xfgdW(VPdD+nTtLk$mQ8Cn!^^WNv)>+!*>0uisi;z(B83VT_-Q0#sj7(vAHU~ z^PzVm(sFb#>2D51r?%V8f~Vkx>8nN=dQZW<_DB^R(#g#at_N4F25Dbegrgm_nw(B= z7s^z%exJn0MfIiaiTA0k%svDVsa`CS)7kc1eKfNJ$1D}{3Fw>oJZvO%!fG&&`-}5B z*;|1v3&{pApShFNF897<^-I98?SfC1v@CELE+B(Rklwa(oAwxiy+z&JMu5xx|8TCpi=qqyq%WOn-B9v-TR{vF+g5 zAS>P$R`=r#s&4A_L9=!Z;9U#6>dJNXugWT*f#U3Emlem42rjni#BLnMjvAhQX&d7c zZNJtIP<+?)$$`CMIob|RSUcn88ke;7Mw-sij7X^~HxMI??Bco-Z?-M1e`Oo?b*Ot2 zAFTIvzuEE|g`Y3=e-nmdsV?U?BOrN$&*mq4#)tZ}!3TEUl?j6?+>+X+KTU|*b@-^5qApZcl`b8h;sY)dGTW#1xx8a+Mn$(G^XD}hS^XE2MstoK#o z1;lkdImsmwb3Nlv#rOjQE=Y_LW*^;NRn)0|RLjjoGWk=~qaER?_evL6<1|~t5O1QX z`Xb8|qu#{@HC}yb;u8*IYKnLIYPdJGEb5(QPehzp5|A^uc%bLWB`uoXz&>1kIB_L> z<9a&l#4p=tDkpCK;m5x*<*D;HZ&Cd;k=*R@u{%u$dnfxn}k9*lt1%16G@N2rBrEt>?&)%sU0e!1N0sn0p{JzZTewZ!$$9byB z>oUDVv)DS0P7a{y{_*??=}7hXirsquZRL}}QI+QT3W0qBu(8%I2NR`#BC?G9#Y#cI zjhB_zcwQ&u0}AKceAdijdEtlh=ypY%u8NCtLTI#655z6fK5|Ns1v z#U5u@gTVEF^+%T5pVPAas|D`Wo}3wWXX;U?m~l&kr;D{_0nzByZ~|+cBxIbaWi~}o z>xb>*`j@mMjID$31n3<#%>?0L$VU7?dkuI@YAmiON7z+mGhy7MX2|NE;d=eQA1Uux2$s6 z^c|8L@Nu_6o07vY>I#%H7o>e5nSnT_l6-CbM2*dOK+E=rWG=tf+Al&E^>P+t8jlhVA>*{RX5;~c@dZtITnIs5oP_K5a8<@{@~;rm$Q*(@mNx5oh> zbh|b`4cSZqB%AvIKx}&=kgtXB?fF~l+F5F-jpkJC)c^1P*5Z3|pRCuyt{vX6z|

    c*M2xXTvV#A7fgl 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 hQ~3{~eL(dS#(Nx@?yd`ySAzXfT<v?&ip&Win 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 z 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%0D?QJ1rkGGnsX!dU3DwnAe@y$ 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 c|E;Ug*1wli6A1)SMFR1CxZ3d@W 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%0Dnss&VQ&c=!!2S<{E(rJgf5Vc zUx5E=JYf&=tZ*Q~@`cZo$du=x1mCakCepkIaKT8{ht|I8m1@qSNUTOiv2<{jY$jNB zorKrf7n(-t*FE0-e)QOW_>Ua5`{~5Wx>8>k?sa_~P!^vS9srBMFROE9hI6Tu5#hMOj7fTxB(xUb)m72Ynu;l}x8Ec%eUZb>aw5BDfQIQ6y>{0tJo{HcOxO&93u&|(*| zoLK>f`&5pnrG=@A?EWdhbH<>*W}3zL?xf2JM0EZ#^+M|KrtEa;6kJ15`Z`D+pe|W1 z+d3KkAC)EUCo7q>;n3zYk)f|JposuH6EPTYkU~`o$;AvqrS8^{2d>17+~fzlVQ|q9 z+af^S0((?lyiAkkRYbrx}cdA#0u- zwR>iF(1o-jlWv45n_!SPos5)~l{@h*R$EhGE#-fJaaN~pW_BN{4Z8ad&md@YE147F zs58m-ywmhX0Rn|5^dOg`y1Yj)NbO+e%D;AuENVkC{g4Ee!a~c+#53X3Ba)%s2{_IG zle6uDj{D9`nhVqA)gj{>Gw1RcVWLyp zbE;}=`SkBSK%)SFg6-yJ(bnmc*pm9+`J8(DE61mEXDjV?u~MqfG=!mTR)z1&yrahR zT8ISI*ztS#5pSSGr4M%P*O=qlxEsgji3k}V_~SA%r95$;5#CTKuvC6KUhDU(sGv2L z$HnSkz&FZaRhF!@&?%Z4Kc4mVJ?+JOES+cgO@eMJn*3kf0zzT0ex2;U}R<%U*a?KME>J22psWv+{@^1MGXUzg zNUlXOn+bi{-LG8LKv62853_EXjuuWagHeLQl7h9n>gdgo~}W_>ghU}DE;GTt;W zHpq^*6K3(wUwS(JV%BoD8-PQKJ`)w>9D4|G3vRRi2azKoS4hUGqo~IjiHb=QC5X}y zrKp|`r*ZzTi0-ExJ0~Z8d6MmSbY;CpK_%IXA#E1ay|g}X744O%FSnw$WmcW#fuIFj&H&W8C|bdqbjH^w-F&|24M+Te1#3@e z$IM;TW`i_xHLE#f8E3u!6+|EyDzCg)l-n3kRS{~$9q!`bb#w8dgY?Tlmh^W;VT&4! z4E)l53mzEKm8DEu)}26$z)|Qe* z-tdNw6Nbb}n>8ns3lqrimUNee3BaH-{=?&vF6dOf!XxWT0`*!84Omb`=K<6g0NV}J zE}-5x^sye$@S|%X485*|enK`+E=H~+k+}w}hJPu_`{~}>kp6GH+dN1;ZU$&cyF-ng z#9u|rcPQXB(X=J9MQyZ+QzkQ*gGHV7t@)=}wr;2;rSIzJsqS%PL!t~~sx z5t8&phQtz`Iw+v z&4G4=2+*rpEjx<&*_GalyOQrU!#+lH^E(N@A}gE^aGDklOQ#x^n73L$27&afrsk{i z+J_in%fV;8FK-4RuXC8;KYAB`M9UrBV6!Y(Ac_QZR+}bKVXy~KQ-d)=S+g_x{=BV! znVW|3s)g~pzzmU%8V`@3{$eXNuFQ-H<0+QWzJDdw1Mo~!ty@-RXquzM2XWp>g1h&c zE0)ht_5k+_C*Ae-#mK!Xq6RENKcM)`9c0hEw8UfHYtyu0-@S8CG{Yc826LP6`=%@G zk}|0uPaZgUD$;x%iTQB6?+JI)YF43(OCuYxFYJWnS;ZhDygv#<9H0xvxZX|J%uG+O2ZwDttCg#vYEYkiHMV8l;|Ark zLSIegKKg9m8CcQw#*`e+Fp$&hqkQE*SD7v%3Y0JYITq&n(6#xrh+(9t!??FnuaLpu z8F&OMaRdV|W4=K3f;$^)-fbR+hl0Z~mmuBU&S7Mk_P)RDH&ly~DcZ$*O~tRcPD@HF zH8AxVo-)`j!5RM1VX&$NSQXh0PRdRYgXZQ}=#3M!Z-rU%gUC0kqUFeU27)17gji>r z%$)oiC@-wYmXRh#LMv!juz4P_o02T+X8_bDeac0bRq84raC{&XI6ys5^*SF4Hj!$UAj-5v~X3x@6P_`uQDno=TpxujvN1=$UDXbmx9>X-mA$ zU15|PM?pAWF3&6B&7+uc_X%bGUt&w1k%%>-W&$0_lMES9OOR7JiD6c%fwrTRK2;p(97%ImFjg}mXBs&}bu0%mGuV{A}jgM;rDPa*v%j#6e@ zZ;!r>7rE7$_c_tLqC?jTfa*f{I8&7eZ?}BG7Kq5VS>AS0FOtwe{n;(bo{cE3NWlu= zcANqW#nJhLkcOn|Tx4bVm^j7G?{CA1wl9i6RZ>R=brwdP|2$}y!}|~sd%6V7t-8<{`5J89Avg4z7kU$Djc1a@=uu zLUvSWvW;ECT!#3uY-isjKx!);ybUFNo*caxh1zGBw}0$D8mE zoj1MNSTh-+BT-+cTA6+-{e?Uxt;~K0GJ7OiYfEuX%8SGUCUyd74WS9(E~J8p1zN<* zF`ZW04FCkZ2g)Dco*8?<6K0fgs4hqlkUV9 z2PXc8@y5Ep#62@XO~ml1ZQ%wMEy-Of^-9LljF?sEjnFY)#|6>K(sJg|%VK$~U|Ez| zNS=`wr=YA#H9o9LjbMP>a^n>VD!t5_L@hO|i zSPN}?Gm!-+YDm7U2&F1y^{y(A@hv~7{}+