From b03f3281d78ad2ff56527af3196617f203a0de52 Mon Sep 17 00:00:00 2001 From: stellarbears Date: Mon, 12 Nov 2018 11:28:55 +0300 Subject: [PATCH] Added deps folder --- YaraSharp/NuGet.Config | 9 + dependencies/NuGet.Config | 9 + .../YARA.Jansson.x64.1.1.0/include/jansson.h | 311 ++ .../include/jansson_config.h | 68 + .../YARA.Jansson.x64.1.1.0/lib/jansson.lib | Bin 0 -> 159996 bytes .../YARA.Jansson.x86.1.1.0/include/jansson.h | 311 ++ .../include/jansson_config.h | 68 + .../YARA.Jansson.x86.1.1.0/lib/jansson.lib | Bin 0 -> 98736 bytes .../include/openssl/__DECC_INCLUDE_EPILOGUE.H | 16 + .../include/openssl/__DECC_INCLUDE_PROLOGUE.H | 20 + .../include/openssl/aes.h | 92 + .../include/openssl/asn1.h | 1099 ++++ .../include/openssl/asn1_mac.h | 10 + .../include/openssl/asn1t.h | 929 ++++ .../include/openssl/async.h | 98 + .../include/openssl/bio.h | 850 +++ .../include/openssl/blowfish.h | 61 + .../include/openssl/bn.h | 575 +++ .../include/openssl/buffer.h | 76 + .../include/openssl/camellia.h | 83 + .../include/openssl/cast.h | 53 + .../include/openssl/cmac.h | 41 + .../include/openssl/cms.h | 512 ++ .../include/openssl/comp.h | 72 + .../include/openssl/conf.h | 217 + .../include/openssl/conf_api.h | 40 + .../include/openssl/crypto.h | 463 ++ .../include/openssl/ct.h | 533 ++ .../include/openssl/des.h | 174 + .../include/openssl/dh.h | 361 ++ .../include/openssl/dsa.h | 283 + .../include/openssl/dtls1.h | 56 + .../include/openssl/e_os2.h | 298 ++ .../include/openssl/ebcdic.h | 33 + .../include/openssl/ec.h | 1576 ++++++ .../include/openssl/ecdh.h | 10 + .../include/openssl/ecdsa.h | 10 + .../include/openssl/engine.h | 840 +++ .../include/openssl/err.h | 260 + .../include/openssl/evp.h | 1590 ++++++ .../include/openssl/hmac.h | 49 + .../include/openssl/idea.h | 64 + .../include/openssl/kdf.h | 75 + .../include/openssl/lhash.h | 217 + .../include/openssl/md2.h | 44 + .../include/openssl/md4.h | 51 + .../include/openssl/md5.h | 50 + .../include/openssl/mdc2.h | 42 + .../include/openssl/modes.h | 203 + .../include/openssl/obj_mac.h | 4577 +++++++++++++++++ .../include/openssl/objects.h | 1097 ++++ .../include/openssl/ocsp.h | 412 ++ .../include/openssl/opensslconf.h | 175 + .../include/openssl/opensslv.h | 105 + .../include/openssl/ossl_typ.h | 190 + .../include/openssl/pem.h | 501 ++ .../include/openssl/pem2.h | 20 + .../include/openssl/pkcs12.h | 282 + .../include/openssl/pkcs7.h | 404 ++ .../include/openssl/rand.h | 89 + .../include/openssl/rc2.h | 51 + .../include/openssl/rc4.h | 36 + .../include/openssl/rc5.h | 63 + .../include/openssl/ripemd.h | 47 + .../include/openssl/rsa.h | 590 +++ .../include/openssl/safestack.h | 164 + .../include/openssl/seed.h | 98 + .../include/openssl/sha.h | 119 + .../include/openssl/srp.h | 131 + .../include/openssl/srtp.h | 50 + .../include/openssl/ssl.h | 2548 +++++++++ .../include/openssl/ssl2.h | 24 + .../include/openssl/ssl3.h | 310 ++ .../include/openssl/stack.h | 78 + .../include/openssl/symhacks.h | 52 + .../include/openssl/tls1.h | 972 ++++ .../include/openssl/ts.h | 643 +++ .../include/openssl/txt_db.h | 57 + .../include/openssl/ui.h | 378 ++ .../include/openssl/whrlpool.h | 48 + .../include/openssl/x509.h | 1123 ++++ .../include/openssl/x509_vfy.h | 544 ++ .../include/openssl/x509v3.h | 1006 ++++ .../YARA.OpenSSL.x64.1.1.0/lib/libcrypto.lib | Bin 0 -> 17119004 bytes .../YARA.OpenSSL.x64.1.1.0/lib/libssl.lib | Bin 0 -> 2768086 bytes .../include/openssl/__DECC_INCLUDE_EPILOGUE.H | 16 + .../include/openssl/__DECC_INCLUDE_PROLOGUE.H | 20 + .../include/openssl/aes.h | 92 + .../include/openssl/asn1.h | 1099 ++++ .../include/openssl/asn1_mac.h | 10 + .../include/openssl/asn1t.h | 929 ++++ .../include/openssl/async.h | 98 + .../include/openssl/bio.h | 850 +++ .../include/openssl/blowfish.h | 61 + .../include/openssl/bn.h | 575 +++ .../include/openssl/buffer.h | 76 + .../include/openssl/camellia.h | 83 + .../include/openssl/cast.h | 53 + .../include/openssl/cmac.h | 41 + .../include/openssl/cms.h | 512 ++ .../include/openssl/comp.h | 72 + .../include/openssl/conf.h | 217 + .../include/openssl/conf_api.h | 40 + .../include/openssl/crypto.h | 463 ++ .../include/openssl/ct.h | 533 ++ .../include/openssl/des.h | 174 + .../include/openssl/dh.h | 361 ++ .../include/openssl/dsa.h | 283 + .../include/openssl/dtls1.h | 56 + .../include/openssl/e_os2.h | 298 ++ .../include/openssl/ebcdic.h | 33 + .../include/openssl/ec.h | 1576 ++++++ .../include/openssl/ecdh.h | 10 + .../include/openssl/ecdsa.h | 10 + .../include/openssl/engine.h | 840 +++ .../include/openssl/err.h | 260 + .../include/openssl/evp.h | 1590 ++++++ .../include/openssl/hmac.h | 49 + .../include/openssl/idea.h | 64 + .../include/openssl/kdf.h | 75 + .../include/openssl/lhash.h | 217 + .../include/openssl/md2.h | 44 + .../include/openssl/md4.h | 51 + .../include/openssl/md5.h | 50 + .../include/openssl/mdc2.h | 42 + .../include/openssl/modes.h | 203 + .../include/openssl/obj_mac.h | 4577 +++++++++++++++++ .../include/openssl/objects.h | 1097 ++++ .../include/openssl/ocsp.h | 412 ++ .../include/openssl/opensslconf.h | 175 + .../include/openssl/opensslv.h | 105 + .../include/openssl/ossl_typ.h | 190 + .../include/openssl/pem.h | 501 ++ .../include/openssl/pem2.h | 20 + .../include/openssl/pkcs12.h | 282 + .../include/openssl/pkcs7.h | 404 ++ .../include/openssl/rand.h | 89 + .../include/openssl/rc2.h | 51 + .../include/openssl/rc4.h | 36 + .../include/openssl/rc5.h | 63 + .../include/openssl/ripemd.h | 47 + .../include/openssl/rsa.h | 590 +++ .../include/openssl/safestack.h | 164 + .../include/openssl/seed.h | 98 + .../include/openssl/sha.h | 119 + .../include/openssl/srp.h | 131 + .../include/openssl/srtp.h | 50 + .../include/openssl/ssl.h | 2548 +++++++++ .../include/openssl/ssl2.h | 24 + .../include/openssl/ssl3.h | 310 ++ .../include/openssl/stack.h | 78 + .../include/openssl/symhacks.h | 52 + .../include/openssl/tls1.h | 972 ++++ .../include/openssl/ts.h | 643 +++ .../include/openssl/txt_db.h | 57 + .../include/openssl/ui.h | 378 ++ .../include/openssl/whrlpool.h | 48 + .../include/openssl/x509.h | 1123 ++++ .../include/openssl/x509_vfy.h | 544 ++ .../include/openssl/x509v3.h | 1006 ++++ .../YARA.OpenSSL.x86.1.1.0/lib/libcrypto.lib | Bin 0 -> 15548658 bytes .../YARA.OpenSSL.x86.1.1.0/lib/libssl.lib | Bin 0 -> 2521098 bytes 162 files changed, 58996 insertions(+) create mode 100644 YaraSharp/NuGet.Config create mode 100644 dependencies/NuGet.Config create mode 100644 dependencies/YARA.Jansson.x64.1.1.0/include/jansson.h create mode 100644 dependencies/YARA.Jansson.x64.1.1.0/include/jansson_config.h create mode 100644 dependencies/YARA.Jansson.x64.1.1.0/lib/jansson.lib create mode 100644 dependencies/YARA.Jansson.x86.1.1.0/include/jansson.h create mode 100644 dependencies/YARA.Jansson.x86.1.1.0/include/jansson_config.h create mode 100644 dependencies/YARA.Jansson.x86.1.1.0/lib/jansson.lib create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/__DECC_INCLUDE_EPILOGUE.H create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/__DECC_INCLUDE_PROLOGUE.H create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/aes.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/asn1.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/asn1_mac.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/asn1t.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/async.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/bio.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/blowfish.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/bn.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/buffer.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/camellia.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/cast.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/cmac.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/cms.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/comp.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/conf.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/conf_api.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/crypto.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ct.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/des.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/dh.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/dsa.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/dtls1.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/e_os2.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ebcdic.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ec.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ecdh.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ecdsa.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/engine.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/err.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/evp.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/hmac.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/idea.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/kdf.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/lhash.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/md2.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/md4.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/md5.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/mdc2.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/modes.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/obj_mac.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/objects.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ocsp.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/opensslconf.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/opensslv.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ossl_typ.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pem.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pem2.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pkcs12.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pkcs7.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rand.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rc2.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rc4.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rc5.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ripemd.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rsa.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/safestack.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/seed.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/sha.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/srp.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/srtp.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ssl.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ssl2.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ssl3.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/stack.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/symhacks.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/tls1.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ts.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/txt_db.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ui.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/whrlpool.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/x509.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/x509_vfy.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/x509v3.h create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/lib/libcrypto.lib create mode 100644 dependencies/YARA.OpenSSL.x64.1.1.0/lib/libssl.lib create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/__DECC_INCLUDE_EPILOGUE.H create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/__DECC_INCLUDE_PROLOGUE.H create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/aes.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/asn1.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/asn1_mac.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/asn1t.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/async.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/bio.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/blowfish.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/bn.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/buffer.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/camellia.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/cast.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/cmac.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/cms.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/comp.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/conf.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/conf_api.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/crypto.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/ct.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/des.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/dh.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/dsa.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/dtls1.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/e_os2.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/ebcdic.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/ec.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/ecdh.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/ecdsa.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/engine.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/err.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/evp.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/hmac.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/idea.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/kdf.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/lhash.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/md2.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/md4.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/md5.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/mdc2.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/modes.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/obj_mac.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/objects.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/ocsp.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/opensslconf.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/opensslv.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/ossl_typ.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/pem.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/pem2.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/pkcs12.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/pkcs7.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/rand.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/rc2.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/rc4.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/rc5.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/ripemd.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/rsa.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/safestack.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/seed.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/sha.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/srp.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/srtp.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/ssl.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/ssl2.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/ssl3.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/stack.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/symhacks.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/tls1.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/ts.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/txt_db.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/ui.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/whrlpool.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/x509.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/x509_vfy.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/include/openssl/x509v3.h create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/lib/libcrypto.lib create mode 100644 dependencies/YARA.OpenSSL.x86.1.1.0/lib/libssl.lib diff --git a/YaraSharp/NuGet.Config b/YaraSharp/NuGet.Config new file mode 100644 index 0000000..c695e4f --- /dev/null +++ b/YaraSharp/NuGet.Config @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dependencies/NuGet.Config b/dependencies/NuGet.Config new file mode 100644 index 0000000..c695e4f --- /dev/null +++ b/dependencies/NuGet.Config @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dependencies/YARA.Jansson.x64.1.1.0/include/jansson.h b/dependencies/YARA.Jansson.x64.1.1.0/include/jansson.h new file mode 100644 index 0000000..591f2a9 --- /dev/null +++ b/dependencies/YARA.Jansson.x64.1.1.0/include/jansson.h @@ -0,0 +1,311 @@ +/* + * Copyright (c) 2009-2016 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#ifndef JANSSON_H +#define JANSSON_H + +#include +#include /* for size_t */ +#include + +#include "jansson_config.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* version */ + +#define JANSSON_MAJOR_VERSION 2 +#define JANSSON_MINOR_VERSION 9 +#define JANSSON_MICRO_VERSION 0 + +/* Micro version is omitted if it's 0 */ +#define JANSSON_VERSION "2.9" + +/* Version as a 3-byte hex number, e.g. 0x010201 == 1.2.1. Use this + for numeric comparisons, e.g. #if JANSSON_VERSION_HEX >= ... */ +#define JANSSON_VERSION_HEX ((JANSSON_MAJOR_VERSION << 16) | \ + (JANSSON_MINOR_VERSION << 8) | \ + (JANSSON_MICRO_VERSION << 0)) + + +/* types */ + +typedef enum { + JSON_OBJECT, + JSON_ARRAY, + JSON_STRING, + JSON_INTEGER, + JSON_REAL, + JSON_TRUE, + JSON_FALSE, + JSON_NULL +} json_type; + +typedef struct json_t { + json_type type; + size_t refcount; +} json_t; + +#ifndef JANSSON_USING_CMAKE /* disabled if using cmake */ +#if JSON_INTEGER_IS_LONG_LONG +#ifdef _WIN32 +#define JSON_INTEGER_FORMAT "I64d" +#else +#define JSON_INTEGER_FORMAT "lld" +#endif +typedef long long json_int_t; +#else +#define JSON_INTEGER_FORMAT "ld" +typedef long json_int_t; +#endif /* JSON_INTEGER_IS_LONG_LONG */ +#endif + +#define json_typeof(json) ((json)->type) +#define json_is_object(json) ((json) && json_typeof(json) == JSON_OBJECT) +#define json_is_array(json) ((json) && json_typeof(json) == JSON_ARRAY) +#define json_is_string(json) ((json) && json_typeof(json) == JSON_STRING) +#define json_is_integer(json) ((json) && json_typeof(json) == JSON_INTEGER) +#define json_is_real(json) ((json) && json_typeof(json) == JSON_REAL) +#define json_is_number(json) (json_is_integer(json) || json_is_real(json)) +#define json_is_true(json) ((json) && json_typeof(json) == JSON_TRUE) +#define json_is_false(json) ((json) && json_typeof(json) == JSON_FALSE) +#define json_boolean_value json_is_true +#define json_is_boolean(json) (json_is_true(json) || json_is_false(json)) +#define json_is_null(json) ((json) && json_typeof(json) == JSON_NULL) + +/* construction, destruction, reference counting */ + +json_t *json_object(void); +json_t *json_array(void); +json_t *json_string(const char *value); +json_t *json_stringn(const char *value, size_t len); +json_t *json_string_nocheck(const char *value); +json_t *json_stringn_nocheck(const char *value, size_t len); +json_t *json_integer(json_int_t value); +json_t *json_real(double value); +json_t *json_true(void); +json_t *json_false(void); +#define json_boolean(val) ((val) ? json_true() : json_false()) +json_t *json_null(void); + +static JSON_INLINE +json_t *json_incref(json_t *json) +{ + if(json && json->refcount != (size_t)-1) + ++json->refcount; + return json; +} + +/* do not call json_delete directly */ +void json_delete(json_t *json); + +static JSON_INLINE +void json_decref(json_t *json) +{ + if(json && json->refcount != (size_t)-1 && --json->refcount == 0) + json_delete(json); +} + +#if defined(__GNUC__) || defined(__clang__) +static JSON_INLINE +void json_decrefp(json_t **json) +{ + if(json) { + json_decref(*json); + *json = NULL; + } +} + +#define json_auto_t json_t __attribute__((cleanup(json_decrefp))) +#endif + + +/* error reporting */ + +#define JSON_ERROR_TEXT_LENGTH 160 +#define JSON_ERROR_SOURCE_LENGTH 80 + +typedef struct { + int line; + int column; + int position; + char source[JSON_ERROR_SOURCE_LENGTH]; + char text[JSON_ERROR_TEXT_LENGTH]; +} json_error_t; + + +/* getters, setters, manipulation */ + +void json_object_seed(size_t seed); +size_t json_object_size(const json_t *object); +json_t *json_object_get(const json_t *object, const char *key); +int json_object_set_new(json_t *object, const char *key, json_t *value); +int json_object_set_new_nocheck(json_t *object, const char *key, json_t *value); +int json_object_del(json_t *object, const char *key); +int json_object_clear(json_t *object); +int json_object_update(json_t *object, json_t *other); +int json_object_update_existing(json_t *object, json_t *other); +int json_object_update_missing(json_t *object, json_t *other); +void *json_object_iter(json_t *object); +void *json_object_iter_at(json_t *object, const char *key); +void *json_object_key_to_iter(const char *key); +void *json_object_iter_next(json_t *object, void *iter); +const char *json_object_iter_key(void *iter); +json_t *json_object_iter_value(void *iter); +int json_object_iter_set_new(json_t *object, void *iter, json_t *value); + +#define json_object_foreach(object, key, value) \ + for(key = json_object_iter_key(json_object_iter(object)); \ + key && (value = json_object_iter_value(json_object_key_to_iter(key))); \ + key = json_object_iter_key(json_object_iter_next(object, json_object_key_to_iter(key)))) + +#define json_object_foreach_safe(object, n, key, value) \ + for(key = json_object_iter_key(json_object_iter(object)), \ + n = json_object_iter_next(object, json_object_key_to_iter(key)); \ + key && (value = json_object_iter_value(json_object_key_to_iter(key))); \ + key = json_object_iter_key(n), \ + n = json_object_iter_next(object, json_object_key_to_iter(key))) + +#define json_array_foreach(array, index, value) \ + for(index = 0; \ + index < json_array_size(array) && (value = json_array_get(array, index)); \ + index++) + +static JSON_INLINE +int json_object_set(json_t *object, const char *key, json_t *value) +{ + return json_object_set_new(object, key, json_incref(value)); +} + +static JSON_INLINE +int json_object_set_nocheck(json_t *object, const char *key, json_t *value) +{ + return json_object_set_new_nocheck(object, key, json_incref(value)); +} + +static JSON_INLINE +int json_object_iter_set(json_t *object, void *iter, json_t *value) +{ + return json_object_iter_set_new(object, iter, json_incref(value)); +} + +size_t json_array_size(const json_t *array); +json_t *json_array_get(const json_t *array, size_t index); +int json_array_set_new(json_t *array, size_t index, json_t *value); +int json_array_append_new(json_t *array, json_t *value); +int json_array_insert_new(json_t *array, size_t index, json_t *value); +int json_array_remove(json_t *array, size_t index); +int json_array_clear(json_t *array); +int json_array_extend(json_t *array, json_t *other); + +static JSON_INLINE +int json_array_set(json_t *array, size_t ind, json_t *value) +{ + return json_array_set_new(array, ind, json_incref(value)); +} + +static JSON_INLINE +int json_array_append(json_t *array, json_t *value) +{ + return json_array_append_new(array, json_incref(value)); +} + +static JSON_INLINE +int json_array_insert(json_t *array, size_t ind, json_t *value) +{ + return json_array_insert_new(array, ind, json_incref(value)); +} + +const char *json_string_value(const json_t *string); +size_t json_string_length(const json_t *string); +json_int_t json_integer_value(const json_t *integer); +double json_real_value(const json_t *real); +double json_number_value(const json_t *json); + +int json_string_set(json_t *string, const char *value); +int json_string_setn(json_t *string, const char *value, size_t len); +int json_string_set_nocheck(json_t *string, const char *value); +int json_string_setn_nocheck(json_t *string, const char *value, size_t len); +int json_integer_set(json_t *integer, json_int_t value); +int json_real_set(json_t *real, double value); + +/* pack, unpack */ + +json_t *json_pack(const char *fmt, ...); +json_t *json_pack_ex(json_error_t *error, size_t flags, const char *fmt, ...); +json_t *json_vpack_ex(json_error_t *error, size_t flags, const char *fmt, va_list ap); + +#define JSON_VALIDATE_ONLY 0x1 +#define JSON_STRICT 0x2 + +int json_unpack(json_t *root, const char *fmt, ...); +int json_unpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, ...); +int json_vunpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, va_list ap); + + +/* equality */ + +int json_equal(json_t *value1, json_t *value2); + + +/* copying */ + +json_t *json_copy(json_t *value); +json_t *json_deep_copy(const json_t *value); + + +/* decoding */ + +#define JSON_REJECT_DUPLICATES 0x1 +#define JSON_DISABLE_EOF_CHECK 0x2 +#define JSON_DECODE_ANY 0x4 +#define JSON_DECODE_INT_AS_REAL 0x8 +#define JSON_ALLOW_NUL 0x10 + +typedef size_t (*json_load_callback_t)(void *buffer, size_t buflen, void *data); + +json_t *json_loads(const char *input, size_t flags, json_error_t *error); +json_t *json_loadb(const char *buffer, size_t buflen, size_t flags, json_error_t *error); +json_t *json_loadf(FILE *input, size_t flags, json_error_t *error); +json_t *json_load_file(const char *path, size_t flags, json_error_t *error); +json_t *json_load_callback(json_load_callback_t callback, void *data, size_t flags, json_error_t *error); + + +/* encoding */ + +#define JSON_MAX_INDENT 0x1F +#define JSON_INDENT(n) ((n) & JSON_MAX_INDENT) +#define JSON_COMPACT 0x20 +#define JSON_ENSURE_ASCII 0x40 +#define JSON_SORT_KEYS 0x80 +#define JSON_PRESERVE_ORDER 0x100 +#define JSON_ENCODE_ANY 0x200 +#define JSON_ESCAPE_SLASH 0x400 +#define JSON_REAL_PRECISION(n) (((n) & 0x1F) << 11) + +typedef int (*json_dump_callback_t)(const char *buffer, size_t size, void *data); + +char *json_dumps(const json_t *json, size_t flags); +int json_dumpf(const json_t *json, FILE *output, size_t flags); +int json_dump_file(const json_t *json, const char *path, size_t flags); +int json_dump_callback(const json_t *json, json_dump_callback_t callback, void *data, size_t flags); + +/* custom memory allocation */ + +typedef void *(*json_malloc_t)(size_t); +typedef void (*json_free_t)(void *); + +void json_set_alloc_funcs(json_malloc_t malloc_fn, json_free_t free_fn); +void json_get_alloc_funcs(json_malloc_t *malloc_fn, json_free_t *free_fn); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/YARA.Jansson.x64.1.1.0/include/jansson_config.h b/dependencies/YARA.Jansson.x64.1.1.0/include/jansson_config.h new file mode 100644 index 0000000..3f6cbf8 --- /dev/null +++ b/dependencies/YARA.Jansson.x64.1.1.0/include/jansson_config.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2010-2016 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + * + * + * This file specifies a part of the site-specific configuration for + * Jansson, namely those things that affect the public API in + * jansson.h. + * + * The CMake system will generate the jansson_config.h file and + * copy it to the build and install directories. + */ + +#ifndef JANSSON_CONFIG_H +#define JANSSON_CONFIG_H + +/* Define this so that we can disable scattered automake configuration in source files */ +#ifndef JANSSON_USING_CMAKE +#define JANSSON_USING_CMAKE +#endif + +/* Note: when using cmake, JSON_INTEGER_IS_LONG_LONG is not defined nor used, + * as we will also check for __int64 etc types. + * (the definition was used in the automake system) */ + +/* Bring in the cmake-detected defines */ +#define HAVE_STDINT_H 1 +/* #undef HAVE_INTTYPES_H */ +/* #undef HAVE_SYS_TYPES_H */ + +/* Include our standard type header for the integer typedef */ + +#if defined(HAVE_STDINT_H) +# include +#elif defined(HAVE_INTTYPES_H) +# include +#elif defined(HAVE_SYS_TYPES_H) +# include +#endif + + +/* If your compiler supports the inline keyword in C, JSON_INLINE is + defined to `inline', otherwise empty. In C++, the inline is always + supported. */ +#ifdef __cplusplus +#define JSON_INLINE inline +#else +#define JSON_INLINE inline +#endif + + +#define json_int_t long long +#define json_strtoint strtoll +#define JSON_INTEGER_FORMAT "I64d" + + +/* If locale.h and localeconv() are available, define to 1, otherwise to 0. */ +#define JSON_HAVE_LOCALECONV 1 + + +/* Maximum recursion depth for parsing JSON input. + This limits the depth of e.g. array-within-array constructions. */ +#define JSON_PARSER_MAX_DEPTH 2048 + + +#endif diff --git a/dependencies/YARA.Jansson.x64.1.1.0/lib/jansson.lib b/dependencies/YARA.Jansson.x64.1.1.0/lib/jansson.lib new file mode 100644 index 0000000000000000000000000000000000000000..6144a3f57e6c6edb8169f7472a7e086386003fbe GIT binary patch literal 159996 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%0DP8&sfvXroALX}snEJYa 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]{2mpv_-)q^?s^jL~fUgrzK7*_A8LcBJl5QjF1T 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 literal 0 HcmV?d00001 diff --git a/dependencies/YARA.Jansson.x86.1.1.0/include/jansson.h b/dependencies/YARA.Jansson.x86.1.1.0/include/jansson.h new file mode 100644 index 0000000..591f2a9 --- /dev/null +++ b/dependencies/YARA.Jansson.x86.1.1.0/include/jansson.h @@ -0,0 +1,311 @@ +/* + * Copyright (c) 2009-2016 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#ifndef JANSSON_H +#define JANSSON_H + +#include +#include /* for size_t */ +#include + +#include "jansson_config.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* version */ + +#define JANSSON_MAJOR_VERSION 2 +#define JANSSON_MINOR_VERSION 9 +#define JANSSON_MICRO_VERSION 0 + +/* Micro version is omitted if it's 0 */ +#define JANSSON_VERSION "2.9" + +/* Version as a 3-byte hex number, e.g. 0x010201 == 1.2.1. Use this + for numeric comparisons, e.g. #if JANSSON_VERSION_HEX >= ... */ +#define JANSSON_VERSION_HEX ((JANSSON_MAJOR_VERSION << 16) | \ + (JANSSON_MINOR_VERSION << 8) | \ + (JANSSON_MICRO_VERSION << 0)) + + +/* types */ + +typedef enum { + JSON_OBJECT, + JSON_ARRAY, + JSON_STRING, + JSON_INTEGER, + JSON_REAL, + JSON_TRUE, + JSON_FALSE, + JSON_NULL +} json_type; + +typedef struct json_t { + json_type type; + size_t refcount; +} json_t; + +#ifndef JANSSON_USING_CMAKE /* disabled if using cmake */ +#if JSON_INTEGER_IS_LONG_LONG +#ifdef _WIN32 +#define JSON_INTEGER_FORMAT "I64d" +#else +#define JSON_INTEGER_FORMAT "lld" +#endif +typedef long long json_int_t; +#else +#define JSON_INTEGER_FORMAT "ld" +typedef long json_int_t; +#endif /* JSON_INTEGER_IS_LONG_LONG */ +#endif + +#define json_typeof(json) ((json)->type) +#define json_is_object(json) ((json) && json_typeof(json) == JSON_OBJECT) +#define json_is_array(json) ((json) && json_typeof(json) == JSON_ARRAY) +#define json_is_string(json) ((json) && json_typeof(json) == JSON_STRING) +#define json_is_integer(json) ((json) && json_typeof(json) == JSON_INTEGER) +#define json_is_real(json) ((json) && json_typeof(json) == JSON_REAL) +#define json_is_number(json) (json_is_integer(json) || json_is_real(json)) +#define json_is_true(json) ((json) && json_typeof(json) == JSON_TRUE) +#define json_is_false(json) ((json) && json_typeof(json) == JSON_FALSE) +#define json_boolean_value json_is_true +#define json_is_boolean(json) (json_is_true(json) || json_is_false(json)) +#define json_is_null(json) ((json) && json_typeof(json) == JSON_NULL) + +/* construction, destruction, reference counting */ + +json_t *json_object(void); +json_t *json_array(void); +json_t *json_string(const char *value); +json_t *json_stringn(const char *value, size_t len); +json_t *json_string_nocheck(const char *value); +json_t *json_stringn_nocheck(const char *value, size_t len); +json_t *json_integer(json_int_t value); +json_t *json_real(double value); +json_t *json_true(void); +json_t *json_false(void); +#define json_boolean(val) ((val) ? json_true() : json_false()) +json_t *json_null(void); + +static JSON_INLINE +json_t *json_incref(json_t *json) +{ + if(json && json->refcount != (size_t)-1) + ++json->refcount; + return json; +} + +/* do not call json_delete directly */ +void json_delete(json_t *json); + +static JSON_INLINE +void json_decref(json_t *json) +{ + if(json && json->refcount != (size_t)-1 && --json->refcount == 0) + json_delete(json); +} + +#if defined(__GNUC__) || defined(__clang__) +static JSON_INLINE +void json_decrefp(json_t **json) +{ + if(json) { + json_decref(*json); + *json = NULL; + } +} + +#define json_auto_t json_t __attribute__((cleanup(json_decrefp))) +#endif + + +/* error reporting */ + +#define JSON_ERROR_TEXT_LENGTH 160 +#define JSON_ERROR_SOURCE_LENGTH 80 + +typedef struct { + int line; + int column; + int position; + char source[JSON_ERROR_SOURCE_LENGTH]; + char text[JSON_ERROR_TEXT_LENGTH]; +} json_error_t; + + +/* getters, setters, manipulation */ + +void json_object_seed(size_t seed); +size_t json_object_size(const json_t *object); +json_t *json_object_get(const json_t *object, const char *key); +int json_object_set_new(json_t *object, const char *key, json_t *value); +int json_object_set_new_nocheck(json_t *object, const char *key, json_t *value); +int json_object_del(json_t *object, const char *key); +int json_object_clear(json_t *object); +int json_object_update(json_t *object, json_t *other); +int json_object_update_existing(json_t *object, json_t *other); +int json_object_update_missing(json_t *object, json_t *other); +void *json_object_iter(json_t *object); +void *json_object_iter_at(json_t *object, const char *key); +void *json_object_key_to_iter(const char *key); +void *json_object_iter_next(json_t *object, void *iter); +const char *json_object_iter_key(void *iter); +json_t *json_object_iter_value(void *iter); +int json_object_iter_set_new(json_t *object, void *iter, json_t *value); + +#define json_object_foreach(object, key, value) \ + for(key = json_object_iter_key(json_object_iter(object)); \ + key && (value = json_object_iter_value(json_object_key_to_iter(key))); \ + key = json_object_iter_key(json_object_iter_next(object, json_object_key_to_iter(key)))) + +#define json_object_foreach_safe(object, n, key, value) \ + for(key = json_object_iter_key(json_object_iter(object)), \ + n = json_object_iter_next(object, json_object_key_to_iter(key)); \ + key && (value = json_object_iter_value(json_object_key_to_iter(key))); \ + key = json_object_iter_key(n), \ + n = json_object_iter_next(object, json_object_key_to_iter(key))) + +#define json_array_foreach(array, index, value) \ + for(index = 0; \ + index < json_array_size(array) && (value = json_array_get(array, index)); \ + index++) + +static JSON_INLINE +int json_object_set(json_t *object, const char *key, json_t *value) +{ + return json_object_set_new(object, key, json_incref(value)); +} + +static JSON_INLINE +int json_object_set_nocheck(json_t *object, const char *key, json_t *value) +{ + return json_object_set_new_nocheck(object, key, json_incref(value)); +} + +static JSON_INLINE +int json_object_iter_set(json_t *object, void *iter, json_t *value) +{ + return json_object_iter_set_new(object, iter, json_incref(value)); +} + +size_t json_array_size(const json_t *array); +json_t *json_array_get(const json_t *array, size_t index); +int json_array_set_new(json_t *array, size_t index, json_t *value); +int json_array_append_new(json_t *array, json_t *value); +int json_array_insert_new(json_t *array, size_t index, json_t *value); +int json_array_remove(json_t *array, size_t index); +int json_array_clear(json_t *array); +int json_array_extend(json_t *array, json_t *other); + +static JSON_INLINE +int json_array_set(json_t *array, size_t ind, json_t *value) +{ + return json_array_set_new(array, ind, json_incref(value)); +} + +static JSON_INLINE +int json_array_append(json_t *array, json_t *value) +{ + return json_array_append_new(array, json_incref(value)); +} + +static JSON_INLINE +int json_array_insert(json_t *array, size_t ind, json_t *value) +{ + return json_array_insert_new(array, ind, json_incref(value)); +} + +const char *json_string_value(const json_t *string); +size_t json_string_length(const json_t *string); +json_int_t json_integer_value(const json_t *integer); +double json_real_value(const json_t *real); +double json_number_value(const json_t *json); + +int json_string_set(json_t *string, const char *value); +int json_string_setn(json_t *string, const char *value, size_t len); +int json_string_set_nocheck(json_t *string, const char *value); +int json_string_setn_nocheck(json_t *string, const char *value, size_t len); +int json_integer_set(json_t *integer, json_int_t value); +int json_real_set(json_t *real, double value); + +/* pack, unpack */ + +json_t *json_pack(const char *fmt, ...); +json_t *json_pack_ex(json_error_t *error, size_t flags, const char *fmt, ...); +json_t *json_vpack_ex(json_error_t *error, size_t flags, const char *fmt, va_list ap); + +#define JSON_VALIDATE_ONLY 0x1 +#define JSON_STRICT 0x2 + +int json_unpack(json_t *root, const char *fmt, ...); +int json_unpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, ...); +int json_vunpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, va_list ap); + + +/* equality */ + +int json_equal(json_t *value1, json_t *value2); + + +/* copying */ + +json_t *json_copy(json_t *value); +json_t *json_deep_copy(const json_t *value); + + +/* decoding */ + +#define JSON_REJECT_DUPLICATES 0x1 +#define JSON_DISABLE_EOF_CHECK 0x2 +#define JSON_DECODE_ANY 0x4 +#define JSON_DECODE_INT_AS_REAL 0x8 +#define JSON_ALLOW_NUL 0x10 + +typedef size_t (*json_load_callback_t)(void *buffer, size_t buflen, void *data); + +json_t *json_loads(const char *input, size_t flags, json_error_t *error); +json_t *json_loadb(const char *buffer, size_t buflen, size_t flags, json_error_t *error); +json_t *json_loadf(FILE *input, size_t flags, json_error_t *error); +json_t *json_load_file(const char *path, size_t flags, json_error_t *error); +json_t *json_load_callback(json_load_callback_t callback, void *data, size_t flags, json_error_t *error); + + +/* encoding */ + +#define JSON_MAX_INDENT 0x1F +#define JSON_INDENT(n) ((n) & JSON_MAX_INDENT) +#define JSON_COMPACT 0x20 +#define JSON_ENSURE_ASCII 0x40 +#define JSON_SORT_KEYS 0x80 +#define JSON_PRESERVE_ORDER 0x100 +#define JSON_ENCODE_ANY 0x200 +#define JSON_ESCAPE_SLASH 0x400 +#define JSON_REAL_PRECISION(n) (((n) & 0x1F) << 11) + +typedef int (*json_dump_callback_t)(const char *buffer, size_t size, void *data); + +char *json_dumps(const json_t *json, size_t flags); +int json_dumpf(const json_t *json, FILE *output, size_t flags); +int json_dump_file(const json_t *json, const char *path, size_t flags); +int json_dump_callback(const json_t *json, json_dump_callback_t callback, void *data, size_t flags); + +/* custom memory allocation */ + +typedef void *(*json_malloc_t)(size_t); +typedef void (*json_free_t)(void *); + +void json_set_alloc_funcs(json_malloc_t malloc_fn, json_free_t free_fn); +void json_get_alloc_funcs(json_malloc_t *malloc_fn, json_free_t *free_fn); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/YARA.Jansson.x86.1.1.0/include/jansson_config.h b/dependencies/YARA.Jansson.x86.1.1.0/include/jansson_config.h new file mode 100644 index 0000000..3f6cbf8 --- /dev/null +++ b/dependencies/YARA.Jansson.x86.1.1.0/include/jansson_config.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2010-2016 Petri Lehtinen + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + * + * + * This file specifies a part of the site-specific configuration for + * Jansson, namely those things that affect the public API in + * jansson.h. + * + * The CMake system will generate the jansson_config.h file and + * copy it to the build and install directories. + */ + +#ifndef JANSSON_CONFIG_H +#define JANSSON_CONFIG_H + +/* Define this so that we can disable scattered automake configuration in source files */ +#ifndef JANSSON_USING_CMAKE +#define JANSSON_USING_CMAKE +#endif + +/* Note: when using cmake, JSON_INTEGER_IS_LONG_LONG is not defined nor used, + * as we will also check for __int64 etc types. + * (the definition was used in the automake system) */ + +/* Bring in the cmake-detected defines */ +#define HAVE_STDINT_H 1 +/* #undef HAVE_INTTYPES_H */ +/* #undef HAVE_SYS_TYPES_H */ + +/* Include our standard type header for the integer typedef */ + +#if defined(HAVE_STDINT_H) +# include +#elif defined(HAVE_INTTYPES_H) +# include +#elif defined(HAVE_SYS_TYPES_H) +# include +#endif + + +/* If your compiler supports the inline keyword in C, JSON_INLINE is + defined to `inline', otherwise empty. In C++, the inline is always + supported. */ +#ifdef __cplusplus +#define JSON_INLINE inline +#else +#define JSON_INLINE inline +#endif + + +#define json_int_t long long +#define json_strtoint strtoll +#define JSON_INTEGER_FORMAT "I64d" + + +/* If locale.h and localeconv() are available, define to 1, otherwise to 0. */ +#define JSON_HAVE_LOCALECONV 1 + + +/* Maximum recursion depth for parsing JSON input. + This limits the depth of e.g. array-within-array constructions. */ +#define JSON_PARSER_MAX_DEPTH 2048 + + +#endif diff --git a/dependencies/YARA.Jansson.x86.1.1.0/lib/jansson.lib b/dependencies/YARA.Jansson.x86.1.1.0/lib/jansson.lib new file mode 100644 index 0000000000000000000000000000000000000000..d4ba0515f10c02fa53812bad7fa5951705160f7d GIT binary patch literal 98736 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 z z8X0G%t3%T;U0XE`)AdlYM#TADO~V+nJ81iy#~5AuVAV#+up;>)r{HCuuRv#!UVsxvKnpJM-|NPLg;^ZYdVstAX zG!CQe?Z1AY)3Lf(SrMaKouyeFzRS16u_{tl#OPLMYgX^Sz8Xcu%8ez;iWuGM9L?&Z z^IQuZt98nX7~N`=X7%^GUdH>K71o!P6*0QiXwB;W-#)y~vHFR!B1X45SF^hKx{vUX zu)^A+^6-l?k`czpFqg$O1jkA{i-1Tkq z9IG*^D?^NK#b>?4@~ShhmMJS@bgQwNmCg;@psa||t#XAG`#f|yH|)*IDi>FDs|%r# zeJu#a6@Q!h5fRdTU0D&MTU`W=Q!BrTzX7jBYhfvl>0_EOaicu=Xh{VsxwV zn$<(sO+{mBS-q>Qh|#SkXjV78{v#+Xs|>V-bj0XZd<}H!@|z{=e&tx@Dl1}itBJzO z^8M=jpZ%?4Rj90p(XB4gte(uc>mJ8yp|T=Ix4Klbn)=?&UvR9hS60Nx*d&w&3Z>zg zo8<->KfqaZ?Mlq>?QCD#fayX5nU&O!dNY}AbNSj1_;uRpOZ~YwukXYLIQ?i8z~`WA z1Ti6}Ges5Cf}E$^U!$far>Momu_$bmYE@I~iWsI5 z3!P$^({Q8$)fDV~SbUt6Ee=k~$sC;G+@h}%gpG=)QBM0p`08Bop*o6FQEsY`+oO%K zHdt8G#L~^fW|G>;LJ4=XP;inNQNEBa z?P!YPwsac)e;32#)L<|Swv6&h|D5R>>&4VSRV9eaDnXQ1pkFAir~s*30Gx5-0|D() zURg;oc=}3WyKY|lwwyBs4j_=7lRZpPiHsF3zdQruDTeL=kk{8 z9#+(pmcm0)*R|?b%F2t2YbwFPI44i%JIo8z1gnD8;VN8-^|L7}LPmr@hL#70&g7U+ zFAEicLofnPO^3cQ8Bp!7gumfnX<0HNJ$72Ss;a8ItUTi9xP%tYXCqB4sH!RoR|P?E zNM=cnZD^iOttl(5D6Oc7;4(P%lA}Gfs<@;iT*Es;c0uh@c^UZRz<}qUGey5pQB@u( zDJg?ZzIGw6DjY5?4HStB{mM&Opr$%lU4q*&zN}vq0>P@Xno97C3Mxb`3e`2C@}fXV Ov45=$=#+GHL;pW>oE^IW literal 0 HcmV?d00001 diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/__DECC_INCLUDE_EPILOGUE.H b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/__DECC_INCLUDE_EPILOGUE.H new file mode 100644 index 0000000..c350018 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/__DECC_INCLUDE_EPILOGUE.H @@ -0,0 +1,16 @@ +/* + * Copyright 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 + */ + +/* + * This file is only used by HP C on VMS, and is included automatically + * after each header file from this directory + */ + +/* restore state. Must correspond to the save in __decc_include_prologue.h */ +#pragma names restore diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/__DECC_INCLUDE_PROLOGUE.H b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/__DECC_INCLUDE_PROLOGUE.H new file mode 100644 index 0000000..9a9c777 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/__DECC_INCLUDE_PROLOGUE.H @@ -0,0 +1,20 @@ +/* + * Copyright 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 + */ + +/* + * This file is only used by HP C on VMS, and is included automatically + * after each header file from this directory + */ + +/* save state */ +#pragma names save +/* have the compiler shorten symbols larger than 31 chars to 23 chars + * followed by a 8 hex char CRC + */ +#pragma names as_is,shortened diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/aes.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/aes.h new file mode 100644 index 0000000..245c552 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/asn1.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/asn1.h new file mode 100644 index 0000000..df764c5 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/asn1.h @@ -0,0 +1,1099 @@ +/* + * 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_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 0x1f + +# 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 +/* 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(ASN1_TIME *t, ASN1_GENERALIZEDTIME + **out); +int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); + +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); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_ASN1_strings(void); + +/* Error codes for the ASN1 functions. */ + +/* 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_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_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_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_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_TCREATE 222 +# define ASN1_F_I2D_ASN1_BIO_STREAM 211 +# 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_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_STBL_MODULE_INIT 223 +# define ASN1_F_UINT32_C2I 105 +# define ASN1_F_UINT64_C2I 112 +# 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 + +/* 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_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_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_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 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/asn1_mac.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/asn1_mac.h new file mode 100644 index 0000000..7ac1782 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/asn1t.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/asn1t.h new file mode 100644 index 0000000..a524829 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/asn1t.h @@ -0,0 +1,929 @@ +/* + * 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) \ + OPENSSL_GLOBAL 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),\ + #stname \ + 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),\ + #stname \ + 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(LONG) +DECLARE_ASN1_ITEM(ZLONG) + +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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/async.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/async.h new file mode 100644 index 0000000..5b2e496 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/async.h @@ -0,0 +1,98 @@ +/* + * 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 + */ + +#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 + + +# 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); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_ASYNC_strings(void); + +/* Error codes for the ASYNC functions. */ + +/* 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 + +/* 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 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/bio.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/bio.h new file mode 100644 index 0000000..7812851 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/bio.h @@ -0,0 +1,850 @@ +/* + * 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_BIO_H +# define HEADER_BIO_H + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include + +# include + +# ifndef OPENSSL_NO_SCTP +# include +# endif + +#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_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 + +# define BIO_CTRL_DGRAM_SET_PEEK_MODE 50 + +# ifndef OPENSSL_NO_SCTP +/* SCTP stuff */ +# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 +# 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 + +/* 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 + +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); +BIO_callback_fn BIO_get_callback(const BIO *b); +void BIO_set_callback(BIO *b, BIO_callback_fn 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 void bio_info_cb(BIO *, int, const char *, int, long, long); + +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) + +/* 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 len); +int BIO_gets(BIO *bp, char *buf, int size); +int BIO_write(BIO *b, const void *data, int len); +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, + void (*fp) (BIO *, int, const char *, int, long, long)); +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_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_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); + */ + +# ifdef __GNUC__ +# define __bio_h__attr__ __attribute__ +# else +# define __bio_h__attr__(x) +# endif +int BIO_printf(BIO *bio, const char *format, ...) +__bio_h__attr__((__format__(__printf__, 2, 3))); +int BIO_vprintf(BIO *bio, const char *format, va_list args) +__bio_h__attr__((__format__(__printf__, 2, 0))); +int BIO_snprintf(char *buf, size_t n, const char *format, ...) +__bio_h__attr__((__format__(__printf__, 3, 4))); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) +__bio_h__attr__((__format__(__printf__, 3, 0))); +# undef __bio_h__attr__ + + +BIO_METHOD *BIO_meth_new(int type, const char *name); +void BIO_meth_free(BIO_METHOD *biom); +int (*BIO_meth_get_write(BIO_METHOD *biom)) (BIO *, const char *, int); +int BIO_meth_set_write(BIO_METHOD *biom, + int (*write) (BIO *, const char *, int)); +int (*BIO_meth_get_read(BIO_METHOD *biom)) (BIO *, char *, int); +int BIO_meth_set_read(BIO_METHOD *biom, + int (*read) (BIO *, char *, int)); +int (*BIO_meth_get_puts(BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts) (BIO *, const char *)); +int (*BIO_meth_get_gets(BIO_METHOD *biom)) (BIO *, char *, int); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*gets) (BIO *, char *, int)); +long (*BIO_meth_get_ctrl(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(BIO_METHOD *bion)) (BIO *); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); +int (*BIO_meth_get_destroy(BIO_METHOD *biom)) (BIO *); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); +long (*BIO_meth_get_callback_ctrl(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 *)); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_BIO_strings(void); + +/* Error codes for the BIO functions. */ + +/* Function codes. */ +# define BIO_F_ACPT_STATE 100 +# define BIO_F_ADDR_STRINGS 134 +# define BIO_F_BIO_ACCEPT 101 +# define BIO_F_BIO_ACCEPT_EX 137 +# define BIO_F_BIO_ADDR_NEW 144 +# define BIO_F_BIO_CALLBACK_CTRL 131 +# define BIO_F_BIO_CONNECT 138 +# 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_MAKE_PAIR 121 +# define BIO_F_BIO_NEW 108 +# 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_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_BUFFER_CTRL 114 +# define BIO_F_CONN_CTRL 127 +# define BIO_F_CONN_STATE 115 +# define BIO_F_DGRAM_SCTP_READ 132 +# define BIO_F_DGRAM_SCTP_WRITE 133 +# define BIO_F_FILE_CTRL 116 +# define BIO_F_FILE_READ 130 +# define BIO_F_LINEBUFFER_CTRL 129 +# define BIO_F_MEM_WRITE 117 +# define BIO_F_SSL_NEW 118 + +/* 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_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 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/blowfish.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/blowfish.h new file mode 100644 index 0000000..cd3e460 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/bn.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/bn.h new file mode 100644 index 0000000..17bd521 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/bn.h @@ -0,0 +1,575 @@ +/* + * 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 + */ + +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * + * Portions of the attached software ("Contribution") are developed by + * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. + * + * The Contribution is licensed pursuant to the Eric Young open source + * license provided above. + * + * The binary polynomial arithmetic software is originally written by + * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. + * + */ + +#ifndef HEADER_BN_H +# define HEADER_BN_H + +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif +# 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 */ + +/* + * number of Miller-Rabin iterations for an error rate of less than 2^-80 for + * random 'b'-bit input, b >= 100 (taken from table 4.4 in the Handbook of + * Applied Cryptography [Menezes, van Oorschot, Vanstone; CRC Press 1996]; + * original paper: Damgaard, Landrock, Pomerance: Average case error + * estimates for the strong probable prime test. -- Math. Comp. 61 (1993) + * 177-194) + */ +# define BN_prime_checks_for_size(b) ((b) >= 1300 ? 2 : \ + (b) >= 850 ? 3 : \ + (b) >= 650 ? 4 : \ + (b) >= 550 ? 5 : \ + (b) >= 450 ? 6 : \ + (b) >= 400 ? 7 : \ + (b) >= 350 ? 8 : \ + (b) >= 300 ? 9 : \ + (b) >= 250 ? 12 : \ + (b) >= 200 ? 15 : \ + (b) >= 150 ? 18 : \ + /* b >= 100 */ 27) + +# 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_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); +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 a 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); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_BN_strings(void); + +/* Error codes for the BN functions. */ + +/* Function codes. */ +# define BN_F_BNRAND 127 +# 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_MPI2BN 112 +# define BN_F_BN_NEW 113 +# define BN_F_BN_RAND 114 +# define BN_F_BN_RAND_RANGE 122 +# define BN_F_BN_RSHIFT 146 +# define BN_F_BN_SET_WORDS 144 +# define BN_F_BN_USUB 115 + +/* 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 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/buffer.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/buffer.h new file mode 100644 index 0000000..91f0e07 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/buffer.h @@ -0,0 +1,76 @@ +/* + * 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_BUFFER_H +# define HEADER_BUFFER_H + +# include +# ifndef HEADER_CRYPTO_H +# include +# endif + + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +# if !defined(NO_SYS_TYPES_H) +# include +# endif + +/* + * 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); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_BUF_strings(void); + +/* Error codes for the BUF functions. */ + +/* Function codes. */ +# define BUF_F_BUF_MEM_GROW 100 +# define BUF_F_BUF_MEM_GROW_CLEAN 105 +# define BUF_F_BUF_MEM_NEW 101 + +/* Reason codes. */ + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/camellia.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/camellia.h new file mode 100644 index 0000000..151f3c1 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/cast.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/cast.h new file mode 100644 index 0000000..2cc89ae --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/cmac.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/cmac.h new file mode 100644 index 0000000..3535a9a --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/cms.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/cms.h new file mode 100644 index 0000000..7e534e0 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/cms.h @@ -0,0 +1,512 @@ +/* + * 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_CMS_H +# define HEADER_CMS_H + +# include + +# ifndef OPENSSL_NO_CMS +# 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); + +# ifdef HEADER_X509V3_H + +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); +# endif +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); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_CMS_strings(void); + +/* Error codes for the CMS functions. */ + +/* 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_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_STREAM 155 +# define CMS_F_CMS_UNCOMPRESS 156 +# define CMS_F_CMS_VERIFY 157 + +/* Reason codes. */ +# define CMS_R_ADD_SIGNER_ERROR 99 +# 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_ALGORIHM 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_RECIPIENT_TYPE 154 +# define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE 155 +# 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 + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/comp.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/comp.h new file mode 100644 index 0000000..260ff1e --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/comp.h @@ -0,0 +1,72 @@ +/* + * 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 + */ + +#ifndef HEADER_COMP_H +# define HEADER_COMP_H + +# include + +# ifndef OPENSSL_NO_COMP +# 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 + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_COMP_strings(void); + +/* Error codes for the COMP functions. */ + +/* 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 + +/* Reason codes. */ +# define COMP_R_ZLIB_DEFLATE_ERROR 99 +# define COMP_R_ZLIB_INFLATE_ERROR 100 +# define COMP_R_ZLIB_NOT_SUPPORTED 101 + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/conf.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/conf.h new file mode 100644 index 0000000..980a51b --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/conf.h @@ -0,0 +1,217 @@ +/* + * 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_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); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_CONF_strings(void); + +/* Error codes for the CONF functions. */ + +/* 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_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_STR_COPY 101 + +/* 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_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 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/conf_api.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/conf_api.h new file mode 100644 index 0000000..a0275ad --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/crypto.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/crypto.h new file mode 100644 index 0000000..55e8020 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/crypto.h @@ -0,0 +1,463 @@ +/* + * 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 + */ + +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * ECDH support in OpenSSL originally developed by + * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. + */ + +#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__COUNT 14 + +/* + * This is the default callbacks, but we can have others as well: this is + * needed in Win32 where the application malloc and the library malloc may + * not be the same. + */ +#define OPENSSL_malloc_init() \ + CRYPTO_set_mem_functions(CRYPTO_malloc, CRYPTO_realloc, CRYPTO_free) + +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_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 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); +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); + +/*- + * 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); + +# 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); + +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 volatile void * volatile in_a, + const volatile void * volatile 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 flag 0x00010000 reserved for internal use */ +/* 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_appname(OPENSSL_INIT_SETTINGS *settings, + const char *config_file); +# 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); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_CRYPTO_strings(void); + +/* Error codes for the CRYPTO functions. */ + +/* Function codes. */ +# 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_SET_EX_DATA 102 +# define CRYPTO_F_FIPS_MODE_SET 109 +# define CRYPTO_F_GET_AND_LOCK 113 +# define CRYPTO_F_OPENSSL_BUF2HEXSTR 117 +# define CRYPTO_F_OPENSSL_HEXSTR2BUF 118 +# define CRYPTO_F_OPENSSL_INIT_CRYPTO 116 + +/* 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 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ct.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ct.h new file mode 100644 index 0000000..bf29fba --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ct.h @@ -0,0 +1,533 @@ +/* + * Copyright 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_CT_H +# define HEADER_CT_H + +# include + +# ifndef OPENSSL_NO_CT +# 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|. + * See internal/cryptlib.h for the environment variable and file path that are + * consulted to find the default file. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_default_file(CTLOG_STORE *store); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_CT_strings(void); + +/* Error codes for the CT functions. */ + +/* 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 + +/* 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 + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/des.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/des.h new file mode 100644 index 0000000..be4abbd --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/dh.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/dh.h new file mode 100644 index 0000000..fbd4790 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/dh.h @@ -0,0 +1,361 @@ +/* + * 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_DH_H +# define HEADER_DH_H + +# include + +# ifndef OPENSSL_NO_DH +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif + +# 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(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); + +# 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); +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(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_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) + +/* KDF types */ +# define EVP_PKEY_DH_KDF_NONE 1 +# ifndef OPENSSL_NO_CMS +# define EVP_PKEY_DH_KDF_X9_42 2 +# endif + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_DH_strings(void); + +/* Error codes for the DH functions. */ + +/* 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_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_METHOD 105 +# define DH_F_DH_PARAM_DECODE 107 +# 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_DERIVE 112 +# define DH_F_PKEY_DH_KEYGEN 113 + +/* Reason codes. */ +# define DH_R_BAD_GENERATOR 101 +# define DH_R_BN_DECODE_ERROR 109 +# define DH_R_BN_ERROR 106 +# define DH_R_DECODE_ERROR 104 +# define DH_R_INVALID_PUBKEY 102 +# define DH_R_KDF_PARAMETER_ERROR 112 +# define DH_R_KEYS_NOT_SET 108 +# define DH_R_MODULUS_TOO_LARGE 103 +# 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 + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/dsa.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/dsa.h new file mode 100644 index 0000000..139718e --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/dsa.h @@ -0,0 +1,283 @@ +/* + * 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 + */ + +/* + * The DSS routines are based on patches supplied by + * Steven Schoch . + */ + +#ifndef HEADER_DSA_H +# define HEADER_DSA_H + +# include + +# ifndef OPENSSL_NO_DSA +# ifdef __cplusplus +extern "C" { +# endif +# include +# include +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif + +# 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 */ +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 50 +/* + * Primality test according to FIPS PUB 186[-1], Appendix 2.1: 50 rounds of + * Rabin-Miller + */ +# 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_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); +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(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 *)); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_DSA_strings(void); + +/* Error codes for the DSA functions. */ + +/* 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_KEYGEN 121 + +/* 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_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 + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/dtls1.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/dtls1.h new file mode 100644 index 0000000..f4769f8 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/dtls1.h @@ -0,0 +1,56 @@ +/* + * 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_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 */ +# 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 + +# ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE +# define DTLS1_AL_HEADER_LENGTH 7 +# else +# define DTLS1_AL_HEADER_LENGTH 2 +# endif + + +/* Timeout multipliers (timeout slice is defined in apps/timeouts.h */ +# 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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/e_os2.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/e_os2.h new file mode 100644 index 0000000..4aec51f --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/e_os2.h @@ -0,0 +1,298 @@ +/* + * 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_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) +# undef OPENSSL_SYS_UNIX +# 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 + +/*- + * Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare + * certain global symbols that, with some compilers under VMS, have to be + * defined and declared explicitly with globaldef and globalref. + * Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare + * DLL exports and imports for compilers under Win32. These are a little + * more complicated to use. 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, OPENSSL_EXTERN and OPENSSL_GLOBAL + * have some generally sensible values. + */ + +# if defined(OPENSSL_SYS_VMS_NODECC) +# define OPENSSL_EXPORT globalref +# define OPENSSL_EXTERN globalref +# define OPENSSL_GLOBAL globaldef +# elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) +# define OPENSSL_EXPORT extern __declspec(dllexport) +# define OPENSSL_EXTERN extern __declspec(dllimport) +# define OPENSSL_GLOBAL +# else +# define OPENSSL_EXPORT extern +# define OPENSSL_EXTERN extern +# define OPENSSL_GLOBAL +# 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) OPENSSL_GLOBAL 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 +# 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<=1500 +/* + * 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 +# define ossl_noreturn _Noreturn +# elif defined(__GNUC__) && __GNUC__ >= 2 +# define ossl_noreturn __attribute__((noreturn)) +# else +# define ossl_noreturn +# endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ebcdic.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ebcdic.h new file mode 100644 index 0000000..aa01285 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ec.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ec.h new file mode 100644 index 0000000..6f7548c --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ec.h @@ -0,0 +1,1576 @@ +/* + * 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 + */ + +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * + * Portions of the attached software ("Contribution") are developed by + * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. + * + * The Contribution is licensed pursuant to the OpenSSL open source + * license provided above. + * + * The elliptic curve binary polynomial software is originally written by + * Sheueling Chang Shantz and Douglas Stebila of Sun Microsystems Laboratories. + * + */ + +#ifndef HEADER_EC_H +# define HEADER_EC_H + +# include + +# ifndef OPENSSL_NO_EC +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# 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 it's 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 parameter of a ec over GFp defined by y^2 = x^3 + a*x + b + * \param group EC_GROUP object + * \param p BIGNUM with the prime number + * \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_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameter of the ec over GFp defined by y^2 = x^3 + a*x + b + * \param group EC_GROUP object + * \param p BIGNUM for the prime number + * \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_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, + BIGNUM *b, BN_CTX *ctx); + +# ifndef OPENSSL_NO_EC2M +/** Sets the parameter of a ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b + * \param group EC_GROUP object + * \param p BIGNUM with the polynomial defining the underlying field + * \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_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameter of the ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b + * \param group EC_GROUP object + * \param p BIGNUM for the polynomial defining the underlying field + * \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_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 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 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 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 ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +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 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 ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +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 over GFp + * \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_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 a EC_POINT over GF2m + * \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_GF2m(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of a EC_POINT over GF2m + * \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_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 over GF2m + * \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_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, \ + (char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x)) +# define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \ + (unsigned char *)(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); + +/** 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 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); + +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 0 + */ +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 pointer + * \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); + +/** Setter for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG pointer + * \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(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(EC_KEY_METHOD *meth, + int (**pkeygen)(EC_KEY *key)); + +void EC_KEY_METHOD_get_compute_key(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(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(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) + +# 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) +/* KDF types */ +# define EVP_PKEY_ECDH_KDF_NONE 1 +# define EVP_PKEY_ECDH_KDF_X9_62 2 + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_EC_strings(void); + +/* Error codes for the EC functions. */ + +/* 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_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_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_GROUP_CHECK_DISCRIMINANT 159 +# define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 +# define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160 +# define EC_F_EC_GF2M_SIMPLE_POINT2OCT 161 +# 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_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_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_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_GF2M 176 +# define EC_F_EC_GROUP_SET_CURVE_GFP 109 +# define EC_F_EC_GROUP_SET_GENERATOR 111 +# 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_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_POINTS_MAKE_AFFINE 136 +# define EC_F_EC_POINT_ADD 112 +# 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_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_POINT2OCT 123 +# 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_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_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_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_KEYGEN 199 +# define EC_F_PKEY_EC_PARAMGEN 219 +# define EC_F_PKEY_EC_SIGN 218 + +/* 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_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_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_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_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 + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ecdh.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ecdh.h new file mode 100644 index 0000000..681f3d5 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ecdsa.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ecdsa.h new file mode 100644 index 0000000..681f3d5 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/engine.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/engine.h new file mode 100644 index 0000000..26cf714 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/engine.h @@ -0,0 +1,840 @@ +/* + * 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 + */ + +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * ECDH support in OpenSSL originally developed by + * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. + */ + +#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 +# 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 parametrised 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); \ + 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(HAVE_CRYPTODEV) +DEPRECATEDIN_1_1_0(void ENGINE_setup_bsd_cryptodev(void)) +# endif + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_ENGINE_strings(void); + +/* Error codes for the ENGINE functions. */ + +/* Function codes. */ +# 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_CTRL_HELPER 172 +# define ENGINE_F_INT_ENGINE_CONFIGURE 188 +# define ENGINE_F_INT_ENGINE_MODULE_INIT 187 + +/* 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 + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/err.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/err.h new file mode 100644 index 0000000..29a261c --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/err.h @@ -0,0 +1,260 @@ +/* + * 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_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_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_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_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 STOREerr(f,r) ERR_PUT_error(ERR_LIB_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 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 + +/* 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_ECDSA_LIB ERR_LIB_ECDSA/* 42 */ + +# 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) + +/* + * 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_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); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/evp.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/evp.h new file mode 100644 index 0000000..01f51b7 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/evp.h @@ -0,0 +1,1590 @@ +/* + * 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_ENVELOPE_H +# define HEADER_ENVELOPE_H + +# 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_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_HMAC NID_hmac +# define EVP_PKEY_CMAC NID_cmac +# define EVP_PKEY_TLS1_PRF NID_tls1_prf +# define EVP_PKEY_HKDF NID_hkdf + +#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 + +/* 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 + +/* 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 + +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 +/* 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 + +/* 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 + +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 + +/* 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_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); + +#ifndef OPENSSL_NO_UI +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); +#endif + +__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_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); + +/*__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); +# 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 +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_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 + +# 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_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS \ + | OPENSSL_INIT_LOAD_CONFIG, NULL) +# else +# define OpenSSL_add_all_algorithms() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) +# 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(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_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_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_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_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); + +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_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_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); + +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); + +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_get_init(EVP_PKEY_METHOD *pmeth, + int (**pinit) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_copy(EVP_PKEY_METHOD *pmeth, + int (**pcopy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_get_cleanup(EVP_PKEY_METHOD *pmeth, + void (**pcleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_paramgen(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(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(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(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(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(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(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(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(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(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(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_add_alg_module(void); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_EVP_strings(void); + +/* Error codes for the EVP functions. */ + +/* Function codes. */ +# define EVP_F_AESNI_INIT_KEY 165 +# 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_WRAP_CIPHER 170 +# define EVP_F_ALG_MODULE_INIT 177 +# 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_EVP_CIPHERINIT_EX 123 +# 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_DECRYPTFINAL_EX 101 +# define EVP_F_EVP_DECRYPTUPDATE 166 +# define EVP_F_EVP_DIGESTINIT_EX 128 +# 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_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_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_RSA 121 +# define EVP_F_EVP_PKEY_KEYGEN 146 +# define EVP_F_EVP_PKEY_KEYGEN_INIT 147 +# define EVP_F_EVP_PKEY_NEW 106 +# define EVP_F_EVP_PKEY_PARAMGEN 148 +# define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 +# 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_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 + +/* Reason codes. */ +# define EVP_R_AES_KEY_SETUP_FAILED 143 +# define EVP_R_BAD_DECRYPT 100 +# 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_FIPS_MODE_NOT_SUPPORTED 167 +# 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_KEY 163 +# define EVP_R_INVALID_KEY_LENGTH 130 +# define EVP_R_INVALID_OPERATION 148 +# define EVP_R_KEYGEN_FAILURE 120 +# 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_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_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +# define EVP_R_OPERATON_NOT_INITIALIZED 151 +# define EVP_R_PARTIALLY_OVERLAPPING 162 +# 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 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/hmac.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/hmac.h new file mode 100644 index 0000000..9f06896 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/hmac.h @@ -0,0 +1,49 @@ +/* + * 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_HMAC_H +# define HEADER_HMAC_H + +# include + +# include + +# define HMAC_MAX_MD_CBLOCK 128/* largest known is SHA512 */ + +#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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/idea.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/idea.h new file mode 100644 index 0000000..4334f3e --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/kdf.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/kdf.h new file mode 100644 index 0000000..9f87f78 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/kdf.h @@ -0,0 +1,75 @@ +/* + * Copyright 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_KDF_H +# define HEADER_KDF_H + +#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_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) + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_KDF_strings(void); + +/* Error codes for the KDF functions. */ + +/* Function codes. */ +# define KDF_F_PKEY_TLS1_PRF_CTRL_STR 100 +# define KDF_F_PKEY_TLS1_PRF_DERIVE 101 + +/* Reason codes. */ +# define KDF_R_INVALID_DIGEST 100 +# define KDF_R_MISSING_PARAMETER 101 +# define KDF_R_VALUE_MISSING 102 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/lhash.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/lhash.h new file mode 100644 index 0000000..82d40c1 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/lhash.h @@ -0,0 +1,217 @@ +/* + * 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 + */ + +/* + * 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_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_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ + } \ + static ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + { \ + return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ + } \ + static ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ + } \ + static 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_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_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + } \ + static 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_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_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 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/md2.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/md2.h new file mode 100644 index 0000000..7faf8e3 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/md4.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/md4.h new file mode 100644 index 0000000..940e29d --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/md5.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/md5.h new file mode 100644 index 0000000..2deb772 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/mdc2.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/mdc2.h new file mode 100644 index 0000000..aabd2bf --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/modes.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/modes.h new file mode 100644 index 0000000..a04c6a5 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/modes.h @@ -0,0 +1,203 @@ +/* + * 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 + */ + +#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 diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/obj_mac.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/obj_mac.h new file mode 100644 index 0000000..f97f3ea --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/obj_mac.h @@ -0,0 +1,4577 @@ +/* + * WARNING: do not edit! + * Generated by crypto/objects/objects.pl + * + * 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 + */ + +#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_certicom_arc "certicom-arc" +#define NID_certicom_arc 677 +#define OBJ_certicom_arc OBJ_identified_organization,132L + +#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_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_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_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 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 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 Smartcardlogin" +#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 Universal 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_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 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_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_aes_128_xts "AES-128-XTS" +#define LN_aes_128_xts "aes-128-xts" +#define NID_aes_128_xts 913 + +#define SN_aes_256_xts "AES-256-XTS" +#define LN_aes_256_xts "aes-256-xts" +#define NID_aes_256_xts 914 + +#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 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 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_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_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_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_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_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 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_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 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_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_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 diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/objects.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/objects.h new file mode 100644 index 0000000..d4462fe --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/objects.h @@ -0,0 +1,1097 @@ +/* + * 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_OBJECTS_H +# define HEADER_OBJECTS_H + +# define USE_OBJ_MAC + +# ifdef USE_OBJ_MAC +# include +# else +# define SN_undef "UNDEF" +# define LN_undef "undefined" +# define NID_undef 0 +# define OBJ_undef 0L + +# define SN_Algorithm "Algorithm" +# define LN_algorithm "algorithm" +# define NID_algorithm 38 +# define OBJ_algorithm 1L,3L,14L,3L,2L + +# define LN_rsadsi "rsadsi" +# define NID_rsadsi 1 +# define OBJ_rsadsi 1L,2L,840L,113549L + +# define LN_pkcs "pkcs" +# define NID_pkcs 2 +# define OBJ_pkcs OBJ_rsadsi,1L + +# define SN_md2 "MD2" +# define LN_md2 "md2" +# define NID_md2 3 +# define OBJ_md2 OBJ_rsadsi,2L,2L + +# define SN_md5 "MD5" +# define LN_md5 "md5" +# define NID_md5 4 +# define OBJ_md5 OBJ_rsadsi,2L,5L + +# define SN_rc4 "RC4" +# define LN_rc4 "rc4" +# define NID_rc4 5 +# define OBJ_rc4 OBJ_rsadsi,3L,4L + +# define LN_rsaEncryption "rsaEncryption" +# define NID_rsaEncryption 6 +# define OBJ_rsaEncryption OBJ_pkcs,1L,1L + +# define SN_md2WithRSAEncryption "RSA-MD2" +# define LN_md2WithRSAEncryption "md2WithRSAEncryption" +# define NID_md2WithRSAEncryption 7 +# define OBJ_md2WithRSAEncryption OBJ_pkcs,1L,2L + +# define SN_md5WithRSAEncryption "RSA-MD5" +# define LN_md5WithRSAEncryption "md5WithRSAEncryption" +# define NID_md5WithRSAEncryption 8 +# define OBJ_md5WithRSAEncryption OBJ_pkcs,1L,4L + +# define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" +# define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" +# define NID_pbeWithMD2AndDES_CBC 9 +# define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs,5L,1L + +# define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" +# define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" +# define NID_pbeWithMD5AndDES_CBC 10 +# define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs,5L,3L + +# define LN_X500 "X500" +# define NID_X500 11 +# define OBJ_X500 2L,5L + +# define LN_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_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 + +/* Postal Address? PA */ + +/* should be "ST" (rfc1327) but MS uses 'S' */ +# define SN_stateOrProvinceName "ST" +# define LN_stateOrProvinceName "stateOrProvinceName" +# define NID_stateOrProvinceName 16 +# define OBJ_stateOrProvinceName OBJ_X509,8L + +# 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_rsa "RSA" +# define LN_rsa "rsa" +# define NID_rsa 19 +# define OBJ_rsa OBJ_X500,8L,1L,1L + +# define LN_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 LN_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_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_cfb64 "DES-CFB" +# define LN_des_cfb64 "des-cfb" +# define NID_des_cfb64 30 +/* IV + num */ +# define OBJ_des_cfb64 OBJ_algorithm,9L + +# define SN_des_cbc "DES-CBC" +# define LN_des_cbc "des-cbc" +# define NID_des_cbc 31 +/* IV */ +# define OBJ_des_cbc OBJ_algorithm,7L + +# define SN_des_ede "DES-EDE" +# define LN_des_ede "des-ede" +# define NID_des_ede 32 +/* ?? */ +# define OBJ_des_ede OBJ_algorithm,17L + +# define SN_des_ede3 "DES-EDE3" +# define LN_des_ede3 "des-ede3" +# define NID_des_ede3 33 + +# 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_cfb64 "IDEA-CFB" +# define LN_idea_cfb64 "idea-cfb" +# define NID_idea_cfb64 35 + +# define SN_idea_ecb "IDEA-ECB" +# define LN_idea_ecb "idea-ecb" +# define NID_idea_ecb 36 + +# 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_sha "SHA" +# define LN_sha "sha" +# define NID_sha 41 +# define OBJ_sha OBJ_algorithm,18L + +# define SN_shaWithRSAEncryption "RSA-SHA" +# define LN_shaWithRSAEncryption "shaWithRSAEncryption" +# define NID_shaWithRSAEncryption 42 +# define OBJ_shaWithRSAEncryption OBJ_algorithm,15L + +# 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_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_des_ofb64 "DES-OFB" +# define LN_des_ofb64 "des-ofb" +# define NID_des_ofb64 45 +# define OBJ_des_ofb64 OBJ_algorithm,8L + +# define SN_idea_ofb64 "IDEA-OFB" +# define LN_idea_ofb64 "idea-ofb" +# define NID_idea_ofb64 46 + +# define LN_pkcs9 "pkcs9" +# define NID_pkcs9 47 +# define OBJ_pkcs9 OBJ_pkcs,9L + +# define SN_pkcs9_emailAddress "Email" +# 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_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_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 + +/* I'm not sure about the object ID */ +# define SN_sha1 "SHA1" +# define LN_sha1 "sha1" +# define NID_sha1 64 +# define OBJ_sha1 OBJ_algorithm,26L +/* 28 Jun 1996 - eay */ +/* #define OBJ_sha1 1L,3L,14L,2L,26L,05L <- wrong */ + +# define SN_sha1WithRSAEncryption "RSA-SHA1" +# define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" +# define NID_sha1WithRSAEncryption 65 +# define OBJ_sha1WithRSAEncryption OBJ_pkcs,1L,5L + +# define SN_dsaWithSHA "DSA-SHA" +# define LN_dsaWithSHA "dsaWithSHA" +# define NID_dsaWithSHA 66 +# define OBJ_dsaWithSHA OBJ_algorithm,13L + +# define SN_dsa_2 "DSA-old" +# define LN_dsa_2 "dsaEncryption-old" +# define NID_dsa_2 67 +# define OBJ_dsa_2 OBJ_algorithm,12L + +/* proposed by microsoft to RSA */ +# define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" +# define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" +# define NID_pbeWithSHA1AndRC2_CBC 68 +# define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs,5L,11L + +/* + * proposed by microsoft to RSA as pbeWithSHA1AndRC4: it is now defined + * explicitly in PKCS#5 v2.0 as id-PBKDF2 which is something completely + * different. + */ +# define LN_id_pbkdf2 "PBKDF2" +# define NID_id_pbkdf2 69 +# define OBJ_id_pbkdf2 OBJ_pkcs,5L,12L + +# define SN_dsaWithSHA1_2 "DSA-SHA1-old" +# define LN_dsaWithSHA1_2 "dsaWithSHA1-old" +# define NID_dsaWithSHA1_2 70 +/* Got this one from 'sdn706r20.pdf' which is actually an NSA document :-) */ +# define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L + +# 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_desx_cbc "DESX-CBC" +# define LN_desx_cbc "desx-cbc" +# define NID_desx_cbc 80 + +# define SN_id_ce "id-ce" +# define NID_id_ce 81 +# define OBJ_id_ce 2L,5L,29L + +# 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_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_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_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_mdc2 "MDC2" +# define LN_mdc2 "mdc2" +# define NID_mdc2 95 +# define OBJ_mdc2 2L,5L,8L,3L,101L +/* An alternative? 1L,3L,14L,3L,2L,19L */ + +# define SN_mdc2WithRSA "RSA-MDC2" +# define LN_mdc2WithRSA "mdc2withRSA" +# define NID_mdc2WithRSA 96 +# define OBJ_mdc2WithRSA 2L,5L,8L,3L,100L + +# define SN_rc4_40 "RC4-40" +# define LN_rc4_40 "rc4-40" +# define NID_rc4_40 97 + +# define SN_rc2_40_cbc "RC2-40-CBC" +# define LN_rc2_40_cbc "rc2-40-cbc" +# define NID_rc2_40_cbc 98 + +# define SN_givenName "G" +# define LN_givenName "givenName" +# define NID_givenName 99 +# define OBJ_givenName OBJ_X509,42L + +# define SN_surname "S" +# define LN_surname "surname" +# define NID_surname 100 +# define OBJ_surname OBJ_X509,4L + +# define SN_initials "I" +# define LN_initials "initials" +# define NID_initials 101 +# define OBJ_initials OBJ_X509,43L + +# define SN_uniqueIdentifier "UID" +# define LN_uniqueIdentifier "uniqueIdentifier" +# define NID_uniqueIdentifier 102 +# define OBJ_uniqueIdentifier OBJ_X509,45L + +# 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_md5WithRSA "RSA-NP-MD5" +# define LN_md5WithRSA "md5WithRSA" +# define NID_md5WithRSA 104 +# define OBJ_md5WithRSA OBJ_algorithm,3L + +# define SN_serialNumber "SN" +# define LN_serialNumber "serialNumber" +# define NID_serialNumber 105 +# define OBJ_serialNumber OBJ_X509,5L + +# define SN_title "T" +# define LN_title "title" +# define NID_title 106 +# define OBJ_title OBJ_X509,12L + +# define SN_description "D" +# define LN_description "description" +# define NID_description 107 +# define OBJ_description OBJ_X509,13L + +/* CAST5 is CAST-128, I'm just sticking with the documentation */ +# define SN_cast5_cbc "CAST5-CBC" +# define LN_cast5_cbc "cast5-cbc" +# define NID_cast5_cbc 108 +# define OBJ_cast5_cbc 1L,2L,840L,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 1L,2L,840L,113533L,7L,66L,12L + +/*- + * This is one sun will soon be using :-( + * id-dsa-with-sha1 ID ::= { + * iso(1) member-body(2) us(840) x9-57 (10040) x9cm(4) 3 } + */ +# define SN_dsaWithSHA1 "DSA-SHA1" +# define LN_dsaWithSHA1 "dsaWithSHA1" +# define NID_dsaWithSHA1 113 +# define OBJ_dsaWithSHA1 1L,2L,840L,10040L,4L,3L + +# define NID_md5_sha1 114 +# define SN_md5_sha1 "MD5-SHA1" +# define LN_md5_sha1 "md5-sha1" + +# define SN_sha1WithRSA "RSA-SHA1-2" +# define LN_sha1WithRSA "sha1WithRSA" +# define NID_sha1WithRSA 115 +# define OBJ_sha1WithRSA OBJ_algorithm,29L + +# define SN_dsa "DSA" +# define LN_dsa "dsaEncryption" +# define NID_dsa 116 +# define OBJ_dsa 1L,2L,840L,10040L,4L,1L + +# define SN_ripemd160 "RIPEMD160" +# define LN_ripemd160 "ripemd160" +# define NID_ripemd160 117 +# define OBJ_ripemd160 1L,3L,36L,3L,2L,1L + +/* + * The name should actually be rsaSignatureWithripemd160, but I'm going to + * continue using the convention I'm using with the other ciphers + */ +# define SN_ripemd160WithRSA "RSA-RIPEMD160" +# define LN_ripemd160WithRSA "ripemd160WithRSA" +# define NID_ripemd160WithRSA 119 +# define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L + +/*- + * Taken from rfc2040 + * RC5_CBC_Parameters ::= SEQUENCE { + * version INTEGER (v1_0(16)), + * rounds INTEGER (8..127), + * blockSizeInBits INTEGER (64, 128), + * iv OCTET STRING OPTIONAL + * } + */ +# 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_rle_compression "RLE" +# define LN_rle_compression "run length compression" +# define NID_rle_compression 124 +# define OBJ_rle_compression 1L,1L,1L,1L,666L,1L + +# define SN_zlib_compression "ZLIB" +# define LN_zlib_compression "zlib compression" +# define NID_zlib_compression 125 +# define OBJ_zlib_compression 1L,1L,1L,1L,666L,2L + +# 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,37 + +# define SN_id_pkix "PKIX" +# define NID_id_pkix 127 +# define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L + +# define SN_id_kp "id-kp" +# define NID_id_kp 128 +# define OBJ_id_kp OBJ_id_pkix,3L + +/* PKIX extended key usage OIDs */ + +# 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_time_stamp "timeStamping" +# define LN_time_stamp "Time Stamping" +# define NID_time_stamp 133 +# define OBJ_time_stamp OBJ_id_kp,8L + +/* Additional extended key usage OIDs: Microsoft */ + +# 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 + +/* Additional usage: Netscape */ + +# 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_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_crl_reason "CRLReason" +# define LN_crl_reason "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_sxnet "SXNetID" +# define LN_sxnet "Strong Extranet ID" +# define NID_sxnet 143 +# define OBJ_sxnet 1L,3L,101L,1L,4L,1L + +/* PKCS12 and related OBJECT IDENTIFIERS */ + +# define OBJ_pkcs12 OBJ_pkcs,12L +# define OBJ_pkcs12_pbeids OBJ_pkcs12, 1 + +# 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 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 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 + +/* PKCS#5 v2 OIDs */ + +# define LN_pbes2 "PBES2" +# define NID_pbes2 161 +# define OBJ_pbes2 OBJ_pkcs,5L,13L + +# define LN_pbmac1 "PBMAC1" +# define NID_pbmac1 162 +# define OBJ_pbmac1 OBJ_pkcs,5L,14L + +# define LN_hmacWithSHA1 "hmacWithSHA1" +# define NID_hmacWithSHA1 163 +# define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L + +/* Policy Qualifier Ids */ + +# define LN_id_qt_cps "Policy Qualifier CPS" +# define SN_id_qt_cps "id-qt-cps" +# define NID_id_qt_cps 164 +# define OBJ_id_qt_cps OBJ_id_pkix,2L,1L + +# define LN_id_qt_unotice "Policy Qualifier User Notice" +# define SN_id_qt_unotice "id-qt-unotice" +# define NID_id_qt_unotice 165 +# define OBJ_id_qt_unotice OBJ_id_pkix,2L,2L + +# define SN_rc2_64_cbc "RC2-64-CBC" +# define LN_rc2_64_cbc "rc2-64-cbc" +# define NID_rc2_64_cbc 166 + +# define SN_SMIMECapabilities "SMIME-CAPS" +# define LN_SMIMECapabilities "S/MIME Capabilities" +# define NID_SMIMECapabilities 167 +# define OBJ_SMIMECapabilities OBJ_pkcs9,15L + +# define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" +# define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" +# define NID_pbeWithMD2AndRC2_CBC 168 +# define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs,5L,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_pkcs,5L,6L + +# define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" +# define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" +# define NID_pbeWithSHA1AndDES_CBC 170 +# define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs,5L,10L + +/* Extension request OIDs */ + +# define LN_ms_ext_req "Microsoft Extension Request" +# define SN_ms_ext_req "msExtReq" +# define NID_ms_ext_req 171 +# define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L + +# define LN_ext_req "Extension Request" +# define SN_ext_req "extReq" +# define NID_ext_req 172 +# define OBJ_ext_req OBJ_pkcs9,14L + +# define SN_name "name" +# define LN_name "name" +# define NID_name 173 +# define OBJ_name OBJ_X509,41L + +# define SN_dnQualifier "dnQualifier" +# define LN_dnQualifier "dnQualifier" +# define NID_dnQualifier 174 +# define OBJ_dnQualifier OBJ_X509,46L + +# define SN_id_pe "id-pe" +# define NID_id_pe 175 +# define OBJ_id_pe OBJ_id_pkix,1L + +# define SN_id_ad "id-ad" +# define NID_id_ad 176 +# define OBJ_id_ad OBJ_id_pkix,48L + +# 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_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_OCSP_sign "OCSPSigning" +# define LN_OCSP_sign "OCSP Signing" +# define NID_OCSP_sign 180 +# define OBJ_OCSP_sign OBJ_id_kp,9L +# endif /* USE_OBJ_MAC */ + +# 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); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_OBJ_strings(void); + +/* Error codes for the OBJ functions. */ + +/* Function codes. */ +# define OBJ_F_OBJ_ADD_OBJECT 105 +# 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 + +/* Reason codes. */ +# define OBJ_R_OID_EXISTS 102 +# define OBJ_R_UNKNOWN_NID 101 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ocsp.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ocsp.h new file mode 100644 index 0000000..08debc5 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ocsp.h @@ -0,0 +1,412 @@ +/* + * 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_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 + +#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) +DECLARE_ASN1_FUNCTIONS(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 OCSP_REQUEST_sign(o,pkey,md) \ + ASN1_item_sign(ASN1_ITEM_rptr(OCSP_REQINFO),\ + &o->optionalSignature->signatureAlgorithm,NULL,\ + o->optionalSignature->signature,&o->tbsRequest,pkey,md) + +# define OCSP_BASICRESP_sign(o,pkey,md,d) \ + ASN1_item_sign(ASN1_ITEM_rptr(OCSP_RESPDATA),&o->signatureAlgorithm,NULL,\ + o->signature,&o->tbsResponseData,pkey,md) + +# define OCSP_REQUEST_verify(a,r) ASN1_item_verify(ASN1_ITEM_rptr(OCSP_REQINFO),\ + &a->optionalSignature->signatureAlgorithm,\ + a->optionalSignature->signature,&a->tbsRequest,r) + +# define OCSP_BASICRESP_verify(a,r,d) ASN1_item_verify(ASN1_ITEM_rptr(OCSP_RESPDATA),\ + &a->signatureAlgorithm,a->signature,&a->tbsResponseData,r) + +# 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_i2d(OCSP_REQ_CTX *rctx, const ASN1_ITEM *it, + ASN1_VALUE *val); +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); + +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_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(OCSP_CERTID *a, OCSP_CERTID *b); +int OCSP_id_cmp(OCSP_CERTID *a, 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_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); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_OCSP_strings(void); + +/* Error codes for the OCSP functions. */ + +/* 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_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 + +/* 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 + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/opensslconf.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/opensslconf.h new file mode 100644 index 0000000..91fefc2 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/opensslconf.h @@ -0,0 +1,175 @@ +/* + * WARNING: do not edit! + * Generated by makefile from ..\include\openssl\opensslconf.h.in + * + * Copyright 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 + */ + +#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_WIN64A +# define OPENSSL_SYS_WIN64A 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_NO_ASAN +# define OPENSSL_NO_ASAN +#endif +#ifndef OPENSSL_NO_ASM +# define OPENSSL_NO_ASM +#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_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_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_AFALGENG +# define OPENSSL_NO_AFALGENG +#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. + */ +#if defined(OPENSSL_NO_DEPRECATED) +# define DECLARE_DEPRECATED(f) +#elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +#else +# define DECLARE_DEPRECATED(f) f; +#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 + +#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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/opensslv.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/opensslv.h new file mode 100644 index 0000000..cffeb01 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/opensslv.h @@ -0,0 +1,105 @@ +/* + * 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_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 0x10100060L +# ifdef OPENSSL_FIPS +# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.0f-fips-dev xx XXX xxxx" +# else +# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.0f-dev xx XXX xxxx" +# endif + +/*- + * 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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ossl_typ.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ossl_typ.h new file mode 100644 index 0000000..129a67f --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ossl_typ.h @@ -0,0 +1,190 @@ +/* + * Copyright 2001-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_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 ec_key_st EC_KEY; +typedef struct ec_key_method_st EC_KEY_METHOD; + +typedef struct rand_meth_st RAND_METHOD; + +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 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; + +#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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pem.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pem.h new file mode 100644 index 0000000..2375d63 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pem.h @@ -0,0 +1,501 @@ +/* + * 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_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 + +typedef struct pem_recip_st { + char *name; + X509_NAME *dn; + int cipher; + int key_enc; + /* char iv[8]; unused and wrong size */ +} PEM_USER; + +typedef struct pem_ctx_st { + int type; /* what type of object */ + struct { + int version; + int mode; + } proc_type; + + char *domain; + + struct { + int cipher; + /*- + unused, and wrong size + unsigned char iv[8]; */ + } DEK_info; + + PEM_USER *originator; + + int num_recipient; + PEM_USER **recipient; + +/*- + XXX(ben): don#t think this is used! + STACK *x509_chain; / * certificate chain */ + EVP_MD *md; /* signature type */ + + int md_enc; /* is the md encrypted or not? */ + int md_len; /* length of md_data */ + char *md_data; /* message digest, could be pkey encrypted */ + + EVP_CIPHER *dec; /* date encryption cipher */ + int key_len; /* key length */ + unsigned char *key; /* key */ + /*- + unused, and wrong size + unsigned char iv[8]; */ + + int data_enc; /* is the data encrypted */ + int data_len; + unsigned char *data; +} PEM_CTX; + +/* + * 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); +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); + +int PEM_def_callback(char *buf, int num, int w, void *key); +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 + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_PEM_strings(void); + +/* Error codes for the PEM functions. */ + +/* 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_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_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_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_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 + +/* 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 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pem2.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pem2.h new file mode 100644 index 0000000..cfe73f1 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pem2.h @@ -0,0 +1,20 @@ +/* + * 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 + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef HEADER_PEM_H +int ERR_load_PEM_strings(void); +#endif + +#ifdef __cplusplus +} +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pkcs12.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pkcs12.h new file mode 100644 index 0000000..deaded9 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pkcs12.h @@ -0,0 +1,282 @@ +/* + * 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 + +#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); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_PKCS12_strings(void); + +/* Error codes for the PKCS12 functions. */ + +/* Function codes. */ +# 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 + +/* 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 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pkcs7.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pkcs7.h new file mode 100644 index 0000000..691f722 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/pkcs7.h @@ -0,0 +1,404 @@ +/* + * 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 + +#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); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_PKCS7_strings(void); + +/* Error codes for the PKCS7 functions. */ + +/* 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 + +/* 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 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rand.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rand.h new file mode 100644 index 0000000..d521ae1 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rand.h @@ -0,0 +1,89 @@ +/* + * 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_RAND_H +# define HEADER_RAND_H + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Already defined in ossl_typ.h */ +/* typedef struct rand_meth_st RAND_METHOD; */ + +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 entropy); + int (*pseudorand) (unsigned char *buf, int num); + int (*status) (void); +}; + +# ifdef BN_DEBUG +extern int rand_predictable; +# endif + +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); +DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num)) +void RAND_seed(const void *buf, int num); +#if defined(__ANDROID__) && defined(__NDK_FPABI__) +__NDK_FPABI__ /* __attribute__((pcs("aapcs"))) on ARM */ +#endif +void RAND_add(const void *buf, int num, double entropy); +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 + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_RAND_strings(void); + +/* Error codes for the RAND functions. */ + +/* Function codes. */ +# define RAND_F_RAND_BYTES 100 + +/* Reason codes. */ +# define RAND_R_PRNG_NOT_SEEDED 100 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rc2.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rc2.h new file mode 100644 index 0000000..585f9e4 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rc4.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rc4.h new file mode 100644 index 0000000..86803b3 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rc5.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rc5.h new file mode 100644 index 0000000..793f88e --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ripemd.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ripemd.h new file mode 100644 index 0000000..c42026a --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rsa.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rsa.h new file mode 100644 index 0000000..d97d6e0 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/rsa.h @@ -0,0 +1,590 @@ +/* + * 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_RSA_H +# define HEADER_RSA_H + +# include + +# ifndef OPENSSL_NO_RSA +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# 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 + +# 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) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, -1, EVP_PKEY_CTRL_RSA_PADDING, \ + pad, NULL) + +# define EVP_PKEY_CTX_get_rsa_padding(ctx, ppad) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, -1, \ + EVP_PKEY_CTRL_GET_RSA_PADDING, 0, ppad) + +# define EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \ + (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ + EVP_PKEY_CTRL_RSA_PSS_SALTLEN, \ + len, NULL) + +# define EVP_PKEY_CTX_get_rsa_pss_saltlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \ + (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) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_BITS, bits, NULL) + +# define EVP_PKEY_CTX_set_rsa_keygen_pubexp(ctx, pubexp) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP, 0, pubexp) + +# define EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \ + 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_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) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \ + 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_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 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); +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); +void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, const BIGNUM **dmq1, + const BIGNUM **iqmp); +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); +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); + +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_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); + +const RSA_METHOD *RSA_null_method(void); + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey) + +typedef struct rsa_pss_params_st { + X509_ALGOR *hashAlgorithm; + X509_ALGOR *maskGenAlgorithm; + ASN1_INTEGER *saltLength; + ASN1_INTEGER *trailerField; +} RSA_PSS_PARAMS; + +DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) + +typedef struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; +} 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(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)); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_RSA_strings(void); + +/* Error codes for the RSA functions. */ + +/* 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_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_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_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_PRINT 115 +# define RSA_F_RSA_PRINT_FP 116 +# define RSA_F_RSA_PRIV_ENCODE 138 +# 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 + +/* 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_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_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_SIZE_TOO_SMALL 120 +# define RSA_R_LAST_OCTET_INVALID 134 +# define RSA_R_MODULUS_TOO_LARGE 105 +# define RSA_R_NO_PUBLIC_EXPONENT 140 +# define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 +# 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_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 + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/safestack.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/safestack.h new file mode 100644 index 0000000..9fe733c --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/safestack.h @@ -0,0 +1,164 @@ +/* + * 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_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_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ + } \ + static 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_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + } \ + static ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ + } \ + static ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_free((OPENSSL_STACK *)sk); \ + } \ + static ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ + } \ + static ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + { \ + return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ + } \ + static 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_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ + } \ + static ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ + } \ + static 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_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_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_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static 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_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ + } \ + static ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ + } \ + static 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_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_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) + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/seed.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/seed.h new file mode 100644 index 0000000..bb97131 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/seed.h @@ -0,0 +1,98 @@ +/* + * 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 + +# if !defined(NO_SYS_TYPES_H) +# include +# endif + +# 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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/sha.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/sha.h new file mode 100644 index 0000000..6a1eb0d --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/srp.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/srp.h new file mode 100644 index 0000000..f2b6ec7 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/srp.h @@ -0,0 +1,131 @@ +/* + * 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 + */ + +#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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/srtp.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/srtp.h new file mode 100644 index 0000000..5ddfa46 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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 *ctx, 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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ssl.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ssl.h new file mode 100644 index 0000000..b2132f3 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ssl.h @@ -0,0 +1,2548 @@ +/* + * 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 + */ + +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * ECC cipher suite support in OpenSSL originally developed by + * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. + */ +/* ==================================================================== + * Copyright 2005 Nokia. All rights reserved. + * + * The portions of the attached software ("Contribution") is developed by + * Nokia Corporation and is licensed pursuant to the OpenSSL open source + * license. + * + * The Contribution, originally written by Mika Kousa and Pasi Eronen of + * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites + * support (see RFC 4279) to OpenSSL. + * + * No patent licenses or other rights except those expressly stated in + * the OpenSSL open source license shall be deemed granted or received + * expressly, by implication, estoppel, or otherwise. + * + * No assurances are provided by Nokia that the Contribution does not + * infringe the patent or other intellectual property rights of any third + * party or that the license provides you with all the necessary rights + * to make use of the Contribution. + * + * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN + * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA + * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY + * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR + * OTHERWISE. + */ + +#ifndef HEADER_SSL_H +# define HEADER_SSL_H + +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# include +# endif +# 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" +# define SSL_TXT_kDHd "kDHd" +# define SSL_TXT_kDH "kDH" +# define SSL_TXT_kEDH "kEDH"/* alias for kDHE */ +# define SSL_TXT_kDHE "kDHE" +# define SSL_TXT_kECDHr "kECDHr" +# define SSL_TXT_kECDHe "kECDHe" +# define SSL_TXT_kECDH "kECDH" +# 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" +# define SSL_TXT_aECDH "aECDH" +# 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_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'. + */ +# define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* + * 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); + +/* 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 for verification callback */ +typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); + +/* Allow initial connection to servers that don't support RI */ +# define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004U +# define SSL_OP_TLSEXT_PADDING 0x00000010U +# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040U + +/* + * 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 +/* + * 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 + +# 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_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) +# define SSL_OP_NO_DTLS_MASK (SSL_OP_NO_DTLSv1|SSL_OP_NO_DTLSv1_2) + +/* + * 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 put onto a free-list in the context or + * just freed (depending on the context's setting for freelist_max_len). + */ +# 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 + +/* 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 + +/* + * 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) (const 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)); +# ifndef OPENSSL_NO_NEXTPROTONEG +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + int (*cb) (SSL *ssl, + const unsigned char + **out, + unsigned int *outlen, + void *arg), void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + int (*cb) (SSL *ssl, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg), void *arg); +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +# 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); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + int (*cb) (SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg), 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 +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, + unsigned int (*psk_client_callback) (SSL + *ssl, + const + char + *hint, + char + *identity, + unsigned + int + max_identity_len, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +void SSL_set_psk_client_callback(SSL *ssl, + unsigned int (*psk_client_callback) (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_server_callback(SSL_CTX *ctx, + unsigned int (*psk_server_callback) (SSL + *ssl, + const + char + *identity, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +void SSL_set_psk_server_callback(SSL *ssl, + unsigned int (*psk_server_callback) (SSL + *ssl, + const + char + *identity, + unsigned + char + *psk, + unsigned + int + max_psk_len)); +__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 + +/* 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_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 + +/* 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_MAC_FLAG_READ_MAC_STREAM 1 +# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 + +#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)) + + +/* + * 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 +} 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(SSL *s); +int SSL_in_before(SSL *s); +int SSL_is_init_finished(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 2 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 OpenSSL_add_ssl_algorithms() SSL_library_init() +# if OPENSSL_API_COMPAT < 0x10100000L +# 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_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_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_CURVES 90 +# define SSL_CTRL_SET_CURVES 91 +# define SSL_CTRL_SET_CURVES_LIST 92 +# define SSL_CTRL_GET_SHARED_CURVE 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_SERVER_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_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_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_set0_chain(ctx,sk) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)sk) +# define SSL_set1_chain(ctx,sk) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)sk) +# define SSL_add0_chain_cert(ctx,x509) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)x509) +# define SSL_add1_chain_cert(ctx,x509) \ + SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)x509) +# define SSL_get0_chain_certs(ctx,px509) \ + SSL_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_clear_chain_certs(ctx) \ + SSL_set0_chain(ctx,NULL) +# define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_select_current_cert(ctx,x509) \ + SSL_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)x509) +# define SSL_set_current_cert(ctx,op) \ + SSL_ctrl(ctx,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_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_get1_curves(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_GET_CURVES,0,(char *)s) +# define SSL_CTX_set1_curves(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURVES,clistlen,(char *)clist) +# define SSL_CTX_set1_curves_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURVES_LIST,0,(char *)s) +# define SSL_set1_curves(ctx, clist, clistlen) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CURVES,clistlen,(char *)clist) +# define SSL_set1_curves_list(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CURVES_LIST,0,(char *)s) +# define SSL_get_shared_curve(s, n) \ + SSL_ctrl(s,SSL_CTRL_GET_SHARED_CURVE,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(ctx, slist, slistlen) \ + SSL_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)slist) +# define SSL_set1_sigalgs_list(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)s) +# 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(ctx, slist, slistlen) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,clistlen,(int *)slist) +# define SSL_set1_client_sigalgs_list(ctx, s) \ + SSL_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)s) +# 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_peer_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) +# define SSL_get_server_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_SERVER_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_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) + +#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 *); +__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 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 uint32_t SSL_CIPHER_get_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 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 len); +__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); +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); + +/* 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_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 const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); +__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); +__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 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 SSL_SESSION *SSL_SESSION_new(void); +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); +__owur int SSL_CTX_add_session(SSL_CTX *s, SSL_SESSION *c); +int SSL_CTX_remove_session(SSL_CTX *, SSL_SESSION *c); +__owur int SSL_CTX_set_generate_session_id(SSL_CTX *, GEN_SESSION_CB); +__owur int SSL_set_generate_session_id(SSL *, GEN_SESSION_CB); +__owur int SSL_has_matching_session_id(const SSL *ssl, 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); + +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 *s, int purpose); +__owur int SSL_set_purpose(SSL *s, int purpose); +__owur int SSL_CTX_set_trust(SSL_CTX *s, int trust); +__owur int SSL_set_trust(SSL *s, 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 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 + +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_connect(SSL *ssl); +__owur int SSL_read(SSL *ssl, void *buf, int num); +__owur int SSL_peek(SSL *ssl, void *buf, int num); +__owur int SSL_write(SSL *ssl, const void *buf, int num); +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)); + +__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)) /* SSLv3 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_client_method(void)) /* SSLv3 */ +# 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)) /* TLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_client_method(void)) /* TLSv1.0 */ +# 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)) /* TLSv1.1 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_client_method(void)) /* TLSv1.1 */ +# 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)) /* TLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_client_method(void)) /* TLSv1.2 */ +# 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)) /* DTLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_client_method(void)) /* DTLSv1.0 */ +# endif + +# ifndef OPENSSL_NO_DTLS1_2_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_method(void)) /* DTLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_server_method(void)) /* DTLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_client_method(void)) /* DTLSv1.2 */ +#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 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_renegotiate(SSL *s); +__owur int SSL_renegotiate_abbreviated(SSL *s); +__owur int SSL_renegotiate_pending(SSL *s); +int SSL_shutdown(SSL *s); + +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(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_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(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 *ssl, + unsigned char *out, size_t outlen); + +#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(SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(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); + +/* 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 tls_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)); +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_cache_hit(s) SSL_session_reused(s) +# endif + +__owur int SSL_session_reused(SSL *s); +__owur int SSL_is_server(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); +__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +# 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 + +extern const char SSL_version_str[]; + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_SSL_strings(void); + +/* Error codes for the SSL functions. */ + +/* Function codes. */ +# define SSL_F_CHECK_SUITEB_CIPHER_LIST 331 +# define SSL_F_CT_MOVE_SCTS 345 +# define SSL_F_CT_STRICT 349 +# 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_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_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_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_OPENSSL_INIT_SSL 342 +# define SSL_F_OSSL_STATEM_CLIENT_READ_TRANSITION 417 +# define SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION 418 +# define SSL_F_READ_STATE_MACHINE 352 +# 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_FINAL_FINISH_MAC 285 +# 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_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_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_SRVR_ECC_CERT_AND_ALG 279 +# 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_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_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_FILE 337 +# define SSL_F_SSL_DANE_DUP 403 +# define SSL_F_SSL_DANE_ENABLE 395 +# 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_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_INIT_WBIO_BUFFER 184 +# define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 +# define SSL_F_SSL_MODULE_INIT 392 +# define SSL_F_SSL_NEW 186 +# 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_READ 223 +# 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_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_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_WRITE 208 +# define SSL_F_STATE_MACHINE 353 +# define SSL_F_TLS12_CHECK_PEER_SIGALG 333 +# 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_SETUP_KEY_BLOCK 211 +# define SSL_F_TLS1_SET_SERVER_SIGALGS 335 +# define SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK 354 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST 372 +# 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 355 +# define SSL_F_TLS_CONSTRUCT_CLIENT_HELLO 356 +# define SSL_F_TLS_CONSTRUCT_CLIENT_KEY_EXCHANGE 357 +# define SSL_F_TLS_CONSTRUCT_CLIENT_VERIFY 358 +# define SSL_F_TLS_CONSTRUCT_FINISHED 359 +# define SSL_F_TLS_CONSTRUCT_HELLO_REQUEST 373 +# define SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET 428 +# define SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE 374 +# define SSL_F_TLS_CONSTRUCT_SERVER_DONE 375 +# define SSL_F_TLS_CONSTRUCT_SERVER_HELLO 376 +# define SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE 377 +# define SSL_F_TLS_GET_MESSAGE_BODY 351 +# define SSL_F_TLS_GET_MESSAGE_HEADER 387 +# 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_CERTIFICATE_REQUEST 361 +# define SSL_F_TLS_PROCESS_CERT_STATUS 362 +# 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_FINISHED 364 +# define SSL_F_TLS_PROCESS_KEY_EXCHANGE 365 +# 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_USE_CERTIFICATE_CHAIN_FILE 220 + +/* Reason codes. */ +# 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_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_ECC_CERT 304 +# define SSL_R_BAD_ECPOINT 306 +# define SSL_R_BAD_HANDSHAKE_LENGTH 332 +# define SSL_R_BAD_HELLO_REQUEST 105 +# define SSL_R_BAD_LENGTH 271 +# define SSL_R_BAD_PACKET_LENGTH 115 +# define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +# 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_BIO_NOT_SET 128 +# define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 +# define SSL_R_BN_LIB 130 +# 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_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_EXTRA_DATA_IN_MESSAGE 153 +# 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_SUITEB_DIGEST 380 +# define SSL_R_INAPPROPRIATE_FALLBACK 373 +# define SSL_R_INCONSISTENT_COMPRESSION 340 +# define SSL_R_INCONSISTENT_EXTMS 104 +# define SSL_R_INVALID_COMMAND 280 +# define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +# define SSL_R_INVALID_CONFIGURATION_NAME 113 +# define SSL_R_INVALID_CT_VALIDATION_TYPE 212 +# 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_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_RSA_CERTIFICATE 168 +# define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 +# define SSL_R_MISSING_RSA_SIGNING_CERT 170 +# define SSL_R_MISSING_SRP_PARAM 358 +# define SSL_R_MISSING_TMP_DH_KEY 171 +# define SSL_R_MISSING_TMP_ECDH_KEY 311 +# 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_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_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_SIGNATURE_ALGORITHMS 376 +# define SSL_R_NO_SRTP_PROFILES 359 +# 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_OLD_SESSION_CIPHER_NOT_RETURNED 197 +# define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +# 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_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_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_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_TOO_LONG 408 +# 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_VERSION_MISMATCH 210 +# 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_WARN_ALERTS 409 +# 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_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_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 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ssl2.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ssl2.h new file mode 100644 index 0000000..5321bd2 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ssl3.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ssl3.h new file mode 100644 index 0000000..4ca434e --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ssl3.h @@ -0,0 +1,310 @@ +/* + * 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 + */ + +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * ECC cipher suite support in OpenSSL originally developed by + * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. + */ + +#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 + +# 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) + +/* + * 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_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 type for SSL/TLS header info */ +# define SSL3_RT_HEADER 0x100 + +# 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 either for SSLv3 and TLSv1. + */ +# define SSL3_CT_NUMBER 9 + +# 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 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_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_STATUS 22 +# ifndef OPENSSL_NO_NEXTPROTONEG +# define SSL3_MT_NEXT_PROTO 67 +# endif +# 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 0x01 +# define SSL3_CC_WRITE 0x02 +# define SSL3_CC_CLIENT 0x10 +# define SSL3_CC_SERVER 0x20 +# 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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/stack.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/stack.h new file mode 100644 index 0000000..23ad3b8 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/stack.h @@ -0,0 +1,78 @@ +/* + * 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_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); +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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/symhacks.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/symhacks.h new file mode 100644 index 0000000..caf1f1a --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/symhacks.h @@ -0,0 +1,52 @@ +/* + * 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_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 + +/* + * These functions do not seem to exist! However, I'm paranoid... Original + * command in x509v3.h: These functions are being redefined in another + * directory, and clash when the linker is case-insensitive, so let's hide + * them a little, by giving them an extra 'o' at the beginning of the name... + */ +# undef X509v3_cleanup_extensions +# define X509v3_cleanup_extensions oX509v3_cleanup_extensions +# undef X509v3_add_extension +# define X509v3_add_extension oX509v3_add_extension +# undef X509v3_add_netscape_extensions +# define X509v3_add_netscape_extensions oX509v3_add_netscape_extensions +# undef X509v3_add_standard_extensions +# define X509v3_add_standard_extensions oX509v3_add_standard_extensions + +/* 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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/tls1.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/tls1.h new file mode 100644 index 0000000..23e382c --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/tls1.h @@ -0,0 +1,972 @@ +/* + * 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 + */ + +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * + * Portions of the attached software ("Contribution") are developed by + * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project. + * + * The Contribution is licensed pursuant to the OpenSSL open source + * license provided above. + * + * ECC cipher suite support in OpenSSL originally written by + * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories. + * + */ +/* ==================================================================== + * Copyright 2005 Nokia. All rights reserved. + * + * The portions of the attached software ("Contribution") is developed by + * Nokia Corporation and is licensed pursuant to the OpenSSL open source + * license. + * + * The Contribution, originally written by Mika Kousa and Pasi Eronen of + * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites + * support (see RFC 4279) to OpenSSL. + * + * No patent licenses or other rights except those expressly stated in + * the OpenSSL open source license shall be deemed granted or received + * expressly, by implication, estoppel, or otherwise. + * + * No assurances are provided by Nokia that the Contribution does not + * infringe the patent or other intellectual property rights of any third + * party or that the license provides you with all the necessary rights + * to make use of the Contribution. + * + * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN + * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA + * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY + * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR + * OTHERWISE. + */ + +#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 TLS_MAX_VERSION TLS1_2_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 +/* 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 */ +# define TLSEXT_TYPE_elliptic_curves 10 +# 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 + +/* 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 + +# 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 + * zero otherwise. + */ +__owur int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *p, size_t plen, + int use_context); + +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,(char *)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, (void *)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, (void *)arg) + +# define SSL_set_tlsext_status_exts(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS,0, (void *)arg) + +# define SSL_get_tlsext_status_ids(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg) + +# define SSL_set_tlsext_status_ids(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS,0, (void *)arg) + +# define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ +SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,0, (void *)arg) + +# define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ +SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,arglen, (void *)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, (void *)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 (**)(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, (void *)arg +# define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ +SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0, (void *)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 + +/* + * 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" + +# 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 9 + +# 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\x63\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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ts.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ts.h new file mode 100644 index 0000000..a565982 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ts.h @@ -0,0 +1,643 @@ +/* + * 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_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 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); + +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); + +/* 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); + +/* -------------------------------------------------- */ +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_TS_strings(void); + +/* Error codes for the TS functions. */ + +/* 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_CERT_ID_NEW_INIT 113 +# define TS_F_ESS_SIGNING_CERT_NEW_INIT 114 +# 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 + +/* 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_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 + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/txt_db.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/txt_db.h new file mode 100644 index 0000000..0e6c943 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/txt_db.h @@ -0,0 +1,57 @@ +/* + * 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_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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ui.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ui.h new file mode 100644 index 0000000..49e763d --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/ui.h @@ -0,0 +1,378 @@ +/* + * Copyright 2001-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_UI_H +# define HEADER_UI_H + +# include + +# ifndef OPENSSL_NO_UI + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# include + +#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); +/* 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); + +/* When all strings have been added, process the whole thing. */ +int UI_process(UI *ui); + +/* + * Give a user interface parametrised 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); + +/* The method with all the built-in thingies */ +UI_METHOD *UI_OpenSSL(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_prompt_constructor(UI_METHOD *method, + char *(*prompt_constructor) (UI *ui, + const char + *object_desc, + const char + *object_name)); +int (*UI_method_get_opener(UI_METHOD *method)) (UI *); +int (*UI_method_get_writer(UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_flusher(UI_METHOD *method)) (UI *); +int (*UI_method_get_reader(UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_closer(UI_METHOD *method)) (UI *); +char *(*UI_method_get_prompt_constructor(UI_METHOD *method)) (UI *, + const char *, + const char *); + +/* + * 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); +/* + * 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); + +/* 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); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_UI_strings(void); + +/* Error codes for the UI functions. */ + +/* 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_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_VERIFY_STRING 106 +# define UI_F_UI_GET0_RESULT 107 +# define UI_F_UI_NEW_METHOD 104 +# define UI_F_UI_PROCESS 113 +# define UI_F_UI_SET_RESULT 105 + +/* 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 + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/whrlpool.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/whrlpool.h new file mode 100644 index 0000000..20ea350 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/x509.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/x509.h new file mode 100644 index 0000000..ee98df8 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/x509.h @@ -0,0 +1,1123 @@ +/* + * 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 + */ + +/* ==================================================================== + * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. + * ECDH support in OpenSSL originally developed by + * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. + */ + +#ifndef HEADER_X509_H +# define HEADER_X509_H + +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# endif + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# 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 were sent to me by Pat Richard + * and are used to manipulate Netscapes 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; + +#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); + +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); + +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_NAME(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); +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(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(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) + +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); + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_X509_strings(void); + +/* Error codes for the X509 functions. */ + +/* 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_NETSCAPE_SPKI_B64_DECODE 129 +# define X509_F_NETSCAPE_SPKI_B64_ENCODE 130 +# 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_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_NAME_ADD_ENTRY 113 +# 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_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_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_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 + +/* 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_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_CERT_SET_FOR_US_TO_VERIFY 105 +# 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 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/x509_vfy.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/x509_vfy.h new file mode 100644 index 0000000..1aa0a33 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/x509_vfy.h @@ -0,0 +1,544 @@ +/* + * 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_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 + +/* 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); +X509_CRL *X509_OBJECT_get0_X509_CRL(X509_OBJECT *a); +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_cert X509_STORE_CTX_get1_certs +# 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); + +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_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); +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/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/x509v3.h b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/x509v3.h new file mode 100644 index 0000000..1d8ef87 --- /dev/null +++ b/dependencies/YARA.OpenSSL.x64.1.1.0/include/openssl/x509v3.h @@ -0,0 +1,1006 @@ +/* + * 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_X509V3_H +# define HEADER_X509V3_H + +# 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 +/* Self signed */ +# define EXFLAG_SS 0x2000 + +# 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(GENERAL_NAME *a, int *ptype); +int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, + ASN1_OBJECT *oid, ASN1_TYPE *value); +int GENERAL_NAME_get0_otherName(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); + +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 */ + +/* BEGIN ERROR CODES */ +/* + * The following lines are auto generated by the script mkerr.pl. Any changes + * made after this point may be overwritten when the script is next run. + */ + +int ERR_load_X509V3_strings(void); + +/* Error codes for the X509V3 functions. */ + +/* 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_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_NOTICE_SECTION 132 +# define X509V3_F_NREF_NOS 133 +# 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_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_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 + +/* 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 + +# ifdef __cplusplus +} +# endif +#endif diff --git a/dependencies/YARA.OpenSSL.x64.1.1.0/lib/libcrypto.lib b/dependencies/YARA.OpenSSL.x64.1.1.0/lib/libcrypto.lib new file mode 100644 index 0000000000000000000000000000000000000000..6ef1a1dd9d15fc5c312bf3ac605188af9e201f2f GIT binary patch literal 17119004 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

NP_A$tow1sfa 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