From d531f5682895bd16d0a619fdcaebe66413aba90f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C5=A0alda?= Date: Thu, 17 Aug 2023 09:04:39 +0200 Subject: [PATCH] sd generator --- .vscode/launch.json | 32 + .vscode/settings.json | 71 + .vscode/tasks.json | 84 + Makefile | 100 + README.md | 10 +- docker-compose.yml | 13 + docker/Dockerfile | 20 + docker/Makefile | 100 + docker/generate.sh | 5 + docker/start.sh | 7 + include/openssl/aes.h | 111 + include/openssl/asn1.h | 1131 ++++++ include/openssl/asn1_mac.h | 10 + include/openssl/asn1err.h | 140 + include/openssl/asn1t.h | 946 +++++ include/openssl/async.h | 96 + include/openssl/asyncerr.h | 29 + include/openssl/bio.h | 887 +++++ include/openssl/bioerr.h | 65 + include/openssl/blowfish.h | 78 + include/openssl/bn.h | 584 +++ include/openssl/bnerr.h | 47 + include/openssl/buffer.h | 62 + include/openssl/buffererr.h | 25 + include/openssl/camellia.h | 117 + include/openssl/cast.h | 71 + include/openssl/cmac.h | 52 + include/openssl/cmp.h | 596 +++ include/openssl/cmp_util.h | 56 + include/openssl/cmperr.h | 114 + include/openssl/cms.h | 493 +++ include/openssl/cmserr.h | 123 + include/openssl/comp.h | 59 + include/openssl/comperr.h | 31 + include/openssl/conf.h | 214 + include/openssl/conf_api.h | 46 + include/openssl/conferr.h | 51 + include/openssl/configuration.h | 134 + include/openssl/conftypes.h | 44 + include/openssl/core.h | 233 ++ include/openssl/core_dispatch.h | 943 +++++ include/openssl/core_names.h | 559 +++ include/openssl/core_object.h | 41 + include/openssl/crmf.h | 227 ++ include/openssl/crmferr.h | 50 + include/openssl/crypto.h | 558 +++ include/openssl/cryptoerr.h | 55 + include/openssl/cryptoerr_legacy.h | 1466 +++++++ include/openssl/ct.h | 573 +++ include/openssl/cterr.h | 45 + include/openssl/decoder.h | 133 + include/openssl/decodererr.h | 28 + include/openssl/des.h | 211 + include/openssl/dh.h | 331 ++ include/openssl/dherr.h | 57 + include/openssl/dsa.h | 280 ++ include/openssl/dsaerr.h | 44 + include/openssl/dtls1.h | 57 + include/openssl/e_os2.h | 308 ++ include/openssl/ebcdic.h | 39 + include/openssl/ec.h | 1572 ++++++++ include/openssl/ecdh.h | 10 + include/openssl/ecdsa.h | 10 + include/openssl/ecerr.h | 104 + include/openssl/encoder.h | 124 + include/openssl/encodererr.h | 28 + include/openssl/engine.h | 833 ++++ include/openssl/engineerr.h | 63 + include/openssl/err.h | 504 +++ include/openssl/ess.h | 128 + include/openssl/esserr.h | 32 + include/openssl/evp.h | 2173 ++++++++++ include/openssl/evperr.h | 134 + include/openssl/fips_names.h | 68 + include/openssl/fipskey.h | 36 + include/openssl/hmac.h | 62 + include/openssl/http.h | 109 + include/openssl/httperr.h | 55 + include/openssl/idea.h | 82 + include/openssl/kdf.h | 138 + include/openssl/kdferr.h | 16 + include/openssl/lhash.h | 331 ++ include/openssl/macros.h | 325 ++ include/openssl/md2.h | 56 + include/openssl/md4.h | 63 + include/openssl/md5.h | 62 + include/openssl/mdc2.h | 55 + include/openssl/modes.h | 219 + include/openssl/obj_mac.h | 5481 ++++++++++++++++++++++++++ include/openssl/objects.h | 183 + include/openssl/objectserr.h | 28 + include/openssl/ocsp.h | 483 +++ include/openssl/ocsperr.h | 53 + include/openssl/opensslconf.h | 17 + include/openssl/opensslv.h | 114 + include/openssl/ossl_typ.h | 16 + include/openssl/param_build.h | 63 + include/openssl/params.h | 160 + include/openssl/pem.h | 541 +++ include/openssl/pem2.h | 19 + include/openssl/pemerr.h | 58 + include/openssl/pkcs12.h | 353 ++ include/openssl/pkcs12err.h | 45 + include/openssl/pkcs7.h | 430 ++ include/openssl/pkcs7err.h | 63 + include/openssl/prov_ssl.h | 34 + include/openssl/proverr.h | 149 + include/openssl/provider.h | 60 + include/openssl/rand.h | 125 + include/openssl/randerr.h | 68 + include/openssl/rc2.h | 68 + include/openssl/rc4.h | 47 + include/openssl/rc5.h | 79 + include/openssl/ripemd.h | 59 + include/openssl/rsa.h | 610 +++ include/openssl/rsaerr.h | 107 + include/openssl/safestack.h | 297 ++ include/openssl/seed.h | 113 + include/openssl/self_test.h | 94 + include/openssl/sha.h | 138 + include/openssl/srp.h | 285 ++ include/openssl/srtp.h | 56 + include/openssl/ssl.h | 2602 ++++++++++++ include/openssl/ssl2.h | 30 + include/openssl/ssl3.h | 347 ++ include/openssl/sslerr.h | 344 ++ include/openssl/sslerr_legacy.h | 468 +++ include/openssl/stack.h | 90 + include/openssl/store.h | 369 ++ include/openssl/storeerr.h | 49 + include/openssl/symhacks.h | 39 + include/openssl/tls1.h | 1180 ++++++ include/openssl/trace.h | 312 ++ include/openssl/ts.h | 505 +++ include/openssl/tserr.h | 67 + include/openssl/txt_db.h | 63 + include/openssl/types.h | 239 ++ include/openssl/ui.h | 407 ++ include/openssl/uierr.h | 38 + include/openssl/whrlpool.h | 62 + include/openssl/x509.h | 1279 ++++++ include/openssl/x509_vfy.h | 894 +++++ include/openssl/x509err.h | 68 + include/openssl/x509v3.h | 1453 +++++++ include/openssl/x509v3err.h | 93 + include/plcLicence.h | 247 ++ include/utils.h | 80 + lib/crypto.dll | Bin 0 -> 4902799 bytes lib/ssl.dll | Bin 0 -> 654250 bytes output/createbase64.bat | 1 + output/createnew.bat | 1 + output/ezlic_eovosv0_vaxvcpalxjx.lic | Bin 0 -> 1004 bytes output/licData.xml | 8 + output/licenceGenerator | Bin 0 -> 657672 bytes output/licenceGenerator.exe | Bin 0 -> 1117398 bytes src/CreateLicence.cpp | 124 + src/CreateLicence.d | 2 + src/CreateLicence.o | Bin 0 -> 304024 bytes src/PlcLicence.cpp | 943 +++++ src/PlcLicence.d | 1 + src/PlcLicence.o | Bin 0 -> 444432 bytes src/licData.xml | 8 + src/notes.txt | 493 +++ src/utils.cpp | 791 ++++ src/utils.d | 29 + src/utils.o | Bin 0 -> 665888 bytes 166 files changed, 44705 insertions(+), 1 deletion(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 Makefile create mode 100644 docker-compose.yml create mode 100644 docker/Dockerfile create mode 100644 docker/Makefile create mode 100644 docker/generate.sh create mode 100644 docker/start.sh create mode 100644 include/openssl/aes.h create mode 100644 include/openssl/asn1.h create mode 100644 include/openssl/asn1_mac.h create mode 100644 include/openssl/asn1err.h create mode 100644 include/openssl/asn1t.h create mode 100644 include/openssl/async.h create mode 100644 include/openssl/asyncerr.h create mode 100644 include/openssl/bio.h create mode 100644 include/openssl/bioerr.h create mode 100644 include/openssl/blowfish.h create mode 100644 include/openssl/bn.h create mode 100644 include/openssl/bnerr.h create mode 100644 include/openssl/buffer.h create mode 100644 include/openssl/buffererr.h create mode 100644 include/openssl/camellia.h create mode 100644 include/openssl/cast.h create mode 100644 include/openssl/cmac.h create mode 100644 include/openssl/cmp.h create mode 100644 include/openssl/cmp_util.h create mode 100644 include/openssl/cmperr.h create mode 100644 include/openssl/cms.h create mode 100644 include/openssl/cmserr.h create mode 100644 include/openssl/comp.h create mode 100644 include/openssl/comperr.h create mode 100644 include/openssl/conf.h create mode 100644 include/openssl/conf_api.h create mode 100644 include/openssl/conferr.h create mode 100644 include/openssl/configuration.h create mode 100644 include/openssl/conftypes.h create mode 100644 include/openssl/core.h create mode 100644 include/openssl/core_dispatch.h create mode 100644 include/openssl/core_names.h create mode 100644 include/openssl/core_object.h create mode 100644 include/openssl/crmf.h create mode 100644 include/openssl/crmferr.h create mode 100644 include/openssl/crypto.h create mode 100644 include/openssl/cryptoerr.h create mode 100644 include/openssl/cryptoerr_legacy.h create mode 100644 include/openssl/ct.h create mode 100644 include/openssl/cterr.h create mode 100644 include/openssl/decoder.h create mode 100644 include/openssl/decodererr.h create mode 100644 include/openssl/des.h create mode 100644 include/openssl/dh.h create mode 100644 include/openssl/dherr.h create mode 100644 include/openssl/dsa.h create mode 100644 include/openssl/dsaerr.h create mode 100644 include/openssl/dtls1.h create mode 100644 include/openssl/e_os2.h create mode 100644 include/openssl/ebcdic.h create mode 100644 include/openssl/ec.h create mode 100644 include/openssl/ecdh.h create mode 100644 include/openssl/ecdsa.h create mode 100644 include/openssl/ecerr.h create mode 100644 include/openssl/encoder.h create mode 100644 include/openssl/encodererr.h create mode 100644 include/openssl/engine.h create mode 100644 include/openssl/engineerr.h create mode 100644 include/openssl/err.h create mode 100644 include/openssl/ess.h create mode 100644 include/openssl/esserr.h create mode 100644 include/openssl/evp.h create mode 100644 include/openssl/evperr.h create mode 100644 include/openssl/fips_names.h create mode 100644 include/openssl/fipskey.h create mode 100644 include/openssl/hmac.h create mode 100644 include/openssl/http.h create mode 100644 include/openssl/httperr.h create mode 100644 include/openssl/idea.h create mode 100644 include/openssl/kdf.h create mode 100644 include/openssl/kdferr.h create mode 100644 include/openssl/lhash.h create mode 100644 include/openssl/macros.h create mode 100644 include/openssl/md2.h create mode 100644 include/openssl/md4.h create mode 100644 include/openssl/md5.h create mode 100644 include/openssl/mdc2.h create mode 100644 include/openssl/modes.h create mode 100644 include/openssl/obj_mac.h create mode 100644 include/openssl/objects.h create mode 100644 include/openssl/objectserr.h create mode 100644 include/openssl/ocsp.h create mode 100644 include/openssl/ocsperr.h create mode 100644 include/openssl/opensslconf.h create mode 100644 include/openssl/opensslv.h create mode 100644 include/openssl/ossl_typ.h create mode 100644 include/openssl/param_build.h create mode 100644 include/openssl/params.h create mode 100644 include/openssl/pem.h create mode 100644 include/openssl/pem2.h create mode 100644 include/openssl/pemerr.h create mode 100644 include/openssl/pkcs12.h create mode 100644 include/openssl/pkcs12err.h create mode 100644 include/openssl/pkcs7.h create mode 100644 include/openssl/pkcs7err.h create mode 100644 include/openssl/prov_ssl.h create mode 100644 include/openssl/proverr.h create mode 100644 include/openssl/provider.h create mode 100644 include/openssl/rand.h create mode 100644 include/openssl/randerr.h create mode 100644 include/openssl/rc2.h create mode 100644 include/openssl/rc4.h create mode 100644 include/openssl/rc5.h create mode 100644 include/openssl/ripemd.h create mode 100644 include/openssl/rsa.h create mode 100644 include/openssl/rsaerr.h create mode 100644 include/openssl/safestack.h create mode 100644 include/openssl/seed.h create mode 100644 include/openssl/self_test.h create mode 100644 include/openssl/sha.h create mode 100644 include/openssl/srp.h create mode 100644 include/openssl/srtp.h create mode 100644 include/openssl/ssl.h create mode 100644 include/openssl/ssl2.h create mode 100644 include/openssl/ssl3.h create mode 100644 include/openssl/sslerr.h create mode 100644 include/openssl/sslerr_legacy.h create mode 100644 include/openssl/stack.h create mode 100644 include/openssl/store.h create mode 100644 include/openssl/storeerr.h create mode 100644 include/openssl/symhacks.h create mode 100644 include/openssl/tls1.h create mode 100644 include/openssl/trace.h create mode 100644 include/openssl/ts.h create mode 100644 include/openssl/tserr.h create mode 100644 include/openssl/txt_db.h create mode 100644 include/openssl/types.h create mode 100644 include/openssl/ui.h create mode 100644 include/openssl/uierr.h create mode 100644 include/openssl/whrlpool.h create mode 100644 include/openssl/x509.h create mode 100644 include/openssl/x509_vfy.h create mode 100644 include/openssl/x509err.h create mode 100644 include/openssl/x509v3.h create mode 100644 include/openssl/x509v3err.h create mode 100644 include/plcLicence.h create mode 100644 include/utils.h create mode 100644 lib/crypto.dll create mode 100644 lib/ssl.dll create mode 100644 output/createbase64.bat create mode 100644 output/createnew.bat create mode 100644 output/ezlic_eovosv0_vaxvcpalxjx.lic create mode 100644 output/licData.xml create mode 100644 output/licenceGenerator create mode 100644 output/licenceGenerator.exe create mode 100644 src/CreateLicence.cpp create mode 100644 src/CreateLicence.d create mode 100644 src/CreateLicence.o create mode 100644 src/PlcLicence.cpp create mode 100644 src/PlcLicence.d create mode 100644 src/PlcLicence.o create mode 100644 src/licData.xml create mode 100644 src/notes.txt create mode 100644 src/utils.cpp create mode 100644 src/utils.d create mode 100644 src/utils.o diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..9e3b1c2 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,32 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "cwd": "${fileDirname}", //"${workspaceFolder}", + "environment": [], + "externalConsole": false, + "linux": { + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "program": "${workspaceFolder}/output/licenceGenerator" + }, + "osx": { + "MIMode": "lldb", + "miDebuggerPath": "lldb-mi", + "program": "${workspaceFolder}/output/licenceGenerator" + }, + "windows": { + "MIMode": "gdb", + "miDebuggerPath": "gdb.exe", + "program": "${workspaceFolder}/output/licenceGenerator.exe", + "args": ["-cid=9f544930303030300000000b47015423", "-csd=400e00325b5900003a0d7f800a40008d", "-outputType=file", "-configFileName=licData.xml"] + }, + "preLaunchTask": "build" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..2b656bf --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,71 @@ +{ + "files.associations": { + "xutility": "cpp", + "ios": "cpp", + "iostream": "cpp", + "atomic": "cpp", + "bit": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "concepts": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "exception": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "istream": "cpp", + "iterator": "cpp", + "limits": "cpp", + "memory": "cpp", + "new": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "string": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "typeinfo": "cpp", + "utility": "cpp", + "vector": "cpp", + "xfacet": "cpp", + "xiosbase": "cpp", + "xlocale": "cpp", + "xlocinfo": "cpp", + "xlocmon": "cpp", + "xlocnum": "cpp", + "xloctime": "cpp", + "xmemory": "cpp", + "xstddef": "cpp", + "xstring": "cpp", + "xtr1common": "cpp", + "algorithm": "cpp", + "charconv": "cpp", + "chrono": "cpp", + "format": "cpp", + "forward_list": "cpp", + "locale": "cpp", + "mutex": "cpp", + "optional": "cpp", + "ratio": "cpp", + "stop_token": "cpp", + "thread": "cpp", + "xlocbuf": "cpp", + "xlocmes": "cpp", + "fstream": "cpp", + "bitset": "cpp", + "codecvt": "cpp", + "xtree": "cpp", + "map": "cpp" + }, + "C_Cpp.errorSquiggles": "enabledIfIncludesResolve" +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..a367b6d --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,84 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "type": "shell", + "group": { + "kind": "build", + "isDefault": true + }, + "windows": { + "command": "powershell", + "args": [ + "-c", + "mingw32-make" + ] + }, + "linux": { + "command": "bash", + "args": [ + "-c", + "make" + ] + }, + "osx": { + "command": "bash", + "args": [ + "-c", + "make" + ] + } + }, + { + "label": "build & run", + "type": "shell", + "windows": { + "command": "powershell", + "args": [ + "-c", + "'mingw32-make run'" + ] + }, + "linux": { + "command": "bash", + "args": [ + "-c", + "'make run'" + ] + }, + "osx": { + "command": "bash", + "args": [ + "-c", + "'make run'" + ] + } + }, + { + "label": "clean", + "type": "shell", + "windows": { + "command": "powershell", + "args": [ + "-c", + "'mingw32-make clean'" + ] + }, + "linux": { + "command": "bash", + "args": [ + "-c", + "'make clean'" + ] + }, + "osx": { + "command": "bash", + "args": [ + "-c", + "'make clean'" + ] + } + } + ] +} \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..61b801e --- /dev/null +++ b/Makefile @@ -0,0 +1,100 @@ +# +# 'make' build executable file 'main' +# 'make clean' removes all .o and executable files +# + +# define the Cpp compiler to use +CXX = g++ + +# define any compile-time flags +# CXXFLAGS := -std=c++17 -Wall -Wextra -g -lssl -lcrypto +CXXFLAGS := -Wall -Wextra -g -lssl -lcrypto -w + +# define library paths in addition to /usr/lib +# if I wanted to include libraries not in /usr/lib I'd specify +# their path using -Lpath, something like: +LFLAGS = + +# define output directory +OUTPUT := output + +# define source directory +SRC := src + +# define include directory +INCLUDE := include + +# define lib directory +LIB := lib + +ifeq ($(OS),Windows_NT) +MAIN := licenceGenerator.exe +SOURCEDIRS := $(SRC) +INCLUDEDIRS := $(INCLUDE) +LIBDIRS := $(LIB) +FIXPATH = $(subst /,\,$1) +RM := del /q /f +MD := mkdir +else +MAIN := licenceGenerator +SOURCEDIRS := $(shell find $(SRC) -type d) +INCLUDEDIRS := $(shell find $(INCLUDE) -type d) +LIBDIRS := $(shell find $(LIB) -type d) +FIXPATH = $1 +RM = rm -f +MD := mkdir -p +endif + +# define any directories containing header files other than /usr/include +INCLUDES := $(patsubst %,-I%, $(INCLUDEDIRS:%/=%)) + +# define the C libs +LIBS := $(patsubst %,-L%, $(LIBDIRS:%/=%)) + +# define the C source files +SOURCES := $(wildcard $(patsubst %,%/*.cpp, $(SOURCEDIRS))) + +# define the C object files +OBJECTS := $(SOURCES:.cpp=.o) + +# define the dependency output files +DEPS := $(OBJECTS:.o=.d) + +# +# The following part of the makefile is generic; it can be used to +# build any executable just by changing the definitions above and by +# deleting dependencies appended to the file from 'make depend' +# + +OUTPUTMAIN := $(call FIXPATH,$(OUTPUT)/$(MAIN)) + +all: $(OUTPUT) $(MAIN) + @echo Executing 'all' complete! + +$(OUTPUT): + $(MD) $(OUTPUT) + +$(MAIN): $(OBJECTS) + $(CXX) $(CXXFLAGS) $(INCLUDES) -o $(OUTPUTMAIN) $(OBJECTS) $(LFLAGS) $(LIBS) + +# include all .d files +-include $(DEPS) + +# this is a suffix replacement rule for building .o's and .d's from .c's +# it uses automatic variables $<: the name of the prerequisite of +# the rule(a .c file) and $@: the name of the target of the rule (a .o file) +# -MMD generates dependency output files same name as the .o file +# (see the gnu make manual section about automatic variables) +.cpp.o: + $(CXX) $(CXXFLAGS) $(INCLUDES) -c -MMD $< -o $@ + +.PHONY: clean +clean: + $(RM) $(OUTPUTMAIN) + $(RM) $(call FIXPATH,$(OBJECTS)) + $(RM) $(call FIXPATH,$(DEPS)) + @echo Cleanup complete! + +run: all + ./$(OUTPUTMAIN) + @echo Executing 'run: all' complete! diff --git a/README.md b/README.md index 27abb05..c9b00d7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,11 @@ # sd_gen -Generování licence pro SD kartu \ No newline at end of file +Generování licence pro SD kartu + + +## Docker +- docker-compose up, spustí kontejner +- otevření terminálu konterjneru, docker exec -it sd_gen-sd_gen-1 /bin/bash + +./generate.sh +./start.sh \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..61f7b99 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +version: "3.7" + +services: + sd_gen: + build: ./docker + networks: + - default + volumes: + - ./include:/app/include + - ./lib:/app/lib + - ./output:/app/output + - ./src:/app/src + \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..68ba18e --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,20 @@ +FROM gcc:latest + +WORKDIR /app + +COPY ./generate.sh /app/ +RUN chmod 755 /app/generate.sh + +COPY ./start.sh /app/ +RUN chmod 755 /app/start.sh + +COPY ./Makefile /app/ + +ENTRYPOINT ["tail"] +CMD ["-f","/dev/null"] + +#CMD ["./generate.sh"] + + + + diff --git a/docker/Makefile b/docker/Makefile new file mode 100644 index 0000000..61b801e --- /dev/null +++ b/docker/Makefile @@ -0,0 +1,100 @@ +# +# 'make' build executable file 'main' +# 'make clean' removes all .o and executable files +# + +# define the Cpp compiler to use +CXX = g++ + +# define any compile-time flags +# CXXFLAGS := -std=c++17 -Wall -Wextra -g -lssl -lcrypto +CXXFLAGS := -Wall -Wextra -g -lssl -lcrypto -w + +# define library paths in addition to /usr/lib +# if I wanted to include libraries not in /usr/lib I'd specify +# their path using -Lpath, something like: +LFLAGS = + +# define output directory +OUTPUT := output + +# define source directory +SRC := src + +# define include directory +INCLUDE := include + +# define lib directory +LIB := lib + +ifeq ($(OS),Windows_NT) +MAIN := licenceGenerator.exe +SOURCEDIRS := $(SRC) +INCLUDEDIRS := $(INCLUDE) +LIBDIRS := $(LIB) +FIXPATH = $(subst /,\,$1) +RM := del /q /f +MD := mkdir +else +MAIN := licenceGenerator +SOURCEDIRS := $(shell find $(SRC) -type d) +INCLUDEDIRS := $(shell find $(INCLUDE) -type d) +LIBDIRS := $(shell find $(LIB) -type d) +FIXPATH = $1 +RM = rm -f +MD := mkdir -p +endif + +# define any directories containing header files other than /usr/include +INCLUDES := $(patsubst %,-I%, $(INCLUDEDIRS:%/=%)) + +# define the C libs +LIBS := $(patsubst %,-L%, $(LIBDIRS:%/=%)) + +# define the C source files +SOURCES := $(wildcard $(patsubst %,%/*.cpp, $(SOURCEDIRS))) + +# define the C object files +OBJECTS := $(SOURCES:.cpp=.o) + +# define the dependency output files +DEPS := $(OBJECTS:.o=.d) + +# +# The following part of the makefile is generic; it can be used to +# build any executable just by changing the definitions above and by +# deleting dependencies appended to the file from 'make depend' +# + +OUTPUTMAIN := $(call FIXPATH,$(OUTPUT)/$(MAIN)) + +all: $(OUTPUT) $(MAIN) + @echo Executing 'all' complete! + +$(OUTPUT): + $(MD) $(OUTPUT) + +$(MAIN): $(OBJECTS) + $(CXX) $(CXXFLAGS) $(INCLUDES) -o $(OUTPUTMAIN) $(OBJECTS) $(LFLAGS) $(LIBS) + +# include all .d files +-include $(DEPS) + +# this is a suffix replacement rule for building .o's and .d's from .c's +# it uses automatic variables $<: the name of the prerequisite of +# the rule(a .c file) and $@: the name of the target of the rule (a .o file) +# -MMD generates dependency output files same name as the .o file +# (see the gnu make manual section about automatic variables) +.cpp.o: + $(CXX) $(CXXFLAGS) $(INCLUDES) -c -MMD $< -o $@ + +.PHONY: clean +clean: + $(RM) $(OUTPUTMAIN) + $(RM) $(call FIXPATH,$(OBJECTS)) + $(RM) $(call FIXPATH,$(DEPS)) + @echo Cleanup complete! + +run: all + ./$(OUTPUTMAIN) + @echo Executing 'run: all' complete! diff --git a/docker/generate.sh b/docker/generate.sh new file mode 100644 index 0000000..57e4ad9 --- /dev/null +++ b/docker/generate.sh @@ -0,0 +1,5 @@ +#!/bin/bash +rm src/CreateLicence.o +rm src/PlcLicence.o +rm src/utils.o +make \ No newline at end of file diff --git a/docker/start.sh b/docker/start.sh new file mode 100644 index 0000000..ab00bee --- /dev/null +++ b/docker/start.sh @@ -0,0 +1,7 @@ +#!/bin/bash +chmod 777 output/licenceGenerator + +#./output/licenceGenerator -cid=9f544930303030300000000b47015423 -csd=400e00325b5900003a0d7f800a40008d -outputType=file -configFileName=licData.xml + +cd output +./licenceGenerator -cid=9f544930303030300000000b47015423 -csd=400e00325b5900003a0d7f800a40008d -outputType=file -configFileName=licData.xml \ No newline at end of file diff --git a/include/openssl/aes.h b/include/openssl/aes.h new file mode 100644 index 0000000..d0f9dfc --- /dev/null +++ b/include/openssl/aes.h @@ -0,0 +1,111 @@ +/* + * Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_AES_H +# define OPENSSL_AES_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_AES_H +# endif + +# include + +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define AES_BLOCK_SIZE 16 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 + +# define AES_ENCRYPT 1 +# define AES_DECRYPT 0 + +# define AES_MAXNR 14 + + +/* 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; + +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *AES_options(void); +OSSL_DEPRECATEDIN_3_0 +int AES_set_encrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); +OSSL_DEPRECATEDIN_3_0 +int AES_set_decrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); +OSSL_DEPRECATEDIN_3_0 +void AES_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); +OSSL_DEPRECATEDIN_3_0 +void AES_decrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); +OSSL_DEPRECATEDIN_3_0 +void AES_ecb_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key, const int enc); +OSSL_DEPRECATEDIN_3_0 +void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, const int enc); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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 */ +OSSL_DEPRECATEDIN_3_0 +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 */ +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +int AES_wrap_key(AES_KEY *key, const unsigned char *iv, + unsigned char *out, const unsigned char *in, + unsigned int inlen); +OSSL_DEPRECATEDIN_3_0 +int AES_unwrap_key(AES_KEY *key, const unsigned char *iv, + unsigned char *out, const unsigned char *in, + unsigned int inlen); +# endif + + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/include/openssl/asn1.h b/include/openssl/asn1.h new file mode 100644 index 0000000..9987141 --- /dev/null +++ b/include/openssl/asn1.h @@ -0,0 +1,1131 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/asn1.h.in + * + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_ASN1_H +# define OPENSSL_ASN1_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_ASN1_H +# endif + +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include +# include +# include +# include +# include +# include +# include + +# include +# include + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define V_ASN1_UNIVERSAL 0x00 +# define V_ASN1_APPLICATION 0x40 +# define V_ASN1_CONTEXT_SPECIFIC 0x80 +# define V_ASN1_PRIVATE 0xc0 + +# define V_ASN1_CONSTRUCTED 0x20 +# define V_ASN1_PRIMITIVE_TAG 0x1f +# define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG + +# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ +# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ +# define V_ASN1_ANY -4/* used in ASN1 template code */ + +# define V_ASN1_UNDEF -1 +/* ASN.1 tag values */ +# define V_ASN1_EOC 0 +# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_INTEGER 2 +# define V_ASN1_BIT_STRING 3 +# define V_ASN1_OCTET_STRING 4 +# define V_ASN1_NULL 5 +# define V_ASN1_OBJECT 6 +# define V_ASN1_OBJECT_DESCRIPTOR 7 +# define V_ASN1_EXTERNAL 8 +# define V_ASN1_REAL 9 +# define V_ASN1_ENUMERATED 10 +# define V_ASN1_UTF8STRING 12 +# define V_ASN1_SEQUENCE 16 +# define V_ASN1_SET 17 +# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_PRINTABLESTRING 19 +# define V_ASN1_T61STRING 20 +# define V_ASN1_TELETEXSTRING 20/* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_IA5STRING 22 +# define V_ASN1_UTCTIME 23 +# define V_ASN1_GENERALIZEDTIME 24 /**/ +# define V_ASN1_GRAPHICSTRING 25 /**/ +# define V_ASN1_ISO64STRING 26 /**/ +# define V_ASN1_VISIBLESTRING 26/* alias */ +# define V_ASN1_GENERALSTRING 27 /**/ +# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_BMPSTRING 30 + +/* + * NB the constants below are used internally by ASN1_INTEGER + * and ASN1_ENUMERATED to indicate the sign. They are *not* on + * the wire tag values. + */ + +# define V_ASN1_NEG 0x100 +# define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) +# define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) + +/* For use with d2i_ASN1_type_bytes() */ +# define B_ASN1_NUMERICSTRING 0x0001 +# define B_ASN1_PRINTABLESTRING 0x0002 +# define B_ASN1_T61STRING 0x0004 +# define B_ASN1_TELETEXSTRING 0x0004 +# define B_ASN1_VIDEOTEXSTRING 0x0008 +# define B_ASN1_IA5STRING 0x0010 +# define B_ASN1_GRAPHICSTRING 0x0020 +# define B_ASN1_ISO64STRING 0x0040 +# define B_ASN1_VISIBLESTRING 0x0040 +# define B_ASN1_GENERALSTRING 0x0080 +# define B_ASN1_UNIVERSALSTRING 0x0100 +# define B_ASN1_OCTET_STRING 0x0200 +# define B_ASN1_BIT_STRING 0x0400 +# define B_ASN1_BMPSTRING 0x0800 +# define B_ASN1_UNKNOWN 0x1000 +# define B_ASN1_UTF8STRING 0x2000 +# define B_ASN1_UTCTIME 0x4000 +# define B_ASN1_GENERALIZEDTIME 0x8000 +# define B_ASN1_SEQUENCE 0x10000 +/* For use with ASN1_mbstring_copy() */ +# define MBSTRING_FLAG 0x1000 +# define MBSTRING_UTF8 (MBSTRING_FLAG) +# define MBSTRING_ASC (MBSTRING_FLAG|1) +# define MBSTRING_BMP (MBSTRING_FLAG|2) +# define MBSTRING_UNIV (MBSTRING_FLAG|4) +# define SMIME_OLDMIME 0x400 +# define SMIME_CRLFEOL 0x800 +# define SMIME_STREAM 0x1000 + +/* Stacks for types not otherwise defined in this header */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) +#define sk_X509_ALGOR_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_value(sk, idx) ((X509_ALGOR *)OPENSSL_sk_value(ossl_check_const_X509_ALGOR_sk_type(sk), (idx))) +#define sk_X509_ALGOR_new(cmp) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new(ossl_check_X509_ALGOR_compfunc_type(cmp))) +#define sk_X509_ALGOR_new_null() ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_null()) +#define sk_X509_ALGOR_new_reserve(cmp, n) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_reserve(ossl_check_X509_ALGOR_compfunc_type(cmp), (n))) +#define sk_X509_ALGOR_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ALGOR_sk_type(sk), (n)) +#define sk_X509_ALGOR_free(sk) OPENSSL_sk_free(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_delete(sk, i) ((X509_ALGOR *)OPENSSL_sk_delete(ossl_check_X509_ALGOR_sk_type(sk), (i))) +#define sk_X509_ALGOR_delete_ptr(sk, ptr) ((X509_ALGOR *)OPENSSL_sk_delete_ptr(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_pop(sk) ((X509_ALGOR *)OPENSSL_sk_pop(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_shift(sk) ((X509_ALGOR *)OPENSSL_sk_shift(ossl_check_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ALGOR_sk_type(sk),ossl_check_X509_ALGOR_freefunc_type(freefunc)) +#define sk_X509_ALGOR_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), (idx)) +#define sk_X509_ALGOR_set(sk, idx, ptr) ((X509_ALGOR *)OPENSSL_sk_set(ossl_check_X509_ALGOR_sk_type(sk), (idx), ossl_check_X509_ALGOR_type(ptr))) +#define sk_X509_ALGOR_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) +#define sk_X509_ALGOR_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), pnum) +#define sk_X509_ALGOR_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ALGOR_sk_type(sk)) +#define sk_X509_ALGOR_dup(sk) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_dup(ossl_check_const_X509_ALGOR_sk_type(sk))) +#define sk_X509_ALGOR_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_copyfunc_type(copyfunc), ossl_check_X509_ALGOR_freefunc_type(freefunc))) +#define sk_X509_ALGOR_set_cmp_func(sk, cmp) ((sk_X509_ALGOR_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_compfunc_type(cmp))) + + + +# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +/* + * This indicates that the ASN1_STRING is not a real value but just a place + * holder for the location where indefinite length constructed data should be + * inserted in the memory buffer + */ +# define ASN1_STRING_FLAG_NDEF 0x010 + +/* + * This flag is used by the CMS code to indicate that a string is not + * complete and is a place holder for content when it had all been accessed. + * The flag will be reset when content has been written to it. + */ + +# define ASN1_STRING_FLAG_CONT 0x020 +/* + * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING + * type. + */ +# define ASN1_STRING_FLAG_MSTRING 0x040 +/* String is embedded and only content should be freed */ +# define ASN1_STRING_FLAG_EMBED 0x080 +/* String should be parsed in RFC 5280's time format */ +# define ASN1_STRING_FLAG_X509_TIME 0x100 +/* This is the base type that holds just about everything :-) */ +struct asn1_string_st { + int length; + int type; + unsigned char *data; + /* + * The value of the following field depends on the type being held. It + * is mostly being used for BIT_STRING so if the input data has a + * non-zero 'unused bits' value, it will be handled correctly + */ + long flags; +}; + +/* + * ASN1_ENCODING structure: this is used to save the received encoding of an + * ASN1 type. This is useful to get round problems with invalid encodings + * which can break signatures. + */ + +typedef struct ASN1_ENCODING_st { + unsigned char *enc; /* DER encoding */ + long len; /* Length of encoding */ + int modified; /* set to 1 if 'enc' is invalid */ +} ASN1_ENCODING; + +/* Used with ASN1 LONG type: if a long is set to this it is omitted */ +# define ASN1_LONG_UNDEF 0x7fffffffL + +# define STABLE_FLAGS_MALLOC 0x01 +/* + * A zero passed to ASN1_STRING_TABLE_new_add for the flags is interpreted + * as "don't change" and STABLE_FLAGS_MALLOC is always set. By setting + * STABLE_FLAGS_MALLOC only we can clear the existing value. Use the alias + * STABLE_FLAGS_CLEAR to reflect this. + */ +# define STABLE_FLAGS_CLEAR STABLE_FLAGS_MALLOC +# define STABLE_NO_MASK 0x02 +# define DIRSTRING_TYPE \ + (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING) +# define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING) + +struct asn1_string_table_st { + int nid; + long minsize; + long maxsize; + unsigned long mask; + unsigned long flags; +}; + +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING_TABLE, ASN1_STRING_TABLE, ASN1_STRING_TABLE) +#define sk_ASN1_STRING_TABLE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_value(sk, idx) ((ASN1_STRING_TABLE *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), (idx))) +#define sk_ASN1_STRING_TABLE_new(cmp) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) +#define sk_ASN1_STRING_TABLE_new_null() ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_TABLE_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_TABLE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (n)) +#define sk_ASN1_STRING_TABLE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_delete(sk, i) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (i))) +#define sk_ASN1_STRING_TABLE_delete_ptr(sk, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_pop(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_shift(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk),ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc)) +#define sk_ASN1_STRING_TABLE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), (idx)) +#define sk_ASN1_STRING_TABLE_set(sk, idx, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_set(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (idx), ossl_check_ASN1_STRING_TABLE_type(ptr))) +#define sk_ASN1_STRING_TABLE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) +#define sk_ASN1_STRING_TABLE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), pnum) +#define sk_ASN1_STRING_TABLE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) +#define sk_ASN1_STRING_TABLE_dup(sk) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk))) +#define sk_ASN1_STRING_TABLE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc))) +#define sk_ASN1_STRING_TABLE_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_TABLE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) + + +/* 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 */ + +/* + * The mysterious 'extern' that's passed to some macros is innocuous, + * and is there to quiet pre-C99 compilers that may complain about empty + * arguments in macro calls. + */ + +# define DECLARE_ASN1_FUNCTIONS_attr(attr, type) \ + DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, type) +# define DECLARE_ASN1_FUNCTIONS(type) \ + DECLARE_ASN1_FUNCTIONS_attr(extern, type) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS_attr(attr, type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, type) +# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_attr(extern, type) + +# define DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name) +# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_FUNCTIONS_name_attr(extern, type, name) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, itname, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \ + DECLARE_ASN1_ITEM_attr(attr, itname) +# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_attr(extern, type, itname, name) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, name, name) +# define DECLARE_ASN1_ENCODE_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(extern, type, name) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \ + attr type *d2i_##name(type **a, const unsigned char **in, long len); \ + attr int i2d_##name(const type *a, unsigned char **out); +# define DECLARE_ASN1_ENCODE_FUNCTIONS_only(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(extern, type, name) + +# define DECLARE_ASN1_NDEF_FUNCTION_attr(attr, name) \ + attr int i2d_##name##_NDEF(const name *a, unsigned char **out); +# define DECLARE_ASN1_NDEF_FUNCTION(name) \ + DECLARE_ASN1_NDEF_FUNCTION_attr(extern, name) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \ + attr type *name##_new(void); \ + attr void name##_free(type *a); +# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(extern, type, name) + +# define DECLARE_ASN1_DUP_FUNCTION_attr(attr, type) \ + DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, type) +# define DECLARE_ASN1_DUP_FUNCTION(type) \ + DECLARE_ASN1_DUP_FUNCTION_attr(extern, type) + +# define DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, name) \ + attr type *name##_dup(const type *a); +# define DECLARE_ASN1_DUP_FUNCTION_name(type, name) \ + DECLARE_ASN1_DUP_FUNCTION_name_attr(extern, type, name) + +# define DECLARE_ASN1_PRINT_FUNCTION_attr(attr, stname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, stname) +# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ + DECLARE_ASN1_PRINT_FUNCTION_attr(extern, stname) + +# define DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, fname) \ + attr int fname##_print_ctx(BIO *out, const stname *x, int indent, \ + const ASN1_PCTX *pctx); +# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname_attr(extern, stname, fname) + +# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) +# define I2D_OF(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(const type *,unsigned char **) +# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) + +typedef void *d2i_of_void(void **, const unsigned char **, long); +typedef int i2d_of_void(const void *, unsigned char **); + +/*- + * 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. + * + */ + + +/* + * 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_attr(attr, name) \ + attr const ASN1_ITEM * name##_it(void); +# define DECLARE_ASN1_ITEM(name) \ + DECLARE_ASN1_ITEM_attr(extern, name) + +/* 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 + +/* Lower 8 bits are reserved as an output type specifier */ +# define ASN1_DTFLGS_TYPE_MASK 0x0FUL +# define ASN1_DTFLGS_RFC822 0x00UL +# define ASN1_DTFLGS_ISO8601 0x01UL + +/* + * 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) + + +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; +}; + +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_TYPE, ASN1_TYPE, ASN1_TYPE) +#define sk_ASN1_TYPE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_value(sk, idx) ((ASN1_TYPE *)OPENSSL_sk_value(ossl_check_const_ASN1_TYPE_sk_type(sk), (idx))) +#define sk_ASN1_TYPE_new(cmp) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new(ossl_check_ASN1_TYPE_compfunc_type(cmp))) +#define sk_ASN1_TYPE_new_null() ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_TYPE_new_reserve(cmp, n) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_TYPE_compfunc_type(cmp), (n))) +#define sk_ASN1_TYPE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_TYPE_sk_type(sk), (n)) +#define sk_ASN1_TYPE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_delete(sk, i) ((ASN1_TYPE *)OPENSSL_sk_delete(ossl_check_ASN1_TYPE_sk_type(sk), (i))) +#define sk_ASN1_TYPE_delete_ptr(sk, ptr) ((ASN1_TYPE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_pop(sk) ((ASN1_TYPE *)OPENSSL_sk_pop(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_shift(sk) ((ASN1_TYPE *)OPENSSL_sk_shift(ossl_check_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_TYPE_sk_type(sk),ossl_check_ASN1_TYPE_freefunc_type(freefunc)) +#define sk_ASN1_TYPE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), (idx)) +#define sk_ASN1_TYPE_set(sk, idx, ptr) ((ASN1_TYPE *)OPENSSL_sk_set(ossl_check_ASN1_TYPE_sk_type(sk), (idx), ossl_check_ASN1_TYPE_type(ptr))) +#define sk_ASN1_TYPE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) +#define sk_ASN1_TYPE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), pnum) +#define sk_ASN1_TYPE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_TYPE_sk_type(sk)) +#define sk_ASN1_TYPE_dup(sk) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_TYPE_sk_type(sk))) +#define sk_ASN1_TYPE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_copyfunc_type(copyfunc), ossl_check_ASN1_TYPE_freefunc_type(freefunc))) +#define sk_ASN1_TYPE_set_cmp_func(sk, cmp) ((sk_ASN1_TYPE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_compfunc_type(cmp))) + + +typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; + +DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) +DECLARE_ASN1_ENCODE_FUNCTIONS_name(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_ALLOC_FUNCTIONS_name(ASN1_TYPE, ASN1_TYPE) +DECLARE_ASN1_ENCODE_FUNCTIONS(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); + +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_OBJECT, ASN1_OBJECT, ASN1_OBJECT) +#define sk_ASN1_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_value(sk, idx) ((ASN1_OBJECT *)OPENSSL_sk_value(ossl_check_const_ASN1_OBJECT_sk_type(sk), (idx))) +#define sk_ASN1_OBJECT_new(cmp) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new(ossl_check_ASN1_OBJECT_compfunc_type(cmp))) +#define sk_ASN1_OBJECT_new_null() ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_ASN1_OBJECT_new_reserve(cmp, n) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_OBJECT_compfunc_type(cmp), (n))) +#define sk_ASN1_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_OBJECT_sk_type(sk), (n)) +#define sk_ASN1_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_delete(sk, i) ((ASN1_OBJECT *)OPENSSL_sk_delete(ossl_check_ASN1_OBJECT_sk_type(sk), (i))) +#define sk_ASN1_OBJECT_delete_ptr(sk, ptr) ((ASN1_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_pop(sk) ((ASN1_OBJECT *)OPENSSL_sk_pop(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_shift(sk) ((ASN1_OBJECT *)OPENSSL_sk_shift(ossl_check_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_OBJECT_sk_type(sk),ossl_check_ASN1_OBJECT_freefunc_type(freefunc)) +#define sk_ASN1_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), (idx)) +#define sk_ASN1_OBJECT_set(sk, idx, ptr) ((ASN1_OBJECT *)OPENSSL_sk_set(ossl_check_ASN1_OBJECT_sk_type(sk), (idx), ossl_check_ASN1_OBJECT_type(ptr))) +#define sk_ASN1_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) +#define sk_ASN1_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), pnum) +#define sk_ASN1_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_OBJECT_sk_type(sk)) +#define sk_ASN1_OBJECT_dup(sk) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_ASN1_OBJECT_sk_type(sk))) +#define sk_ASN1_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_copyfunc_type(copyfunc), ossl_check_ASN1_OBJECT_freefunc_type(freefunc))) +#define sk_ASN1_OBJECT_set_cmp_func(sk, cmp) ((sk_ASN1_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(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); +DECLARE_ASN1_DUP_FUNCTION(ASN1_STRING) +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); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void ASN1_STRING_length_set(ASN1_STRING *x, int n); +# endif +int ASN1_STRING_type(const ASN1_STRING *x); +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 unsigned char *ASN1_STRING_data(ASN1_STRING *x); +# endif +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); + +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_INTEGER, ASN1_INTEGER, ASN1_INTEGER) +#define sk_ASN1_INTEGER_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_value(sk, idx) ((ASN1_INTEGER *)OPENSSL_sk_value(ossl_check_const_ASN1_INTEGER_sk_type(sk), (idx))) +#define sk_ASN1_INTEGER_new(cmp) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new(ossl_check_ASN1_INTEGER_compfunc_type(cmp))) +#define sk_ASN1_INTEGER_new_null() ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_null()) +#define sk_ASN1_INTEGER_new_reserve(cmp, n) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_INTEGER_compfunc_type(cmp), (n))) +#define sk_ASN1_INTEGER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_INTEGER_sk_type(sk), (n)) +#define sk_ASN1_INTEGER_free(sk) OPENSSL_sk_free(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_delete(sk, i) ((ASN1_INTEGER *)OPENSSL_sk_delete(ossl_check_ASN1_INTEGER_sk_type(sk), (i))) +#define sk_ASN1_INTEGER_delete_ptr(sk, ptr) ((ASN1_INTEGER *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_pop(sk) ((ASN1_INTEGER *)OPENSSL_sk_pop(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_shift(sk) ((ASN1_INTEGER *)OPENSSL_sk_shift(ossl_check_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_INTEGER_sk_type(sk),ossl_check_ASN1_INTEGER_freefunc_type(freefunc)) +#define sk_ASN1_INTEGER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), (idx)) +#define sk_ASN1_INTEGER_set(sk, idx, ptr) ((ASN1_INTEGER *)OPENSSL_sk_set(ossl_check_ASN1_INTEGER_sk_type(sk), (idx), ossl_check_ASN1_INTEGER_type(ptr))) +#define sk_ASN1_INTEGER_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) +#define sk_ASN1_INTEGER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), pnum) +#define sk_ASN1_INTEGER_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_INTEGER_sk_type(sk)) +#define sk_ASN1_INTEGER_dup(sk) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_dup(ossl_check_const_ASN1_INTEGER_sk_type(sk))) +#define sk_ASN1_INTEGER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_copyfunc_type(copyfunc), ossl_check_ASN1_INTEGER_freefunc_type(freefunc))) +#define sk_ASN1_INTEGER_set_cmp_func(sk, cmp) ((sk_ASN1_INTEGER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_compfunc_type(cmp))) + + + +DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) +ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +DECLARE_ASN1_DUP_FUNCTION(ASN1_INTEGER) +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) +DECLARE_ASN1_DUP_FUNCTION(ASN1_OCTET_STRING) +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); + +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_UTF8STRING, ASN1_UTF8STRING, ASN1_UTF8STRING) +#define sk_ASN1_UTF8STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_value(sk, idx) ((ASN1_UTF8STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), (idx))) +#define sk_ASN1_UTF8STRING_new(cmp) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) +#define sk_ASN1_UTF8STRING_new_null() ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_UTF8STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_UTF8STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_UTF8STRING_sk_type(sk), (n)) +#define sk_ASN1_UTF8STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_delete(sk, i) ((ASN1_UTF8STRING *)OPENSSL_sk_delete(ossl_check_ASN1_UTF8STRING_sk_type(sk), (i))) +#define sk_ASN1_UTF8STRING_delete_ptr(sk, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_pop(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_pop(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_shift(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_shift(ossl_check_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_UTF8STRING_sk_type(sk),ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc)) +#define sk_ASN1_UTF8STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), (idx)) +#define sk_ASN1_UTF8STRING_set(sk, idx, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_set(ossl_check_ASN1_UTF8STRING_sk_type(sk), (idx), ossl_check_ASN1_UTF8STRING_type(ptr))) +#define sk_ASN1_UTF8STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) +#define sk_ASN1_UTF8STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), pnum) +#define sk_ASN1_UTF8STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) +#define sk_ASN1_UTF8STRING_dup(sk) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_UTF8STRING_sk_type(sk))) +#define sk_ASN1_UTF8STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_copyfunc_type(copyfunc), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc))) +#define sk_ASN1_UTF8STRING_set_cmp_func(sk, cmp) ((sk_ASN1_UTF8STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) + + +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); + +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_GENERALSTRING, ASN1_GENERALSTRING, ASN1_GENERALSTRING) +#define sk_ASN1_GENERALSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_value(sk, idx) ((ASN1_GENERALSTRING *)OPENSSL_sk_value(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), (idx))) +#define sk_ASN1_GENERALSTRING_new(cmp) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) +#define sk_ASN1_GENERALSTRING_new_null() ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_GENERALSTRING_new_reserve(cmp, n) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp), (n))) +#define sk_ASN1_GENERALSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (n)) +#define sk_ASN1_GENERALSTRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_delete(sk, i) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (i))) +#define sk_ASN1_GENERALSTRING_delete_ptr(sk, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_pop(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_pop(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_shift(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_shift(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk),ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc)) +#define sk_ASN1_GENERALSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), (idx)) +#define sk_ASN1_GENERALSTRING_set(sk, idx, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_set(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (idx), ossl_check_ASN1_GENERALSTRING_type(ptr))) +#define sk_ASN1_GENERALSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) +#define sk_ASN1_GENERALSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), pnum) +#define sk_ASN1_GENERALSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) +#define sk_ASN1_GENERALSTRING_dup(sk) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk))) +#define sk_ASN1_GENERALSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_copyfunc_type(copyfunc), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc))) +#define sk_ASN1_GENERALSTRING_set_cmp_func(sk, cmp) ((sk_ASN1_GENERALSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) + + +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_DUP_FUNCTION(ASN1_TIME) +DECLARE_ASN1_DUP_FUNCTION(ASN1_UTCTIME) +DECLARE_ASN1_DUP_FUNCTION(ASN1_GENERALIZEDTIME) + +DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF) + +ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); +ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_TIME_check(const ASN1_TIME *t); +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(const ASN1_TIME *t, + ASN1_GENERALIZEDTIME **out); +int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); +int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str); +int ASN1_TIME_to_tm(const ASN1_TIME *s, struct tm *tm); +int ASN1_TIME_normalize(ASN1_TIME *s); +int ASN1_TIME_cmp_time_t(const ASN1_TIME *s, time_t t); +int ASN1_TIME_compare(const ASN1_TIME *a, const ASN1_TIME *b); + +int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a); +int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); +int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a); +int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); +int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a); +int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); +int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type); +int i2t_ASN1_OBJECT(char *buf, int buf_len, const ASN1_OBJECT *a); + +int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); +ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len, + const char *sn, const char *ln); + +int ASN1_INTEGER_get_int64(int64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_int64(ASN1_INTEGER *a, int64_t r); +int ASN1_INTEGER_get_uint64(uint64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_uint64(ASN1_INTEGER *a, uint64_t r); + +int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); +long ASN1_INTEGER_get(const ASN1_INTEGER *a); +ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); +BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); + +int ASN1_ENUMERATED_get_int64(int64_t *pr, const ASN1_ENUMERATED *a); +int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *a, int64_t r); + + +int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); +long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a); +ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai); +BIGNUM *ASN1_ENUMERATED_to_BN(const ASN1_ENUMERATED *ai, BIGNUM *bn); + +/* General */ +/* given a string, return the correct type, max is the maximum length */ +int ASN1_PRINTABLE_type(const unsigned char *s, int max); + +unsigned long ASN1_tag2bit(int tag); + +/* SPECIALS */ +int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, + int *pclass, long omax); +int ASN1_check_infinite_end(unsigned char **p, long len); +int ASN1_const_check_infinite_end(const unsigned char **p, long len); +void ASN1_put_object(unsigned char **pp, int constructed, int length, + int tag, int xclass); +int ASN1_put_eoc(unsigned char **pp); +int ASN1_object_size(int constructed, int length, int tag); + +/* Used to implement other functions */ +void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, const 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(const type, x))) + +void *ASN1_item_dup(const ASN1_ITEM *it, const void *x); +int ASN1_item_sign_ex(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + const void *data, const ASN1_OCTET_STRING *id, + EVP_PKEY *pkey, const EVP_MD *md, OSSL_LIB_CTX *libctx, + const char *propq); +int ASN1_item_verify_ex(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + const ASN1_OCTET_STRING *id, EVP_PKEY *pkey, + OSSL_LIB_CTX *libctx, const char *propq); + +/* 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_ex(const ASN1_ITEM *it, FILE *in, void *x, + OSSL_LIB_CTX *libctx, const char *propq); +void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); +int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, const void *x); + +# define ASN1_i2d_fp_of(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, const 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_ex(const ASN1_ITEM *it, BIO *in, void *pval, + OSSL_LIB_CTX *libctx, const char *propq); +void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *pval); +int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, const void *x); + +# define ASN1_i2d_bio_of(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, const void *x); +BIO *ASN1_item_i2d_mem_bio(const ASN1_ITEM *it, const ASN1_VALUE *val); +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 *bp, const ASN1_TIME *tm); +int ASN1_TIME_print_ex(BIO *bp, const ASN1_TIME *tm, unsigned long flags); +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); +ASN1_VALUE *ASN1_item_new_ex(const ASN1_ITEM *it, OSSL_LIB_CTX *libctx, + const char *propq); +void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); +ASN1_VALUE *ASN1_item_d2i_ex(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); +ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it); +int ASN1_item_i2d(const ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); +int ASN1_item_ndef_i2d(const 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, const 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); + +/* cannot constify val because of CMS_stream() */ +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); +/* cannot constify val because of CMS_dataFinal() */ +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); +int SMIME_write_ASN1_ex(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, + int ctype_nid, int econt_nid, + STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); +ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); +ASN1_VALUE *SMIME_read_ASN1_ex(BIO *bio, int flags, BIO **bcont, + const ASN1_ITEM *it, ASN1_VALUE **x, + OSSL_LIB_CTX *libctx, const char *propq); +int SMIME_crlf_copy(BIO *in, BIO *out, int flags); +int SMIME_text(BIO *in, BIO *out); + +const ASN1_ITEM *ASN1_ITEM_lookup(const char *name); +const ASN1_ITEM *ASN1_ITEM_get(size_t i); + +/* Legacy compatibility */ +# 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_FUNCTIONS_const(type) DECLARE_ASN1_FUNCTIONS(type) +# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, name) +# define I2D_OF_const(type) I2D_OF(type) +# define ASN1_dup_of_const(type,i2d,d2i,x) ASN1_dup_of(type,i2d,d2i,x) +# define ASN1_i2d_fp_of_const(type,i2d,out,x) ASN1_i2d_fp_of(type,i2d,out,x) +# define ASN1_i2d_bio_of_const(type,i2d,out,x) ASN1_i2d_bio_of(type,i2d,out,x) + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/asn1_mac.h b/include/openssl/asn1_mac.h new file mode 100644 index 0000000..fdcb983 --- /dev/null +++ b/include/openssl/asn1_mac.h @@ -0,0 +1,10 @@ +/* + * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with 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/include/openssl/asn1err.h b/include/openssl/asn1err.h new file mode 100644 index 0000000..d427622 --- /dev/null +++ b/include/openssl/asn1err.h @@ -0,0 +1,140 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_ASN1ERR_H +# define OPENSSL_ASN1ERR_H +# pragma once + +# include +# include +# include + + + +/* + * ASN1 reason codes. + */ +# define ASN1_R_ADDING_OBJECT 171 +# define ASN1_R_ASN1_PARSE_ERROR 203 +# define ASN1_R_ASN1_SIG_PARSE_ERROR 204 +# define ASN1_R_AUX_ERROR 100 +# define ASN1_R_BAD_OBJECT_HEADER 102 +# define ASN1_R_BAD_TEMPLATE 230 +# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214 +# define ASN1_R_BN_LIB 105 +# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106 +# define ASN1_R_BUFFER_TOO_SMALL 107 +# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108 +# define ASN1_R_CONTEXT_NOT_INITIALISED 217 +# define ASN1_R_DATA_IS_WRONG 109 +# define ASN1_R_DECODE_ERROR 110 +# define ASN1_R_DEPTH_EXCEEDED 174 +# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198 +# define ASN1_R_ENCODE_ERROR 112 +# define ASN1_R_ERROR_GETTING_TIME 173 +# define ASN1_R_ERROR_LOADING_SECTION 172 +# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114 +# define ASN1_R_EXPECTING_AN_INTEGER 115 +# define ASN1_R_EXPECTING_AN_OBJECT 116 +# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119 +# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120 +# define ASN1_R_FIELD_MISSING 121 +# define ASN1_R_FIRST_NUM_TOO_LARGE 122 +# define ASN1_R_HEADER_TOO_LONG 123 +# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175 +# define ASN1_R_ILLEGAL_BOOLEAN 176 +# define ASN1_R_ILLEGAL_CHARACTERS 124 +# define ASN1_R_ILLEGAL_FORMAT 177 +# define ASN1_R_ILLEGAL_HEX 178 +# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179 +# define ASN1_R_ILLEGAL_INTEGER 180 +# define ASN1_R_ILLEGAL_NEGATIVE_VALUE 226 +# define ASN1_R_ILLEGAL_NESTED_TAGGING 181 +# define ASN1_R_ILLEGAL_NULL 125 +# define ASN1_R_ILLEGAL_NULL_VALUE 182 +# define ASN1_R_ILLEGAL_OBJECT 183 +# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126 +# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170 +# define ASN1_R_ILLEGAL_PADDING 221 +# define ASN1_R_ILLEGAL_TAGGED_ANY 127 +# define ASN1_R_ILLEGAL_TIME_VALUE 184 +# define ASN1_R_ILLEGAL_ZERO_CONTENT 222 +# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185 +# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128 +# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220 +# define ASN1_R_INVALID_BMPSTRING_LENGTH 129 +# define ASN1_R_INVALID_DIGIT 130 +# define ASN1_R_INVALID_MIME_TYPE 205 +# define ASN1_R_INVALID_MODIFIER 186 +# define ASN1_R_INVALID_NUMBER 187 +# define ASN1_R_INVALID_OBJECT_ENCODING 216 +# define ASN1_R_INVALID_SCRYPT_PARAMETERS 227 +# define ASN1_R_INVALID_SEPARATOR 131 +# define ASN1_R_INVALID_STRING_TABLE_VALUE 218 +# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133 +# define ASN1_R_INVALID_UTF8STRING 134 +# define ASN1_R_INVALID_VALUE 219 +# define ASN1_R_LENGTH_TOO_LONG 231 +# define ASN1_R_LIST_ERROR 188 +# define ASN1_R_MIME_NO_CONTENT_TYPE 206 +# define ASN1_R_MIME_PARSE_ERROR 207 +# define ASN1_R_MIME_SIG_PARSE_ERROR 208 +# define ASN1_R_MISSING_EOC 137 +# define ASN1_R_MISSING_SECOND_NUMBER 138 +# define ASN1_R_MISSING_VALUE 189 +# define ASN1_R_MSTRING_NOT_UNIVERSAL 139 +# define ASN1_R_MSTRING_WRONG_TAG 140 +# define ASN1_R_NESTED_ASN1_STRING 197 +# define ASN1_R_NESTED_TOO_DEEP 201 +# define ASN1_R_NON_HEX_CHARACTERS 141 +# define ASN1_R_NOT_ASCII_FORMAT 190 +# define ASN1_R_NOT_ENOUGH_DATA 142 +# define ASN1_R_NO_CONTENT_TYPE 209 +# define ASN1_R_NO_MATCHING_CHOICE_TYPE 143 +# define ASN1_R_NO_MULTIPART_BODY_FAILURE 210 +# define ASN1_R_NO_MULTIPART_BOUNDARY 211 +# define ASN1_R_NO_SIG_CONTENT_TYPE 212 +# define ASN1_R_NULL_IS_WRONG_LENGTH 144 +# define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191 +# define ASN1_R_ODD_NUMBER_OF_CHARS 145 +# define ASN1_R_SECOND_NUMBER_TOO_LARGE 147 +# define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148 +# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149 +# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192 +# define ASN1_R_SHORT_LINE 150 +# define ASN1_R_SIG_INVALID_MIME_TYPE 213 +# define ASN1_R_STREAMING_NOT_SUPPORTED 202 +# define ASN1_R_STRING_TOO_LONG 151 +# define ASN1_R_STRING_TOO_SHORT 152 +# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154 +# define ASN1_R_TIME_NOT_ASCII_FORMAT 193 +# define ASN1_R_TOO_LARGE 223 +# define ASN1_R_TOO_LONG 155 +# define ASN1_R_TOO_SMALL 224 +# define ASN1_R_TYPE_NOT_CONSTRUCTED 156 +# define ASN1_R_TYPE_NOT_PRIMITIVE 195 +# define ASN1_R_UNEXPECTED_EOC 159 +# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215 +# define ASN1_R_UNKNOWN_DIGEST 229 +# define ASN1_R_UNKNOWN_FORMAT 160 +# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161 +# define ASN1_R_UNKNOWN_OBJECT_TYPE 162 +# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163 +# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199 +# define ASN1_R_UNKNOWN_TAG 194 +# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164 +# define ASN1_R_UNSUPPORTED_CIPHER 228 +# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167 +# define ASN1_R_UNSUPPORTED_TYPE 196 +# define ASN1_R_WRONG_INTEGER_TYPE 225 +# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +# define ASN1_R_WRONG_TAG 168 + +#endif diff --git a/include/openssl/asn1t.h b/include/openssl/asn1t.h new file mode 100644 index 0000000..910857c --- /dev/null +++ b/include/openssl/asn1t.h @@ -0,0 +1,946 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/asn1t.h.in + * + * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_ASN1T_H +# define OPENSSL_ASN1T_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_ASN1T_H +# endif + +# 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 + +/*- + * These are the possible values for the itype field of the + * ASN1_ITEM structure and determine how it 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 + * data and 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 +/* unused value 0x3 */ +# define ASN1_ITYPE_EXTERN 0x4 +# define ASN1_ITYPE_MSTRING 0x5 +# define ASN1_ITYPE_NDEF_SEQUENCE 0x6 + +/* 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; \ + } + +/* Macros to aid ASN1 template writing */ + +# define ASN1_ITEM_TEMPLATE(tname) \ + static const ASN1_TEMPLATE tname##_item_tt + +# define ASN1_ITEM_TEMPLATE_END(tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_PRIMITIVE,\ + -1,\ + &tname##_item_tt,\ + 0,\ + NULL,\ + 0,\ + #tname \ + ASN1_ITEM_end(tname) +# define static_ASN1_ITEM_TEMPLATE_END(tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_PRIMITIVE,\ + -1,\ + &tname##_item_tt,\ + 0,\ + NULL,\ + 0,\ + #tname \ + ASN1_ITEM_end(tname) + +/* This is a ASN1 type which just embeds a template */ + +/*- + * This pair helps declare a SEQUENCE. We can do: + * + * ASN1_SEQUENCE(stname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END(stname) + * + * This will produce an ASN1_ITEM called stname_it + * for a structure called stname. + * + * If you want the same structure but a different + * name then use: + * + * ASN1_SEQUENCE(itname) = { + * ... SEQUENCE components ... + * } ASN1_SEQUENCE_END_name(stname, itname) + * + * This will create an item called itname_it using + * a structure called stname. + */ + +# define ASN1_SEQUENCE(tname) \ + static const ASN1_TEMPLATE tname##_seq_tt[] + +# define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname) + +# define static_ASN1_SEQUENCE_END(stname) static_ASN1_SEQUENCE_END_name(stname, stname) + +# define ASN1_SEQUENCE_END_name(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #tname \ + ASN1_ITEM_end(tname) + +# define static_ASN1_SEQUENCE_END_name(stname, tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + NULL,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_NDEF_SEQUENCE(tname) \ + ASN1_SEQUENCE(tname) + +# define ASN1_NDEF_SEQUENCE_cb(tname, cb) \ + ASN1_SEQUENCE_cb(tname, cb) + +# define ASN1_SEQUENCE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0, NULL}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_SEQUENCE_const_cb(tname, const_cb) \ + static const ASN1_AUX tname##_aux = \ + {NULL, ASN1_AFLG_CONST_CB, 0, 0, NULL, 0, const_cb}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_SEQUENCE_cb_const_cb(tname, cb, const_cb) \ + static const ASN1_AUX tname##_aux = \ + {NULL, ASN1_AFLG_CONST_CB, 0, 0, cb, 0, const_cb}; \ + 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, NULL}; \ + 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), NULL}; \ + 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_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) + +# define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname) +# define static_ASN1_SEQUENCE_END_cb(stname, tname) static_ASN1_SEQUENCE_END_ref(stname, tname) + +# define ASN1_SEQUENCE_END_ref(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #tname \ + ASN1_ITEM_end(tname) +# define static_ASN1_SEQUENCE_END_ref(stname, tname) \ + ;\ + static_ASN1_ITEM_start(tname) \ + ASN1_ITYPE_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +# define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \ + ;\ + ASN1_ITEM_start(tname) \ + ASN1_ITYPE_NDEF_SEQUENCE,\ + V_ASN1_SEQUENCE,\ + tname##_seq_tt,\ + sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\ + &tname##_aux,\ + sizeof(stname),\ + #stname \ + ASN1_ITEM_end(tname) + +/*- + * This pair helps declare a CHOICE type. We can do: + * + * ASN1_CHOICE(chname) = { + * ... CHOICE options ... + * ASN1_CHOICE_END(chname) + * + * This will produce an ASN1_ITEM called chname_it + * for a structure called chname. The structure + * definition must look like this: + * typedef struct { + * int type; + * union { + * ASN1_SOMETHING *opt1; + * ASN1_SOMEOTHER *opt2; + * } value; + * } chname; + * + * the name of the selector must be 'type'. + * to use an alternative selector name use the + * ASN1_CHOICE_END_selector() version. + */ + +# define ASN1_CHOICE(tname) \ + static const ASN1_TEMPLATE tname##_ch_tt[] + +# define ASN1_CHOICE_cb(tname, cb) \ + static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0, NULL}; \ + 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 */ + +# 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 } + +/* 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[] + +# 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) + +# 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; /* further data and type-specific functions */ + /* funcs can be ASN1_PRIMITIVE_FUNCS*, ASN1_EXTERN_FUNCS*, or ASN1_AUX* */ + long size; /* Structure size (usually) */ + const char *sname; /* Structure name */ +}; + +/* + * 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_d2i_ex(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx, OSSL_LIB_CTX *libctx, + const char *propq); +typedef int ASN1_ex_i2d(const 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 int ASN1_ex_new_ex_func(ASN1_VALUE **pval, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); +typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it); + +typedef int ASN1_ex_print_func(BIO *out, const ASN1_VALUE **pval, + int indent, const char *fname, + const ASN1_PCTX *pctx); + +typedef int ASN1_primitive_i2c(const 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, const 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_ex_new_ex_func *asn1_ex_new_ex; + ASN1_ex_d2i_ex *asn1_ex_d2i_ex; +} 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. + * For the operations ASN1_OP_I2D_PRE, ASN1_OP_I2D_POST, ASN1_OP_PRINT_PRE, and + * ASN1_OP_PRINT_POST, meanwhile a variant of the callback with const parameter + * 'in' is provided to make clear statically that its input is not modified. If + * and only if this variant is in use the flag ASN1_AFLG_CONST_CB must be set. + */ + +typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it, + void *exarg); +typedef int ASN1_aux_const_cb(int operation, const 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; /* Offset of lock value */ + ASN1_aux_cb *asn1_cb; + int enc_offset; /* Offset of ASN1_ENCODING structure */ + ASN1_aux_const_cb *asn1_const_cb; /* for ASN1_OP_I2D_ and ASN1_OP_PRINT_ */ +} 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 +/* Use the new asn1_const_cb */ +# define ASN1_AFLG_CONST_CB 8 + +/* 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 +# define ASN1_OP_DUP_PRE 14 +# define ASN1_OP_DUP_POST 15 +# define ASN1_OP_GET0_LIBCTX 16 +# define ASN1_OP_GET0_PROPQ 17 + +/* 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(const stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ + } + +# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \ + int i2d_##stname##_NDEF(const stname *a, unsigned char **out) \ + { \ + return ASN1_item_ndef_i2d((const 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(const stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((const ASN1_VALUE *)a, out, \ + ASN1_ITEM_rptr(stname)); \ + } + +# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \ + stname * stname##_dup(const 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, const stname *x, int indent, \ + const ASN1_PCTX *pctx) \ + { \ + return ASN1_item_print(out, (const ASN1_VALUE *)x, indent, \ + ASN1_ITEM_rptr(itname), pctx); \ + } + +/* external definitions for primitive types */ + +DECLARE_ASN1_ITEM(ASN1_BOOLEAN) +DECLARE_ASN1_ITEM(ASN1_TBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_FBOOLEAN) +DECLARE_ASN1_ITEM(ASN1_SEQUENCE) +DECLARE_ASN1_ITEM(CBIGNUM) +DECLARE_ASN1_ITEM(BIGNUM) +DECLARE_ASN1_ITEM(INT32) +DECLARE_ASN1_ITEM(ZINT32) +DECLARE_ASN1_ITEM(UINT32) +DECLARE_ASN1_ITEM(ZUINT32) +DECLARE_ASN1_ITEM(INT64) +DECLARE_ASN1_ITEM(ZINT64) +DECLARE_ASN1_ITEM(UINT64) +DECLARE_ASN1_ITEM(ZUINT64) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * LONG and ZLONG are strongly discouraged for use as stored data, as the + * underlying C type (long) differs in size depending on the architecture. + * They are designed with 32-bit longs in mind. + */ +DECLARE_ASN1_ITEM(LONG) +DECLARE_ASN1_ITEM(ZLONG) +# endif + +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE) +#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx))) +#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp))) +#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null()) +#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n))) +#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n)) +#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i))) +#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk),ossl_check_ASN1_VALUE_freefunc_type(freefunc)) +#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx)) +#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr))) +#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) +#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum) +#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk)) +#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk))) +#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc))) +#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp))) + + + +/* 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(const ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); + +/* Legacy compatibility */ +# define IMPLEMENT_ASN1_FUNCTIONS_const(name) IMPLEMENT_ASN1_FUNCTIONS(name) +# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/openssl/async.h b/include/openssl/async.h new file mode 100644 index 0000000..bc27d5d --- /dev/null +++ b/include/openssl/async.h @@ -0,0 +1,96 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with 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 OPENSSL_ASYNC_H +# define OPENSSL_ASYNC_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_ASYNC_H +# endif + +#if defined(_WIN32) +# if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include to use this */ +#define OSSL_ASYNC_FD HANDLE +#define OSSL_BAD_ASYNC_FD INVALID_HANDLE_VALUE +# endif +#else +#define OSSL_ASYNC_FD int +#define OSSL_BAD_ASYNC_FD -1 +#endif +# include + + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct async_job_st ASYNC_JOB; +typedef struct async_wait_ctx_st ASYNC_WAIT_CTX; +typedef int (*ASYNC_callback_fn)(void *arg); + +#define ASYNC_ERR 0 +#define ASYNC_NO_JOBS 1 +#define ASYNC_PAUSE 2 +#define ASYNC_FINISH 3 + +#define ASYNC_STATUS_UNSUPPORTED 0 +#define ASYNC_STATUS_ERR 1 +#define ASYNC_STATUS_OK 2 +#define ASYNC_STATUS_EAGAIN 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_callback(ASYNC_WAIT_CTX *ctx, + ASYNC_callback_fn *callback, + void **callback_arg); +int ASYNC_WAIT_CTX_set_callback(ASYNC_WAIT_CTX *ctx, + ASYNC_callback_fn callback, + void *callback_arg); +int ASYNC_WAIT_CTX_set_status(ASYNC_WAIT_CTX *ctx, int status); +int ASYNC_WAIT_CTX_get_status(ASYNC_WAIT_CTX *ctx); +int ASYNC_WAIT_CTX_get_changed_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key); +#endif + +int ASYNC_is_capable(void); + +int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret, + int (*func)(void *), void *args, size_t size); +int ASYNC_pause_job(void); + +ASYNC_JOB *ASYNC_get_current_job(void); +ASYNC_WAIT_CTX *ASYNC_get_wait_ctx(ASYNC_JOB *job); +void ASYNC_block_pause(void); +void ASYNC_unblock_pause(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/asyncerr.h b/include/openssl/asyncerr.h new file mode 100644 index 0000000..c093f7b --- /dev/null +++ b/include/openssl/asyncerr.h @@ -0,0 +1,29 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_ASYNCERR_H +# define OPENSSL_ASYNCERR_H +# pragma once + +# include +# include +# include + + + +/* + * ASYNC reason codes. + */ +# define ASYNC_R_FAILED_TO_SET_POOL 101 +# define ASYNC_R_FAILED_TO_SWAP_CONTEXT 102 +# define ASYNC_R_INIT_FAILED 105 +# define ASYNC_R_INVALID_POOL_SIZE 103 + +#endif diff --git a/include/openssl/bio.h b/include/openssl/bio.h new file mode 100644 index 0000000..7afab49 --- /dev/null +++ b/include/openssl/bio.h @@ -0,0 +1,887 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/bio.h.in + * + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +#ifndef OPENSSL_BIO_H +# define OPENSSL_BIO_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_BIO_H +# endif + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* There are the classes of BIOs */ +# define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */ +# define BIO_TYPE_FILTER 0x0200 +# define BIO_TYPE_SOURCE_SINK 0x0400 + +/* These are the 'types' of BIOs */ +# define BIO_TYPE_NONE 0 +# define BIO_TYPE_MEM ( 1|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_FILE ( 2|BIO_TYPE_SOURCE_SINK) + +# define BIO_TYPE_FD ( 4|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_SOCKET ( 5|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_NULL ( 6|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_SSL ( 7|BIO_TYPE_FILTER) +# define BIO_TYPE_MD ( 8|BIO_TYPE_FILTER) +# define BIO_TYPE_BUFFER ( 9|BIO_TYPE_FILTER) +# define BIO_TYPE_CIPHER (10|BIO_TYPE_FILTER) +# define BIO_TYPE_BASE64 (11|BIO_TYPE_FILTER) +# define BIO_TYPE_CONNECT (12|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_ACCEPT (13|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) + +# define BIO_TYPE_NBIO_TEST (16|BIO_TYPE_FILTER)/* server proxy BIO */ +# define BIO_TYPE_NULL_FILTER (17|BIO_TYPE_FILTER) +# define BIO_TYPE_BIO (19|BIO_TYPE_SOURCE_SINK)/* half a BIO pair */ +# define BIO_TYPE_LINEBUFFER (20|BIO_TYPE_FILTER) +# define BIO_TYPE_DGRAM (21|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_ASN1 (22|BIO_TYPE_FILTER) +# define BIO_TYPE_COMP (23|BIO_TYPE_FILTER) +# ifndef OPENSSL_NO_SCTP +# define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# endif +# define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) + +#define BIO_TYPE_START 128 + +/* + * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. + * BIO_set_fp(in,stdin,BIO_NOCLOSE); + */ +# define BIO_NOCLOSE 0x00 +# define BIO_CLOSE 0x01 + +/* + * These are used in the following macros and are passed to BIO_ctrl() + */ +# define BIO_CTRL_RESET 1/* opt - rewind/zero etc */ +# define BIO_CTRL_EOF 2/* opt - are we at the eof */ +# define BIO_CTRL_INFO 3/* opt - extra tit-bits */ +# define BIO_CTRL_SET 4/* man - set the 'IO' type */ +# define BIO_CTRL_GET 5/* man - get the 'IO' type */ +# define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */ +# define BIO_CTRL_POP 7/* opt - internal, used to signify change */ +# define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */ +# define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */ +# define BIO_CTRL_PENDING 10/* opt - is their more data buffered */ +# define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */ +# define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */ +# define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */ +# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */ +# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */ + +# define BIO_CTRL_PEEK 29/* BIO_f_buffer special */ +# define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */ + +/* dgram BIO stuff */ +# define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */ +# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected + * socket to be passed in */ +# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */ +# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */ + +# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation timed out */ + +/* #ifdef IP_MTU_DISCOVER */ +# define BIO_CTRL_DGRAM_MTU_DISCOVER 39/* set DF bit on egress packets */ +/* #endif */ + +# define BIO_CTRL_DGRAM_QUERY_MTU 40/* as kernel for current MTU */ +# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47 +# define BIO_CTRL_DGRAM_GET_MTU 41/* get cached value for MTU */ +# define BIO_CTRL_DGRAM_SET_MTU 42/* set cached value for MTU. + * want to use this if asking + * the kernel fails */ + +# define BIO_CTRL_DGRAM_MTU_EXCEEDED 43/* check whether the MTU was + * exceed in the previous write + * operation */ + +# define BIO_CTRL_DGRAM_GET_PEER 46 +# define BIO_CTRL_DGRAM_SET_PEER 44/* Destination for the data */ + +# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45/* Next DTLS handshake timeout + * to adjust socket timeouts */ +# define BIO_CTRL_DGRAM_SET_DONT_FRAG 48 + +# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49 + +/* Deliberately outside of OPENSSL_NO_SCTP - used in bss_dgram.c */ +# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 +# ifndef OPENSSL_NO_SCTP +/* SCTP stuff */ +# define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51 +# define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52 +# define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53 +# define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60 +# define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61 +# define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62 +# define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63 +# define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64 +# define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65 +# define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70 +# endif + +# define BIO_CTRL_DGRAM_SET_PEEK_MODE 71 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_SEND 72 + * # define BIO_CTRL_SET_KTLS_SEND_CTRL_MSG 74 + * # define BIO_CTRL_CLEAR_KTLS_CTRL_MSG 75 + */ + +# define BIO_CTRL_GET_KTLS_SEND 73 +# define BIO_CTRL_GET_KTLS_RECV 76 + +# define BIO_CTRL_DGRAM_SCTP_WAIT_FOR_DRY 77 +# define BIO_CTRL_DGRAM_SCTP_MSG_WAITING 78 + +/* BIO_f_prefix controls */ +# define BIO_CTRL_SET_PREFIX 79 +# define BIO_CTRL_SET_INDENT 80 +# define BIO_CTRL_GET_INDENT 81 + +# ifndef OPENSSL_NO_KTLS +# define BIO_get_ktls_send(b) \ + (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) +# define BIO_get_ktls_recv(b) \ + (BIO_ctrl(b, BIO_CTRL_GET_KTLS_RECV, 0, NULL) > 0) +# else +# define BIO_get_ktls_send(b) (0) +# define BIO_get_ktls_recv(b) (0) +# 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 OPENSSL_NO_DEPRECATED_3_0 +/* This #define was replaced by an internal constant and should not be used. */ +# define BIO_FLAGS_UPLINK 0 +# endif + +# define BIO_FLAGS_BASE64_NO_NL 0x100 + +/* + * This is used with memory BIOs: + * BIO_FLAGS_MEM_RDONLY means we shouldn't free up or change the data in any way; + * BIO_FLAGS_NONCLEAR_RST means we shouldn't clear data on reset. + */ +# define BIO_FLAGS_MEM_RDONLY 0x200 +# define BIO_FLAGS_NONCLEAR_RST 0x400 +# define BIO_FLAGS_IN_EOF 0x800 + +/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ + +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) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, + long argl, long ret); +OSSL_DEPRECATEDIN_3_0 BIO_callback_fn BIO_get_callback(const BIO *b); +OSSL_DEPRECATEDIN_3_0 void BIO_set_callback(BIO *b, BIO_callback_fn callback); +OSSL_DEPRECATEDIN_3_0 long BIO_debug_callback(BIO *bio, int cmd, + const char *argp, int argi, + long argl, long ret); +# endif + +typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp, + size_t len, int argi, + long argl, int ret, size_t *processed); +BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b); +void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); +long BIO_debug_callback_ex(BIO *bio, int oper, const char *argp, size_t len, + int argi, long argl, int ret, size_t *processed); + +char *BIO_get_callback_arg(const BIO *b); +void BIO_set_callback_arg(BIO *b, char *arg); + +typedef struct bio_method_st BIO_METHOD; + +const char *BIO_method_name(const BIO *b); +int BIO_method_type(const BIO *b); + +typedef int BIO_info_cb(BIO *, int, int); +typedef BIO_info_cb bio_info_cb; /* backward compatibility */ + +SKM_DEFINE_STACK_OF_INTERNAL(BIO, BIO, BIO) +#define sk_BIO_num(sk) OPENSSL_sk_num(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_value(sk, idx) ((BIO *)OPENSSL_sk_value(ossl_check_const_BIO_sk_type(sk), (idx))) +#define sk_BIO_new(cmp) ((STACK_OF(BIO) *)OPENSSL_sk_new(ossl_check_BIO_compfunc_type(cmp))) +#define sk_BIO_new_null() ((STACK_OF(BIO) *)OPENSSL_sk_new_null()) +#define sk_BIO_new_reserve(cmp, n) ((STACK_OF(BIO) *)OPENSSL_sk_new_reserve(ossl_check_BIO_compfunc_type(cmp), (n))) +#define sk_BIO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_BIO_sk_type(sk), (n)) +#define sk_BIO_free(sk) OPENSSL_sk_free(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_zero(sk) OPENSSL_sk_zero(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_delete(sk, i) ((BIO *)OPENSSL_sk_delete(ossl_check_BIO_sk_type(sk), (i))) +#define sk_BIO_delete_ptr(sk, ptr) ((BIO *)OPENSSL_sk_delete_ptr(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))) +#define sk_BIO_push(sk, ptr) OPENSSL_sk_push(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_pop(sk) ((BIO *)OPENSSL_sk_pop(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_shift(sk) ((BIO *)OPENSSL_sk_shift(ossl_check_BIO_sk_type(sk))) +#define sk_BIO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_BIO_sk_type(sk),ossl_check_BIO_freefunc_type(freefunc)) +#define sk_BIO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), (idx)) +#define sk_BIO_set(sk, idx, ptr) ((BIO *)OPENSSL_sk_set(ossl_check_BIO_sk_type(sk), (idx), ossl_check_BIO_type(ptr))) +#define sk_BIO_find(sk, ptr) OPENSSL_sk_find(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) +#define sk_BIO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), pnum) +#define sk_BIO_sort(sk) OPENSSL_sk_sort(ossl_check_BIO_sk_type(sk)) +#define sk_BIO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_BIO_sk_type(sk)) +#define sk_BIO_dup(sk) ((STACK_OF(BIO) *)OPENSSL_sk_dup(ossl_check_const_BIO_sk_type(sk))) +#define sk_BIO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(BIO) *)OPENSSL_sk_deep_copy(ossl_check_const_BIO_sk_type(sk), ossl_check_BIO_copyfunc_type(copyfunc), ossl_check_BIO_freefunc_type(freefunc))) +#define sk_BIO_set_cmp_func(sk, cmp) ((sk_BIO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_BIO_sk_type(sk), ossl_check_BIO_compfunc_type(cmp))) + + + +/* Prefix and suffix callback in ASN1 BIO */ +typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, + void *parg); + +typedef void (*BIO_dgram_sctp_notification_handler_fn) (BIO *b, + void *context, + void *buf); +# 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) +# endif /* OPENSSL_NO_SOCK */ + +# define BIO_do_connect(b) BIO_do_handshake(b) +# define BIO_do_accept(b) BIO_do_handshake(b) + +# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) + +/* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */ +# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) +# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)(c)) + +/* BIO_s_file() */ +# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)(fp)) +# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)(fpp)) + +/* BIO_s_fd() and BIO_s_file() */ +# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL) +# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL) + +/* + * name is cast to lose const, but might be better to route through a + * function so we can do it safely + */ +# ifdef CONST_STRICT +/* + * If you are wondering why this isn't defined, its because CONST_STRICT is + * purely a compile-time kludge to allow const to be checked. + */ +int BIO_read_filename(BIO *b, const char *name); +# else +# define BIO_read_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ,(char *)(name)) +# endif +# define BIO_write_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_WRITE,name) +# define BIO_append_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_APPEND,name) +# define BIO_rw_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name) + +/* + * WARNING WARNING, this ups the reference count on the read bio of the SSL + * structure. This is because the ssl read BIO is now pointed to by the + * next_bio field in the bio. So when you free the BIO, make sure you are + * doing a BIO_free_all() to catch the underlying BIO. + */ +# define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)(ssl)) +# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)(sslp)) +# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL) +# define BIO_set_ssl_renegotiate_bytes(b,num) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL) +# define BIO_get_num_renegotiates(b) \ + BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL) +# define BIO_set_ssl_renegotiate_timeout(b,seconds) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL) + +/* defined in evp.h */ +/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)(md)) */ + +# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)(pp)) +# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)(bm)) +# define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0, \ + (char *)(pp)) +# define BIO_set_mem_eof_return(b,v) \ + BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL) + +/* For the BIO_f_buffer() type */ +# define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL) +# define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL) +# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0) +# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1) +# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf) + +/* Don't use the next one unless you know what you are doing :-) */ +# define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret)) + +# define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL) +# define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL) +# define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL) +# define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL) +# define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) +# define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL) +/* ...pending macros have inappropriate return type */ +size_t BIO_ctrl_pending(BIO *b); +size_t BIO_ctrl_wpending(BIO *b); +# define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL) +# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \ + cbp) +# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb) + +/* For the BIO_f_buffer() type */ +# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL) +# define BIO_buffer_peek(b,s,l) BIO_ctrl(b,BIO_CTRL_PEEK,(l),(s)) + +/* For BIO_s_bio() */ +# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL) +# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL) +# define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2) +# define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL) +# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL) +/* macros with inappropriate type -- but ...pending macros use int too: */ +# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL) +# define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL) +size_t BIO_ctrl_get_write_guarantee(BIO *b); +size_t BIO_ctrl_get_read_request(BIO *b); +int BIO_ctrl_reset_read_request(BIO *b); + +/* ctrl macros for dgram */ +# define BIO_ctrl_dgram_connect(b,peer) \ + (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)(peer)) +# define BIO_ctrl_set_connected(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, 0, (char *)(peer)) +# define BIO_dgram_recv_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) +# define BIO_dgram_send_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) +# define BIO_dgram_get_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) +# define BIO_dgram_set_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) + +/* ctrl macros for BIO_f_prefix */ +# define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) +# define BIO_set_indent(b,i) BIO_ctrl((b), BIO_CTRL_SET_INDENT, (i), NULL) +# define BIO_get_indent(b) BIO_ctrl((b), BIO_CTRL_GET_INDENT, 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(const 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); +BIO *BIO_new_from_core_bio(OSSL_LIB_CTX *libctx, OSSL_CORE_BIO *corebio); +# ifndef OPENSSL_NO_STDIO +BIO *BIO_new_fp(FILE *stream, int close_flag); +# endif +BIO *BIO_new_ex(OSSL_LIB_CTX *libctx, const BIO_METHOD *method); +BIO *BIO_new(const BIO_METHOD *type); +int BIO_free(BIO *a); +void BIO_set_data(BIO *a, void *ptr); +void *BIO_get_data(BIO *a); +void BIO_set_init(BIO *a, int init); +int BIO_get_init(BIO *a); +void BIO_set_shutdown(BIO *a, int shut); +int BIO_get_shutdown(BIO *a); +void BIO_vfree(BIO *a); +int BIO_up_ref(BIO *a); +int BIO_read(BIO *b, void *data, int dlen); +int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +int BIO_gets(BIO *bp, char *buf, int size); +int BIO_get_line(BIO *bio, char *buf, int size); +int BIO_write(BIO *b, const void *data, int dlen); +int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +int BIO_puts(BIO *bp, const char *buf); +int BIO_indent(BIO *b, int indent, int max); +long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); +long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp); +void *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); +long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); +BIO *BIO_push(BIO *b, BIO *append); +BIO *BIO_pop(BIO *b); +void BIO_free_all(BIO *a); +BIO *BIO_find_type(BIO *b, int bio_type); +BIO *BIO_next(BIO *b); +void BIO_set_next(BIO *b, BIO *next); +BIO *BIO_get_retry_BIO(BIO *bio, int *reason); +int BIO_get_retry_reason(BIO *bio); +void BIO_set_retry_reason(BIO *bio, int reason); +BIO *BIO_dup_chain(BIO *in); + +int BIO_nread0(BIO *bio, char **buf); +int BIO_nread(BIO *bio, char **buf, int num); +int BIO_nwrite0(BIO *bio, char **buf); +int BIO_nwrite(BIO *bio, char **buf, int num); + +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_readbuffer(void); +const BIO_METHOD *BIO_f_linebuffer(void); +const BIO_METHOD *BIO_f_nbio_test(void); +const BIO_METHOD *BIO_f_prefix(void); +const BIO_METHOD *BIO_s_core(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, + BIO_dgram_sctp_notification_handler_fn handle_notifications, + 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); +int BIO_socket_wait(int fd, int for_read, time_t max_time); +# endif +int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); +int BIO_do_connect_retry(BIO *bio, int timeout, int nap_milliseconds); + +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 void *s, int len); +int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const void *s, int len, int indent); +int BIO_dump(BIO *b, const void *bytes, int len); +int BIO_dump_indent(BIO *b, const void *bytes, int len, int indent); +# ifndef OPENSSL_NO_STDIO +int BIO_dump_fp(FILE *fp, const void *s, int len); +int BIO_dump_indent_fp(FILE *fp, const void *s, int len, int indent); +# endif +int BIO_hex_string(BIO *out, int indent, int width, const void *data, + int datalen); + +# ifndef OPENSSL_NO_SOCK +BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, + const void *where, size_t wherelen, unsigned short port); +void BIO_ADDR_free(BIO_ADDR *); +void BIO_ADDR_clear(BIO_ADDR *ap); +int BIO_ADDR_family(const BIO_ADDR *ap); +int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l); +unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap); +char *BIO_ADDR_hostname_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_service_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_path_string(const BIO_ADDR *ap); + +const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai); +const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai); +void BIO_ADDRINFO_free(BIO_ADDRINFO *bai); + +enum BIO_hostserv_priorities { + BIO_PARSE_PRIO_HOST, BIO_PARSE_PRIO_SERV +}; +int BIO_parse_hostserv(const char *hostserv, char **host, char **service, + enum BIO_hostserv_priorities hostserv_prio); +enum BIO_lookup_type { + BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER +}; +int BIO_lookup(const char *host, const char *service, + enum BIO_lookup_type lookup_type, + int family, int socktype, BIO_ADDRINFO **res); +int BIO_lookup_ex(const char *host, const char *service, + int lookup_type, int family, int socktype, int protocol, + BIO_ADDRINFO **res); +int BIO_sock_error(int sock); +int BIO_socket_ioctl(int fd, long type, void *arg); +int BIO_socket_nbio(int fd, int mode); +int BIO_sock_init(void); +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define BIO_sock_cleanup() while(0) continue +# endif +int BIO_set_tcp_ndelay(int sock, int turn_on); +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 struct hostent *BIO_gethostbyname(const char *name); +OSSL_DEPRECATEDIN_1_1_0 int BIO_get_port(const char *str, unsigned short *port_ptr); +OSSL_DEPRECATEDIN_1_1_0 int BIO_get_host_ip(const char *str, unsigned char *ip); +OSSL_DEPRECATEDIN_1_1_0 int BIO_get_accept_socket(char *host_port, int mode); +OSSL_DEPRECATEDIN_1_1_0 int BIO_accept(int sock, char **ip_port); +# endif + +union BIO_sock_info_u { + BIO_ADDR *addr; +}; +enum BIO_sock_info_type { + BIO_SOCK_INFO_ADDRESS +}; +int BIO_sock_info(int sock, + enum BIO_sock_info_type type, union BIO_sock_info_u *info); + +# define BIO_SOCK_REUSEADDR 0x01 +# define BIO_SOCK_V6_ONLY 0x02 +# define BIO_SOCK_KEEPALIVE 0x04 +# define BIO_SOCK_NONBLOCK 0x08 +# define BIO_SOCK_NODELAY 0x10 + +int BIO_socket(int domain, int socktype, int protocol, int options); +int BIO_connect(int sock, const BIO_ADDR *addr, int options); +int BIO_bind(int sock, const BIO_ADDR *addr, int options); +int BIO_listen(int sock, const BIO_ADDR *addr, int options); +int BIO_accept_ex(int accept_sock, BIO_ADDR *addr, int options); +int BIO_closesocket(int sock); + +BIO *BIO_new_socket(int sock, int close_flag); +BIO *BIO_new_connect(const char *host_port); +BIO *BIO_new_accept(const char *host_port); +# endif /* OPENSSL_NO_SOCK*/ + +BIO *BIO_new_fd(int fd, int close_flag); + +int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +/* + * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. + * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default + * value. + */ + +void BIO_copy_next_retry(BIO *b); + +/* + * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); + */ + +# define ossl_bio__attr__(x) +# if defined(__GNUC__) && defined(__STDC_VERSION__) \ + && !defined(__MINGW32__) && !defined(__MINGW64__) \ + && !defined(__APPLE__) + /* + * Because we support the 'z' modifier, which made its appearance in C99, + * we can't use __attribute__ with pre C99 dialects. + */ +# if __STDC_VERSION__ >= 199901L +# undef ossl_bio__attr__ +# define ossl_bio__attr__ __attribute__ +# if __GNUC__*10 + __GNUC_MINOR__ >= 44 +# define ossl_bio__printf__ __gnu_printf__ +# else +# define ossl_bio__printf__ __printf__ +# endif +# endif +# endif +int BIO_printf(BIO *bio, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 3))); +int BIO_vprintf(BIO *bio, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 0))); +int BIO_snprintf(char *buf, size_t n, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 4))); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); +# undef ossl_bio__attr__ +# undef ossl_bio__printf__ + + +BIO_METHOD *BIO_meth_new(int type, const char *name); +void BIO_meth_free(BIO_METHOD *biom); +int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); +int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, + size_t *); +int BIO_meth_set_write(BIO_METHOD *biom, + int (*write) (BIO *, const char *, int)); +int BIO_meth_set_write_ex(BIO_METHOD *biom, + int (*bwrite) (BIO *, const char *, size_t, size_t *)); +int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_read(BIO_METHOD *biom, + int (*read) (BIO *, char *, int)); +int BIO_meth_set_read_ex(BIO_METHOD *biom, + int (*bread) (BIO *, char *, size_t, size_t *)); +int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts) (BIO *, const char *)); +int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*gets) (BIO *, char *, int)); +long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); +int BIO_meth_set_ctrl(BIO_METHOD *biom, + long (*ctrl) (BIO *, int, long, void *)); +int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); +int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); +long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) + (BIO *, int, BIO_info_cb *); +int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, + long (*callback_ctrl) (BIO *, int, + BIO_info_cb *)); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/bioerr.h b/include/openssl/bioerr.h new file mode 100644 index 0000000..787b30a --- /dev/null +++ b/include/openssl/bioerr.h @@ -0,0 +1,65 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_BIOERR_H +# define OPENSSL_BIOERR_H +# pragma once + +# include +# include +# include + + + +/* + * BIO reason codes. + */ +# define BIO_R_ACCEPT_ERROR 100 +# define BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET 141 +# define BIO_R_AMBIGUOUS_HOST_OR_SERVICE 129 +# define BIO_R_BAD_FOPEN_MODE 101 +# define BIO_R_BROKEN_PIPE 124 +# define BIO_R_CONNECT_ERROR 103 +# define BIO_R_CONNECT_TIMEOUT 147 +# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107 +# define BIO_R_GETSOCKNAME_ERROR 132 +# define BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS 133 +# define BIO_R_GETTING_SOCKTYPE 134 +# define BIO_R_INVALID_ARGUMENT 125 +# define BIO_R_INVALID_SOCKET 135 +# define BIO_R_IN_USE 123 +# define BIO_R_LENGTH_TOO_LONG 102 +# define BIO_R_LISTEN_V6_ONLY 136 +# define BIO_R_LOOKUP_RETURNED_NOTHING 142 +# define BIO_R_MALFORMED_HOST_OR_SERVICE 130 +# define BIO_R_NBIO_CONNECT_ERROR 110 +# define BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED 143 +# define BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED 144 +# define BIO_R_NO_PORT_DEFINED 113 +# define BIO_R_NO_SUCH_FILE 128 +# define BIO_R_NULL_PARAMETER 115 /* unused */ +# define BIO_R_TRANSFER_ERROR 104 +# define BIO_R_TRANSFER_TIMEOUT 105 +# define BIO_R_UNABLE_TO_BIND_SOCKET 117 +# define BIO_R_UNABLE_TO_CREATE_SOCKET 118 +# define BIO_R_UNABLE_TO_KEEPALIVE 137 +# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 +# define BIO_R_UNABLE_TO_NODELAY 138 +# define BIO_R_UNABLE_TO_REUSEADDR 139 +# define BIO_R_UNAVAILABLE_IP_FAMILY 145 +# define BIO_R_UNINITIALIZED 120 +# define BIO_R_UNKNOWN_INFO_TYPE 140 +# define BIO_R_UNSUPPORTED_IP_FAMILY 146 +# define BIO_R_UNSUPPORTED_METHOD 121 +# define BIO_R_UNSUPPORTED_PROTOCOL_FAMILY 131 +# define BIO_R_WRITE_TO_READ_ONLY_BIO 126 +# define BIO_R_WSASTARTUP 122 + +#endif diff --git a/include/openssl/blowfish.h b/include/openssl/blowfish.h new file mode 100644 index 0000000..667d642 --- /dev/null +++ b/include/openssl/blowfish.h @@ -0,0 +1,78 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_BLOWFISH_H +# define OPENSSL_BLOWFISH_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_BLOWFISH_H +# endif + +# include + +# ifndef OPENSSL_NO_BF +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define BF_BLOCK 8 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 + +# 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 + +typedef struct bf_key_st { + BF_LONG P[BF_ROUNDS + 2]; + BF_LONG S[4 * 256]; +} BF_KEY; + +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void BF_set_key(BF_KEY *key, int len, + const unsigned char *data); +OSSL_DEPRECATEDIN_3_0 void BF_encrypt(BF_LONG *data, const BF_KEY *key); +OSSL_DEPRECATEDIN_3_0 void BF_decrypt(BF_LONG *data, const BF_KEY *key); +OSSL_DEPRECATEDIN_3_0 void BF_ecb_encrypt(const unsigned char *in, + unsigned char *out, const BF_KEY *key, + int enc); +OSSL_DEPRECATEDIN_3_0 void BF_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + const BF_KEY *schedule, + unsigned char *ivec, int enc); +OSSL_DEPRECATEDIN_3_0 void BF_cfb64_encrypt(const unsigned char *in, + unsigned char *out, + long length, const BF_KEY *schedule, + unsigned char *ivec, int *num, + int enc); +OSSL_DEPRECATEDIN_3_0 void BF_ofb64_encrypt(const unsigned char *in, + unsigned char *out, + long length, const BF_KEY *schedule, + unsigned char *ivec, int *num); +OSSL_DEPRECATEDIN_3_0 const char *BF_options(void); +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/include/openssl/bn.h b/include/openssl/bn.h new file mode 100644 index 0000000..27b127a --- /dev/null +++ b/include/openssl/bn.h @@ -0,0 +1,584 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_BN_H +# define OPENSSL_BN_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_BN_H +# endif + +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * 64-bit processor with LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT_LONG +# define BN_ULONG unsigned long +# define BN_BYTES 8 +# endif + +/* + * 64-bit processor other than LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT +# define BN_ULONG unsigned long long +# define BN_BYTES 8 +# endif + +# ifdef THIRTY_TWO_BIT +# define BN_ULONG unsigned int +# define BN_BYTES 4 +# endif + +# define BN_BITS2 (BN_BYTES * 8) +# define BN_BITS (BN_BITS2 * 2) +# define BN_TBIT ((BN_ULONG)1 << (BN_BITS2 - 1)) + +# define BN_FLG_MALLOCED 0x01 +# define BN_FLG_STATIC_DATA 0x02 + +/* + * avoid leaking exponent information through timing, + * BN_mod_exp_mont() will call BN_mod_exp_mont_consttime, + * BN_div() will call BN_div_no_branch, + * BN_mod_inverse() will call bn_mod_inverse_no_branch. + */ +# define BN_FLG_CONSTTIME 0x04 +# define BN_FLG_SECURE 0x08 + +# ifndef OPENSSL_NO_DEPRECATED_0_9_8 +/* 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); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define BN_prime_checks 0 /* default: select number of iterations based + * on the size of the number */ + +/* + * BN_prime_checks_for_size() returns the number of Miller-Rabin iterations + * that will be done for checking that a random number is probably prime. The + * error rate for accepting a composite number as prime depends on the size of + * the prime |b|. The error rates used are for calculating an RSA key with 2 primes, + * and so the level is what you would expect for a key of double the size of the + * prime. + * + * This table is generated using the algorithm of FIPS PUB 186-4 + * Digital Signature Standard (DSS), section F.1, page 117. + * (https://dx.doi.org/10.6028/NIST.FIPS.186-4) + * + * The following magma script was used to generate the output: + * securitybits:=125; + * k:=1024; + * for t:=1 to 65 do + * for M:=3 to Floor(2*Sqrt(k-1)-1) do + * S:=0; + * // Sum over m + * for m:=3 to M do + * s:=0; + * // Sum over j + * for j:=2 to m do + * s+:=(RealField(32)!2)^-(j+(k-1)/j); + * end for; + * S+:=2^(m-(m-1)*t)*s; + * end for; + * A:=2^(k-2-M*t); + * B:=8*(Pi(RealField(32))^2-6)/3*2^(k-2)*S; + * pkt:=2.00743*Log(2)*k*2^-k*(A+B); + * seclevel:=Floor(-Log(2,pkt)); + * if seclevel ge securitybits then + * printf "k: %5o, security: %o bits (t: %o, M: %o)\n",k,seclevel,t,M; + * break; + * end if; + * end for; + * if seclevel ge securitybits then break; end if; + * end for; + * + * It can be run online at: + * http://magma.maths.usyd.edu.au/calc + * + * And will output: + * k: 1024, security: 129 bits (t: 6, M: 23) + * + * k is the number of bits of the prime, securitybits is the level we want to + * reach. + * + * prime length | RSA key size | # MR tests | security level + * -------------+--------------|------------+--------------- + * (b) >= 6394 | >= 12788 | 3 | 256 bit + * (b) >= 3747 | >= 7494 | 3 | 192 bit + * (b) >= 1345 | >= 2690 | 4 | 128 bit + * (b) >= 1080 | >= 2160 | 5 | 128 bit + * (b) >= 852 | >= 1704 | 5 | 112 bit + * (b) >= 476 | >= 952 | 5 | 80 bit + * (b) >= 400 | >= 800 | 6 | 80 bit + * (b) >= 347 | >= 694 | 7 | 80 bit + * (b) >= 308 | >= 616 | 8 | 80 bit + * (b) >= 55 | >= 110 | 27 | 64 bit + * (b) >= 6 | >= 12 | 34 | 64 bit + */ + +# define BN_prime_checks_for_size(b) ((b) >= 3747 ? 3 : \ + (b) >= 1345 ? 4 : \ + (b) >= 476 ? 5 : \ + (b) >= 400 ? 6 : \ + (b) >= 347 ? 7 : \ + (b) >= 308 ? 8 : \ + (b) >= 55 ? 27 : \ + /* b >= 6 */ 34) +# endif + +# 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_LEVEL > 908 +# 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_ex(OSSL_LIB_CTX *ctx); +BN_CTX *BN_CTX_new(void); +BN_CTX *BN_CTX_secure_new_ex(OSSL_LIB_CTX *ctx); +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_ex(BIGNUM *rnd, int bits, int top, int bottom, + unsigned int strength, BN_CTX *ctx); +int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_priv_rand_ex(BIGNUM *rnd, int bits, int top, int bottom, + unsigned int strength, BN_CTX *ctx); +int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_rand_range_ex(BIGNUM *r, const BIGNUM *range, unsigned int strength, + BN_CTX *ctx); +int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_priv_rand_range_ex(BIGNUM *r, const BIGNUM *range, + unsigned int strength, BN_CTX *ctx); +int BN_priv_rand_range(BIGNUM *rnd, const BIGNUM *range); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); +OSSL_DEPRECATEDIN_3_0 +int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range); +# endif +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_native2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2mpi(const BIGNUM *a, unsigned char *to); +int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); +/** BN_set_negative sets sign of a BIGNUM + * \param b pointer to the BIGNUM object + * \param n 0 if the BIGNUM b should be positive and a value != 0 otherwise + */ +void BN_set_negative(BIGNUM *b, int n); +/** BN_is_negative returns 1 if the BIGNUM is negative + * \param b pointer to the BIGNUM object + * \return 1 if a < 0 and 0 otherwise + */ +int BN_is_negative(const BIGNUM *b); + +int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, + BN_CTX *ctx); +# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx)) +int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); +int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m); +int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m); + +BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w); +BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w); +int BN_mul_word(BIGNUM *a, BN_ULONG w); +int BN_add_word(BIGNUM *a, BN_ULONG w); +int BN_sub_word(BIGNUM *a, BN_ULONG w); +int BN_set_word(BIGNUM *a, BN_ULONG w); +BN_ULONG BN_get_word(const BIGNUM *a); + +int BN_cmp(const BIGNUM *a, const BIGNUM *b); +void BN_free(BIGNUM *a); +int BN_is_bit_set(const BIGNUM *a, int n); +int BN_lshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_lshift1(BIGNUM *r, const BIGNUM *a); +int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *in_mont); +int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1, + const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m, + BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_mod_exp_mont_consttime_x2(BIGNUM *rr1, const BIGNUM *a1, const BIGNUM *p1, + const BIGNUM *m1, BN_MONT_CTX *in_mont1, + BIGNUM *rr2, const BIGNUM *a2, const BIGNUM *p2, + const BIGNUM *m2, BN_MONT_CTX *in_mont2, + 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 */ +int BN_are_coprime(BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +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 */ +# ifndef OPENSSL_NO_DEPRECATED_0_9_8 +OSSL_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); +OSSL_DEPRECATEDIN_0_9_8 +int BN_is_prime(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg); +OSSL_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); +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 +int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, + int do_trial_division, BN_GENCB *cb); +# endif +/* Newer versions */ +int BN_generate_prime_ex2(BIGNUM *ret, int bits, int safe, + const BIGNUM *add, const BIGNUM *rem, BN_GENCB *cb, + BN_CTX *ctx); +int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, + const BIGNUM *rem, BN_GENCB *cb); +int BN_check_prime(const BIGNUM *p, BN_CTX *ctx, BN_GENCB *cb); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx); + +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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); +# endif + +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); +# ifndef OPENSSL_NO_DEPRECATED_0_9_8 +OSSL_DEPRECATEDIN_0_9_8 +void BN_set_params(int mul, int high, int low, int mont); +OSSL_DEPRECATEDIN_0_9_8 +int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */ +# endif + +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); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define get_rfc2409_prime_768 BN_get_rfc2409_prime_768 +# define get_rfc2409_prime_1024 BN_get_rfc2409_prime_1024 +# define get_rfc3526_prime_1536 BN_get_rfc3526_prime_1536 +# define get_rfc3526_prime_2048 BN_get_rfc3526_prime_2048 +# define get_rfc3526_prime_3072 BN_get_rfc3526_prime_3072 +# define get_rfc3526_prime_4096 BN_get_rfc3526_prime_4096 +# define get_rfc3526_prime_6144 BN_get_rfc3526_prime_6144 +# define get_rfc3526_prime_8192 BN_get_rfc3526_prime_8192 +# endif + +int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/bnerr.h b/include/openssl/bnerr.h new file mode 100644 index 0000000..7c3f6ef --- /dev/null +++ b/include/openssl/bnerr.h @@ -0,0 +1,47 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_BNERR_H +# define OPENSSL_BNERR_H +# pragma once + +# include +# include +# include + + + +/* + * BN reason codes. + */ +# define BN_R_ARG2_LT_ARG3 100 +# define BN_R_BAD_RECIPROCAL 101 +# define BN_R_BIGNUM_TOO_LONG 114 +# define BN_R_BITS_TOO_SMALL 118 +# define BN_R_CALLED_WITH_EVEN_MODULUS 102 +# define BN_R_DIV_BY_ZERO 103 +# define BN_R_ENCODING_ERROR 104 +# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 +# define BN_R_INPUT_NOT_REDUCED 110 +# define BN_R_INVALID_LENGTH 106 +# define BN_R_INVALID_RANGE 115 +# define BN_R_INVALID_SHIFT 119 +# define BN_R_NOT_A_SQUARE 111 +# define BN_R_NOT_INITIALIZED 107 +# define BN_R_NO_INVERSE 108 +# define BN_R_NO_PRIME_CANDIDATE 121 +# define BN_R_NO_SOLUTION 116 +# define BN_R_NO_SUITABLE_DIGEST 120 +# define BN_R_PRIVATE_KEY_TOO_LARGE 117 +# define BN_R_P_IS_NOT_PRIME 112 +# define BN_R_TOO_MANY_ITERATIONS 113 +# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 + +#endif diff --git a/include/openssl/buffer.h b/include/openssl/buffer.h new file mode 100644 index 0000000..5773b98 --- /dev/null +++ b/include/openssl/buffer.h @@ -0,0 +1,62 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_BUFFER_H +# define OPENSSL_BUFFER_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_BUFFER_H +# endif + +# include +# ifndef OPENSSL_CRYPTO_H +# include +# endif +# include + + +#ifdef __cplusplus +extern "C" { +#endif + +# include +# include + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# 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) +# endif + +struct buf_mem_st { + size_t length; /* current number of bytes */ + char *data; + size_t max; /* size of buffer */ + unsigned long flags; +}; + +# define BUF_MEM_FLAG_SECURE 0x01 + +BUF_MEM *BUF_MEM_new(void); +BUF_MEM *BUF_MEM_new_ex(unsigned long flags); +void BUF_MEM_free(BUF_MEM *a); +size_t BUF_MEM_grow(BUF_MEM *str, size_t len); +size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len); +void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/buffererr.h b/include/openssl/buffererr.h new file mode 100644 index 0000000..d18b1f8 --- /dev/null +++ b/include/openssl/buffererr.h @@ -0,0 +1,25 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_BUFFERERR_H +# define OPENSSL_BUFFERERR_H +# pragma once + +# include +# include +# include + + + +/* + * BUF reason codes. + */ + +#endif diff --git a/include/openssl/camellia.h b/include/openssl/camellia.h new file mode 100644 index 0000000..88c2279 --- /dev/null +++ b/include/openssl/camellia.h @@ -0,0 +1,117 @@ +/* + * Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CAMELLIA_H +# define OPENSSL_CAMELLIA_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_CAMELLIA_H +# endif + +# include + +# ifndef OPENSSL_NO_CAMELLIA +# include +#ifdef __cplusplus +extern "C" { +#endif + +# define CAMELLIA_BLOCK_SIZE 16 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 + +# 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_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; + +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int Camellia_set_key(const unsigned char *userKey, + const int bits, + CAMELLIA_KEY *key); +OSSL_DEPRECATEDIN_3_0 void Camellia_encrypt(const unsigned char *in, + unsigned char *out, + const CAMELLIA_KEY *key); +OSSL_DEPRECATEDIN_3_0 void Camellia_decrypt(const unsigned char *in, + unsigned char *out, + const CAMELLIA_KEY *key); +OSSL_DEPRECATEDIN_3_0 void Camellia_ecb_encrypt(const unsigned char *in, + unsigned char *out, + const CAMELLIA_KEY *key, + const int enc); +OSSL_DEPRECATEDIN_3_0 void Camellia_cbc_encrypt(const unsigned char *in, + unsigned char *out, + size_t length, + const CAMELLIA_KEY *key, + unsigned char *ivec, + const int enc); +OSSL_DEPRECATEDIN_3_0 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); +OSSL_DEPRECATEDIN_3_0 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); +OSSL_DEPRECATEDIN_3_0 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); +OSSL_DEPRECATEDIN_3_0 void Camellia_ofb128_encrypt(const unsigned char *in, + unsigned char *out, + size_t length, + const CAMELLIA_KEY *key, + unsigned char *ivec, + int *num); +OSSL_DEPRECATEDIN_3_0 +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); +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/include/openssl/cast.h b/include/openssl/cast.h new file mode 100644 index 0000000..0bf217b --- /dev/null +++ b/include/openssl/cast.h @@ -0,0 +1,71 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CAST_H +# define OPENSSL_CAST_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_CAST_H +# endif + +# include + +# ifndef OPENSSL_NO_CAST +# ifdef __cplusplus +extern "C" { +# endif + +# define CAST_BLOCK 8 +# define CAST_KEY_LENGTH 16 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 + +# define CAST_ENCRYPT 1 +# define CAST_DECRYPT 0 + +# define CAST_LONG unsigned int + +typedef struct cast_key_st { + CAST_LONG data[32]; + int short_key; /* Use reduced rounds for short key */ +} CAST_KEY; + +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data); +OSSL_DEPRECATEDIN_3_0 +void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out, + const CAST_KEY *key, int enc); +OSSL_DEPRECATEDIN_3_0 +void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key); +OSSL_DEPRECATEDIN_3_0 +void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key); +OSSL_DEPRECATEDIN_3_0 +void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *ks, unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 +void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *schedule, + unsigned char *ivec, int *num, int enc); +OSSL_DEPRECATEDIN_3_0 +void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *schedule, + unsigned char *ivec, int *num); +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/include/openssl/cmac.h b/include/openssl/cmac.h new file mode 100644 index 0000000..f508618 --- /dev/null +++ b/include/openssl/cmac.h @@ -0,0 +1,52 @@ +/* + * Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CMAC_H +# define OPENSSL_CMAC_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_CMAC_H +# endif + +# ifndef OPENSSL_NO_CMAC + +# ifdef __cplusplus +extern "C" { +# endif + +# include + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/* Opaque */ +typedef struct CMAC_CTX_st CMAC_CTX; +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 CMAC_CTX *CMAC_CTX_new(void); +OSSL_DEPRECATEDIN_3_0 void CMAC_CTX_cleanup(CMAC_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 void CMAC_CTX_free(CMAC_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in); +OSSL_DEPRECATEDIN_3_0 int CMAC_Init(CMAC_CTX *ctx, + const void *key, size_t keylen, + const EVP_CIPHER *cipher, ENGINE *impl); +OSSL_DEPRECATEDIN_3_0 int CMAC_Update(CMAC_CTX *ctx, + const void *data, size_t dlen); +OSSL_DEPRECATEDIN_3_0 int CMAC_Final(CMAC_CTX *ctx, + unsigned char *out, size_t *poutlen); +OSSL_DEPRECATEDIN_3_0 int CMAC_resume(CMAC_CTX *ctx); +# endif + +# ifdef __cplusplus +} +# endif + +# endif +#endif diff --git a/include/openssl/cmp.h b/include/openssl/cmp.h new file mode 100644 index 0000000..005018c --- /dev/null +++ b/include/openssl/cmp.h @@ -0,0 +1,596 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/cmp.h.in + * + * Copyright 2007-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright Nokia 2007-2019 + * Copyright Siemens AG 2015-2019 + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_CMP_H +# define OPENSSL_CMP_H + +# include +# ifndef OPENSSL_NO_CMP + +# include +# include +# include +# include + +/* explicit #includes not strictly needed since implied by the above: */ +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# define OSSL_CMP_PVNO 2 + +/*- + * PKIFailureInfo ::= BIT STRING { + * -- since we can fail in more than one way! + * -- More codes may be added in the future if/when required. + * badAlg (0), + * -- unrecognized or unsupported Algorithm Identifier + * badMessageCheck (1), + * -- integrity check failed (e.g., signature did not verify) + * badRequest (2), + * -- transaction not permitted or supported + * badTime (3), + * -- messageTime was not sufficiently close to the system time, + * -- as defined by local policy + * badCertId (4), + * -- no certificate could be found matching the provided criteria + * badDataFormat (5), + * -- the data submitted has the wrong format + * wrongAuthority (6), + * -- the authority indicated in the request is different from the + * -- one creating the response token + * incorrectData (7), + * -- the requester's data is incorrect (for notary services) + * missingTimeStamp (8), + * -- when the timestamp is missing but should be there + * -- (by policy) + * badPOP (9), + * -- the proof-of-possession failed + * certRevoked (10), + * -- the certificate has already been revoked + * certConfirmed (11), + * -- the certificate has already been confirmed + * wrongIntegrity (12), + * -- invalid integrity, password based instead of signature or + * -- vice versa + * badRecipientNonce (13), + * -- invalid recipient nonce, either missing or wrong value + * timeNotAvailable (14), + * -- the TSA's time source is not available + * unacceptedPolicy (15), + * -- the requested TSA policy is not supported by the TSA. + * unacceptedExtension (16), + * -- the requested extension is not supported by the TSA. + * addInfoNotAvailable (17), + * -- the additional information requested could not be + * -- understood or is not available + * badSenderNonce (18), + * -- invalid sender nonce, either missing or wrong size + * badCertTemplate (19), + * -- invalid cert. template or missing mandatory information + * signerNotTrusted (20), + * -- signer of the message unknown or not trusted + * transactionIdInUse (21), + * -- the transaction identifier is already in use + * unsupportedVersion (22), + * -- the version of the message is not supported + * notAuthorized (23), + * -- the sender was not authorized to make the preceding + * -- request or perform the preceding action + * systemUnavail (24), + * -- the request cannot be handled due to system unavailability + * systemFailure (25), + * -- the request cannot be handled due to system failure + * duplicateCertReq (26) + * -- certificate cannot be issued because a duplicate + * -- certificate already exists + * } + */ +# define OSSL_CMP_PKIFAILUREINFO_badAlg 0 +# define OSSL_CMP_PKIFAILUREINFO_badMessageCheck 1 +# define OSSL_CMP_PKIFAILUREINFO_badRequest 2 +# define OSSL_CMP_PKIFAILUREINFO_badTime 3 +# define OSSL_CMP_PKIFAILUREINFO_badCertId 4 +# define OSSL_CMP_PKIFAILUREINFO_badDataFormat 5 +# define OSSL_CMP_PKIFAILUREINFO_wrongAuthority 6 +# define OSSL_CMP_PKIFAILUREINFO_incorrectData 7 +# define OSSL_CMP_PKIFAILUREINFO_missingTimeStamp 8 +# define OSSL_CMP_PKIFAILUREINFO_badPOP 9 +# define OSSL_CMP_PKIFAILUREINFO_certRevoked 10 +# define OSSL_CMP_PKIFAILUREINFO_certConfirmed 11 +# define OSSL_CMP_PKIFAILUREINFO_wrongIntegrity 12 +# define OSSL_CMP_PKIFAILUREINFO_badRecipientNonce 13 +# define OSSL_CMP_PKIFAILUREINFO_timeNotAvailable 14 +# define OSSL_CMP_PKIFAILUREINFO_unacceptedPolicy 15 +# define OSSL_CMP_PKIFAILUREINFO_unacceptedExtension 16 +# define OSSL_CMP_PKIFAILUREINFO_addInfoNotAvailable 17 +# define OSSL_CMP_PKIFAILUREINFO_badSenderNonce 18 +# define OSSL_CMP_PKIFAILUREINFO_badCertTemplate 19 +# define OSSL_CMP_PKIFAILUREINFO_signerNotTrusted 20 +# define OSSL_CMP_PKIFAILUREINFO_transactionIdInUse 21 +# define OSSL_CMP_PKIFAILUREINFO_unsupportedVersion 22 +# define OSSL_CMP_PKIFAILUREINFO_notAuthorized 23 +# define OSSL_CMP_PKIFAILUREINFO_systemUnavail 24 +# define OSSL_CMP_PKIFAILUREINFO_systemFailure 25 +# define OSSL_CMP_PKIFAILUREINFO_duplicateCertReq 26 +# define OSSL_CMP_PKIFAILUREINFO_MAX 26 +# define OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN \ + ((1 << (OSSL_CMP_PKIFAILUREINFO_MAX + 1)) - 1) +# if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX +# error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int +# endif + +typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; + +# define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) +# define OSSL_CMP_CTX_FAILINFO_badMessageCheck (1 << 1) +# define OSSL_CMP_CTX_FAILINFO_badRequest (1 << 2) +# define OSSL_CMP_CTX_FAILINFO_badTime (1 << 3) +# define OSSL_CMP_CTX_FAILINFO_badCertId (1 << 4) +# define OSSL_CMP_CTX_FAILINFO_badDataFormat (1 << 5) +# define OSSL_CMP_CTX_FAILINFO_wrongAuthority (1 << 6) +# define OSSL_CMP_CTX_FAILINFO_incorrectData (1 << 7) +# define OSSL_CMP_CTX_FAILINFO_missingTimeStamp (1 << 8) +# define OSSL_CMP_CTX_FAILINFO_badPOP (1 << 9) +# define OSSL_CMP_CTX_FAILINFO_certRevoked (1 << 10) +# define OSSL_CMP_CTX_FAILINFO_certConfirmed (1 << 11) +# define OSSL_CMP_CTX_FAILINFO_wrongIntegrity (1 << 12) +# define OSSL_CMP_CTX_FAILINFO_badRecipientNonce (1 << 13) +# define OSSL_CMP_CTX_FAILINFO_timeNotAvailable (1 << 14) +# define OSSL_CMP_CTX_FAILINFO_unacceptedPolicy (1 << 15) +# define OSSL_CMP_CTX_FAILINFO_unacceptedExtension (1 << 16) +# define OSSL_CMP_CTX_FAILINFO_addInfoNotAvailable (1 << 17) +# define OSSL_CMP_CTX_FAILINFO_badSenderNonce (1 << 18) +# define OSSL_CMP_CTX_FAILINFO_badCertTemplate (1 << 19) +# define OSSL_CMP_CTX_FAILINFO_signerNotTrusted (1 << 20) +# define OSSL_CMP_CTX_FAILINFO_transactionIdInUse (1 << 21) +# define OSSL_CMP_CTX_FAILINFO_unsupportedVersion (1 << 22) +# define OSSL_CMP_CTX_FAILINFO_notAuthorized (1 << 23) +# define OSSL_CMP_CTX_FAILINFO_systemUnavail (1 << 24) +# define OSSL_CMP_CTX_FAILINFO_systemFailure (1 << 25) +# define OSSL_CMP_CTX_FAILINFO_duplicateCertReq (1 << 26) + +/*- + * PKIStatus ::= INTEGER { + * accepted (0), + * -- you got exactly what you asked for + * grantedWithMods (1), + * -- you got something like what you asked for; the + * -- requester is responsible for ascertaining the differences + * rejection (2), + * -- you don't get it, more information elsewhere in the message + * waiting (3), + * -- the request body part has not yet been processed; expect to + * -- hear more later (note: proper handling of this status + * -- response MAY use the polling req/rep PKIMessages specified + * -- in Section 5.3.22; alternatively, polling in the underlying + * -- transport layer MAY have some utility in this regard) + * revocationWarning (4), + * -- this message contains a warning that a revocation is + * -- imminent + * revocationNotification (5), + * -- notification that a revocation has occurred + * keyUpdateWarning (6) + * -- update already done for the oldCertId specified in + * -- CertReqMsg + * } + */ +# define OSSL_CMP_PKISTATUS_request -3 +# define OSSL_CMP_PKISTATUS_trans -2 +# define OSSL_CMP_PKISTATUS_unspecified -1 +# define OSSL_CMP_PKISTATUS_accepted 0 +# define OSSL_CMP_PKISTATUS_grantedWithMods 1 +# define OSSL_CMP_PKISTATUS_rejection 2 +# define OSSL_CMP_PKISTATUS_waiting 3 +# define OSSL_CMP_PKISTATUS_revocationWarning 4 +# define OSSL_CMP_PKISTATUS_revocationNotification 5 +# define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 + +typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; +DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) + +# define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 +# define OSSL_CMP_CERTORENCCERT_ENCRYPTEDCERT 1 + +/* data type declarations */ +typedef struct ossl_cmp_ctx_st OSSL_CMP_CTX; +typedef struct ossl_cmp_pkiheader_st OSSL_CMP_PKIHEADER; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKIHEADER) +typedef struct ossl_cmp_msg_st OSSL_CMP_MSG; +DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_MSG) +DECLARE_ASN1_ENCODE_FUNCTIONS(OSSL_CMP_MSG, OSSL_CMP_MSG, OSSL_CMP_MSG) +typedef struct ossl_cmp_certstatus_st OSSL_CMP_CERTSTATUS; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS) +#define sk_OSSL_CMP_CERTSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_value(sk, idx) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTSTATUS_new_null() ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_delete(sk, i) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_pop(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_shift(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) +#define sk_OSSL_CMP_CERTSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) +#define sk_OSSL_CMP_CERTSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), pnum) +#define sk_OSSL_CMP_CERTSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) +#define sk_OSSL_CMP_CERTSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))) +#define sk_OSSL_CMP_CERTSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) + +typedef struct ossl_cmp_itav_st OSSL_CMP_ITAV; +DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_ITAV) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) +#define sk_OSSL_CMP_ITAV_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_value(sk, idx) ((OSSL_CMP_ITAV *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), (idx))) +#define sk_OSSL_CMP_ITAV_new(cmp) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) +#define sk_OSSL_CMP_ITAV_new_null() ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_ITAV_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_ITAV_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (n)) +#define sk_OSSL_CMP_ITAV_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_delete(sk, i) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (i))) +#define sk_OSSL_CMP_ITAV_delete_ptr(sk, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_pop(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_shift(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk),ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc)) +#define sk_OSSL_CMP_ITAV_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), (idx)) +#define sk_OSSL_CMP_ITAV_set(sk, idx, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_set(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (idx), ossl_check_OSSL_CMP_ITAV_type(ptr))) +#define sk_OSSL_CMP_ITAV_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) +#define sk_OSSL_CMP_ITAV_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), pnum) +#define sk_OSSL_CMP_ITAV_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) +#define sk_OSSL_CMP_ITAV_dup(sk) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))) +#define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) +#define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) + +typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; +typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; +DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_PKISI) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_PKISI, OSSL_CMP_PKISI, OSSL_CMP_PKISI) +#define sk_OSSL_CMP_PKISI_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_value(sk, idx) ((OSSL_CMP_PKISI *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), (idx))) +#define sk_OSSL_CMP_PKISI_new(cmp) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) +#define sk_OSSL_CMP_PKISI_new_null() ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_PKISI_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_PKISI_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (n)) +#define sk_OSSL_CMP_PKISI_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_delete(sk, i) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (i))) +#define sk_OSSL_CMP_PKISI_delete_ptr(sk, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_pop(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_shift(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk),ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc)) +#define sk_OSSL_CMP_PKISI_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), (idx)) +#define sk_OSSL_CMP_PKISI_set(sk, idx, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_set(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (idx), ossl_check_OSSL_CMP_PKISI_type(ptr))) +#define sk_OSSL_CMP_PKISI_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) +#define sk_OSSL_CMP_PKISI_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), pnum) +#define sk_OSSL_CMP_PKISI_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) +#define sk_OSSL_CMP_PKISI_dup(sk) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))) +#define sk_OSSL_CMP_PKISI_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc))) +#define sk_OSSL_CMP_PKISI_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_PKISI_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) + +typedef struct ossl_cmp_certrepmessage_st OSSL_CMP_CERTREPMESSAGE; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE) +#define sk_OSSL_CMP_CERTREPMESSAGE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_value(sk, idx) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new(cmp) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_null() ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTREPMESSAGE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTREPMESSAGE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTREPMESSAGE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete(sk, i) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTREPMESSAGE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_shift(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk),ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTREPMESSAGE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTREPMESSAGE_set(sk, idx, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) +#define sk_OSSL_CMP_CERTREPMESSAGE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) +#define sk_OSSL_CMP_CERTREPMESSAGE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTREPMESSAGE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) +#define sk_OSSL_CMP_CERTREPMESSAGE_dup(sk) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) +#define sk_OSSL_CMP_CERTREPMESSAGE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTREPMESSAGE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTREPMESSAGE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) + +typedef struct ossl_cmp_pollrep_st OSSL_CMP_POLLREP; +typedef STACK_OF(OSSL_CMP_POLLREP) OSSL_CMP_POLLREPCONTENT; +typedef struct ossl_cmp_certresponse_st OSSL_CMP_CERTRESPONSE; +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE) +#define sk_OSSL_CMP_CERTRESPONSE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_value(sk, idx) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx))) +#define sk_OSSL_CMP_CERTRESPONSE_new(cmp) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) +#define sk_OSSL_CMP_CERTRESPONSE_new_null() ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CMP_CERTRESPONSE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp), (n))) +#define sk_OSSL_CMP_CERTRESPONSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (n)) +#define sk_OSSL_CMP_CERTRESPONSE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_delete(sk, i) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (i))) +#define sk_OSSL_CMP_CERTRESPONSE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_pop(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_shift(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk),ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc)) +#define sk_OSSL_CMP_CERTRESPONSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), (idx)) +#define sk_OSSL_CMP_CERTRESPONSE_set(sk, idx, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) +#define sk_OSSL_CMP_CERTRESPONSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) +#define sk_OSSL_CMP_CERTRESPONSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), pnum) +#define sk_OSSL_CMP_CERTRESPONSE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) +#define sk_OSSL_CMP_CERTRESPONSE_dup(sk) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))) +#define sk_OSSL_CMP_CERTRESPONSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc))) +#define sk_OSSL_CMP_CERTRESPONSE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTRESPONSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) + +typedef STACK_OF(ASN1_UTF8STRING) OSSL_CMP_PKIFREETEXT; + +/* + * function DECLARATIONS + */ + +/* from cmp_asn.c */ +OSSL_CMP_ITAV *OSSL_CMP_ITAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); +void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, + ASN1_TYPE *value); +ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); +ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); +int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, + OSSL_CMP_ITAV *itav); +void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); +void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); + +/* from cmp_ctx.c */ +OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); +void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +/* CMP general options: */ +# define OSSL_CMP_OPT_LOG_VERBOSITY 0 +/* CMP transfer options: */ +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +/* CMP request options: */ +# define OSSL_CMP_OPT_VALIDITY_DAYS 20 +# define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 +# define OSSL_CMP_OPT_SUBJECTALTNAME_CRITICAL 22 +# define OSSL_CMP_OPT_POLICIES_CRITICAL 23 +# define OSSL_CMP_OPT_POPO_METHOD 24 +# define OSSL_CMP_OPT_IMPLICIT_CONFIRM 25 +# define OSSL_CMP_OPT_DISABLE_CONFIRM 26 +# define OSSL_CMP_OPT_REVOCATION_REASON 27 +/* CMP protection options: */ +# define OSSL_CMP_OPT_UNPROTECTED_SEND 30 +# define OSSL_CMP_OPT_UNPROTECTED_ERRORS 31 +# define OSSL_CMP_OPT_OWF_ALGNID 32 +# define OSSL_CMP_OPT_MAC_ALGNID 33 +# define OSSL_CMP_OPT_DIGEST_ALGNID 34 +# define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 +# define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 +int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); +int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); +/* CMP-specific callback for logging and outputting the error queue: */ +int OSSL_CMP_CTX_set_log_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_log_cb_t cb); +# define OSSL_CMP_CTX_set_log_verbosity(ctx, level) \ + OSSL_CMP_CTX_set_option(ctx, OSSL_CMP_OPT_LOG_VERBOSITY, level) +void OSSL_CMP_CTX_print_errors(const OSSL_CMP_CTX *ctx); +/* message transfer: */ +int OSSL_CMP_CTX_set1_serverPath(OSSL_CMP_CTX *ctx, const char *path); +int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); +int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); +int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); +int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); +int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); +void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, + const OSSL_CMP_MSG *req); +int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); +int OSSL_CMP_CTX_set_transfer_cb_arg(OSSL_CMP_CTX *ctx, void *arg); +void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); +/* server authentication: */ +int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); +int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); +STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); +/* client authentication: */ +int OSSL_CMP_CTX_set1_cert(OSSL_CMP_CTX *ctx, X509 *cert); +int OSSL_CMP_CTX_build_cert_chain(OSSL_CMP_CTX *ctx, X509_STORE *own_trusted, + STACK_OF(X509) *candidates); +int OSSL_CMP_CTX_set1_pkey(OSSL_CMP_CTX *ctx, EVP_PKEY *pkey); +int OSSL_CMP_CTX_set1_referenceValue(OSSL_CMP_CTX *ctx, + const unsigned char *ref, int len); +int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, const unsigned char *sec, + const int len); +/* CMP message header and extra certificates: */ +int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); +int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, + STACK_OF(X509) *extraCertsOut); +/* certificate template: */ +int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); +EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); +int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, + const GENERAL_NAME *name); +int OSSL_CMP_CTX_set0_reqExtensions(OSSL_CMP_CTX *ctx, X509_EXTENSIONS *exts); +int OSSL_CMP_CTX_reqExtensions_have_SAN(OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_push0_policy(OSSL_CMP_CTX *ctx, POLICYINFO *pinfo); +int OSSL_CMP_CTX_set1_oldCert(OSSL_CMP_CTX *ctx, X509 *cert); +int OSSL_CMP_CTX_set1_p10CSR(OSSL_CMP_CTX *ctx, const X509_REQ *csr); +/* misc body contents: */ +int OSSL_CMP_CTX_push0_genm_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); +/* certificate confirmation: */ +typedef int (*OSSL_CMP_certConf_cb_t) (OSSL_CMP_CTX *ctx, X509 *cert, + int fail_info, const char **txt); +int OSSL_CMP_certConf_cb(OSSL_CMP_CTX *ctx, X509 *cert, int fail_info, + const char **text); +int OSSL_CMP_CTX_set_certConf_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_certConf_cb_t cb); +int OSSL_CMP_CTX_set_certConf_cb_arg(OSSL_CMP_CTX *ctx, void *arg); +void *OSSL_CMP_CTX_get_certConf_cb_arg(const OSSL_CMP_CTX *ctx); +/* result fetching: */ +int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); +OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); +STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); +STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); +STACK_OF(X509) *OSSL_CMP_CTX_get1_extraCertsIn(const OSSL_CMP_CTX *ctx); +int OSSL_CMP_CTX_set1_transactionID(OSSL_CMP_CTX *ctx, + const ASN1_OCTET_STRING *id); +int OSSL_CMP_CTX_set1_senderNonce(OSSL_CMP_CTX *ctx, + const ASN1_OCTET_STRING *nonce); + +/* from cmp_status.c */ +char *OSSL_CMP_CTX_snprint_PKIStatus(const OSSL_CMP_CTX *ctx, char *buf, + size_t bufsize); +char *OSSL_CMP_snprint_PKIStatusInfo(const OSSL_CMP_PKISI *statusInfo, + char *buf, size_t bufsize); +OSSL_CMP_PKISI * +OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); + +/* from cmp_hdr.c */ +ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const + OSSL_CMP_PKIHEADER *hdr); +ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); + +/* from cmp_msg.c */ +OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); +int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); +int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); +OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); +OSSL_CMP_MSG *OSSL_CMP_MSG_read(const char *file, OSSL_LIB_CTX *libctx, + const char *propq); +int OSSL_CMP_MSG_write(const char *file, const OSSL_CMP_MSG *msg); +OSSL_CMP_MSG *d2i_OSSL_CMP_MSG_bio(BIO *bio, OSSL_CMP_MSG **msg); +int i2d_OSSL_CMP_MSG_bio(BIO *bio, const OSSL_CMP_MSG *msg); + +/* from cmp_vfy.c */ +int OSSL_CMP_validate_msg(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg); +int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, + X509_STORE *trusted_store, X509 *cert); + +/* from cmp_http.c */ +OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, + const OSSL_CMP_MSG *req); + +/* from cmp_server.c */ +typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; +OSSL_CMP_MSG *OSSL_CMP_SRV_process_request(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req); +OSSL_CMP_MSG * OSSL_CMP_CTX_server_perform(OSSL_CMP_CTX *client_ctx, + const OSSL_CMP_MSG *req); +OSSL_CMP_SRV_CTX *OSSL_CMP_SRV_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); +void OSSL_CMP_SRV_CTX_free(OSSL_CMP_SRV_CTX *srv_ctx); +typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_cert_request_cb_t) + (OSSL_CMP_SRV_CTX *srv_ctx, const OSSL_CMP_MSG *req, int certReqId, + const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr, + X509 **certOut, STACK_OF(X509) **chainOut, STACK_OF(X509) **caPubs); +typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_rr_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, + const X509_NAME *issuer, + const ASN1_INTEGER *serial); +typedef int (*OSSL_CMP_SRV_genm_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, + const STACK_OF(OSSL_CMP_ITAV) *in, + STACK_OF(OSSL_CMP_ITAV) **out); +typedef void (*OSSL_CMP_SRV_error_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, + const OSSL_CMP_PKISI *statusInfo, + const ASN1_INTEGER *errorCode, + const OSSL_CMP_PKIFREETEXT *errDetails); +typedef int (*OSSL_CMP_SRV_certConf_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, + int certReqId, + const ASN1_OCTET_STRING *certHash, + const OSSL_CMP_PKISI *si); +typedef int (*OSSL_CMP_SRV_pollReq_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, + const OSSL_CMP_MSG *req, int certReqId, + OSSL_CMP_MSG **certReq, + int64_t *check_after); +int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, + OSSL_CMP_SRV_cert_request_cb_t process_cert_request, + OSSL_CMP_SRV_rr_cb_t process_rr, + OSSL_CMP_SRV_genm_cb_t process_genm, + OSSL_CMP_SRV_error_cb_t process_error, + OSSL_CMP_SRV_certConf_cb_t process_certConf, + OSSL_CMP_SRV_pollReq_cb_t process_pollReq); +OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); +void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); +int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, + int val); +int OSSL_CMP_SRV_CTX_set_accept_unprotected(OSSL_CMP_SRV_CTX *srv_ctx, int val); +int OSSL_CMP_SRV_CTX_set_accept_raverified(OSSL_CMP_SRV_CTX *srv_ctx, int val); +int OSSL_CMP_SRV_CTX_set_grant_implicit_confirm(OSSL_CMP_SRV_CTX *srv_ctx, + int val); + +/* from cmp_client.c */ +X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, + const OSSL_CRMF_MSG *crm); +# define OSSL_CMP_IR 0 +# define OSSL_CMP_CR 2 +# define OSSL_CMP_P10CR 4 +# define OSSL_CMP_KUR 7 +# define OSSL_CMP_exec_IR_ses(ctx) \ + OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) +# define OSSL_CMP_exec_CR_ses(ctx) \ + OSSL_CMP_exec_certreq(ctx, OSSL_CMP_CR, NULL) +# define OSSL_CMP_exec_P10CR_ses(ctx) \ + OSSL_CMP_exec_certreq(ctx, OSSL_CMP_P10CR, NULL) +# define OSSL_CMP_exec_KUR_ses(ctx) \ + OSSL_CMP_exec_certreq(ctx, OSSL_CMP_KUR, NULL) +int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, + const OSSL_CRMF_MSG *crm, int *checkAfter); +int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); +STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); + +# ifdef __cplusplus +} +# endif +# endif /* !defined(OPENSSL_NO_CMP) */ +#endif /* !defined(OPENSSL_CMP_H) */ diff --git a/include/openssl/cmp_util.h b/include/openssl/cmp_util.h new file mode 100644 index 0000000..9a16892 --- /dev/null +++ b/include/openssl/cmp_util.h @@ -0,0 +1,56 @@ +/* + * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright Nokia 2007-2019 + * Copyright Siemens AG 2015-2019 + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CMP_UTIL_H +# define OPENSSL_CMP_UTIL_H +# pragma once + +# include +# ifndef OPENSSL_NO_CMP + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +int OSSL_CMP_log_open(void); +void OSSL_CMP_log_close(void); +# define OSSL_CMP_LOG_PREFIX "CMP " + +/* + * generalized logging/error callback mirroring the severity levels of syslog.h + */ +typedef int OSSL_CMP_severity; +# define OSSL_CMP_LOG_EMERG 0 +# define OSSL_CMP_LOG_ALERT 1 +# define OSSL_CMP_LOG_CRIT 2 +# define OSSL_CMP_LOG_ERR 3 +# define OSSL_CMP_LOG_WARNING 4 +# define OSSL_CMP_LOG_NOTICE 5 +# define OSSL_CMP_LOG_INFO 6 +# define OSSL_CMP_LOG_DEBUG 7 +# define OSSL_CMP_LOG_TRACE 8 +# define OSSL_CMP_LOG_MAX OSSL_CMP_LOG_TRACE +typedef int (*OSSL_CMP_log_cb_t)(const char *func, const char *file, int line, + OSSL_CMP_severity level, const char *msg); + +int OSSL_CMP_print_to_bio(BIO *bio, const char *component, const char *file, + int line, OSSL_CMP_severity level, const char *msg); +/* use of the logging callback for outputting error queue */ +void OSSL_CMP_print_errors_cb(OSSL_CMP_log_cb_t log_fn); + +# ifdef __cplusplus +} +# endif +# endif /* !defined(OPENSSL_NO_CMP) */ +#endif /* !defined(OPENSSL_CMP_UTIL_H) */ diff --git a/include/openssl/cmperr.h b/include/openssl/cmperr.h new file mode 100644 index 0000000..06e9dbf --- /dev/null +++ b/include/openssl/cmperr.h @@ -0,0 +1,114 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CMPERR_H +# define OPENSSL_CMPERR_H +# pragma once + +# include +# include +# include + + +# ifndef OPENSSL_NO_CMP + + +/* + * CMP reason codes. + */ +# define CMP_R_ALGORITHM_NOT_SUPPORTED 139 +# define CMP_R_BAD_CHECKAFTER_IN_POLLREP 167 +# define CMP_R_BAD_REQUEST_ID 108 +# define CMP_R_CERTHASH_UNMATCHED 156 +# define CMP_R_CERTID_NOT_FOUND 109 +# define CMP_R_CERTIFICATE_NOT_ACCEPTED 169 +# define CMP_R_CERTIFICATE_NOT_FOUND 112 +# define CMP_R_CERTREQMSG_NOT_FOUND 157 +# define CMP_R_CERTRESPONSE_NOT_FOUND 113 +# define CMP_R_CERT_AND_KEY_DO_NOT_MATCH 114 +# define CMP_R_CHECKAFTER_OUT_OF_RANGE 181 +# define CMP_R_ENCOUNTERED_KEYUPDATEWARNING 176 +# define CMP_R_ENCOUNTERED_WAITING 162 +# define CMP_R_ERROR_CALCULATING_PROTECTION 115 +# define CMP_R_ERROR_CREATING_CERTCONF 116 +# define CMP_R_ERROR_CREATING_CERTREP 117 +# define CMP_R_ERROR_CREATING_CERTREQ 163 +# define CMP_R_ERROR_CREATING_ERROR 118 +# define CMP_R_ERROR_CREATING_GENM 119 +# define CMP_R_ERROR_CREATING_GENP 120 +# define CMP_R_ERROR_CREATING_PKICONF 122 +# define CMP_R_ERROR_CREATING_POLLREP 123 +# define CMP_R_ERROR_CREATING_POLLREQ 124 +# define CMP_R_ERROR_CREATING_RP 125 +# define CMP_R_ERROR_CREATING_RR 126 +# define CMP_R_ERROR_PARSING_PKISTATUS 107 +# define CMP_R_ERROR_PROCESSING_MESSAGE 158 +# define CMP_R_ERROR_PROTECTING_MESSAGE 127 +# define CMP_R_ERROR_SETTING_CERTHASH 128 +# define CMP_R_ERROR_UNEXPECTED_CERTCONF 160 +# define CMP_R_ERROR_VALIDATING_PROTECTION 140 +# define CMP_R_ERROR_VALIDATING_SIGNATURE 171 +# define CMP_R_FAILED_BUILDING_OWN_CHAIN 164 +# define CMP_R_FAILED_EXTRACTING_PUBKEY 141 +# define CMP_R_FAILURE_OBTAINING_RANDOM 110 +# define CMP_R_FAIL_INFO_OUT_OF_RANGE 129 +# define CMP_R_INVALID_ARGS 100 +# define CMP_R_INVALID_OPTION 174 +# define CMP_R_MISSING_CERTID 165 +# define CMP_R_MISSING_KEY_INPUT_FOR_CREATING_PROTECTION 130 +# define CMP_R_MISSING_KEY_USAGE_DIGITALSIGNATURE 142 +# define CMP_R_MISSING_P10CSR 121 +# define CMP_R_MISSING_PBM_SECRET 166 +# define CMP_R_MISSING_PRIVATE_KEY 131 +# define CMP_R_MISSING_PROTECTION 143 +# define CMP_R_MISSING_REFERENCE_CERT 168 +# define CMP_R_MISSING_SECRET 178 +# define CMP_R_MISSING_SENDER_IDENTIFICATION 111 +# define CMP_R_MISSING_TRUST_ANCHOR 179 +# define CMP_R_MISSING_TRUST_STORE 144 +# define CMP_R_MULTIPLE_REQUESTS_NOT_SUPPORTED 161 +# define CMP_R_MULTIPLE_RESPONSES_NOT_SUPPORTED 170 +# define CMP_R_MULTIPLE_SAN_SOURCES 102 +# define CMP_R_NO_STDIO 194 +# define CMP_R_NO_SUITABLE_SENDER_CERT 145 +# define CMP_R_NULL_ARGUMENT 103 +# define CMP_R_PKIBODY_ERROR 146 +# define CMP_R_PKISTATUSINFO_NOT_FOUND 132 +# define CMP_R_POLLING_FAILED 172 +# define CMP_R_POTENTIALLY_INVALID_CERTIFICATE 147 +# define CMP_R_RECEIVED_ERROR 180 +# define CMP_R_RECIPNONCE_UNMATCHED 148 +# define CMP_R_REQUEST_NOT_ACCEPTED 149 +# define CMP_R_REQUEST_REJECTED_BY_SERVER 182 +# define CMP_R_SENDER_GENERALNAME_TYPE_NOT_SUPPORTED 150 +# define CMP_R_SRVCERT_DOES_NOT_VALIDATE_MSG 151 +# define CMP_R_TOTAL_TIMEOUT 184 +# define CMP_R_TRANSACTIONID_UNMATCHED 152 +# define CMP_R_TRANSFER_ERROR 159 +# define CMP_R_UNEXPECTED_PKIBODY 133 +# define CMP_R_UNEXPECTED_PKISTATUS 185 +# define CMP_R_UNEXPECTED_PVNO 153 +# define CMP_R_UNKNOWN_ALGORITHM_ID 134 +# define CMP_R_UNKNOWN_CERT_TYPE 135 +# define CMP_R_UNKNOWN_PKISTATUS 186 +# define CMP_R_UNSUPPORTED_ALGORITHM 136 +# define CMP_R_UNSUPPORTED_KEY_TYPE 137 +# define CMP_R_UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC 154 +# define CMP_R_VALUE_TOO_LARGE 175 +# define CMP_R_VALUE_TOO_SMALL 177 +# define CMP_R_WRONG_ALGORITHM_OID 138 +# define CMP_R_WRONG_CERTID 189 +# define CMP_R_WRONG_CERTID_IN_RP 187 +# define CMP_R_WRONG_PBM_VALUE 155 +# define CMP_R_WRONG_RP_COMPONENT_COUNT 188 +# define CMP_R_WRONG_SERIAL_IN_RP 173 + +# endif +#endif diff --git a/include/openssl/cms.h b/include/openssl/cms.h new file mode 100644 index 0000000..8bf7a77 --- /dev/null +++ b/include/openssl/cms.h @@ -0,0 +1,493 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/cms.h.in + * + * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_CMS_H +# define OPENSSL_CMS_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_CMS_H +# endif + +# include + +# ifndef OPENSSL_NO_CMS +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct CMS_ContentInfo_st CMS_ContentInfo; +typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_CertificateChoices CMS_CertificateChoices; +typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; +typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; +typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest; +typedef struct CMS_Receipt_st CMS_Receipt; +typedef struct CMS_RecipientEncryptedKey_st CMS_RecipientEncryptedKey; +typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute; + +SKM_DEFINE_STACK_OF_INTERNAL(CMS_SignerInfo, CMS_SignerInfo, CMS_SignerInfo) +#define sk_CMS_SignerInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_value(sk, idx) ((CMS_SignerInfo *)OPENSSL_sk_value(ossl_check_const_CMS_SignerInfo_sk_type(sk), (idx))) +#define sk_CMS_SignerInfo_new(cmp) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new(ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +#define sk_CMS_SignerInfo_new_null() ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_SignerInfo_new_reserve(cmp, n) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_SignerInfo_compfunc_type(cmp), (n))) +#define sk_CMS_SignerInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_SignerInfo_sk_type(sk), (n)) +#define sk_CMS_SignerInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_delete(sk, i) ((CMS_SignerInfo *)OPENSSL_sk_delete(ossl_check_CMS_SignerInfo_sk_type(sk), (i))) +#define sk_CMS_SignerInfo_delete_ptr(sk, ptr) ((CMS_SignerInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_pop(sk) ((CMS_SignerInfo *)OPENSSL_sk_pop(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_shift(sk) ((CMS_SignerInfo *)OPENSSL_sk_shift(ossl_check_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_SignerInfo_sk_type(sk),ossl_check_CMS_SignerInfo_freefunc_type(freefunc)) +#define sk_CMS_SignerInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), (idx)) +#define sk_CMS_SignerInfo_set(sk, idx, ptr) ((CMS_SignerInfo *)OPENSSL_sk_set(ossl_check_CMS_SignerInfo_sk_type(sk), (idx), ossl_check_CMS_SignerInfo_type(ptr))) +#define sk_CMS_SignerInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) +#define sk_CMS_SignerInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), pnum) +#define sk_CMS_SignerInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_SignerInfo_sk_type(sk)) +#define sk_CMS_SignerInfo_dup(sk) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_SignerInfo_sk_type(sk))) +#define sk_CMS_SignerInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_copyfunc_type(copyfunc), ossl_check_CMS_SignerInfo_freefunc_type(freefunc))) +#define sk_CMS_SignerInfo_set_cmp_func(sk, cmp) ((sk_CMS_SignerInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey) +#define sk_CMS_RecipientEncryptedKey_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_value(sk, idx) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), (idx))) +#define sk_CMS_RecipientEncryptedKey_new(cmp) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +#define sk_CMS_RecipientEncryptedKey_new_null() ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientEncryptedKey_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientEncryptedKey_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (n)) +#define sk_CMS_RecipientEncryptedKey_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_delete(sk, i) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (i))) +#define sk_CMS_RecipientEncryptedKey_delete_ptr(sk, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_pop(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_pop(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_shift(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_shift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk),ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc)) +#define sk_CMS_RecipientEncryptedKey_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), (idx)) +#define sk_CMS_RecipientEncryptedKey_set(sk, idx, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_set(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (idx), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) +#define sk_CMS_RecipientEncryptedKey_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) +#define sk_CMS_RecipientEncryptedKey_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), pnum) +#define sk_CMS_RecipientEncryptedKey_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) +#define sk_CMS_RecipientEncryptedKey_dup(sk) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))) +#define sk_CMS_RecipientEncryptedKey_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_copyfunc_type(copyfunc), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc))) +#define sk_CMS_RecipientEncryptedKey_set_cmp_func(sk, cmp) ((sk_CMS_RecipientEncryptedKey_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientInfo, CMS_RecipientInfo, CMS_RecipientInfo) +#define sk_CMS_RecipientInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_value(sk, idx) ((CMS_RecipientInfo *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientInfo_sk_type(sk), (idx))) +#define sk_CMS_RecipientInfo_new(cmp) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new(ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +#define sk_CMS_RecipientInfo_new_null() ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_null()) +#define sk_CMS_RecipientInfo_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientInfo_compfunc_type(cmp), (n))) +#define sk_CMS_RecipientInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientInfo_sk_type(sk), (n)) +#define sk_CMS_RecipientInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_delete(sk, i) ((CMS_RecipientInfo *)OPENSSL_sk_delete(ossl_check_CMS_RecipientInfo_sk_type(sk), (i))) +#define sk_CMS_RecipientInfo_delete_ptr(sk, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_pop(sk) ((CMS_RecipientInfo *)OPENSSL_sk_pop(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_shift(sk) ((CMS_RecipientInfo *)OPENSSL_sk_shift(ossl_check_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientInfo_sk_type(sk),ossl_check_CMS_RecipientInfo_freefunc_type(freefunc)) +#define sk_CMS_RecipientInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), (idx)) +#define sk_CMS_RecipientInfo_set(sk, idx, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_set(ossl_check_CMS_RecipientInfo_sk_type(sk), (idx), ossl_check_CMS_RecipientInfo_type(ptr))) +#define sk_CMS_RecipientInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) +#define sk_CMS_RecipientInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), pnum) +#define sk_CMS_RecipientInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) +#define sk_CMS_RecipientInfo_dup(sk) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientInfo_sk_type(sk))) +#define sk_CMS_RecipientInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_copyfunc_type(copyfunc), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc))) +#define sk_CMS_RecipientInfo_set_cmp_func(sk, cmp) ((sk_CMS_RecipientInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, CMS_RevocationInfoChoice) +#define sk_CMS_RevocationInfoChoice_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_value(sk, idx) ((CMS_RevocationInfoChoice *)OPENSSL_sk_value(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), (idx))) +#define sk_CMS_RevocationInfoChoice_new(cmp) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +#define sk_CMS_RevocationInfoChoice_new_null() ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_null()) +#define sk_CMS_RevocationInfoChoice_new_reserve(cmp, n) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp), (n))) +#define sk_CMS_RevocationInfoChoice_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (n)) +#define sk_CMS_RevocationInfoChoice_free(sk) OPENSSL_sk_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_delete(sk, i) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (i))) +#define sk_CMS_RevocationInfoChoice_delete_ptr(sk, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_pop(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_pop(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_shift(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_shift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk),ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc)) +#define sk_CMS_RevocationInfoChoice_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), (idx)) +#define sk_CMS_RevocationInfoChoice_set(sk, idx, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_set(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (idx), ossl_check_CMS_RevocationInfoChoice_type(ptr))) +#define sk_CMS_RevocationInfoChoice_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) +#define sk_CMS_RevocationInfoChoice_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), pnum) +#define sk_CMS_RevocationInfoChoice_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) +#define sk_CMS_RevocationInfoChoice_dup(sk) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_dup(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))) +#define sk_CMS_RevocationInfoChoice_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_copyfunc_type(copyfunc), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc))) +#define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) + + +DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) +DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) +DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) + +CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +# 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 +# define CMS_CADES 0x100000 +# define CMS_USE_ORIGINATOR_KEYID 0x200000 + +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 OPENSSL_PEM_H +DECLARE_PEM_rw(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); +CMS_ContentInfo *SMIME_read_CMS_ex(BIO *bio, int flags, BIO **bcont, CMS_ContentInfo **ci); +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_ex(X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, BIO *data, + unsigned int flags, OSSL_LIB_CTX *ctx, + const char *propq); + +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); +CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, + OSSL_LIB_CTX *ctx, const char *propq); + +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); +CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, + unsigned int flags, OSSL_LIB_CTX *ctx, + const char *propq); + +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); +CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, + const unsigned char *key, + size_t keylen, unsigned int flags, + OSSL_LIB_CTX *ctx, + const char *propq); + +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); +CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, unsigned int flags, + OSSL_LIB_CTX *ctx, const char *propq); + +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_pkey_and_peer(CMS_ContentInfo *cms, EVP_PKEY *pk, + X509 *cert, X509 *peer); +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_AuthEnvelopedData_create(const EVP_CIPHER *cipher); +CMS_ContentInfo * +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, + const char *propq); +CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); +CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, + OSSL_LIB_CTX *ctx, + const char *propq); + +CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, + X509 *recip, unsigned int flags); +CMS_RecipientInfo *CMS_add1_recipient(CMS_ContentInfo *cms, X509 *recip, + EVP_PKEY *originatorPrivKey, X509 * originator, 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(const 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(const CMS_SignerInfo *si, + const ASN1_OBJECT *oid, + int lastpos, int type); + +int CMS_unsigned_get_attr_count(const CMS_SignerInfo *si); +int CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid, + int lastpos, int type); + +int CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr); +CMS_ReceiptRequest *CMS_ReceiptRequest_create0( + unsigned char *id, int idlen, int allorfirst, + STACK_OF(GENERAL_NAMES) *receiptList, + STACK_OF(GENERAL_NAMES) *receiptsTo); +CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( + unsigned char *id, int idlen, int allorfirst, + STACK_OF(GENERAL_NAMES) *receiptList, + STACK_OF(GENERAL_NAMES) *receiptsTo, + OSSL_LIB_CTX *ctx); + +int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); +void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, + ASN1_STRING **pcid, + int *pallorfirst, + STACK_OF(GENERAL_NAMES) **plist, + STACK_OF(GENERAL_NAMES) **prto); +int CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri, + X509_ALGOR **palg, + ASN1_OCTET_STRING **pukm); +STACK_OF(CMS_RecipientEncryptedKey) +*CMS_RecipientInfo_kari_get0_reks(CMS_RecipientInfo *ri); + +int CMS_RecipientInfo_kari_get0_orig_id(CMS_RecipientInfo *ri, + X509_ALGOR **pubalg, + ASN1_BIT_STRING **pubkey, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, + ASN1_INTEGER **sno); + +int CMS_RecipientInfo_kari_orig_id_cmp(CMS_RecipientInfo *ri, X509 *cert); + +int CMS_RecipientEncryptedKey_get0_id(CMS_RecipientEncryptedKey *rek, + ASN1_OCTET_STRING **keyid, + ASN1_GENERALIZEDTIME **tm, + CMS_OtherKeyAttribute **other, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_RecipientEncryptedKey_cert_cmp(CMS_RecipientEncryptedKey *rek, + X509 *cert); +int CMS_RecipientInfo_kari_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk); +int CMS_RecipientInfo_kari_set0_pkey_and_peer(CMS_RecipientInfo *ri, EVP_PKEY *pk, X509 *peer); +EVP_CIPHER_CTX *CMS_RecipientInfo_kari_get0_ctx(CMS_RecipientInfo *ri); +int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms, + CMS_RecipientInfo *ri, + CMS_RecipientEncryptedKey *rek); + +int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg, + ASN1_OCTET_STRING *ukm, int keylen); + +/* Backward compatibility for spelling errors. */ +# define CMS_R_UNKNOWN_DIGEST_ALGORITM CMS_R_UNKNOWN_DIGEST_ALGORITHM +# define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE \ + CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/include/openssl/cmserr.h b/include/openssl/cmserr.h new file mode 100644 index 0000000..d48c2a4 --- /dev/null +++ b/include/openssl/cmserr.h @@ -0,0 +1,123 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CMSERR_H +# define OPENSSL_CMSERR_H +# pragma once + +# include +# include +# include + + +# ifndef OPENSSL_NO_CMS + + +/* + * CMS reason codes. + */ +# define CMS_R_ADD_SIGNER_ERROR 99 +# define CMS_R_ATTRIBUTE_ERROR 161 +# define CMS_R_CERTIFICATE_ALREADY_PRESENT 175 +# define CMS_R_CERTIFICATE_HAS_NO_KEYID 160 +# define CMS_R_CERTIFICATE_VERIFY_ERROR 100 +# define CMS_R_CIPHER_AEAD_SET_TAG_ERROR 184 +# define CMS_R_CIPHER_GET_TAG 185 +# 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_DECODE_ERROR 187 +# 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_ESS_SIGNING_CERTID_MISMATCH_ERROR 183 +# 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_INVALID_LABEL 190 +# define CMS_R_INVALID_OAEP_PARAMETERS 191 +# define CMS_R_KDF_PARAMETER_ERROR 186 +# 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_PEER_KEY_ERROR 188 +# 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_SHARED_INFO_ERROR 189 +# define CMS_R_SIGNER_CERTIFICATE_NOT_FOUND 138 +# define CMS_R_SIGNFINAL_ERROR 139 +# define CMS_R_SMIME_TEXT_ERROR 140 +# define CMS_R_STORE_INIT_ERROR 141 +# define CMS_R_TYPE_NOT_COMPRESSED_DATA 142 +# define CMS_R_TYPE_NOT_DATA 143 +# define CMS_R_TYPE_NOT_DIGESTED_DATA 144 +# define CMS_R_TYPE_NOT_ENCRYPTED_DATA 145 +# define CMS_R_TYPE_NOT_ENVELOPED_DATA 146 +# define CMS_R_UNABLE_TO_FINALIZE_CONTEXT 147 +# define CMS_R_UNKNOWN_CIPHER 148 +# define CMS_R_UNKNOWN_DIGEST_ALGORITHM 149 +# define CMS_R_UNKNOWN_ID 150 +# define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM 151 +# define CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM 194 +# define CMS_R_UNSUPPORTED_CONTENT_TYPE 152 +# define CMS_R_UNSUPPORTED_ENCRYPTION_TYPE 192 +# define CMS_R_UNSUPPORTED_KEK_ALGORITHM 153 +# define CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM 179 +# define CMS_R_UNSUPPORTED_LABEL_SOURCE 193 +# define CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE 155 +# define CMS_R_UNSUPPORTED_RECIPIENT_TYPE 154 +# define CMS_R_UNSUPPORTED_TYPE 156 +# define CMS_R_UNWRAP_ERROR 157 +# define CMS_R_UNWRAP_FAILURE 180 +# define CMS_R_VERIFICATION_FAILURE 158 +# define CMS_R_WRAP_ERROR 159 + +# endif +#endif diff --git a/include/openssl/comp.h b/include/openssl/comp.h new file mode 100644 index 0000000..06ff581 --- /dev/null +++ b/include/openssl/comp.h @@ -0,0 +1,59 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_COMP_H +# define OPENSSL_COMP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_COMP_H +# endif + +# include + +# ifndef OPENSSL_NO_COMP +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define COMP_zlib_cleanup() while(0) continue +#endif + +# ifdef OPENSSL_BIO_H +# ifdef ZLIB +const BIO_METHOD *BIO_f_zlib(void); +# endif +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/include/openssl/comperr.h b/include/openssl/comperr.h new file mode 100644 index 0000000..01dd3e6 --- /dev/null +++ b/include/openssl/comperr.h @@ -0,0 +1,31 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_COMPERR_H +# define OPENSSL_COMPERR_H +# pragma once + +# include +# include +# include + + +# ifndef OPENSSL_NO_COMP + + +/* + * COMP reason codes. + */ +# define COMP_R_ZLIB_DEFLATE_ERROR 99 +# define COMP_R_ZLIB_INFLATE_ERROR 100 +# define COMP_R_ZLIB_NOT_SUPPORTED 101 + +# endif +#endif diff --git a/include/openssl/conf.h b/include/openssl/conf.h new file mode 100644 index 0000000..1c48f1e --- /dev/null +++ b/include/openssl/conf.h @@ -0,0 +1,214 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/conf.h.in + * + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_CONF_H +# define OPENSSL_CONF_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_CONF_H +# endif + +# include +# include +# include +# include +# include +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char *section; + char *name; + char *value; +} CONF_VALUE; + +SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) +#define sk_CONF_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_value(sk, idx) ((CONF_VALUE *)OPENSSL_sk_value(ossl_check_const_CONF_VALUE_sk_type(sk), (idx))) +#define sk_CONF_VALUE_new(cmp) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new(ossl_check_CONF_VALUE_compfunc_type(cmp))) +#define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_null()) +#define sk_CONF_VALUE_new_reserve(cmp, n) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_CONF_VALUE_compfunc_type(cmp), (n))) +#define sk_CONF_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CONF_VALUE_sk_type(sk), (n)) +#define sk_CONF_VALUE_free(sk) OPENSSL_sk_free(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_delete(sk, i) ((CONF_VALUE *)OPENSSL_sk_delete(ossl_check_CONF_VALUE_sk_type(sk), (i))) +#define sk_CONF_VALUE_delete_ptr(sk, ptr) ((CONF_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_pop(sk) ((CONF_VALUE *)OPENSSL_sk_pop(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_shift(sk) ((CONF_VALUE *)OPENSSL_sk_shift(ossl_check_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CONF_VALUE_sk_type(sk),ossl_check_CONF_VALUE_freefunc_type(freefunc)) +#define sk_CONF_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), (idx)) +#define sk_CONF_VALUE_set(sk, idx, ptr) ((CONF_VALUE *)OPENSSL_sk_set(ossl_check_CONF_VALUE_sk_type(sk), (idx), ossl_check_CONF_VALUE_type(ptr))) +#define sk_CONF_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) +#define sk_CONF_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), pnum) +#define sk_CONF_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CONF_VALUE_sk_type(sk)) +#define sk_CONF_VALUE_dup(sk) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_dup(ossl_check_const_CONF_VALUE_sk_type(sk))) +#define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) +#define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) +DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); +#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) +#define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_delete(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_delete(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_retrieve(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_retrieve(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) +#define lh_CONF_VALUE_error(lh) OPENSSL_LH_error(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_num_items(lh) OPENSSL_LH_num_items(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) +#define lh_CONF_VALUE_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_CONF_VALUE_lh_type(lh)) +#define lh_CONF_VALUE_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_CONF_VALUE_lh_type(lh), dl) +#define lh_CONF_VALUE_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_doallfunc_type(dfn)) + + +struct conf_st; +struct conf_method_st; +typedef struct conf_method_st CONF_METHOD; + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# include +# endif + +/* Module definitions */ +typedef struct conf_imodule_st CONF_IMODULE; +typedef struct conf_module_st CONF_MODULE; + +STACK_OF(CONF_MODULE); +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); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void OPENSSL_config(const char *config_name); +#endif + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# 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 + */ + +CONF *NCONF_new_ex(OSSL_LIB_CTX *libctx, CONF_METHOD *meth); +OSSL_LIB_CTX *NCONF_get0_libctx(const CONF *conf); +CONF *NCONF_new(CONF_METHOD *meth); +CONF_METHOD *NCONF_default(void); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 CONF_METHOD *NCONF_WIN32(void); +#endif +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(OPENSSL_CSTRING) *NCONF_get_section_names(const CONF *conf); +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_ex(OSSL_LIB_CTX *libctx, const char *filename, + 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); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define CONF_modules_free() while(0) continue +#endif +int CONF_module_add(const char *name, conf_init_func *ifunc, + conf_finish_func *ffunc); + +const char *CONF_imodule_get_name(const CONF_IMODULE *md); +const char *CONF_imodule_get_value(const CONF_IMODULE *md); +void *CONF_imodule_get_usr_data(const CONF_IMODULE *md); +void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data); +CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md); +unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md); +void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags); +void *CONF_module_get_usr_data(CONF_MODULE *pmod); +void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data); + +char *CONF_get1_default_config_file(void); + +int CONF_parse_list(const char *list, int sep, int nospc, + int (*list_cb) (const char *elem, int len, void *usr), + void *arg); + +void OPENSSL_load_builtin_modules(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/conf_api.h b/include/openssl/conf_api.h new file mode 100644 index 0000000..ed67d57 --- /dev/null +++ b/include/openssl/conf_api.h @@ -0,0 +1,46 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CONF_API_H +# define OPENSSL_CONF_API_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_CONF_API_H +# endif + +# 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/include/openssl/conferr.h b/include/openssl/conferr.h new file mode 100644 index 0000000..496e2e1 --- /dev/null +++ b/include/openssl/conferr.h @@ -0,0 +1,51 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CONFERR_H +# define OPENSSL_CONFERR_H +# pragma once + +# include +# include +# include + + + +/* + * CONF reason codes. + */ +# define CONF_R_ERROR_LOADING_DSO 110 +# define CONF_R_INVALID_PRAGMA 122 +# define CONF_R_LIST_CANNOT_BE_NULL 115 +# define CONF_R_MANDATORY_BRACES_IN_VARIABLE_EXPANSION 123 +# define CONF_R_MISSING_CLOSE_SQUARE_BRACKET 100 +# define CONF_R_MISSING_EQUAL_SIGN 101 +# define CONF_R_MISSING_INIT_FUNCTION 112 +# define CONF_R_MODULE_INITIALIZATION_ERROR 109 +# define CONF_R_NO_CLOSE_BRACE 102 +# define CONF_R_NO_CONF 105 +# define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106 +# define CONF_R_NO_SECTION 107 +# define CONF_R_NO_SUCH_FILE 114 +# define CONF_R_NO_VALUE 108 +# define CONF_R_NUMBER_TOO_LARGE 121 +# define CONF_R_OPENSSL_CONF_REFERENCES_MISSING_SECTION 124 +# define CONF_R_RECURSIVE_DIRECTORY_INCLUDE 111 +# define CONF_R_RELATIVE_PATH 125 +# define CONF_R_SSL_COMMAND_SECTION_EMPTY 117 +# define CONF_R_SSL_COMMAND_SECTION_NOT_FOUND 118 +# define CONF_R_SSL_SECTION_EMPTY 119 +# define CONF_R_SSL_SECTION_NOT_FOUND 120 +# define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103 +# define CONF_R_UNKNOWN_MODULE_NAME 113 +# define CONF_R_VARIABLE_EXPANSION_TOO_LONG 116 +# define CONF_R_VARIABLE_HAS_NO_VALUE 104 + +#endif diff --git a/include/openssl/configuration.h b/include/openssl/configuration.h new file mode 100644 index 0000000..6d4fb7a --- /dev/null +++ b/include/openssl/configuration.h @@ -0,0 +1,134 @@ +/* + * WARNING: do not edit! + * Generated by configdata.pm from ../openssl-3.1.0/Configurations/common0.tmpl, ../openssl-3.1.0/Configurations/unix-Makefile.tmpl + * via Makefile.in + * + * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CONFIGURATION_H +# define OPENSSL_CONFIGURATION_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +# ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +# endif + +/* + * OpenSSL was configured with the following options: + */ + +# ifndef OPENSSL_SYS_MINGW64 +# define OPENSSL_SYS_MINGW64 1 +# endif +# define OPENSSL_CONFIGURED_API 30100 +# ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +# endif +# ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +# endif +# ifndef OPENSSL_NO_ACVP_TESTS +# define OPENSSL_NO_ACVP_TESTS +# endif +# ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +# endif +# ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +# endif +# ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# endif +# ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +# endif +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +# endif +# ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +# endif +# ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +# endif +# ifndef OPENSSL_NO_FIPS_SECURITYCHECKS +# define OPENSSL_NO_FIPS_SECURITYCHECKS +# 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_KTLS +# define OPENSSL_NO_KTLS +# endif +# ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +# endif +# ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +# endif +# ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +# endif +# ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +# endif +# ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +# endif +# ifndef OPENSSL_NO_TRACE +# define OPENSSL_NO_TRACE +# endif +# ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +# endif +# ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +# endif +# ifndef OPENSSL_NO_UPLINK +# define OPENSSL_NO_UPLINK +# endif +# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +# endif +# ifndef OPENSSL_NO_STATIC_ENGINE +# define OPENSSL_NO_STATIC_ENGINE +# endif + + +/* Generate 80386 code? */ +# undef I386_ONLY + +/* + * 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 + +#endif /* OPENSSL_CONFIGURATION_H */ diff --git a/include/openssl/conftypes.h b/include/openssl/conftypes.h new file mode 100644 index 0000000..17cefaa --- /dev/null +++ b/include/openssl/conftypes.h @@ -0,0 +1,44 @@ +/* + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CONFTYPES_H +# define OPENSSL_CONFTYPES_H +# pragma once + +#ifndef OPENSSL_CONF_H +# include +#endif + +/* + * The contents of this file are deprecated and will be made opaque + */ +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); +}; + +struct conf_st { + CONF_METHOD *meth; + void *meth_data; + LHASH_OF(CONF_VALUE) *data; + int flag_dollarid; + int flag_abspath; + char *includedir; + OSSL_LIB_CTX *libctx; +}; + +#endif diff --git a/include/openssl/core.h b/include/openssl/core.h new file mode 100644 index 0000000..9683ac7 --- /dev/null +++ b/include/openssl/core.h @@ -0,0 +1,233 @@ +/* + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CORE_H +# define OPENSSL_CORE_H +# pragma once + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * Base types + * ---------- + * + * These are the types that the OpenSSL core and providers have in common + * to communicate data between them. + */ + +/* Opaque handles to be used with core upcall functions from providers */ +typedef struct ossl_core_handle_st OSSL_CORE_HANDLE; +typedef struct openssl_core_ctx_st OPENSSL_CORE_CTX; +typedef struct ossl_core_bio_st OSSL_CORE_BIO; + +/* + * Dispatch table element. function_id numbers and the functions are defined + * in core_dispatch.h, see macros with 'OSSL_CORE_MAKE_FUNC' in their names. + * + * An array of these is always terminated by function_id == 0 + */ +struct ossl_dispatch_st { + int function_id; + void (*function)(void); +}; + +/* + * Other items, essentially an int<->pointer map element. + * + * We make this type distinct from OSSL_DISPATCH to ensure that dispatch + * tables remain tables with function pointers only. + * + * This is used whenever we need to pass things like a table of error reason + * codes <-> reason string maps, ... + * + * Usage determines which field works as key if any, rather than field order. + * + * An array of these is always terminated by id == 0 && ptr == NULL + */ +struct ossl_item_st { + unsigned int id; + void *ptr; +}; + +/* + * Type to tie together algorithm names, property definition string and + * the algorithm implementation in the form of a dispatch table. + * + * An array of these is always terminated by algorithm_names == NULL + */ +struct ossl_algorithm_st { + const char *algorithm_names; /* key */ + const char *property_definition; /* key */ + const OSSL_DISPATCH *implementation; + const char *algorithm_description; +}; + +/* + * Type to pass object data in a uniform way, without exposing the object + * structure. + * + * An array of these is always terminated by key == NULL + */ +struct ossl_param_st { + const char *key; /* the name of the parameter */ + unsigned int data_type; /* declare what kind of content is in buffer */ + void *data; /* value being passed in or out */ + size_t data_size; /* data size */ + size_t return_size; /* returned content size */ +}; + +/* Currently supported OSSL_PARAM data types */ +/* + * OSSL_PARAM_INTEGER and OSSL_PARAM_UNSIGNED_INTEGER + * are arbitrary length and therefore require an arbitrarily sized buffer, + * since they may be used to pass numbers larger than what is natively + * available. + * + * The number must be buffered in native form, i.e. MSB first on B_ENDIAN + * systems and LSB first on L_ENDIAN systems. This means that arbitrary + * native integers can be stored in the buffer, just make sure that the + * buffer size is correct and the buffer itself is properly aligned (for + * example by having the buffer field point at a C integer). + */ +# define OSSL_PARAM_INTEGER 1 +# define OSSL_PARAM_UNSIGNED_INTEGER 2 +/*- + * OSSL_PARAM_REAL + * is a C binary floating point values in native form and alignment. + */ +# define OSSL_PARAM_REAL 3 +/*- + * OSSL_PARAM_UTF8_STRING + * is a printable string. It is expected to be printed as it is. + */ +# define OSSL_PARAM_UTF8_STRING 4 +/*- + * OSSL_PARAM_OCTET_STRING + * is a string of bytes with no further specification. It is expected to be + * printed as a hexdump. + */ +# define OSSL_PARAM_OCTET_STRING 5 +/*- + * OSSL_PARAM_UTF8_PTR + * is a pointer to a printable string. It is expected to be printed as it is. + * + * The difference between this and OSSL_PARAM_UTF8_STRING is that only pointers + * are manipulated for this type. + * + * This is more relevant for parameter requests, where the responding + * function doesn't need to copy the data to the provided buffer, but + * sets the provided buffer to point at the actual data instead. + * + * WARNING! Using these is FRAGILE, as it assumes that the actual + * data and its location are constant. + * + * EXTRA WARNING! If you are not completely sure you most likely want + * to use the OSSL_PARAM_UTF8_STRING type. + */ +# define OSSL_PARAM_UTF8_PTR 6 +/*- + * OSSL_PARAM_OCTET_PTR + * is a pointer to a string of bytes with no further specification. It is + * expected to be printed as a hexdump. + * + * The difference between this and OSSL_PARAM_OCTET_STRING is that only pointers + * are manipulated for this type. + * + * This is more relevant for parameter requests, where the responding + * function doesn't need to copy the data to the provided buffer, but + * sets the provided buffer to point at the actual data instead. + * + * WARNING! Using these is FRAGILE, as it assumes that the actual + * data and its location are constant. + * + * EXTRA WARNING! If you are not completely sure you most likely want + * to use the OSSL_PARAM_OCTET_STRING type. + */ +# define OSSL_PARAM_OCTET_PTR 7 + +/* + * Typedef for the thread stop handling callback. Used both internally and by + * providers. + * + * Providers may register for notifications about threads stopping by + * registering a callback to hear about such events. Providers register the + * callback using the OSSL_FUNC_CORE_THREAD_START function in the |in| dispatch + * table passed to OSSL_provider_init(). The arg passed back to a provider will + * be the provider side context object. + */ +typedef void (*OSSL_thread_stop_handler_fn)(void *arg); + + +/*- + * Provider entry point + * -------------------- + * + * This function is expected to be present in any dynamically loadable + * provider module. By definition, if this function doesn't exist in a + * module, that module is not an OpenSSL provider module. + */ +/*- + * |handle| pointer to opaque type OSSL_CORE_HANDLE. This can be used + * together with some functions passed via |in| to query data. + * |in| is the array of functions that the Core passes to the provider. + * |out| will be the array of base functions that the provider passes + * back to the Core. + * |provctx| a provider side context object, optionally created if the + * provider needs it. This value is passed to other provider + * functions, notably other context constructors. + */ +typedef int (OSSL_provider_init_fn)(const OSSL_CORE_HANDLE *handle, + const OSSL_DISPATCH *in, + const OSSL_DISPATCH **out, + void **provctx); +# ifdef __VMS +# pragma names save +# pragma names uppercase,truncated +# endif +OPENSSL_EXPORT OSSL_provider_init_fn OSSL_provider_init; +# ifdef __VMS +# pragma names restore +# endif + +/* + * Generic callback function signature. + * + * The expectation is that any provider function that wants to offer + * a callback / hook can do so by taking an argument with this type, + * as well as a pointer to caller-specific data. When calling the + * callback, the provider function can populate an OSSL_PARAM array + * with data of its choice and pass that in the callback call, along + * with the caller data argument. + * + * libcrypto may use the OSSL_PARAM array to create arguments for an + * application callback it knows about. + */ +typedef int (OSSL_CALLBACK)(const OSSL_PARAM params[], void *arg); +typedef int (OSSL_INOUT_CALLBACK)(const OSSL_PARAM in_params[], + OSSL_PARAM out_params[], void *arg); +/* + * Passphrase callback function signature + * + * This is similar to the generic callback function above, but adds a + * result parameter. + */ +typedef int (OSSL_PASSPHRASE_CALLBACK)(char *pass, size_t pass_size, + size_t *pass_len, + const OSSL_PARAM params[], void *arg); + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/include/openssl/core_dispatch.h b/include/openssl/core_dispatch.h new file mode 100644 index 0000000..11e3c86 --- /dev/null +++ b/include/openssl/core_dispatch.h @@ -0,0 +1,943 @@ +/* + * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CORE_NUMBERS_H +# define OPENSSL_CORE_NUMBERS_H +# pragma once + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * Identities + * ---------- + * + * All series start with 1, to allow 0 to be an array terminator. + * For any FUNC identity, we also provide a function signature typedef + * and a static inline function to extract a function pointer from a + * OSSL_DISPATCH element in a type safe manner. + * + * Names: + * for any function base name 'foo' (uppercase form 'FOO'), we will have + * the following: + * - a macro for the identity with the name OSSL_FUNC_'FOO' or derivatives + * thereof (to be specified further down) + * - a function signature typedef with the name OSSL_FUNC_'foo'_fn + * - a function pointer extractor function with the name OSSL_FUNC_'foo' + */ + +/* + * Helper macro to create the function signature typedef and the extractor + * |type| is the return-type of the function, |name| is the name of the + * function to fetch, and |args| is a parenthesized list of parameters + * for the function (that is, it is |name|'s function signature). + * Note: This is considered a "reserved" internal macro. Applications should + * not use this or assume its existence. + */ +#define OSSL_CORE_MAKE_FUNC(type,name,args) \ + typedef type (OSSL_FUNC_##name##_fn)args; \ + static ossl_unused ossl_inline \ + OSSL_FUNC_##name##_fn *OSSL_FUNC_##name(const OSSL_DISPATCH *opf) \ + { \ + return (OSSL_FUNC_##name##_fn *)opf->function; \ + } + +/* + * Core function identities, for the two OSSL_DISPATCH tables being passed + * in the OSSL_provider_init call. + * + * 0 serves as a marker for the end of the OSSL_DISPATCH array, and must + * therefore NEVER be used as a function identity. + */ +/* Functions provided by the Core to the provider, reserved numbers 1-1023 */ +# define OSSL_FUNC_CORE_GETTABLE_PARAMS 1 +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, + core_gettable_params,(const OSSL_CORE_HANDLE *prov)) +# define OSSL_FUNC_CORE_GET_PARAMS 2 +OSSL_CORE_MAKE_FUNC(int,core_get_params,(const OSSL_CORE_HANDLE *prov, + OSSL_PARAM params[])) +# define OSSL_FUNC_CORE_THREAD_START 3 +OSSL_CORE_MAKE_FUNC(int,core_thread_start,(const OSSL_CORE_HANDLE *prov, + OSSL_thread_stop_handler_fn handfn, + void *arg)) +# define OSSL_FUNC_CORE_GET_LIBCTX 4 +OSSL_CORE_MAKE_FUNC(OPENSSL_CORE_CTX *,core_get_libctx, + (const OSSL_CORE_HANDLE *prov)) +# define OSSL_FUNC_CORE_NEW_ERROR 5 +OSSL_CORE_MAKE_FUNC(void,core_new_error,(const OSSL_CORE_HANDLE *prov)) +# define OSSL_FUNC_CORE_SET_ERROR_DEBUG 6 +OSSL_CORE_MAKE_FUNC(void,core_set_error_debug, + (const OSSL_CORE_HANDLE *prov, + const char *file, int line, const char *func)) +# define OSSL_FUNC_CORE_VSET_ERROR 7 +OSSL_CORE_MAKE_FUNC(void,core_vset_error, + (const OSSL_CORE_HANDLE *prov, + uint32_t reason, const char *fmt, va_list args)) +# define OSSL_FUNC_CORE_SET_ERROR_MARK 8 +OSSL_CORE_MAKE_FUNC(int, core_set_error_mark, (const OSSL_CORE_HANDLE *prov)) +# define OSSL_FUNC_CORE_CLEAR_LAST_ERROR_MARK 9 +OSSL_CORE_MAKE_FUNC(int, core_clear_last_error_mark, + (const OSSL_CORE_HANDLE *prov)) +# define OSSL_FUNC_CORE_POP_ERROR_TO_MARK 10 +OSSL_CORE_MAKE_FUNC(int, core_pop_error_to_mark, (const OSSL_CORE_HANDLE *prov)) + + +/* Functions to access the OBJ database */ + +#define OSSL_FUNC_CORE_OBJ_ADD_SIGID 11 +#define OSSL_FUNC_CORE_OBJ_CREATE 12 + +OSSL_CORE_MAKE_FUNC(int, core_obj_add_sigid, + (const OSSL_CORE_HANDLE *prov, const char *sign_name, + const char *digest_name, const char *pkey_name)) +OSSL_CORE_MAKE_FUNC(int, core_obj_create, + (const OSSL_CORE_HANDLE *prov, const char *oid, + const char *sn, const char *ln)) + +/* Memory allocation, freeing, clearing. */ +#define OSSL_FUNC_CRYPTO_MALLOC 20 +OSSL_CORE_MAKE_FUNC(void *, + CRYPTO_malloc, (size_t num, const char *file, int line)) +#define OSSL_FUNC_CRYPTO_ZALLOC 21 +OSSL_CORE_MAKE_FUNC(void *, + CRYPTO_zalloc, (size_t num, const char *file, int line)) +#define OSSL_FUNC_CRYPTO_FREE 22 +OSSL_CORE_MAKE_FUNC(void, + CRYPTO_free, (void *ptr, const char *file, int line)) +#define OSSL_FUNC_CRYPTO_CLEAR_FREE 23 +OSSL_CORE_MAKE_FUNC(void, + CRYPTO_clear_free, (void *ptr, size_t num, const char *file, int line)) +#define OSSL_FUNC_CRYPTO_REALLOC 24 +OSSL_CORE_MAKE_FUNC(void *, + CRYPTO_realloc, (void *addr, size_t num, const char *file, int line)) +#define OSSL_FUNC_CRYPTO_CLEAR_REALLOC 25 +OSSL_CORE_MAKE_FUNC(void *, + CRYPTO_clear_realloc, (void *addr, size_t old_num, size_t num, + const char *file, int line)) +#define OSSL_FUNC_CRYPTO_SECURE_MALLOC 26 +OSSL_CORE_MAKE_FUNC(void *, + CRYPTO_secure_malloc, (size_t num, const char *file, int line)) +#define OSSL_FUNC_CRYPTO_SECURE_ZALLOC 27 +OSSL_CORE_MAKE_FUNC(void *, + CRYPTO_secure_zalloc, (size_t num, const char *file, int line)) +#define OSSL_FUNC_CRYPTO_SECURE_FREE 28 +OSSL_CORE_MAKE_FUNC(void, + CRYPTO_secure_free, (void *ptr, const char *file, int line)) +#define OSSL_FUNC_CRYPTO_SECURE_CLEAR_FREE 29 +OSSL_CORE_MAKE_FUNC(void, + CRYPTO_secure_clear_free, (void *ptr, size_t num, const char *file, + int line)) +#define OSSL_FUNC_CRYPTO_SECURE_ALLOCATED 30 +OSSL_CORE_MAKE_FUNC(int, + CRYPTO_secure_allocated, (const void *ptr)) +#define OSSL_FUNC_OPENSSL_CLEANSE 31 +OSSL_CORE_MAKE_FUNC(void, + OPENSSL_cleanse, (void *ptr, size_t len)) + +/* Bio functions provided by the core */ +#define OSSL_FUNC_BIO_NEW_FILE 40 +#define OSSL_FUNC_BIO_NEW_MEMBUF 41 +#define OSSL_FUNC_BIO_READ_EX 42 +#define OSSL_FUNC_BIO_WRITE_EX 43 +#define OSSL_FUNC_BIO_UP_REF 44 +#define OSSL_FUNC_BIO_FREE 45 +#define OSSL_FUNC_BIO_VPRINTF 46 +#define OSSL_FUNC_BIO_VSNPRINTF 47 +#define OSSL_FUNC_BIO_PUTS 48 +#define OSSL_FUNC_BIO_GETS 49 +#define OSSL_FUNC_BIO_CTRL 50 + + +OSSL_CORE_MAKE_FUNC(OSSL_CORE_BIO *, BIO_new_file, (const char *filename, + const char *mode)) +OSSL_CORE_MAKE_FUNC(OSSL_CORE_BIO *, BIO_new_membuf, (const void *buf, int len)) +OSSL_CORE_MAKE_FUNC(int, BIO_read_ex, (OSSL_CORE_BIO *bio, void *data, + size_t data_len, size_t *bytes_read)) +OSSL_CORE_MAKE_FUNC(int, BIO_write_ex, (OSSL_CORE_BIO *bio, const void *data, + size_t data_len, size_t *written)) +OSSL_CORE_MAKE_FUNC(int, BIO_gets, (OSSL_CORE_BIO *bio, char *buf, int size)) +OSSL_CORE_MAKE_FUNC(int, BIO_puts, (OSSL_CORE_BIO *bio, const char *str)) +OSSL_CORE_MAKE_FUNC(int, BIO_up_ref, (OSSL_CORE_BIO *bio)) +OSSL_CORE_MAKE_FUNC(int, BIO_free, (OSSL_CORE_BIO *bio)) +OSSL_CORE_MAKE_FUNC(int, BIO_vprintf, (OSSL_CORE_BIO *bio, const char *format, + va_list args)) +OSSL_CORE_MAKE_FUNC(int, BIO_vsnprintf, + (char *buf, size_t n, const char *fmt, va_list args)) +OSSL_CORE_MAKE_FUNC(int, BIO_ctrl, (OSSL_CORE_BIO *bio, + int cmd, long num, void *ptr)) + +#define OSSL_FUNC_SELF_TEST_CB 100 +OSSL_CORE_MAKE_FUNC(void, self_test_cb, (OPENSSL_CORE_CTX *ctx, OSSL_CALLBACK **cb, + void **cbarg)) + +/* Functions to get seed material from the operating system */ +#define OSSL_FUNC_GET_ENTROPY 101 +#define OSSL_FUNC_CLEANUP_ENTROPY 102 +#define OSSL_FUNC_GET_NONCE 103 +#define OSSL_FUNC_CLEANUP_NONCE 104 +OSSL_CORE_MAKE_FUNC(size_t, get_entropy, (const OSSL_CORE_HANDLE *handle, + unsigned char **pout, int entropy, + size_t min_len, size_t max_len)) +OSSL_CORE_MAKE_FUNC(void, cleanup_entropy, (const OSSL_CORE_HANDLE *handle, + unsigned char *buf, size_t len)) +OSSL_CORE_MAKE_FUNC(size_t, get_nonce, (const OSSL_CORE_HANDLE *handle, + unsigned char **pout, size_t min_len, + size_t max_len, const void *salt, + size_t salt_len)) +OSSL_CORE_MAKE_FUNC(void, cleanup_nonce, (const OSSL_CORE_HANDLE *handle, + unsigned char *buf, size_t len)) + +/* Functions to access the core's providers */ +#define OSSL_FUNC_PROVIDER_REGISTER_CHILD_CB 105 +#define OSSL_FUNC_PROVIDER_DEREGISTER_CHILD_CB 106 +#define OSSL_FUNC_PROVIDER_NAME 107 +#define OSSL_FUNC_PROVIDER_GET0_PROVIDER_CTX 108 +#define OSSL_FUNC_PROVIDER_GET0_DISPATCH 109 +#define OSSL_FUNC_PROVIDER_UP_REF 110 +#define OSSL_FUNC_PROVIDER_FREE 111 + +OSSL_CORE_MAKE_FUNC(int, provider_register_child_cb, + (const OSSL_CORE_HANDLE *handle, + int (*create_cb)(const OSSL_CORE_HANDLE *provider, void *cbdata), + int (*remove_cb)(const OSSL_CORE_HANDLE *provider, void *cbdata), + int (*global_props_cb)(const char *props, void *cbdata), + void *cbdata)) +OSSL_CORE_MAKE_FUNC(void, provider_deregister_child_cb, + (const OSSL_CORE_HANDLE *handle)) +OSSL_CORE_MAKE_FUNC(const char *, provider_name, + (const OSSL_CORE_HANDLE *prov)) +OSSL_CORE_MAKE_FUNC(void *, provider_get0_provider_ctx, + (const OSSL_CORE_HANDLE *prov)) +OSSL_CORE_MAKE_FUNC(const OSSL_DISPATCH *, provider_get0_dispatch, + (const OSSL_CORE_HANDLE *prov)) +OSSL_CORE_MAKE_FUNC(int, provider_up_ref, + (const OSSL_CORE_HANDLE *prov, int activate)) +OSSL_CORE_MAKE_FUNC(int, provider_free, + (const OSSL_CORE_HANDLE *prov, int deactivate)) + +/* Functions provided by the provider to the Core, reserved numbers 1024-1535 */ +# define OSSL_FUNC_PROVIDER_TEARDOWN 1024 +OSSL_CORE_MAKE_FUNC(void,provider_teardown,(void *provctx)) +# define OSSL_FUNC_PROVIDER_GETTABLE_PARAMS 1025 +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, + provider_gettable_params,(void *provctx)) +# define OSSL_FUNC_PROVIDER_GET_PARAMS 1026 +OSSL_CORE_MAKE_FUNC(int,provider_get_params,(void *provctx, + OSSL_PARAM params[])) +# define OSSL_FUNC_PROVIDER_QUERY_OPERATION 1027 +OSSL_CORE_MAKE_FUNC(const OSSL_ALGORITHM *,provider_query_operation, + (void *provctx, int operation_id, int *no_store)) +# define OSSL_FUNC_PROVIDER_UNQUERY_OPERATION 1028 +OSSL_CORE_MAKE_FUNC(void, provider_unquery_operation, + (void *provctx, int operation_id, const OSSL_ALGORITHM *)) +# define OSSL_FUNC_PROVIDER_GET_REASON_STRINGS 1029 +OSSL_CORE_MAKE_FUNC(const OSSL_ITEM *,provider_get_reason_strings, + (void *provctx)) +# define OSSL_FUNC_PROVIDER_GET_CAPABILITIES 1030 +OSSL_CORE_MAKE_FUNC(int, provider_get_capabilities, (void *provctx, + const char *capability, OSSL_CALLBACK *cb, void *arg)) +# define OSSL_FUNC_PROVIDER_SELF_TEST 1031 +OSSL_CORE_MAKE_FUNC(int, provider_self_test, (void *provctx)) + +/* Operations */ + +# define OSSL_OP_DIGEST 1 +# define OSSL_OP_CIPHER 2 /* Symmetric Ciphers */ +# define OSSL_OP_MAC 3 +# define OSSL_OP_KDF 4 +# define OSSL_OP_RAND 5 +# define OSSL_OP_KEYMGMT 10 +# define OSSL_OP_KEYEXCH 11 +# define OSSL_OP_SIGNATURE 12 +# define OSSL_OP_ASYM_CIPHER 13 +# define OSSL_OP_KEM 14 +/* New section for non-EVP operations */ +# define OSSL_OP_ENCODER 20 +# define OSSL_OP_DECODER 21 +# define OSSL_OP_STORE 22 +/* Highest known operation number */ +# define OSSL_OP__HIGHEST 22 + +/* Digests */ + +# define OSSL_FUNC_DIGEST_NEWCTX 1 +# define OSSL_FUNC_DIGEST_INIT 2 +# define OSSL_FUNC_DIGEST_UPDATE 3 +# define OSSL_FUNC_DIGEST_FINAL 4 +# define OSSL_FUNC_DIGEST_DIGEST 5 +# define OSSL_FUNC_DIGEST_FREECTX 6 +# define OSSL_FUNC_DIGEST_DUPCTX 7 +# define OSSL_FUNC_DIGEST_GET_PARAMS 8 +# define OSSL_FUNC_DIGEST_SET_CTX_PARAMS 9 +# define OSSL_FUNC_DIGEST_GET_CTX_PARAMS 10 +# define OSSL_FUNC_DIGEST_GETTABLE_PARAMS 11 +# define OSSL_FUNC_DIGEST_SETTABLE_CTX_PARAMS 12 +# define OSSL_FUNC_DIGEST_GETTABLE_CTX_PARAMS 13 + +OSSL_CORE_MAKE_FUNC(void *, digest_newctx, (void *provctx)) +OSSL_CORE_MAKE_FUNC(int, digest_init, (void *dctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, digest_update, + (void *dctx, const unsigned char *in, size_t inl)) +OSSL_CORE_MAKE_FUNC(int, digest_final, + (void *dctx, + unsigned char *out, size_t *outl, size_t outsz)) +OSSL_CORE_MAKE_FUNC(int, digest_digest, + (void *provctx, const unsigned char *in, size_t inl, + unsigned char *out, size_t *outl, size_t outsz)) + +OSSL_CORE_MAKE_FUNC(void, digest_freectx, (void *dctx)) +OSSL_CORE_MAKE_FUNC(void *, digest_dupctx, (void *dctx)) + +OSSL_CORE_MAKE_FUNC(int, digest_get_params, (OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, digest_set_ctx_params, + (void *vctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, digest_get_ctx_params, + (void *vctx, OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, digest_gettable_params, + (void *provctx)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, digest_settable_ctx_params, + (void *dctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, digest_gettable_ctx_params, + (void *dctx, void *provctx)) + +/* Symmetric Ciphers */ + +# define OSSL_FUNC_CIPHER_NEWCTX 1 +# define OSSL_FUNC_CIPHER_ENCRYPT_INIT 2 +# define OSSL_FUNC_CIPHER_DECRYPT_INIT 3 +# define OSSL_FUNC_CIPHER_UPDATE 4 +# define OSSL_FUNC_CIPHER_FINAL 5 +# define OSSL_FUNC_CIPHER_CIPHER 6 +# define OSSL_FUNC_CIPHER_FREECTX 7 +# define OSSL_FUNC_CIPHER_DUPCTX 8 +# define OSSL_FUNC_CIPHER_GET_PARAMS 9 +# define OSSL_FUNC_CIPHER_GET_CTX_PARAMS 10 +# define OSSL_FUNC_CIPHER_SET_CTX_PARAMS 11 +# define OSSL_FUNC_CIPHER_GETTABLE_PARAMS 12 +# define OSSL_FUNC_CIPHER_GETTABLE_CTX_PARAMS 13 +# define OSSL_FUNC_CIPHER_SETTABLE_CTX_PARAMS 14 + +OSSL_CORE_MAKE_FUNC(void *, cipher_newctx, (void *provctx)) +OSSL_CORE_MAKE_FUNC(int, cipher_encrypt_init, (void *cctx, + const unsigned char *key, + size_t keylen, + const unsigned char *iv, + size_t ivlen, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_decrypt_init, (void *cctx, + const unsigned char *key, + size_t keylen, + const unsigned char *iv, + size_t ivlen, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_update, + (void *cctx, + unsigned char *out, size_t *outl, size_t outsize, + const unsigned char *in, size_t inl)) +OSSL_CORE_MAKE_FUNC(int, cipher_final, + (void *cctx, + unsigned char *out, size_t *outl, size_t outsize)) +OSSL_CORE_MAKE_FUNC(int, cipher_cipher, + (void *cctx, + unsigned char *out, size_t *outl, size_t outsize, + const unsigned char *in, size_t inl)) +OSSL_CORE_MAKE_FUNC(void, cipher_freectx, (void *cctx)) +OSSL_CORE_MAKE_FUNC(void *, cipher_dupctx, (void *cctx)) +OSSL_CORE_MAKE_FUNC(int, cipher_get_params, (OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_get_ctx_params, (void *cctx, + OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, cipher_set_ctx_params, (void *cctx, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, cipher_gettable_params, + (void *provctx)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, cipher_settable_ctx_params, + (void *cctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, cipher_gettable_ctx_params, + (void *cctx, void *provctx)) + +/* MACs */ + +# define OSSL_FUNC_MAC_NEWCTX 1 +# define OSSL_FUNC_MAC_DUPCTX 2 +# define OSSL_FUNC_MAC_FREECTX 3 +# define OSSL_FUNC_MAC_INIT 4 +# define OSSL_FUNC_MAC_UPDATE 5 +# define OSSL_FUNC_MAC_FINAL 6 +# define OSSL_FUNC_MAC_GET_PARAMS 7 +# define OSSL_FUNC_MAC_GET_CTX_PARAMS 8 +# define OSSL_FUNC_MAC_SET_CTX_PARAMS 9 +# define OSSL_FUNC_MAC_GETTABLE_PARAMS 10 +# define OSSL_FUNC_MAC_GETTABLE_CTX_PARAMS 11 +# define OSSL_FUNC_MAC_SETTABLE_CTX_PARAMS 12 + +OSSL_CORE_MAKE_FUNC(void *, mac_newctx, (void *provctx)) +OSSL_CORE_MAKE_FUNC(void *, mac_dupctx, (void *src)) +OSSL_CORE_MAKE_FUNC(void, mac_freectx, (void *mctx)) +OSSL_CORE_MAKE_FUNC(int, mac_init, (void *mctx, const unsigned char *key, + size_t keylen, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, mac_update, + (void *mctx, const unsigned char *in, size_t inl)) +OSSL_CORE_MAKE_FUNC(int, mac_final, + (void *mctx, + unsigned char *out, size_t *outl, size_t outsize)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, mac_gettable_params, (void *provctx)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, mac_gettable_ctx_params, + (void *mctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, mac_settable_ctx_params, + (void *mctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(int, mac_get_params, (OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, mac_get_ctx_params, + (void *mctx, OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, mac_set_ctx_params, + (void *mctx, const OSSL_PARAM params[])) + +/* KDFs and PRFs */ + +# define OSSL_FUNC_KDF_NEWCTX 1 +# define OSSL_FUNC_KDF_DUPCTX 2 +# define OSSL_FUNC_KDF_FREECTX 3 +# define OSSL_FUNC_KDF_RESET 4 +# define OSSL_FUNC_KDF_DERIVE 5 +# define OSSL_FUNC_KDF_GETTABLE_PARAMS 6 +# define OSSL_FUNC_KDF_GETTABLE_CTX_PARAMS 7 +# define OSSL_FUNC_KDF_SETTABLE_CTX_PARAMS 8 +# define OSSL_FUNC_KDF_GET_PARAMS 9 +# define OSSL_FUNC_KDF_GET_CTX_PARAMS 10 +# define OSSL_FUNC_KDF_SET_CTX_PARAMS 11 + +OSSL_CORE_MAKE_FUNC(void *, kdf_newctx, (void *provctx)) +OSSL_CORE_MAKE_FUNC(void *, kdf_dupctx, (void *src)) +OSSL_CORE_MAKE_FUNC(void, kdf_freectx, (void *kctx)) +OSSL_CORE_MAKE_FUNC(void, kdf_reset, (void *kctx)) +OSSL_CORE_MAKE_FUNC(int, kdf_derive, (void *kctx, unsigned char *key, + size_t keylen, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kdf_gettable_params, (void *provctx)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kdf_gettable_ctx_params, + (void *kctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kdf_settable_ctx_params, + (void *kctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(int, kdf_get_params, (OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, kdf_get_ctx_params, + (void *kctx, OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, kdf_set_ctx_params, + (void *kctx, const OSSL_PARAM params[])) + +/* RAND */ + +# define OSSL_FUNC_RAND_NEWCTX 1 +# define OSSL_FUNC_RAND_FREECTX 2 +# define OSSL_FUNC_RAND_INSTANTIATE 3 +# define OSSL_FUNC_RAND_UNINSTANTIATE 4 +# define OSSL_FUNC_RAND_GENERATE 5 +# define OSSL_FUNC_RAND_RESEED 6 +# define OSSL_FUNC_RAND_NONCE 7 +# define OSSL_FUNC_RAND_ENABLE_LOCKING 8 +# define OSSL_FUNC_RAND_LOCK 9 +# define OSSL_FUNC_RAND_UNLOCK 10 +# define OSSL_FUNC_RAND_GETTABLE_PARAMS 11 +# define OSSL_FUNC_RAND_GETTABLE_CTX_PARAMS 12 +# define OSSL_FUNC_RAND_SETTABLE_CTX_PARAMS 13 +# define OSSL_FUNC_RAND_GET_PARAMS 14 +# define OSSL_FUNC_RAND_GET_CTX_PARAMS 15 +# define OSSL_FUNC_RAND_SET_CTX_PARAMS 16 +# define OSSL_FUNC_RAND_VERIFY_ZEROIZATION 17 +# define OSSL_FUNC_RAND_GET_SEED 18 +# define OSSL_FUNC_RAND_CLEAR_SEED 19 + +OSSL_CORE_MAKE_FUNC(void *,rand_newctx, + (void *provctx, void *parent, + const OSSL_DISPATCH *parent_calls)) +OSSL_CORE_MAKE_FUNC(void,rand_freectx, (void *vctx)) +OSSL_CORE_MAKE_FUNC(int,rand_instantiate, + (void *vdrbg, unsigned int strength, + int prediction_resistance, + const unsigned char *pstr, size_t pstr_len, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int,rand_uninstantiate, (void *vdrbg)) +OSSL_CORE_MAKE_FUNC(int,rand_generate, + (void *vctx, unsigned char *out, size_t outlen, + unsigned int strength, int prediction_resistance, + const unsigned char *addin, size_t addin_len)) +OSSL_CORE_MAKE_FUNC(int,rand_reseed, + (void *vctx, int prediction_resistance, + const unsigned char *ent, size_t ent_len, + const unsigned char *addin, size_t addin_len)) +OSSL_CORE_MAKE_FUNC(size_t,rand_nonce, + (void *vctx, unsigned char *out, unsigned int strength, + size_t min_noncelen, size_t max_noncelen)) +OSSL_CORE_MAKE_FUNC(int,rand_enable_locking, (void *vctx)) +OSSL_CORE_MAKE_FUNC(int,rand_lock, (void *vctx)) +OSSL_CORE_MAKE_FUNC(void,rand_unlock, (void *vctx)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,rand_gettable_params, (void *provctx)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,rand_gettable_ctx_params, + (void *vctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,rand_settable_ctx_params, + (void *vctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(int,rand_get_params, (OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int,rand_get_ctx_params, + (void *vctx, OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int,rand_set_ctx_params, + (void *vctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(void,rand_set_callbacks, + (void *vctx, OSSL_INOUT_CALLBACK *get_entropy, + OSSL_CALLBACK *cleanup_entropy, + OSSL_INOUT_CALLBACK *get_nonce, + OSSL_CALLBACK *cleanup_nonce, void *arg)) +OSSL_CORE_MAKE_FUNC(int,rand_verify_zeroization, + (void *vctx)) +OSSL_CORE_MAKE_FUNC(size_t,rand_get_seed, + (void *vctx, unsigned char **buffer, + int entropy, size_t min_len, size_t max_len, + int prediction_resistance, + const unsigned char *adin, size_t adin_len)) +OSSL_CORE_MAKE_FUNC(void,rand_clear_seed, + (void *vctx, unsigned char *buffer, size_t b_len)) + +/*- + * Key management + * + * The Key Management takes care of provider side key objects, and includes + * all current functionality to create them, destroy them, set parameters + * and key material, etc, essentially everything that manipulates the keys + * themselves and their parameters. + * + * The key objects are commonly referred to as |keydata|, and it MUST be able + * to contain parameters if the key has any, the public key and the private + * key. All parts are optional, but their presence determines what can be + * done with the key object in terms of encryption, signature, and so on. + * The assumption from libcrypto is that the key object contains any of the + * following data combinations: + * + * - parameters only + * - public key only + * - public key + private key + * - parameters + public key + * - parameters + public key + private key + * + * What "parameters", "public key" and "private key" means in detail is left + * to the implementation. In the case of DH and DSA, they would typically + * include domain parameters, while for certain variants of RSA, they would + * typically include PSS or OAEP parameters. + * + * Key objects are created with OSSL_FUNC_keymgmt_new() and destroyed with + * OSSL_FUNC_keymgmt_free(). Key objects can have data filled in with + * OSSL_FUNC_keymgmt_import(). + * + * Three functions are made available to check what selection of data is + * present in a key object: OSSL_FUNC_keymgmt_has_parameters(), + * OSSL_FUNC_keymgmt_has_public_key(), and OSSL_FUNC_keymgmt_has_private_key(), + */ + +/* Key data subset selection - individual bits */ +# define OSSL_KEYMGMT_SELECT_PRIVATE_KEY 0x01 +# define OSSL_KEYMGMT_SELECT_PUBLIC_KEY 0x02 +# define OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS 0x04 +# define OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS 0x80 + +/* Key data subset selection - combinations */ +# define OSSL_KEYMGMT_SELECT_ALL_PARAMETERS \ + ( OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS \ + | OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS) +# define OSSL_KEYMGMT_SELECT_KEYPAIR \ + ( OSSL_KEYMGMT_SELECT_PRIVATE_KEY | OSSL_KEYMGMT_SELECT_PUBLIC_KEY ) +# define OSSL_KEYMGMT_SELECT_ALL \ + ( OSSL_KEYMGMT_SELECT_KEYPAIR | OSSL_KEYMGMT_SELECT_ALL_PARAMETERS ) + +# define OSSL_KEYMGMT_VALIDATE_FULL_CHECK 0 +# define OSSL_KEYMGMT_VALIDATE_QUICK_CHECK 1 + +/* Basic key object creation */ +# define OSSL_FUNC_KEYMGMT_NEW 1 +OSSL_CORE_MAKE_FUNC(void *, keymgmt_new, (void *provctx)) + +/* Generation, a more complex constructor */ +# define OSSL_FUNC_KEYMGMT_GEN_INIT 2 +# define OSSL_FUNC_KEYMGMT_GEN_SET_TEMPLATE 3 +# define OSSL_FUNC_KEYMGMT_GEN_SET_PARAMS 4 +# define OSSL_FUNC_KEYMGMT_GEN_SETTABLE_PARAMS 5 +# define OSSL_FUNC_KEYMGMT_GEN 6 +# define OSSL_FUNC_KEYMGMT_GEN_CLEANUP 7 +OSSL_CORE_MAKE_FUNC(void *, keymgmt_gen_init, + (void *provctx, int selection, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, keymgmt_gen_set_template, + (void *genctx, void *templ)) +OSSL_CORE_MAKE_FUNC(int, keymgmt_gen_set_params, + (void *genctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, + keymgmt_gen_settable_params, + (void *genctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(void *, keymgmt_gen, + (void *genctx, OSSL_CALLBACK *cb, void *cbarg)) +OSSL_CORE_MAKE_FUNC(void, keymgmt_gen_cleanup, (void *genctx)) + +/* Key loading by object reference */ +# define OSSL_FUNC_KEYMGMT_LOAD 8 +OSSL_CORE_MAKE_FUNC(void *, keymgmt_load, + (const void *reference, size_t reference_sz)) + +/* Basic key object destruction */ +# define OSSL_FUNC_KEYMGMT_FREE 10 +OSSL_CORE_MAKE_FUNC(void, keymgmt_free, (void *keydata)) + +/* Key object information, with discovery */ +#define OSSL_FUNC_KEYMGMT_GET_PARAMS 11 +#define OSSL_FUNC_KEYMGMT_GETTABLE_PARAMS 12 +OSSL_CORE_MAKE_FUNC(int, keymgmt_get_params, + (void *keydata, OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_gettable_params, + (void *provctx)) + +#define OSSL_FUNC_KEYMGMT_SET_PARAMS 13 +#define OSSL_FUNC_KEYMGMT_SETTABLE_PARAMS 14 +OSSL_CORE_MAKE_FUNC(int, keymgmt_set_params, + (void *keydata, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_settable_params, + (void *provctx)) + +/* Key checks - discovery of supported operations */ +# define OSSL_FUNC_KEYMGMT_QUERY_OPERATION_NAME 20 +OSSL_CORE_MAKE_FUNC(const char *, keymgmt_query_operation_name, + (int operation_id)) + +/* Key checks - key data content checks */ +# define OSSL_FUNC_KEYMGMT_HAS 21 +OSSL_CORE_MAKE_FUNC(int, keymgmt_has, (const void *keydata, int selection)) + +/* Key checks - validation */ +# define OSSL_FUNC_KEYMGMT_VALIDATE 22 +OSSL_CORE_MAKE_FUNC(int, keymgmt_validate, (const void *keydata, int selection, + int checktype)) + +/* Key checks - matching */ +# define OSSL_FUNC_KEYMGMT_MATCH 23 +OSSL_CORE_MAKE_FUNC(int, keymgmt_match, + (const void *keydata1, const void *keydata2, + int selection)) + +/* Import and export functions, with discovery */ +# define OSSL_FUNC_KEYMGMT_IMPORT 40 +# define OSSL_FUNC_KEYMGMT_IMPORT_TYPES 41 +# define OSSL_FUNC_KEYMGMT_EXPORT 42 +# define OSSL_FUNC_KEYMGMT_EXPORT_TYPES 43 +OSSL_CORE_MAKE_FUNC(int, keymgmt_import, + (void *keydata, int selection, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_import_types, + (int selection)) +OSSL_CORE_MAKE_FUNC(int, keymgmt_export, + (void *keydata, int selection, + OSSL_CALLBACK *param_cb, void *cbarg)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types, + (int selection)) + +/* Dup function, constructor */ +# define OSSL_FUNC_KEYMGMT_DUP 44 +OSSL_CORE_MAKE_FUNC(void *, keymgmt_dup, + (const void *keydata_from, int selection)) + +/* Key Exchange */ + +# define OSSL_FUNC_KEYEXCH_NEWCTX 1 +# define OSSL_FUNC_KEYEXCH_INIT 2 +# define OSSL_FUNC_KEYEXCH_DERIVE 3 +# define OSSL_FUNC_KEYEXCH_SET_PEER 4 +# define OSSL_FUNC_KEYEXCH_FREECTX 5 +# define OSSL_FUNC_KEYEXCH_DUPCTX 6 +# define OSSL_FUNC_KEYEXCH_SET_CTX_PARAMS 7 +# define OSSL_FUNC_KEYEXCH_SETTABLE_CTX_PARAMS 8 +# define OSSL_FUNC_KEYEXCH_GET_CTX_PARAMS 9 +# define OSSL_FUNC_KEYEXCH_GETTABLE_CTX_PARAMS 10 + +OSSL_CORE_MAKE_FUNC(void *, keyexch_newctx, (void *provctx)) +OSSL_CORE_MAKE_FUNC(int, keyexch_init, (void *ctx, void *provkey, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, keyexch_derive, (void *ctx, unsigned char *secret, + size_t *secretlen, size_t outlen)) +OSSL_CORE_MAKE_FUNC(int, keyexch_set_peer, (void *ctx, void *provkey)) +OSSL_CORE_MAKE_FUNC(void, keyexch_freectx, (void *ctx)) +OSSL_CORE_MAKE_FUNC(void *, keyexch_dupctx, (void *ctx)) +OSSL_CORE_MAKE_FUNC(int, keyexch_set_ctx_params, (void *ctx, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keyexch_settable_ctx_params, + (void *ctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(int, keyexch_get_ctx_params, (void *ctx, + OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keyexch_gettable_ctx_params, + (void *ctx, void *provctx)) + +/* Signature */ + +# define OSSL_FUNC_SIGNATURE_NEWCTX 1 +# define OSSL_FUNC_SIGNATURE_SIGN_INIT 2 +# define OSSL_FUNC_SIGNATURE_SIGN 3 +# define OSSL_FUNC_SIGNATURE_VERIFY_INIT 4 +# define OSSL_FUNC_SIGNATURE_VERIFY 5 +# define OSSL_FUNC_SIGNATURE_VERIFY_RECOVER_INIT 6 +# define OSSL_FUNC_SIGNATURE_VERIFY_RECOVER 7 +# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN_INIT 8 +# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN_UPDATE 9 +# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN_FINAL 10 +# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN 11 +# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_INIT 12 +# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_UPDATE 13 +# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_FINAL 14 +# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY 15 +# define OSSL_FUNC_SIGNATURE_FREECTX 16 +# define OSSL_FUNC_SIGNATURE_DUPCTX 17 +# define OSSL_FUNC_SIGNATURE_GET_CTX_PARAMS 18 +# define OSSL_FUNC_SIGNATURE_GETTABLE_CTX_PARAMS 19 +# define OSSL_FUNC_SIGNATURE_SET_CTX_PARAMS 20 +# define OSSL_FUNC_SIGNATURE_SETTABLE_CTX_PARAMS 21 +# define OSSL_FUNC_SIGNATURE_GET_CTX_MD_PARAMS 22 +# define OSSL_FUNC_SIGNATURE_GETTABLE_CTX_MD_PARAMS 23 +# define OSSL_FUNC_SIGNATURE_SET_CTX_MD_PARAMS 24 +# define OSSL_FUNC_SIGNATURE_SETTABLE_CTX_MD_PARAMS 25 + +OSSL_CORE_MAKE_FUNC(void *, signature_newctx, (void *provctx, + const char *propq)) +OSSL_CORE_MAKE_FUNC(int, signature_sign_init, (void *ctx, void *provkey, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, signature_sign, (void *ctx, unsigned char *sig, + size_t *siglen, size_t sigsize, + const unsigned char *tbs, + size_t tbslen)) +OSSL_CORE_MAKE_FUNC(int, signature_verify_init, (void *ctx, void *provkey, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, signature_verify, (void *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)) +OSSL_CORE_MAKE_FUNC(int, signature_verify_recover_init, + (void *ctx, void *provkey, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, signature_verify_recover, + (void *ctx, unsigned char *rout, size_t *routlen, + size_t routsize, const unsigned char *sig, size_t siglen)) +OSSL_CORE_MAKE_FUNC(int, signature_digest_sign_init, + (void *ctx, const char *mdname, void *provkey, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, signature_digest_sign_update, + (void *ctx, const unsigned char *data, size_t datalen)) +OSSL_CORE_MAKE_FUNC(int, signature_digest_sign_final, + (void *ctx, unsigned char *sig, size_t *siglen, + size_t sigsize)) +OSSL_CORE_MAKE_FUNC(int, signature_digest_sign, + (void *ctx, unsigned char *sigret, size_t *siglen, + size_t sigsize, const unsigned char *tbs, size_t tbslen)) +OSSL_CORE_MAKE_FUNC(int, signature_digest_verify_init, + (void *ctx, const char *mdname, void *provkey, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, signature_digest_verify_update, + (void *ctx, const unsigned char *data, size_t datalen)) +OSSL_CORE_MAKE_FUNC(int, signature_digest_verify_final, + (void *ctx, const unsigned char *sig, size_t siglen)) +OSSL_CORE_MAKE_FUNC(int, signature_digest_verify, + (void *ctx, const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen)) +OSSL_CORE_MAKE_FUNC(void, signature_freectx, (void *ctx)) +OSSL_CORE_MAKE_FUNC(void *, signature_dupctx, (void *ctx)) +OSSL_CORE_MAKE_FUNC(int, signature_get_ctx_params, + (void *ctx, OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_gettable_ctx_params, + (void *ctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(int, signature_set_ctx_params, + (void *ctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_settable_ctx_params, + (void *ctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(int, signature_get_ctx_md_params, + (void *ctx, OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_gettable_ctx_md_params, + (void *ctx)) +OSSL_CORE_MAKE_FUNC(int, signature_set_ctx_md_params, + (void *ctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_settable_ctx_md_params, + (void *ctx)) + + +/* Asymmetric Ciphers */ + +# define OSSL_FUNC_ASYM_CIPHER_NEWCTX 1 +# define OSSL_FUNC_ASYM_CIPHER_ENCRYPT_INIT 2 +# define OSSL_FUNC_ASYM_CIPHER_ENCRYPT 3 +# define OSSL_FUNC_ASYM_CIPHER_DECRYPT_INIT 4 +# define OSSL_FUNC_ASYM_CIPHER_DECRYPT 5 +# define OSSL_FUNC_ASYM_CIPHER_FREECTX 6 +# define OSSL_FUNC_ASYM_CIPHER_DUPCTX 7 +# define OSSL_FUNC_ASYM_CIPHER_GET_CTX_PARAMS 8 +# define OSSL_FUNC_ASYM_CIPHER_GETTABLE_CTX_PARAMS 9 +# define OSSL_FUNC_ASYM_CIPHER_SET_CTX_PARAMS 10 +# define OSSL_FUNC_ASYM_CIPHER_SETTABLE_CTX_PARAMS 11 + +OSSL_CORE_MAKE_FUNC(void *, asym_cipher_newctx, (void *provctx)) +OSSL_CORE_MAKE_FUNC(int, asym_cipher_encrypt_init, (void *ctx, void *provkey, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, asym_cipher_encrypt, (void *ctx, unsigned char *out, + size_t *outlen, + size_t outsize, + const unsigned char *in, + size_t inlen)) +OSSL_CORE_MAKE_FUNC(int, asym_cipher_decrypt_init, (void *ctx, void *provkey, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, asym_cipher_decrypt, (void *ctx, unsigned char *out, + size_t *outlen, + size_t outsize, + const unsigned char *in, + size_t inlen)) +OSSL_CORE_MAKE_FUNC(void, asym_cipher_freectx, (void *ctx)) +OSSL_CORE_MAKE_FUNC(void *, asym_cipher_dupctx, (void *ctx)) +OSSL_CORE_MAKE_FUNC(int, asym_cipher_get_ctx_params, + (void *ctx, OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, asym_cipher_gettable_ctx_params, + (void *ctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(int, asym_cipher_set_ctx_params, + (void *ctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, asym_cipher_settable_ctx_params, + (void *ctx, void *provctx)) + +/* Asymmetric Key encapsulation */ +# define OSSL_FUNC_KEM_NEWCTX 1 +# define OSSL_FUNC_KEM_ENCAPSULATE_INIT 2 +# define OSSL_FUNC_KEM_ENCAPSULATE 3 +# define OSSL_FUNC_KEM_DECAPSULATE_INIT 4 +# define OSSL_FUNC_KEM_DECAPSULATE 5 +# define OSSL_FUNC_KEM_FREECTX 6 +# define OSSL_FUNC_KEM_DUPCTX 7 +# define OSSL_FUNC_KEM_GET_CTX_PARAMS 8 +# define OSSL_FUNC_KEM_GETTABLE_CTX_PARAMS 9 +# define OSSL_FUNC_KEM_SET_CTX_PARAMS 10 +# define OSSL_FUNC_KEM_SETTABLE_CTX_PARAMS 11 + +OSSL_CORE_MAKE_FUNC(void *, kem_newctx, (void *provctx)) +OSSL_CORE_MAKE_FUNC(int, kem_encapsulate_init, (void *ctx, void *provkey, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, kem_encapsulate, (void *ctx, + unsigned char *out, size_t *outlen, + unsigned char *secret, + size_t *secretlen)) +OSSL_CORE_MAKE_FUNC(int, kem_decapsulate_init, (void *ctx, void *provkey, + const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, kem_decapsulate, (void *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)) +OSSL_CORE_MAKE_FUNC(void, kem_freectx, (void *ctx)) +OSSL_CORE_MAKE_FUNC(void *, kem_dupctx, (void *ctx)) +OSSL_CORE_MAKE_FUNC(int, kem_get_ctx_params, (void *ctx, OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kem_gettable_ctx_params, + (void *ctx, void *provctx)) +OSSL_CORE_MAKE_FUNC(int, kem_set_ctx_params, + (void *ctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kem_settable_ctx_params, + (void *ctx, void *provctx)) + +/* Encoders and decoders */ +# define OSSL_FUNC_ENCODER_NEWCTX 1 +# define OSSL_FUNC_ENCODER_FREECTX 2 +# define OSSL_FUNC_ENCODER_GET_PARAMS 3 +# define OSSL_FUNC_ENCODER_GETTABLE_PARAMS 4 +# define OSSL_FUNC_ENCODER_SET_CTX_PARAMS 5 +# define OSSL_FUNC_ENCODER_SETTABLE_CTX_PARAMS 6 +# define OSSL_FUNC_ENCODER_DOES_SELECTION 10 +# define OSSL_FUNC_ENCODER_ENCODE 11 +# define OSSL_FUNC_ENCODER_IMPORT_OBJECT 20 +# define OSSL_FUNC_ENCODER_FREE_OBJECT 21 +OSSL_CORE_MAKE_FUNC(void *, encoder_newctx, (void *provctx)) +OSSL_CORE_MAKE_FUNC(void, encoder_freectx, (void *ctx)) +OSSL_CORE_MAKE_FUNC(int, encoder_get_params, (OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, encoder_gettable_params, + (void *provctx)) +OSSL_CORE_MAKE_FUNC(int, encoder_set_ctx_params, + (void *ctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, encoder_settable_ctx_params, + (void *provctx)) + +OSSL_CORE_MAKE_FUNC(int, encoder_does_selection, + (void *provctx, int selection)) +OSSL_CORE_MAKE_FUNC(int, encoder_encode, + (void *ctx, OSSL_CORE_BIO *out, + const void *obj_raw, const OSSL_PARAM obj_abstract[], + int selection, + OSSL_PASSPHRASE_CALLBACK *cb, void *cbarg)) + +OSSL_CORE_MAKE_FUNC(void *, encoder_import_object, + (void *ctx, int selection, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(void, encoder_free_object, (void *obj)) + +# define OSSL_FUNC_DECODER_NEWCTX 1 +# define OSSL_FUNC_DECODER_FREECTX 2 +# define OSSL_FUNC_DECODER_GET_PARAMS 3 +# define OSSL_FUNC_DECODER_GETTABLE_PARAMS 4 +# define OSSL_FUNC_DECODER_SET_CTX_PARAMS 5 +# define OSSL_FUNC_DECODER_SETTABLE_CTX_PARAMS 6 +# define OSSL_FUNC_DECODER_DOES_SELECTION 10 +# define OSSL_FUNC_DECODER_DECODE 11 +# define OSSL_FUNC_DECODER_EXPORT_OBJECT 20 +OSSL_CORE_MAKE_FUNC(void *, decoder_newctx, (void *provctx)) +OSSL_CORE_MAKE_FUNC(void, decoder_freectx, (void *ctx)) +OSSL_CORE_MAKE_FUNC(int, decoder_get_params, (OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, decoder_gettable_params, + (void *provctx)) +OSSL_CORE_MAKE_FUNC(int, decoder_set_ctx_params, + (void *ctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, decoder_settable_ctx_params, + (void *provctx)) + +OSSL_CORE_MAKE_FUNC(int, decoder_does_selection, + (void *provctx, int selection)) +OSSL_CORE_MAKE_FUNC(int, decoder_decode, + (void *ctx, OSSL_CORE_BIO *in, int selection, + OSSL_CALLBACK *data_cb, void *data_cbarg, + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) +OSSL_CORE_MAKE_FUNC(int, decoder_export_object, + (void *ctx, const void *objref, size_t objref_sz, + OSSL_CALLBACK *export_cb, void *export_cbarg)) + +/*- + * Store + * + * Objects are scanned by using the 'open', 'load', 'eof' and 'close' + * functions, which implement an OSSL_STORE loader. + * + * store_load() works in a way that's very similar to the decoders, in + * that they pass an abstract object through a callback, either as a DER + * octet string or as an object reference, which libcrypto will have to + * deal with. + */ + +#define OSSL_FUNC_STORE_OPEN 1 +#define OSSL_FUNC_STORE_ATTACH 2 +#define OSSL_FUNC_STORE_SETTABLE_CTX_PARAMS 3 +#define OSSL_FUNC_STORE_SET_CTX_PARAMS 4 +#define OSSL_FUNC_STORE_LOAD 5 +#define OSSL_FUNC_STORE_EOF 6 +#define OSSL_FUNC_STORE_CLOSE 7 +#define OSSL_FUNC_STORE_EXPORT_OBJECT 8 +OSSL_CORE_MAKE_FUNC(void *, store_open, (void *provctx, const char *uri)) +OSSL_CORE_MAKE_FUNC(void *, store_attach, (void *provctx, OSSL_CORE_BIO *in)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, store_settable_ctx_params, + (void *provctx)) +OSSL_CORE_MAKE_FUNC(int, store_set_ctx_params, + (void *loaderctx, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, store_load, + (void *loaderctx, + OSSL_CALLBACK *object_cb, void *object_cbarg, + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) +OSSL_CORE_MAKE_FUNC(int, store_eof, (void *loaderctx)) +OSSL_CORE_MAKE_FUNC(int, store_close, (void *loaderctx)) +OSSL_CORE_MAKE_FUNC(int, store_export_object, + (void *loaderctx, const void *objref, size_t objref_sz, + OSSL_CALLBACK *export_cb, void *export_cbarg)) + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/include/openssl/core_names.h b/include/openssl/core_names.h new file mode 100644 index 0000000..f5dcb99 --- /dev/null +++ b/include/openssl/core_names.h @@ -0,0 +1,559 @@ +/* + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* Well known parameter names that core passes to providers */ +#define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" /* utf8_ptr */ +#define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" /* utf8_ptr */ +#define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" /* utf8_ptr */ + +/* Well known parameter names that Providers can define */ +#define OSSL_PROV_PARAM_NAME "name" /* utf8_ptr */ +#define OSSL_PROV_PARAM_VERSION "version" /* utf8_ptr */ +#define OSSL_PROV_PARAM_BUILDINFO "buildinfo" /* utf8_ptr */ +#define OSSL_PROV_PARAM_STATUS "status" /* uint */ +#define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" /* uint */ +#define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" /* uint */ + +/* Self test callback parameters */ +#define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" /* utf8_string */ +#define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" /* utf8_string */ +#define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" /* utf8_string */ + +/*- + * Provider-native object abstractions + * + * These are used when a provider wants to pass object data or an object + * reference back to libcrypto. This is only useful for provider functions + * that take a callback to which an OSSL_PARAM array with these parameters + * can be passed. + * + * This set of parameter names is explained in detail in provider-object(7) + * (doc/man7/provider-object.pod) + */ +#define OSSL_OBJECT_PARAM_TYPE "type" /* INTEGER */ +#define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" /* UTF8_STRING */ +#define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" /* UTF8_STRING */ +#define OSSL_OBJECT_PARAM_REFERENCE "reference" /* OCTET_STRING */ +#define OSSL_OBJECT_PARAM_DATA "data" /* OCTET_STRING or UTF8_STRING */ +#define OSSL_OBJECT_PARAM_DESC "desc" /* UTF8_STRING */ + +/* + * Algorithm parameters + * If "engine" or "properties" are specified, they should always be paired + * with the algorithm type. + * Note these are common names that are shared by many types (such as kdf, mac, + * and pkey) e.g: see OSSL_MAC_PARAM_DIGEST below. + */ +#define OSSL_ALG_PARAM_DIGEST "digest" /* utf8_string */ +#define OSSL_ALG_PARAM_CIPHER "cipher" /* utf8_string */ +#define OSSL_ALG_PARAM_ENGINE "engine" /* utf8_string */ +#define OSSL_ALG_PARAM_MAC "mac" /* utf8_string */ +#define OSSL_ALG_PARAM_PROPERTIES "properties"/* utf8_string */ + +/* cipher parameters */ +#define OSSL_CIPHER_PARAM_PADDING "padding" /* uint */ +#define OSSL_CIPHER_PARAM_USE_BITS "use-bits" /* uint */ +#define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" /* uint */ +#define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" /* octet_ptr */ +#define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" /* size_t */ +#define OSSL_CIPHER_PARAM_MODE "mode" /* uint */ +#define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" /* size_t */ +#define OSSL_CIPHER_PARAM_AEAD "aead" /* int, 0 or 1 */ +#define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" /* int, 0 or 1 */ +#define OSSL_CIPHER_PARAM_CTS "cts" /* int, 0 or 1 */ +#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" /* int, 0 or 1 */ +#define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" /* int, 0 or 1 */ +#define OSSL_CIPHER_PARAM_KEYLEN "keylen" /* size_t */ +#define OSSL_CIPHER_PARAM_IVLEN "ivlen" /* size_t */ +#define OSSL_CIPHER_PARAM_IV "iv" /* octet_string OR octet_ptr */ +#define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" /* octet_string OR octet_ptr */ +#define OSSL_CIPHER_PARAM_NUM "num" /* uint */ +#define OSSL_CIPHER_PARAM_ROUNDS "rounds" /* uint */ +#define OSSL_CIPHER_PARAM_AEAD_TAG "tag" /* octet_string */ +#define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" /* octet_string */ +#define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" /* size_t */ +#define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" /* octet_string */ +#define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" /* octet_string */ +#define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" /* octet_string */ +#define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +#define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" /* size_t */ +#define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" /* octet_string */ +#define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" /* octet_string */ +#define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" /* size_t */ +#define OSSL_CIPHER_PARAM_SPEED "speed" /* uint */ +#define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" /* utf8_string */ +/* For passing the AlgorithmIdentifier parameter in DER form */ +#define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS "alg_id_param" /* octet_string */ + +#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT \ + "tls1multi_maxsndfrag" /* uint */ +#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE \ + "tls1multi_maxbufsz" /* size_t */ +#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE \ + "tls1multi_interleave" /* uint */ +#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD \ + "tls1multi_aad" /* octet_string */ +#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN \ + "tls1multi_aadpacklen" /* uint */ +#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC \ + "tls1multi_enc" /* octet_string */ +#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN \ + "tls1multi_encin" /* octet_string */ +#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN \ + "tls1multi_enclen" /* size_t */ + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +#define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +#define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +#define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* digest parameters */ +#define OSSL_DIGEST_PARAM_XOFLEN "xoflen" /* size_t */ +#define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" /* octet string */ +#define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" /* uint */ +#define OSSL_DIGEST_PARAM_MICALG "micalg" /* utf8 string */ +#define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" /* size_t */ +#define OSSL_DIGEST_PARAM_SIZE "size" /* size_t */ +#define OSSL_DIGEST_PARAM_XOF "xof" /* int, 0 or 1 */ +#define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" /* int, 0 or 1 */ + +/* Known DIGEST names (not a complete list) */ +#define OSSL_DIGEST_NAME_MD5 "MD5" +#define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +#define OSSL_DIGEST_NAME_SHA1 "SHA1" +#define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +#define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +#define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +#define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +#define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +#define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +#define OSSL_DIGEST_NAME_MD2 "MD2" +#define OSSL_DIGEST_NAME_MD4 "MD4" +#define OSSL_DIGEST_NAME_MDC2 "MDC2" +#define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +#define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +#define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +#define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +#define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +#define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +#define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +#define OSSL_DIGEST_NAME_SM3 "SM3" + +/* MAC parameters */ +#define OSSL_MAC_PARAM_KEY "key" /* octet string */ +#define OSSL_MAC_PARAM_IV "iv" /* octet string */ +#define OSSL_MAC_PARAM_CUSTOM "custom" /* utf8 string */ +#define OSSL_MAC_PARAM_SALT "salt" /* octet string */ +#define OSSL_MAC_PARAM_XOF "xof" /* int, 0 or 1 */ +#define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" /* int, 0 or 1 */ +#define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" /* int, 0 or 1 */ +#define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" /* unsigned int */ +#define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" /* unsigned int */ + +/* + * If "engine" or "properties" are specified, they should always be paired + * with "cipher" or "digest". + */ +#define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER /* utf8 string */ +#define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST /* utf8 string */ +#define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES /* utf8 string */ +#define OSSL_MAC_PARAM_SIZE "size" /* size_t */ +#define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" /* size_t */ +#define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" /* size_t */ + +/* Known MAC names */ +#define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +#define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +#define OSSL_MAC_NAME_CMAC "CMAC" +#define OSSL_MAC_NAME_GMAC "GMAC" +#define OSSL_MAC_NAME_HMAC "HMAC" +#define OSSL_MAC_NAME_KMAC128 "KMAC128" +#define OSSL_MAC_NAME_KMAC256 "KMAC256" +#define OSSL_MAC_NAME_POLY1305 "POLY1305" +#define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* KDF / PRF parameters */ +#define OSSL_KDF_PARAM_SECRET "secret" /* octet string */ +#define OSSL_KDF_PARAM_KEY "key" /* octet string */ +#define OSSL_KDF_PARAM_SALT "salt" /* octet string */ +#define OSSL_KDF_PARAM_PASSWORD "pass" /* octet string */ +#define OSSL_KDF_PARAM_PREFIX "prefix" /* octet string */ +#define OSSL_KDF_PARAM_LABEL "label" /* octet string */ +#define OSSL_KDF_PARAM_DATA "data" /* octet string */ +#define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST /* utf8 string */ +#define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER /* utf8 string */ +#define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC /* utf8 string */ +#define OSSL_KDF_PARAM_MAC_SIZE "maclen" /* size_t */ +#define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES /* utf8 string */ +#define OSSL_KDF_PARAM_ITER "iter" /* unsigned int */ +#define OSSL_KDF_PARAM_MODE "mode" /* utf8 string or int */ +#define OSSL_KDF_PARAM_PKCS5 "pkcs5" /* int */ +#define OSSL_KDF_PARAM_UKM "ukm" /* octet string */ +#define OSSL_KDF_PARAM_CEK_ALG "cekalg" /* utf8 string */ +#define OSSL_KDF_PARAM_SCRYPT_N "n" /* uint64_t */ +#define OSSL_KDF_PARAM_SCRYPT_R "r" /* uint32_t */ +#define OSSL_KDF_PARAM_SCRYPT_P "p" /* uint32_t */ +#define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" /* uint64_t */ +#define OSSL_KDF_PARAM_INFO "info" /* octet string */ +#define OSSL_KDF_PARAM_SEED "seed" /* octet string */ +#define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" /* octet string */ +#define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" /* octet string */ +#define OSSL_KDF_PARAM_SSHKDF_TYPE "type" /* int */ +#define OSSL_KDF_PARAM_SIZE "size" /* size_t */ +#define OSSL_KDF_PARAM_CONSTANT "constant" /* octet string */ +#define OSSL_KDF_PARAM_PKCS12_ID "id" /* int */ +#define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" /* int */ +#define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" /* int */ +#define OSSL_KDF_PARAM_KBKDF_R "r" /* int */ +#define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +#define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +#define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +#define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +#define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +#define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" + +/* Known KDF names */ +#define OSSL_KDF_NAME_HKDF "HKDF" +#define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +#define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +#define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +#define OSSL_KDF_NAME_SCRYPT "SCRYPT" +#define OSSL_KDF_NAME_SSHKDF "SSHKDF" +#define OSSL_KDF_NAME_SSKDF "SSKDF" +#define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +#define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +#define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +#define OSSL_KDF_NAME_X963KDF "X963KDF" +#define OSSL_KDF_NAME_KBKDF "KBKDF" +#define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" + +/* Known RAND names */ +#define OSSL_RAND_PARAM_STATE "state" +#define OSSL_RAND_PARAM_STRENGTH "strength" +#define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +#define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +#define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" + +/* RAND/DRBG names */ +#define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +#define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +#define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +#define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +#define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +#define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +#define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +#define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +#define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +#define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +#define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +#define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +#define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +#define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +#define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" + +/* DRBG call back parameters */ +#define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +#define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +#define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +#define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +#define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +#define OSSL_DRBG_PARAM_SIZE "size" + +/* PKEY parameters */ +/* Common PKEY parameters */ +#define OSSL_PKEY_PARAM_BITS "bits" /* integer */ +#define OSSL_PKEY_PARAM_MAX_SIZE "max-size" /* integer */ +#define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" /* integer */ +#define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +#define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER /* utf8 string */ +#define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE /* utf8 string */ +#define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +#define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" /* utf8 string */ +#define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" /* utf8 string */ +#define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +#define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +#define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +#define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +#define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +#define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +#define OSSL_PKEY_PARAM_GROUP_NAME "group" +#define OSSL_PKEY_PARAM_DIST_ID "distid" +#define OSSL_PKEY_PARAM_PUB_KEY "pub" +#define OSSL_PKEY_PARAM_PRIV_KEY "priv" + +/* Diffie-Hellman/DSA Parameters */ +#define OSSL_PKEY_PARAM_FFC_P "p" +#define OSSL_PKEY_PARAM_FFC_G "g" +#define OSSL_PKEY_PARAM_FFC_Q "q" +#define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +#define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +#define OSSL_PKEY_PARAM_FFC_SEED "seed" +#define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +#define OSSL_PKEY_PARAM_FFC_H "hindex" +#define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +#define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +#define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" + +/* Diffie-Hellman params */ +#define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +#define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" + +/* Elliptic Curve Domain Parameters */ +#define OSSL_PKEY_PARAM_EC_PUB_X "qx" +#define OSSL_PKEY_PARAM_EC_PUB_Y "qy" + +/* Elliptic Curve Explicit Domain Parameters */ +#define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +#define OSSL_PKEY_PARAM_EC_P "p" +#define OSSL_PKEY_PARAM_EC_A "a" +#define OSSL_PKEY_PARAM_EC_B "b" +#define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +#define OSSL_PKEY_PARAM_EC_ORDER "order" +#define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +#define OSSL_PKEY_PARAM_EC_SEED "seed" +#define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +#define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +#define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +#define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +#define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +#define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +#define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" + +/* Elliptic Curve Key Parameters */ +#define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +#define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH \ + OSSL_PKEY_PARAM_USE_COFACTOR_FLAG + +/* RSA Keys */ +/* + * n, e, d are the usual public and private key components + * + * rsa-num is the number of factors, including p and q + * rsa-factor is used for each factor: p, q, r_i (i = 3, ...) + * rsa-exponent is used for each exponent: dP, dQ, d_i (i = 3, ...) + * rsa-coefficient is used for each coefficient: qInv, t_i (i = 3, ...) + * + * The number of rsa-factor items must be equal to the number of rsa-exponent + * items, and the number of rsa-coefficients must be one less. + * (the base i for the coefficients is 2, not 1, at least as implied by + * RFC 8017) + */ +#define OSSL_PKEY_PARAM_RSA_N "n" +#define OSSL_PKEY_PARAM_RSA_E "e" +#define OSSL_PKEY_PARAM_RSA_D "d" +#define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +#define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +#define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +#define OSSL_PKEY_PARAM_RSA_FACTOR1 OSSL_PKEY_PARAM_RSA_FACTOR"1" +#define OSSL_PKEY_PARAM_RSA_FACTOR2 OSSL_PKEY_PARAM_RSA_FACTOR"2" +#define OSSL_PKEY_PARAM_RSA_FACTOR3 OSSL_PKEY_PARAM_RSA_FACTOR"3" +#define OSSL_PKEY_PARAM_RSA_FACTOR4 OSSL_PKEY_PARAM_RSA_FACTOR"4" +#define OSSL_PKEY_PARAM_RSA_FACTOR5 OSSL_PKEY_PARAM_RSA_FACTOR"5" +#define OSSL_PKEY_PARAM_RSA_FACTOR6 OSSL_PKEY_PARAM_RSA_FACTOR"6" +#define OSSL_PKEY_PARAM_RSA_FACTOR7 OSSL_PKEY_PARAM_RSA_FACTOR"7" +#define OSSL_PKEY_PARAM_RSA_FACTOR8 OSSL_PKEY_PARAM_RSA_FACTOR"8" +#define OSSL_PKEY_PARAM_RSA_FACTOR9 OSSL_PKEY_PARAM_RSA_FACTOR"9" +#define OSSL_PKEY_PARAM_RSA_FACTOR10 OSSL_PKEY_PARAM_RSA_FACTOR"10" +#define OSSL_PKEY_PARAM_RSA_EXPONENT1 OSSL_PKEY_PARAM_RSA_EXPONENT"1" +#define OSSL_PKEY_PARAM_RSA_EXPONENT2 OSSL_PKEY_PARAM_RSA_EXPONENT"2" +#define OSSL_PKEY_PARAM_RSA_EXPONENT3 OSSL_PKEY_PARAM_RSA_EXPONENT"3" +#define OSSL_PKEY_PARAM_RSA_EXPONENT4 OSSL_PKEY_PARAM_RSA_EXPONENT"4" +#define OSSL_PKEY_PARAM_RSA_EXPONENT5 OSSL_PKEY_PARAM_RSA_EXPONENT"5" +#define OSSL_PKEY_PARAM_RSA_EXPONENT6 OSSL_PKEY_PARAM_RSA_EXPONENT"6" +#define OSSL_PKEY_PARAM_RSA_EXPONENT7 OSSL_PKEY_PARAM_RSA_EXPONENT"7" +#define OSSL_PKEY_PARAM_RSA_EXPONENT8 OSSL_PKEY_PARAM_RSA_EXPONENT"8" +#define OSSL_PKEY_PARAM_RSA_EXPONENT9 OSSL_PKEY_PARAM_RSA_EXPONENT"9" +#define OSSL_PKEY_PARAM_RSA_EXPONENT10 OSSL_PKEY_PARAM_RSA_EXPONENT"10" +#define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 OSSL_PKEY_PARAM_RSA_COEFFICIENT"1" +#define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 OSSL_PKEY_PARAM_RSA_COEFFICIENT"2" +#define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 OSSL_PKEY_PARAM_RSA_COEFFICIENT"3" +#define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 OSSL_PKEY_PARAM_RSA_COEFFICIENT"4" +#define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 OSSL_PKEY_PARAM_RSA_COEFFICIENT"5" +#define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 OSSL_PKEY_PARAM_RSA_COEFFICIENT"6" +#define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 OSSL_PKEY_PARAM_RSA_COEFFICIENT"7" +#define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 OSSL_PKEY_PARAM_RSA_COEFFICIENT"8" +#define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 OSSL_PKEY_PARAM_RSA_COEFFICIENT"9" + +/* RSA padding modes */ +#define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +#define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +#define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +#define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +#define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +#define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +#define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* Key generation parameters */ +#define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +#define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +#define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +#define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +#define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +#define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +#define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" + +/* Key generation parameters */ +#define OSSL_PKEY_PARAM_FFC_TYPE "type" +#define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +#define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +#define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +#define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES + +#define OSSL_PKEY_PARAM_EC_ENCODING "encoding" /* utf8_string */ +#define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +#define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +#define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +#define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +#define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +#define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +#define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +#define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* Key Exchange parameters */ +#define OSSL_EXCHANGE_PARAM_PAD "pad" /* uint */ +#define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" /* int */ +#define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" /* utf8_string */ +#define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" /* utf8_string */ +#define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" /* utf8_string */ +#define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" /* size_t */ +/* The following parameter is an octet_string on set and an octet_ptr on get */ +#define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" + +/* Signature parameters */ +#define OSSL_SIGNATURE_PARAM_ALGORITHM_ID "algorithm-id" +#define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +#define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +#define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +#define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +#define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +#define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES \ + OSSL_PKEY_PARAM_MGF1_PROPERTIES +#define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE + +/* Asym cipher parameters */ +#define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +#define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +#define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +#define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +#define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST \ + OSSL_PKEY_PARAM_MGF1_DIGEST +#define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS \ + OSSL_PKEY_PARAM_MGF1_PROPERTIES +#define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +#define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +/* The following parameter is an octet_string on set and an octet_ptr on get */ +#define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +#define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +#define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" + +/* + * Encoder / decoder parameters + */ +#define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +#define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +/* Currently PVK only, but reusable for others as needed */ +#define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +#define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" /* integer */ + +#define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES + +/* Passphrase callback parameters */ +#define OSSL_PASSPHRASE_PARAM_INFO "info" + +/* Keygen callback parameters, from provider to libcrypto */ +#define OSSL_GEN_PARAM_POTENTIAL "potential" /* integer */ +#define OSSL_GEN_PARAM_ITERATION "iteration" /* integer */ + +/* ACVP Test parameters : These should not be used normally */ +#define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +#define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +#define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +#define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +#define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +#define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +#define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +#define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +#define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +#define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +#define OSSL_SIGNATURE_PARAM_KAT "kat" + +/* KEM parameters */ +#define OSSL_KEM_PARAM_OPERATION "operation" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" + +/* Capabilities */ + +/* TLS-GROUP Capability */ +#define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +#define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +#define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +#define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +#define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +#define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +#define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +#define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +#define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +#define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" + +/*- + * storemgmt parameters + */ + +/* + * Used by storemgmt_ctx_set_params(): + * + * - OSSL_STORE_PARAM_EXPECT is an INTEGER, and the value is any of the + * OSSL_STORE_INFO numbers. This is used to set the expected type of + * object loaded. + * + * - OSSL_STORE_PARAM_SUBJECT, OSSL_STORE_PARAM_ISSUER, + * OSSL_STORE_PARAM_SERIAL, OSSL_STORE_PARAM_FINGERPRINT, + * OSSL_STORE_PARAM_DIGEST, OSSL_STORE_PARAM_ALIAS + * are used as search criteria. + * (OSSL_STORE_PARAM_DIGEST is used with OSSL_STORE_PARAM_FINGERPRINT) + */ +#define OSSL_STORE_PARAM_EXPECT "expect" /* INTEGER */ +#define OSSL_STORE_PARAM_SUBJECT "subject" /* DER blob => OCTET_STRING */ +#define OSSL_STORE_PARAM_ISSUER "name" /* DER blob => OCTET_STRING */ +#define OSSL_STORE_PARAM_SERIAL "serial" /* INTEGER */ +#define OSSL_STORE_PARAM_DIGEST "digest" /* UTF8_STRING */ +#define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" /* OCTET_STRING */ +#define OSSL_STORE_PARAM_ALIAS "alias" /* UTF8_STRING */ + +/* You may want to pass properties for the provider implementation to use */ +#define OSSL_STORE_PARAM_PROPERTIES "properties" /* utf8_string */ +/* OSSL_DECODER input type if a decoder is used by the store */ +#define OSSL_STORE_PARAM_INPUT_TYPE "input-type" /* UTF8_STRING */ + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/include/openssl/core_object.h b/include/openssl/core_object.h new file mode 100644 index 0000000..62ccf39 --- /dev/null +++ b/include/openssl/core_object.h @@ -0,0 +1,41 @@ +/* + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CORE_OBJECT_H +# define OPENSSL_CORE_OBJECT_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * Known object types + * + * These numbers are used as values for the OSSL_PARAM parameter + * OSSL_OBJECT_PARAM_TYPE. + * + * For most of these types, there's a corresponding libcrypto object type. + * The corresponding type is indicated with a comment after the number. + */ +# define OSSL_OBJECT_UNKNOWN 0 +# define OSSL_OBJECT_NAME 1 /* char * */ +# define OSSL_OBJECT_PKEY 2 /* EVP_PKEY * */ +# define OSSL_OBJECT_CERT 3 /* X509 * */ +# define OSSL_OBJECT_CRL 4 /* X509_CRL * */ + +/* + * The rest of the associated OSSL_PARAM elements is described in core_names.h + */ + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/include/openssl/crmf.h b/include/openssl/crmf.h new file mode 100644 index 0000000..0e78228 --- /dev/null +++ b/include/openssl/crmf.h @@ -0,0 +1,227 @@ +/*- + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/crmf.h.in + * + * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright Nokia 2007-2019 + * Copyright Siemens AG 2015-2019 + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + * + * CRMF (RFC 4211) implementation by M. Peylo, M. Viljanen, and D. von Oheimb. + */ + + + +#ifndef OPENSSL_CRMF_H +# define OPENSSL_CRMF_H + +# include + +# ifndef OPENSSL_NO_CRMF +# include +# include +# include +# include /* for GENERAL_NAME etc. */ + +/* explicit #includes not strictly needed since implied by the above: */ +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# define OSSL_CRMF_POPOPRIVKEY_THISMESSAGE 0 +# define OSSL_CRMF_POPOPRIVKEY_SUBSEQUENTMESSAGE 1 +# define OSSL_CRMF_POPOPRIVKEY_DHMAC 2 +# define OSSL_CRMF_POPOPRIVKEY_AGREEMAC 3 +# define OSSL_CRMF_POPOPRIVKEY_ENCRYPTEDKEY 4 + +# define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 +# define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 + +typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) +typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) +#define sk_OSSL_CRMF_MSG_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_value(sk, idx) ((OSSL_CRMF_MSG *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_MSG_new(cmp) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) +#define sk_OSSL_CRMF_MSG_new_null() ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_MSG_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_MSG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (n)) +#define sk_OSSL_CRMF_MSG_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_delete(sk, i) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (i))) +#define sk_OSSL_CRMF_MSG_delete_ptr(sk, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_pop(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_shift(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk),ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_MSG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), (idx)) +#define sk_OSSL_CRMF_MSG_set(sk, idx, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (idx), ossl_check_OSSL_CRMF_MSG_type(ptr))) +#define sk_OSSL_CRMF_MSG_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) +#define sk_OSSL_CRMF_MSG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), pnum) +#define sk_OSSL_CRMF_MSG_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) +#define sk_OSSL_CRMF_MSG_dup(sk) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))) +#define sk_OSSL_CRMF_MSG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) + +typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; +typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) +typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; +typedef struct ossl_crmf_certrequest_st OSSL_CRMF_CERTREQUEST; +typedef struct ossl_crmf_certid_st OSSL_CRMF_CERTID; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTID) +DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTID) +SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_CERTID, OSSL_CRMF_CERTID, OSSL_CRMF_CERTID) +#define sk_OSSL_CRMF_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_value(sk, idx) ((OSSL_CRMF_CERTID *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), (idx))) +#define sk_OSSL_CRMF_CERTID_new(cmp) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) +#define sk_OSSL_CRMF_CERTID_new_null() ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OSSL_CRMF_CERTID_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp), (n))) +#define sk_OSSL_CRMF_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (n)) +#define sk_OSSL_CRMF_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_delete(sk, i) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (i))) +#define sk_OSSL_CRMF_CERTID_delete_ptr(sk, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_pop(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_shift(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk),ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc)) +#define sk_OSSL_CRMF_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), (idx)) +#define sk_OSSL_CRMF_CERTID_set(sk, idx, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (idx), ossl_check_OSSL_CRMF_CERTID_type(ptr))) +#define sk_OSSL_CRMF_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) +#define sk_OSSL_CRMF_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), pnum) +#define sk_OSSL_CRMF_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) +#define sk_OSSL_CRMF_CERTID_dup(sk) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))) +#define sk_OSSL_CRMF_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc))) +#define sk_OSSL_CRMF_CERTID_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) + + +typedef struct ossl_crmf_pkipublicationinfo_st OSSL_CRMF_PKIPUBLICATIONINFO; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PKIPUBLICATIONINFO) +typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) +typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) +typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; +DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) + +typedef struct ossl_crmf_optionalvalidity_st OSSL_CRMF_OPTIONALVALIDITY; + +/* crmf_pbm.c */ +OSSL_CRMF_PBMPARAMETER *OSSL_CRMF_pbmp_new(OSSL_LIB_CTX *libctx, size_t slen, + int owfnid, size_t itercnt, + int macnid); +int OSSL_CRMF_pbm_new(OSSL_LIB_CTX *libctx, const char *propq, + const OSSL_CRMF_PBMPARAMETER *pbmp, + const unsigned char *msg, size_t msglen, + const unsigned char *sec, size_t seclen, + unsigned char **mac, size_t *maclen); + +/* crmf_lib.c */ +int OSSL_CRMF_MSG_set1_regCtrl_regToken(OSSL_CRMF_MSG *msg, + const ASN1_UTF8STRING *tok); +ASN1_UTF8STRING +*OSSL_CRMF_MSG_get0_regCtrl_regToken(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_set1_regCtrl_authenticator(OSSL_CRMF_MSG *msg, + const ASN1_UTF8STRING *auth); +ASN1_UTF8STRING +*OSSL_CRMF_MSG_get0_regCtrl_authenticator(const OSSL_CRMF_MSG *msg); +int +OSSL_CRMF_MSG_PKIPublicationInfo_push0_SinglePubInfo(OSSL_CRMF_PKIPUBLICATIONINFO *pi, + OSSL_CRMF_SINGLEPUBINFO *spi); +# define OSSL_CRMF_PUB_METHOD_DONTCARE 0 +# define OSSL_CRMF_PUB_METHOD_X500 1 +# define OSSL_CRMF_PUB_METHOD_WEB 2 +# define OSSL_CRMF_PUB_METHOD_LDAP 3 +int OSSL_CRMF_MSG_set0_SinglePubInfo(OSSL_CRMF_SINGLEPUBINFO *spi, + int method, GENERAL_NAME *nm); +# define OSSL_CRMF_PUB_ACTION_DONTPUBLISH 0 +# define OSSL_CRMF_PUB_ACTION_PLEASEPUBLISH 1 +int OSSL_CRMF_MSG_set_PKIPublicationInfo_action(OSSL_CRMF_PKIPUBLICATIONINFO *pi, + int action); +int OSSL_CRMF_MSG_set1_regCtrl_pkiPublicationInfo(OSSL_CRMF_MSG *msg, + const OSSL_CRMF_PKIPUBLICATIONINFO *pi); +OSSL_CRMF_PKIPUBLICATIONINFO +*OSSL_CRMF_MSG_get0_regCtrl_pkiPublicationInfo(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_set1_regCtrl_protocolEncrKey(OSSL_CRMF_MSG *msg, + const X509_PUBKEY *pubkey); +X509_PUBKEY +*OSSL_CRMF_MSG_get0_regCtrl_protocolEncrKey(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_set1_regCtrl_oldCertID(OSSL_CRMF_MSG *msg, + const OSSL_CRMF_CERTID *cid); +OSSL_CRMF_CERTID +*OSSL_CRMF_MSG_get0_regCtrl_oldCertID(const OSSL_CRMF_MSG *msg); +OSSL_CRMF_CERTID *OSSL_CRMF_CERTID_gen(const X509_NAME *issuer, + const ASN1_INTEGER *serial); + +int OSSL_CRMF_MSG_set1_regInfo_utf8Pairs(OSSL_CRMF_MSG *msg, + const ASN1_UTF8STRING *utf8pairs); +ASN1_UTF8STRING +*OSSL_CRMF_MSG_get0_regInfo_utf8Pairs(const OSSL_CRMF_MSG *msg); +int OSSL_CRMF_MSG_set1_regInfo_certReq(OSSL_CRMF_MSG *msg, + const OSSL_CRMF_CERTREQUEST *cr); +OSSL_CRMF_CERTREQUEST +*OSSL_CRMF_MSG_get0_regInfo_certReq(const OSSL_CRMF_MSG *msg); + +int OSSL_CRMF_MSG_set0_validity(OSSL_CRMF_MSG *crm, + ASN1_TIME *notBefore, ASN1_TIME *notAfter); +int OSSL_CRMF_MSG_set_certReqId(OSSL_CRMF_MSG *crm, int rid); +int OSSL_CRMF_MSG_get_certReqId(const OSSL_CRMF_MSG *crm); +int OSSL_CRMF_MSG_set0_extensions(OSSL_CRMF_MSG *crm, X509_EXTENSIONS *exts); + +int OSSL_CRMF_MSG_push0_extension(OSSL_CRMF_MSG *crm, X509_EXTENSION *ext); +# define OSSL_CRMF_POPO_NONE -1 +# define OSSL_CRMF_POPO_RAVERIFIED 0 +# define OSSL_CRMF_POPO_SIGNATURE 1 +# define OSSL_CRMF_POPO_KEYENC 2 +# define OSSL_CRMF_POPO_KEYAGREE 3 +int OSSL_CRMF_MSG_create_popo(int meth, OSSL_CRMF_MSG *crm, + EVP_PKEY *pkey, const EVP_MD *digest, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, + int rid, int acceptRAVerified, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const X509_NAME +*OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const X509_NAME +*OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_EXTENSIONS +*OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const X509_NAME +*OSSL_CRMF_CERTID_get0_issuer(const OSSL_CRMF_CERTID *cid); +const ASN1_INTEGER +*OSSL_CRMF_CERTID_get0_serialNumber(const OSSL_CRMF_CERTID *cid); +int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, + EVP_PKEY *pubkey, + const X509_NAME *subject, + const X509_NAME *issuer, + const ASN1_INTEGER *serial); +X509 +*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, + OSSL_LIB_CTX *libctx, const char *propq, + EVP_PKEY *pkey); + +# ifdef __cplusplus +} +# endif +# endif /* !defined(OPENSSL_NO_CRMF) */ +#endif /* !defined(OPENSSL_CRMF_H) */ diff --git a/include/openssl/crmferr.h b/include/openssl/crmferr.h new file mode 100644 index 0000000..b242b92 --- /dev/null +++ b/include/openssl/crmferr.h @@ -0,0 +1,50 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CRMFERR_H +# define OPENSSL_CRMFERR_H +# pragma once + +# include +# include +# include + + +# ifndef OPENSSL_NO_CRMF + + +/* + * CRMF reason codes. + */ +# define CRMF_R_BAD_PBM_ITERATIONCOUNT 100 +# define CRMF_R_CRMFERROR 102 +# define CRMF_R_ERROR 103 +# define CRMF_R_ERROR_DECODING_CERTIFICATE 104 +# define CRMF_R_ERROR_DECRYPTING_CERTIFICATE 105 +# define CRMF_R_ERROR_DECRYPTING_SYMMETRIC_KEY 106 +# define CRMF_R_FAILURE_OBTAINING_RANDOM 107 +# define CRMF_R_ITERATIONCOUNT_BELOW_100 108 +# define CRMF_R_MALFORMED_IV 101 +# define CRMF_R_NULL_ARGUMENT 109 +# define CRMF_R_POPOSKINPUT_NOT_SUPPORTED 113 +# define CRMF_R_POPO_INCONSISTENT_PUBLIC_KEY 117 +# define CRMF_R_POPO_MISSING 121 +# define CRMF_R_POPO_MISSING_PUBLIC_KEY 118 +# define CRMF_R_POPO_MISSING_SUBJECT 119 +# define CRMF_R_POPO_RAVERIFIED_NOT_ACCEPTED 120 +# define CRMF_R_SETTING_MAC_ALGOR_FAILURE 110 +# define CRMF_R_SETTING_OWF_ALGOR_FAILURE 111 +# define CRMF_R_UNSUPPORTED_ALGORITHM 112 +# define CRMF_R_UNSUPPORTED_CIPHER 114 +# define CRMF_R_UNSUPPORTED_METHOD_FOR_CREATING_POPO 115 +# define CRMF_R_UNSUPPORTED_POPO_METHOD 116 + +# endif +#endif diff --git a/include/openssl/crypto.h b/include/openssl/crypto.h new file mode 100644 index 0000000..857d8cb --- /dev/null +++ b/include/openssl/crypto.h @@ -0,0 +1,558 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/crypto.h.in + * + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_CRYPTO_H +# define OPENSSL_CRYPTO_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_CRYPTO_H +# endif + +# include +# include + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif + +# include +# 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 + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# 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_NO_DEPRECATED_1_1_0 */ + +typedef void CRYPTO_RWLOCK; + +CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); +__owur int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock); +__owur 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); +int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, + CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); + +/* No longer needed, so this is a no-op */ +#define OPENSSL_malloc_init() while(0) continue + +# define OPENSSL_malloc(num) \ + CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_zalloc(num) \ + CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_realloc(addr, num) \ + CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_realloc(addr, old_num, num) \ + CRYPTO_clear_realloc(addr, old_num, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_free(addr, num) \ + CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_free(addr) \ + CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_memdup(str, s) \ + CRYPTO_memdup((str), s, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strdup(str) \ + CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strndup(str, n) \ + CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_malloc(num) \ + CRYPTO_secure_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_zalloc(num) \ + CRYPTO_secure_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_free(addr) \ + CRYPTO_secure_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_clear_free(addr, num) \ + CRYPTO_secure_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_actual_size(ptr) \ + CRYPTO_secure_actual_size(ptr) + +size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); +size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); +size_t OPENSSL_strnlen(const char *str, size_t maxlen); +int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, + const unsigned char *buf, size_t buflen, + const char sep); +char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen); +int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, size_t *buflen, + const char *str, const char sep); +unsigned char *OPENSSL_hexstr2buf(const char *str, long *buflen); +int OPENSSL_hexchar2int(unsigned char c); +int OPENSSL_strcasecmp(const char *s1, const char *s2); +int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n); + +# define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U<<(sizeof(int)*8-1))-1)/sizeof(type)) + +/* + * These functions return the values of OPENSSL_VERSION_MAJOR, + * OPENSSL_VERSION_MINOR, OPENSSL_VERSION_PATCH, OPENSSL_VERSION_PRE_RELEASE + * and OPENSSL_VERSION_BUILD_METADATA, respectively. + */ +unsigned int OPENSSL_version_major(void); +unsigned int OPENSSL_version_minor(void); +unsigned int OPENSSL_version_patch(void); +const char *OPENSSL_version_pre_release(void); +const char *OPENSSL_version_build_metadata(void); + +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 +# define OPENSSL_VERSION_STRING 6 +# define OPENSSL_FULL_VERSION_STRING 7 +# define OPENSSL_MODULES_DIR 8 +# define OPENSSL_CPU_INFO 9 + +const char *OPENSSL_info(int type); +/* + * The series starts at 1001 to avoid confusion with the OpenSSL_version + * types. + */ +# define OPENSSL_INFO_CONFIG_DIR 1001 +# define OPENSSL_INFO_ENGINES_DIR 1002 +# define OPENSSL_INFO_MODULES_DIR 1003 +# define OPENSSL_INFO_DSO_EXTENSION 1004 +# define OPENSSL_INFO_DIR_FILENAME_SEPARATOR 1005 +# define OPENSSL_INFO_LIST_SEPARATOR 1006 +# define OPENSSL_INFO_SEED_SOURCE 1007 +# define OPENSSL_INFO_CPU_SETTINGS 1008 + +int OPENSSL_issetugid(void); + +struct crypto_ex_data_st { + OSSL_LIB_CTX *ctx; + STACK_OF(void) *sk; +}; + +SKM_DEFINE_STACK_OF_INTERNAL(void, void, void) +#define sk_void_num(sk) OPENSSL_sk_num(ossl_check_const_void_sk_type(sk)) +#define sk_void_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_void_sk_type(sk), (idx))) +#define sk_void_new(cmp) ((STACK_OF(void) *)OPENSSL_sk_new(ossl_check_void_compfunc_type(cmp))) +#define sk_void_new_null() ((STACK_OF(void) *)OPENSSL_sk_new_null()) +#define sk_void_new_reserve(cmp, n) ((STACK_OF(void) *)OPENSSL_sk_new_reserve(ossl_check_void_compfunc_type(cmp), (n))) +#define sk_void_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_void_sk_type(sk), (n)) +#define sk_void_free(sk) OPENSSL_sk_free(ossl_check_void_sk_type(sk)) +#define sk_void_zero(sk) OPENSSL_sk_zero(ossl_check_void_sk_type(sk)) +#define sk_void_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_void_sk_type(sk), (i))) +#define sk_void_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))) +#define sk_void_push(sk, ptr) OPENSSL_sk_push(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_void_sk_type(sk))) +#define sk_void_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_void_sk_type(sk))) +#define sk_void_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_void_sk_type(sk),ossl_check_void_freefunc_type(freefunc)) +#define sk_void_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), (idx)) +#define sk_void_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_void_sk_type(sk), (idx), ossl_check_void_type(ptr))) +#define sk_void_find(sk, ptr) OPENSSL_sk_find(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) +#define sk_void_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), pnum) +#define sk_void_sort(sk) OPENSSL_sk_sort(ossl_check_void_sk_type(sk)) +#define sk_void_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_void_sk_type(sk)) +#define sk_void_dup(sk) ((STACK_OF(void) *)OPENSSL_sk_dup(ossl_check_const_void_sk_type(sk))) +#define sk_void_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(void) *)OPENSSL_sk_deep_copy(ossl_check_const_void_sk_type(sk), ossl_check_void_copyfunc_type(copyfunc), ossl_check_void_freefunc_type(freefunc))) +#define sk_void_set_cmp_func(sk, cmp) ((sk_void_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_void_sk_type(sk), ossl_check_void_compfunc_type(cmp))) + + + +/* + * Per class, we have a STACK of function pointers. + */ +# define CRYPTO_EX_INDEX_SSL 0 +# define CRYPTO_EX_INDEX_SSL_CTX 1 +# define CRYPTO_EX_INDEX_SSL_SESSION 2 +# define CRYPTO_EX_INDEX_X509 3 +# define CRYPTO_EX_INDEX_X509_STORE 4 +# define CRYPTO_EX_INDEX_X509_STORE_CTX 5 +# define CRYPTO_EX_INDEX_DH 6 +# define CRYPTO_EX_INDEX_DSA 7 +# define CRYPTO_EX_INDEX_EC_KEY 8 +# define CRYPTO_EX_INDEX_RSA 9 +# define CRYPTO_EX_INDEX_ENGINE 10 +# define CRYPTO_EX_INDEX_UI 11 +# define CRYPTO_EX_INDEX_BIO 12 +# define CRYPTO_EX_INDEX_APP 13 +# define CRYPTO_EX_INDEX_UI_METHOD 14 +# define CRYPTO_EX_INDEX_RAND_DRBG 15 +# define CRYPTO_EX_INDEX_DRBG CRYPTO_EX_INDEX_RAND_DRBG +# define CRYPTO_EX_INDEX_OSSL_LIB_CTX 16 +# define CRYPTO_EX_INDEX_EVP_PKEY 17 +# define CRYPTO_EX_INDEX__COUNT 18 + +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); + +/* Allocate a single item in the CRYPTO_EX_DATA variable */ +int CRYPTO_alloc_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad, + int idx); + +/* + * 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); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* + * This function cleans up all "ex_data" state. It mustn't be called under + * potential race-conditions. + */ +# define CRYPTO_cleanup_all_ex_data() while(0) continue + +/* + * The old locking functions have been removed completely without compatibility + * macros. This is because the old functions either could not properly report + * errors, or the returned error values were not clearly documented. + * Replacing the locking functions with no-ops would cause race condition + * issues in the affected applications. It is far better for them to fail at + * compile time. + * On the other hand, the locking callbacks are no longer used. Consequently, + * the callback management functions can be safely replaced with no-op macros. + */ +# define CRYPTO_num_locks() (1) +# define CRYPTO_set_locking_callback(func) +# define CRYPTO_get_locking_callback() (NULL) +# define CRYPTO_set_add_lock_callback(func) +# define CRYPTO_get_add_lock_callback() (NULL) + +/* + * These defines where used in combination with the old locking callbacks, + * they are not called anymore, but old code that's not called might still + * use them. + */ +# define CRYPTO_LOCK 1 +# define CRYPTO_UNLOCK 2 +# define CRYPTO_READ 4 +# define CRYPTO_WRITE 8 + +/* This structure is no longer used */ +typedef struct crypto_threadid_st { + int dummy; +} CRYPTO_THREADID; +/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */ +# define CRYPTO_THREADID_set_numeric(id, val) +# define CRYPTO_THREADID_set_pointer(id, ptr) +# define CRYPTO_THREADID_set_callback(threadid_func) (0) +# define CRYPTO_THREADID_get_callback() (NULL) +# define CRYPTO_THREADID_current(id) +# define CRYPTO_THREADID_cmp(a, b) (-1) +# define CRYPTO_THREADID_cpy(dest, src) +# define CRYPTO_THREADID_hash(id) (0UL) + +# ifndef OPENSSL_NO_DEPRECATED_1_0_0 +# define CRYPTO_set_id_callback(func) +# define CRYPTO_get_id_callback() (NULL) +# define CRYPTO_thread_id() (0UL) +# endif /* OPENSSL_NO_DEPRECATED_1_0_0 */ + +# 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_NO_DEPRECATED_1_1_0 */ + +typedef void *(*CRYPTO_malloc_fn)(size_t num, const char *file, int line); +typedef void *(*CRYPTO_realloc_fn)(void *addr, size_t num, const char *file, + int line); +typedef void (*CRYPTO_free_fn)(void *addr, const char *file, int line); +int CRYPTO_set_mem_functions(CRYPTO_malloc_fn malloc_fn, + CRYPTO_realloc_fn realloc_fn, + CRYPTO_free_fn free_fn); +void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, + CRYPTO_realloc_fn *realloc_fn, + CRYPTO_free_fn *free_fn); + +OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line); +OSSL_CRYPTO_ALLOC 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, size_t minsize); +int CRYPTO_secure_malloc_done(void); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +void CRYPTO_secure_free(void *ptr, const char *file, int line); +void CRYPTO_secure_clear_free(void *ptr, size_t num, + const char *file, int line); +int CRYPTO_secure_allocated(const void *ptr); +int CRYPTO_secure_malloc_initialized(void); +size_t CRYPTO_secure_actual_size(void *ptr); +size_t CRYPTO_secure_used(void); + +void OPENSSL_cleanse(void *ptr, size_t len); + +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +/* + * 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 */ + +void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define OPENSSL_mem_debug_push(info) \ + CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_mem_debug_pop() \ + CRYPTO_mem_debug_pop() +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int CRYPTO_set_mem_debug(int flag); +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_ctrl(int mode); +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_push(const char *info, + const char *file, int line); +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_pop(void); +OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_malloc(void *addr, size_t num, + int flag, + const char *file, int line); +OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, + size_t num, int flag, + const char *file, int line); +OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_free(void *addr, int flag, + const char *file, int line); +OSSL_DEPRECATEDIN_3_0 +int CRYPTO_mem_leaks_cb(int (*cb)(const char *str, size_t len, void *u), + void *u); +# endif +# ifndef OPENSSL_NO_STDIO +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks_fp(FILE *); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks(BIO *bio); +# endif +# endif /* OPENSSL_NO_CRYPTO_MDEBUG */ + +/* die if we have to */ +ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line); +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# 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); + +void OPENSSL_init(void); +# ifdef OPENSSL_SYS_UNIX +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_prepare(void); +OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_parent(void); +OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_child(void); +# endif +# endif + +struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result); +int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec); +int OPENSSL_gmtime_diff(int *pday, int *psec, + const struct tm *from, const struct tm *to); + +/* + * CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal. + * It takes an amount of time dependent on |len|, but independent of the + * contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements + * into a defined order as the return value when a != b is undefined, other + * than to be non-zero. + */ +int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len); + +/* Standard initialisation options */ +# define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L +# define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L +# define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L +# define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L +# define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0x00000010L +# define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0x00000020L +# define OPENSSL_INIT_LOAD_CONFIG 0x00000040L +# define OPENSSL_INIT_NO_LOAD_CONFIG 0x00000080L +# define OPENSSL_INIT_ASYNC 0x00000100L +# define OPENSSL_INIT_ENGINE_RDRAND 0x00000200L +# define OPENSSL_INIT_ENGINE_DYNAMIC 0x00000400L +# define OPENSSL_INIT_ENGINE_OPENSSL 0x00000800L +# define OPENSSL_INIT_ENGINE_CRYPTODEV 0x00001000L +# define OPENSSL_INIT_ENGINE_CAPI 0x00002000L +# define OPENSSL_INIT_ENGINE_PADLOCK 0x00004000L +# define OPENSSL_INIT_ENGINE_AFALG 0x00008000L +/* FREE: 0x00010000L */ +# define OPENSSL_INIT_ATFORK 0x00020000L +/* OPENSSL_INIT_BASE_ONLY 0x00040000L */ +# define OPENSSL_INIT_NO_ATEXIT 0x00080000L +/* OPENSSL_INIT flag range 0x03f00000 reserved for OPENSSL_init_ssl() */ +/* FREE: 0x04000000L */ +/* FREE: 0x08000000L */ +/* FREE: 0x10000000L */ +/* FREE: 0x20000000L */ +/* FREE: 0x40000000L */ +/* FREE: 0x80000000L */ +/* 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); +void OPENSSL_thread_stop_ex(OSSL_LIB_CTX *ctx); + +/* Low-level control of initialization */ +OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void); +# ifndef OPENSSL_NO_STDIO +int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings, + const char *config_filename); +void OPENSSL_INIT_set_config_file_flags(OPENSSL_INIT_SETTINGS *settings, + unsigned long flags); +int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings, + const char *config_appname); +# endif +void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings); + +# if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG) +# if defined(_WIN32) +# if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include in order to use this */ +typedef DWORD CRYPTO_THREAD_LOCAL; +typedef DWORD CRYPTO_THREAD_ID; + +typedef LONG CRYPTO_ONCE; +# define CRYPTO_ONCE_STATIC_INIT 0 +# endif +# else +# if defined(__TANDEM) && defined(_SPT_MODEL_) +# define SPT_THREAD_SIGNAL 1 +# define SPT_THREAD_AWARE 1 +# include +# else +# include +# endif +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); + +OSSL_LIB_CTX *OSSL_LIB_CTX_new(void); +OSSL_LIB_CTX *OSSL_LIB_CTX_new_from_dispatch(const OSSL_CORE_HANDLE *handle, + const OSSL_DISPATCH *in); +OSSL_LIB_CTX *OSSL_LIB_CTX_new_child(const OSSL_CORE_HANDLE *handle, + const OSSL_DISPATCH *in); +int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); +void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); +OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); +OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/cryptoerr.h b/include/openssl/cryptoerr.h new file mode 100644 index 0000000..e84b12d --- /dev/null +++ b/include/openssl/cryptoerr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CRYPTOERR_H +# define OPENSSL_CRYPTOERR_H +# pragma once + +# include +# include +# include + + + +/* + * CRYPTO reason codes. + */ +# define CRYPTO_R_BAD_ALGORITHM_NAME 117 +# define CRYPTO_R_CONFLICTING_NAMES 118 +# define CRYPTO_R_HEX_STRING_TOO_SHORT 121 +# define CRYPTO_R_ILLEGAL_HEX_DIGIT 102 +# define CRYPTO_R_INSUFFICIENT_DATA_SPACE 106 +# define CRYPTO_R_INSUFFICIENT_PARAM_SIZE 107 +# define CRYPTO_R_INSUFFICIENT_SECURE_DATA_SPACE 108 +# define CRYPTO_R_INTEGER_OVERFLOW 127 +# define CRYPTO_R_INVALID_NEGATIVE_VALUE 122 +# define CRYPTO_R_INVALID_NULL_ARGUMENT 109 +# define CRYPTO_R_INVALID_OSSL_PARAM_TYPE 110 +# define CRYPTO_R_NO_PARAMS_TO_MERGE 131 +# define CRYPTO_R_NO_SPACE_FOR_TERMINATING_NULL 128 +# define CRYPTO_R_ODD_NUMBER_OF_DIGITS 103 +# define CRYPTO_R_PARAM_CANNOT_BE_REPRESENTED_EXACTLY 123 +# define CRYPTO_R_PARAM_NOT_INTEGER_TYPE 124 +# define CRYPTO_R_PARAM_OF_INCOMPATIBLE_TYPE 129 +# define CRYPTO_R_PARAM_UNSIGNED_INTEGER_NEGATIVE_VALUE_UNSUPPORTED 125 +# define CRYPTO_R_PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT 130 +# define CRYPTO_R_PARAM_VALUE_TOO_LARGE_FOR_DESTINATION 126 +# define CRYPTO_R_PROVIDER_ALREADY_EXISTS 104 +# define CRYPTO_R_PROVIDER_SECTION_ERROR 105 +# define CRYPTO_R_RANDOM_SECTION_ERROR 119 +# define CRYPTO_R_SECURE_MALLOC_FAILURE 111 +# define CRYPTO_R_STRING_TOO_LONG 112 +# define CRYPTO_R_TOO_MANY_BYTES 113 +# define CRYPTO_R_TOO_MANY_RECORDS 114 +# define CRYPTO_R_TOO_SMALL_BUFFER 116 +# define CRYPTO_R_UNKNOWN_NAME_IN_RANDOM_SECTION 120 +# define CRYPTO_R_ZERO_LENGTH_NUMBER 115 + +#endif diff --git a/include/openssl/cryptoerr_legacy.h b/include/openssl/cryptoerr_legacy.h new file mode 100644 index 0000000..ccab33a --- /dev/null +++ b/include/openssl/cryptoerr_legacy.h @@ -0,0 +1,1466 @@ +/* + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with 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 header file preserves symbols from pre-3.0 OpenSSL. + * It should never be included directly, as it's already included + * by the public {lib}err.h headers, and since it will go away some + * time in the future. + */ + +#ifndef OPENSSL_CRYPTOERR_LEGACY_H +# define OPENSSL_CRYPTOERR_LEGACY_H +# pragma once + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ERR_load_ASN1_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_ASYNC_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BIO_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BN_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_BUF_strings(void); +# ifndef OPENSSL_NO_CMS +OSSL_DEPRECATEDIN_3_0 int ERR_load_CMS_strings(void); +# endif +# ifndef OPENSSL_NO_COMP +OSSL_DEPRECATEDIN_3_0 int ERR_load_COMP_strings(void); +# endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_CONF_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_CRYPTO_strings(void); +# ifndef OPENSSL_NO_CT +OSSL_DEPRECATEDIN_3_0 int ERR_load_CT_strings(void); +# endif +# ifndef OPENSSL_NO_DH +OSSL_DEPRECATEDIN_3_0 int ERR_load_DH_strings(void); +# endif +# ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 int ERR_load_DSA_strings(void); +# endif +# ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 int ERR_load_EC_strings(void); +# endif +# ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 int ERR_load_ENGINE_strings(void); +# endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_ERR_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_EVP_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_KDF_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_OBJ_strings(void); +# ifndef OPENSSL_NO_OCSP +OSSL_DEPRECATEDIN_3_0 int ERR_load_OCSP_strings(void); +# endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_PEM_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_PKCS12_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_PKCS7_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_RAND_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_RSA_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_OSSL_STORE_strings(void); +# ifndef OPENSSL_NO_TS +OSSL_DEPRECATEDIN_3_0 int ERR_load_TS_strings(void); +# endif +OSSL_DEPRECATEDIN_3_0 int ERR_load_UI_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_X509_strings(void); +OSSL_DEPRECATEDIN_3_0 int ERR_load_X509V3_strings(void); + +/* Collected _F_ macros from OpenSSL 1.1.1 */ + +/* + * ASN1 function codes. + */ +# define ASN1_F_A2D_ASN1_OBJECT 0 +# define ASN1_F_A2I_ASN1_INTEGER 0 +# define ASN1_F_A2I_ASN1_STRING 0 +# define ASN1_F_APPEND_EXP 0 +# define ASN1_F_ASN1_BIO_INIT 0 +# define ASN1_F_ASN1_BIT_STRING_SET_BIT 0 +# define ASN1_F_ASN1_CB 0 +# define ASN1_F_ASN1_CHECK_TLEN 0 +# define ASN1_F_ASN1_COLLECT 0 +# define ASN1_F_ASN1_D2I_EX_PRIMITIVE 0 +# define ASN1_F_ASN1_D2I_FP 0 +# define ASN1_F_ASN1_D2I_READ_BIO 0 +# define ASN1_F_ASN1_DIGEST 0 +# define ASN1_F_ASN1_DO_ADB 0 +# define ASN1_F_ASN1_DO_LOCK 0 +# define ASN1_F_ASN1_DUP 0 +# define ASN1_F_ASN1_ENC_SAVE 0 +# define ASN1_F_ASN1_EX_C2I 0 +# define ASN1_F_ASN1_FIND_END 0 +# define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 0 +# define ASN1_F_ASN1_GENERATE_V3 0 +# define ASN1_F_ASN1_GET_INT64 0 +# define ASN1_F_ASN1_GET_OBJECT 0 +# define ASN1_F_ASN1_GET_UINT64 0 +# define ASN1_F_ASN1_I2D_BIO 0 +# define ASN1_F_ASN1_I2D_FP 0 +# define ASN1_F_ASN1_ITEM_D2I_FP 0 +# define ASN1_F_ASN1_ITEM_DUP 0 +# define ASN1_F_ASN1_ITEM_EMBED_D2I 0 +# define ASN1_F_ASN1_ITEM_EMBED_NEW 0 +# define ASN1_F_ASN1_ITEM_FLAGS_I2D 0 +# define ASN1_F_ASN1_ITEM_I2D_BIO 0 +# define ASN1_F_ASN1_ITEM_I2D_FP 0 +# define ASN1_F_ASN1_ITEM_PACK 0 +# define ASN1_F_ASN1_ITEM_SIGN 0 +# define ASN1_F_ASN1_ITEM_SIGN_CTX 0 +# define ASN1_F_ASN1_ITEM_UNPACK 0 +# define ASN1_F_ASN1_ITEM_VERIFY 0 +# define ASN1_F_ASN1_MBSTRING_NCOPY 0 +# define ASN1_F_ASN1_OBJECT_NEW 0 +# define ASN1_F_ASN1_OUTPUT_DATA 0 +# define ASN1_F_ASN1_PCTX_NEW 0 +# define ASN1_F_ASN1_PRIMITIVE_NEW 0 +# define ASN1_F_ASN1_SCTX_NEW 0 +# define ASN1_F_ASN1_SIGN 0 +# define ASN1_F_ASN1_STR2TYPE 0 +# define ASN1_F_ASN1_STRING_GET_INT64 0 +# define ASN1_F_ASN1_STRING_GET_UINT64 0 +# define ASN1_F_ASN1_STRING_SET 0 +# define ASN1_F_ASN1_STRING_TABLE_ADD 0 +# define ASN1_F_ASN1_STRING_TO_BN 0 +# define ASN1_F_ASN1_STRING_TYPE_NEW 0 +# define ASN1_F_ASN1_TEMPLATE_EX_D2I 0 +# define ASN1_F_ASN1_TEMPLATE_NEW 0 +# define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 0 +# define ASN1_F_ASN1_TIME_ADJ 0 +# define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 0 +# define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 0 +# define ASN1_F_ASN1_UTCTIME_ADJ 0 +# define ASN1_F_ASN1_VERIFY 0 +# define ASN1_F_B64_READ_ASN1 0 +# define ASN1_F_B64_WRITE_ASN1 0 +# define ASN1_F_BIO_NEW_NDEF 0 +# define ASN1_F_BITSTR_CB 0 +# define ASN1_F_BN_TO_ASN1_STRING 0 +# define ASN1_F_C2I_ASN1_BIT_STRING 0 +# define ASN1_F_C2I_ASN1_INTEGER 0 +# define ASN1_F_C2I_ASN1_OBJECT 0 +# define ASN1_F_C2I_IBUF 0 +# define ASN1_F_C2I_UINT64_INT 0 +# define ASN1_F_COLLECT_DATA 0 +# define ASN1_F_D2I_ASN1_OBJECT 0 +# define ASN1_F_D2I_ASN1_UINTEGER 0 +# define ASN1_F_D2I_AUTOPRIVATEKEY 0 +# define ASN1_F_D2I_PRIVATEKEY 0 +# define ASN1_F_D2I_PUBLICKEY 0 +# define ASN1_F_DO_BUF 0 +# define ASN1_F_DO_CREATE 0 +# define ASN1_F_DO_DUMP 0 +# define ASN1_F_DO_TCREATE 0 +# define ASN1_F_I2A_ASN1_OBJECT 0 +# define ASN1_F_I2D_ASN1_BIO_STREAM 0 +# define ASN1_F_I2D_ASN1_OBJECT 0 +# define ASN1_F_I2D_DSA_PUBKEY 0 +# define ASN1_F_I2D_EC_PUBKEY 0 +# define ASN1_F_I2D_PRIVATEKEY 0 +# define ASN1_F_I2D_PUBLICKEY 0 +# define ASN1_F_I2D_RSA_PUBKEY 0 +# define ASN1_F_LONG_C2I 0 +# define ASN1_F_NDEF_PREFIX 0 +# define ASN1_F_NDEF_SUFFIX 0 +# define ASN1_F_OID_MODULE_INIT 0 +# define ASN1_F_PARSE_TAGGING 0 +# define ASN1_F_PKCS5_PBE2_SET_IV 0 +# define ASN1_F_PKCS5_PBE2_SET_SCRYPT 0 +# define ASN1_F_PKCS5_PBE_SET 0 +# define ASN1_F_PKCS5_PBE_SET0_ALGOR 0 +# define ASN1_F_PKCS5_PBKDF2_SET 0 +# define ASN1_F_PKCS5_SCRYPT_SET 0 +# define ASN1_F_SMIME_READ_ASN1 0 +# define ASN1_F_SMIME_TEXT 0 +# define ASN1_F_STABLE_GET 0 +# define ASN1_F_STBL_MODULE_INIT 0 +# define ASN1_F_UINT32_C2I 0 +# define ASN1_F_UINT32_NEW 0 +# define ASN1_F_UINT64_C2I 0 +# define ASN1_F_UINT64_NEW 0 +# define ASN1_F_X509_CRL_ADD0_REVOKED 0 +# define ASN1_F_X509_INFO_NEW 0 +# define ASN1_F_X509_NAME_ENCODE 0 +# define ASN1_F_X509_NAME_EX_D2I 0 +# define ASN1_F_X509_NAME_EX_NEW 0 +# define ASN1_F_X509_PKEY_NEW 0 + +/* + * ASYNC function codes. + */ +# define ASYNC_F_ASYNC_CTX_NEW 0 +# define ASYNC_F_ASYNC_INIT_THREAD 0 +# define ASYNC_F_ASYNC_JOB_NEW 0 +# define ASYNC_F_ASYNC_PAUSE_JOB 0 +# define ASYNC_F_ASYNC_START_FUNC 0 +# define ASYNC_F_ASYNC_START_JOB 0 +# define ASYNC_F_ASYNC_WAIT_CTX_SET_WAIT_FD 0 + +/* + * BIO function codes. + */ +# define BIO_F_ACPT_STATE 0 +# define BIO_F_ADDRINFO_WRAP 0 +# define BIO_F_ADDR_STRINGS 0 +# define BIO_F_BIO_ACCEPT 0 +# define BIO_F_BIO_ACCEPT_EX 0 +# define BIO_F_BIO_ACCEPT_NEW 0 +# define BIO_F_BIO_ADDR_NEW 0 +# define BIO_F_BIO_BIND 0 +# define BIO_F_BIO_CALLBACK_CTRL 0 +# define BIO_F_BIO_CONNECT 0 +# define BIO_F_BIO_CONNECT_NEW 0 +# define BIO_F_BIO_CTRL 0 +# define BIO_F_BIO_GETS 0 +# define BIO_F_BIO_GET_HOST_IP 0 +# define BIO_F_BIO_GET_NEW_INDEX 0 +# define BIO_F_BIO_GET_PORT 0 +# define BIO_F_BIO_LISTEN 0 +# define BIO_F_BIO_LOOKUP 0 +# define BIO_F_BIO_LOOKUP_EX 0 +# define BIO_F_BIO_MAKE_PAIR 0 +# define BIO_F_BIO_METH_NEW 0 +# define BIO_F_BIO_NEW 0 +# define BIO_F_BIO_NEW_DGRAM_SCTP 0 +# define BIO_F_BIO_NEW_FILE 0 +# define BIO_F_BIO_NEW_MEM_BUF 0 +# define BIO_F_BIO_NREAD 0 +# define BIO_F_BIO_NREAD0 0 +# define BIO_F_BIO_NWRITE 0 +# define BIO_F_BIO_NWRITE0 0 +# define BIO_F_BIO_PARSE_HOSTSERV 0 +# define BIO_F_BIO_PUTS 0 +# define BIO_F_BIO_READ 0 +# define BIO_F_BIO_READ_EX 0 +# define BIO_F_BIO_READ_INTERN 0 +# define BIO_F_BIO_SOCKET 0 +# define BIO_F_BIO_SOCKET_NBIO 0 +# define BIO_F_BIO_SOCK_INFO 0 +# define BIO_F_BIO_SOCK_INIT 0 +# define BIO_F_BIO_WRITE 0 +# define BIO_F_BIO_WRITE_EX 0 +# define BIO_F_BIO_WRITE_INTERN 0 +# define BIO_F_BUFFER_CTRL 0 +# define BIO_F_CONN_CTRL 0 +# define BIO_F_CONN_STATE 0 +# define BIO_F_DGRAM_SCTP_NEW 0 +# define BIO_F_DGRAM_SCTP_READ 0 +# define BIO_F_DGRAM_SCTP_WRITE 0 +# define BIO_F_DOAPR_OUTCH 0 +# define BIO_F_FILE_CTRL 0 +# define BIO_F_FILE_READ 0 +# define BIO_F_LINEBUFFER_CTRL 0 +# define BIO_F_LINEBUFFER_NEW 0 +# define BIO_F_MEM_WRITE 0 +# define BIO_F_NBIOF_NEW 0 +# define BIO_F_SLG_WRITE 0 +# define BIO_F_SSL_NEW 0 + +/* + * BN function codes. + */ +# define BN_F_BNRAND 0 +# define BN_F_BNRAND_RANGE 0 +# define BN_F_BN_BLINDING_CONVERT_EX 0 +# define BN_F_BN_BLINDING_CREATE_PARAM 0 +# define BN_F_BN_BLINDING_INVERT_EX 0 +# define BN_F_BN_BLINDING_NEW 0 +# define BN_F_BN_BLINDING_UPDATE 0 +# define BN_F_BN_BN2DEC 0 +# define BN_F_BN_BN2HEX 0 +# define BN_F_BN_COMPUTE_WNAF 0 +# define BN_F_BN_CTX_GET 0 +# define BN_F_BN_CTX_NEW 0 +# define BN_F_BN_CTX_START 0 +# define BN_F_BN_DIV 0 +# define BN_F_BN_DIV_RECP 0 +# define BN_F_BN_EXP 0 +# define BN_F_BN_EXPAND_INTERNAL 0 +# define BN_F_BN_GENCB_NEW 0 +# define BN_F_BN_GENERATE_DSA_NONCE 0 +# define BN_F_BN_GENERATE_PRIME_EX 0 +# define BN_F_BN_GF2M_MOD 0 +# define BN_F_BN_GF2M_MOD_EXP 0 +# define BN_F_BN_GF2M_MOD_MUL 0 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD 0 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 0 +# define BN_F_BN_GF2M_MOD_SQR 0 +# define BN_F_BN_GF2M_MOD_SQRT 0 +# define BN_F_BN_LSHIFT 0 +# define BN_F_BN_MOD_EXP2_MONT 0 +# define BN_F_BN_MOD_EXP_MONT 0 +# define BN_F_BN_MOD_EXP_MONT_CONSTTIME 0 +# define BN_F_BN_MOD_EXP_MONT_WORD 0 +# define BN_F_BN_MOD_EXP_RECP 0 +# define BN_F_BN_MOD_EXP_SIMPLE 0 +# define BN_F_BN_MOD_INVERSE 0 +# define BN_F_BN_MOD_INVERSE_NO_BRANCH 0 +# define BN_F_BN_MOD_LSHIFT_QUICK 0 +# define BN_F_BN_MOD_SQRT 0 +# define BN_F_BN_MONT_CTX_NEW 0 +# define BN_F_BN_MPI2BN 0 +# define BN_F_BN_NEW 0 +# define BN_F_BN_POOL_GET 0 +# define BN_F_BN_RAND 0 +# define BN_F_BN_RAND_RANGE 0 +# define BN_F_BN_RECP_CTX_NEW 0 +# define BN_F_BN_RSHIFT 0 +# define BN_F_BN_SET_WORDS 0 +# define BN_F_BN_STACK_PUSH 0 +# define BN_F_BN_USUB 0 + +/* + * BUF function codes. + */ +# define BUF_F_BUF_MEM_GROW 0 +# define BUF_F_BUF_MEM_GROW_CLEAN 0 +# define BUF_F_BUF_MEM_NEW 0 + +# ifndef OPENSSL_NO_CMS +/* + * CMS function codes. + */ +# define CMS_F_CHECK_CONTENT 0 +# define CMS_F_CMS_ADD0_CERT 0 +# define CMS_F_CMS_ADD0_RECIPIENT_KEY 0 +# define CMS_F_CMS_ADD0_RECIPIENT_PASSWORD 0 +# define CMS_F_CMS_ADD1_RECEIPTREQUEST 0 +# define CMS_F_CMS_ADD1_RECIPIENT_CERT 0 +# define CMS_F_CMS_ADD1_SIGNER 0 +# define CMS_F_CMS_ADD1_SIGNINGTIME 0 +# define CMS_F_CMS_COMPRESS 0 +# define CMS_F_CMS_COMPRESSEDDATA_CREATE 0 +# define CMS_F_CMS_COMPRESSEDDATA_INIT_BIO 0 +# define CMS_F_CMS_COPY_CONTENT 0 +# define CMS_F_CMS_COPY_MESSAGEDIGEST 0 +# define CMS_F_CMS_DATA 0 +# define CMS_F_CMS_DATAFINAL 0 +# define CMS_F_CMS_DATAINIT 0 +# define CMS_F_CMS_DECRYPT 0 +# define CMS_F_CMS_DECRYPT_SET1_KEY 0 +# define CMS_F_CMS_DECRYPT_SET1_PASSWORD 0 +# define CMS_F_CMS_DECRYPT_SET1_PKEY 0 +# define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX 0 +# define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO 0 +# define CMS_F_CMS_DIGESTEDDATA_DO_FINAL 0 +# define CMS_F_CMS_DIGEST_VERIFY 0 +# define CMS_F_CMS_ENCODE_RECEIPT 0 +# define CMS_F_CMS_ENCRYPT 0 +# define CMS_F_CMS_ENCRYPTEDCONTENT_INIT 0 +# define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO 0 +# define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT 0 +# define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT 0 +# define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY 0 +# define CMS_F_CMS_ENVELOPEDDATA_CREATE 0 +# define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO 0 +# define CMS_F_CMS_ENVELOPED_DATA_INIT 0 +# define CMS_F_CMS_ENV_ASN1_CTRL 0 +# define CMS_F_CMS_FINAL 0 +# define CMS_F_CMS_GET0_CERTIFICATE_CHOICES 0 +# define CMS_F_CMS_GET0_CONTENT 0 +# define CMS_F_CMS_GET0_ECONTENT_TYPE 0 +# define CMS_F_CMS_GET0_ENVELOPED 0 +# define CMS_F_CMS_GET0_REVOCATION_CHOICES 0 +# define CMS_F_CMS_GET0_SIGNED 0 +# define CMS_F_CMS_MSGSIGDIGEST_ADD1 0 +# define CMS_F_CMS_RECEIPTREQUEST_CREATE0 0 +# define CMS_F_CMS_RECEIPT_VERIFY 0 +# define CMS_F_CMS_RECIPIENTINFO_DECRYPT 0 +# define CMS_F_CMS_RECIPIENTINFO_ENCRYPT 0 +# define CMS_F_CMS_RECIPIENTINFO_KARI_ENCRYPT 0 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ALG 0 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ORIG_ID 0 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_REKS 0 +# define CMS_F_CMS_RECIPIENTINFO_KARI_ORIG_ID_CMP 0 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT 0 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT 0 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID 0 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP 0 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP 0 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT 0 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT 0 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS 0 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID 0 +# define CMS_F_CMS_RECIPIENTINFO_PWRI_CRYPT 0 +# define CMS_F_CMS_RECIPIENTINFO_SET0_KEY 0 +# define CMS_F_CMS_RECIPIENTINFO_SET0_PASSWORD 0 +# define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY 0 +# define CMS_F_CMS_SD_ASN1_CTRL 0 +# define CMS_F_CMS_SET1_IAS 0 +# define CMS_F_CMS_SET1_KEYID 0 +# define CMS_F_CMS_SET1_SIGNERIDENTIFIER 0 +# define CMS_F_CMS_SET_DETACHED 0 +# define CMS_F_CMS_SIGN 0 +# define CMS_F_CMS_SIGNED_DATA_INIT 0 +# define CMS_F_CMS_SIGNERINFO_CONTENT_SIGN 0 +# define CMS_F_CMS_SIGNERINFO_SIGN 0 +# define CMS_F_CMS_SIGNERINFO_VERIFY 0 +# define CMS_F_CMS_SIGNERINFO_VERIFY_CERT 0 +# define CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT 0 +# define CMS_F_CMS_SIGN_RECEIPT 0 +# define CMS_F_CMS_SI_CHECK_ATTRIBUTES 0 +# define CMS_F_CMS_STREAM 0 +# define CMS_F_CMS_UNCOMPRESS 0 +# define CMS_F_CMS_VERIFY 0 +# define CMS_F_KEK_UNWRAP_KEY 0 +# endif + +# ifndef OPENSSL_NO_COMP +/* + * COMP function codes. + */ +# define COMP_F_BIO_ZLIB_FLUSH 0 +# define COMP_F_BIO_ZLIB_NEW 0 +# define COMP_F_BIO_ZLIB_READ 0 +# define COMP_F_BIO_ZLIB_WRITE 0 +# define COMP_F_COMP_CTX_NEW 0 +# endif + +/* + * CONF function codes. + */ +# define CONF_F_CONF_DUMP_FP 0 +# define CONF_F_CONF_LOAD 0 +# define CONF_F_CONF_LOAD_FP 0 +# define CONF_F_CONF_PARSE_LIST 0 +# define CONF_F_DEF_LOAD 0 +# define CONF_F_DEF_LOAD_BIO 0 +# define CONF_F_GET_NEXT_FILE 0 +# define CONF_F_MODULE_ADD 0 +# define CONF_F_MODULE_INIT 0 +# define CONF_F_MODULE_LOAD_DSO 0 +# define CONF_F_MODULE_RUN 0 +# define CONF_F_NCONF_DUMP_BIO 0 +# define CONF_F_NCONF_DUMP_FP 0 +# define CONF_F_NCONF_GET_NUMBER_E 0 +# define CONF_F_NCONF_GET_SECTION 0 +# define CONF_F_NCONF_GET_STRING 0 +# define CONF_F_NCONF_LOAD 0 +# define CONF_F_NCONF_LOAD_BIO 0 +# define CONF_F_NCONF_LOAD_FP 0 +# define CONF_F_NCONF_NEW 0 +# define CONF_F_PROCESS_INCLUDE 0 +# define CONF_F_SSL_MODULE_INIT 0 +# define CONF_F_STR_COPY 0 + +/* + * CRYPTO function codes. + */ +# define CRYPTO_F_CMAC_CTX_NEW 0 +# define CRYPTO_F_CRYPTO_DUP_EX_DATA 0 +# define CRYPTO_F_CRYPTO_FREE_EX_DATA 0 +# define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 0 +# define CRYPTO_F_CRYPTO_MEMDUP 0 +# define CRYPTO_F_CRYPTO_NEW_EX_DATA 0 +# define CRYPTO_F_CRYPTO_OCB128_COPY_CTX 0 +# define CRYPTO_F_CRYPTO_OCB128_INIT 0 +# define CRYPTO_F_CRYPTO_SET_EX_DATA 0 +# define CRYPTO_F_GET_AND_LOCK 0 +# define CRYPTO_F_OPENSSL_ATEXIT 0 +# define CRYPTO_F_OPENSSL_BUF2HEXSTR 0 +# define CRYPTO_F_OPENSSL_FOPEN 0 +# define CRYPTO_F_OPENSSL_HEXSTR2BUF 0 +# define CRYPTO_F_OPENSSL_INIT_CRYPTO 0 +# define CRYPTO_F_OPENSSL_LH_NEW 0 +# define CRYPTO_F_OPENSSL_SK_DEEP_COPY 0 +# define CRYPTO_F_OPENSSL_SK_DUP 0 +# define CRYPTO_F_PKEY_HMAC_INIT 0 +# define CRYPTO_F_PKEY_POLY1305_INIT 0 +# define CRYPTO_F_PKEY_SIPHASH_INIT 0 +# define CRYPTO_F_SK_RESERVE 0 + +# ifndef OPENSSL_NO_CT +/* + * CT function codes. + */ +# define CT_F_CTLOG_NEW 0 +# define CT_F_CTLOG_NEW_FROM_BASE64 0 +# define CT_F_CTLOG_NEW_FROM_CONF 0 +# define CT_F_CTLOG_STORE_LOAD_CTX_NEW 0 +# define CT_F_CTLOG_STORE_LOAD_FILE 0 +# define CT_F_CTLOG_STORE_LOAD_LOG 0 +# define CT_F_CTLOG_STORE_NEW 0 +# define CT_F_CT_BASE64_DECODE 0 +# define CT_F_CT_POLICY_EVAL_CTX_NEW 0 +# define CT_F_CT_V1_LOG_ID_FROM_PKEY 0 +# define CT_F_I2O_SCT 0 +# define CT_F_I2O_SCT_LIST 0 +# define CT_F_I2O_SCT_SIGNATURE 0 +# define CT_F_O2I_SCT 0 +# define CT_F_O2I_SCT_LIST 0 +# define CT_F_O2I_SCT_SIGNATURE 0 +# define CT_F_SCT_CTX_NEW 0 +# define CT_F_SCT_CTX_VERIFY 0 +# define CT_F_SCT_NEW 0 +# define CT_F_SCT_NEW_FROM_BASE64 0 +# define CT_F_SCT_SET0_LOG_ID 0 +# define CT_F_SCT_SET1_EXTENSIONS 0 +# define CT_F_SCT_SET1_LOG_ID 0 +# define CT_F_SCT_SET1_SIGNATURE 0 +# define CT_F_SCT_SET_LOG_ENTRY_TYPE 0 +# define CT_F_SCT_SET_SIGNATURE_NID 0 +# define CT_F_SCT_SET_VERSION 0 +# endif + +# ifndef OPENSSL_NO_DH +/* + * DH function codes. + */ +# define DH_F_COMPUTE_KEY 0 +# define DH_F_DHPARAMS_PRINT_FP 0 +# define DH_F_DH_BUILTIN_GENPARAMS 0 +# define DH_F_DH_CHECK_EX 0 +# define DH_F_DH_CHECK_PARAMS_EX 0 +# define DH_F_DH_CHECK_PUB_KEY_EX 0 +# define DH_F_DH_CMS_DECRYPT 0 +# define DH_F_DH_CMS_SET_PEERKEY 0 +# define DH_F_DH_CMS_SET_SHARED_INFO 0 +# define DH_F_DH_METH_DUP 0 +# define DH_F_DH_METH_NEW 0 +# define DH_F_DH_METH_SET1_NAME 0 +# define DH_F_DH_NEW_BY_NID 0 +# define DH_F_DH_NEW_METHOD 0 +# define DH_F_DH_PARAM_DECODE 0 +# define DH_F_DH_PKEY_PUBLIC_CHECK 0 +# define DH_F_DH_PRIV_DECODE 0 +# define DH_F_DH_PRIV_ENCODE 0 +# define DH_F_DH_PUB_DECODE 0 +# define DH_F_DH_PUB_ENCODE 0 +# define DH_F_DO_DH_PRINT 0 +# define DH_F_GENERATE_KEY 0 +# define DH_F_PKEY_DH_CTRL_STR 0 +# define DH_F_PKEY_DH_DERIVE 0 +# define DH_F_PKEY_DH_INIT 0 +# define DH_F_PKEY_DH_KEYGEN 0 +# endif + +# ifndef OPENSSL_NO_DSA +/* + * DSA function codes. + */ +# define DSA_F_DSAPARAMS_PRINT 0 +# define DSA_F_DSAPARAMS_PRINT_FP 0 +# define DSA_F_DSA_BUILTIN_PARAMGEN 0 +# define DSA_F_DSA_BUILTIN_PARAMGEN2 0 +# define DSA_F_DSA_DO_SIGN 0 +# define DSA_F_DSA_DO_VERIFY 0 +# define DSA_F_DSA_METH_DUP 0 +# define DSA_F_DSA_METH_NEW 0 +# define DSA_F_DSA_METH_SET1_NAME 0 +# define DSA_F_DSA_NEW_METHOD 0 +# define DSA_F_DSA_PARAM_DECODE 0 +# define DSA_F_DSA_PRINT_FP 0 +# define DSA_F_DSA_PRIV_DECODE 0 +# define DSA_F_DSA_PRIV_ENCODE 0 +# define DSA_F_DSA_PUB_DECODE 0 +# define DSA_F_DSA_PUB_ENCODE 0 +# define DSA_F_DSA_SIGN 0 +# define DSA_F_DSA_SIGN_SETUP 0 +# define DSA_F_DSA_SIG_NEW 0 +# define DSA_F_OLD_DSA_PRIV_DECODE 0 +# define DSA_F_PKEY_DSA_CTRL 0 +# define DSA_F_PKEY_DSA_CTRL_STR 0 +# define DSA_F_PKEY_DSA_KEYGEN 0 +# endif + +# ifndef OPENSSL_NO_EC +/* + * EC function codes. + */ +# define EC_F_BN_TO_FELEM 0 +# define EC_F_D2I_ECPARAMETERS 0 +# define EC_F_D2I_ECPKPARAMETERS 0 +# define EC_F_D2I_ECPRIVATEKEY 0 +# define EC_F_DO_EC_KEY_PRINT 0 +# define EC_F_ECDH_CMS_DECRYPT 0 +# define EC_F_ECDH_CMS_SET_SHARED_INFO 0 +# define EC_F_ECDH_COMPUTE_KEY 0 +# define EC_F_ECDH_SIMPLE_COMPUTE_KEY 0 +# define EC_F_ECDSA_DO_SIGN_EX 0 +# define EC_F_ECDSA_DO_VERIFY 0 +# define EC_F_ECDSA_SIGN_EX 0 +# define EC_F_ECDSA_SIGN_SETUP 0 +# define EC_F_ECDSA_SIG_NEW 0 +# define EC_F_ECDSA_VERIFY 0 +# define EC_F_ECD_ITEM_VERIFY 0 +# define EC_F_ECKEY_PARAM2TYPE 0 +# define EC_F_ECKEY_PARAM_DECODE 0 +# define EC_F_ECKEY_PRIV_DECODE 0 +# define EC_F_ECKEY_PRIV_ENCODE 0 +# define EC_F_ECKEY_PUB_DECODE 0 +# define EC_F_ECKEY_PUB_ENCODE 0 +# define EC_F_ECKEY_TYPE2PARAM 0 +# define EC_F_ECPARAMETERS_PRINT 0 +# define EC_F_ECPARAMETERS_PRINT_FP 0 +# define EC_F_ECPKPARAMETERS_PRINT 0 +# define EC_F_ECPKPARAMETERS_PRINT_FP 0 +# define EC_F_ECP_NISTZ256_GET_AFFINE 0 +# define EC_F_ECP_NISTZ256_INV_MOD_ORD 0 +# define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 0 +# define EC_F_ECP_NISTZ256_POINTS_MUL 0 +# define EC_F_ECP_NISTZ256_PRE_COMP_NEW 0 +# define EC_F_ECP_NISTZ256_WINDOWED_MUL 0 +# define EC_F_ECX_KEY_OP 0 +# define EC_F_ECX_PRIV_ENCODE 0 +# define EC_F_ECX_PUB_ENCODE 0 +# define EC_F_EC_ASN1_GROUP2CURVE 0 +# define EC_F_EC_ASN1_GROUP2FIELDID 0 +# define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 0 +# define EC_F_EC_GF2M_SIMPLE_FIELD_INV 0 +# define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 0 +# define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 0 +# define EC_F_EC_GF2M_SIMPLE_LADDER_POST 0 +# define EC_F_EC_GF2M_SIMPLE_LADDER_PRE 0 +# define EC_F_EC_GF2M_SIMPLE_OCT2POINT 0 +# define EC_F_EC_GF2M_SIMPLE_POINT2OCT 0 +# define EC_F_EC_GF2M_SIMPLE_POINTS_MUL 0 +# define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 0 +# define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 0 +# define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 0 +# define EC_F_EC_GFP_MONT_FIELD_DECODE 0 +# define EC_F_EC_GFP_MONT_FIELD_ENCODE 0 +# define EC_F_EC_GFP_MONT_FIELD_INV 0 +# define EC_F_EC_GFP_MONT_FIELD_MUL 0 +# define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 0 +# define EC_F_EC_GFP_MONT_FIELD_SQR 0 +# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 0 +# define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 0 +# define EC_F_EC_GFP_NISTP224_POINTS_MUL 0 +# define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 0 +# define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 0 +# define EC_F_EC_GFP_NISTP256_POINTS_MUL 0 +# define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 0 +# define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 0 +# define EC_F_EC_GFP_NISTP521_POINTS_MUL 0 +# define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 0 +# define EC_F_EC_GFP_NIST_FIELD_MUL 0 +# define EC_F_EC_GFP_NIST_FIELD_SQR 0 +# define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 0 +# define EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES 0 +# define EC_F_EC_GFP_SIMPLE_FIELD_INV 0 +# define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 0 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 0 +# define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 0 +# define EC_F_EC_GFP_SIMPLE_OCT2POINT 0 +# define EC_F_EC_GFP_SIMPLE_POINT2OCT 0 +# define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 0 +# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 0 +# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 0 +# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 0 +# define EC_F_EC_GROUP_CHECK 0 +# define EC_F_EC_GROUP_CHECK_DISCRIMINANT 0 +# define EC_F_EC_GROUP_COPY 0 +# define EC_F_EC_GROUP_GET_CURVE 0 +# define EC_F_EC_GROUP_GET_CURVE_GF2M 0 +# define EC_F_EC_GROUP_GET_CURVE_GFP 0 +# define EC_F_EC_GROUP_GET_DEGREE 0 +# define EC_F_EC_GROUP_GET_ECPARAMETERS 0 +# define EC_F_EC_GROUP_GET_ECPKPARAMETERS 0 +# define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 0 +# define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 0 +# define EC_F_EC_GROUP_NEW 0 +# define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 0 +# define EC_F_EC_GROUP_NEW_FROM_DATA 0 +# define EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS 0 +# define EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS 0 +# define EC_F_EC_GROUP_SET_CURVE 0 +# define EC_F_EC_GROUP_SET_CURVE_GF2M 0 +# define EC_F_EC_GROUP_SET_CURVE_GFP 0 +# define EC_F_EC_GROUP_SET_GENERATOR 0 +# define EC_F_EC_GROUP_SET_SEED 0 +# define EC_F_EC_KEY_CHECK_KEY 0 +# define EC_F_EC_KEY_COPY 0 +# define EC_F_EC_KEY_GENERATE_KEY 0 +# define EC_F_EC_KEY_NEW 0 +# define EC_F_EC_KEY_NEW_METHOD 0 +# define EC_F_EC_KEY_OCT2PRIV 0 +# define EC_F_EC_KEY_PRINT 0 +# define EC_F_EC_KEY_PRINT_FP 0 +# define EC_F_EC_KEY_PRIV2BUF 0 +# define EC_F_EC_KEY_PRIV2OCT 0 +# define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 0 +# define EC_F_EC_KEY_SIMPLE_CHECK_KEY 0 +# define EC_F_EC_KEY_SIMPLE_OCT2PRIV 0 +# define EC_F_EC_KEY_SIMPLE_PRIV2OCT 0 +# define EC_F_EC_PKEY_CHECK 0 +# define EC_F_EC_PKEY_PARAM_CHECK 0 +# define EC_F_EC_POINTS_MAKE_AFFINE 0 +# define EC_F_EC_POINTS_MUL 0 +# define EC_F_EC_POINT_ADD 0 +# define EC_F_EC_POINT_BN2POINT 0 +# define EC_F_EC_POINT_CMP 0 +# define EC_F_EC_POINT_COPY 0 +# define EC_F_EC_POINT_DBL 0 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES 0 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 0 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 0 +# define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 0 +# define EC_F_EC_POINT_INVERT 0 +# define EC_F_EC_POINT_IS_AT_INFINITY 0 +# define EC_F_EC_POINT_IS_ON_CURVE 0 +# define EC_F_EC_POINT_MAKE_AFFINE 0 +# define EC_F_EC_POINT_NEW 0 +# define EC_F_EC_POINT_OCT2POINT 0 +# define EC_F_EC_POINT_POINT2BUF 0 +# define EC_F_EC_POINT_POINT2OCT 0 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES 0 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 0 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 0 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES 0 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 0 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 0 +# define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 0 +# define EC_F_EC_POINT_SET_TO_INFINITY 0 +# define EC_F_EC_PRE_COMP_NEW 0 +# define EC_F_EC_SCALAR_MUL_LADDER 0 +# define EC_F_EC_WNAF_MUL 0 +# define EC_F_EC_WNAF_PRECOMPUTE_MULT 0 +# define EC_F_I2D_ECPARAMETERS 0 +# define EC_F_I2D_ECPKPARAMETERS 0 +# define EC_F_I2D_ECPRIVATEKEY 0 +# define EC_F_I2O_ECPUBLICKEY 0 +# define EC_F_NISTP224_PRE_COMP_NEW 0 +# define EC_F_NISTP256_PRE_COMP_NEW 0 +# define EC_F_NISTP521_PRE_COMP_NEW 0 +# define EC_F_O2I_ECPUBLICKEY 0 +# define EC_F_OLD_EC_PRIV_DECODE 0 +# define EC_F_OSSL_ECDH_COMPUTE_KEY 0 +# define EC_F_OSSL_ECDSA_SIGN_SIG 0 +# define EC_F_OSSL_ECDSA_VERIFY_SIG 0 +# define EC_F_PKEY_ECD_CTRL 0 +# define EC_F_PKEY_ECD_DIGESTSIGN 0 +# define EC_F_PKEY_ECD_DIGESTSIGN25519 0 +# define EC_F_PKEY_ECD_DIGESTSIGN448 0 +# define EC_F_PKEY_ECX_DERIVE 0 +# define EC_F_PKEY_EC_CTRL 0 +# define EC_F_PKEY_EC_CTRL_STR 0 +# define EC_F_PKEY_EC_DERIVE 0 +# define EC_F_PKEY_EC_INIT 0 +# define EC_F_PKEY_EC_KDF_DERIVE 0 +# define EC_F_PKEY_EC_KEYGEN 0 +# define EC_F_PKEY_EC_PARAMGEN 0 +# define EC_F_PKEY_EC_SIGN 0 +# define EC_F_VALIDATE_ECX_DERIVE 0 +# endif + +# ifndef OPENSSL_NO_ENGINE +/* + * ENGINE function codes. + */ +# define ENGINE_F_DIGEST_UPDATE 0 +# define ENGINE_F_DYNAMIC_CTRL 0 +# define ENGINE_F_DYNAMIC_GET_DATA_CTX 0 +# define ENGINE_F_DYNAMIC_LOAD 0 +# define ENGINE_F_DYNAMIC_SET_DATA_CTX 0 +# define ENGINE_F_ENGINE_ADD 0 +# define ENGINE_F_ENGINE_BY_ID 0 +# define ENGINE_F_ENGINE_CMD_IS_EXECUTABLE 0 +# define ENGINE_F_ENGINE_CTRL 0 +# define ENGINE_F_ENGINE_CTRL_CMD 0 +# define ENGINE_F_ENGINE_CTRL_CMD_STRING 0 +# define ENGINE_F_ENGINE_FINISH 0 +# define ENGINE_F_ENGINE_GET_CIPHER 0 +# define ENGINE_F_ENGINE_GET_DIGEST 0 +# define ENGINE_F_ENGINE_GET_FIRST 0 +# define ENGINE_F_ENGINE_GET_LAST 0 +# define ENGINE_F_ENGINE_GET_NEXT 0 +# define ENGINE_F_ENGINE_GET_PKEY_ASN1_METH 0 +# define ENGINE_F_ENGINE_GET_PKEY_METH 0 +# define ENGINE_F_ENGINE_GET_PREV 0 +# define ENGINE_F_ENGINE_INIT 0 +# define ENGINE_F_ENGINE_LIST_ADD 0 +# define ENGINE_F_ENGINE_LIST_REMOVE 0 +# define ENGINE_F_ENGINE_LOAD_PRIVATE_KEY 0 +# define ENGINE_F_ENGINE_LOAD_PUBLIC_KEY 0 +# define ENGINE_F_ENGINE_LOAD_SSL_CLIENT_CERT 0 +# define ENGINE_F_ENGINE_NEW 0 +# define ENGINE_F_ENGINE_PKEY_ASN1_FIND_STR 0 +# define ENGINE_F_ENGINE_REMOVE 0 +# define ENGINE_F_ENGINE_SET_DEFAULT_STRING 0 +# define ENGINE_F_ENGINE_SET_ID 0 +# define ENGINE_F_ENGINE_SET_NAME 0 +# define ENGINE_F_ENGINE_TABLE_REGISTER 0 +# define ENGINE_F_ENGINE_UNLOCKED_FINISH 0 +# define ENGINE_F_ENGINE_UP_REF 0 +# define ENGINE_F_INT_CLEANUP_ITEM 0 +# define ENGINE_F_INT_CTRL_HELPER 0 +# define ENGINE_F_INT_ENGINE_CONFIGURE 0 +# define ENGINE_F_INT_ENGINE_MODULE_INIT 0 +# define ENGINE_F_OSSL_HMAC_INIT 0 +# endif + +/* + * EVP function codes. + */ +# define EVP_F_AESNI_INIT_KEY 0 +# define EVP_F_AESNI_XTS_INIT_KEY 0 +# define EVP_F_AES_GCM_CTRL 0 +# define EVP_F_AES_INIT_KEY 0 +# define EVP_F_AES_OCB_CIPHER 0 +# define EVP_F_AES_T4_INIT_KEY 0 +# define EVP_F_AES_T4_XTS_INIT_KEY 0 +# define EVP_F_AES_WRAP_CIPHER 0 +# define EVP_F_AES_XTS_INIT_KEY 0 +# define EVP_F_ALG_MODULE_INIT 0 +# define EVP_F_ARIA_CCM_INIT_KEY 0 +# define EVP_F_ARIA_GCM_CTRL 0 +# define EVP_F_ARIA_GCM_INIT_KEY 0 +# define EVP_F_ARIA_INIT_KEY 0 +# define EVP_F_B64_NEW 0 +# define EVP_F_CAMELLIA_INIT_KEY 0 +# define EVP_F_CHACHA20_POLY1305_CTRL 0 +# define EVP_F_CMLL_T4_INIT_KEY 0 +# define EVP_F_DES_EDE3_WRAP_CIPHER 0 +# define EVP_F_DO_SIGVER_INIT 0 +# define EVP_F_ENC_NEW 0 +# define EVP_F_EVP_CIPHERINIT_EX 0 +# define EVP_F_EVP_CIPHER_ASN1_TO_PARAM 0 +# define EVP_F_EVP_CIPHER_CTX_COPY 0 +# define EVP_F_EVP_CIPHER_CTX_CTRL 0 +# define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 0 +# define EVP_F_EVP_CIPHER_PARAM_TO_ASN1 0 +# define EVP_F_EVP_DECRYPTFINAL_EX 0 +# define EVP_F_EVP_DECRYPTUPDATE 0 +# define EVP_F_EVP_DIGESTFINALXOF 0 +# define EVP_F_EVP_DIGESTINIT_EX 0 +# define EVP_F_EVP_ENCRYPTDECRYPTUPDATE 0 +# define EVP_F_EVP_ENCRYPTFINAL_EX 0 +# define EVP_F_EVP_ENCRYPTUPDATE 0 +# define EVP_F_EVP_MD_CTX_COPY_EX 0 +# define EVP_F_EVP_MD_SIZE 0 +# define EVP_F_EVP_OPENINIT 0 +# define EVP_F_EVP_PBE_ALG_ADD 0 +# define EVP_F_EVP_PBE_ALG_ADD_TYPE 0 +# define EVP_F_EVP_PBE_CIPHERINIT 0 +# define EVP_F_EVP_PBE_SCRYPT 0 +# define EVP_F_EVP_PKCS82PKEY 0 +# define EVP_F_EVP_PKEY2PKCS8 0 +# define EVP_F_EVP_PKEY_ASN1_ADD0 0 +# define EVP_F_EVP_PKEY_CHECK 0 +# define EVP_F_EVP_PKEY_COPY_PARAMETERS 0 +# define EVP_F_EVP_PKEY_CTX_CTRL 0 +# define EVP_F_EVP_PKEY_CTX_CTRL_STR 0 +# define EVP_F_EVP_PKEY_CTX_DUP 0 +# define EVP_F_EVP_PKEY_CTX_MD 0 +# define EVP_F_EVP_PKEY_DECRYPT 0 +# define EVP_F_EVP_PKEY_DECRYPT_INIT 0 +# define EVP_F_EVP_PKEY_DECRYPT_OLD 0 +# define EVP_F_EVP_PKEY_DERIVE 0 +# define EVP_F_EVP_PKEY_DERIVE_INIT 0 +# define EVP_F_EVP_PKEY_DERIVE_SET_PEER 0 +# define EVP_F_EVP_PKEY_ENCRYPT 0 +# define EVP_F_EVP_PKEY_ENCRYPT_INIT 0 +# define EVP_F_EVP_PKEY_ENCRYPT_OLD 0 +# define EVP_F_EVP_PKEY_GET0_DH 0 +# define EVP_F_EVP_PKEY_GET0_DSA 0 +# define EVP_F_EVP_PKEY_GET0_EC_KEY 0 +# define EVP_F_EVP_PKEY_GET0_HMAC 0 +# define EVP_F_EVP_PKEY_GET0_POLY1305 0 +# define EVP_F_EVP_PKEY_GET0_RSA 0 +# define EVP_F_EVP_PKEY_GET0_SIPHASH 0 +# define EVP_F_EVP_PKEY_GET_RAW_PRIVATE_KEY 0 +# define EVP_F_EVP_PKEY_GET_RAW_PUBLIC_KEY 0 +# define EVP_F_EVP_PKEY_KEYGEN 0 +# define EVP_F_EVP_PKEY_KEYGEN_INIT 0 +# define EVP_F_EVP_PKEY_METH_ADD0 0 +# define EVP_F_EVP_PKEY_METH_NEW 0 +# define EVP_F_EVP_PKEY_NEW 0 +# define EVP_F_EVP_PKEY_NEW_CMAC_KEY 0 +# define EVP_F_EVP_PKEY_NEW_RAW_PRIVATE_KEY 0 +# define EVP_F_EVP_PKEY_NEW_RAW_PUBLIC_KEY 0 +# define EVP_F_EVP_PKEY_PARAMGEN 0 +# define EVP_F_EVP_PKEY_PARAMGEN_INIT 0 +# define EVP_F_EVP_PKEY_PARAM_CHECK 0 +# define EVP_F_EVP_PKEY_PUBLIC_CHECK 0 +# define EVP_F_EVP_PKEY_SET1_ENGINE 0 +# define EVP_F_EVP_PKEY_SET_ALIAS_TYPE 0 +# define EVP_F_EVP_PKEY_SIGN 0 +# define EVP_F_EVP_PKEY_SIGN_INIT 0 +# define EVP_F_EVP_PKEY_VERIFY 0 +# define EVP_F_EVP_PKEY_VERIFY_INIT 0 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER 0 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 0 +# define EVP_F_EVP_SIGNFINAL 0 +# define EVP_F_EVP_VERIFYFINAL 0 +# define EVP_F_INT_CTX_NEW 0 +# define EVP_F_OK_NEW 0 +# define EVP_F_PKCS5_PBE_KEYIVGEN 0 +# define EVP_F_PKCS5_V2_PBE_KEYIVGEN 0 +# define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 0 +# define EVP_F_PKCS5_V2_SCRYPT_KEYIVGEN 0 +# define EVP_F_PKEY_SET_TYPE 0 +# define EVP_F_RC2_MAGIC_TO_METH 0 +# define EVP_F_RC5_CTRL 0 +# define EVP_F_R_32_12_16_INIT_KEY 0 +# define EVP_F_S390X_AES_GCM_CTRL 0 +# define EVP_F_UPDATE 0 + +/* + * KDF function codes. + */ +# define KDF_F_PKEY_HKDF_CTRL_STR 0 +# define KDF_F_PKEY_HKDF_DERIVE 0 +# define KDF_F_PKEY_HKDF_INIT 0 +# define KDF_F_PKEY_SCRYPT_CTRL_STR 0 +# define KDF_F_PKEY_SCRYPT_CTRL_UINT64 0 +# define KDF_F_PKEY_SCRYPT_DERIVE 0 +# define KDF_F_PKEY_SCRYPT_INIT 0 +# define KDF_F_PKEY_SCRYPT_SET_MEMBUF 0 +# define KDF_F_PKEY_TLS1_PRF_CTRL_STR 0 +# define KDF_F_PKEY_TLS1_PRF_DERIVE 0 +# define KDF_F_PKEY_TLS1_PRF_INIT 0 +# define KDF_F_TLS1_PRF_ALG 0 + +/* + * KDF reason codes. + */ +# define KDF_R_INVALID_DIGEST 0 +# define KDF_R_MISSING_ITERATION_COUNT 0 +# define KDF_R_MISSING_KEY 0 +# define KDF_R_MISSING_MESSAGE_DIGEST 0 +# define KDF_R_MISSING_PARAMETER 0 +# define KDF_R_MISSING_PASS 0 +# define KDF_R_MISSING_SALT 0 +# define KDF_R_MISSING_SECRET 0 +# define KDF_R_MISSING_SEED 0 +# define KDF_R_UNKNOWN_PARAMETER_TYPE 0 +# define KDF_R_VALUE_ERROR 0 +# define KDF_R_VALUE_MISSING 0 + +/* + * OBJ function codes. + */ +# define OBJ_F_OBJ_ADD_OBJECT 0 +# define OBJ_F_OBJ_ADD_SIGID 0 +# define OBJ_F_OBJ_CREATE 0 +# define OBJ_F_OBJ_DUP 0 +# define OBJ_F_OBJ_NAME_NEW_INDEX 0 +# define OBJ_F_OBJ_NID2LN 0 +# define OBJ_F_OBJ_NID2OBJ 0 +# define OBJ_F_OBJ_NID2SN 0 +# define OBJ_F_OBJ_TXT2OBJ 0 + +# ifndef OPENSSL_NO_OCSP +/* + * OCSP function codes. + */ +# define OCSP_F_D2I_OCSP_NONCE 0 +# define OCSP_F_OCSP_BASIC_ADD1_STATUS 0 +# define OCSP_F_OCSP_BASIC_SIGN 0 +# define OCSP_F_OCSP_BASIC_SIGN_CTX 0 +# define OCSP_F_OCSP_BASIC_VERIFY 0 +# define OCSP_F_OCSP_CERT_ID_NEW 0 +# define OCSP_F_OCSP_CHECK_DELEGATED 0 +# define OCSP_F_OCSP_CHECK_IDS 0 +# define OCSP_F_OCSP_CHECK_ISSUER 0 +# define OCSP_F_OCSP_CHECK_VALIDITY 0 +# define OCSP_F_OCSP_MATCH_ISSUERID 0 +# define OCSP_F_OCSP_PARSE_URL 0 +# define OCSP_F_OCSP_REQUEST_SIGN 0 +# define OCSP_F_OCSP_REQUEST_VERIFY 0 +# define OCSP_F_OCSP_RESPONSE_GET1_BASIC 0 +# define OCSP_F_PARSE_HTTP_LINE1 0 +# endif + +/* + * PEM function codes. + */ +# define PEM_F_B2I_DSS 0 +# define PEM_F_B2I_PVK_BIO 0 +# define PEM_F_B2I_RSA 0 +# define PEM_F_CHECK_BITLEN_DSA 0 +# define PEM_F_CHECK_BITLEN_RSA 0 +# define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 0 +# define PEM_F_D2I_PKCS8PRIVATEKEY_FP 0 +# define PEM_F_DO_B2I 0 +# define PEM_F_DO_B2I_BIO 0 +# define PEM_F_DO_BLOB_HEADER 0 +# define PEM_F_DO_I2B 0 +# define PEM_F_DO_PK8PKEY 0 +# define PEM_F_DO_PK8PKEY_FP 0 +# define PEM_F_DO_PVK_BODY 0 +# define PEM_F_DO_PVK_HEADER 0 +# define PEM_F_GET_HEADER_AND_DATA 0 +# define PEM_F_GET_NAME 0 +# define PEM_F_I2B_PVK 0 +# define PEM_F_I2B_PVK_BIO 0 +# define PEM_F_LOAD_IV 0 +# define PEM_F_PEM_ASN1_READ 0 +# define PEM_F_PEM_ASN1_READ_BIO 0 +# define PEM_F_PEM_ASN1_WRITE 0 +# define PEM_F_PEM_ASN1_WRITE_BIO 0 +# define PEM_F_PEM_DEF_CALLBACK 0 +# define PEM_F_PEM_DO_HEADER 0 +# define PEM_F_PEM_GET_EVP_CIPHER_INFO 0 +# define PEM_F_PEM_READ 0 +# define PEM_F_PEM_READ_BIO 0 +# define PEM_F_PEM_READ_BIO_DHPARAMS 0 +# define PEM_F_PEM_READ_BIO_EX 0 +# define PEM_F_PEM_READ_BIO_PARAMETERS 0 +# define PEM_F_PEM_READ_BIO_PRIVATEKEY 0 +# define PEM_F_PEM_READ_DHPARAMS 0 +# define PEM_F_PEM_READ_PRIVATEKEY 0 +# define PEM_F_PEM_SIGNFINAL 0 +# define PEM_F_PEM_WRITE 0 +# define PEM_F_PEM_WRITE_BIO 0 +# define PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL 0 +# define PEM_F_PEM_WRITE_PRIVATEKEY 0 +# define PEM_F_PEM_X509_INFO_READ 0 +# define PEM_F_PEM_X509_INFO_READ_BIO 0 +# define PEM_F_PEM_X509_INFO_WRITE_BIO 0 + +/* + * PKCS12 function codes. + */ +# define PKCS12_F_OPENSSL_ASC2UNI 0 +# define PKCS12_F_OPENSSL_UNI2ASC 0 +# define PKCS12_F_OPENSSL_UNI2UTF8 0 +# define PKCS12_F_OPENSSL_UTF82UNI 0 +# define PKCS12_F_PKCS12_CREATE 0 +# define PKCS12_F_PKCS12_GEN_MAC 0 +# define PKCS12_F_PKCS12_INIT 0 +# define PKCS12_F_PKCS12_ITEM_DECRYPT_D2I 0 +# define PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT 0 +# define PKCS12_F_PKCS12_ITEM_PACK_SAFEBAG 0 +# define PKCS12_F_PKCS12_KEY_GEN_ASC 0 +# define PKCS12_F_PKCS12_KEY_GEN_UNI 0 +# define PKCS12_F_PKCS12_KEY_GEN_UTF8 0 +# define PKCS12_F_PKCS12_NEWPASS 0 +# define PKCS12_F_PKCS12_PACK_P7DATA 0 +# define PKCS12_F_PKCS12_PACK_P7ENCDATA 0 +# define PKCS12_F_PKCS12_PARSE 0 +# define PKCS12_F_PKCS12_PBE_CRYPT 0 +# define PKCS12_F_PKCS12_PBE_KEYIVGEN 0 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE0_P8INF 0 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE0_PKCS8 0 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE_PKCS8_ENCRYPT 0 +# define PKCS12_F_PKCS12_SETUP_MAC 0 +# define PKCS12_F_PKCS12_SET_MAC 0 +# define PKCS12_F_PKCS12_UNPACK_AUTHSAFES 0 +# define PKCS12_F_PKCS12_UNPACK_P7DATA 0 +# define PKCS12_F_PKCS12_VERIFY_MAC 0 +# define PKCS12_F_PKCS8_ENCRYPT 0 +# define PKCS12_F_PKCS8_SET0_PBE 0 + +/* + * PKCS7 function codes. + */ +# define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 0 +# define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 0 +# define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 0 +# define PKCS7_F_PKCS7_ADD_CERTIFICATE 0 +# define PKCS7_F_PKCS7_ADD_CRL 0 +# define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 0 +# define PKCS7_F_PKCS7_ADD_SIGNATURE 0 +# define PKCS7_F_PKCS7_ADD_SIGNER 0 +# define PKCS7_F_PKCS7_BIO_ADD_DIGEST 0 +# define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 0 +# define PKCS7_F_PKCS7_CTRL 0 +# define PKCS7_F_PKCS7_DATADECODE 0 +# define PKCS7_F_PKCS7_DATAFINAL 0 +# define PKCS7_F_PKCS7_DATAINIT 0 +# define PKCS7_F_PKCS7_DATAVERIFY 0 +# define PKCS7_F_PKCS7_DECRYPT 0 +# define PKCS7_F_PKCS7_DECRYPT_RINFO 0 +# define PKCS7_F_PKCS7_ENCODE_RINFO 0 +# define PKCS7_F_PKCS7_ENCRYPT 0 +# define PKCS7_F_PKCS7_FINAL 0 +# define PKCS7_F_PKCS7_FIND_DIGEST 0 +# define PKCS7_F_PKCS7_GET0_SIGNERS 0 +# define PKCS7_F_PKCS7_RECIP_INFO_SET 0 +# define PKCS7_F_PKCS7_SET_CIPHER 0 +# define PKCS7_F_PKCS7_SET_CONTENT 0 +# define PKCS7_F_PKCS7_SET_DIGEST 0 +# define PKCS7_F_PKCS7_SET_TYPE 0 +# define PKCS7_F_PKCS7_SIGN 0 +# define PKCS7_F_PKCS7_SIGNATUREVERIFY 0 +# define PKCS7_F_PKCS7_SIGNER_INFO_SET 0 +# define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 0 +# define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 0 +# define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 0 +# define PKCS7_F_PKCS7_VERIFY 0 + +/* + * RAND function codes. + */ +# define RAND_F_DATA_COLLECT_METHOD 0 +# define RAND_F_DRBG_BYTES 0 +# define RAND_F_DRBG_GET_ENTROPY 0 +# define RAND_F_DRBG_SETUP 0 +# define RAND_F_GET_ENTROPY 0 +# define RAND_F_RAND_BYTES 0 +# define RAND_F_RAND_DRBG_ENABLE_LOCKING 0 +# define RAND_F_RAND_DRBG_GENERATE 0 +# define RAND_F_RAND_DRBG_GET_ENTROPY 0 +# define RAND_F_RAND_DRBG_GET_NONCE 0 +# define RAND_F_RAND_DRBG_INSTANTIATE 0 +# define RAND_F_RAND_DRBG_NEW 0 +# define RAND_F_RAND_DRBG_RESEED 0 +# define RAND_F_RAND_DRBG_RESTART 0 +# define RAND_F_RAND_DRBG_SET 0 +# define RAND_F_RAND_DRBG_SET_DEFAULTS 0 +# define RAND_F_RAND_DRBG_UNINSTANTIATE 0 +# define RAND_F_RAND_LOAD_FILE 0 +# define RAND_F_RAND_POOL_ACQUIRE_ENTROPY 0 +# define RAND_F_RAND_POOL_ADD 0 +# define RAND_F_RAND_POOL_ADD_BEGIN 0 +# define RAND_F_RAND_POOL_ADD_END 0 +# define RAND_F_RAND_POOL_ATTACH 0 +# define RAND_F_RAND_POOL_BYTES_NEEDED 0 +# define RAND_F_RAND_POOL_GROW 0 +# define RAND_F_RAND_POOL_NEW 0 +# define RAND_F_RAND_PSEUDO_BYTES 0 +# define RAND_F_RAND_WRITE_FILE 0 + +/* + * RSA function codes. + */ +# define RSA_F_CHECK_PADDING_MD 0 +# define RSA_F_ENCODE_PKCS1 0 +# define RSA_F_INT_RSA_VERIFY 0 +# define RSA_F_OLD_RSA_PRIV_DECODE 0 +# define RSA_F_PKEY_PSS_INIT 0 +# define RSA_F_PKEY_RSA_CTRL 0 +# define RSA_F_PKEY_RSA_CTRL_STR 0 +# define RSA_F_PKEY_RSA_SIGN 0 +# define RSA_F_PKEY_RSA_VERIFY 0 +# define RSA_F_PKEY_RSA_VERIFYRECOVER 0 +# define RSA_F_RSA_ALGOR_TO_MD 0 +# define RSA_F_RSA_BUILTIN_KEYGEN 0 +# define RSA_F_RSA_CHECK_KEY 0 +# define RSA_F_RSA_CHECK_KEY_EX 0 +# define RSA_F_RSA_CMS_DECRYPT 0 +# define RSA_F_RSA_CMS_VERIFY 0 +# define RSA_F_RSA_ITEM_VERIFY 0 +# define RSA_F_RSA_METH_DUP 0 +# define RSA_F_RSA_METH_NEW 0 +# define RSA_F_RSA_METH_SET1_NAME 0 +# define RSA_F_RSA_MGF1_TO_MD 0 +# define RSA_F_RSA_MULTIP_INFO_NEW 0 +# define RSA_F_RSA_NEW_METHOD 0 +# define RSA_F_RSA_NULL 0 +# define RSA_F_RSA_NULL_PRIVATE_DECRYPT 0 +# define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 0 +# define RSA_F_RSA_NULL_PUBLIC_DECRYPT 0 +# define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 0 +# define RSA_F_RSA_OSSL_PRIVATE_DECRYPT 0 +# define RSA_F_RSA_OSSL_PRIVATE_ENCRYPT 0 +# define RSA_F_RSA_OSSL_PUBLIC_DECRYPT 0 +# define RSA_F_RSA_OSSL_PUBLIC_ENCRYPT 0 +# define RSA_F_RSA_PADDING_ADD_NONE 0 +# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 0 +# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1 0 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 0 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 0 +# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 0 +# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 0 +# define RSA_F_RSA_PADDING_ADD_SSLV23 0 +# define RSA_F_RSA_PADDING_ADD_X931 0 +# define RSA_F_RSA_PADDING_CHECK_NONE 0 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 0 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1 0 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 0 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 0 +# define RSA_F_RSA_PADDING_CHECK_SSLV23 0 +# define RSA_F_RSA_PADDING_CHECK_X931 0 +# define RSA_F_RSA_PARAM_DECODE 0 +# define RSA_F_RSA_PRINT 0 +# define RSA_F_RSA_PRINT_FP 0 +# define RSA_F_RSA_PRIV_DECODE 0 +# define RSA_F_RSA_PRIV_ENCODE 0 +# define RSA_F_RSA_PSS_GET_PARAM 0 +# define RSA_F_RSA_PSS_TO_CTX 0 +# define RSA_F_RSA_PUB_DECODE 0 +# define RSA_F_RSA_SETUP_BLINDING 0 +# define RSA_F_RSA_SIGN 0 +# define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 0 +# define RSA_F_RSA_VERIFY 0 +# define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 0 +# define RSA_F_RSA_VERIFY_PKCS1_PSS_MGF1 0 +# define RSA_F_SETUP_TBUF 0 + +/* + * OSSL_STORE function codes. + */ +# define OSSL_STORE_F_FILE_CTRL 0 +# define OSSL_STORE_F_FILE_FIND 0 +# define OSSL_STORE_F_FILE_GET_PASS 0 +# define OSSL_STORE_F_FILE_LOAD 0 +# define OSSL_STORE_F_FILE_LOAD_TRY_DECODE 0 +# define OSSL_STORE_F_FILE_NAME_TO_URI 0 +# define OSSL_STORE_F_FILE_OPEN 0 +# define OSSL_STORE_F_OSSL_STORE_ATTACH_PEM_BIO 0 +# define OSSL_STORE_F_OSSL_STORE_EXPECT 0 +# define OSSL_STORE_F_OSSL_STORE_FILE_ATTACH_PEM_BIO_INT 0 +# define OSSL_STORE_F_OSSL_STORE_FIND 0 +# define OSSL_STORE_F_OSSL_STORE_GET0_LOADER_INT 0 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CERT 0 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CRL 0 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME 0 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME_DESCRIPTION 0 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PARAMS 0 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PKEY 0 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CERT 0 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CRL 0 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_EMBEDDED 0 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_NAME 0 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PARAMS 0 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PKEY 0 +# define OSSL_STORE_F_OSSL_STORE_INFO_SET0_NAME_DESCRIPTION 0 +# define OSSL_STORE_F_OSSL_STORE_INIT_ONCE 0 +# define OSSL_STORE_F_OSSL_STORE_LOADER_NEW 0 +# define OSSL_STORE_F_OSSL_STORE_OPEN 0 +# define OSSL_STORE_F_OSSL_STORE_OPEN_INT 0 +# define OSSL_STORE_F_OSSL_STORE_REGISTER_LOADER_INT 0 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ALIAS 0 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 0 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 0 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_NAME 0 +# define OSSL_STORE_F_OSSL_STORE_UNREGISTER_LOADER_INT 0 +# define OSSL_STORE_F_TRY_DECODE_PARAMS 0 +# define OSSL_STORE_F_TRY_DECODE_PKCS12 0 +# define OSSL_STORE_F_TRY_DECODE_PKCS8ENCRYPTED 0 + +# ifndef OPENSSL_NO_TS +/* + * TS function codes. + */ +# define TS_F_DEF_SERIAL_CB 0 +# define TS_F_DEF_TIME_CB 0 +# define TS_F_ESS_ADD_SIGNING_CERT 0 +# define TS_F_ESS_ADD_SIGNING_CERT_V2 0 +# define TS_F_ESS_CERT_ID_NEW_INIT 0 +# define TS_F_ESS_CERT_ID_V2_NEW_INIT 0 +# define TS_F_ESS_SIGNING_CERT_NEW_INIT 0 +# define TS_F_ESS_SIGNING_CERT_V2_NEW_INIT 0 +# define TS_F_INT_TS_RESP_VERIFY_TOKEN 0 +# define TS_F_PKCS7_TO_TS_TST_INFO 0 +# define TS_F_TS_ACCURACY_SET_MICROS 0 +# define TS_F_TS_ACCURACY_SET_MILLIS 0 +# define TS_F_TS_ACCURACY_SET_SECONDS 0 +# define TS_F_TS_CHECK_IMPRINTS 0 +# define TS_F_TS_CHECK_NONCES 0 +# define TS_F_TS_CHECK_POLICY 0 +# define TS_F_TS_CHECK_SIGNING_CERTS 0 +# define TS_F_TS_CHECK_STATUS_INFO 0 +# define TS_F_TS_COMPUTE_IMPRINT 0 +# define TS_F_TS_CONF_INVALID 0 +# define TS_F_TS_CONF_LOAD_CERT 0 +# define TS_F_TS_CONF_LOAD_CERTS 0 +# define TS_F_TS_CONF_LOAD_KEY 0 +# define TS_F_TS_CONF_LOOKUP_FAIL 0 +# define TS_F_TS_CONF_SET_DEFAULT_ENGINE 0 +# define TS_F_TS_GET_STATUS_TEXT 0 +# define TS_F_TS_MSG_IMPRINT_SET_ALGO 0 +# define TS_F_TS_REQ_SET_MSG_IMPRINT 0 +# define TS_F_TS_REQ_SET_NONCE 0 +# define TS_F_TS_REQ_SET_POLICY_ID 0 +# define TS_F_TS_RESP_CREATE_RESPONSE 0 +# define TS_F_TS_RESP_CREATE_TST_INFO 0 +# define TS_F_TS_RESP_CTX_ADD_FAILURE_INFO 0 +# define TS_F_TS_RESP_CTX_ADD_MD 0 +# define TS_F_TS_RESP_CTX_ADD_POLICY 0 +# define TS_F_TS_RESP_CTX_NEW 0 +# define TS_F_TS_RESP_CTX_SET_ACCURACY 0 +# define TS_F_TS_RESP_CTX_SET_CERTS 0 +# define TS_F_TS_RESP_CTX_SET_DEF_POLICY 0 +# define TS_F_TS_RESP_CTX_SET_SIGNER_CERT 0 +# define TS_F_TS_RESP_CTX_SET_STATUS_INFO 0 +# define TS_F_TS_RESP_GET_POLICY 0 +# define TS_F_TS_RESP_SET_GENTIME_WITH_PRECISION 0 +# define TS_F_TS_RESP_SET_STATUS_INFO 0 +# define TS_F_TS_RESP_SET_TST_INFO 0 +# define TS_F_TS_RESP_SIGN 0 +# define TS_F_TS_RESP_VERIFY_SIGNATURE 0 +# define TS_F_TS_TST_INFO_SET_ACCURACY 0 +# define TS_F_TS_TST_INFO_SET_MSG_IMPRINT 0 +# define TS_F_TS_TST_INFO_SET_NONCE 0 +# define TS_F_TS_TST_INFO_SET_POLICY_ID 0 +# define TS_F_TS_TST_INFO_SET_SERIAL 0 +# define TS_F_TS_TST_INFO_SET_TIME 0 +# define TS_F_TS_TST_INFO_SET_TSA 0 +# define TS_F_TS_VERIFY 0 +# define TS_F_TS_VERIFY_CERT 0 +# define TS_F_TS_VERIFY_CTX_NEW 0 +# endif + +/* + * UI function codes. + */ +# define UI_F_CLOSE_CONSOLE 0 +# define UI_F_ECHO_CONSOLE 0 +# define UI_F_GENERAL_ALLOCATE_BOOLEAN 0 +# define UI_F_GENERAL_ALLOCATE_PROMPT 0 +# define UI_F_NOECHO_CONSOLE 0 +# define UI_F_OPEN_CONSOLE 0 +# define UI_F_UI_CONSTRUCT_PROMPT 0 +# define UI_F_UI_CREATE_METHOD 0 +# define UI_F_UI_CTRL 0 +# define UI_F_UI_DUP_ERROR_STRING 0 +# define UI_F_UI_DUP_INFO_STRING 0 +# define UI_F_UI_DUP_INPUT_BOOLEAN 0 +# define UI_F_UI_DUP_INPUT_STRING 0 +# define UI_F_UI_DUP_USER_DATA 0 +# define UI_F_UI_DUP_VERIFY_STRING 0 +# define UI_F_UI_GET0_RESULT 0 +# define UI_F_UI_GET_RESULT_LENGTH 0 +# define UI_F_UI_NEW_METHOD 0 +# define UI_F_UI_PROCESS 0 +# define UI_F_UI_SET_RESULT 0 +# define UI_F_UI_SET_RESULT_EX 0 + +/* + * X509 function codes. + */ +# define X509_F_ADD_CERT_DIR 0 +# define X509_F_BUILD_CHAIN 0 +# define X509_F_BY_FILE_CTRL 0 +# define X509_F_CHECK_NAME_CONSTRAINTS 0 +# define X509_F_CHECK_POLICY 0 +# define X509_F_DANE_I2D 0 +# define X509_F_DIR_CTRL 0 +# define X509_F_GET_CERT_BY_SUBJECT 0 +# define X509_F_I2D_X509_AUX 0 +# define X509_F_LOOKUP_CERTS_SK 0 +# define X509_F_NETSCAPE_SPKI_B64_DECODE 0 +# define X509_F_NETSCAPE_SPKI_B64_ENCODE 0 +# define X509_F_NEW_DIR 0 +# define X509_F_X509AT_ADD1_ATTR 0 +# define X509_F_X509V3_ADD_EXT 0 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 0 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 0 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 0 +# define X509_F_X509_ATTRIBUTE_GET0_DATA 0 +# define X509_F_X509_ATTRIBUTE_SET1_DATA 0 +# define X509_F_X509_CHECK_PRIVATE_KEY 0 +# define X509_F_X509_CRL_DIFF 0 +# define X509_F_X509_CRL_METHOD_NEW 0 +# define X509_F_X509_CRL_PRINT_FP 0 +# define X509_F_X509_EXTENSION_CREATE_BY_NID 0 +# define X509_F_X509_EXTENSION_CREATE_BY_OBJ 0 +# define X509_F_X509_GET_PUBKEY_PARAMETERS 0 +# define X509_F_X509_LOAD_CERT_CRL_FILE 0 +# define X509_F_X509_LOAD_CERT_FILE 0 +# define X509_F_X509_LOAD_CRL_FILE 0 +# define X509_F_X509_LOOKUP_METH_NEW 0 +# define X509_F_X509_LOOKUP_NEW 0 +# define X509_F_X509_NAME_ADD_ENTRY 0 +# define X509_F_X509_NAME_CANON 0 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 0 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 0 +# define X509_F_X509_NAME_ENTRY_SET_OBJECT 0 +# define X509_F_X509_NAME_ONELINE 0 +# define X509_F_X509_NAME_PRINT 0 +# define X509_F_X509_OBJECT_NEW 0 +# define X509_F_X509_PRINT_EX_FP 0 +# define X509_F_X509_PUBKEY_DECODE 0 +# define X509_F_X509_PUBKEY_GET 0 +# define X509_F_X509_PUBKEY_GET0 0 +# define X509_F_X509_PUBKEY_SET 0 +# define X509_F_X509_REQ_CHECK_PRIVATE_KEY 0 +# define X509_F_X509_REQ_PRINT_EX 0 +# define X509_F_X509_REQ_PRINT_FP 0 +# define X509_F_X509_REQ_TO_X509 0 +# define X509_F_X509_STORE_ADD_CERT 0 +# define X509_F_X509_STORE_ADD_CRL 0 +# define X509_F_X509_STORE_ADD_LOOKUP 0 +# define X509_F_X509_STORE_CTX_GET1_ISSUER 0 +# define X509_F_X509_STORE_CTX_INIT 0 +# define X509_F_X509_STORE_CTX_NEW 0 +# define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 0 +# define X509_F_X509_STORE_NEW 0 +# define X509_F_X509_TO_X509_REQ 0 +# define X509_F_X509_TRUST_ADD 0 +# define X509_F_X509_TRUST_SET 0 +# define X509_F_X509_VERIFY_CERT 0 +# define X509_F_X509_VERIFY_PARAM_NEW 0 + +/* + * X509V3 function codes. + */ +# define X509V3_F_A2I_GENERAL_NAME 0 +# define X509V3_F_ADDR_VALIDATE_PATH_INTERNAL 0 +# define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 0 +# define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 0 +# define X509V3_F_BIGNUM_TO_STRING 0 +# define X509V3_F_COPY_EMAIL 0 +# define X509V3_F_COPY_ISSUER 0 +# define X509V3_F_DO_DIRNAME 0 +# define X509V3_F_DO_EXT_I2D 0 +# define X509V3_F_DO_EXT_NCONF 0 +# define X509V3_F_GNAMES_FROM_SECTNAME 0 +# define X509V3_F_I2S_ASN1_ENUMERATED 0 +# define X509V3_F_I2S_ASN1_IA5STRING 0 +# define X509V3_F_I2S_ASN1_INTEGER 0 +# define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 0 +# define X509V3_F_LEVEL_ADD_NODE 0 +# define X509V3_F_NOTICE_SECTION 0 +# define X509V3_F_NREF_NOS 0 +# define X509V3_F_POLICY_CACHE_CREATE 0 +# define X509V3_F_POLICY_CACHE_NEW 0 +# define X509V3_F_POLICY_DATA_NEW 0 +# define X509V3_F_POLICY_SECTION 0 +# define X509V3_F_PROCESS_PCI_VALUE 0 +# define X509V3_F_R2I_CERTPOL 0 +# define X509V3_F_R2I_PCI 0 +# define X509V3_F_S2I_ASN1_IA5STRING 0 +# define X509V3_F_S2I_ASN1_INTEGER 0 +# define X509V3_F_S2I_ASN1_OCTET_STRING 0 +# define X509V3_F_S2I_SKEY_ID 0 +# define X509V3_F_SET_DIST_POINT_NAME 0 +# define X509V3_F_SXNET_ADD_ID_ASC 0 +# define X509V3_F_SXNET_ADD_ID_INTEGER 0 +# define X509V3_F_SXNET_ADD_ID_ULONG 0 +# define X509V3_F_SXNET_GET_ID_ASC 0 +# define X509V3_F_SXNET_GET_ID_ULONG 0 +# define X509V3_F_TREE_INIT 0 +# define X509V3_F_V2I_ASIDENTIFIERS 0 +# define X509V3_F_V2I_ASN1_BIT_STRING 0 +# define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 0 +# define X509V3_F_V2I_AUTHORITY_KEYID 0 +# define X509V3_F_V2I_BASIC_CONSTRAINTS 0 +# define X509V3_F_V2I_CRLD 0 +# define X509V3_F_V2I_EXTENDED_KEY_USAGE 0 +# define X509V3_F_V2I_GENERAL_NAMES 0 +# define X509V3_F_V2I_GENERAL_NAME_EX 0 +# define X509V3_F_V2I_IDP 0 +# define X509V3_F_V2I_IPADDRBLOCKS 0 +# define X509V3_F_V2I_ISSUER_ALT 0 +# define X509V3_F_V2I_NAME_CONSTRAINTS 0 +# define X509V3_F_V2I_POLICY_CONSTRAINTS 0 +# define X509V3_F_V2I_POLICY_MAPPINGS 0 +# define X509V3_F_V2I_SUBJECT_ALT 0 +# define X509V3_F_V2I_TLS_FEATURE 0 +# define X509V3_F_V3_GENERIC_EXTENSION 0 +# define X509V3_F_X509V3_ADD1_I2D 0 +# define X509V3_F_X509V3_ADD_VALUE 0 +# define X509V3_F_X509V3_EXT_ADD 0 +# define X509V3_F_X509V3_EXT_ADD_ALIAS 0 +# define X509V3_F_X509V3_EXT_I2D 0 +# define X509V3_F_X509V3_EXT_NCONF 0 +# define X509V3_F_X509V3_GET_SECTION 0 +# define X509V3_F_X509V3_GET_STRING 0 +# define X509V3_F_X509V3_GET_VALUE_BOOL 0 +# define X509V3_F_X509V3_PARSE_LIST 0 +# define X509V3_F_X509_PURPOSE_ADD 0 +# define X509V3_F_X509_PURPOSE_SET 0 + +/* + * Compatibility defines. + */ +# define EVP_R_OPERATON_NOT_INITIALIZED EVP_R_OPERATION_NOT_INITIALIZED + +# endif + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/ct.h b/include/openssl/ct.h new file mode 100644 index 0000000..d9634db --- /dev/null +++ b/include/openssl/ct.h @@ -0,0 +1,573 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/ct.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_CT_H +# define OPENSSL_CT_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_CT_H +# endif + +# include + +# ifndef OPENSSL_NO_CT +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + +/* Minimum RSA key size, from RFC6962 */ +# define SCT_MIN_RSA_BITS 2048 + +/* All hashes are SHA256 in v1 of Certificate Transparency */ +# define CT_V1_HASHLEN SHA256_DIGEST_LENGTH + +SKM_DEFINE_STACK_OF_INTERNAL(SCT, SCT, SCT) +#define sk_SCT_num(sk) OPENSSL_sk_num(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_value(sk, idx) ((SCT *)OPENSSL_sk_value(ossl_check_const_SCT_sk_type(sk), (idx))) +#define sk_SCT_new(cmp) ((STACK_OF(SCT) *)OPENSSL_sk_new(ossl_check_SCT_compfunc_type(cmp))) +#define sk_SCT_new_null() ((STACK_OF(SCT) *)OPENSSL_sk_new_null()) +#define sk_SCT_new_reserve(cmp, n) ((STACK_OF(SCT) *)OPENSSL_sk_new_reserve(ossl_check_SCT_compfunc_type(cmp), (n))) +#define sk_SCT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SCT_sk_type(sk), (n)) +#define sk_SCT_free(sk) OPENSSL_sk_free(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_zero(sk) OPENSSL_sk_zero(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_delete(sk, i) ((SCT *)OPENSSL_sk_delete(ossl_check_SCT_sk_type(sk), (i))) +#define sk_SCT_delete_ptr(sk, ptr) ((SCT *)OPENSSL_sk_delete_ptr(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))) +#define sk_SCT_push(sk, ptr) OPENSSL_sk_push(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_pop(sk) ((SCT *)OPENSSL_sk_pop(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_shift(sk) ((SCT *)OPENSSL_sk_shift(ossl_check_SCT_sk_type(sk))) +#define sk_SCT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SCT_sk_type(sk),ossl_check_SCT_freefunc_type(freefunc)) +#define sk_SCT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), (idx)) +#define sk_SCT_set(sk, idx, ptr) ((SCT *)OPENSSL_sk_set(ossl_check_SCT_sk_type(sk), (idx), ossl_check_SCT_type(ptr))) +#define sk_SCT_find(sk, ptr) OPENSSL_sk_find(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) +#define sk_SCT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), pnum) +#define sk_SCT_sort(sk) OPENSSL_sk_sort(ossl_check_SCT_sk_type(sk)) +#define sk_SCT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SCT_sk_type(sk)) +#define sk_SCT_dup(sk) ((STACK_OF(SCT) *)OPENSSL_sk_dup(ossl_check_const_SCT_sk_type(sk))) +#define sk_SCT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SCT) *)OPENSSL_sk_deep_copy(ossl_check_const_SCT_sk_type(sk), ossl_check_SCT_copyfunc_type(copyfunc), ossl_check_SCT_freefunc_type(freefunc))) +#define sk_SCT_set_cmp_func(sk, cmp) ((sk_SCT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SCT_sk_type(sk), ossl_check_SCT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(CTLOG, CTLOG, CTLOG) +#define sk_CTLOG_num(sk) OPENSSL_sk_num(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_value(sk, idx) ((CTLOG *)OPENSSL_sk_value(ossl_check_const_CTLOG_sk_type(sk), (idx))) +#define sk_CTLOG_new(cmp) ((STACK_OF(CTLOG) *)OPENSSL_sk_new(ossl_check_CTLOG_compfunc_type(cmp))) +#define sk_CTLOG_new_null() ((STACK_OF(CTLOG) *)OPENSSL_sk_new_null()) +#define sk_CTLOG_new_reserve(cmp, n) ((STACK_OF(CTLOG) *)OPENSSL_sk_new_reserve(ossl_check_CTLOG_compfunc_type(cmp), (n))) +#define sk_CTLOG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CTLOG_sk_type(sk), (n)) +#define sk_CTLOG_free(sk) OPENSSL_sk_free(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_zero(sk) OPENSSL_sk_zero(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_delete(sk, i) ((CTLOG *)OPENSSL_sk_delete(ossl_check_CTLOG_sk_type(sk), (i))) +#define sk_CTLOG_delete_ptr(sk, ptr) ((CTLOG *)OPENSSL_sk_delete_ptr(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_push(sk, ptr) OPENSSL_sk_push(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_pop(sk) ((CTLOG *)OPENSSL_sk_pop(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_shift(sk) ((CTLOG *)OPENSSL_sk_shift(ossl_check_CTLOG_sk_type(sk))) +#define sk_CTLOG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CTLOG_sk_type(sk),ossl_check_CTLOG_freefunc_type(freefunc)) +#define sk_CTLOG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), (idx)) +#define sk_CTLOG_set(sk, idx, ptr) ((CTLOG *)OPENSSL_sk_set(ossl_check_CTLOG_sk_type(sk), (idx), ossl_check_CTLOG_type(ptr))) +#define sk_CTLOG_find(sk, ptr) OPENSSL_sk_find(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) +#define sk_CTLOG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), pnum) +#define sk_CTLOG_sort(sk) OPENSSL_sk_sort(ossl_check_CTLOG_sk_type(sk)) +#define sk_CTLOG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CTLOG_sk_type(sk)) +#define sk_CTLOG_dup(sk) ((STACK_OF(CTLOG) *)OPENSSL_sk_dup(ossl_check_const_CTLOG_sk_type(sk))) +#define sk_CTLOG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CTLOG) *)OPENSSL_sk_deep_copy(ossl_check_const_CTLOG_sk_type(sk), ossl_check_CTLOG_copyfunc_type(copyfunc), ossl_check_CTLOG_freefunc_type(freefunc))) +#define sk_CTLOG_set_cmp_func(sk, cmp) ((sk_CTLOG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_compfunc_type(cmp))) + + + +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; + +/****************************************** + * CT policy evaluation context functions * + ******************************************/ + +/* + * Creates a new, empty policy evaluation context associated with the given + * library context and property query string. + * 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_ex(OSSL_LIB_CTX *libctx, + const char *propq); + +/* + * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library + * context and property query string is used. + */ +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 serialization * + *********************************/ + +/* + * 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| and + * associates it with the give library context |libctx| and property query + * string |propq|. + * 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_ex(EVP_PKEY *public_key, const char *name, OSSL_LIB_CTX *libctx, + const char *propq); + +/* + * The same as CTLOG_new_ex except that the default library context and + * property query string are used. + */ +CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name); + +/* + * Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER + * in |pkey_base64| and associated with the given library context |libctx| and + * property query string |propq|. 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_ex(CTLOG **ct_log, const char *pkey_base64, + const char *name, OSSL_LIB_CTX *libctx, + const char *propq); + +/* + * The same as CTLOG_new_from_base64_ex() except that the default + * library context and property query string are used. + * Returns 1 on success, 0 on failure. + */ +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 and associates it with the given libctx and + * property query string. + * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. + */ +CTLOG_STORE *CTLOG_STORE_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +/* + * Same as CTLOG_STORE_new_ex except that the default libctx and + * property query string are used. + * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. + */ +CTLOG_STORE *CTLOG_STORE_new(void); + +/* + * Deletes a CT log store and all of the CT log instances held within. + */ +void CTLOG_STORE_free(CTLOG_STORE *store); + +/* + * Finds a CT log in the store based on its log ID. + * Returns the CT log, or NULL if no match is found. + */ +const CTLOG *CTLOG_STORE_get0_log_by_id(const CTLOG_STORE *store, + const uint8_t *log_id, + size_t log_id_len); + +/* + * Loads a CT log list into a |store| from a |file|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_file(CTLOG_STORE *store, const char *file); + +/* + * Loads the default CT log list into a |store|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_default_file(CTLOG_STORE *store); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/include/openssl/cterr.h b/include/openssl/cterr.h new file mode 100644 index 0000000..935d32d --- /dev/null +++ b/include/openssl/cterr.h @@ -0,0 +1,45 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_CTERR_H +# define OPENSSL_CTERR_H +# pragma once + +# include +# include +# include + + +# ifndef OPENSSL_NO_CT + + +/* + * CT reason codes. + */ +# define CT_R_BASE64_DECODE_ERROR 108 +# define CT_R_INVALID_LOG_ID_LENGTH 100 +# define CT_R_LOG_CONF_INVALID 109 +# define CT_R_LOG_CONF_INVALID_KEY 110 +# define CT_R_LOG_CONF_MISSING_DESCRIPTION 111 +# define CT_R_LOG_CONF_MISSING_KEY 112 +# define CT_R_LOG_KEY_INVALID 113 +# define CT_R_SCT_FUTURE_TIMESTAMP 116 +# define CT_R_SCT_INVALID 104 +# define CT_R_SCT_INVALID_SIGNATURE 107 +# define CT_R_SCT_LIST_INVALID 105 +# define CT_R_SCT_LOG_ID_MISMATCH 114 +# define CT_R_SCT_NOT_SET 106 +# define CT_R_SCT_UNSUPPORTED_VERSION 115 +# define CT_R_UNRECOGNIZED_SIGNATURE_NID 101 +# define CT_R_UNSUPPORTED_ENTRY_TYPE 102 +# define CT_R_UNSUPPORTED_VERSION 103 + +# endif +#endif diff --git a/include/openssl/decoder.h b/include/openssl/decoder.h new file mode 100644 index 0000000..d4ee2cf --- /dev/null +++ b/include/openssl/decoder.h @@ -0,0 +1,133 @@ +/* + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_DECODER_H +# define OPENSSL_DECODER_H +# pragma once + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +OSSL_DECODER *OSSL_DECODER_fetch(OSSL_LIB_CTX *libctx, const char *name, + const char *properties); +int OSSL_DECODER_up_ref(OSSL_DECODER *encoder); +void OSSL_DECODER_free(OSSL_DECODER *encoder); + +const OSSL_PROVIDER *OSSL_DECODER_get0_provider(const OSSL_DECODER *encoder); +const char *OSSL_DECODER_get0_properties(const OSSL_DECODER *encoder); +const char *OSSL_DECODER_get0_name(const OSSL_DECODER *decoder); +const char *OSSL_DECODER_get0_description(const OSSL_DECODER *decoder); +int OSSL_DECODER_is_a(const OSSL_DECODER *encoder, const char *name); + +void OSSL_DECODER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(OSSL_DECODER *encoder, void *arg), + void *arg); +int OSSL_DECODER_names_do_all(const OSSL_DECODER *encoder, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *OSSL_DECODER_gettable_params(OSSL_DECODER *decoder); +int OSSL_DECODER_get_params(OSSL_DECODER *decoder, OSSL_PARAM params[]); + +const OSSL_PARAM *OSSL_DECODER_settable_ctx_params(OSSL_DECODER *encoder); +OSSL_DECODER_CTX *OSSL_DECODER_CTX_new(void); +int OSSL_DECODER_CTX_set_params(OSSL_DECODER_CTX *ctx, + const OSSL_PARAM params[]); +void OSSL_DECODER_CTX_free(OSSL_DECODER_CTX *ctx); + +/* Utilities that help set specific parameters */ +int OSSL_DECODER_CTX_set_passphrase(OSSL_DECODER_CTX *ctx, + const unsigned char *kstr, size_t klen); +int OSSL_DECODER_CTX_set_pem_password_cb(OSSL_DECODER_CTX *ctx, + pem_password_cb *cb, void *cbarg); +int OSSL_DECODER_CTX_set_passphrase_cb(OSSL_DECODER_CTX *ctx, + OSSL_PASSPHRASE_CALLBACK *cb, + void *cbarg); +int OSSL_DECODER_CTX_set_passphrase_ui(OSSL_DECODER_CTX *ctx, + const UI_METHOD *ui_method, + void *ui_data); + +/* + * Utilities to read the object to decode, with the result sent to cb. + * These will discover all provided methods + */ + +int OSSL_DECODER_CTX_set_selection(OSSL_DECODER_CTX *ctx, int selection); +int OSSL_DECODER_CTX_set_input_type(OSSL_DECODER_CTX *ctx, + const char *input_type); +int OSSL_DECODER_CTX_set_input_structure(OSSL_DECODER_CTX *ctx, + const char *input_structure); +int OSSL_DECODER_CTX_add_decoder(OSSL_DECODER_CTX *ctx, OSSL_DECODER *decoder); +int OSSL_DECODER_CTX_add_extra(OSSL_DECODER_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_DECODER_CTX_get_num_decoders(OSSL_DECODER_CTX *ctx); + +typedef struct ossl_decoder_instance_st OSSL_DECODER_INSTANCE; +OSSL_DECODER * +OSSL_DECODER_INSTANCE_get_decoder(OSSL_DECODER_INSTANCE *decoder_inst); +void * +OSSL_DECODER_INSTANCE_get_decoder_ctx(OSSL_DECODER_INSTANCE *decoder_inst); +const char * +OSSL_DECODER_INSTANCE_get_input_type(OSSL_DECODER_INSTANCE *decoder_inst); +const char * +OSSL_DECODER_INSTANCE_get_input_structure(OSSL_DECODER_INSTANCE *decoder_inst, + int *was_set); + +typedef int OSSL_DECODER_CONSTRUCT(OSSL_DECODER_INSTANCE *decoder_inst, + const OSSL_PARAM *params, + void *construct_data); +typedef void OSSL_DECODER_CLEANUP(void *construct_data); + +int OSSL_DECODER_CTX_set_construct(OSSL_DECODER_CTX *ctx, + OSSL_DECODER_CONSTRUCT *construct); +int OSSL_DECODER_CTX_set_construct_data(OSSL_DECODER_CTX *ctx, + void *construct_data); +int OSSL_DECODER_CTX_set_cleanup(OSSL_DECODER_CTX *ctx, + OSSL_DECODER_CLEANUP *cleanup); +OSSL_DECODER_CONSTRUCT *OSSL_DECODER_CTX_get_construct(OSSL_DECODER_CTX *ctx); +void *OSSL_DECODER_CTX_get_construct_data(OSSL_DECODER_CTX *ctx); +OSSL_DECODER_CLEANUP *OSSL_DECODER_CTX_get_cleanup(OSSL_DECODER_CTX *ctx); + +int OSSL_DECODER_export(OSSL_DECODER_INSTANCE *decoder_inst, + void *reference, size_t reference_sz, + OSSL_CALLBACK *export_cb, void *export_cbarg); + +int OSSL_DECODER_from_bio(OSSL_DECODER_CTX *ctx, BIO *in); +#ifndef OPENSSL_NO_STDIO +int OSSL_DECODER_from_fp(OSSL_DECODER_CTX *ctx, FILE *in); +#endif +int OSSL_DECODER_from_data(OSSL_DECODER_CTX *ctx, const unsigned char **pdata, + size_t *pdata_len); + +/* + * Create the OSSL_DECODER_CTX with an associated type. This will perform + * an implicit OSSL_DECODER_fetch(), suitable for the object of that type. + */ +OSSL_DECODER_CTX * +OSSL_DECODER_CTX_new_for_pkey(EVP_PKEY **pkey, + const char *input_type, + const char *input_struct, + const char *keytype, int selection, + OSSL_LIB_CTX *libctx, const char *propquery); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/decodererr.h b/include/openssl/decodererr.h new file mode 100644 index 0000000..4212a38 --- /dev/null +++ b/include/openssl/decodererr.h @@ -0,0 +1,28 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_DECODERERR_H +# define OPENSSL_DECODERERR_H +# pragma once + +# include +# include +# include + + + +/* + * OSSL_DECODER reason codes. + */ +# define OSSL_DECODER_R_COULD_NOT_DECODE_OBJECT 101 +# define OSSL_DECODER_R_DECODER_NOT_FOUND 102 +# define OSSL_DECODER_R_MISSING_GET_PARAMS 100 + +#endif diff --git a/include/openssl/des.h b/include/openssl/des.h new file mode 100644 index 0000000..09798a6 --- /dev/null +++ b/include/openssl/des.h @@ -0,0 +1,211 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_DES_H +# define OPENSSL_DES_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_DES_H +# endif + +# include + +# ifndef OPENSSL_NO_DES +# ifdef __cplusplus +extern "C" { +# endif +# include + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +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)) + +# define DES_fixup_key_parity DES_set_odd_parity +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *DES_options(void); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +DES_LONG DES_cbc_cksum(const unsigned char *input, DES_cblock *output, + long length, DES_key_schedule *schedule, + const_DES_cblock *ivec); +# endif +/* DES_cbc_encrypt does not update the IV! Use DES_ncbc_encrypt instead. */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +void DES_cbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, DES_cblock *ivec, + int enc); +OSSL_DEPRECATEDIN_3_0 +void DES_ncbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, DES_cblock *ivec, + int enc); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +void DES_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits, + long length, DES_key_schedule *schedule, DES_cblock *ivec, + int enc); +OSSL_DEPRECATEDIN_3_0 +void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output, + DES_key_schedule *ks, int enc); +# endif + +/* + * 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. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc); +# endif + +/* + * 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 :-). + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc); +OSSL_DEPRECATEDIN_3_0 +void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1, DES_key_schedule *ks2, + DES_key_schedule *ks3); +OSSL_DEPRECATEDIN_3_0 +void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1, DES_key_schedule *ks2, + DES_key_schedule *ks3); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +char *DES_fcrypt(const char *buf, const char *salt, char *ret); +OSSL_DEPRECATEDIN_3_0 +char *DES_crypt(const char *buf, const char *salt); +OSSL_DEPRECATEDIN_3_0 +void DES_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits, + long length, DES_key_schedule *schedule, DES_cblock *ivec); +OSSL_DEPRECATEDIN_3_0 +void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +OSSL_DEPRECATEDIN_3_0 +DES_LONG DES_quad_cksum(const unsigned char *input, DES_cblock output[], + long length, int out_count, DES_cblock *seed); +OSSL_DEPRECATEDIN_3_0 int DES_random_key(DES_cblock *ret); +OSSL_DEPRECATEDIN_3_0 void DES_set_odd_parity(DES_cblock *key); +OSSL_DEPRECATEDIN_3_0 int DES_check_key_parity(const_DES_cblock *key); +OSSL_DEPRECATEDIN_3_0 int DES_is_weak_key(const_DES_cblock *key); +# endif +/* + * DES_set_key (= set_key = DES_key_sched = key_sched) calls + * DES_set_key_checked + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule); +OSSL_DEPRECATEDIN_3_0 +int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule); +OSSL_DEPRECATEDIN_3_0 +int DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule); +OSSL_DEPRECATEDIN_3_0 +void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule); +OSSL_DEPRECATEDIN_3_0 void DES_string_to_key(const char *str, DES_cblock *key); +OSSL_DEPRECATEDIN_3_0 +void DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2); +OSSL_DEPRECATEDIN_3_0 +void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int *num, int enc); +OSSL_DEPRECATEDIN_3_0 +void DES_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int *num); +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/include/openssl/dh.h b/include/openssl/dh.h new file mode 100644 index 0000000..ec5a493 --- /dev/null +++ b/include/openssl/dh.h @@ -0,0 +1,331 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_DH_H +# define OPENSSL_DH_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_DH_H +# endif + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +#include + +/* DH parameter generation types used by EVP_PKEY_CTX_set_dh_paramgen_type() */ +# define DH_PARAMGEN_TYPE_GENERATOR 0 /* Use a safe prime generator */ +# define DH_PARAMGEN_TYPE_FIPS_186_2 1 /* Use FIPS186-2 standard */ +# define DH_PARAMGEN_TYPE_FIPS_186_4 2 /* Use FIPS186-4 standard */ +# define DH_PARAMGEN_TYPE_GROUP 3 /* Use a named safe prime group */ + +int EVP_PKEY_CTX_set_dh_paramgen_type(EVP_PKEY_CTX *ctx, int typ); +int EVP_PKEY_CTX_set_dh_paramgen_gindex(EVP_PKEY_CTX *ctx, int gindex); +int EVP_PKEY_CTX_set_dh_paramgen_seed(EVP_PKEY_CTX *ctx, + const unsigned char *seed, + size_t seedlen); +int EVP_PKEY_CTX_set_dh_paramgen_prime_len(EVP_PKEY_CTX *ctx, int pbits); +int EVP_PKEY_CTX_set_dh_paramgen_subprime_len(EVP_PKEY_CTX *ctx, int qlen); +int EVP_PKEY_CTX_set_dh_paramgen_generator(EVP_PKEY_CTX *ctx, int gen); +int EVP_PKEY_CTX_set_dh_nid(EVP_PKEY_CTX *ctx, int nid); +int EVP_PKEY_CTX_set_dh_rfc5114(EVP_PKEY_CTX *ctx, int gen); +int EVP_PKEY_CTX_set_dhx_rfc5114(EVP_PKEY_CTX *ctx, int gen); +int EVP_PKEY_CTX_set_dh_pad(EVP_PKEY_CTX *ctx, int pad); + +int EVP_PKEY_CTX_set_dh_kdf_type(EVP_PKEY_CTX *ctx, int kdf); +int EVP_PKEY_CTX_get_dh_kdf_type(EVP_PKEY_CTX *ctx); +int EVP_PKEY_CTX_set0_dh_kdf_oid(EVP_PKEY_CTX *ctx, ASN1_OBJECT *oid); +int EVP_PKEY_CTX_get0_dh_kdf_oid(EVP_PKEY_CTX *ctx, ASN1_OBJECT **oid); +int EVP_PKEY_CTX_set_dh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_get_dh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_set_dh_kdf_outlen(EVP_PKEY_CTX *ctx, int len); +int EVP_PKEY_CTX_get_dh_kdf_outlen(EVP_PKEY_CTX *ctx, int *len); +int EVP_PKEY_CTX_set0_dh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char *ukm, int len); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_CTX_get0_dh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **ukm); +#endif + +# define EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DH_RFC5114 (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_DH_PARAMGEN_TYPE (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_DH_KDF_TYPE (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 13) +# define EVP_PKEY_CTRL_GET_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 14) +# define EVP_PKEY_CTRL_DH_NID (EVP_PKEY_ALG_CTRL + 15) +# define EVP_PKEY_CTRL_DH_PAD (EVP_PKEY_ALG_CTRL + 16) + +/* KDF types */ +# define EVP_PKEY_DH_KDF_NONE 1 +# define EVP_PKEY_DH_KDF_X9_42 2 + +# ifndef OPENSSL_NO_STDIO +# include +# endif +# ifndef OPENSSL_NO_DH +# include +# include +# include +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# include +# endif +# include + +# 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 + +# define DH_FLAG_TYPE_MASK 0xF000 +# define DH_FLAG_TYPE_DH 0x0000 +# define DH_FLAG_TYPE_DHX 0x1000 + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DH_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * 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 +# endif + +/* Already defined in ossl_typ.h */ +/* typedef struct dh_st DH; */ +/* typedef struct dh_method DH_METHOD; */ + +DECLARE_ASN1_ITEM(DHparams) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DH_GENERATOR_2 2 +# define DH_GENERATOR_3 3 +# define DH_GENERATOR_5 5 + +/* DH_check error codes */ +/* + * NB: These values must align with the equivalently named macros in + * internal/ffc.h. + */ +# 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 +# define DH_MODULUS_TOO_SMALL 0x80 +# define DH_MODULUS_TOO_LARGE 0x100 + +/* 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(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(DH, i2d_DHxparams, bp, x) + +DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, DH, DHparams) + +OSSL_DEPRECATEDIN_3_0 const DH_METHOD *DH_OpenSSL(void); + +OSSL_DEPRECATEDIN_3_0 void DH_set_default_method(const DH_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const DH_METHOD *DH_get_default_method(void); +OSSL_DEPRECATEDIN_3_0 int DH_set_method(DH *dh, const DH_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 DH *DH_new_method(ENGINE *engine); + +OSSL_DEPRECATEDIN_3_0 DH *DH_new(void); +OSSL_DEPRECATEDIN_3_0 void DH_free(DH *dh); +OSSL_DEPRECATEDIN_3_0 int DH_up_ref(DH *dh); +OSSL_DEPRECATEDIN_3_0 int DH_bits(const DH *dh); +OSSL_DEPRECATEDIN_3_0 int DH_size(const DH *dh); +OSSL_DEPRECATEDIN_3_0 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) + +OSSL_DEPRECATEDIN_3_0 int DH_set_ex_data(DH *d, int idx, void *arg); +OSSL_DEPRECATEDIN_3_0 void *DH_get_ex_data(const DH *d, int idx); + +OSSL_DEPRECATEDIN_3_0 int DH_generate_parameters_ex(DH *dh, int prime_len, + int generator, + BN_GENCB *cb); + +OSSL_DEPRECATEDIN_3_0 int DH_check_params_ex(const DH *dh); +OSSL_DEPRECATEDIN_3_0 int DH_check_ex(const DH *dh); +OSSL_DEPRECATEDIN_3_0 int DH_check_pub_key_ex(const DH *dh, const BIGNUM *pub_key); +OSSL_DEPRECATEDIN_3_0 int DH_check_params(const DH *dh, int *ret); +OSSL_DEPRECATEDIN_3_0 int DH_check(const DH *dh, int *codes); +OSSL_DEPRECATEDIN_3_0 int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, + int *codes); +OSSL_DEPRECATEDIN_3_0 int DH_generate_key(DH *dh); +OSSL_DEPRECATEDIN_3_0 int DH_compute_key(unsigned char *key, + const BIGNUM *pub_key, DH *dh); +OSSL_DEPRECATEDIN_3_0 int DH_compute_key_padded(unsigned char *key, + const BIGNUM *pub_key, DH *dh); + +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, DH, DHparams) +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, DH, DHxparams) + +# ifndef OPENSSL_NO_STDIO +OSSL_DEPRECATEDIN_3_0 int DHparams_print_fp(FILE *fp, const DH *x); +# endif +OSSL_DEPRECATEDIN_3_0 int DHparams_print(BIO *bp, const DH *x); + +/* RFC 5114 parameters */ +OSSL_DEPRECATEDIN_3_0 DH *DH_get_1024_160(void); +OSSL_DEPRECATEDIN_3_0 DH *DH_get_2048_224(void); +OSSL_DEPRECATEDIN_3_0 DH *DH_get_2048_256(void); + +/* Named parameters, currently RFC7919 and RFC3526 */ +OSSL_DEPRECATEDIN_3_0 DH *DH_new_by_nid(int nid); +OSSL_DEPRECATEDIN_3_0 int DH_get_nid(const DH *dh); + +/* RFC2631 KDF */ +OSSL_DEPRECATEDIN_3_0 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); + +OSSL_DEPRECATEDIN_3_0 void DH_get0_pqg(const DH *dh, const BIGNUM **p, + const BIGNUM **q, const BIGNUM **g); +OSSL_DEPRECATEDIN_3_0 int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g); +OSSL_DEPRECATEDIN_3_0 void DH_get0_key(const DH *dh, const BIGNUM **pub_key, + const BIGNUM **priv_key); +OSSL_DEPRECATEDIN_3_0 int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *DH_get0_p(const DH *dh); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *DH_get0_q(const DH *dh); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *DH_get0_g(const DH *dh); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *DH_get0_priv_key(const DH *dh); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *DH_get0_pub_key(const DH *dh); +OSSL_DEPRECATEDIN_3_0 void DH_clear_flags(DH *dh, int flags); +OSSL_DEPRECATEDIN_3_0 int DH_test_flags(const DH *dh, int flags); +OSSL_DEPRECATEDIN_3_0 void DH_set_flags(DH *dh, int flags); +OSSL_DEPRECATEDIN_3_0 ENGINE *DH_get0_engine(DH *d); +OSSL_DEPRECATEDIN_3_0 long DH_get_length(const DH *dh); +OSSL_DEPRECATEDIN_3_0 int DH_set_length(DH *dh, long length); + +OSSL_DEPRECATEDIN_3_0 DH_METHOD *DH_meth_new(const char *name, int flags); +OSSL_DEPRECATEDIN_3_0 void DH_meth_free(DH_METHOD *dhm); +OSSL_DEPRECATEDIN_3_0 DH_METHOD *DH_meth_dup(const DH_METHOD *dhm); +OSSL_DEPRECATEDIN_3_0 const char *DH_meth_get0_name(const DH_METHOD *dhm); +OSSL_DEPRECATEDIN_3_0 int DH_meth_set1_name(DH_METHOD *dhm, const char *name); +OSSL_DEPRECATEDIN_3_0 int DH_meth_get_flags(const DH_METHOD *dhm); +OSSL_DEPRECATEDIN_3_0 int DH_meth_set_flags(DH_METHOD *dhm, int flags); +OSSL_DEPRECATEDIN_3_0 void *DH_meth_get0_app_data(const DH_METHOD *dhm); +OSSL_DEPRECATEDIN_3_0 int DH_meth_set0_app_data(DH_METHOD *dhm, void *app_data); +OSSL_DEPRECATEDIN_3_0 int (*DH_meth_get_generate_key(const DH_METHOD *dhm)) (DH *); +OSSL_DEPRECATEDIN_3_0 int DH_meth_set_generate_key(DH_METHOD *dhm, + int (*generate_key) (DH *)); +OSSL_DEPRECATEDIN_3_0 int (*DH_meth_get_compute_key(const DH_METHOD *dhm)) + (unsigned char *key, + const BIGNUM *pub_key, + DH *dh); +OSSL_DEPRECATEDIN_3_0 int DH_meth_set_compute_key(DH_METHOD *dhm, + int (*compute_key) + (unsigned char *key, + const BIGNUM *pub_key, + DH *dh)); +OSSL_DEPRECATEDIN_3_0 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 *); +OSSL_DEPRECATEDIN_3_0 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 *)); +OSSL_DEPRECATEDIN_3_0 int (*DH_meth_get_init(const DH_METHOD *dhm))(DH *); +OSSL_DEPRECATEDIN_3_0 int DH_meth_set_init(DH_METHOD *dhm, int (*init)(DH *)); +OSSL_DEPRECATEDIN_3_0 int (*DH_meth_get_finish(const DH_METHOD *dhm)) (DH *); +OSSL_DEPRECATEDIN_3_0 int DH_meth_set_finish(DH_METHOD *dhm, int (*finish) (DH *)); +OSSL_DEPRECATEDIN_3_0 int (*DH_meth_get_generate_params(const DH_METHOD *dhm)) + (DH *, int, int, + BN_GENCB *); +OSSL_DEPRECATEDIN_3_0 int DH_meth_set_generate_params(DH_METHOD *dhm, + int (*generate_params) + (DH *, int, int, + BN_GENCB *)); +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +# ifndef OPENSSL_NO_DEPRECATED_0_9_8 +OSSL_DEPRECATEDIN_0_9_8 DH *DH_generate_parameters(int prime_len, int generator, + void (*callback) (int, int, + void *), + void *cb_arg); +# endif + +# endif +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/dherr.h b/include/openssl/dherr.h new file mode 100644 index 0000000..5d2a762 --- /dev/null +++ b/include/openssl/dherr.h @@ -0,0 +1,57 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_DHERR_H +# define OPENSSL_DHERR_H +# pragma once + +# include +# include +# include + + +# ifndef OPENSSL_NO_DH + + +/* + * DH reason codes. + */ +# define DH_R_BAD_FFC_PARAMETERS 127 +# define DH_R_BAD_GENERATOR 101 +# define DH_R_BN_DECODE_ERROR 109 +# define DH_R_BN_ERROR 106 +# define DH_R_CHECK_INVALID_J_VALUE 115 +# define DH_R_CHECK_INVALID_Q_VALUE 116 +# define DH_R_CHECK_PUBKEY_INVALID 122 +# define DH_R_CHECK_PUBKEY_TOO_LARGE 123 +# define DH_R_CHECK_PUBKEY_TOO_SMALL 124 +# define DH_R_CHECK_P_NOT_PRIME 117 +# define DH_R_CHECK_P_NOT_SAFE_PRIME 118 +# define DH_R_CHECK_Q_NOT_PRIME 119 +# define DH_R_DECODE_ERROR 104 +# define DH_R_INVALID_PARAMETER_NAME 110 +# define DH_R_INVALID_PARAMETER_NID 114 +# define DH_R_INVALID_PUBKEY 102 +# define DH_R_INVALID_SECRET 128 +# define DH_R_KDF_PARAMETER_ERROR 112 +# define DH_R_KEYS_NOT_SET 108 +# define DH_R_MISSING_PUBKEY 125 +# define DH_R_MODULUS_TOO_LARGE 103 +# define DH_R_MODULUS_TOO_SMALL 126 +# define DH_R_NOT_SUITABLE_GENERATOR 120 +# define DH_R_NO_PARAMETERS_SET 107 +# define DH_R_NO_PRIVATE_VALUE 100 +# define DH_R_PARAMETER_ENCODING_ERROR 105 +# define DH_R_PEER_KEY_ERROR 111 +# define DH_R_SHARED_INFO_ERROR 113 +# define DH_R_UNABLE_TO_CHECK_GENERATOR 121 + +# endif +#endif diff --git a/include/openssl/dsa.h b/include/openssl/dsa.h new file mode 100644 index 0000000..160404c --- /dev/null +++ b/include/openssl/dsa.h @@ -0,0 +1,280 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_DSA_H +# define OPENSSL_DSA_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_DSA_H +# endif + +# include +# include + +# include + +# ifndef OPENSSL_NO_DSA +# include +# include +# include +# include +# include +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# include +# endif +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif +# endif + +# ifdef __cplusplus +extern "C" { +# endif + +int EVP_PKEY_CTX_set_dsa_paramgen_bits(EVP_PKEY_CTX *ctx, int nbits); +int EVP_PKEY_CTX_set_dsa_paramgen_q_bits(EVP_PKEY_CTX *ctx, int qbits); +int EVP_PKEY_CTX_set_dsa_paramgen_md_props(EVP_PKEY_CTX *ctx, + const char *md_name, + const char *md_properties); +int EVP_PKEY_CTX_set_dsa_paramgen_gindex(EVP_PKEY_CTX *ctx, int gindex); +int EVP_PKEY_CTX_set_dsa_paramgen_type(EVP_PKEY_CTX *ctx, const char *name); +int EVP_PKEY_CTX_set_dsa_paramgen_seed(EVP_PKEY_CTX *ctx, + const unsigned char *seed, + size_t seedlen); +int EVP_PKEY_CTX_set_dsa_paramgen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +# define EVP_PKEY_CTRL_DSA_PARAMGEN_BITS (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_MD (EVP_PKEY_ALG_CTRL + 3) + +# ifndef OPENSSL_NO_DSA +# ifndef OPENSSL_DSA_MAX_MODULUS_BITS +# define OPENSSL_DSA_MAX_MODULUS_BITS 10000 +# endif + +# define OPENSSL_DSA_FIPS_MIN_MODULUS_BITS 1024 + +typedef struct DSA_SIG_st DSA_SIG; +DSA_SIG *DSA_SIG_new(void); +void DSA_SIG_free(DSA_SIG *a); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(DSA_SIG, DSA_SIG) +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); + + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DSA_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DSA_FLAG_CACHE_MONT_P 0x01 + +/* + * 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; */ + +# 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(DSA, i2d_DSAparams, bp, x) + +DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, DSA, DSAparams) +OSSL_DEPRECATEDIN_3_0 DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, + DSA *dsa); +OSSL_DEPRECATEDIN_3_0 int DSA_do_verify(const unsigned char *dgst, int dgst_len, + DSA_SIG *sig, DSA *dsa); + +OSSL_DEPRECATEDIN_3_0 const DSA_METHOD *DSA_OpenSSL(void); + +OSSL_DEPRECATEDIN_3_0 void DSA_set_default_method(const DSA_METHOD *); +OSSL_DEPRECATEDIN_3_0 const DSA_METHOD *DSA_get_default_method(void); +OSSL_DEPRECATEDIN_3_0 int DSA_set_method(DSA *dsa, const DSA_METHOD *); +OSSL_DEPRECATEDIN_3_0 const DSA_METHOD *DSA_get_method(DSA *d); + +OSSL_DEPRECATEDIN_3_0 DSA *DSA_new(void); +OSSL_DEPRECATEDIN_3_0 DSA *DSA_new_method(ENGINE *engine); +OSSL_DEPRECATEDIN_3_0 void DSA_free(DSA *r); +/* "up" the DSA object's reference count */ +OSSL_DEPRECATEDIN_3_0 int DSA_up_ref(DSA *r); +OSSL_DEPRECATEDIN_3_0 int DSA_size(const DSA *); +OSSL_DEPRECATEDIN_3_0 int DSA_bits(const DSA *d); +OSSL_DEPRECATEDIN_3_0 int DSA_security_bits(const DSA *d); + /* next 4 return -1 on error */ +OSSL_DEPRECATEDIN_3_0 int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp); +OSSL_DEPRECATEDIN_3_0 int DSA_sign(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, DSA *dsa); +OSSL_DEPRECATEDIN_3_0 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) +OSSL_DEPRECATEDIN_3_0 int DSA_set_ex_data(DSA *d, int idx, void *arg); +OSSL_DEPRECATEDIN_3_0 void *DSA_get_ex_data(const DSA *d, int idx); + +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, + DSA, DSAPublicKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, + DSA, DSAPrivateKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, + DSA, DSAparams) +# endif + +# ifndef OPENSSL_NO_DEPRECATED_0_9_8 +/* Deprecated version */ +OSSL_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); +# endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/* New version */ +OSSL_DEPRECATEDIN_3_0 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); + +OSSL_DEPRECATEDIN_3_0 int DSA_generate_key(DSA *a); + +OSSL_DEPRECATEDIN_3_0 int DSAparams_print(BIO *bp, const DSA *x); +OSSL_DEPRECATEDIN_3_0 int DSA_print(BIO *bp, const DSA *x, int off); +# ifndef OPENSSL_NO_STDIO +OSSL_DEPRECATEDIN_3_0 int DSAparams_print_fp(FILE *fp, const DSA *x); +OSSL_DEPRECATEDIN_3_0 int DSA_print_fp(FILE *bp, const DSA *x, int off); +# endif + +# define DSS_prime_checks 64 +/* + * Primality test according to FIPS PUB 186-4, Appendix C.3. Since we only + * have one value here we set the number of checks to 64 which is the 128 bit + * security level that is the highest level and valid for creating a 3072 bit + * DSA key. + */ +# define DSA_is_prime(n, callback, cb_arg) \ + BN_is_prime(n, DSS_prime_checks, callback, NULL, cb_arg) + +# ifndef OPENSSL_NO_DH +/* + * Convert DSA structure (key or just parameters) into DH structure (be + * careful to avoid small subgroup attacks when using this!) + */ +OSSL_DEPRECATEDIN_3_0 DH *DSA_dup_DH(const DSA *r); +# endif + +OSSL_DEPRECATEDIN_3_0 void DSA_get0_pqg(const DSA *d, const BIGNUM **p, + const BIGNUM **q, const BIGNUM **g); +OSSL_DEPRECATEDIN_3_0 int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g); +OSSL_DEPRECATEDIN_3_0 void DSA_get0_key(const DSA *d, const BIGNUM **pub_key, + const BIGNUM **priv_key); +OSSL_DEPRECATEDIN_3_0 int DSA_set0_key(DSA *d, BIGNUM *pub_key, + BIGNUM *priv_key); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *DSA_get0_p(const DSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *DSA_get0_q(const DSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *DSA_get0_g(const DSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *DSA_get0_pub_key(const DSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *DSA_get0_priv_key(const DSA *d); +OSSL_DEPRECATEDIN_3_0 void DSA_clear_flags(DSA *d, int flags); +OSSL_DEPRECATEDIN_3_0 int DSA_test_flags(const DSA *d, int flags); +OSSL_DEPRECATEDIN_3_0 void DSA_set_flags(DSA *d, int flags); +OSSL_DEPRECATEDIN_3_0 ENGINE *DSA_get0_engine(DSA *d); + +OSSL_DEPRECATEDIN_3_0 DSA_METHOD *DSA_meth_new(const char *name, int flags); +OSSL_DEPRECATEDIN_3_0 void DSA_meth_free(DSA_METHOD *dsam); +OSSL_DEPRECATEDIN_3_0 DSA_METHOD *DSA_meth_dup(const DSA_METHOD *dsam); +OSSL_DEPRECATEDIN_3_0 const char *DSA_meth_get0_name(const DSA_METHOD *dsam); +OSSL_DEPRECATEDIN_3_0 int DSA_meth_set1_name(DSA_METHOD *dsam, + const char *name); +OSSL_DEPRECATEDIN_3_0 int DSA_meth_get_flags(const DSA_METHOD *dsam); +OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_flags(DSA_METHOD *dsam, int flags); +OSSL_DEPRECATEDIN_3_0 void *DSA_meth_get0_app_data(const DSA_METHOD *dsam); +OSSL_DEPRECATEDIN_3_0 int DSA_meth_set0_app_data(DSA_METHOD *dsam, + void *app_data); +OSSL_DEPRECATEDIN_3_0 DSA_SIG *(*DSA_meth_get_sign(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA *); +OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_sign(DSA_METHOD *dsam, + DSA_SIG *(*sign) (const unsigned char *, int, DSA *)); +OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_sign_setup(const DSA_METHOD *dsam)) + (DSA *, BN_CTX *, BIGNUM **, BIGNUM **); +OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_sign_setup(DSA_METHOD *dsam, + int (*sign_setup) (DSA *, BN_CTX *, BIGNUM **, BIGNUM **)); +OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_verify(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA_SIG *, DSA *); +OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_verify(DSA_METHOD *dsam, + int (*verify) (const unsigned char *, int, DSA_SIG *, DSA *)); +OSSL_DEPRECATEDIN_3_0 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 *); +OSSL_DEPRECATEDIN_3_0 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 *)); +OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_bn_mod_exp(const DSA_METHOD *dsam)) + (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + BN_CTX *, BN_MONT_CTX *); +OSSL_DEPRECATEDIN_3_0 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 *)); +OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_init(const DSA_METHOD *dsam))(DSA *); +OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_init(DSA_METHOD *dsam, + int (*init)(DSA *)); +OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_finish(const DSA_METHOD *dsam))(DSA *); +OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_finish(DSA_METHOD *dsam, + int (*finish)(DSA *)); +OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_paramgen(const DSA_METHOD *dsam)) + (DSA *, int, const unsigned char *, int, int *, unsigned long *, + BN_GENCB *); +OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_paramgen(DSA_METHOD *dsam, + int (*paramgen) (DSA *, int, const unsigned char *, int, int *, + unsigned long *, BN_GENCB *)); +OSSL_DEPRECATEDIN_3_0 int (*DSA_meth_get_keygen(const DSA_METHOD *dsam))(DSA *); +OSSL_DEPRECATEDIN_3_0 int DSA_meth_set_keygen(DSA_METHOD *dsam, + int (*keygen) (DSA *)); + +# endif +# endif +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/dsaerr.h b/include/openssl/dsaerr.h new file mode 100644 index 0000000..26ada57 --- /dev/null +++ b/include/openssl/dsaerr.h @@ -0,0 +1,44 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_DSAERR_H +# define OPENSSL_DSAERR_H +# pragma once + +# include +# include +# include + + +# ifndef OPENSSL_NO_DSA + + +/* + * DSA reason codes. + */ +# define DSA_R_BAD_FFC_PARAMETERS 114 +# define DSA_R_BAD_Q_VALUE 102 +# define DSA_R_BN_DECODE_ERROR 108 +# define DSA_R_BN_ERROR 109 +# define DSA_R_DECODE_ERROR 104 +# define DSA_R_INVALID_DIGEST_TYPE 106 +# define DSA_R_INVALID_PARAMETERS 112 +# define DSA_R_MISSING_PARAMETERS 101 +# define DSA_R_MISSING_PRIVATE_KEY 111 +# define DSA_R_MODULUS_TOO_LARGE 103 +# define DSA_R_NO_PARAMETERS_SET 107 +# define DSA_R_PARAMETER_ENCODING_ERROR 105 +# define DSA_R_P_NOT_PRIME 115 +# define DSA_R_Q_NOT_PRIME 113 +# define DSA_R_SEED_LEN_SMALL 110 +# define DSA_R_TOO_MANY_RETRIES 116 + +# endif +#endif diff --git a/include/openssl/dtls1.h b/include/openssl/dtls1.h new file mode 100644 index 0000000..5dc6b54 --- /dev/null +++ b/include/openssl/dtls1.h @@ -0,0 +1,57 @@ +/* + * Copyright 2005-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_DTLS1_H +# define OPENSSL_DTLS1_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_DTLS1_H +# endif + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* DTLS*_VERSION constants are defined in prov_ssl.h */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DTLS_MIN_VERSION DTLS1_VERSION +# define DTLS_MAX_VERSION DTLS1_2_VERSION +# endif +# define DTLS1_VERSION_MAJOR 0xFE + +/* Special value for method supporting multiple versions */ +# define DTLS_ANY_VERSION 0x1FFFF + +/* lengths of messages */ + +# define DTLS1_COOKIE_LENGTH 255 + +# define DTLS1_RT_HEADER_LENGTH 13 + +# define DTLS1_HM_HEADER_LENGTH 12 + +# define DTLS1_HM_BAD_FRAGMENT -2 +# define DTLS1_HM_FRAGMENT_RETRY -3 + +# define DTLS1_CCS_HEADER_LENGTH 1 + +# define DTLS1_AL_HEADER_LENGTH 2 + +# define DTLS1_TMO_ALERT_COUNT 12 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/openssl/e_os2.h b/include/openssl/e_os2.h new file mode 100644 index 0000000..32e142a --- /dev/null +++ b/include/openssl/e_os2.h @@ -0,0 +1,308 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_E_OS2_H +# define OPENSSL_E_OS2_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_E_OS2_H +# endif + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * Detect operating systems. This probably needs completing. + * The result is that at least one OPENSSL_SYS_os macro should be defined. + * However, if none is defined, Unix is assumed. + **/ + +# define OPENSSL_SYS_UNIX + +/* --------------------- Microsoft operating systems ---------------------- */ + +/* + * Note that MSDOS actually denotes 32-bit environments running on top of + * MS-DOS, such as DJGPP one. + */ +# if defined(OPENSSL_SYS_MSDOS) +# undef OPENSSL_SYS_UNIX +# endif + +/* + * For 32 bit environment, there seems to be the CygWin environment and then + * all the others that try to do the same thing Microsoft does... + */ +/* + * UEFI lives here because it might be built with a Microsoft toolchain and + * we need to avoid the false positive match on Windows. + */ +# if defined(OPENSSL_SYS_UEFI) +# undef OPENSSL_SYS_UNIX +# elif defined(OPENSSL_SYS_UWIN) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32_UWIN +# else +# if defined(__CYGWIN__) || defined(OPENSSL_SYS_CYGWIN) +# define OPENSSL_SYS_WIN32_CYGWIN +# else +# if defined(_WIN32) || defined(OPENSSL_SYS_WIN32) +# undef OPENSSL_SYS_UNIX +# if !defined(OPENSSL_SYS_WIN32) +# define OPENSSL_SYS_WIN32 +# endif +# endif +# if defined(_WIN64) || defined(OPENSSL_SYS_WIN64) +# undef OPENSSL_SYS_UNIX +# if !defined(OPENSSL_SYS_WIN64) +# define OPENSSL_SYS_WIN64 +# endif +# endif +# if defined(OPENSSL_SYS_WINNT) +# undef OPENSSL_SYS_UNIX +# endif +# if defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# endif +# endif +# endif + +/* Anything that tries to look like Microsoft is "Windows" */ +# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN64) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_SYS_MSDOS +# define OPENSSL_SYS_MSDOS +# endif +# endif + +/* + * DLL settings. This part is a bit tough, because it's up to the + * application implementor how he or she will link the application, so it + * requires some macro to be used. + */ +# ifdef OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_OPT_WINDLL +# if defined(_WINDLL) /* This is used when building OpenSSL to + * indicate that DLL linkage should be used */ +# define OPENSSL_OPT_WINDLL +# endif +# endif +# endif + +/* ------------------------------- OpenVMS -------------------------------- */ +# if defined(__VMS) || defined(VMS) +# if !defined(OPENSSL_SYS_VMS) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_VMS +# endif +# 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 + +/* ---------------------------- HP NonStop -------------------------------- */ +# ifdef __TANDEM +# ifdef _STRING +# include +# endif +# define OPENSSL_USE_BUILD_DATE +# if defined(OPENSSL_THREADS) && defined(_SPT_MODEL_) +# define SPT_THREAD_SIGNAL 1 +# define SPT_THREAD_AWARE 1 +# include +# elif defined(OPENSSL_THREADS) && defined(_PUT_MODEL_) +# include +# endif +# endif + +/** + * That's it for OS-specific stuff + *****************************************************************************/ + +/*- + * OPENSSL_EXTERN is normally used to declare a symbol with possible extra + * attributes to handle its presence in a shared library. + * OPENSSL_EXPORT is used to define a symbol with extra possible attributes + * to make it visible in a shared library. + * Care needs to be taken when a header file is used both to declare and + * define symbols. Basically, for any library that exports some global + * variables, the following code must be present in the header file that + * declares them, before OPENSSL_EXTERN is used: + * + * #ifdef SOME_BUILD_FLAG_MACRO + * # undef OPENSSL_EXTERN + * # define OPENSSL_EXTERN OPENSSL_EXPORT + * #endif + * + * The default is to have OPENSSL_EXPORT and OPENSSL_EXTERN + * have some generally sensible values. + */ + +# if defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) +# define OPENSSL_EXPORT extern __declspec(dllexport) +# define OPENSSL_EXTERN extern __declspec(dllimport) +# else +# define OPENSSL_EXPORT extern +# define OPENSSL_EXTERN extern +# endif + +# ifdef _WIN32 +# ifdef _WIN64 +# define ossl_ssize_t __int64 +# define OSSL_SSIZE_MAX _I64_MAX +# else +# define ossl_ssize_t int +# define OSSL_SSIZE_MAX INT_MAX +# endif +# endif + +# if defined(OPENSSL_SYS_UEFI) && !defined(ossl_ssize_t) +# define ossl_ssize_t INTN +# define OSSL_SSIZE_MAX MAX_INTN +# endif + +# ifndef ossl_ssize_t +# define ossl_ssize_t ssize_t +# if defined(SSIZE_MAX) +# define OSSL_SSIZE_MAX SSIZE_MAX +# elif defined(_POSIX_SSIZE_MAX) +# define OSSL_SSIZE_MAX _POSIX_SSIZE_MAX +# else +# define OSSL_SSIZE_MAX ((ssize_t)(SIZE_MAX>>1)) +# endif +# endif + +# if defined(UNUSEDRESULT_DEBUG) +# define __owur __attribute__((__warn_unused_result__)) +# else +# define __owur +# endif + +/* Standard integer types */ +# define OPENSSL_NO_INTTYPES_H +# define OPENSSL_NO_STDINT_H +# 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 +# undef OPENSSL_NO_INTTYPES_H +/* Because the specs say that inttypes.h includes stdint.h if present */ +# undef OPENSSL_NO_STDINT_H +# elif defined(_MSC_VER) && _MSC_VER<1600 +/* + * minimally required typdefs for systems not supporting inttypes.h or + * stdint.h: currently just older VC++ + */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; +typedef unsigned short uint16_t; +typedef int int32_t; +typedef unsigned int uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +# elif defined(OPENSSL_SYS_TANDEM) +# include +# include +# else +# include +# undef OPENSSL_NO_STDINT_H +# endif +# 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 +/* Fall back to the largest we know we require and can handle */ +typedef int64_t ossl_intmax_t; +typedef uint64_t ossl_uintmax_t; +# endif + +/* ossl_inline: portable inline definition usable in public headers */ +# if !defined(inline) && !defined(__cplusplus) +# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L + /* just use inline */ +# define ossl_inline inline +# elif defined(__GNUC__) && __GNUC__>=2 +# define ossl_inline __inline__ +# elif defined(_MSC_VER) + /* + * Visual Studio: inline is available in C++ only, however + * __inline is available for C, see + * http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx + */ +# define ossl_inline __inline +# else +# define ossl_inline +# endif +# else +# define ossl_inline inline +# endif + +# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && \ + !defined(__cplusplus) +# define ossl_noreturn _Noreturn +# elif defined(__GNUC__) && __GNUC__ >= 2 +# define ossl_noreturn __attribute__((noreturn)) +# else +# define ossl_noreturn +# endif + +/* ossl_unused: portable unused attribute for use in public headers */ +# if defined(__GNUC__) +# define ossl_unused __attribute__((unused)) +# else +# define ossl_unused +# endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/openssl/ebcdic.h b/include/openssl/ebcdic.h new file mode 100644 index 0000000..e0ae1aa --- /dev/null +++ b/include/openssl/ebcdic.h @@ -0,0 +1,39 @@ +/* + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_EBCDIC_H +# define OPENSSL_EBCDIC_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_EBCDIC_H +# endif + +# 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/include/openssl/ec.h b/include/openssl/ec.h new file mode 100644 index 0000000..be9fb2f --- /dev/null +++ b/include/openssl/ec.h @@ -0,0 +1,1572 @@ +/* + * Copyright 2002-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_EC_H +# define OPENSSL_EC_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_EC_H +# endif + +# include +# include + +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/* Values for EVP_PKEY_CTX_set_ec_param_enc() */ +# define OPENSSL_EC_EXPLICIT_CURVE 0x000 +# define OPENSSL_EC_NAMED_CURVE 0x001 + +int EVP_PKEY_CTX_set_ec_paramgen_curve_nid(EVP_PKEY_CTX *ctx, int nid); +int EVP_PKEY_CTX_set_ec_param_enc(EVP_PKEY_CTX *ctx, int param_enc); +int EVP_PKEY_CTX_set_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx, int cofactor_mode); +int EVP_PKEY_CTX_get_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_ecdh_kdf_type(EVP_PKEY_CTX *ctx, int kdf); +int EVP_PKEY_CTX_get_ecdh_kdf_type(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_set_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_get_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); + +int EVP_PKEY_CTX_set_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int len); +int EVP_PKEY_CTX_get_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int *len); + +int EVP_PKEY_CTX_set0_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char *ukm, + int len); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_CTX_get0_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **ukm); +# endif + +# 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_63 2 +/* + * The old name for EVP_PKEY_ECDH_KDF_X9_63 + * The ECDH KDF specification has been mistakenly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +# define EVP_PKEY_ECDH_KDF_X9_62 EVP_PKEY_ECDH_KDF_X9_63 + +/** 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; + +const char *OSSL_EC_curve_nid2name(int nid); + +# ifndef OPENSSL_NO_STDIO +# include +# endif +# ifndef OPENSSL_NO_EC +# include +# include +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# include +# endif +# include + +# ifndef OPENSSL_ECC_MAX_FIELD_BITS +# define OPENSSL_ECC_MAX_FIELD_BITS 661 +# endif + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct ec_method_st EC_METHOD; +# endif +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) */ +/********************************************************************/ + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Returns the basic GFp ec methods which provides the basis for the + * optimized methods. + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_simple_method(void); + +/** Returns GFp methods using montgomery multiplication. + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_mont_method(void); + +/** Returns GFp methods using optimized methods for NIST recommended curves + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp224_method(void); + +/** Returns 64-bit optimized methods for nistp256 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp256_method(void); + +/** Returns 64-bit optimized methods for nistp521 + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_GFp_nistp521_method(void); +# endif /* OPENSSL_NO_EC_NISTP_64_GCC_128 */ + +# ifndef OPENSSL_NO_EC2M +/********************************************************************/ +/* EC_METHOD for curves over GF(2^m) */ +/********************************************************************/ + +/** Returns the basic GF2m ec method + * \return EC_METHOD object + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); + +/** Clears and frees a EC_GROUP object + * \param group EC_GROUP object to be cleared and freed. + */ +OSSL_DEPRECATEDIN_3_0 void EC_GROUP_clear_free(EC_GROUP *group); + +/** Returns the EC_METHOD of the EC_GROUP object. + * \param group EC_GROUP object + * \return EC_METHOD used in this EC_GROUP object. + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 int EC_METHOD_get_field_type(const EC_METHOD *meth); +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Frees a EC_GROUP object + * \param group EC_GROUP object to be freed. + */ +void EC_GROUP_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 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); + +/** Sets the generator and its order/cofactor of a EC_GROUP object. + * \param group EC_GROUP object + * \param generator EC_POINT object with the generator. + * \param order the order of the group generated by the generator. + * \param cofactor the index of the sub-group generated by the generator + * in the group of all points on the elliptic curve. + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, + const BIGNUM *order, const BIGNUM *cofactor); + +/** Returns the generator of a EC_GROUP object. + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). + */ +const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); + +/** Returns the montgomery data for order(Generator) + * \param group EC_GROUP object + * \return the currently used montgomery data (possibly NULL). +*/ +BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); + +/** Gets the order of a EC_GROUP + * \param group EC_GROUP object + * \param order BIGNUM to which the order is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); + +/** Gets the order of an EC_GROUP + * \param group EC_GROUP object + * \return the group order + */ +const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group); + +/** Gets the number of bits of the order of an EC_GROUP + * \param group EC_GROUP object + * \return number of bits of group order. + */ +int EC_GROUP_order_bits(const EC_GROUP *group); + +/** Gets the cofactor of a EC_GROUP + * \param group EC_GROUP object + * \param cofactor BIGNUM to which the cofactor is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, + BN_CTX *ctx); + +/** Gets the cofactor of an EC_GROUP + * \param group EC_GROUP object + * \return the group cofactor + */ +const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group); + +/** Sets the name of a EC_GROUP object + * \param group EC_GROUP object + * \param nid NID of the curve name OID + */ +void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); + +/** Returns the curve name of a EC_GROUP object + * \param group EC_GROUP object + * \return NID of the curve name OID or 0 if not set. + */ +int EC_GROUP_get_curve_name(const EC_GROUP *group); + +/** Gets the field of an EC_GROUP + * \param group EC_GROUP object + * \return the group field + */ +const BIGNUM *EC_GROUP_get0_field(const EC_GROUP *group); + +/** Returns the field type of the EC_GROUP. + * \param group EC_GROUP object + * \return NID of the underlying field type OID. + */ +int EC_GROUP_get_field_type(const EC_GROUP *group); + +void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); +int EC_GROUP_get_asn1_flag(const EC_GROUP *group); + +void EC_GROUP_set_point_conversion_form(EC_GROUP *group, + point_conversion_form_t form); +point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); + +unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); +size_t EC_GROUP_get_seed_len(const EC_GROUP *); +size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); + +/** Sets the parameters of an ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameters of the ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the parameters of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_set_curve_GFp(EC_GROUP *group, + const BIGNUM *p, + const BIGNUM *a, + const BIGNUM *b, + BN_CTX *ctx); + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_get_curve_GFp(const EC_GROUP *group, + BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +# ifndef OPENSSL_NO_EC2M +/** Sets the parameter of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_set_curve_GF2m(EC_GROUP *group, + const BIGNUM *p, + const BIGNUM *a, + const BIGNUM *b, + BN_CTX *ctx); + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, + BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); +# endif /* OPENSSL_NO_EC2M */ +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** 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 parameters. + * The parameters may be explicit or a named curve, + * \param params A list of parameters describing the group. + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \return newly created EC_GROUP object with specified parameters or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_params(const OSSL_PARAM params[], + OSSL_LIB_CTX *libctx, const char *propq); + +/** + * Creates a EC_GROUP object with a curve specified by a NID + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \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_ex(OSSL_LIB_CTX *libctx, const char *propq, + int nid); + +/** + * Creates a EC_GROUP object with a curve specified by a NID. Same as + * EC_GROUP_new_by_curve_name_ex but the libctx and propq are always + * NULL. + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name(int nid); + +/** Creates a new EC_GROUP object from an ECPARAMETERS object + * \param params pointer to the ECPARAMETERS object + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params); + +/** Creates an ECPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPARAMETERS object or NULL + * \return pointer to the new ECPARAMETERS object or NULL + * if an error occurred. + */ +ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, + ECPARAMETERS *params); + +/** Creates a new EC_GROUP object from an ECPKPARAMETERS object + * \param params pointer to an existing ECPKPARAMETERS object, or NULL + * \return newly created EC_GROUP object with specified curve, or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params); + +/** Creates an ECPKPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPKPARAMETERS object or NULL + * \return pointer to the new ECPKPARAMETERS object or NULL + * if an error occurred. + */ +ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group, + ECPKPARAMETERS *params); + +/********************************************************************/ +/* handling of internal curves */ +/********************************************************************/ + +typedef struct { + int nid; + const char *comment; +} EC_builtin_curve; + +/* + * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all + * available curves or zero if a error occurred. In case r is not zero, + * nitems EC_builtin_curve structures are filled with the data of the first + * nitems internal groups + */ +size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); + +const char *EC_curve_nid2nist(int nid); +int EC_curve_nist2nid(const char *name); +int EC_GROUP_check_named_curve(const EC_GROUP *group, int nist_only, + BN_CTX *ctx); + +/********************************************************************/ +/* 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); + +/** 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); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Returns the EC_METHOD used in EC_POINT object + * \param point EC_POINT object + * \return the EC_METHOD used + */ +OSSL_DEPRECATEDIN_3_0 const EC_METHOD *EC_POINT_method_of(const 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_Jprojective_coordinates_GFp + (const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BIGNUM *z, BN_CTX *ctx); +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Sets the affine coordinates of an EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_affine_coordinates_GFp + (const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_affine_coordinates_GFp + (const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** Sets the x9.62 compressed coordinates of a EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, + BN_CTX *ctx); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_compressed_coordinates_GFp + (const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, BN_CTX *ctx); +# ifndef OPENSSL_NO_EC2M +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_affine_coordinates_GF2m + (const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_get_affine_coordinates_GF2m + (const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +OSSL_DEPRECATEDIN_3_0 int EC_POINT_set_compressed_coordinates_GF2m + (const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, BN_CTX *ctx); +# endif +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** 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: */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 BIGNUM *EC_POINT_point2bn(const EC_GROUP *, + const EC_POINT *, + point_conversion_form_t form, + BIGNUM *, BN_CTX *); +OSSL_DEPRECATEDIN_3_0 EC_POINT *EC_POINT_bn2point(const EC_GROUP *, + const BIGNUM *, + EC_POINT *, BN_CTX *); +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +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); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EC_POINT_make_affine(const EC_GROUP *group, + EC_POINT *point, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 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); +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/** 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); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/** 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 int EC_GROUP_have_precompute_mult(const EC_GROUP *group); +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/********************************************************************/ +/* 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 + +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(EC_GROUP, i2d_ECPKParameters, bp, x) +# define d2i_ECPKParameters_fp(fp,x) \ + (EC_GROUP *)ASN1_d2i_fp(NULL, (d2i_of_void *)d2i_ECPKParameters, (fp), \ + (void **)(x)) +# define i2d_ECPKParameters_fp(fp,x) \ + ASN1_i2d_fp((i2d_of_void *)i2d_ECPKParameters, (fp), (void *)(x)) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ECPKParameters_print(BIO *bp, const EC_GROUP *x, + int off); +# ifndef OPENSSL_NO_STDIO +OSSL_DEPRECATEDIN_3_0 int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, + int off); +# endif +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/********************************************************************/ +/* 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_SM2_RANGE 0x0004 +# define EC_FLAG_COFACTOR_ECDH 0x1000 +# define EC_FLAG_CHECK_NAMED_GROUP 0x2000 +# define EC_FLAG_CHECK_NAMED_GROUP_NIST 0x4000 +# define EC_FLAG_CHECK_NAMED_GROUP_MASK \ + (EC_FLAG_CHECK_NAMED_GROUP | EC_FLAG_CHECK_NAMED_GROUP_NIST) + +/* Deprecated flags - it was using 0x01..0x02 */ +# define EC_FLAG_NON_FIPS_ALLOW 0x0000 +# define EC_FLAG_FIPS_CHECKED 0x0000 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/** + * Creates a new EC_KEY object. + * \param ctx The library context for to use for this EC_KEY. May be NULL in + * which case the default library context is used. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_ex(OSSL_LIB_CTX *ctx, const char *propq); + +/** + * Creates a new EC_KEY object. Same as calling EC_KEY_new_ex with a + * NULL library context + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new(void); + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_get_flags(const EC_KEY *key); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_flags(EC_KEY *key, int flags); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_clear_flags(EC_KEY *key, int flags); + +OSSL_DEPRECATEDIN_3_0 int EC_KEY_decoded_from_explicit_params(const EC_KEY *key); + +/** + * Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. + * \param ctx The library context for to use for this EC_KEY. May be NULL in + * which case the default library context is used. + * \param propq Any property query string + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_by_curve_name_ex(OSSL_LIB_CTX *ctx, + const char *propq, + int nid); + +/** + * Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. Same as calling EC_KEY_new_by_curve_name_ex with a NULL + * library context and property query string. + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_by_curve_name(int nid); + +/** Frees a EC_KEY object. + * \param key EC_KEY object to be freed. + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_up_ref(EC_KEY *key); + +/** Returns the ENGINE object of a EC_KEY object + * \param eckey EC_KEY object + * \return the ENGINE object (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 ENGINE *EC_KEY_get0_engine(const EC_KEY *eckey); + +/** Returns the EC_GROUP object of a EC_KEY object + * \param key EC_KEY object + * \return the EC_GROUP object (possibly NULL). + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 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). + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 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) + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + +OSSL_DEPRECATEDIN_3_0 unsigned EC_KEY_get_enc_flags(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); +OSSL_DEPRECATEDIN_3_0 point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_conv_form(EC_KEY *eckey, + point_conversion_form_t cform); +# endif /*OPENSSL_NO_DEPRECATED_3_0 */ + +# 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) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_ex_data(EC_KEY *key, int idx, void *arg); +OSSL_DEPRECATEDIN_3_0 void *EC_KEY_get_ex_data(const EC_KEY *key, int idx); + +/* wrapper functions for the underlying EC_GROUP object */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ + +OSSL_DEPRECATEDIN_3_0 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 + */ + +OSSL_DEPRECATEDIN_3_0 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 + */ + +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey(const 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. + */ +OSSL_DEPRECATEDIN_3_0 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. + */ +OSSL_DEPRECATEDIN_3_0 int i2d_ECParameters(const EC_KEY *key, + unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC public key */ +/* (octet string, not DER -- hence 'o2i' and 'i2o') */ +/********************************************************************/ + +/** Decodes an 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. + */ +OSSL_DEPRECATEDIN_3_0 EC_KEY *o2i_ECPublicKey(EC_KEY **key, + const unsigned char **in, long len); + +/** Encodes an 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); +# endif /* OPENSSL_NO_STDIO */ + +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_OpenSSL(void); +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_get_default_method(void); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_set_default_method(const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); +OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_method(ENGINE *engine); + +/** The old name for ecdh_KDF_X9_63 + * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +OSSL_DEPRECATEDIN_3_0 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); + +OSSL_DEPRECATEDIN_3_0 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)); +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +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); + +/** i2d_ECDSA_SIG encodes content of ECDSA_SIG (note: this function modifies *pp + * (*pp += length of the DER encoded signature)). + * \param sig pointer to the ECDSA_SIG object + * \param pp pointer to a unsigned char pointer for the output or NULL + * \return the length of the DER encoded ECDSA_SIG object or a negative value + * on error + */ +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ECDSA_SIG, ECDSA_SIG) + +/** d2i_ECDSA_SIG decodes an ECDSA signature (note: this function modifies *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) + */ + +/** Accessor for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param pr pointer to BIGNUM pointer for r (may be NULL) + * \param ps pointer to BIGNUM pointer for s (may be NULL) + */ +void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); + +/** Accessor for r field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_r(const ECDSA_SIG *sig); + +/** Accessor for s field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_s(const ECDSA_SIG *sig); + +/** Setter for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param r pointer to BIGNUM for r + * \param s pointer to BIGNUM for s + */ +int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/** 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 int ECDSA_size(const EC_KEY *eckey); + +/********************************************************************/ +/* EC_KEY_METHOD constructors, destructors, writers and accessors */ +/********************************************************************/ + +OSSL_DEPRECATEDIN_3_0 EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_free(EC_KEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 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)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth, + int (*keygen)(EC_KEY *key)); + +OSSL_DEPRECATEDIN_3_0 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)); + +OSSL_DEPRECATEDIN_3_0 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)); + +OSSL_DEPRECATEDIN_3_0 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)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_init + (const EC_KEY_METHOD *meth, + int (**pinit)(EC_KEY *key), + void (**pfinish)(EC_KEY *key), + int (**pcopy)(EC_KEY *dest, const EC_KEY *src), + int (**pset_group)(EC_KEY *key, const EC_GROUP *grp), + int (**pset_private)(EC_KEY *key, const BIGNUM *priv_key), + int (**pset_public)(EC_KEY *key, const EC_POINT *pub_key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_keygen + (const EC_KEY_METHOD *meth, int (**pkeygen)(EC_KEY *key)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_compute_key + (const EC_KEY_METHOD *meth, + int (**pck)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_sign + (const EC_KEY_METHOD *meth, + int (**psign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(**psign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +OSSL_DEPRECATEDIN_3_0 void EC_KEY_METHOD_get_verify + (const EC_KEY_METHOD *meth, + int (**pverify)(int type, const unsigned + char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (**pverify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +# define EVP_EC_gen(curve) \ + EVP_PKEY_Q_keygen(NULL, NULL, "EC", (char *)(strstr(curve, ""))) + /* strstr is used to enable type checking for the variadic string arg */ +# 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 + +# endif +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/ecdh.h b/include/openssl/ecdh.h new file mode 100644 index 0000000..56bd4cc --- /dev/null +++ b/include/openssl/ecdh.h @@ -0,0 +1,10 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with 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/include/openssl/ecdsa.h b/include/openssl/ecdsa.h new file mode 100644 index 0000000..56bd4cc --- /dev/null +++ b/include/openssl/ecdsa.h @@ -0,0 +1,10 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with 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/include/openssl/ecerr.h b/include/openssl/ecerr.h new file mode 100644 index 0000000..f15f91f --- /dev/null +++ b/include/openssl/ecerr.h @@ -0,0 +1,104 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_ECERR_H +# define OPENSSL_ECERR_H +# pragma once + +# include +# include +# include + + +# ifndef OPENSSL_NO_EC + + +/* + * EC reason codes. + */ +# define EC_R_ASN1_ERROR 115 +# define EC_R_BAD_SIGNATURE 156 +# define EC_R_BIGNUM_OUT_OF_RANGE 144 +# define EC_R_BUFFER_TOO_SMALL 100 +# define EC_R_CANNOT_INVERT 165 +# define EC_R_COORDINATES_OUT_OF_RANGE 146 +# define EC_R_CURVE_DOES_NOT_SUPPORT_ECDH 160 +# define EC_R_CURVE_DOES_NOT_SUPPORT_ECDSA 170 +# define EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING 159 +# 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_EXPLICIT_PARAMS_NOT_SUPPORTED 127 +# define EC_R_FAILED_MAKING_PUBLIC_KEY 166 +# 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_A 168 +# define EC_R_INVALID_ARGUMENT 112 +# define EC_R_INVALID_B 169 +# define EC_R_INVALID_COFACTOR 171 +# 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_GENERATOR 173 +# define EC_R_INVALID_GROUP_ORDER 122 +# define EC_R_INVALID_KEY 116 +# define EC_R_INVALID_LENGTH 117 +# define EC_R_INVALID_NAMED_GROUP_CONVERSION 174 +# define EC_R_INVALID_OUTPUT_LENGTH 161 +# define EC_R_INVALID_P 172 +# 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_SEED 175 +# define EC_R_INVALID_TRINOMIAL_BASIS 137 +# define EC_R_KDF_PARAMETER_ERROR 148 +# define EC_R_KEYS_NOT_SET 140 +# define EC_R_LADDER_POST_FAILURE 136 +# define EC_R_LADDER_PRE_FAILURE 153 +# define EC_R_LADDER_STEP_FAILURE 162 +# define EC_R_MISSING_OID 167 +# define EC_R_MISSING_PARAMETERS 124 +# define EC_R_MISSING_PRIVATE_KEY 125 +# define EC_R_NEED_NEW_SETUP_VALUES 157 +# define EC_R_NOT_A_NIST_PRIME 135 +# define EC_R_NOT_IMPLEMENTED 126 +# define EC_R_NOT_INITIALIZED 111 +# define EC_R_NO_PARAMETERS_SET 139 +# define EC_R_NO_PRIVATE_VALUE 154 +# define EC_R_OPERATION_NOT_SUPPORTED 152 +# define EC_R_PASSED_NULL_PARAMETER 134 +# define EC_R_PEER_KEY_ERROR 149 +# define EC_R_POINT_ARITHMETIC_FAILURE 155 +# define EC_R_POINT_AT_INFINITY 106 +# define EC_R_POINT_COORDINATES_BLIND_FAILURE 163 +# define EC_R_POINT_IS_NOT_ON_CURVE 107 +# define EC_R_RANDOM_NUMBER_GENERATION_FAILED 158 +# define EC_R_SHARED_INFO_ERROR 150 +# define EC_R_SLOT_FULL 108 +# define EC_R_TOO_MANY_RETRIES 176 +# define EC_R_UNDEFINED_GENERATOR 113 +# define EC_R_UNDEFINED_ORDER 128 +# define EC_R_UNKNOWN_COFACTOR 164 +# define EC_R_UNKNOWN_GROUP 129 +# define EC_R_UNKNOWN_ORDER 114 +# define EC_R_UNSUPPORTED_FIELD 131 +# define EC_R_WRONG_CURVE_PARAMETERS 145 +# define EC_R_WRONG_ORDER 130 + +# endif +#endif diff --git a/include/openssl/encoder.h b/include/openssl/encoder.h new file mode 100644 index 0000000..c37a6f1 --- /dev/null +++ b/include/openssl/encoder.h @@ -0,0 +1,124 @@ +/* + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_ENCODER_H +# define OPENSSL_ENCODER_H +# pragma once + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +OSSL_ENCODER *OSSL_ENCODER_fetch(OSSL_LIB_CTX *libctx, const char *name, + const char *properties); +int OSSL_ENCODER_up_ref(OSSL_ENCODER *encoder); +void OSSL_ENCODER_free(OSSL_ENCODER *encoder); + +const OSSL_PROVIDER *OSSL_ENCODER_get0_provider(const OSSL_ENCODER *encoder); +const char *OSSL_ENCODER_get0_properties(const OSSL_ENCODER *encoder); +const char *OSSL_ENCODER_get0_name(const OSSL_ENCODER *kdf); +const char *OSSL_ENCODER_get0_description(const OSSL_ENCODER *kdf); +int OSSL_ENCODER_is_a(const OSSL_ENCODER *encoder, const char *name); + +void OSSL_ENCODER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(OSSL_ENCODER *encoder, void *arg), + void *arg); +int OSSL_ENCODER_names_do_all(const OSSL_ENCODER *encoder, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *OSSL_ENCODER_gettable_params(OSSL_ENCODER *encoder); +int OSSL_ENCODER_get_params(OSSL_ENCODER *encoder, OSSL_PARAM params[]); + +const OSSL_PARAM *OSSL_ENCODER_settable_ctx_params(OSSL_ENCODER *encoder); +OSSL_ENCODER_CTX *OSSL_ENCODER_CTX_new(void); +int OSSL_ENCODER_CTX_set_params(OSSL_ENCODER_CTX *ctx, + const OSSL_PARAM params[]); +void OSSL_ENCODER_CTX_free(OSSL_ENCODER_CTX *ctx); + +/* Utilities that help set specific parameters */ +int OSSL_ENCODER_CTX_set_passphrase(OSSL_ENCODER_CTX *ctx, + const unsigned char *kstr, size_t klen); +int OSSL_ENCODER_CTX_set_pem_password_cb(OSSL_ENCODER_CTX *ctx, + pem_password_cb *cb, void *cbarg); +int OSSL_ENCODER_CTX_set_passphrase_cb(OSSL_ENCODER_CTX *ctx, + OSSL_PASSPHRASE_CALLBACK *cb, + void *cbarg); +int OSSL_ENCODER_CTX_set_passphrase_ui(OSSL_ENCODER_CTX *ctx, + const UI_METHOD *ui_method, + void *ui_data); +int OSSL_ENCODER_CTX_set_cipher(OSSL_ENCODER_CTX *ctx, + const char *cipher_name, + const char *propquery); +int OSSL_ENCODER_CTX_set_selection(OSSL_ENCODER_CTX *ctx, int selection); +int OSSL_ENCODER_CTX_set_output_type(OSSL_ENCODER_CTX *ctx, + const char *output_type); +int OSSL_ENCODER_CTX_set_output_structure(OSSL_ENCODER_CTX *ctx, + const char *output_structure); + +/* Utilities to add encoders */ +int OSSL_ENCODER_CTX_add_encoder(OSSL_ENCODER_CTX *ctx, OSSL_ENCODER *encoder); +int OSSL_ENCODER_CTX_add_extra(OSSL_ENCODER_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_ENCODER_CTX_get_num_encoders(OSSL_ENCODER_CTX *ctx); + +typedef struct ossl_encoder_instance_st OSSL_ENCODER_INSTANCE; +OSSL_ENCODER * +OSSL_ENCODER_INSTANCE_get_encoder(OSSL_ENCODER_INSTANCE *encoder_inst); +void * +OSSL_ENCODER_INSTANCE_get_encoder_ctx(OSSL_ENCODER_INSTANCE *encoder_inst); +const char * +OSSL_ENCODER_INSTANCE_get_output_type(OSSL_ENCODER_INSTANCE *encoder_inst); +const char * +OSSL_ENCODER_INSTANCE_get_output_structure(OSSL_ENCODER_INSTANCE *encoder_inst); + +typedef const void *OSSL_ENCODER_CONSTRUCT(OSSL_ENCODER_INSTANCE *encoder_inst, + void *construct_data); +typedef void OSSL_ENCODER_CLEANUP(void *construct_data); + +int OSSL_ENCODER_CTX_set_construct(OSSL_ENCODER_CTX *ctx, + OSSL_ENCODER_CONSTRUCT *construct); +int OSSL_ENCODER_CTX_set_construct_data(OSSL_ENCODER_CTX *ctx, + void *construct_data); +int OSSL_ENCODER_CTX_set_cleanup(OSSL_ENCODER_CTX *ctx, + OSSL_ENCODER_CLEANUP *cleanup); + +/* Utilities to output the object to encode */ +int OSSL_ENCODER_to_bio(OSSL_ENCODER_CTX *ctx, BIO *out); +#ifndef OPENSSL_NO_STDIO +int OSSL_ENCODER_to_fp(OSSL_ENCODER_CTX *ctx, FILE *fp); +#endif +int OSSL_ENCODER_to_data(OSSL_ENCODER_CTX *ctx, unsigned char **pdata, + size_t *pdata_len); + +/* + * Create the OSSL_ENCODER_CTX with an associated type. This will perform + * an implicit OSSL_ENCODER_fetch(), suitable for the object of that type. + * This is more useful than calling OSSL_ENCODER_CTX_new(). + */ +OSSL_ENCODER_CTX *OSSL_ENCODER_CTX_new_for_pkey(const EVP_PKEY *pkey, + int selection, + const char *output_type, + const char *output_struct, + const char *propquery); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/encodererr.h b/include/openssl/encodererr.h new file mode 100644 index 0000000..5e318b1 --- /dev/null +++ b/include/openssl/encodererr.h @@ -0,0 +1,28 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_ENCODERERR_H +# define OPENSSL_ENCODERERR_H +# pragma once + +# include +# include +# include + + + +/* + * OSSL_ENCODER reason codes. + */ +# define OSSL_ENCODER_R_ENCODER_NOT_FOUND 101 +# define OSSL_ENCODER_R_INCORRECT_PROPERTY_QUERY 100 +# define OSSL_ENCODER_R_MISSING_GET_PARAMS 102 + +#endif diff --git a/include/openssl/engine.h b/include/openssl/engine.h new file mode 100644 index 0000000..2fbc82c --- /dev/null +++ b/include/openssl/engine.h @@ -0,0 +1,833 @@ +/* + * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_ENGINE_H +# define OPENSSL_ENGINE_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_ENGINE_H +# endif + +# include + +# ifndef OPENSSL_NO_ENGINE +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# include +# include +# include +# include +# include +# include +# include +# include +# endif +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* + * These flags are used to control combinations of algorithm (methods) by + * bitwise "OR"ing. + */ +# define ENGINE_METHOD_RSA (unsigned int)0x0001 +# define ENGINE_METHOD_DSA (unsigned int)0x0002 +# define ENGINE_METHOD_DH (unsigned int)0x0004 +# define ENGINE_METHOD_RAND (unsigned int)0x0008 +# define ENGINE_METHOD_CIPHERS (unsigned int)0x0040 +# define ENGINE_METHOD_DIGESTS (unsigned int)0x0080 +# define ENGINE_METHOD_PKEY_METHS (unsigned int)0x0200 +# define ENGINE_METHOD_PKEY_ASN1_METHS (unsigned int)0x0400 +# define ENGINE_METHOD_EC (unsigned int)0x0800 +/* Obvious all-or-nothing cases. */ +# define ENGINE_METHOD_ALL (unsigned int)0xFFFF +# define ENGINE_METHOD_NONE (unsigned int)0x0000 + +/* + * This(ese) flag(s) controls behaviour of the ENGINE_TABLE mechanism used + * internally to control registration of ENGINE implementations, and can be + * set by ENGINE_set_table_flags(). The "NOINIT" flag prevents attempts to + * initialise registered ENGINEs if they are not already initialised. + */ +# define ENGINE_TABLE_FLAG_NOINIT (unsigned int)0x0001 + +/* ENGINE flags that can be set by ENGINE_set_flags(). */ +/* Not used */ +/* #define ENGINE_FLAGS_MALLOCED 0x0001 */ + +/* + * This flag is for ENGINEs that wish to handle the various 'CMD'-related + * control commands on their own. Without this flag, ENGINE_ctrl() handles + * these control commands on behalf of the ENGINE using their "cmd_defns" + * data. + */ +# define ENGINE_FLAGS_MANUAL_CMD_CTRL (int)0x0002 + +/* + * This flag is for ENGINEs who return new duplicate structures when found + * via "ENGINE_by_id()". When an ENGINE must store state (eg. if + * ENGINE_ctrl() commands are called in sequence as part of some stateful + * process like key-generation setup and execution), it can set this flag - + * then each attempt to obtain the ENGINE will result in it being copied into + * a new structure. Normally, ENGINEs don't declare this flag so + * ENGINE_by_id() just increments the existing ENGINE's structural reference + * count. + */ +# define ENGINE_FLAGS_BY_ID_COPY (int)0x0004 + +/* + * This flag if for an ENGINE that does not want its methods registered as + * part of ENGINE_register_all_complete() for example if the methods are not + * usable as default methods. + */ + +# define ENGINE_FLAGS_NO_REGISTER_ALL (int)0x0008 + +/* + * ENGINEs can support their own command types, and these flags are used in + * ENGINE_CTRL_GET_CMD_FLAGS to indicate to the caller what kind of input + * each command expects. Currently only numeric and string input is + * supported. If a control command supports none of the _NUMERIC, _STRING, or + * _NO_INPUT options, then it is regarded as an "internal" control command - + * and not for use in config setting situations. As such, they're not + * available to the ENGINE_ctrl_cmd_string() function, only raw ENGINE_ctrl() + * access. Changes to this list of 'command types' should be reflected + * carefully in ENGINE_cmd_is_executable() and ENGINE_ctrl_cmd_string(). + */ + +/* accepts a 'long' input value (3rd parameter to ENGINE_ctrl) */ +# define ENGINE_CMD_FLAG_NUMERIC (unsigned int)0x0001 +/* + * accepts string input (cast from 'void*' to 'const char *', 4th parameter + * to ENGINE_ctrl) + */ +# define ENGINE_CMD_FLAG_STRING (unsigned int)0x0002 +/* + * Indicates that the control command takes *no* input. Ie. the control + * command is unparameterised. + */ +# define ENGINE_CMD_FLAG_NO_INPUT (unsigned int)0x0004 +/* + * Indicates that the control command is internal. This control command won't + * be shown in any output, and is only usable through the ENGINE_ctrl_cmd() + * function. + */ +# define ENGINE_CMD_FLAG_INTERNAL (unsigned int)0x0008 + +/* + * NB: These 3 control commands are deprecated and should not be used. + * ENGINEs relying on these commands should compile conditional support for + * compatibility (eg. if these symbols are defined) but should also migrate + * the same functionality to their own ENGINE-specific control functions that + * can be "discovered" by calling applications. The fact these control + * commands wouldn't be "executable" (ie. usable by text-based config) + * doesn't change the fact that application code can find and use them + * without requiring per-ENGINE hacking. + */ + +/* + * These flags are used to tell the ctrl function what should be done. All + * command numbers are shared between all engines, even if some don't make + * sense to some engines. In such a case, they do nothing but return the + * error ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED. + */ +# define ENGINE_CTRL_SET_LOGSTREAM 1 +# define ENGINE_CTRL_SET_PASSWORD_CALLBACK 2 +# define ENGINE_CTRL_HUP 3/* Close and reinitialise + * any handles/connections + * etc. */ +# define ENGINE_CTRL_SET_USER_INTERFACE 4/* Alternative to callback */ +# define ENGINE_CTRL_SET_CALLBACK_DATA 5/* User-specific data, used + * when calling the password + * callback and the user + * interface */ +# define ENGINE_CTRL_LOAD_CONFIGURATION 6/* Load a configuration, + * given a string that + * represents a file name + * or so */ +# define ENGINE_CTRL_LOAD_SECTION 7/* Load data from a given + * section in the already + * loaded configuration */ + +/* + * These control commands allow an application to deal with an arbitrary + * engine in a dynamic way. Warn: Negative return values indicate errors FOR + * THESE COMMANDS because zero is used to indicate 'end-of-list'. Other + * commands, including ENGINE-specific command types, return zero for an + * error. An ENGINE can choose to implement these ctrl functions, and can + * internally manage things however it chooses - it does so by setting the + * ENGINE_FLAGS_MANUAL_CMD_CTRL flag (using ENGINE_set_flags()). Otherwise + * the ENGINE_ctrl() code handles this on the ENGINE's behalf using the + * cmd_defns data (set using ENGINE_set_cmd_defns()). This means an ENGINE's + * ctrl() handler need only implement its own commands - the above "meta" + * commands will be taken care of. + */ + +/* + * Returns non-zero if the supplied ENGINE has a ctrl() handler. If "not", + * then all the remaining control commands will return failure, so it is + * worth checking this first if the caller is trying to "discover" the + * engine's capabilities and doesn't want errors generated unnecessarily. + */ +# define ENGINE_CTRL_HAS_CTRL_FUNCTION 10 +/* + * Returns a positive command number for the first command supported by the + * engine. Returns zero if no ctrl commands are supported. + */ +# define ENGINE_CTRL_GET_FIRST_CMD_TYPE 11 +/* + * The 'long' argument specifies a command implemented by the engine, and the + * return value is the next command supported, or zero if there are no more. + */ +# define ENGINE_CTRL_GET_NEXT_CMD_TYPE 12 +/* + * The 'void*' argument is a command name (cast from 'const char *'), and the + * return value is the command that corresponds to it. + */ +# define ENGINE_CTRL_GET_CMD_FROM_NAME 13 +/* + * The next two allow a command to be converted into its corresponding string + * form. In each case, the 'long' argument supplies the command. In the + * NAME_LEN case, the return value is the length of the command name (not + * counting a trailing EOL). In the NAME case, the 'void*' argument must be a + * string buffer large enough, and it will be populated with the name of the + * command (WITH a trailing EOL). + */ +# define ENGINE_CTRL_GET_NAME_LEN_FROM_CMD 14 +# define ENGINE_CTRL_GET_NAME_FROM_CMD 15 +/* The next two are similar but give a "short description" of a command. */ +# define ENGINE_CTRL_GET_DESC_LEN_FROM_CMD 16 +# define ENGINE_CTRL_GET_DESC_FROM_CMD 17 +/* + * With this command, the return value is the OR'd combination of + * ENGINE_CMD_FLAG_*** values that indicate what kind of input a given + * engine-specific ctrl command expects. + */ +# define ENGINE_CTRL_GET_CMD_FLAGS 18 + +/* + * ENGINE implementations should start the numbering of their own control + * commands from this value. (ie. ENGINE_CMD_BASE, ENGINE_CMD_BASE + 1, etc). + */ +# define ENGINE_CMD_BASE 200 + +/* + * NB: These 2 nCipher "chil" control commands are deprecated, and their + * functionality is now available through ENGINE-specific control commands + * (exposed through the above-mentioned 'CMD'-handling). Code using these 2 + * commands should be migrated to the more general command handling before + * these are removed. + */ + +/* Flags specific to the nCipher "chil" engine */ +# define ENGINE_CTRL_CHIL_SET_FORKCHECK 100 + /* + * Depending on the value of the (long)i argument, this sets or + * unsets the SimpleForkCheck flag in the CHIL API to enable or + * disable checking and workarounds for applications that fork(). + */ +# define ENGINE_CTRL_CHIL_NO_LOCKING 101 + /* + * This prevents the initialisation function from providing mutex + * callbacks to the nCipher library. + */ + +/* + * If an ENGINE supports its own specific control commands and wishes the + * framework to handle the above 'ENGINE_CMD_***'-manipulation commands on + * its behalf, it should supply a null-terminated array of ENGINE_CMD_DEFN + * entries to ENGINE_set_cmd_defns(). It should also implement a ctrl() + * handler that supports the stated commands (ie. the "cmd_num" entries as + * described by the array). NB: The array must be ordered in increasing order + * of cmd_num. "null-terminated" means that the last ENGINE_CMD_DEFN element + * has cmd_num set to zero and/or cmd_name set to NULL. + */ +typedef struct ENGINE_CMD_DEFN_st { + unsigned int cmd_num; /* The command number */ + const char *cmd_name; /* The command name itself */ + const char *cmd_desc; /* A short description of the command */ + unsigned int cmd_flags; /* The input the command expects */ +} ENGINE_CMD_DEFN; + +/* Generic function pointer */ +typedef int (*ENGINE_GEN_FUNC_PTR) (void); +/* Generic function pointer taking no arguments */ +typedef int (*ENGINE_GEN_INT_FUNC_PTR) (ENGINE *); +/* Specific control function pointer */ +typedef int (*ENGINE_CTRL_FUNC_PTR) (ENGINE *, int, long, void *, + void (*f) (void)); +/* Generic load_key function pointer */ +typedef EVP_PKEY *(*ENGINE_LOAD_KEY_PTR)(ENGINE *, const char *, + UI_METHOD *ui_method, + void *callback_data); +typedef int (*ENGINE_SSL_CLIENT_CERT_PTR) (ENGINE *, SSL *ssl, + STACK_OF(X509_NAME) *ca_dn, + X509 **pcert, EVP_PKEY **pkey, + STACK_OF(X509) **pother, + UI_METHOD *ui_method, + void *callback_data); +/*- + * These callback types are for an ENGINE's handler for cipher and digest logic. + * These handlers have these prototypes; + * int foo(ENGINE *e, const EVP_CIPHER **cipher, const int **nids, int nid); + * int foo(ENGINE *e, const EVP_MD **digest, const int **nids, int nid); + * Looking at how to implement these handlers in the case of cipher support, if + * the framework wants the EVP_CIPHER for 'nid', it will call; + * foo(e, &p_evp_cipher, NULL, nid); (return zero for failure) + * If the framework wants a list of supported 'nid's, it will call; + * foo(e, NULL, &p_nids, 0); (returns number of 'nids' or -1 for error) + */ +/* + * Returns to a pointer to the array of supported cipher 'nid's. If the + * second parameter is non-NULL it is set to the size of the returned array. + */ +typedef int (*ENGINE_CIPHERS_PTR) (ENGINE *, const EVP_CIPHER **, + const int **, int); +typedef int (*ENGINE_DIGESTS_PTR) (ENGINE *, const EVP_MD **, const int **, + int); +typedef int (*ENGINE_PKEY_METHS_PTR) (ENGINE *, EVP_PKEY_METHOD **, + const int **, int); +typedef int (*ENGINE_PKEY_ASN1_METHS_PTR) (ENGINE *, EVP_PKEY_ASN1_METHOD **, + const int **, int); +/* + * STRUCTURE functions ... all of these functions deal with pointers to + * ENGINE structures where the pointers have a "structural reference". This + * means that their reference is to allowed access to the structure but it + * does not imply that the structure is functional. To simply increment or + * decrement the structural reference count, use ENGINE_by_id and + * ENGINE_free. NB: This is not required when iterating using ENGINE_get_next + * as it will automatically decrement the structural reference count of the + * "current" ENGINE and increment the structural reference count of the + * ENGINE it returns (unless it is NULL). + */ + +/* Get the first/last "ENGINE" type available. */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_first(void); +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_last(void); +# endif +/* Iterate to the next/previous "ENGINE" type (NULL = end of the list). */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_next(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_prev(ENGINE *e); +# endif +/* Add another "ENGINE" type into the array. */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ENGINE_add(ENGINE *e); +# endif +/* Remove an existing "ENGINE" type from the array. */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ENGINE_remove(ENGINE *e); +# endif +/* Retrieve an engine from the list by its unique "id" value. */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_by_id(const char *id); +# endif + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# 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 +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void ENGINE_load_builtin_engines(void); +# endif + +/* + * Get and set global flags (ENGINE_TABLE_FLAG_***) for the implementation + * "registry" handling. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 unsigned int ENGINE_get_table_flags(void); +OSSL_DEPRECATEDIN_3_0 void ENGINE_set_table_flags(unsigned int flags); +# endif + +/*- 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. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ENGINE_register_RSA(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_RSA(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_RSA(void); +OSSL_DEPRECATEDIN_3_0 int ENGINE_register_DSA(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_DSA(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_DSA(void); +OSSL_DEPRECATEDIN_3_0 int ENGINE_register_EC(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_EC(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_EC(void); +OSSL_DEPRECATEDIN_3_0 int ENGINE_register_DH(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_DH(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_DH(void); +OSSL_DEPRECATEDIN_3_0 int ENGINE_register_RAND(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_RAND(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_RAND(void); +OSSL_DEPRECATEDIN_3_0 int ENGINE_register_ciphers(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_ciphers(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_ciphers(void); +OSSL_DEPRECATEDIN_3_0 int ENGINE_register_digests(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_digests(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_digests(void); +OSSL_DEPRECATEDIN_3_0 int ENGINE_register_pkey_meths(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_pkey_meths(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_pkey_meths(void); +OSSL_DEPRECATEDIN_3_0 int ENGINE_register_pkey_asn1_meths(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_unregister_pkey_asn1_meths(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 void ENGINE_register_all_pkey_asn1_meths(void); +# endif + +/* + * 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. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ENGINE_register_complete(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 int ENGINE_register_all_complete(void); +# endif + +/* + * Send parameterised control commands to the engine. The possibilities to + * send down an integer, a pointer to data or a function pointer are + * provided. Any of the parameters may or may not be NULL, depending on the + * command number. In actuality, this function only requires a structural + * (rather than functional) reference to an engine, but many control commands + * may require the engine be functional. The caller should be aware of trying + * commands that require an operational ENGINE, and only use functional + * references in such situations. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, + void (*f) (void)); +# endif + +/* + * 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(). + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ENGINE_cmd_is_executable(ENGINE *e, int cmd); +# endif + +/* + * 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. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ENGINE_ctrl_cmd(ENGINE *e, const char *cmd_name, + long i, void *p, void (*f) (void), + int cmd_optional); +# endif + +/* + * 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. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int ENGINE_ctrl_cmd_string(ENGINE *e, const char *cmd_name, const char *arg, + int cmd_optional); +# endif + +/* + * 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! + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_new(void); +OSSL_DEPRECATEDIN_3_0 int ENGINE_free(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 int ENGINE_up_ref(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_id(ENGINE *e, const char *id); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_name(ENGINE *e, const char *name); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_RSA(ENGINE *e, const RSA_METHOD *rsa_meth); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_DSA(ENGINE *e, const DSA_METHOD *dsa_meth); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_EC(ENGINE *e, const EC_KEY_METHOD *ecdsa_meth); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_DH(ENGINE *e, const DH_METHOD *dh_meth); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_RAND(ENGINE *e, const RAND_METHOD *rand_meth); +OSSL_DEPRECATEDIN_3_0 +int ENGINE_set_destroy_function(ENGINE *e,ENGINE_GEN_INT_FUNC_PTR destroy_f); +OSSL_DEPRECATEDIN_3_0 +int ENGINE_set_init_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR init_f); +OSSL_DEPRECATEDIN_3_0 +int ENGINE_set_finish_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR finish_f); +OSSL_DEPRECATEDIN_3_0 +int ENGINE_set_ctrl_function(ENGINE *e, ENGINE_CTRL_FUNC_PTR ctrl_f); +OSSL_DEPRECATEDIN_3_0 +int ENGINE_set_load_privkey_function(ENGINE *e, ENGINE_LOAD_KEY_PTR loadpriv_f); +OSSL_DEPRECATEDIN_3_0 +int ENGINE_set_load_pubkey_function(ENGINE *e, ENGINE_LOAD_KEY_PTR loadpub_f); +OSSL_DEPRECATEDIN_3_0 +int ENGINE_set_load_ssl_client_cert_function(ENGINE *e, + ENGINE_SSL_CLIENT_CERT_PTR loadssl_f); +OSSL_DEPRECATEDIN_3_0 +int ENGINE_set_ciphers(ENGINE *e, ENGINE_CIPHERS_PTR f); +OSSL_DEPRECATEDIN_3_0 +int ENGINE_set_digests(ENGINE *e, ENGINE_DIGESTS_PTR f); +OSSL_DEPRECATEDIN_3_0 +int ENGINE_set_pkey_meths(ENGINE *e, ENGINE_PKEY_METHS_PTR f); +OSSL_DEPRECATEDIN_3_0 +int ENGINE_set_pkey_asn1_meths(ENGINE *e, ENGINE_PKEY_ASN1_METHS_PTR f); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_flags(ENGINE *e, int flags); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_cmd_defns(ENGINE *e, + const ENGINE_CMD_DEFN *defns); +# endif +/* 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) +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_ex_data(ENGINE *e, int idx, void *arg); +OSSL_DEPRECATEDIN_3_0 void *ENGINE_get_ex_data(const ENGINE *e, int idx); +# endif + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* + * 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! + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *ENGINE_get_id(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 const char *ENGINE_get_name(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *ENGINE_get_RSA(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 const DSA_METHOD *ENGINE_get_DSA(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 const EC_KEY_METHOD *ENGINE_get_EC(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 const DH_METHOD *ENGINE_get_DH(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 const RAND_METHOD *ENGINE_get_RAND(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_destroy_function(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_init_function(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_finish_function(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE_CTRL_FUNC_PTR ENGINE_get_ctrl_function(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE_LOAD_KEY_PTR ENGINE_get_load_privkey_function(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE_LOAD_KEY_PTR ENGINE_get_load_pubkey_function(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE_SSL_CLIENT_CERT_PTR ENGINE_get_ssl_client_cert_function(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE_CIPHERS_PTR ENGINE_get_ciphers(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE_DIGESTS_PTR ENGINE_get_digests(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE_PKEY_METHS_PTR ENGINE_get_pkey_meths(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE_PKEY_ASN1_METHS_PTR ENGINE_get_pkey_asn1_meths(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +const EVP_CIPHER *ENGINE_get_cipher(ENGINE *e, int nid); +OSSL_DEPRECATEDIN_3_0 +const EVP_MD *ENGINE_get_digest(ENGINE *e, int nid); +OSSL_DEPRECATEDIN_3_0 +const EVP_PKEY_METHOD *ENGINE_get_pkey_meth(ENGINE *e, int nid); +OSSL_DEPRECATEDIN_3_0 +const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth(ENGINE *e, int nid); +OSSL_DEPRECATEDIN_3_0 +const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth_str(ENGINE *e, + const char *str, + int len); +OSSL_DEPRECATEDIN_3_0 +const EVP_PKEY_ASN1_METHOD *ENGINE_pkey_asn1_find_str(ENGINE **pe, + const char *str, int len); +OSSL_DEPRECATEDIN_3_0 +const ENGINE_CMD_DEFN *ENGINE_get_cmd_defns(const ENGINE *e); +OSSL_DEPRECATEDIN_3_0 int ENGINE_get_flags(const ENGINE *e); +# endif + +/* + * 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 an 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. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ENGINE_init(ENGINE *e); +# endif +/* + * Free a functional reference to an engine type. This does not require a + * corresponding call to ENGINE_free as it also releases a structural + * reference. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ENGINE_finish(ENGINE *e); +# endif + +/* + * 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. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id, + UI_METHOD *ui_method, void *callback_data); +OSSL_DEPRECATEDIN_3_0 +EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id, + UI_METHOD *ui_method, void *callback_data); +OSSL_DEPRECATEDIN_3_0 +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); +# endif + +/* + * 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. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_default_RSA(void); +# endif +/* Same for the other "methods" */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_default_DSA(void); +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_default_EC(void); +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_default_DH(void); +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_default_RAND(void); +# endif +/* + * These functions can be used to get a functional reference to perform + * ciphering or digesting corresponding to "nid". + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_cipher_engine(int nid); +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_digest_engine(int nid); +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_pkey_meth_engine(int nid); +OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_get_pkey_asn1_meth_engine(int nid); +# endif + +/* + * 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'. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_RSA(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_string(ENGINE *e, + const char *def_list); +# endif +/* Same for the other "methods" */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_DSA(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_EC(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_DH(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_RAND(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_ciphers(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_digests(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_pkey_meths(ENGINE *e); +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default_pkey_asn1_meths(ENGINE *e); +# endif + +/* + * 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. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default(ENGINE *e, unsigned int flags); +OSSL_DEPRECATEDIN_3_0 void ENGINE_add_conf_module(void); +# endif + +/* Deprecated functions ... */ +/* int ENGINE_clear_defaults(void); */ + +/**************************/ +/* DYNAMIC ENGINE SUPPORT */ +/**************************/ + +/* Binary/behaviour compatibility levels */ +# define OSSL_DYNAMIC_VERSION (unsigned long)0x00030000 +/* + * Binary versions older than this are too old for us (whether we're a loader + * or a loadee) + */ +# define OSSL_DYNAMIC_OLDEST (unsigned long)0x00030000 + +/* + * When compiling an ENGINE entirely as an external shared library, loadable + * by the "dynamic" ENGINE, these types are needed. The 'dynamic_fns' + * structure type provides the calling application's (or library's) error + * functionality and memory management function pointers to the loaded + * library. These should be used/set in the loaded library code so that the + * loading application's 'state' will be used/changed in all operations. The + * 'static_state' pointer allows the loaded library to know if it shares the + * same static data as the calling application (or library), and thus whether + * these callbacks need to be set or not. + */ +typedef void *(*dyn_MEM_malloc_fn) (size_t, const char *, int); +typedef void *(*dyn_MEM_realloc_fn) (void *, size_t, const char *, int); +typedef void (*dyn_MEM_free_fn) (void *, const char *, int); +typedef struct st_dynamic_MEM_fns { + dyn_MEM_malloc_fn malloc_fn; + dyn_MEM_realloc_fn realloc_fn; + dyn_MEM_free_fn free_fn; +} dynamic_MEM_fns; +/* + * FIXME: Perhaps the memory and locking code (crypto.h) should declare and + * use these types so we (and any other dependent code) can simplify a bit?? + */ +/* The top-level structure */ +typedef struct st_dynamic_fns { + void *static_state; + dynamic_MEM_fns mem_fns; +} dynamic_fns; + +/* + * The version checking function should be of this prototype. NB: The + * ossl_version value passed in is the OSSL_DYNAMIC_VERSION of the loading + * code. If this function returns zero, it indicates a (potential) version + * incompatibility and the loaded library doesn't believe it can proceed. + * Otherwise, the returned value is the (latest) version supported by the + * loading library. The loader may still decide that the loaded code's + * version is unsatisfactory and could veto the load. The function is + * expected to be implemented with the symbol name "v_check", and a default + * implementation can be fully instantiated with + * IMPLEMENT_DYNAMIC_CHECK_FN(). + */ +typedef unsigned long (*dynamic_v_check_fn) (unsigned long ossl_version); +# define IMPLEMENT_DYNAMIC_CHECK_FN() \ + OPENSSL_EXPORT unsigned long v_check(unsigned long v); \ + OPENSSL_EXPORT unsigned long v_check(unsigned long v) { \ + if (v >= OSSL_DYNAMIC_OLDEST) return OSSL_DYNAMIC_VERSION; \ + return 0; } + +/* + * This function is passed the ENGINE structure to initialise with its own + * function and command settings. It should not adjust the structural or + * functional reference counts. If this function returns zero, (a) the load + * will be aborted, (b) the previous ENGINE state will be memcpy'd back onto + * the structure, and (c) the shared library will be unloaded. So + * implementations should do their own internal cleanup in failure + * circumstances otherwise they could leak. The 'id' parameter, if non-NULL, + * represents the ENGINE id that the loader is looking for. If this is NULL, + * the shared library can choose to return failure or to initialise a + * 'default' ENGINE. If non-NULL, the shared library must initialise only an + * ENGINE matching the passed 'id'. The function is expected to be + * implemented with the symbol name "bind_engine". A standard implementation + * can be instantiated with IMPLEMENT_DYNAMIC_BIND_FN(fn) where the parameter + * 'fn' is a callback function that populates the ENGINE structure and + * returns an int value (zero for failure). 'fn' should have prototype; + * [static] int fn(ENGINE *e, const char *id); + */ +typedef int (*dynamic_bind_engine) (ENGINE *e, const char *id, + const dynamic_fns *fns); +# define IMPLEMENT_DYNAMIC_BIND_FN(fn) \ + OPENSSL_EXPORT \ + int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns); \ + OPENSSL_EXPORT \ + int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns) { \ + if (ENGINE_get_static_state() == fns->static_state) goto skip_cbs; \ + CRYPTO_set_mem_functions(fns->mem_fns.malloc_fn, \ + fns->mem_fns.realloc_fn, \ + fns->mem_fns.free_fn); \ + OPENSSL_init_crypto(OPENSSL_INIT_NO_ATEXIT, NULL); \ + skip_cbs: \ + if (!fn(e, id)) return 0; \ + return 1; } + +/* + * If the loading application (or library) and the loaded ENGINE library + * share the same static data (eg. they're both dynamically linked to the + * same libcrypto.so) we need a way to avoid trying to set system callbacks - + * this would fail, and for the same reason that it's unnecessary to try. If + * the loaded ENGINE has (or gets from through the loader) its own copy of + * the libcrypto static data, we will need to set the callbacks. The easiest + * way to detect this is to have a function that returns a pointer to some + * static data and let the loading application and loaded ENGINE compare + * their respective values. + */ +void *ENGINE_get_static_state(void); + +# if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void ENGINE_setup_bsd_cryptodev(void); +# endif +# endif + + +# ifdef __cplusplus +} +# endif +# endif /* OPENSSL_NO_ENGINE */ +#endif /* OPENSSL_ENGINE_H */ diff --git a/include/openssl/engineerr.h b/include/openssl/engineerr.h new file mode 100644 index 0000000..d439b68 --- /dev/null +++ b/include/openssl/engineerr.h @@ -0,0 +1,63 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_ENGINEERR_H +# define OPENSSL_ENGINEERR_H +# pragma once + +# include +# include +# include + + +# ifndef OPENSSL_NO_ENGINE + + +/* + * ENGINE reason codes. + */ +# define ENGINE_R_ALREADY_LOADED 100 +# define ENGINE_R_ARGUMENT_IS_NOT_A_NUMBER 133 +# define ENGINE_R_CMD_NOT_EXECUTABLE 134 +# define ENGINE_R_COMMAND_TAKES_INPUT 135 +# define ENGINE_R_COMMAND_TAKES_NO_INPUT 136 +# define ENGINE_R_CONFLICTING_ENGINE_ID 103 +# define ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED 119 +# define ENGINE_R_DSO_FAILURE 104 +# define ENGINE_R_DSO_NOT_FOUND 132 +# define ENGINE_R_ENGINES_SECTION_ERROR 148 +# define ENGINE_R_ENGINE_CONFIGURATION_ERROR 102 +# define ENGINE_R_ENGINE_IS_NOT_IN_LIST 105 +# define ENGINE_R_ENGINE_SECTION_ERROR 149 +# define ENGINE_R_FAILED_LOADING_PRIVATE_KEY 128 +# define ENGINE_R_FAILED_LOADING_PUBLIC_KEY 129 +# define ENGINE_R_FINISH_FAILED 106 +# define ENGINE_R_ID_OR_NAME_MISSING 108 +# define ENGINE_R_INIT_FAILED 109 +# define ENGINE_R_INTERNAL_LIST_ERROR 110 +# define ENGINE_R_INVALID_ARGUMENT 143 +# define ENGINE_R_INVALID_CMD_NAME 137 +# define ENGINE_R_INVALID_CMD_NUMBER 138 +# define ENGINE_R_INVALID_INIT_VALUE 151 +# define ENGINE_R_INVALID_STRING 150 +# define ENGINE_R_NOT_INITIALISED 117 +# define ENGINE_R_NOT_LOADED 112 +# define ENGINE_R_NO_CONTROL_FUNCTION 120 +# define ENGINE_R_NO_INDEX 144 +# define ENGINE_R_NO_LOAD_FUNCTION 125 +# define ENGINE_R_NO_REFERENCE 130 +# define ENGINE_R_NO_SUCH_ENGINE 116 +# define ENGINE_R_UNIMPLEMENTED_CIPHER 146 +# define ENGINE_R_UNIMPLEMENTED_DIGEST 147 +# define ENGINE_R_UNIMPLEMENTED_PUBLIC_KEY_METHOD 101 +# define ENGINE_R_VERSION_INCOMPATIBILITY 145 + +# endif +#endif diff --git a/include/openssl/err.h b/include/openssl/err.h new file mode 100644 index 0000000..2abf248 --- /dev/null +++ b/include/openssl/err.h @@ -0,0 +1,504 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_ERR_H +# define OPENSSL_ERR_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_ERR_H +# endif + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# include +# endif + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_FILENAMES +# define ERR_PUT_error(l,f,r,fn,ln) ERR_put_error(l,f,r,fn,ln) +# else +# define ERR_PUT_error(l,f,r,fn,ln) ERR_put_error(l,f,r,NULL,0) +# endif +# endif + +# include +# include + +# define ERR_TXT_MALLOCED 0x01 +# define ERR_TXT_STRING 0x02 + +# if !defined(OPENSSL_NO_DEPRECATED_3_0) || defined(OSSL_FORCE_ERR_STATE) +# define ERR_FLAG_MARK 0x01 +# define ERR_FLAG_CLEAR 0x02 + +# define ERR_NUM_ERRORS 16 +struct err_state_st { + int err_flags[ERR_NUM_ERRORS]; + int err_marks[ERR_NUM_ERRORS]; + unsigned long err_buffer[ERR_NUM_ERRORS]; + char *err_data[ERR_NUM_ERRORS]; + size_t err_data_size[ERR_NUM_ERRORS]; + int err_data_flags[ERR_NUM_ERRORS]; + char *err_file[ERR_NUM_ERRORS]; + int err_line[ERR_NUM_ERRORS]; + char *err_func[ERR_NUM_ERRORS]; + int top, bottom; +}; +# endif + +/* library */ +# define ERR_LIB_NONE 1 +# define ERR_LIB_SYS 2 +# define ERR_LIB_BN 3 +# define ERR_LIB_RSA 4 +# define ERR_LIB_DH 5 +# define ERR_LIB_EVP 6 +# define ERR_LIB_BUF 7 +# define ERR_LIB_OBJ 8 +# define ERR_LIB_PEM 9 +# define ERR_LIB_DSA 10 +# define ERR_LIB_X509 11 +/* #define ERR_LIB_METH 12 */ +# define ERR_LIB_ASN1 13 +# define ERR_LIB_CONF 14 +# define ERR_LIB_CRYPTO 15 +# define ERR_LIB_EC 16 +# define ERR_LIB_SSL 20 +/* #define ERR_LIB_SSL23 21 */ +/* #define ERR_LIB_SSL2 22 */ +/* #define ERR_LIB_SSL3 23 */ +/* #define ERR_LIB_RSAREF 30 */ +/* #define ERR_LIB_PROXY 31 */ +# define ERR_LIB_BIO 32 +# define ERR_LIB_PKCS7 33 +# define ERR_LIB_X509V3 34 +# define ERR_LIB_PKCS12 35 +# define ERR_LIB_RAND 36 +# define ERR_LIB_DSO 37 +# define ERR_LIB_ENGINE 38 +# define ERR_LIB_OCSP 39 +# define ERR_LIB_UI 40 +# define ERR_LIB_COMP 41 +# define ERR_LIB_ECDSA 42 +# define ERR_LIB_ECDH 43 +# define ERR_LIB_OSSL_STORE 44 +# define ERR_LIB_FIPS 45 +# define ERR_LIB_CMS 46 +# define ERR_LIB_TS 47 +# define ERR_LIB_HMAC 48 +/* # define ERR_LIB_JPAKE 49 */ +# define ERR_LIB_CT 50 +# define ERR_LIB_ASYNC 51 +# define ERR_LIB_KDF 52 +# define ERR_LIB_SM2 53 +# define ERR_LIB_ESS 54 +# define ERR_LIB_PROP 55 +# define ERR_LIB_CRMF 56 +# define ERR_LIB_PROV 57 +# define ERR_LIB_CMP 58 +# define ERR_LIB_OSSL_ENCODER 59 +# define ERR_LIB_OSSL_DECODER 60 +# define ERR_LIB_HTTP 61 + +# define ERR_LIB_USER 128 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define ASN1err(f, r) ERR_raise_data(ERR_LIB_ASN1, (r), NULL) +# define ASYNCerr(f, r) ERR_raise_data(ERR_LIB_ASYNC, (r), NULL) +# define BIOerr(f, r) ERR_raise_data(ERR_LIB_BIO, (r), NULL) +# define BNerr(f, r) ERR_raise_data(ERR_LIB_BN, (r), NULL) +# define BUFerr(f, r) ERR_raise_data(ERR_LIB_BUF, (r), NULL) +# define CMPerr(f, r) ERR_raise_data(ERR_LIB_CMP, (r), NULL) +# define CMSerr(f, r) ERR_raise_data(ERR_LIB_CMS, (r), NULL) +# define COMPerr(f, r) ERR_raise_data(ERR_LIB_COMP, (r), NULL) +# define CONFerr(f, r) ERR_raise_data(ERR_LIB_CONF, (r), NULL) +# define CRMFerr(f, r) ERR_raise_data(ERR_LIB_CRMF, (r), NULL) +# define CRYPTOerr(f, r) ERR_raise_data(ERR_LIB_CRYPTO, (r), NULL) +# define CTerr(f, r) ERR_raise_data(ERR_LIB_CT, (r), NULL) +# define DHerr(f, r) ERR_raise_data(ERR_LIB_DH, (r), NULL) +# define DSAerr(f, r) ERR_raise_data(ERR_LIB_DSA, (r), NULL) +# define DSOerr(f, r) ERR_raise_data(ERR_LIB_DSO, (r), NULL) +# define ECDHerr(f, r) ERR_raise_data(ERR_LIB_ECDH, (r), NULL) +# define ECDSAerr(f, r) ERR_raise_data(ERR_LIB_ECDSA, (r), NULL) +# define ECerr(f, r) ERR_raise_data(ERR_LIB_EC, (r), NULL) +# define ENGINEerr(f, r) ERR_raise_data(ERR_LIB_ENGINE, (r), NULL) +# define ESSerr(f, r) ERR_raise_data(ERR_LIB_ESS, (r), NULL) +# define EVPerr(f, r) ERR_raise_data(ERR_LIB_EVP, (r), NULL) +# define FIPSerr(f, r) ERR_raise_data(ERR_LIB_FIPS, (r), NULL) +# define HMACerr(f, r) ERR_raise_data(ERR_LIB_HMAC, (r), NULL) +# define HTTPerr(f, r) ERR_raise_data(ERR_LIB_HTTP, (r), NULL) +# define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL) +# define OBJerr(f, r) ERR_raise_data(ERR_LIB_OBJ, (r), NULL) +# define OCSPerr(f, r) ERR_raise_data(ERR_LIB_OCSP, (r), NULL) +# define OSSL_STOREerr(f, r) ERR_raise_data(ERR_LIB_OSSL_STORE, (r), NULL) +# define PEMerr(f, r) ERR_raise_data(ERR_LIB_PEM, (r), NULL) +# define PKCS12err(f, r) ERR_raise_data(ERR_LIB_PKCS12, (r), NULL) +# define PKCS7err(f, r) ERR_raise_data(ERR_LIB_PKCS7, (r), NULL) +# define PROPerr(f, r) ERR_raise_data(ERR_LIB_PROP, (r), NULL) +# define PROVerr(f, r) ERR_raise_data(ERR_LIB_PROV, (r), NULL) +# define RANDerr(f, r) ERR_raise_data(ERR_LIB_RAND, (r), NULL) +# define RSAerr(f, r) ERR_raise_data(ERR_LIB_RSA, (r), NULL) +# define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL) +# define SM2err(f, r) ERR_raise_data(ERR_LIB_SM2, (r), NULL) +# define SSLerr(f, r) ERR_raise_data(ERR_LIB_SSL, (r), NULL) +# define SYSerr(f, r) ERR_raise_data(ERR_LIB_SYS, (r), NULL) +# define TSerr(f, r) ERR_raise_data(ERR_LIB_TS, (r), NULL) +# define UIerr(f, r) ERR_raise_data(ERR_LIB_UI, (r), NULL) +# define X509V3err(f, r) ERR_raise_data(ERR_LIB_X509V3, (r), NULL) +# define X509err(f, r) ERR_raise_data(ERR_LIB_X509, (r), NULL) +# endif + +/*- + * The error code packs differently depending on if it records a system + * error or an OpenSSL error. + * + * A system error packs like this (we follow POSIX and only allow positive + * numbers that fit in an |int|): + * + * +-+-------------------------------------------------------------+ + * |1| system error number | + * +-+-------------------------------------------------------------+ + * + * An OpenSSL error packs like this: + * + * <---------------------------- 32 bits --------------------------> + * <--- 8 bits ---><------------------ 23 bits -----------------> + * +-+---------------+---------------------------------------------+ + * |0| library | reason | + * +-+---------------+---------------------------------------------+ + * + * A few of the reason bits are reserved as flags with special meaning: + * + * <5 bits-<>--------- 19 bits -----------------> + * +-------+-+-----------------------------------+ + * | rflags| | reason | + * +-------+-+-----------------------------------+ + * ^ + * | + * ERR_RFLAG_FATAL = ERR_R_FATAL + * + * The reason flags are part of the overall reason code for practical + * reasons, as they provide an easy way to place different types of + * reason codes in different numeric ranges. + * + * The currently known reason flags are: + * + * ERR_RFLAG_FATAL Flags that the reason code is considered fatal. + * For backward compatibility reasons, this flag + * is also the code for ERR_R_FATAL (that reason + * code served the dual purpose of flag and reason + * code in one in pre-3.0 OpenSSL). + * ERR_RFLAG_COMMON Flags that the reason code is common to all + * libraries. All ERR_R_ macros must use this flag, + * and no other _R_ macro is allowed to use it. + */ + +/* Macros to help decode recorded system errors */ +# define ERR_SYSTEM_FLAG ((unsigned int)INT_MAX + 1) +# define ERR_SYSTEM_MASK ((unsigned int)INT_MAX) + +/* + * Macros to help decode recorded OpenSSL errors + * As expressed above, RFLAGS and REASON overlap by one bit to allow + * ERR_R_FATAL to use ERR_RFLAG_FATAL as its reason code. + */ +# define ERR_LIB_OFFSET 23L +# define ERR_LIB_MASK 0xFF +# define ERR_RFLAGS_OFFSET 18L +# define ERR_RFLAGS_MASK 0x1F +# define ERR_REASON_MASK 0X7FFFFF + +/* + * Reason flags are defined pre-shifted to easily combine with the reason + * number. + */ +# define ERR_RFLAG_FATAL (0x1 << ERR_RFLAGS_OFFSET) +# define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET) + +# define ERR_SYSTEM_ERROR(errcode) (((errcode) & ERR_SYSTEM_FLAG) != 0) + +static ossl_unused ossl_inline int ERR_GET_LIB(unsigned long errcode) +{ + if (ERR_SYSTEM_ERROR(errcode)) + return ERR_LIB_SYS; + return (errcode >> ERR_LIB_OFFSET) & ERR_LIB_MASK; +} + +static ossl_unused ossl_inline int ERR_GET_RFLAGS(unsigned long errcode) +{ + if (ERR_SYSTEM_ERROR(errcode)) + return 0; + return errcode & (ERR_RFLAGS_MASK << ERR_RFLAGS_OFFSET); +} + +static ossl_unused ossl_inline int ERR_GET_REASON(unsigned long errcode) +{ + if (ERR_SYSTEM_ERROR(errcode)) + return errcode & ERR_SYSTEM_MASK; + return errcode & ERR_REASON_MASK; +} + +static ossl_unused ossl_inline int ERR_FATAL_ERROR(unsigned long errcode) +{ + return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_FATAL) != 0; +} + +static ossl_unused ossl_inline int ERR_COMMON_ERROR(unsigned long errcode) +{ + return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_COMMON) != 0; +} + +/* + * ERR_PACK is a helper macro to properly pack OpenSSL error codes and may + * only be used for that purpose. System errors are packed internally. + * ERR_PACK takes reason flags and reason code combined in |reason|. + * ERR_PACK ignores |func|, that parameter is just legacy from pre-3.0 OpenSSL. + */ +# define ERR_PACK(lib,func,reason) \ + ( (((unsigned long)(lib) & ERR_LIB_MASK ) << ERR_LIB_OFFSET) | \ + (((unsigned long)(reason) & ERR_REASON_MASK)) ) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define SYS_F_FOPEN 0 +# define SYS_F_CONNECT 0 +# define SYS_F_GETSERVBYNAME 0 +# define SYS_F_SOCKET 0 +# define SYS_F_IOCTLSOCKET 0 +# define SYS_F_BIND 0 +# define SYS_F_LISTEN 0 +# define SYS_F_ACCEPT 0 +# define SYS_F_WSASTARTUP 0 +# define SYS_F_OPENDIR 0 +# define SYS_F_FREAD 0 +# define SYS_F_GETADDRINFO 0 +# define SYS_F_GETNAMEINFO 0 +# define SYS_F_SETSOCKOPT 0 +# define SYS_F_GETSOCKOPT 0 +# define SYS_F_GETSOCKNAME 0 +# define SYS_F_GETHOSTBYNAME 0 +# define SYS_F_FFLUSH 0 +# define SYS_F_OPEN 0 +# define SYS_F_CLOSE 0 +# define SYS_F_IOCTL 0 +# define SYS_F_STAT 0 +# define SYS_F_FCNTL 0 +# define SYS_F_FSTAT 0 +# define SYS_F_SENDFILE 0 +# endif + +/* + * All ERR_R_ codes must be combined with ERR_RFLAG_COMMON. + */ + +/* "we came from here" global reason codes, range 1..255 */ +# define ERR_R_SYS_LIB (ERR_LIB_SYS/* 2 */ | ERR_RFLAG_COMMON) +# define ERR_R_BN_LIB (ERR_LIB_BN/* 3 */ | ERR_RFLAG_COMMON) +# define ERR_R_RSA_LIB (ERR_LIB_RSA/* 4 */ | ERR_RFLAG_COMMON) +# define ERR_R_DH_LIB (ERR_LIB_DH/* 5 */ | ERR_RFLAG_COMMON) +# define ERR_R_EVP_LIB (ERR_LIB_EVP/* 6 */ | ERR_RFLAG_COMMON) +# define ERR_R_BUF_LIB (ERR_LIB_BUF/* 7 */ | ERR_RFLAG_COMMON) +# define ERR_R_OBJ_LIB (ERR_LIB_OBJ/* 8 */ | ERR_RFLAG_COMMON) +# define ERR_R_PEM_LIB (ERR_LIB_PEM/* 9 */ | ERR_RFLAG_COMMON) +# define ERR_R_DSA_LIB (ERR_LIB_DSA/* 10 */ | ERR_RFLAG_COMMON) +# define ERR_R_X509_LIB (ERR_LIB_X509/* 11 */ | ERR_RFLAG_COMMON) +# define ERR_R_ASN1_LIB (ERR_LIB_ASN1/* 13 */ | ERR_RFLAG_COMMON) +# define ERR_R_CONF_LIB (ERR_LIB_CONF/* 14 */ | ERR_RFLAG_COMMON) +# define ERR_R_CRYPTO_LIB (ERR_LIB_CRYPTO/* 15 */ | ERR_RFLAG_COMMON) +# define ERR_R_EC_LIB (ERR_LIB_EC/* 16 */ | ERR_RFLAG_COMMON) +# define ERR_R_SSL_LIB (ERR_LIB_SSL/* 20 */ | ERR_RFLAG_COMMON) +# define ERR_R_BIO_LIB (ERR_LIB_BIO/* 32 */ | ERR_RFLAG_COMMON) +# define ERR_R_PKCS7_LIB (ERR_LIB_PKCS7/* 33 */ | ERR_RFLAG_COMMON) +# define ERR_R_X509V3_LIB (ERR_LIB_X509V3/* 34 */ | ERR_RFLAG_COMMON) +# define ERR_R_PKCS12_LIB (ERR_LIB_PKCS12/* 35 */ | ERR_RFLAG_COMMON) +# define ERR_R_RAND_LIB (ERR_LIB_RAND/* 36 */ | ERR_RFLAG_COMMON) +# define ERR_R_DSO_LIB (ERR_LIB_DSO/* 37 */ | ERR_RFLAG_COMMON) +# define ERR_R_ENGINE_LIB (ERR_LIB_ENGINE/* 38 */ | ERR_RFLAG_COMMON) +# define ERR_R_UI_LIB (ERR_LIB_UI/* 40 */ | ERR_RFLAG_COMMON) +# define ERR_R_ECDSA_LIB (ERR_LIB_ECDSA/* 42 */ | ERR_RFLAG_COMMON) +# define ERR_R_OSSL_STORE_LIB (ERR_LIB_OSSL_STORE/* 44 */ | ERR_RFLAG_COMMON) +# define ERR_R_CMS_LIB (ERR_LIB_CMS/* 46 */ | ERR_RFLAG_COMMON) +# define ERR_R_TS_LIB (ERR_LIB_TS/* 47 */ | ERR_RFLAG_COMMON) +# define ERR_R_CT_LIB (ERR_LIB_CT/* 50 */ | ERR_RFLAG_COMMON) +# define ERR_R_PROV_LIB (ERR_LIB_PROV/* 57 */ | ERR_RFLAG_COMMON) +# define ERR_R_ESS_LIB (ERR_LIB_ESS/* 54 */ | ERR_RFLAG_COMMON) +# define ERR_R_CMP_LIB (ERR_LIB_CMP/* 58 */ | ERR_RFLAG_COMMON) +# define ERR_R_OSSL_ENCODER_LIB (ERR_LIB_OSSL_ENCODER/* 59 */ | ERR_RFLAG_COMMON) +# define ERR_R_OSSL_DECODER_LIB (ERR_LIB_OSSL_DECODER/* 60 */ | ERR_RFLAG_COMMON) + +/* Other common error codes, range 256..2^ERR_RFLAGS_OFFSET-1 */ +# define ERR_R_FATAL (ERR_RFLAG_FATAL|ERR_RFLAG_COMMON) +# define ERR_R_MALLOC_FAILURE (256|ERR_R_FATAL) +# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (257|ERR_R_FATAL) +# define ERR_R_PASSED_NULL_PARAMETER (258|ERR_R_FATAL) +# define ERR_R_INTERNAL_ERROR (259|ERR_R_FATAL) +# define ERR_R_DISABLED (260|ERR_R_FATAL) +# define ERR_R_INIT_FAIL (261|ERR_R_FATAL) +# define ERR_R_PASSED_INVALID_ARGUMENT (262|ERR_RFLAG_COMMON) +# define ERR_R_OPERATION_FAIL (263|ERR_R_FATAL) +# define ERR_R_INVALID_PROVIDER_FUNCTIONS (264|ERR_R_FATAL) +# define ERR_R_INTERRUPTED_OR_CANCELLED (265|ERR_RFLAG_COMMON) +# define ERR_R_NESTED_ASN1_ERROR (266|ERR_RFLAG_COMMON) +# define ERR_R_MISSING_ASN1_EOS (267|ERR_RFLAG_COMMON) +# define ERR_R_UNSUPPORTED (268|ERR_RFLAG_COMMON) +# define ERR_R_FETCH_FAILED (269|ERR_RFLAG_COMMON) +# define ERR_R_INVALID_PROPERTY_DEFINITION (270|ERR_RFLAG_COMMON) +# define ERR_R_UNABLE_TO_GET_READ_LOCK (271|ERR_R_FATAL) +# define ERR_R_UNABLE_TO_GET_WRITE_LOCK (272|ERR_R_FATAL) + +typedef struct ERR_string_data_st { + unsigned long error; + const char *string; +} ERR_STRING_DATA; + +DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); +#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) +#define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_delete(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_delete(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_retrieve(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_retrieve(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) +#define lh_ERR_STRING_DATA_error(lh) OPENSSL_LH_error(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_num_items(lh) OPENSSL_LH_num_items(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) +#define lh_ERR_STRING_DATA_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh)) +#define lh_ERR_STRING_DATA_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh), dl) +#define lh_ERR_STRING_DATA_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_doallfunc_type(dfn)) + + +/* 12 lines and some on an 80 column terminal */ +#define ERR_MAX_DATA_SIZE 1024 + +/* Building blocks */ +void ERR_new(void); +void ERR_set_debug(const char *file, int line, const char *func); +void ERR_set_error(int lib, int reason, const char *fmt, ...); +void ERR_vset_error(int lib, int reason, const char *fmt, va_list args); + +/* Main error raising functions */ +# define ERR_raise(lib, reason) ERR_raise_data((lib),(reason),NULL) +# define ERR_raise_data \ + (ERR_new(), \ + ERR_set_debug(OPENSSL_FILE,OPENSSL_LINE,OPENSSL_FUNC), \ + ERR_set_error) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/* Backward compatibility */ +# define ERR_put_error(lib, func, reason, file, line) \ + (ERR_new(), \ + ERR_set_debug((file), (line), OPENSSL_FUNC), \ + ERR_set_error((lib), (reason), NULL)) +# endif + +void ERR_set_error_data(char *data, int flags); + +unsigned long ERR_get_error(void); +unsigned long ERR_get_error_all(const char **file, int *line, + const char **func, + const char **data, int *flags); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned long ERR_get_error_line(const char **file, int *line); +OSSL_DEPRECATEDIN_3_0 +unsigned long ERR_get_error_line_data(const char **file, int *line, + const char **data, int *flags); +#endif +unsigned long ERR_peek_error(void); +unsigned long ERR_peek_error_line(const char **file, int *line); +unsigned long ERR_peek_error_func(const char **func); +unsigned long ERR_peek_error_data(const char **data, int *flags); +unsigned long ERR_peek_error_all(const char **file, int *line, + const char **func, + const char **data, int *flags); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned long ERR_peek_error_line_data(const char **file, int *line, + const char **data, int *flags); +# endif +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_func(const char **func); +unsigned long ERR_peek_last_error_data(const char **data, int *flags); +unsigned long ERR_peek_last_error_all(const char **file, int *line, + const char **func, + const char **data, int *flags); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned long ERR_peek_last_error_line_data(const char **file, int *line, + const char **data, int *flags); +# endif + +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); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *ERR_func_error_string(unsigned long e); +# endif +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); +void ERR_add_error_txt(const char *sepr, const char *txt); +void ERR_add_error_mem_bio(const char *sep, BIO *bio); + +int ERR_load_strings(int lib, ERR_STRING_DATA *str); +int ERR_load_strings_const(const ERR_STRING_DATA *str); +int ERR_unload_strings(int lib, ERR_STRING_DATA *str); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define ERR_load_crypto_strings() \ + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +# define ERR_free_strings() while(0) continue +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void ERR_remove_thread_state(void *); +#endif +#ifndef OPENSSL_NO_DEPRECATED_1_0_0 +OSSL_DEPRECATEDIN_1_0_0 void ERR_remove_state(unsigned long pid); +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 ERR_STATE *ERR_get_state(void); +#endif + +int ERR_get_next_error_library(void); + +int ERR_set_mark(void); +int ERR_pop_to_mark(void); +int ERR_clear_last_mark(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/openssl/ess.h b/include/openssl/ess.h new file mode 100644 index 0000000..d0f3c52 --- /dev/null +++ b/include/openssl/ess.h @@ -0,0 +1,128 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/ess.h.in + * + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_ESS_H +# define OPENSSL_ESS_H +# pragma once + +# include + +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + + +typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL; +typedef struct ESS_cert_id ESS_CERT_ID; +typedef struct ESS_signing_cert ESS_SIGNING_CERT; + +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID, ESS_CERT_ID, ESS_CERT_ID) +#define sk_ESS_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_value(sk, idx) ((ESS_CERT_ID *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_new(cmp) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_new_null() ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_delete(sk, i) ((ESS_CERT_ID *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_delete_ptr(sk, ptr) ((ESS_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_pop(sk) ((ESS_CERT_ID *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_shift(sk) ((ESS_CERT_ID *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_sk_type(sk),ossl_check_ESS_CERT_ID_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), (idx)) +#define sk_ESS_CERT_ID_set(sk, idx, ptr) ((ESS_CERT_ID *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_type(ptr))) +#define sk_ESS_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) +#define sk_ESS_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), pnum) +#define sk_ESS_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_sk_type(sk)) +#define sk_ESS_CERT_ID_dup(sk) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_sk_type(sk))) +#define sk_ESS_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_compfunc_type(cmp))) + + + +typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; +typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; + +SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID_V2, ESS_CERT_ID_V2, ESS_CERT_ID_V2) +#define sk_ESS_CERT_ID_V2_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_value(sk, idx) ((ESS_CERT_ID_V2 *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), (idx))) +#define sk_ESS_CERT_ID_V2_new(cmp) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) +#define sk_ESS_CERT_ID_V2_new_null() ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_null()) +#define sk_ESS_CERT_ID_V2_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp), (n))) +#define sk_ESS_CERT_ID_V2_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (n)) +#define sk_ESS_CERT_ID_V2_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_delete(sk, i) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (i))) +#define sk_ESS_CERT_ID_V2_delete_ptr(sk, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_pop(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_shift(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk),ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc)) +#define sk_ESS_CERT_ID_V2_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), (idx)) +#define sk_ESS_CERT_ID_V2_set(sk, idx, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_V2_type(ptr))) +#define sk_ESS_CERT_ID_V2_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) +#define sk_ESS_CERT_ID_V2_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), pnum) +#define sk_ESS_CERT_ID_V2_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) +#define sk_ESS_CERT_ID_V2_dup(sk) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk))) +#define sk_ESS_CERT_ID_V2_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc))) +#define sk_ESS_CERT_ID_V2_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_V2_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) + + +DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_ISSUER_SERIAL) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_ISSUER_SERIAL, ESS_ISSUER_SERIAL) +DECLARE_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL) + +DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID, ESS_CERT_ID) +DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID) + +DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT) +DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT) + +DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID_V2) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID_V2, ESS_CERT_ID_V2) +DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID_V2) + +DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT_V2) +DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT_V2) + +ESS_SIGNING_CERT *OSSL_ESS_signing_cert_new_init(const X509 *signcert, + const STACK_OF(X509) *certs, + int set_issuer_serial); +ESS_SIGNING_CERT_V2 *OSSL_ESS_signing_cert_v2_new_init(const EVP_MD *hash_alg, + const X509 *signcert, + const + STACK_OF(X509) *certs, + int set_issuer_serial); +int OSSL_ESS_check_signing_certs(const ESS_SIGNING_CERT *ss, + const ESS_SIGNING_CERT_V2 *ssv2, + const STACK_OF(X509) *chain, + int require_signing_cert); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/esserr.h b/include/openssl/esserr.h new file mode 100644 index 0000000..165ce7c --- /dev/null +++ b/include/openssl/esserr.h @@ -0,0 +1,32 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_ESSERR_H +# define OPENSSL_ESSERR_H +# pragma once + +# include +# include +# include + +/* + * ESS reason codes. + */ +# define ESS_R_EMPTY_ESS_CERT_ID_LIST 107 +# define ESS_R_ESS_CERT_DIGEST_ERROR 103 +# define ESS_R_ESS_CERT_ID_NOT_FOUND 104 +# define ESS_R_ESS_CERT_ID_WRONG_ORDER 105 +# define ESS_R_ESS_DIGEST_ALG_UNKNOWN 106 +# define ESS_R_ESS_SIGNING_CERTIFICATE_ERROR 102 +# define ESS_R_ESS_SIGNING_CERT_ADD_ERROR 100 +# define ESS_R_ESS_SIGNING_CERT_V2_ADD_ERROR 101 +# define ESS_R_MISSING_SIGNING_CERTIFICATE_ATTRIBUTE 108 + +#endif diff --git a/include/openssl/evp.h b/include/openssl/evp.h new file mode 100644 index 0000000..86f4e22 --- /dev/null +++ b/include/openssl/evp.h @@ -0,0 +1,2173 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_EVP_H +# define OPENSSL_EVP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_ENVELOPE_H +# endif + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif + +# include +# include +# include +# include +# include +# include +# include +# include + +# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ +# define EVP_MAX_KEY_LENGTH 64 +# define EVP_MAX_IV_LENGTH 16 +# define EVP_MAX_BLOCK_LENGTH 32 + +# define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +# define PKCS5_DEFAULT_ITER 2048 + +# include + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# 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 +# endif + +# define EVP_PKEY_NONE NID_undef +# define EVP_PKEY_RSA NID_rsaEncryption +# define EVP_PKEY_RSA2 NID_rsa +# define EVP_PKEY_RSA_PSS NID_rsassaPss +# define EVP_PKEY_DSA NID_dsa +# define EVP_PKEY_DSA1 NID_dsa_2 +# define EVP_PKEY_DSA2 NID_dsaWithSHA +# define EVP_PKEY_DSA3 NID_dsaWithSHA1 +# define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 +# define EVP_PKEY_DH NID_dhKeyAgreement +# define EVP_PKEY_DHX NID_dhpublicnumber +# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey +# define EVP_PKEY_SM2 NID_sm2 +# define EVP_PKEY_HMAC NID_hmac +# define EVP_PKEY_CMAC NID_cmac +# define EVP_PKEY_SCRYPT NID_id_scrypt +# define EVP_PKEY_TLS1_PRF NID_tls1_prf +# define EVP_PKEY_HKDF NID_hkdf +# define EVP_PKEY_POLY1305 NID_poly1305 +# define EVP_PKEY_SIPHASH NID_siphash +# define EVP_PKEY_X25519 NID_X25519 +# define EVP_PKEY_ED25519 NID_ED25519 +# define EVP_PKEY_X448 NID_X448 +# define EVP_PKEY_ED448 NID_ED448 +/* Special indicator that the object is uniquely provider side */ +# define EVP_PKEY_KEYMGMT -1 + +/* Easy to use macros for EVP_PKEY related selections */ +# define EVP_PKEY_KEY_PARAMETERS \ + ( OSSL_KEYMGMT_SELECT_ALL_PARAMETERS ) +# define EVP_PKEY_PUBLIC_KEY \ + ( EVP_PKEY_KEY_PARAMETERS | OSSL_KEYMGMT_SELECT_PUBLIC_KEY ) +# define EVP_PKEY_KEYPAIR \ + ( EVP_PKEY_PUBLIC_KEY | OSSL_KEYMGMT_SELECT_PRIVATE_KEY ) + +#ifdef __cplusplus +extern "C" { +#endif + +int EVP_set_default_properties(OSSL_LIB_CTX *libctx, const char *propq); +int EVP_default_properties_is_fips_enabled(OSSL_LIB_CTX *libctx); +int EVP_default_properties_enable_fips(OSSL_LIB_CTX *libctx, int enable); + +# 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 +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type); +OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_dup(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 void EVP_MD_meth_free(EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx, + const void *data, + size_t count)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx, + unsigned char *md)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to, + const EVP_MD_CTX *from)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2)); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_input_blocksize(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_result_size(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_app_datasize(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 unsigned long EVP_MD_meth_get_flags(const EVP_MD *md); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx, + const void *data, size_t count); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to, + const EVP_MD_CTX *from); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2); +# endif +/* digest can only handle a single block */ +# define EVP_MD_FLAG_ONESHOT 0x0001 + +/* digest is extensible-output function, XOF */ +# define EVP_MD_FLAG_XOF 0x0002 + +/* DigestAlgorithmIdentifier flags... */ + +# define EVP_MD_FLAG_DIGALGID_MASK 0x0018 + +/* NULL or absent parameter accepted. Use NULL */ + +# define EVP_MD_FLAG_DIGALGID_NULL 0x0000 + +/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ + +# define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 + +/* Custom handling via ctrl */ + +# define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 + +/* Note if suitable for use in FIPS mode */ +# define EVP_MD_FLAG_FIPS 0x0400 + +/* Digest ctrls */ + +# define EVP_MD_CTRL_DIGALGID 0x1 +# define EVP_MD_CTRL_MICALG 0x2 +# define EVP_MD_CTRL_XOF_LEN 0x3 +# define EVP_MD_CTRL_TLSTREE 0x4 + +/* 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. + */ + +/* This flag has no effect from openssl-3.0 onwards */ +# define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008 + +/* + * The following PAD options are also currently ignored in 1.0.0, digest + * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() + * instead. + */ +# define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */ +# define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */ +# define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */ +# define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */ + +# define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */ +/* + * Some functions such as EVP_DigestSign only finalise copies of internal + * contexts so additional data can be included after the finalisation call. + * This is inefficient if this functionality is not required: it is disabled + * if the following flag is set. + */ +# define EVP_MD_CTX_FLAG_FINALISE 0x0200 +/* NOTE: 0x0400 is reserved for internal usage */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); +OSSL_DEPRECATEDIN_3_0 +EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); +OSSL_DEPRECATEDIN_3_0 +void EVP_CIPHER_meth_free(EVP_CIPHER *cipher); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size); +OSSL_DEPRECATEDIN_3_0 +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)); +OSSL_DEPRECATEDIN_3_0 +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)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, + int (*cleanup) (EVP_CIPHER_CTX *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, + int (*set_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, + int (*get_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, + int (*ctrl) (EVP_CIPHER_CTX *, int type, + int arg, void *ptr)); +OSSL_DEPRECATEDIN_3_0 int +(*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 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); +OSSL_DEPRECATEDIN_3_0 int +(*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *); +OSSL_DEPRECATEDIN_3_0 int +(*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +OSSL_DEPRECATEDIN_3_0 int +(*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +OSSL_DEPRECATEDIN_3_0 int +(*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, int type, + int arg, void *ptr); +# endif + +/* 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_SIV_MODE 0x10004 +# define EVP_CIPH_MODE 0xF0007 +/* Set if variable length cipher */ +# define EVP_CIPH_VARIABLE_LENGTH 0x8 +/* Set if the iv handling should be done by the cipher itself */ +# define EVP_CIPH_CUSTOM_IV 0x10 +/* Set if the cipher's init() function should be called if key is NULL */ +# define EVP_CIPH_ALWAYS_CALL_INIT 0x20 +/* Call ctrl() to init cipher parameters */ +# define EVP_CIPH_CTRL_INIT 0x40 +/* Don't use standard key length function */ +# define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 +/* Don't use standard block padding */ +# define EVP_CIPH_NO_PADDING 0x100 +/* cipher handles random key generation */ +# define EVP_CIPH_RAND_KEY 0x200 +/* cipher has its own additional copying logic */ +# define EVP_CIPH_CUSTOM_COPY 0x400 +/* Don't use standard iv length function */ +# define EVP_CIPH_CUSTOM_IV_LENGTH 0x800 +/* Legacy and no longer relevant: Allow use default ASN1 get/set iv */ +# define EVP_CIPH_FLAG_DEFAULT_ASN1 0 +/* Free: 0x1000 */ +/* Buffer length in bits not bytes: CFB1 mode only */ +# define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 +/* Deprecated FIPS flag: was 0x4000 */ +# define EVP_CIPH_FLAG_FIPS 0 +/* Deprecated FIPS flag: was 0x8000 */ +# define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0 + +/* + * Cipher handles any and all padding logic as well as finalisation. + */ +# define EVP_CIPH_FLAG_CTS 0x4000 +# 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 +/* For provider implementations that handle ASN1 get/set param themselves */ +# define EVP_CIPH_FLAG_CUSTOM_ASN1 0x1000000 +/* For ciphers generating unprotected CMS attributes */ +# define EVP_CIPH_FLAG_CIPHER_WITH_MAC 0x2000000 +/* For supplementary wrap cipher support */ +# define EVP_CIPH_FLAG_GET_WRAP_CIPHER 0x4000000 +# define EVP_CIPH_FLAG_INVERSE_CIPHER 0x8000000 + +/* + * 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 +/* Get the IV length used by the cipher */ +# define EVP_CTRL_GET_IVLEN 0x25 +/* 0x26 is unused */ +/* Tell the cipher it's doing a speed test (SIV disallows multiple ops) */ +# define EVP_CTRL_SET_SPEED 0x27 +/* Get the unprotectedAttrs from cipher ctx */ +# define EVP_CTRL_PROCESS_UNPROTECTED 0x28 +/* Get the supplementary wrap cipher */ +#define EVP_CTRL_GET_WRAP_CIPHER 0x29 +/* TLSTREE key diversification */ +#define EVP_CTRL_TLSTREE 0x2A + +/* Padding modes */ +#define EVP_PADDING_PKCS7 1 +#define EVP_PADDING_ISO7816_4 2 +#define EVP_PADDING_ANSI923 3 +#define EVP_PADDING_ISO10126 4 +#define EVP_PADDING_ZERO 5 + +/* RFC 5246 defines additional data to be 13 bytes in length */ +# define EVP_AEAD_TLS1_AAD_LEN 13 + +typedef struct { + unsigned char *out; + const unsigned char *inp; + size_t len; + unsigned int interleave; +} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; + +/* GCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_GCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 +/* Length of tag for TLS */ +# define EVP_GCM_TLS_TAG_LEN 16 + +/* CCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_CCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_CCM_TLS_EXPLICIT_IV_LEN 8 +/* Total length of CCM IV length for TLS */ +# define EVP_CCM_TLS_IV_LEN 12 +/* Length of tag for TLS */ +# define EVP_CCM_TLS_TAG_LEN 16 +/* Length of CCM8 tag for TLS */ +# define EVP_CCM8_TLS_TAG_LEN 8 + +/* Length of tag for TLS */ +# define EVP_CHACHAPOLY_TLS_TAG_LEN 16 + +typedef struct evp_cipher_info_st { + const EVP_CIPHER *cipher; + unsigned char iv[EVP_MAX_IV_LENGTH]; +} EVP_CIPHER_INFO; + + +/* Password based encryption function */ +typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de); + +typedef int (EVP_PBE_KEYGEN_EX) (EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de, OSSL_LIB_CTX *libctx, const char *propq); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ + (rsa)) +# endif + +# ifndef OPENSSL_NO_DSA +# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ + (dsa)) +# endif + +# if !defined(OPENSSL_NO_DH) && !defined(OPENSSL_NO_DEPRECATED_3_0) +# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,(dh)) +# endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_EC +# define EVP_PKEY_assign_EC_KEY(pkey,eckey) \ + EVP_PKEY_assign((pkey), EVP_PKEY_EC, (eckey)) +# endif +# endif +# ifndef OPENSSL_NO_SIPHASH +# define EVP_PKEY_assign_SIPHASH(pkey,shkey) EVP_PKEY_assign((pkey),\ + EVP_PKEY_SIPHASH,(shkey)) +# endif + +# ifndef OPENSSL_NO_POLY1305 +# define EVP_PKEY_assign_POLY1305(pkey,polykey) EVP_PKEY_assign((pkey),\ + EVP_PKEY_POLY1305,(polykey)) +# endif + +/* Add some extra combinations */ +# define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) +# define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) +# define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) +# define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) + +int EVP_MD_get_type(const EVP_MD *md); +# define EVP_MD_type EVP_MD_get_type +# define EVP_MD_nid EVP_MD_get_type +const char *EVP_MD_get0_name(const EVP_MD *md); +# define EVP_MD_name EVP_MD_get0_name +const char *EVP_MD_get0_description(const EVP_MD *md); +int EVP_MD_is_a(const EVP_MD *md, const char *name); +int EVP_MD_names_do_all(const EVP_MD *md, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PROVIDER *EVP_MD_get0_provider(const EVP_MD *md); +int EVP_MD_get_pkey_type(const EVP_MD *md); +# define EVP_MD_pkey_type EVP_MD_get_pkey_type +int EVP_MD_get_size(const EVP_MD *md); +# define EVP_MD_size EVP_MD_get_size +int EVP_MD_get_block_size(const EVP_MD *md); +# define EVP_MD_block_size EVP_MD_get_block_size +unsigned long EVP_MD_get_flags(const EVP_MD *md); +# define EVP_MD_flags EVP_MD_get_flags + +const EVP_MD *EVP_MD_CTX_get0_md(const EVP_MD_CTX *ctx); +EVP_MD *EVP_MD_CTX_get1_md(EVP_MD_CTX *ctx); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, + const void *data, size_t count); +OSSL_DEPRECATEDIN_3_0 +void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, + int (*update) (EVP_MD_CTX *ctx, + const void *data, size_t count)); +# endif +# define EVP_MD_CTX_get0_name(e) EVP_MD_get0_name(EVP_MD_CTX_get0_md(e)) +# define EVP_MD_CTX_get_size(e) EVP_MD_get_size(EVP_MD_CTX_get0_md(e)) +# define EVP_MD_CTX_size EVP_MD_CTX_get_size +# define EVP_MD_CTX_get_block_size(e) EVP_MD_get_block_size(EVP_MD_CTX_get0_md(e)) +# define EVP_MD_CTX_block_size EVP_MD_CTX_get_block_size +# define EVP_MD_CTX_get_type(e) EVP_MD_get_type(EVP_MD_CTX_get0_md(e)) +# define EVP_MD_CTX_type EVP_MD_CTX_get_type +EVP_PKEY_CTX *EVP_MD_CTX_get_pkey_ctx(const EVP_MD_CTX *ctx); +# define EVP_MD_CTX_pkey_ctx EVP_MD_CTX_get_pkey_ctx +void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); +void *EVP_MD_CTX_get0_md_data(const EVP_MD_CTX *ctx); +# define EVP_MD_CTX_md_data EVP_MD_CTX_get0_md_data + +int EVP_CIPHER_get_nid(const EVP_CIPHER *cipher); +# define EVP_CIPHER_nid EVP_CIPHER_get_nid +const char *EVP_CIPHER_get0_name(const EVP_CIPHER *cipher); +# define EVP_CIPHER_name EVP_CIPHER_get0_name +const char *EVP_CIPHER_get0_description(const EVP_CIPHER *cipher); +int EVP_CIPHER_is_a(const EVP_CIPHER *cipher, const char *name); +int EVP_CIPHER_names_do_all(const EVP_CIPHER *cipher, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PROVIDER *EVP_CIPHER_get0_provider(const EVP_CIPHER *cipher); +int EVP_CIPHER_get_block_size(const EVP_CIPHER *cipher); +# define EVP_CIPHER_block_size EVP_CIPHER_get_block_size +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher); +# endif +int EVP_CIPHER_get_key_length(const EVP_CIPHER *cipher); +# define EVP_CIPHER_key_length EVP_CIPHER_get_key_length +int EVP_CIPHER_get_iv_length(const EVP_CIPHER *cipher); +# define EVP_CIPHER_iv_length EVP_CIPHER_get_iv_length +unsigned long EVP_CIPHER_get_flags(const EVP_CIPHER *cipher); +# define EVP_CIPHER_flags EVP_CIPHER_get_flags +int EVP_CIPHER_get_mode(const EVP_CIPHER *cipher); +# define EVP_CIPHER_mode EVP_CIPHER_get_mode +int EVP_CIPHER_get_type(const EVP_CIPHER *cipher); +# define EVP_CIPHER_type EVP_CIPHER_get_type +EVP_CIPHER *EVP_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_CIPHER_up_ref(EVP_CIPHER *cipher); +void EVP_CIPHER_free(EVP_CIPHER *cipher); + +const EVP_CIPHER *EVP_CIPHER_CTX_get0_cipher(const EVP_CIPHER_CTX *ctx); +EVP_CIPHER *EVP_CIPHER_CTX_get1_cipher(EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_is_encrypting(const EVP_CIPHER_CTX *ctx); +# define EVP_CIPHER_CTX_encrypting EVP_CIPHER_CTX_is_encrypting +int EVP_CIPHER_CTX_get_nid(const EVP_CIPHER_CTX *ctx); +# define EVP_CIPHER_CTX_nid EVP_CIPHER_CTX_get_nid +int EVP_CIPHER_CTX_get_block_size(const EVP_CIPHER_CTX *ctx); +# define EVP_CIPHER_CTX_block_size EVP_CIPHER_CTX_get_block_size +int EVP_CIPHER_CTX_get_key_length(const EVP_CIPHER_CTX *ctx); +# define EVP_CIPHER_CTX_key_length EVP_CIPHER_CTX_get_key_length +int EVP_CIPHER_CTX_get_iv_length(const EVP_CIPHER_CTX *ctx); +# define EVP_CIPHER_CTX_iv_length EVP_CIPHER_CTX_get_iv_length +int EVP_CIPHER_CTX_get_tag_length(const EVP_CIPHER_CTX *ctx); +# define EVP_CIPHER_CTX_tag_length EVP_CIPHER_CTX_get_tag_length +# ifndef OPENSSL_NO_DEPRECATED_3_0 +const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx); +# endif +int EVP_CIPHER_CTX_get_updated_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); +int EVP_CIPHER_CTX_get_original_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx); +# endif +int EVP_CIPHER_CTX_get_num(const EVP_CIPHER_CTX *ctx); +# define EVP_CIPHER_CTX_num EVP_CIPHER_CTX_get_num +int EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num); +EVP_CIPHER_CTX *EVP_CIPHER_CTX_dup(const EVP_CIPHER_CTX *in); +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_get0_name(c) EVP_CIPHER_get0_name(EVP_CIPHER_CTX_get0_cipher(c)) +# define EVP_CIPHER_CTX_get_type(c) EVP_CIPHER_get_type(EVP_CIPHER_CTX_get0_cipher(c)) +# define EVP_CIPHER_CTX_type EVP_CIPHER_CTX_get_type +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_get_flags(EVP_CIPHER_CTX_get0_cipher(c)) +# endif +# define EVP_CIPHER_CTX_get_mode(c) EVP_CIPHER_get_mode(EVP_CIPHER_CTX_get0_cipher(c)) +# define EVP_CIPHER_CTX_mode EVP_CIPHER_CTX_get_mode + +# 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) + +# 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,(void *)(md)) +# endif +# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(mdp)) +# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(mdcp)) +# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(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,(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_get_params(const EVP_MD *digest, OSSL_PARAM params[]); +int EVP_MD_CTX_set_params(EVP_MD_CTX *ctx, const OSSL_PARAM params[]); +int EVP_MD_CTX_get_params(EVP_MD_CTX *ctx, OSSL_PARAM params[]); +const OSSL_PARAM *EVP_MD_gettable_params(const EVP_MD *digest); +const OSSL_PARAM *EVP_MD_settable_ctx_params(const EVP_MD *md); +const OSSL_PARAM *EVP_MD_gettable_ctx_params(const EVP_MD *md); +const OSSL_PARAM *EVP_MD_CTX_settable_params(EVP_MD_CTX *ctx); +const OSSL_PARAM *EVP_MD_CTX_gettable_params(EVP_MD_CTX *ctx); +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 EVP_MD_CTX *EVP_MD_CTX_dup(const EVP_MD_CTX *in); +__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_ex2(EVP_MD_CTX *ctx, const EVP_MD *type, + const OSSL_PARAM params[]); +__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_Q_digest(OSSL_LIB_CTX *libctx, const char *name, + const char *propq, const void *data, size_t datalen, + unsigned char *md, size_t *mdlen); + +__owur int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); +__owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); +__owur int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *md, + size_t len); + +__owur EVP_MD *EVP_MD_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); + +int EVP_MD_up_ref(EVP_MD *md); +void EVP_MD_free(EVP_MD *md); + +int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); +int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, + const char *prompt, int verify); +void EVP_set_pw_prompt(const char *prompt); +char *EVP_get_pw_prompt(void); + +__owur int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, + const unsigned char *salt, + const unsigned char *data, int datal, int count, + unsigned char *key, unsigned char *iv); + +void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); +void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); +int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); + +__owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +/*__owur*/ int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +__owur int EVP_EncryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, + const unsigned char *iv, + const OSSL_PARAM params[]); +/*__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_DecryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, + const unsigned char *iv, + const OSSL_PARAM params[]); +/*__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_CipherInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc, const OSSL_PARAM params[]); +__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_SignFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, + const char *propq); + +__owur int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); +__owur int EVP_VerifyFinal_ex(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey, + OSSL_LIB_CTX *libctx, const char *propq); + +__owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, + size_t siglen, const unsigned char *tbs, + size_t tbslen); + +int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const char *mdname, OSSL_LIB_CTX *libctx, + const char *props, EVP_PKEY *pkey, + const OSSL_PARAM params[]); +/*__owur*/ int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); +__owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen); + +int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const char *mdname, OSSL_LIB_CTX *libctx, + const char *props, EVP_PKEY *pkey, + const OSSL_PARAM params[]); +__owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +int EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); +__owur int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen); + +__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); + +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, const 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); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# 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); +int EVP_CIPHER_get_params(EVP_CIPHER *cipher, OSSL_PARAM params[]); +int EVP_CIPHER_CTX_set_params(EVP_CIPHER_CTX *ctx, const OSSL_PARAM params[]); +int EVP_CIPHER_CTX_get_params(EVP_CIPHER_CTX *ctx, OSSL_PARAM params[]); +const OSSL_PARAM *EVP_CIPHER_gettable_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_settable_ctx_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_gettable_ctx_params(const EVP_CIPHER *cipher); +const OSSL_PARAM *EVP_CIPHER_CTX_settable_params(EVP_CIPHER_CTX *ctx); +const OSSL_PARAM *EVP_CIPHER_CTX_gettable_params(EVP_CIPHER_CTX *ctx); + +const BIO_METHOD *BIO_f_md(void); +const BIO_METHOD *BIO_f_base64(void); +const BIO_METHOD *BIO_f_cipher(void); +const BIO_METHOD *BIO_f_reliable(void); +__owur int BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, + const unsigned char *i, int enc); + +const EVP_MD *EVP_md_null(void); +# ifndef OPENSSL_NO_MD2 +const EVP_MD *EVP_md2(void); +# endif +# ifndef OPENSSL_NO_MD4 +const EVP_MD *EVP_md4(void); +# endif +# ifndef OPENSSL_NO_MD5 +const EVP_MD *EVP_md5(void); +const EVP_MD *EVP_md5_sha1(void); +# endif +# ifndef OPENSSL_NO_BLAKE2 +const EVP_MD *EVP_blake2b512(void); +const EVP_MD *EVP_blake2s256(void); +# endif +const EVP_MD *EVP_sha1(void); +const EVP_MD *EVP_sha224(void); +const EVP_MD *EVP_sha256(void); +const EVP_MD *EVP_sha384(void); +const EVP_MD *EVP_sha512(void); +const EVP_MD *EVP_sha512_224(void); +const EVP_MD *EVP_sha512_256(void); +const EVP_MD *EVP_sha3_224(void); +const EVP_MD *EVP_sha3_256(void); +const EVP_MD *EVP_sha3_384(void); +const EVP_MD *EVP_sha3_512(void); +const EVP_MD *EVP_shake128(void); +const EVP_MD *EVP_shake256(void); + +# ifndef OPENSSL_NO_MDC2 +const EVP_MD *EVP_mdc2(void); +# endif +# ifndef OPENSSL_NO_RMD160 +const EVP_MD *EVP_ripemd160(void); +# endif +# ifndef OPENSSL_NO_WHIRLPOOL +const EVP_MD *EVP_whirlpool(void); +# endif +# ifndef OPENSSL_NO_SM3 +const EVP_MD *EVP_sm3(void); +# endif +const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ +# ifndef OPENSSL_NO_DES +const EVP_CIPHER *EVP_des_ecb(void); +const EVP_CIPHER *EVP_des_ede(void); +const EVP_CIPHER *EVP_des_ede3(void); +const EVP_CIPHER *EVP_des_ede_ecb(void); +const EVP_CIPHER *EVP_des_ede3_ecb(void); +const EVP_CIPHER *EVP_des_cfb64(void); +# define EVP_des_cfb EVP_des_cfb64 +const EVP_CIPHER *EVP_des_cfb1(void); +const EVP_CIPHER *EVP_des_cfb8(void); +const EVP_CIPHER *EVP_des_ede_cfb64(void); +# define EVP_des_ede_cfb EVP_des_ede_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb64(void); +# define EVP_des_ede3_cfb EVP_des_ede3_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb1(void); +const EVP_CIPHER *EVP_des_ede3_cfb8(void); +const EVP_CIPHER *EVP_des_ofb(void); +const EVP_CIPHER *EVP_des_ede_ofb(void); +const EVP_CIPHER *EVP_des_ede3_ofb(void); +const EVP_CIPHER *EVP_des_cbc(void); +const EVP_CIPHER *EVP_des_ede_cbc(void); +const EVP_CIPHER *EVP_des_ede3_cbc(void); +const EVP_CIPHER *EVP_desx_cbc(void); +const EVP_CIPHER *EVP_des_ede3_wrap(void); +/* + * This should now be supported through the dev_crypto ENGINE. But also, why + * are rc4 and md5 declarations made here inside a "NO_DES" precompiler + * branch? + */ +# endif +# ifndef OPENSSL_NO_RC4 +const EVP_CIPHER *EVP_rc4(void); +const EVP_CIPHER *EVP_rc4_40(void); +# ifndef OPENSSL_NO_MD5 +const EVP_CIPHER *EVP_rc4_hmac_md5(void); +# endif +# endif +# ifndef OPENSSL_NO_IDEA +const EVP_CIPHER *EVP_idea_ecb(void); +const EVP_CIPHER *EVP_idea_cfb64(void); +# define EVP_idea_cfb EVP_idea_cfb64 +const EVP_CIPHER *EVP_idea_ofb(void); +const EVP_CIPHER *EVP_idea_cbc(void); +# endif +# ifndef OPENSSL_NO_RC2 +const EVP_CIPHER *EVP_rc2_ecb(void); +const EVP_CIPHER *EVP_rc2_cbc(void); +const EVP_CIPHER *EVP_rc2_40_cbc(void); +const EVP_CIPHER *EVP_rc2_64_cbc(void); +const EVP_CIPHER *EVP_rc2_cfb64(void); +# define EVP_rc2_cfb EVP_rc2_cfb64 +const EVP_CIPHER *EVP_rc2_ofb(void); +# endif +# ifndef OPENSSL_NO_BF +const EVP_CIPHER *EVP_bf_ecb(void); +const EVP_CIPHER *EVP_bf_cbc(void); +const EVP_CIPHER *EVP_bf_cfb64(void); +# define EVP_bf_cfb EVP_bf_cfb64 +const EVP_CIPHER *EVP_bf_ofb(void); +# endif +# ifndef OPENSSL_NO_CAST +const EVP_CIPHER *EVP_cast5_ecb(void); +const EVP_CIPHER *EVP_cast5_cbc(void); +const EVP_CIPHER *EVP_cast5_cfb64(void); +# define EVP_cast5_cfb EVP_cast5_cfb64 +const EVP_CIPHER *EVP_cast5_ofb(void); +# endif +# ifndef OPENSSL_NO_RC5 +const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); +const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); +const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); +# define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 +const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); +# endif +const EVP_CIPHER *EVP_aes_128_ecb(void); +const EVP_CIPHER *EVP_aes_128_cbc(void); +const EVP_CIPHER *EVP_aes_128_cfb1(void); +const EVP_CIPHER *EVP_aes_128_cfb8(void); +const EVP_CIPHER *EVP_aes_128_cfb128(void); +# define EVP_aes_128_cfb EVP_aes_128_cfb128 +const EVP_CIPHER *EVP_aes_128_ofb(void); +const EVP_CIPHER *EVP_aes_128_ctr(void); +const EVP_CIPHER *EVP_aes_128_ccm(void); +const EVP_CIPHER *EVP_aes_128_gcm(void); +const EVP_CIPHER *EVP_aes_128_xts(void); +const EVP_CIPHER *EVP_aes_128_wrap(void); +const EVP_CIPHER *EVP_aes_128_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_128_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_192_ecb(void); +const EVP_CIPHER *EVP_aes_192_cbc(void); +const EVP_CIPHER *EVP_aes_192_cfb1(void); +const EVP_CIPHER *EVP_aes_192_cfb8(void); +const EVP_CIPHER *EVP_aes_192_cfb128(void); +# define EVP_aes_192_cfb EVP_aes_192_cfb128 +const EVP_CIPHER *EVP_aes_192_ofb(void); +const EVP_CIPHER *EVP_aes_192_ctr(void); +const EVP_CIPHER *EVP_aes_192_ccm(void); +const EVP_CIPHER *EVP_aes_192_gcm(void); +const EVP_CIPHER *EVP_aes_192_wrap(void); +const EVP_CIPHER *EVP_aes_192_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_192_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_256_ecb(void); +const EVP_CIPHER *EVP_aes_256_cbc(void); +const EVP_CIPHER *EVP_aes_256_cfb1(void); +const EVP_CIPHER *EVP_aes_256_cfb8(void); +const EVP_CIPHER *EVP_aes_256_cfb128(void); +# define EVP_aes_256_cfb EVP_aes_256_cfb128 +const EVP_CIPHER *EVP_aes_256_ofb(void); +const EVP_CIPHER *EVP_aes_256_ctr(void); +const EVP_CIPHER *EVP_aes_256_ccm(void); +const EVP_CIPHER *EVP_aes_256_gcm(void); +const EVP_CIPHER *EVP_aes_256_xts(void); +const EVP_CIPHER *EVP_aes_256_wrap(void); +const EVP_CIPHER *EVP_aes_256_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_256_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); +# ifndef OPENSSL_NO_ARIA +const EVP_CIPHER *EVP_aria_128_ecb(void); +const EVP_CIPHER *EVP_aria_128_cbc(void); +const EVP_CIPHER *EVP_aria_128_cfb1(void); +const EVP_CIPHER *EVP_aria_128_cfb8(void); +const EVP_CIPHER *EVP_aria_128_cfb128(void); +# define EVP_aria_128_cfb EVP_aria_128_cfb128 +const EVP_CIPHER *EVP_aria_128_ctr(void); +const EVP_CIPHER *EVP_aria_128_ofb(void); +const EVP_CIPHER *EVP_aria_128_gcm(void); +const EVP_CIPHER *EVP_aria_128_ccm(void); +const EVP_CIPHER *EVP_aria_192_ecb(void); +const EVP_CIPHER *EVP_aria_192_cbc(void); +const EVP_CIPHER *EVP_aria_192_cfb1(void); +const EVP_CIPHER *EVP_aria_192_cfb8(void); +const EVP_CIPHER *EVP_aria_192_cfb128(void); +# define EVP_aria_192_cfb EVP_aria_192_cfb128 +const EVP_CIPHER *EVP_aria_192_ctr(void); +const EVP_CIPHER *EVP_aria_192_ofb(void); +const EVP_CIPHER *EVP_aria_192_gcm(void); +const EVP_CIPHER *EVP_aria_192_ccm(void); +const EVP_CIPHER *EVP_aria_256_ecb(void); +const EVP_CIPHER *EVP_aria_256_cbc(void); +const EVP_CIPHER *EVP_aria_256_cfb1(void); +const EVP_CIPHER *EVP_aria_256_cfb8(void); +const EVP_CIPHER *EVP_aria_256_cfb128(void); +# define EVP_aria_256_cfb EVP_aria_256_cfb128 +const EVP_CIPHER *EVP_aria_256_ctr(void); +const EVP_CIPHER *EVP_aria_256_ofb(void); +const EVP_CIPHER *EVP_aria_256_gcm(void); +const EVP_CIPHER *EVP_aria_256_ccm(void); +# endif +# ifndef OPENSSL_NO_CAMELLIA +const EVP_CIPHER *EVP_camellia_128_ecb(void); +const EVP_CIPHER *EVP_camellia_128_cbc(void); +const EVP_CIPHER *EVP_camellia_128_cfb1(void); +const EVP_CIPHER *EVP_camellia_128_cfb8(void); +const EVP_CIPHER *EVP_camellia_128_cfb128(void); +# define EVP_camellia_128_cfb EVP_camellia_128_cfb128 +const EVP_CIPHER *EVP_camellia_128_ofb(void); +const EVP_CIPHER *EVP_camellia_128_ctr(void); +const EVP_CIPHER *EVP_camellia_192_ecb(void); +const EVP_CIPHER *EVP_camellia_192_cbc(void); +const EVP_CIPHER *EVP_camellia_192_cfb1(void); +const EVP_CIPHER *EVP_camellia_192_cfb8(void); +const EVP_CIPHER *EVP_camellia_192_cfb128(void); +# define EVP_camellia_192_cfb EVP_camellia_192_cfb128 +const EVP_CIPHER *EVP_camellia_192_ofb(void); +const EVP_CIPHER *EVP_camellia_192_ctr(void); +const EVP_CIPHER *EVP_camellia_256_ecb(void); +const EVP_CIPHER *EVP_camellia_256_cbc(void); +const EVP_CIPHER *EVP_camellia_256_cfb1(void); +const EVP_CIPHER *EVP_camellia_256_cfb8(void); +const EVP_CIPHER *EVP_camellia_256_cfb128(void); +# define EVP_camellia_256_cfb EVP_camellia_256_cfb128 +const EVP_CIPHER *EVP_camellia_256_ofb(void); +const EVP_CIPHER *EVP_camellia_256_ctr(void); +# endif +# ifndef OPENSSL_NO_CHACHA +const EVP_CIPHER *EVP_chacha20(void); +# ifndef OPENSSL_NO_POLY1305 +const EVP_CIPHER *EVP_chacha20_poly1305(void); +# endif +# endif + +# ifndef OPENSSL_NO_SEED +const EVP_CIPHER *EVP_seed_ecb(void); +const EVP_CIPHER *EVP_seed_cbc(void); +const EVP_CIPHER *EVP_seed_cfb128(void); +# define EVP_seed_cfb EVP_seed_cfb128 +const EVP_CIPHER *EVP_seed_ofb(void); +# endif + +# ifndef OPENSSL_NO_SM4 +const EVP_CIPHER *EVP_sm4_ecb(void); +const EVP_CIPHER *EVP_sm4_cbc(void); +const EVP_CIPHER *EVP_sm4_cfb128(void); +# define EVP_sm4_cfb EVP_sm4_cfb128 +const EVP_CIPHER *EVP_sm4_ofb(void); +const EVP_CIPHER *EVP_sm4_ctr(void); +# endif + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define OPENSSL_add_all_algorithms_conf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS \ + | OPENSSL_INIT_LOAD_CONFIG, NULL) +# define OPENSSL_add_all_algorithms_noconf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +# ifdef OPENSSL_LOAD_CONF +# define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_conf() +# else +# define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_noconf() +# endif + +# define OpenSSL_add_all_ciphers() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL) +# define OpenSSL_add_all_digests() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +# define EVP_cleanup() while(0) continue +# endif + +int EVP_add_cipher(const EVP_CIPHER *cipher); +int EVP_add_digest(const EVP_MD *digest); + +const EVP_CIPHER *EVP_get_cipherbyname(const char *name); +const EVP_MD *EVP_get_digestbyname(const char *name); + +void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_sorted(void (*fn) + (const EVP_CIPHER *ciph, const char *from, + const char *to, void *x), void *arg); +void EVP_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_CIPHER *cipher, void *arg), + 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); +void EVP_MD_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_MD *md, void *arg), + void *arg); + +/* MAC stuff */ + +EVP_MAC *EVP_MAC_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); +int EVP_MAC_up_ref(EVP_MAC *mac); +void EVP_MAC_free(EVP_MAC *mac); +const char *EVP_MAC_get0_name(const EVP_MAC *mac); +const char *EVP_MAC_get0_description(const EVP_MAC *mac); +int EVP_MAC_is_a(const EVP_MAC *mac, const char *name); +const OSSL_PROVIDER *EVP_MAC_get0_provider(const EVP_MAC *mac); +int EVP_MAC_get_params(EVP_MAC *mac, OSSL_PARAM params[]); + +EVP_MAC_CTX *EVP_MAC_CTX_new(EVP_MAC *mac); +void EVP_MAC_CTX_free(EVP_MAC_CTX *ctx); +EVP_MAC_CTX *EVP_MAC_CTX_dup(const EVP_MAC_CTX *src); +EVP_MAC *EVP_MAC_CTX_get0_mac(EVP_MAC_CTX *ctx); +int EVP_MAC_CTX_get_params(EVP_MAC_CTX *ctx, OSSL_PARAM params[]); +int EVP_MAC_CTX_set_params(EVP_MAC_CTX *ctx, const OSSL_PARAM params[]); + +size_t EVP_MAC_CTX_get_mac_size(EVP_MAC_CTX *ctx); +size_t EVP_MAC_CTX_get_block_size(EVP_MAC_CTX *ctx); +unsigned char *EVP_Q_mac(OSSL_LIB_CTX *libctx, const char *name, const char *propq, + const char *subalg, const OSSL_PARAM *params, + const void *key, size_t keylen, + const unsigned char *data, size_t datalen, + unsigned char *out, size_t outsize, size_t *outlen); +int EVP_MAC_init(EVP_MAC_CTX *ctx, const unsigned char *key, size_t keylen, + const OSSL_PARAM params[]); +int EVP_MAC_update(EVP_MAC_CTX *ctx, const unsigned char *data, size_t datalen); +int EVP_MAC_final(EVP_MAC_CTX *ctx, + unsigned char *out, size_t *outl, size_t outsize); +int EVP_MAC_finalXOF(EVP_MAC_CTX *ctx, unsigned char *out, size_t outsize); +const OSSL_PARAM *EVP_MAC_gettable_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_gettable_ctx_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_settable_ctx_params(const EVP_MAC *mac); +const OSSL_PARAM *EVP_MAC_CTX_gettable_params(EVP_MAC_CTX *ctx); +const OSSL_PARAM *EVP_MAC_CTX_settable_params(EVP_MAC_CTX *ctx); + +void EVP_MAC_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_MAC *mac, void *arg), + void *arg); +int EVP_MAC_names_do_all(const EVP_MAC *mac, + void (*fn)(const char *name, void *data), + void *data); + +/* RAND stuff */ +EVP_RAND *EVP_RAND_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); +int EVP_RAND_up_ref(EVP_RAND *rand); +void EVP_RAND_free(EVP_RAND *rand); +const char *EVP_RAND_get0_name(const EVP_RAND *rand); +const char *EVP_RAND_get0_description(const EVP_RAND *md); +int EVP_RAND_is_a(const EVP_RAND *rand, const char *name); +const OSSL_PROVIDER *EVP_RAND_get0_provider(const EVP_RAND *rand); +int EVP_RAND_get_params(EVP_RAND *rand, OSSL_PARAM params[]); + +EVP_RAND_CTX *EVP_RAND_CTX_new(EVP_RAND *rand, EVP_RAND_CTX *parent); +int EVP_RAND_CTX_up_ref(EVP_RAND_CTX *ctx); +void EVP_RAND_CTX_free(EVP_RAND_CTX *ctx); +EVP_RAND *EVP_RAND_CTX_get0_rand(EVP_RAND_CTX *ctx); +int EVP_RAND_CTX_get_params(EVP_RAND_CTX *ctx, OSSL_PARAM params[]); +int EVP_RAND_CTX_set_params(EVP_RAND_CTX *ctx, const OSSL_PARAM params[]); +const OSSL_PARAM *EVP_RAND_gettable_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_gettable_ctx_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_settable_ctx_params(const EVP_RAND *rand); +const OSSL_PARAM *EVP_RAND_CTX_gettable_params(EVP_RAND_CTX *ctx); +const OSSL_PARAM *EVP_RAND_CTX_settable_params(EVP_RAND_CTX *ctx); + +void EVP_RAND_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_RAND *rand, void *arg), + void *arg); +int EVP_RAND_names_do_all(const EVP_RAND *rand, + void (*fn)(const char *name, void *data), + void *data); + +__owur int EVP_RAND_instantiate(EVP_RAND_CTX *ctx, unsigned int strength, + int prediction_resistance, + const unsigned char *pstr, size_t pstr_len, + const OSSL_PARAM params[]); +int EVP_RAND_uninstantiate(EVP_RAND_CTX *ctx); +__owur int EVP_RAND_generate(EVP_RAND_CTX *ctx, unsigned char *out, + size_t outlen, unsigned int strength, + int prediction_resistance, + const unsigned char *addin, size_t addin_len); +int EVP_RAND_reseed(EVP_RAND_CTX *ctx, int prediction_resistance, + const unsigned char *ent, size_t ent_len, + const unsigned char *addin, size_t addin_len); +__owur int EVP_RAND_nonce(EVP_RAND_CTX *ctx, unsigned char *out, size_t outlen); +__owur int EVP_RAND_enable_locking(EVP_RAND_CTX *ctx); + +int EVP_RAND_verify_zeroization(EVP_RAND_CTX *ctx); +unsigned int EVP_RAND_get_strength(EVP_RAND_CTX *ctx); +int EVP_RAND_get_state(EVP_RAND_CTX *ctx); + +# define EVP_RAND_STATE_UNINITIALISED 0 +# define EVP_RAND_STATE_READY 1 +# define EVP_RAND_STATE_ERROR 2 + +/* PKEY stuff */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_decrypt_old(unsigned char *dec_key, + const unsigned char *enc_key, + int enc_key_len, + EVP_PKEY *private_key); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_encrypt_old(unsigned char *enc_key, + const unsigned char *key, + int key_len, EVP_PKEY *pub_key); +# endif +int EVP_PKEY_is_a(const EVP_PKEY *pkey, const char *name); +int EVP_PKEY_type_names_do_all(const EVP_PKEY *pkey, + void (*fn)(const char *name, void *data), + void *data); +int EVP_PKEY_type(int type); +int EVP_PKEY_get_id(const EVP_PKEY *pkey); +# define EVP_PKEY_id EVP_PKEY_get_id +int EVP_PKEY_get_base_id(const EVP_PKEY *pkey); +# define EVP_PKEY_base_id EVP_PKEY_get_base_id +int EVP_PKEY_get_bits(const EVP_PKEY *pkey); +# define EVP_PKEY_bits EVP_PKEY_get_bits +int EVP_PKEY_get_security_bits(const EVP_PKEY *pkey); +# define EVP_PKEY_security_bits EVP_PKEY_get_security_bits +int EVP_PKEY_get_size(const EVP_PKEY *pkey); +# define EVP_PKEY_size EVP_PKEY_get_size +int EVP_PKEY_can_sign(const EVP_PKEY *pkey); +int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); +int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); +int EVP_PKEY_set_type_by_keymgmt(EVP_PKEY *pkey, EVP_KEYMGMT *keymgmt); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e); +OSSL_DEPRECATEDIN_3_0 +ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey); +# endif +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +OSSL_DEPRECATEDIN_3_0 +void *EVP_PKEY_get0(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); +# ifndef OPENSSL_NO_POLY1305 +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len); +# endif +# ifndef OPENSSL_NO_SIPHASH +OSSL_DEPRECATEDIN_3_0 +const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len); +# endif + +struct rsa_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct rsa_st *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); + +# ifndef OPENSSL_NO_DSA +struct dsa_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct dsa_st *EVP_PKEY_get0_DSA(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); +# endif + +# ifndef OPENSSL_NO_DH +struct dh_st; +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); +OSSL_DEPRECATEDIN_3_0 const struct dh_st *EVP_PKEY_get0_DH(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); +# endif + +# ifndef OPENSSL_NO_EC +struct ec_key_st; +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); +OSSL_DEPRECATEDIN_3_0 +const struct ec_key_st *EVP_PKEY_get0_EC_KEY(const EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +# endif +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +EVP_PKEY *EVP_PKEY_new(void); +int EVP_PKEY_up_ref(EVP_PKEY *pkey); +EVP_PKEY *EVP_PKEY_dup(EVP_PKEY *pkey); +void EVP_PKEY_free(EVP_PKEY *pkey); +const char *EVP_PKEY_get0_description(const EVP_PKEY *pkey); +const OSSL_PROVIDER *EVP_PKEY_get0_provider(const EVP_PKEY *key); + +EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PublicKey(const EVP_PKEY *a, unsigned char **pp); + + +EVP_PKEY *d2i_PrivateKey_ex(int type, EVP_PKEY **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +EVP_PKEY *d2i_AutoPrivateKey_ex(EVP_PKEY **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PrivateKey(const EVP_PKEY *a, unsigned char **pp); + +int i2d_KeyParams(const EVP_PKEY *a, unsigned char **pp); +EVP_PKEY *d2i_KeyParams(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_KeyParams_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_KeyParams_bio(int type, EVP_PKEY **a, BIO *in); + +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_parameters_eq(const EVP_PKEY *a, const EVP_PKEY *b); +int EVP_PKEY_eq(const EVP_PKEY *a, const EVP_PKEY *b); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); +# endif + +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); +# ifndef OPENSSL_NO_STDIO +int EVP_PKEY_print_public_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params_fp(FILE *fp, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +# endif + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); +int EVP_PKEY_get_default_digest_name(EVP_PKEY *pkey, + char *mdname, size_t mdname_sz); +int EVP_PKEY_digestsign_supports_digest(EVP_PKEY *pkey, OSSL_LIB_CTX *libctx, + const char *name, const char *propq); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * For backwards compatibility. Use EVP_PKEY_set1_encoded_public_key in + * preference + */ +# define EVP_PKEY_set1_tls_encodedpoint(pkey, pt, ptlen) \ + EVP_PKEY_set1_encoded_public_key((pkey), (pt), (ptlen)) +# endif + +int EVP_PKEY_set1_encoded_public_key(EVP_PKEY *pkey, + const unsigned char *pub, size_t publen); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * For backwards compatibility. Use EVP_PKEY_get1_encoded_public_key in + * preference + */ +# define EVP_PKEY_get1_tls_encodedpoint(pkey, ppt) \ + EVP_PKEY_get1_encoded_public_key((pkey), (ppt)) +# endif + +size_t EVP_PKEY_get1_encoded_public_key(EVP_PKEY *pkey, unsigned char **ppub); + +/* 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_PBE_keyivgen_ex(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de, OSSL_LIB_CTX *libctx, + const char *propq); +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); +int PKCS5_v2_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); + +#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 EVP_PBE_scrypt_ex(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, + OSSL_LIB_CTX *ctx, const char *propq); + +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); +int PKCS5_v2_scrypt_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); +#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); + +int EVP_PBE_CipherInit_ex(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); + +/* 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); +int EVP_PBE_find_ex(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen, EVP_PBE_KEYGEN_EX **pkeygen_ex); +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 +# define ASN1_PKEY_CTRL_CMS_IS_RI_TYPE_SUPPORTED 0xb + +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, + const 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, + const void *data, + const X509_ALGOR *a, + const ASN1_BIT_STRING *sig, + EVP_PKEY *pkey), + int (*item_sign) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + const void *data, + X509_ALGOR *alg1, + X509_ALGOR *alg2, + ASN1_BIT_STRING *sig)); + +void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD *ameth, + int (*siginf_set) (X509_SIG_INFO *siginf, + const X509_ALGOR *alg, + const ASN1_STRING *sig)); + +void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_pub_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_param_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_priv_key) (EVP_PKEY *pk, + const unsigned char + *priv, + size_t len)); +void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_pub_key) (EVP_PKEY *pk, + const unsigned char *pub, + size_t len)); +void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_priv_key) (const EVP_PKEY *pk, + unsigned char *priv, + size_t *len)); +void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_pub_key) (const EVP_PKEY *pk, + unsigned char *pub, + size_t *len)); + +void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_security_bits) (const EVP_PKEY + *pk)); + +int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_id(EVP_PKEY_CTX *ctx, const void *id, int len); +int EVP_PKEY_CTX_get1_id(EVP_PKEY_CTX *ctx, void *id); +int EVP_PKEY_CTX_get1_id_len(EVP_PKEY_CTX *ctx, size_t *id_len); + +int EVP_PKEY_CTX_set_kem_op(EVP_PKEY_CTX *ctx, const char *op); + +const char *EVP_PKEY_get0_type_name(const EVP_PKEY *key); + +# define EVP_PKEY_OP_UNDEFINED 0 +# define EVP_PKEY_OP_PARAMGEN (1<<1) +# define EVP_PKEY_OP_KEYGEN (1<<2) +# define EVP_PKEY_OP_FROMDATA (1<<3) +# define EVP_PKEY_OP_SIGN (1<<4) +# define EVP_PKEY_OP_VERIFY (1<<5) +# define EVP_PKEY_OP_VERIFYRECOVER (1<<6) +# define EVP_PKEY_OP_SIGNCTX (1<<7) +# define EVP_PKEY_OP_VERIFYCTX (1<<8) +# define EVP_PKEY_OP_ENCRYPT (1<<9) +# define EVP_PKEY_OP_DECRYPT (1<<10) +# define EVP_PKEY_OP_DERIVE (1<<11) +# define EVP_PKEY_OP_ENCAPSULATE (1<<12) +# define EVP_PKEY_OP_DECAPSULATE (1<<13) + +# 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) + + +int EVP_PKEY_CTX_set_mac_key(EVP_PKEY_CTX *ctx, const unsigned char *key, + int keylen); + +# define EVP_PKEY_CTRL_MD 1 +# define EVP_PKEY_CTRL_PEER_KEY 2 +# 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 +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# 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_CMS_ENCRYPT 9 +# define EVP_PKEY_CTRL_CMS_DECRYPT 10 +# define EVP_PKEY_CTRL_CMS_SIGN 11 +# endif +# define EVP_PKEY_CTRL_CIPHER 12 +# define EVP_PKEY_CTRL_GET_MD 13 +# define EVP_PKEY_CTRL_SET_DIGEST_SIZE 14 +# define EVP_PKEY_CTRL_SET1_ID 15 +# define EVP_PKEY_CTRL_GET1_ID 16 +# define EVP_PKEY_CTRL_GET1_ID_LEN 17 + +# 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 +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); +OSSL_DEPRECATEDIN_3_0 EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, + const EVP_PKEY_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, + const EVP_PKEY_METHOD *src); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth); +OSSL_DEPRECATEDIN_3_0 size_t EVP_PKEY_meth_get_count(void); +OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx); +# endif + +EVP_KEYMGMT *EVP_KEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_KEYMGMT_up_ref(EVP_KEYMGMT *keymgmt); +void EVP_KEYMGMT_free(EVP_KEYMGMT *keymgmt); +const OSSL_PROVIDER *EVP_KEYMGMT_get0_provider(const EVP_KEYMGMT *keymgmt); +const char *EVP_KEYMGMT_get0_name(const EVP_KEYMGMT *keymgmt); +const char *EVP_KEYMGMT_get0_description(const EVP_KEYMGMT *keymgmt); +int EVP_KEYMGMT_is_a(const EVP_KEYMGMT *keymgmt, const char *name); +void EVP_KEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEYMGMT *keymgmt, void *arg), + void *arg); +int EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT *keymgmt, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_settable_params(const EVP_KEYMGMT *keymgmt); +const OSSL_PARAM *EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT *keymgmt); + +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_new_from_name(OSSL_LIB_CTX *libctx, + const char *name, + const char *propquery); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_pkey(OSSL_LIB_CTX *libctx, + EVP_PKEY *pkey, const char *propquery); +EVP_PKEY_CTX *EVP_PKEY_CTX_dup(const EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); +int EVP_PKEY_CTX_is_a(EVP_PKEY_CTX *ctx, const char *keytype); + +int EVP_PKEY_CTX_get_params(EVP_PKEY_CTX *ctx, OSSL_PARAM *params); +const OSSL_PARAM *EVP_PKEY_CTX_gettable_params(const EVP_PKEY_CTX *ctx); +int EVP_PKEY_CTX_set_params(EVP_PKEY_CTX *ctx, const OSSL_PARAM *params); +const OSSL_PARAM *EVP_PKEY_CTX_settable_params(const EVP_PKEY_CTX *ctx); +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, int p1, void *p2); +int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, + const char *value); +int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, uint64_t value); + +int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); +int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); + +int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md); + +int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); + +EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, + const unsigned char *key, int keylen); +EVP_PKEY *EVP_PKEY_new_raw_private_key_ex(OSSL_LIB_CTX *libctx, + const char *keytype, + const char *propq, + const unsigned char *priv, size_t len); +EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e, + const unsigned char *priv, + size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key_ex(OSSL_LIB_CTX *libctx, + const char *keytype, const char *propq, + const unsigned char *pub, size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e, + const unsigned char *pub, + size_t len); +int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv, + size_t *len); +int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub, + size_t *len); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, + size_t len, const EVP_CIPHER *cipher); +# endif + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_data(const 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); + +void EVP_SIGNATURE_free(EVP_SIGNATURE *signature); +int EVP_SIGNATURE_up_ref(EVP_SIGNATURE *signature); +OSSL_PROVIDER *EVP_SIGNATURE_get0_provider(const EVP_SIGNATURE *signature); +EVP_SIGNATURE *EVP_SIGNATURE_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_SIGNATURE_is_a(const EVP_SIGNATURE *signature, const char *name); +const char *EVP_SIGNATURE_get0_name(const EVP_SIGNATURE *signature); +const char *EVP_SIGNATURE_get0_description(const EVP_SIGNATURE *signature); +void EVP_SIGNATURE_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_SIGNATURE *signature, + void *data), + void *data); +int EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE *sig); +const OSSL_PARAM *EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE *sig); + +void EVP_ASYM_CIPHER_free(EVP_ASYM_CIPHER *cipher); +int EVP_ASYM_CIPHER_up_ref(EVP_ASYM_CIPHER *cipher); +OSSL_PROVIDER *EVP_ASYM_CIPHER_get0_provider(const EVP_ASYM_CIPHER *cipher); +EVP_ASYM_CIPHER *EVP_ASYM_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_ASYM_CIPHER_is_a(const EVP_ASYM_CIPHER *cipher, const char *name); +const char *EVP_ASYM_CIPHER_get0_name(const EVP_ASYM_CIPHER *cipher); +const char *EVP_ASYM_CIPHER_get0_description(const EVP_ASYM_CIPHER *cipher); +void EVP_ASYM_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_ASYM_CIPHER *cipher, + void *arg), + void *arg); +int EVP_ASYM_CIPHER_names_do_all(const EVP_ASYM_CIPHER *cipher, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_ASYM_CIPHER_gettable_ctx_params(const EVP_ASYM_CIPHER *ciph); +const OSSL_PARAM *EVP_ASYM_CIPHER_settable_ctx_params(const EVP_ASYM_CIPHER *ciph); + +void EVP_KEM_free(EVP_KEM *wrap); +int EVP_KEM_up_ref(EVP_KEM *wrap); +OSSL_PROVIDER *EVP_KEM_get0_provider(const EVP_KEM *wrap); +EVP_KEM *EVP_KEM_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +int EVP_KEM_is_a(const EVP_KEM *wrap, const char *name); +const char *EVP_KEM_get0_name(const EVP_KEM *wrap); +const char *EVP_KEM_get0_description(const EVP_KEM *wrap); +void EVP_KEM_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEM *wrap, void *arg), void *arg); +int EVP_KEM_names_do_all(const EVP_KEM *wrap, + void (*fn)(const char *name, void *data), void *data); +const OSSL_PARAM *EVP_KEM_gettable_ctx_params(const EVP_KEM *kem); +const OSSL_PARAM *EVP_KEM_settable_ctx_params(const EVP_KEM *kem); + +int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_sign_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +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_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +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_init_ex(EVP_PKEY_CTX *ctx, + const OSSL_PARAM params[]); +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_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +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_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +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_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX *ctx, EVP_PKEY *peer, + int validate_peer); +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); + +int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx, + unsigned char *wrappedkey, size_t *wrappedkeylen, + unsigned char *genkey, size_t *genkeylen); +int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx, + unsigned char *unwrapped, size_t *unwrappedlen, + const unsigned char *wrapped, size_t wrappedlen); + +typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_fromdata_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_fromdata(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey, int selection, + OSSL_PARAM param[]); +const OSSL_PARAM *EVP_PKEY_fromdata_settable(EVP_PKEY_CTX *ctx, int selection); + +int EVP_PKEY_todata(const EVP_PKEY *pkey, int selection, OSSL_PARAM **params); +int EVP_PKEY_export(const EVP_PKEY *pkey, int selection, + OSSL_CALLBACK *export_cb, void *export_cbarg); + +const OSSL_PARAM *EVP_PKEY_gettable_params(const EVP_PKEY *pkey); +int EVP_PKEY_get_params(const EVP_PKEY *pkey, OSSL_PARAM params[]); +int EVP_PKEY_get_int_param(const EVP_PKEY *pkey, const char *key_name, + int *out); +int EVP_PKEY_get_size_t_param(const EVP_PKEY *pkey, const char *key_name, + size_t *out); +int EVP_PKEY_get_bn_param(const EVP_PKEY *pkey, const char *key_name, + BIGNUM **bn); +int EVP_PKEY_get_utf8_string_param(const EVP_PKEY *pkey, const char *key_name, + char *str, size_t max_buf_sz, size_t *out_sz); +int EVP_PKEY_get_octet_string_param(const EVP_PKEY *pkey, const char *key_name, + unsigned char *buf, size_t max_buf_sz, + size_t *out_sz); + +const OSSL_PARAM *EVP_PKEY_settable_params(const EVP_PKEY *pkey); +int EVP_PKEY_set_params(EVP_PKEY *pkey, OSSL_PARAM params[]); +int EVP_PKEY_set_int_param(EVP_PKEY *pkey, const char *key_name, int in); +int EVP_PKEY_set_size_t_param(EVP_PKEY *pkey, const char *key_name, size_t in); +int EVP_PKEY_set_bn_param(EVP_PKEY *pkey, const char *key_name, + const BIGNUM *bn); +int EVP_PKEY_set_utf8_string_param(EVP_PKEY *pkey, const char *key_name, + const char *str); +int EVP_PKEY_set_octet_string_param(EVP_PKEY *pkey, const char *key_name, + const unsigned char *buf, size_t bsize); + +int EVP_PKEY_get_ec_point_conv_form(const EVP_PKEY *pkey); +int EVP_PKEY_get_field_type(const EVP_PKEY *pkey); + +EVP_PKEY *EVP_PKEY_Q_keygen(OSSL_LIB_CTX *libctx, const char *propq, + const char *type, ...); +int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_generate(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check_quick(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check_quick(EVP_PKEY_CTX *ctx); +int EVP_PKEY_private_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_pairwise_check(EVP_PKEY_CTX *ctx); + +# define EVP_PKEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EVP_PKEY, l, p, newf, dupf, freef) +int EVP_PKEY_set_ex_data(EVP_PKEY *key, int idx, void *arg); +void *EVP_PKEY_get_ex_data(const EVP_PKEY *key, int idx); + +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); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init) (EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_copy + (EVP_PKEY_METHOD *pmeth, int (*copy) (EVP_PKEY_CTX *dst, + const EVP_PKEY_CTX *src)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_cleanup + (EVP_PKEY_METHOD *pmeth, void (*cleanup) (EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 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)); +OSSL_DEPRECATEDIN_3_0 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)); +OSSL_DEPRECATEDIN_3_0 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)); +OSSL_DEPRECATEDIN_3_0 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)); +OSSL_DEPRECATEDIN_3_0 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)); +OSSL_DEPRECATEDIN_3_0 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)); +OSSL_DEPRECATEDIN_3_0 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)); +OSSL_DEPRECATEDIN_3_0 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)); +OSSL_DEPRECATEDIN_3_0 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)); +OSSL_DEPRECATEDIN_3_0 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)); +OSSL_DEPRECATEDIN_3_0 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)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestsign + (EVP_PKEY_METHOD *pmeth, + int (*digestsign) (EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestverify + (EVP_PKEY_METHOD *pmeth, + int (*digestverify) (EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_check + (EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_public_check + (EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_param_check + (EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digest_custom + (EVP_PKEY_METHOD *pmeth, int (*digest_custom) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_init + (const EVP_PKEY_METHOD *pmeth, int (**pinit) (EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_copy + (const EVP_PKEY_METHOD *pmeth, int (**pcopy) (EVP_PKEY_CTX *dst, + const EVP_PKEY_CTX *src)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_cleanup + (const EVP_PKEY_METHOD *pmeth, void (**pcleanup) (EVP_PKEY_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_paramgen + (const EVP_PKEY_METHOD *pmeth, int (**pparamgen_init) (EVP_PKEY_CTX *ctx), + int (**pparamgen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_keygen + (const EVP_PKEY_METHOD *pmeth, int (**pkeygen_init) (EVP_PKEY_CTX *ctx), + int (**pkeygen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_sign + (const EVP_PKEY_METHOD *pmeth, int (**psign_init) (EVP_PKEY_CTX *ctx), + int (**psign) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify + (const EVP_PKEY_METHOD *pmeth, int (**pverify_init) (EVP_PKEY_CTX *ctx), + int (**pverify) (EVP_PKEY_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify_recover + (const EVP_PKEY_METHOD *pmeth, + int (**pverify_recover_init) (EVP_PKEY_CTX *ctx), + int (**pverify_recover) (EVP_PKEY_CTX *ctx, unsigned char *sig, + size_t *siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_signctx + (const EVP_PKEY_METHOD *pmeth, + int (**psignctx_init) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (**psignctx) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, + EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verifyctx + (const EVP_PKEY_METHOD *pmeth, + int (**pverifyctx_init) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), + int (**pverifyctx) (EVP_PKEY_CTX *ctx, const unsigned char *sig, + int siglen, EVP_MD_CTX *mctx)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_encrypt + (const EVP_PKEY_METHOD *pmeth, int (**pencrypt_init) (EVP_PKEY_CTX *ctx), + int (**pencryptfn) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_decrypt + (const EVP_PKEY_METHOD *pmeth, int (**pdecrypt_init) (EVP_PKEY_CTX *ctx), + int (**pdecrypt) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_derive + (const EVP_PKEY_METHOD *pmeth, int (**pderive_init) (EVP_PKEY_CTX *ctx), + int (**pderive) (EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_ctrl + (const EVP_PKEY_METHOD *pmeth, + int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1, void *p2), + int (**pctrl_str) (EVP_PKEY_CTX *ctx, const char *type, + const char *value)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestsign + (const EVP_PKEY_METHOD *pmeth, + int (**digestsign) (EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestverify + (const EVP_PKEY_METHOD *pmeth, + int (**digestverify) (EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen, const unsigned char *tbs, + size_t tbslen)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_check + (const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_public_check + (const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_param_check + (const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey)); +OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digest_custom + (const EVP_PKEY_METHOD *pmeth, + int (**pdigest_custom) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx)); +# endif + +void EVP_KEYEXCH_free(EVP_KEYEXCH *exchange); +int EVP_KEYEXCH_up_ref(EVP_KEYEXCH *exchange); +EVP_KEYEXCH *EVP_KEYEXCH_fetch(OSSL_LIB_CTX *ctx, const char *algorithm, + const char *properties); +OSSL_PROVIDER *EVP_KEYEXCH_get0_provider(const EVP_KEYEXCH *exchange); +int EVP_KEYEXCH_is_a(const EVP_KEYEXCH *keyexch, const char *name); +const char *EVP_KEYEXCH_get0_name(const EVP_KEYEXCH *keyexch); +const char *EVP_KEYEXCH_get0_description(const EVP_KEYEXCH *keyexch); +void EVP_KEYEXCH_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KEYEXCH *keyexch, void *data), + void *data); +int EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *keyexch, + void (*fn)(const char *name, void *data), + void *data); +const OSSL_PARAM *EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH *keyexch); +const OSSL_PARAM *EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH *keyexch); + +void EVP_add_alg_module(void); + +int EVP_PKEY_CTX_set_group_name(EVP_PKEY_CTX *ctx, const char *name); +int EVP_PKEY_CTX_get_group_name(EVP_PKEY_CTX *ctx, char *name, size_t namelen); +int EVP_PKEY_get_group_name(const EVP_PKEY *pkey, char *name, size_t name_sz, + size_t *gname_len); + +OSSL_LIB_CTX *EVP_PKEY_CTX_get0_libctx(EVP_PKEY_CTX *ctx); +const char *EVP_PKEY_CTX_get0_propq(const EVP_PKEY_CTX *ctx); +const OSSL_PROVIDER *EVP_PKEY_CTX_get0_provider(const EVP_PKEY_CTX *ctx); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/evperr.h b/include/openssl/evperr.h new file mode 100644 index 0000000..a5053f6 --- /dev/null +++ b/include/openssl/evperr.h @@ -0,0 +1,134 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_EVPERR_H +# define OPENSSL_EVPERR_H +# pragma once + +# include +# include +# include + + + +/* + * EVP reason codes. + */ +# define EVP_R_AES_KEY_SETUP_FAILED 143 +# define EVP_R_ARIA_KEY_SETUP_FAILED 176 +# define EVP_R_BAD_ALGORITHM_NAME 200 +# define EVP_R_BAD_DECRYPT 100 +# define EVP_R_BAD_KEY_LENGTH 195 +# define EVP_R_BUFFER_TOO_SMALL 155 +# define EVP_R_CACHE_CONSTANTS_FAILED 225 +# define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 +# define EVP_R_CANNOT_GET_PARAMETERS 197 +# define EVP_R_CANNOT_SET_PARAMETERS 198 +# define EVP_R_CIPHER_NOT_GCM_MODE 184 +# define EVP_R_CIPHER_PARAMETER_ERROR 122 +# define EVP_R_COMMAND_NOT_SUPPORTED 147 +# define EVP_R_CONFLICTING_ALGORITHM_NAME 201 +# 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_DEFAULT_QUERY_PARSE_ERROR 210 +# define EVP_R_DIFFERENT_KEY_TYPES 101 +# define EVP_R_DIFFERENT_PARAMETERS 153 +# define EVP_R_ERROR_LOADING_SECTION 165 +# 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_ECX_KEY 219 +# define EVP_R_EXPECTING_A_EC_KEY 142 +# define EVP_R_EXPECTING_A_POLY1305_KEY 164 +# define EVP_R_EXPECTING_A_SIPHASH_KEY 175 +# define EVP_R_FINAL_ERROR 188 +# define EVP_R_GENERATE_ERROR 214 +# define EVP_R_GET_RAW_KEY_FAILED 182 +# define EVP_R_ILLEGAL_SCRYPT_PARAMETERS 171 +# define EVP_R_INACCESSIBLE_DOMAIN_PARAMETERS 204 +# define EVP_R_INACCESSIBLE_KEY 203 +# define EVP_R_INITIALIZATION_ERROR 134 +# define EVP_R_INPUT_NOT_INITIALIZED 111 +# define EVP_R_INVALID_CUSTOM_LENGTH 185 +# define EVP_R_INVALID_DIGEST 152 +# define EVP_R_INVALID_IV_LENGTH 194 +# define EVP_R_INVALID_KEY 163 +# define EVP_R_INVALID_KEY_LENGTH 130 +# define EVP_R_INVALID_LENGTH 221 +# define EVP_R_INVALID_NULL_ALGORITHM 218 +# define EVP_R_INVALID_OPERATION 148 +# define EVP_R_INVALID_PROVIDER_FUNCTIONS 193 +# define EVP_R_INVALID_SALT_LENGTH 186 +# define EVP_R_INVALID_SECRET_LENGTH 223 +# define EVP_R_INVALID_SEED_LENGTH 220 +# define EVP_R_INVALID_VALUE 222 +# define EVP_R_KEYMGMT_EXPORT_FAILURE 205 +# define EVP_R_KEY_SETUP_FAILED 180 +# define EVP_R_LOCKING_NOT_SUPPORTED 213 +# define EVP_R_MEMORY_LIMIT_EXCEEDED 172 +# define EVP_R_MESSAGE_DIGEST_IS_NULL 159 +# define EVP_R_METHOD_NOT_SUPPORTED 144 +# define EVP_R_MISSING_PARAMETERS 103 +# define EVP_R_NOT_ABLE_TO_COPY_CTX 190 +# define EVP_R_NOT_XOF_OR_INVALID_LENGTH 178 +# define EVP_R_NO_CIPHER_SET 131 +# define EVP_R_NO_DEFAULT_DIGEST 158 +# define EVP_R_NO_DIGEST_SET 139 +# define EVP_R_NO_IMPORT_FUNCTION 206 +# define EVP_R_NO_KEYMGMT_AVAILABLE 199 +# define EVP_R_NO_KEYMGMT_PRESENT 196 +# define EVP_R_NO_KEY_SET 154 +# define EVP_R_NO_OPERATION_SET 149 +# define EVP_R_NULL_MAC_PKEY_CTX 208 +# define EVP_R_ONLY_ONESHOT_SUPPORTED 177 +# define EVP_R_OPERATION_NOT_INITIALIZED 151 +# define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +# define EVP_R_OUTPUT_WOULD_OVERFLOW 202 +# define EVP_R_PARAMETER_TOO_LARGE 187 +# define EVP_R_PARTIALLY_OVERLAPPING 162 +# define EVP_R_PBKDF2_ERROR 181 +# define EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED 179 +# define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 +# define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 +# define EVP_R_PUBLIC_KEY_NOT_RSA 106 +# define EVP_R_SETTING_XOF_FAILED 227 +# define EVP_R_SET_DEFAULT_PROPERTY_FAILURE 209 +# define EVP_R_TOO_MANY_RECORDS 183 +# define EVP_R_UNABLE_TO_ENABLE_LOCKING 212 +# define EVP_R_UNABLE_TO_GET_MAXIMUM_REQUEST_SIZE 215 +# define EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH 216 +# define EVP_R_UNABLE_TO_LOCK_CONTEXT 211 +# define EVP_R_UNABLE_TO_SET_CALLBACKS 217 +# define EVP_R_UNKNOWN_CIPHER 160 +# define EVP_R_UNKNOWN_DIGEST 161 +# define EVP_R_UNKNOWN_KEY_TYPE 207 +# 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_KEY_TYPE 224 +# 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_UPDATE_ERROR 189 +# define EVP_R_WRAP_MODE_NOT_ALLOWED 170 +# define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 +# define EVP_R_XTS_DATA_UNIT_IS_TOO_LARGE 191 +# define EVP_R_XTS_DUPLICATED_KEYS 192 + +#endif diff --git a/include/openssl/fips_names.h b/include/openssl/fips_names.h new file mode 100644 index 0000000..a94e262 --- /dev/null +++ b/include/openssl/fips_names.h @@ -0,0 +1,68 @@ +/* + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_FIPS_NAMES_H +# define OPENSSL_FIPS_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * Parameter names that the FIPS Provider defines + */ + +/* + * The calculated MAC of the module file (Used for FIPS Self Testing) + * Type: OSSL_PARAM_UTF8_STRING + */ +# define OSSL_PROV_FIPS_PARAM_MODULE_MAC "module-mac" +/* + * A version number for the fips install process (Used for FIPS Self Testing) + * Type: OSSL_PARAM_UTF8_STRING + */ +# define OSSL_PROV_FIPS_PARAM_INSTALL_VERSION "install-version" +/* + * The calculated MAC of the install status indicator (Used for FIPS Self Testing) + * Type: OSSL_PARAM_UTF8_STRING + */ +# define OSSL_PROV_FIPS_PARAM_INSTALL_MAC "install-mac" +/* + * The install status indicator (Used for FIPS Self Testing) + * Type: OSSL_PARAM_UTF8_STRING + */ +# define OSSL_PROV_FIPS_PARAM_INSTALL_STATUS "install-status" + +/* + * A boolean that determines if the FIPS conditional test errors result in + * the module entering an error state. + * Type: OSSL_PARAM_UTF8_STRING + */ +# define OSSL_PROV_FIPS_PARAM_CONDITIONAL_ERRORS "conditional-errors" + +/* + * A boolean that determines if the runtime FIPS security checks are performed. + * Type: OSSL_PARAM_UTF8_STRING + */ +# define OSSL_PROV_FIPS_PARAM_SECURITY_CHECKS "security-checks" + +/* + * A boolean that determines if the runtime FIPS check for TLS1_PRF EMS is performed. + * This is disabled by default. + * + * Type: OSSL_PARAM_UTF8_STRING + */ +# define OSSL_PROV_FIPS_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" + +# ifdef __cplusplus +} +# endif + +#endif /* OPENSSL_FIPS_NAMES_H */ diff --git a/include/openssl/fipskey.h b/include/openssl/fipskey.h new file mode 100644 index 0000000..c1debfe --- /dev/null +++ b/include/openssl/fipskey.h @@ -0,0 +1,36 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/fipskey.h.in + * + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_FIPSKEY_H +# define OPENSSL_FIPSKEY_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * The FIPS validation HMAC key, usable as an array initializer. + */ +#define FIPS_KEY_ELEMENTS \ + 0xf4, 0x55, 0x66, 0x50, 0xac, 0x31, 0xd3, 0x54, 0x61, 0x61, 0x0b, 0xac, 0x4e, 0xd8, 0x1b, 0x1a, 0x18, 0x1b, 0x2d, 0x8a, 0x43, 0xea, 0x28, 0x54, 0xcb, 0xae, 0x22, 0xca, 0x74, 0x56, 0x08, 0x13 + +/* + * The FIPS validation key, as a string. + */ +#define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/include/openssl/hmac.h b/include/openssl/hmac.h new file mode 100644 index 0000000..f9e1bff --- /dev/null +++ b/include/openssl/hmac.h @@ -0,0 +1,62 @@ +/* + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_HMAC_H +# define OPENSSL_HMAC_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_HMAC_H +# endif + +# include + +# include + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HMAC_MAX_MD_CBLOCK 200 /* Deprecated */ +# endif + +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 size_t HMAC_size(const HMAC_CTX *e); +OSSL_DEPRECATEDIN_3_0 HMAC_CTX *HMAC_CTX_new(void); +OSSL_DEPRECATEDIN_3_0 int HMAC_CTX_reset(HMAC_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 void HMAC_CTX_free(HMAC_CTX *ctx); +# endif +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur int HMAC_Init(HMAC_CTX *ctx, + const void *key, int len, + const EVP_MD *md); +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md, ENGINE *impl); +OSSL_DEPRECATEDIN_3_0 int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, + unsigned int *len); +OSSL_DEPRECATEDIN_3_0 __owur int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); +OSSL_DEPRECATEDIN_3_0 void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); +OSSL_DEPRECATEDIN_3_0 const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx); +# endif + +unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, + const unsigned char *data, size_t data_len, + unsigned char *md, unsigned int *md_len); + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/include/openssl/http.h b/include/openssl/http.h new file mode 100644 index 0000000..f7ab214 --- /dev/null +++ b/include/openssl/http.h @@ -0,0 +1,109 @@ +/* + * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright Siemens AG 2018-2020 + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_HTTP_H +# define OPENSSL_HTTP_H +# pragma once + +# include + +# include +# include +# include + + +# ifdef __cplusplus +extern "C" { +# endif + +# define OSSL_HTTP_NAME "http" +# define OSSL_HTTPS_NAME "https" +# define OSSL_HTTP_PREFIX OSSL_HTTP_NAME"://" +# define OSSL_HTTPS_PREFIX OSSL_HTTPS_NAME"://" +# define OSSL_HTTP_PORT "80" +# define OSSL_HTTPS_PORT "443" +# define OPENSSL_NO_PROXY "NO_PROXY" +# define OPENSSL_HTTP_PROXY "HTTP_PROXY" +# define OPENSSL_HTTPS_PROXY "HTTPS_PROXY" + +#define OSSL_HTTP_DEFAULT_MAX_LINE_LEN (4 * 1024) +#define OSSL_HTTP_DEFAULT_MAX_RESP_LEN (100 * 1024) + +/* Low-level HTTP API */ +OSSL_HTTP_REQ_CTX *OSSL_HTTP_REQ_CTX_new(BIO *wbio, BIO *rbio, int buf_size); +void OSSL_HTTP_REQ_CTX_free(OSSL_HTTP_REQ_CTX *rctx); +int OSSL_HTTP_REQ_CTX_set_request_line(OSSL_HTTP_REQ_CTX *rctx, int method_POST, + const char *server, const char *port, + const char *path); +int OSSL_HTTP_REQ_CTX_add1_header(OSSL_HTTP_REQ_CTX *rctx, + const char *name, const char *value); +int OSSL_HTTP_REQ_CTX_set_expected(OSSL_HTTP_REQ_CTX *rctx, + const char *content_type, int asn1, + int timeout, int keep_alive); +int OSSL_HTTP_REQ_CTX_set1_req(OSSL_HTTP_REQ_CTX *rctx, const char *content_type, + const ASN1_ITEM *it, const ASN1_VALUE *req); +int OSSL_HTTP_REQ_CTX_nbio(OSSL_HTTP_REQ_CTX *rctx); +int OSSL_HTTP_REQ_CTX_nbio_d2i(OSSL_HTTP_REQ_CTX *rctx, + ASN1_VALUE **pval, const ASN1_ITEM *it); +BIO *OSSL_HTTP_REQ_CTX_exchange(OSSL_HTTP_REQ_CTX *rctx); +BIO *OSSL_HTTP_REQ_CTX_get0_mem_bio(const OSSL_HTTP_REQ_CTX *rctx); +size_t OSSL_HTTP_REQ_CTX_get_resp_len(const OSSL_HTTP_REQ_CTX *rctx); +void OSSL_HTTP_REQ_CTX_set_max_response_length(OSSL_HTTP_REQ_CTX *rctx, + unsigned long len); +int OSSL_HTTP_is_alive(const OSSL_HTTP_REQ_CTX *rctx); + +/* High-level HTTP API */ +typedef BIO *(*OSSL_HTTP_bio_cb_t)(BIO *bio, void *arg, int connect, int detail); +OSSL_HTTP_REQ_CTX *OSSL_HTTP_open(const char *server, const char *port, + const char *proxy, const char *no_proxy, + int use_ssl, BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, int overall_timeout); +int OSSL_HTTP_proxy_connect(BIO *bio, const char *server, const char *port, + const char *proxyuser, const char *proxypass, + int timeout, BIO *bio_err, const char *prog); +int OSSL_HTTP_set1_request(OSSL_HTTP_REQ_CTX *rctx, const char *path, + const STACK_OF(CONF_VALUE) *headers, + const char *content_type, BIO *req, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout, int keep_alive); +BIO *OSSL_HTTP_exchange(OSSL_HTTP_REQ_CTX *rctx, char **redirection_url); +BIO *OSSL_HTTP_get(const char *url, const char *proxy, const char *no_proxy, + BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, const STACK_OF(CONF_VALUE) *headers, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout); +BIO *OSSL_HTTP_transfer(OSSL_HTTP_REQ_CTX **prctx, + const char *server, const char *port, + const char *path, int use_ssl, + const char *proxy, const char *no_proxy, + BIO *bio, BIO *rbio, + OSSL_HTTP_bio_cb_t bio_update_fn, void *arg, + int buf_size, const STACK_OF(CONF_VALUE) *headers, + const char *content_type, BIO *req, + const char *expected_content_type, int expect_asn1, + size_t max_resp_len, int timeout, int keep_alive); +int OSSL_HTTP_close(OSSL_HTTP_REQ_CTX *rctx, int ok); + +/* Auxiliary functions */ +int OSSL_parse_url(const char *url, char **pscheme, char **puser, char **phost, + char **pport, int *pport_num, + char **ppath, char **pquery, char **pfrag); +int OSSL_HTTP_parse_url(const char *url, int *pssl, char **puser, char **phost, + char **pport, int *pport_num, + char **ppath, char **pquery, char **pfrag); +const char *OSSL_HTTP_adapt_proxy(const char *proxy, const char *no_proxy, + const char *server, int use_ssl); + +# ifdef __cplusplus +} +# endif +#endif /* !defined(OPENSSL_HTTP_H) */ diff --git a/include/openssl/httperr.h b/include/openssl/httperr.h new file mode 100644 index 0000000..ee08959 --- /dev/null +++ b/include/openssl/httperr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_HTTPERR_H +# define OPENSSL_HTTPERR_H +# pragma once + +# include +# include +# include + + + +/* + * HTTP reason codes. + */ +# define HTTP_R_ASN1_LEN_EXCEEDS_MAX_RESP_LEN 108 +# define HTTP_R_CONNECT_FAILURE 100 +# define HTTP_R_ERROR_PARSING_ASN1_LENGTH 109 +# define HTTP_R_ERROR_PARSING_CONTENT_LENGTH 119 +# define HTTP_R_ERROR_PARSING_URL 101 +# define HTTP_R_ERROR_RECEIVING 103 +# define HTTP_R_ERROR_SENDING 102 +# define HTTP_R_FAILED_READING_DATA 128 +# define HTTP_R_HEADER_PARSE_ERROR 126 +# define HTTP_R_INCONSISTENT_CONTENT_LENGTH 120 +# define HTTP_R_INVALID_PORT_NUMBER 123 +# define HTTP_R_INVALID_URL_PATH 125 +# define HTTP_R_INVALID_URL_SCHEME 124 +# define HTTP_R_MAX_RESP_LEN_EXCEEDED 117 +# define HTTP_R_MISSING_ASN1_ENCODING 110 +# define HTTP_R_MISSING_CONTENT_TYPE 121 +# define HTTP_R_MISSING_REDIRECT_LOCATION 111 +# define HTTP_R_RECEIVED_ERROR 105 +# define HTTP_R_RECEIVED_WRONG_HTTP_VERSION 106 +# define HTTP_R_REDIRECTION_FROM_HTTPS_TO_HTTP 112 +# define HTTP_R_REDIRECTION_NOT_ENABLED 116 +# define HTTP_R_RESPONSE_LINE_TOO_LONG 113 +# define HTTP_R_RESPONSE_PARSE_ERROR 104 +# define HTTP_R_RETRY_TIMEOUT 129 +# define HTTP_R_SERVER_CANCELED_CONNECTION 127 +# define HTTP_R_SOCK_NOT_SUPPORTED 122 +# define HTTP_R_STATUS_CODE_UNSUPPORTED 114 +# define HTTP_R_TLS_NOT_ENABLED 107 +# define HTTP_R_TOO_MANY_REDIRECTIONS 115 +# define HTTP_R_UNEXPECTED_CONTENT_TYPE 118 + +#endif diff --git a/include/openssl/idea.h b/include/openssl/idea.h new file mode 100644 index 0000000..1f9bb3b --- /dev/null +++ b/include/openssl/idea.h @@ -0,0 +1,82 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_IDEA_H +# define OPENSSL_IDEA_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_IDEA_H +# endif + +# include + +# ifndef OPENSSL_NO_IDEA +# ifdef __cplusplus +extern "C" { +# endif + +# define IDEA_BLOCK 8 +# define IDEA_KEY_LENGTH 16 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 + +typedef unsigned int IDEA_INT; + +# define IDEA_ENCRYPT 1 +# define IDEA_DECRYPT 0 + +typedef struct idea_key_st { + IDEA_INT data[9][6]; +} IDEA_KEY_SCHEDULE; +#endif +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *IDEA_options(void); +OSSL_DEPRECATEDIN_3_0 void IDEA_ecb_encrypt(const unsigned char *in, + unsigned char *out, + IDEA_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 void IDEA_set_encrypt_key(const unsigned char *key, + IDEA_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 void IDEA_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, + IDEA_KEY_SCHEDULE *dk); +OSSL_DEPRECATEDIN_3_0 void IDEA_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int enc); +OSSL_DEPRECATEDIN_3_0 void IDEA_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int *num, + int enc); +OSSL_DEPRECATEDIN_3_0 void IDEA_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + IDEA_KEY_SCHEDULE *ks, + unsigned char *iv, int *num); +OSSL_DEPRECATEDIN_3_0 void IDEA_encrypt(unsigned long *in, + IDEA_KEY_SCHEDULE *ks); +#endif + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# 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/include/openssl/kdf.h b/include/openssl/kdf.h new file mode 100644 index 0000000..0983230 --- /dev/null +++ b/include/openssl/kdf.h @@ -0,0 +1,138 @@ +/* + * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_KDF_H +# define OPENSSL_KDF_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_KDF_H +# endif + +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +int EVP_KDF_up_ref(EVP_KDF *kdf); +void EVP_KDF_free(EVP_KDF *kdf); +EVP_KDF *EVP_KDF_fetch(OSSL_LIB_CTX *libctx, const char *algorithm, + const char *properties); + +EVP_KDF_CTX *EVP_KDF_CTX_new(EVP_KDF *kdf); +void EVP_KDF_CTX_free(EVP_KDF_CTX *ctx); +EVP_KDF_CTX *EVP_KDF_CTX_dup(const EVP_KDF_CTX *src); +const char *EVP_KDF_get0_description(const EVP_KDF *kdf); +int EVP_KDF_is_a(const EVP_KDF *kdf, const char *name); +const char *EVP_KDF_get0_name(const EVP_KDF *kdf); +const OSSL_PROVIDER *EVP_KDF_get0_provider(const EVP_KDF *kdf); +const EVP_KDF *EVP_KDF_CTX_kdf(EVP_KDF_CTX *ctx); + +void EVP_KDF_CTX_reset(EVP_KDF_CTX *ctx); +size_t EVP_KDF_CTX_get_kdf_size(EVP_KDF_CTX *ctx); +int EVP_KDF_derive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen, + const OSSL_PARAM params[]); +int EVP_KDF_get_params(EVP_KDF *kdf, OSSL_PARAM params[]); +int EVP_KDF_CTX_get_params(EVP_KDF_CTX *ctx, OSSL_PARAM params[]); +int EVP_KDF_CTX_set_params(EVP_KDF_CTX *ctx, const OSSL_PARAM params[]); +const OSSL_PARAM *EVP_KDF_gettable_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_gettable_ctx_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_settable_ctx_params(const EVP_KDF *kdf); +const OSSL_PARAM *EVP_KDF_CTX_gettable_params(EVP_KDF_CTX *ctx); +const OSSL_PARAM *EVP_KDF_CTX_settable_params(EVP_KDF_CTX *ctx); + +void EVP_KDF_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(EVP_KDF *kdf, void *arg), + void *arg); +int EVP_KDF_names_do_all(const EVP_KDF *kdf, + void (*fn)(const char *name, void *data), + void *data); + +# define EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND 0 +# define EVP_KDF_HKDF_MODE_EXTRACT_ONLY 1 +# define EVP_KDF_HKDF_MODE_EXPAND_ONLY 2 + +#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_CLI_TO_SRV 65 +#define EVP_KDF_SSHKDF_TYPE_INITIAL_IV_SRV_TO_CLI 66 +#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_CLI_TO_SRV 67 +#define EVP_KDF_SSHKDF_TYPE_ENCRYPTION_KEY_SRV_TO_CLI 68 +#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_CLI_TO_SRV 69 +#define EVP_KDF_SSHKDF_TYPE_INTEGRITY_KEY_SRV_TO_CLI 70 + +/**** The legacy PKEY-based KDF API follows. ****/ + +# define EVP_PKEY_CTRL_TLS_MD (EVP_PKEY_ALG_CTRL) +# define EVP_PKEY_CTRL_TLS_SECRET (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_TLS_SEED (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_HKDF_MD (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_HKDF_SALT (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_HKDF_KEY (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_HKDF_INFO (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_HKDF_MODE (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_PASS (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_SCRYPT_SALT (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_SCRYPT_N (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_SCRYPT_R (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_SCRYPT_P (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES (EVP_PKEY_ALG_CTRL + 13) + +# define EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND \ + EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND +# define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY \ + EVP_KDF_HKDF_MODE_EXTRACT_ONLY +# define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY \ + EVP_KDF_HKDF_MODE_EXPAND_ONLY + +int EVP_PKEY_CTX_set_tls1_prf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_tls1_prf_secret(EVP_PKEY_CTX *pctx, + const unsigned char *sec, int seclen); + +int EVP_PKEY_CTX_add1_tls1_prf_seed(EVP_PKEY_CTX *pctx, + const unsigned char *seed, int seedlen); + +int EVP_PKEY_CTX_set_hkdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); + +int EVP_PKEY_CTX_set1_hkdf_salt(EVP_PKEY_CTX *ctx, + const unsigned char *salt, int saltlen); + +int EVP_PKEY_CTX_set1_hkdf_key(EVP_PKEY_CTX *ctx, + const unsigned char *key, int keylen); + +int EVP_PKEY_CTX_add1_hkdf_info(EVP_PKEY_CTX *ctx, + const unsigned char *info, int infolen); + +int EVP_PKEY_CTX_set_hkdf_mode(EVP_PKEY_CTX *ctx, int mode); +# define EVP_PKEY_CTX_hkdf_mode EVP_PKEY_CTX_set_hkdf_mode + +int EVP_PKEY_CTX_set1_pbe_pass(EVP_PKEY_CTX *ctx, const char *pass, + int passlen); + +int EVP_PKEY_CTX_set1_scrypt_salt(EVP_PKEY_CTX *ctx, + const unsigned char *salt, int saltlen); + +int EVP_PKEY_CTX_set_scrypt_N(EVP_PKEY_CTX *ctx, uint64_t n); + +int EVP_PKEY_CTX_set_scrypt_r(EVP_PKEY_CTX *ctx, uint64_t r); + +int EVP_PKEY_CTX_set_scrypt_p(EVP_PKEY_CTX *ctx, uint64_t p); + +int EVP_PKEY_CTX_set_scrypt_maxmem_bytes(EVP_PKEY_CTX *ctx, + uint64_t maxmem_bytes); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/kdferr.h b/include/openssl/kdferr.h new file mode 100644 index 0000000..963d766 --- /dev/null +++ b/include/openssl/kdferr.h @@ -0,0 +1,16 @@ +/* + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_KDFERR_H +# define OPENSSL_KDFERR_H +# pragma once + +#include + +#endif /* !defined(OPENSSL_KDFERR_H) */ diff --git a/include/openssl/lhash.h b/include/openssl/lhash.h new file mode 100644 index 0000000..f4155df --- /dev/null +++ b/include/openssl/lhash.h @@ -0,0 +1,331 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with 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 OPENSSL_LHASH_H +# define OPENSSL_LHASH_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_LHASH_H +# endif + +# include +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif + +#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_flush(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 +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_1 +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +OSSL_DEPRECATEDIN_3_1 void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +# endif + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# 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 + +/* Helper macro for internal use */ +# define DEFINE_LHASH_OF_INTERNAL(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ + typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ + typedef void (*lh_##type##_doallfunc)(type *a); \ + static ossl_unused ossl_inline type *\ + ossl_check_##type##_lh_plain_type(type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const type * \ + ossl_check_const_##type##_lh_plain_type(const type *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_LHASH * \ + ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ + { \ + return (const OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LHASH * \ + ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ + { \ + return (OPENSSL_LHASH *)lh; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC \ + ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ + { \ + return (OPENSSL_LH_COMPFUNC)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC \ + ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ + { \ + return (OPENSSL_LH_HASHFUNC)hfn; \ + } \ + static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC \ + ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ + { \ + return (OPENSSL_LH_DOALL_FUNC)dfn; \ + } \ + LHASH_OF(type) + +# ifndef OPENSSL_NO_DEPRECATED_3_1 +# define DEFINE_LHASH_OF_DEPRECATED(type) \ + static ossl_unused ossl_inline void \ + lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } +# else +# define DEFINE_LHASH_OF_DEPRECATED(type) +# endif + +# define DEFINE_LHASH_OF_EX(type) \ + LHASH_OF(type) { \ + union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; \ + }; \ + static ossl_unused ossl_inline LHASH_OF(type) * \ + lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ + { \ + return (LHASH_OF(type) *) \ + OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_flush(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_flush((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + { \ + return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type * \ + lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline int \ + lh_##type##_error(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_num_items(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long \ + lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + { \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall(LHASH_OF(type) *lh, void (*doall)(type *)) \ + { \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + } \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_arg(LHASH_OF(type) *lh, \ + void (*doallarg)(type *, void *), void *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ + (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ + } \ + LHASH_OF(type) + +# define DEFINE_LHASH_OF(type) \ + DEFINE_LHASH_OF_EX(type); \ + DEFINE_LHASH_OF_DEPRECATED(type) \ + LHASH_OF(type) + +#define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ + int_implement_lhash_doall(type, argtype, const type) + +#define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \ + int_implement_lhash_doall(type, argtype, type) + +#define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ + void (*fn)(cbargtype *, argtype *), \ + argtype *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ + (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + } \ + LHASH_OF(type) + +DEFINE_LHASH_OF_INTERNAL(OPENSSL_STRING); +#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_delete(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_retrieve(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) +#define lh_OPENSSL_STRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) +#define lh_OPENSSL_STRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_STRING_lh_type(lh)) +#define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) +#define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) +DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); +#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) +#define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_delete(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_retrieve(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) +#define lh_OPENSSL_CSTRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) +#define lh_OPENSSL_CSTRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh)) +#define lh_OPENSSL_CSTRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh), dl) +#define lh_OPENSSL_CSTRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_doallfunc_type(dfn)) + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/openssl/macros.h b/include/openssl/macros.h new file mode 100644 index 0000000..bcd42ec --- /dev/null +++ b/include/openssl/macros.h @@ -0,0 +1,325 @@ +/* + * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_MACROS_H +# define OPENSSL_MACROS_H +# pragma once + +#include +#include + + +/* Helper macros for CPP string composition */ +# define OPENSSL_MSTR_HELPER(x) #x +# define OPENSSL_MSTR(x) OPENSSL_MSTR_HELPER(x) + +/* + * Sometimes OPENSSL_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; + +/* + * Generic deprecation macro + * + * If OPENSSL_SUPPRESS_DEPRECATED is defined, then OSSL_DEPRECATED and + * OSSL_DEPRECATED_FOR become no-ops + */ +# ifndef OSSL_DEPRECATED +# undef OSSL_DEPRECATED_FOR +# ifndef OPENSSL_SUPPRESS_DEPRECATED +# if defined(_MSC_VER) + /* + * MSVC supports __declspec(deprecated) since MSVC 2003 (13.10), + * and __declspec(deprecated(message)) since MSVC 2005 (14.00) + */ +# if _MSC_VER >= 1400 +# define OSSL_DEPRECATED(since) \ + __declspec(deprecated("Since OpenSSL " # since)) +# define OSSL_DEPRECATED_FOR(since, message) \ + __declspec(deprecated("Since OpenSSL " # since ";" message)) +# elif _MSC_VER >= 1310 +# define OSSL_DEPRECATED(since) __declspec(deprecated) +# define OSSL_DEPRECATED_FOR(since, message) __declspec(deprecated) +# endif +# elif defined(__GNUC__) + /* + * According to GCC documentation, deprecations with message appeared in + * GCC 4.5.0 + */ +# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) +# define OSSL_DEPRECATED(since) \ + __attribute__((deprecated("Since OpenSSL " # since))) +# define OSSL_DEPRECATED_FOR(since, message) \ + __attribute__((deprecated("Since OpenSSL " # since ";" message))) +# elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# define OSSL_DEPRECATED(since) __attribute__((deprecated)) +# define OSSL_DEPRECATED_FOR(since, message) __attribute__((deprecated)) +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# define OSSL_DEPRECATED(since) __attribute__ ((deprecated)) +# define OSSL_DEPRECATED_FOR(since, message) __attribute__ ((deprecated)) +# endif +# endif +# endif +# endif + +/* + * Still not defined? Then define no-op macros. This means these macros + * are unsuitable for use in a typedef. + */ +# ifndef OSSL_DEPRECATED +# define OSSL_DEPRECATED(since) extern +# define OSSL_DEPRECATED_FOR(since, message) extern +# endif + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . If this is + * undefined, the value of the macro OPENSSL_CONFIGURED_API (defined in + * ) is the default. + * + * For any version number up until version 1.1.x, is expected to be + * the calculated version number 0xMNNFFPPSL. + * For version numbers 3.0 and on, is expected to be a computation + * of the major and minor numbers in decimal using this formula: + * + * MAJOR * 10000 + MINOR * 100 + * + * So version 3.0 becomes 30000, version 3.2 becomes 30200, etc. + */ + +/* + * We use the OPENSSL_API_COMPAT value to define API level macros. These + * macros are used to enable or disable features at that API version boundary. + */ + +# ifdef OPENSSL_API_LEVEL +# error "OPENSSL_API_LEVEL must not be defined by application" +# endif + +/* + * We figure out what API level was intended by simple numeric comparison. + * The lowest old style number we recognise is 0x00908000L, so we take some + * safety margin and assume that anything below 0x00900000L is a new style + * number. This allows new versions up to and including v943.71.83. + */ +# ifdef OPENSSL_API_COMPAT +# if OPENSSL_API_COMPAT < 0x900000L +# define OPENSSL_API_LEVEL (OPENSSL_API_COMPAT) +# else +# define OPENSSL_API_LEVEL \ + (((OPENSSL_API_COMPAT >> 28) & 0xF) * 10000 \ + + ((OPENSSL_API_COMPAT >> 20) & 0xFF) * 100 \ + + ((OPENSSL_API_COMPAT >> 12) & 0xFF)) +# endif +# endif + +/* + * If OPENSSL_API_COMPAT wasn't given, we use default numbers to set + * the API compatibility level. + */ +# ifndef OPENSSL_API_LEVEL +# if OPENSSL_CONFIGURED_API > 0 +# define OPENSSL_API_LEVEL (OPENSSL_CONFIGURED_API) +# else +# define OPENSSL_API_LEVEL \ + (OPENSSL_VERSION_MAJOR * 10000 + OPENSSL_VERSION_MINOR * 100) +# endif +# endif + +# if OPENSSL_API_LEVEL > OPENSSL_CONFIGURED_API +# error "The requested API level higher than the configured API compatibility level" +# endif + +/* + * Check of sane values. + */ +/* Can't go higher than the current version. */ +# if OPENSSL_API_LEVEL > (OPENSSL_VERSION_MAJOR * 10000 + OPENSSL_VERSION_MINOR * 100) +# error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +# endif +/* OpenSSL will have no version 2.y.z */ +# if OPENSSL_API_LEVEL < 30000 && OPENSSL_API_LEVEL >= 20000 +# error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +# endif +/* Below 0.9.8 is unacceptably low */ +# if OPENSSL_API_LEVEL < 908 +# error "OPENSSL_API_COMPAT expresses an impossible API compatibility level" +# endif + +/* + * Define macros for deprecation and simulated removal purposes. + * + * The macros OSSL_DEPRECATED_{major}_{minor} are always defined for + * all OpenSSL versions we care for. They can be used as attributes + * in function declarations where appropriate. + * + * The macros OPENSSL_NO_DEPRECATED_{major}_{minor} are defined for + * all OpenSSL versions up to or equal to the version given with + * OPENSSL_API_COMPAT. They are used as guards around anything that's + * deprecated up to that version, as an effect of the developer option + * 'no-deprecated'. + */ + +# undef OPENSSL_NO_DEPRECATED_3_0 +# undef OPENSSL_NO_DEPRECATED_1_1_1 +# undef OPENSSL_NO_DEPRECATED_1_1_0 +# undef OPENSSL_NO_DEPRECATED_1_0_2 +# undef OPENSSL_NO_DEPRECATED_1_0_1 +# undef OPENSSL_NO_DEPRECATED_1_0_0 +# undef OPENSSL_NO_DEPRECATED_0_9_8 + +# if OPENSSL_API_LEVEL >= 30100 +# ifndef OPENSSL_NO_DEPRECATED +# define OSSL_DEPRECATEDIN_3_1 OSSL_DEPRECATED(3.1) +# define OSSL_DEPRECATEDIN_3_1_FOR(msg) OSSL_DEPRECATED_FOR(3.1, msg) +# else +# define OPENSSL_NO_DEPRECATED_3_1 +# endif +# else +# define OSSL_DEPRECATEDIN_3_1 +# define OSSL_DEPRECATEDIN_3_1_FOR(msg) +# endif +# if OPENSSL_API_LEVEL >= 30000 +# ifndef OPENSSL_NO_DEPRECATED +# define OSSL_DEPRECATEDIN_3_0 OSSL_DEPRECATED(3.0) +# define OSSL_DEPRECATEDIN_3_0_FOR(msg) OSSL_DEPRECATED_FOR(3.0, msg) +# else +# define OPENSSL_NO_DEPRECATED_3_0 +# endif +# else +# define OSSL_DEPRECATEDIN_3_0 +# define OSSL_DEPRECATEDIN_3_0_FOR(msg) +# endif +# if OPENSSL_API_LEVEL >= 10101 +# ifndef OPENSSL_NO_DEPRECATED +# define OSSL_DEPRECATEDIN_1_1_1 OSSL_DEPRECATED(1.1.1) +# define OSSL_DEPRECATEDIN_1_1_1_FOR(msg) OSSL_DEPRECATED_FOR(1.1.1, msg) +# else +# define OPENSSL_NO_DEPRECATED_1_1_1 +# endif +# else +# define OSSL_DEPRECATEDIN_1_1_1 +# define OSSL_DEPRECATEDIN_1_1_1_FOR(msg) +# endif +# if OPENSSL_API_LEVEL >= 10100 +# ifndef OPENSSL_NO_DEPRECATED +# define OSSL_DEPRECATEDIN_1_1_0 OSSL_DEPRECATED(1.1.0) +# define OSSL_DEPRECATEDIN_1_1_0_FOR(msg) OSSL_DEPRECATED_FOR(1.1.0, msg) +# else +# define OPENSSL_NO_DEPRECATED_1_1_0 +# endif +# else +# define OSSL_DEPRECATEDIN_1_1_0 +# define OSSL_DEPRECATEDIN_1_1_0_FOR(msg) +# endif +# if OPENSSL_API_LEVEL >= 10002 +# ifndef OPENSSL_NO_DEPRECATED +# define OSSL_DEPRECATEDIN_1_0_2 OSSL_DEPRECATED(1.0.2) +# define OSSL_DEPRECATEDIN_1_0_2_FOR(msg) OSSL_DEPRECATED_FOR(1.0.2, msg) +# else +# define OPENSSL_NO_DEPRECATED_1_0_2 +# endif +# else +# define OSSL_DEPRECATEDIN_1_0_2 +# define OSSL_DEPRECATEDIN_1_0_2_FOR(msg) +# endif +# if OPENSSL_API_LEVEL >= 10001 +# ifndef OPENSSL_NO_DEPRECATED +# define OSSL_DEPRECATEDIN_1_0_1 OSSL_DEPRECATED(1.0.1) +# define OSSL_DEPRECATEDIN_1_0_1_FOR(msg) OSSL_DEPRECATED_FOR(1.0.1, msg) +# else +# define OPENSSL_NO_DEPRECATED_1_0_1 +# endif +# else +# define OSSL_DEPRECATEDIN_1_0_1 +# define OSSL_DEPRECATEDIN_1_0_1_FOR(msg) +# endif +# if OPENSSL_API_LEVEL >= 10000 +# ifndef OPENSSL_NO_DEPRECATED +# define OSSL_DEPRECATEDIN_1_0_0 OSSL_DEPRECATED(1.0.0) +# define OSSL_DEPRECATEDIN_1_0_0_FOR(msg) OSSL_DEPRECATED_FOR(1.0.0, msg) +# else +# define OPENSSL_NO_DEPRECATED_1_0_0 +# endif +# else +# define OSSL_DEPRECATEDIN_1_0_0 +# define OSSL_DEPRECATEDIN_1_0_0_FOR(msg) +# endif +# if OPENSSL_API_LEVEL >= 908 +# ifndef OPENSSL_NO_DEPRECATED +# define OSSL_DEPRECATEDIN_0_9_8 OSSL_DEPRECATED(0.9.8) +# define OSSL_DEPRECATEDIN_0_9_8_FOR(msg) OSSL_DEPRECATED_FOR(0.9.8, msg) +# else +# define OPENSSL_NO_DEPRECATED_0_9_8 +# endif +# else +# define OSSL_DEPRECATEDIN_0_9_8 +# define OSSL_DEPRECATEDIN_0_9_8_FOR(msg) +# endif + +/* + * Make our own variants of __FILE__ and __LINE__, depending on configuration + */ + +# 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 + +/* + * __func__ was standardized in C99, so for any compiler that claims + * to implement that language level or newer, we assume we can safely + * use that symbol. + * + * GNU C also provides __FUNCTION__ since version 2, which predates + * C99. We can, however, only use this if __STDC_VERSION__ exists, + * as it's otherwise not allowed according to ISO C standards (C90). + * (compiling with GNU C's -pedantic tells us so) + * + * If none of the above applies, we check if the compiler is MSVC, + * and use __FUNCTION__ if that's the case. + */ +# ifndef OPENSSL_FUNC +# if defined(__STDC_VERSION__) +# if __STDC_VERSION__ >= 199901L +# define OPENSSL_FUNC __func__ +# elif defined(__GNUC__) && __GNUC__ >= 2 +# define OPENSSL_FUNC __FUNCTION__ +# endif +# elif defined(_MSC_VER) +# define OPENSSL_FUNC __FUNCTION__ +# endif +/* + * If all these possibilities are exhausted, we give up and use a + * static string. + */ +# ifndef OPENSSL_FUNC +# define OPENSSL_FUNC "(unknown function)" +# endif +# endif + +# ifndef OSSL_CRYPTO_ALLOC +# if defined(__GNUC__) +# define OSSL_CRYPTO_ALLOC __attribute__((malloc)) +# elif defined(_MSC_VER) +# define OSSL_CRYPTO_ALLOC __declspec(restrict) +# else +# define OSSL_CRYPTO_ALLOC +# endif +# endif + +#endif /* OPENSSL_MACROS_H */ diff --git a/include/openssl/md2.h b/include/openssl/md2.h new file mode 100644 index 0000000..5d4cb77 --- /dev/null +++ b/include/openssl/md2.h @@ -0,0 +1,56 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_MD2_H +# define OPENSSL_MD2_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_MD2_H +# endif + +# include + +# ifndef OPENSSL_NO_MD2 +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define MD2_DIGEST_LENGTH 16 + +# if !defined(OPENSSL_NO_DEPRECATED_3_0) + +typedef unsigned char MD2_INT; + +# 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; +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *MD2_options(void); +OSSL_DEPRECATEDIN_3_0 int MD2_Init(MD2_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD2_Update(MD2_CTX *c, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int MD2_Final(unsigned char *md, MD2_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD2(const unsigned char *d, size_t n, + unsigned char *md); +# endif + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/include/openssl/md4.h b/include/openssl/md4.h new file mode 100644 index 0000000..6c150a6 --- /dev/null +++ b/include/openssl/md4.h @@ -0,0 +1,63 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_MD4_H +# define OPENSSL_MD4_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_MD4_H +# endif + +# include + +# ifndef OPENSSL_NO_MD4 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define MD4_DIGEST_LENGTH 16 + +# if !defined(OPENSSL_NO_DEPRECATED_3_0) + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! 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) + +typedef struct MD4state_st { + MD4_LONG A, B, C, D; + MD4_LONG Nl, Nh; + MD4_LONG data[MD4_LBLOCK]; + unsigned int num; +} MD4_CTX; +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MD4_Init(MD4_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD4_Update(MD4_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int MD4_Final(unsigned char *md, MD4_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD4(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void MD4_Transform(MD4_CTX *c, const unsigned char *b); +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/include/openssl/md5.h b/include/openssl/md5.h new file mode 100644 index 0000000..77a5773 --- /dev/null +++ b/include/openssl/md5.h @@ -0,0 +1,62 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_MD5_H +# define OPENSSL_MD5_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_MD5_H +# endif + +# include + +# ifndef OPENSSL_NO_MD5 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define MD5_DIGEST_LENGTH 16 + +# if !defined(OPENSSL_NO_DEPRECATED_3_0) +/* + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! 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) + +typedef struct MD5state_st { + MD5_LONG A, B, C, D; + MD5_LONG Nl, Nh; + MD5_LONG data[MD5_LBLOCK]; + unsigned int num; +} MD5_CTX; +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MD5_Init(MD5_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MD5_Update(MD5_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int MD5_Final(unsigned char *md, MD5_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MD5(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void MD5_Transform(MD5_CTX *c, const unsigned char *b); +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/include/openssl/mdc2.h b/include/openssl/mdc2.h new file mode 100644 index 0000000..5a7ee28 --- /dev/null +++ b/include/openssl/mdc2.h @@ -0,0 +1,55 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_MDC2_H +# define OPENSSL_MDC2_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_MDC2_H +# endif + +# include + +# ifndef OPENSSL_NO_MDC2 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define MDC2_DIGEST_LENGTH 16 + +# if !defined(OPENSSL_NO_DEPRECATED_3_0) + +# define MDC2_BLOCK 8 + +typedef struct mdc2_ctx_st { + unsigned int num; + unsigned char data[MDC2_BLOCK]; + DES_cblock h, hh; + unsigned int pad_type; /* either 1 or 2, default 1 */ +} MDC2_CTX; +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int MDC2_Init(MDC2_CTX *c); +OSSL_DEPRECATEDIN_3_0 int MDC2_Update(MDC2_CTX *c, const unsigned char *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int MDC2_Final(unsigned char *md, MDC2_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *MDC2(const unsigned char *d, size_t n, + unsigned char *md); +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/include/openssl/modes.h b/include/openssl/modes.h new file mode 100644 index 0000000..e190799 --- /dev/null +++ b/include/openssl/modes.h @@ -0,0 +1,219 @@ +/* + * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_MODES_H +# define OPENSSL_MODES_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_MODES_H +# endif + +# include +# 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 (*ecb128_f) (const unsigned char *in, unsigned char *out, + size_t len, const void *key, + int enc); + +typedef void (*ctr128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16]); + +typedef void (*ccm128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + const unsigned char ivec[16], + unsigned char cmac[16]); + +void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); +void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], block128_f block); + +void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], unsigned int *num, + block128_f block); + +void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], + unsigned char ecount_buf[16], + unsigned int *num, ctr128_f ctr); + +void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + block128_f block); + +void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); +void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out, + size_t bits, const void *key, + unsigned char ivec[16], int *num, + int enc, block128_f block); + +size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, unsigned char ivec[16], + block128_f block); +size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); +size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, + unsigned char *out, size_t len, + const void *key, + unsigned char ivec[16], + block128_f block); +size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + unsigned char ivec[16], cbc128_f cbc); + +typedef struct gcm128_context GCM128_CONTEXT; + +GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block); +void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block); +void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv, + size_t len); +int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len); +int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, + const unsigned char *in, unsigned char *out, + size_t len, ctr128_f stream); +int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx); + +typedef struct ccm128_context CCM128_CONTEXT; + +void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx, + unsigned int M, unsigned int L, void *key, + block128_f block); +int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce, + size_t nlen, size_t mlen); +void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad, + size_t alen); +int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len); +int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, + unsigned char *out, size_t len, + ccm128_f stream); +size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len); + +typedef struct xts128_context XTS128_CONTEXT; + +int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, + const unsigned char iv[16], + const unsigned char *inp, unsigned char *out, + size_t len, int enc); + +size_t CRYPTO_128_wrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); + +size_t CRYPTO_128_unwrap(void *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, size_t inlen, + block128_f block); +size_t CRYPTO_128_wrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); +size_t CRYPTO_128_unwrap_pad(void *key, const unsigned char *icv, + unsigned char *out, const unsigned char *in, + size_t inlen, block128_f block); + +# ifndef OPENSSL_NO_OCB +typedef struct ocb128_context OCB128_CONTEXT; + +typedef void (*ocb128_f) (const unsigned char *in, unsigned char *out, + size_t blocks, const void *key, + size_t start_block_num, + unsigned char offset_i[16], + const unsigned char L_[][16], + unsigned char checksum[16]); + +OCB128_CONTEXT *CRYPTO_ocb128_new(void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_init(OCB128_CONTEXT *ctx, void *keyenc, void *keydec, + block128_f encrypt, block128_f decrypt, + ocb128_f stream); +int CRYPTO_ocb128_copy_ctx(OCB128_CONTEXT *dest, OCB128_CONTEXT *src, + void *keyenc, void *keydec); +int CRYPTO_ocb128_setiv(OCB128_CONTEXT *ctx, const unsigned char *iv, + size_t len, size_t taglen); +int CRYPTO_ocb128_aad(OCB128_CONTEXT *ctx, const unsigned char *aad, + size_t len); +int CRYPTO_ocb128_encrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_decrypt(OCB128_CONTEXT *ctx, const unsigned char *in, + unsigned char *out, size_t len); +int CRYPTO_ocb128_finish(OCB128_CONTEXT *ctx, const unsigned char *tag, + size_t len); +int CRYPTO_ocb128_tag(OCB128_CONTEXT *ctx, unsigned char *tag, size_t len); +void CRYPTO_ocb128_cleanup(OCB128_CONTEXT *ctx); +# endif /* OPENSSL_NO_OCB */ + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/include/openssl/obj_mac.h b/include/openssl/obj_mac.h new file mode 100644 index 0000000..0e86027 --- /dev/null +++ b/include/openssl/obj_mac.h @@ -0,0 +1,5481 @@ +/* + * WARNING: do not edit! + * Generated by crypto/objects/objects.pl + * + * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_OBJ_MAC_H +# define OPENSSL_OBJ_MAC_H +# pragma once + +#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_gmac "GMAC" +#define LN_gmac "gmac" +#define NID_gmac 1195 +#define OBJ_gmac OBJ_iso,0L,9797L,3L,4L + +#define SN_hmac_md5 "HMAC-MD5" +#define LN_hmac_md5 "hmac-md5" +#define NID_hmac_md5 780 +#define OBJ_hmac_md5 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,1L + +#define SN_hmac_sha1 "HMAC-SHA1" +#define LN_hmac_sha1 "hmac-sha1" +#define NID_hmac_sha1 781 +#define OBJ_hmac_sha1 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,2L + +#define SN_x509ExtAdmission "x509ExtAdmission" +#define LN_x509ExtAdmission "Professional Information or basis for Admission" +#define NID_x509ExtAdmission 1093 +#define OBJ_x509ExtAdmission OBJ_identified_organization,36L,8L,3L,3L + +#define SN_certicom_arc "certicom-arc" +#define NID_certicom_arc 677 +#define OBJ_certicom_arc OBJ_identified_organization,132L + +#define SN_ieee "ieee" +#define NID_ieee 1170 +#define OBJ_ieee OBJ_identified_organization,111L + +#define SN_ieee_siswg "ieee-siswg" +#define LN_ieee_siswg "IEEE Security in Storage Working Group" +#define NID_ieee_siswg 1171 +#define OBJ_ieee_siswg OBJ_ieee,2L,1619L + +#define SN_international_organizations "international-organizations" +#define LN_international_organizations "International Organizations" +#define NID_international_organizations 647 +#define OBJ_international_organizations OBJ_joint_iso_itu_t,23L + +#define SN_wap "wap" +#define NID_wap 678 +#define OBJ_wap OBJ_international_organizations,43L + +#define SN_wap_wsg "wap-wsg" +#define NID_wap_wsg 679 +#define OBJ_wap_wsg OBJ_wap,1L + +#define SN_selected_attribute_types "selected-attribute-types" +#define LN_selected_attribute_types "Selected Attribute Types" +#define NID_selected_attribute_types 394 +#define OBJ_selected_attribute_types OBJ_joint_iso_itu_t,5L,1L,5L + +#define SN_clearance "clearance" +#define NID_clearance 395 +#define OBJ_clearance OBJ_selected_attribute_types,55L + +#define SN_ISO_US "ISO-US" +#define LN_ISO_US "ISO US Member Body" +#define NID_ISO_US 183 +#define OBJ_ISO_US OBJ_member_body,840L + +#define SN_X9_57 "X9-57" +#define LN_X9_57 "X9.57" +#define NID_X9_57 184 +#define OBJ_X9_57 OBJ_ISO_US,10040L + +#define SN_X9cm "X9cm" +#define LN_X9cm "X9.57 CM ?" +#define NID_X9cm 185 +#define OBJ_X9cm OBJ_X9_57,4L + +#define SN_ISO_CN "ISO-CN" +#define LN_ISO_CN "ISO CN Member Body" +#define NID_ISO_CN 1140 +#define OBJ_ISO_CN OBJ_member_body,156L + +#define SN_oscca "oscca" +#define NID_oscca 1141 +#define OBJ_oscca OBJ_ISO_CN,10197L + +#define SN_sm_scheme "sm-scheme" +#define NID_sm_scheme 1142 +#define OBJ_sm_scheme OBJ_oscca,1L + +#define SN_dsa "DSA" +#define LN_dsa "dsaEncryption" +#define NID_dsa 116 +#define OBJ_dsa OBJ_X9cm,1L + +#define SN_dsaWithSHA1 "DSA-SHA1" +#define LN_dsaWithSHA1 "dsaWithSHA1" +#define NID_dsaWithSHA1 113 +#define OBJ_dsaWithSHA1 OBJ_X9cm,3L + +#define SN_ansi_X9_62 "ansi-X9-62" +#define LN_ansi_X9_62 "ANSI X9.62" +#define NID_ansi_X9_62 405 +#define OBJ_ansi_X9_62 OBJ_ISO_US,10045L + +#define OBJ_X9_62_id_fieldType OBJ_ansi_X9_62,1L + +#define SN_X9_62_prime_field "prime-field" +#define NID_X9_62_prime_field 406 +#define OBJ_X9_62_prime_field OBJ_X9_62_id_fieldType,1L + +#define SN_X9_62_characteristic_two_field "characteristic-two-field" +#define NID_X9_62_characteristic_two_field 407 +#define OBJ_X9_62_characteristic_two_field OBJ_X9_62_id_fieldType,2L + +#define SN_X9_62_id_characteristic_two_basis "id-characteristic-two-basis" +#define NID_X9_62_id_characteristic_two_basis 680 +#define OBJ_X9_62_id_characteristic_two_basis OBJ_X9_62_characteristic_two_field,3L + +#define SN_X9_62_onBasis "onBasis" +#define NID_X9_62_onBasis 681 +#define OBJ_X9_62_onBasis OBJ_X9_62_id_characteristic_two_basis,1L + +#define SN_X9_62_tpBasis "tpBasis" +#define NID_X9_62_tpBasis 682 +#define OBJ_X9_62_tpBasis OBJ_X9_62_id_characteristic_two_basis,2L + +#define SN_X9_62_ppBasis "ppBasis" +#define NID_X9_62_ppBasis 683 +#define OBJ_X9_62_ppBasis OBJ_X9_62_id_characteristic_two_basis,3L + +#define OBJ_X9_62_id_publicKeyType OBJ_ansi_X9_62,2L + +#define SN_X9_62_id_ecPublicKey "id-ecPublicKey" +#define NID_X9_62_id_ecPublicKey 408 +#define OBJ_X9_62_id_ecPublicKey OBJ_X9_62_id_publicKeyType,1L + +#define OBJ_X9_62_ellipticCurve OBJ_ansi_X9_62,3L + +#define OBJ_X9_62_c_TwoCurve OBJ_X9_62_ellipticCurve,0L + +#define SN_X9_62_c2pnb163v1 "c2pnb163v1" +#define NID_X9_62_c2pnb163v1 684 +#define OBJ_X9_62_c2pnb163v1 OBJ_X9_62_c_TwoCurve,1L + +#define SN_X9_62_c2pnb163v2 "c2pnb163v2" +#define NID_X9_62_c2pnb163v2 685 +#define OBJ_X9_62_c2pnb163v2 OBJ_X9_62_c_TwoCurve,2L + +#define SN_X9_62_c2pnb163v3 "c2pnb163v3" +#define NID_X9_62_c2pnb163v3 686 +#define OBJ_X9_62_c2pnb163v3 OBJ_X9_62_c_TwoCurve,3L + +#define SN_X9_62_c2pnb176v1 "c2pnb176v1" +#define NID_X9_62_c2pnb176v1 687 +#define OBJ_X9_62_c2pnb176v1 OBJ_X9_62_c_TwoCurve,4L + +#define SN_X9_62_c2tnb191v1 "c2tnb191v1" +#define NID_X9_62_c2tnb191v1 688 +#define OBJ_X9_62_c2tnb191v1 OBJ_X9_62_c_TwoCurve,5L + +#define SN_X9_62_c2tnb191v2 "c2tnb191v2" +#define NID_X9_62_c2tnb191v2 689 +#define OBJ_X9_62_c2tnb191v2 OBJ_X9_62_c_TwoCurve,6L + +#define SN_X9_62_c2tnb191v3 "c2tnb191v3" +#define NID_X9_62_c2tnb191v3 690 +#define OBJ_X9_62_c2tnb191v3 OBJ_X9_62_c_TwoCurve,7L + +#define SN_X9_62_c2onb191v4 "c2onb191v4" +#define NID_X9_62_c2onb191v4 691 +#define OBJ_X9_62_c2onb191v4 OBJ_X9_62_c_TwoCurve,8L + +#define SN_X9_62_c2onb191v5 "c2onb191v5" +#define NID_X9_62_c2onb191v5 692 +#define OBJ_X9_62_c2onb191v5 OBJ_X9_62_c_TwoCurve,9L + +#define SN_X9_62_c2pnb208w1 "c2pnb208w1" +#define NID_X9_62_c2pnb208w1 693 +#define OBJ_X9_62_c2pnb208w1 OBJ_X9_62_c_TwoCurve,10L + +#define SN_X9_62_c2tnb239v1 "c2tnb239v1" +#define NID_X9_62_c2tnb239v1 694 +#define OBJ_X9_62_c2tnb239v1 OBJ_X9_62_c_TwoCurve,11L + +#define SN_X9_62_c2tnb239v2 "c2tnb239v2" +#define NID_X9_62_c2tnb239v2 695 +#define OBJ_X9_62_c2tnb239v2 OBJ_X9_62_c_TwoCurve,12L + +#define SN_X9_62_c2tnb239v3 "c2tnb239v3" +#define NID_X9_62_c2tnb239v3 696 +#define OBJ_X9_62_c2tnb239v3 OBJ_X9_62_c_TwoCurve,13L + +#define SN_X9_62_c2onb239v4 "c2onb239v4" +#define NID_X9_62_c2onb239v4 697 +#define OBJ_X9_62_c2onb239v4 OBJ_X9_62_c_TwoCurve,14L + +#define SN_X9_62_c2onb239v5 "c2onb239v5" +#define NID_X9_62_c2onb239v5 698 +#define OBJ_X9_62_c2onb239v5 OBJ_X9_62_c_TwoCurve,15L + +#define SN_X9_62_c2pnb272w1 "c2pnb272w1" +#define NID_X9_62_c2pnb272w1 699 +#define OBJ_X9_62_c2pnb272w1 OBJ_X9_62_c_TwoCurve,16L + +#define SN_X9_62_c2pnb304w1 "c2pnb304w1" +#define NID_X9_62_c2pnb304w1 700 +#define OBJ_X9_62_c2pnb304w1 OBJ_X9_62_c_TwoCurve,17L + +#define SN_X9_62_c2tnb359v1 "c2tnb359v1" +#define NID_X9_62_c2tnb359v1 701 +#define OBJ_X9_62_c2tnb359v1 OBJ_X9_62_c_TwoCurve,18L + +#define SN_X9_62_c2pnb368w1 "c2pnb368w1" +#define NID_X9_62_c2pnb368w1 702 +#define OBJ_X9_62_c2pnb368w1 OBJ_X9_62_c_TwoCurve,19L + +#define SN_X9_62_c2tnb431r1 "c2tnb431r1" +#define NID_X9_62_c2tnb431r1 703 +#define OBJ_X9_62_c2tnb431r1 OBJ_X9_62_c_TwoCurve,20L + +#define OBJ_X9_62_primeCurve OBJ_X9_62_ellipticCurve,1L + +#define SN_X9_62_prime192v1 "prime192v1" +#define NID_X9_62_prime192v1 409 +#define OBJ_X9_62_prime192v1 OBJ_X9_62_primeCurve,1L + +#define SN_X9_62_prime192v2 "prime192v2" +#define NID_X9_62_prime192v2 410 +#define OBJ_X9_62_prime192v2 OBJ_X9_62_primeCurve,2L + +#define SN_X9_62_prime192v3 "prime192v3" +#define NID_X9_62_prime192v3 411 +#define OBJ_X9_62_prime192v3 OBJ_X9_62_primeCurve,3L + +#define SN_X9_62_prime239v1 "prime239v1" +#define NID_X9_62_prime239v1 412 +#define OBJ_X9_62_prime239v1 OBJ_X9_62_primeCurve,4L + +#define SN_X9_62_prime239v2 "prime239v2" +#define NID_X9_62_prime239v2 413 +#define OBJ_X9_62_prime239v2 OBJ_X9_62_primeCurve,5L + +#define SN_X9_62_prime239v3 "prime239v3" +#define NID_X9_62_prime239v3 414 +#define OBJ_X9_62_prime239v3 OBJ_X9_62_primeCurve,6L + +#define SN_X9_62_prime256v1 "prime256v1" +#define NID_X9_62_prime256v1 415 +#define OBJ_X9_62_prime256v1 OBJ_X9_62_primeCurve,7L + +#define OBJ_X9_62_id_ecSigType OBJ_ansi_X9_62,4L + +#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1" +#define NID_ecdsa_with_SHA1 416 +#define OBJ_ecdsa_with_SHA1 OBJ_X9_62_id_ecSigType,1L + +#define SN_ecdsa_with_Recommended "ecdsa-with-Recommended" +#define NID_ecdsa_with_Recommended 791 +#define OBJ_ecdsa_with_Recommended OBJ_X9_62_id_ecSigType,2L + +#define SN_ecdsa_with_Specified "ecdsa-with-Specified" +#define NID_ecdsa_with_Specified 792 +#define OBJ_ecdsa_with_Specified OBJ_X9_62_id_ecSigType,3L + +#define SN_ecdsa_with_SHA224 "ecdsa-with-SHA224" +#define NID_ecdsa_with_SHA224 793 +#define OBJ_ecdsa_with_SHA224 OBJ_ecdsa_with_Specified,1L + +#define SN_ecdsa_with_SHA256 "ecdsa-with-SHA256" +#define NID_ecdsa_with_SHA256 794 +#define OBJ_ecdsa_with_SHA256 OBJ_ecdsa_with_Specified,2L + +#define SN_ecdsa_with_SHA384 "ecdsa-with-SHA384" +#define NID_ecdsa_with_SHA384 795 +#define OBJ_ecdsa_with_SHA384 OBJ_ecdsa_with_Specified,3L + +#define SN_ecdsa_with_SHA512 "ecdsa-with-SHA512" +#define NID_ecdsa_with_SHA512 796 +#define OBJ_ecdsa_with_SHA512 OBJ_ecdsa_with_Specified,4L + +#define OBJ_secg_ellipticCurve OBJ_certicom_arc,0L + +#define SN_secp112r1 "secp112r1" +#define NID_secp112r1 704 +#define OBJ_secp112r1 OBJ_secg_ellipticCurve,6L + +#define SN_secp112r2 "secp112r2" +#define NID_secp112r2 705 +#define OBJ_secp112r2 OBJ_secg_ellipticCurve,7L + +#define SN_secp128r1 "secp128r1" +#define NID_secp128r1 706 +#define OBJ_secp128r1 OBJ_secg_ellipticCurve,28L + +#define SN_secp128r2 "secp128r2" +#define NID_secp128r2 707 +#define OBJ_secp128r2 OBJ_secg_ellipticCurve,29L + +#define SN_secp160k1 "secp160k1" +#define NID_secp160k1 708 +#define OBJ_secp160k1 OBJ_secg_ellipticCurve,9L + +#define SN_secp160r1 "secp160r1" +#define NID_secp160r1 709 +#define OBJ_secp160r1 OBJ_secg_ellipticCurve,8L + +#define SN_secp160r2 "secp160r2" +#define NID_secp160r2 710 +#define OBJ_secp160r2 OBJ_secg_ellipticCurve,30L + +#define SN_secp192k1 "secp192k1" +#define NID_secp192k1 711 +#define OBJ_secp192k1 OBJ_secg_ellipticCurve,31L + +#define SN_secp224k1 "secp224k1" +#define NID_secp224k1 712 +#define OBJ_secp224k1 OBJ_secg_ellipticCurve,32L + +#define SN_secp224r1 "secp224r1" +#define NID_secp224r1 713 +#define OBJ_secp224r1 OBJ_secg_ellipticCurve,33L + +#define SN_secp256k1 "secp256k1" +#define NID_secp256k1 714 +#define OBJ_secp256k1 OBJ_secg_ellipticCurve,10L + +#define SN_secp384r1 "secp384r1" +#define NID_secp384r1 715 +#define OBJ_secp384r1 OBJ_secg_ellipticCurve,34L + +#define SN_secp521r1 "secp521r1" +#define NID_secp521r1 716 +#define OBJ_secp521r1 OBJ_secg_ellipticCurve,35L + +#define SN_sect113r1 "sect113r1" +#define NID_sect113r1 717 +#define OBJ_sect113r1 OBJ_secg_ellipticCurve,4L + +#define SN_sect113r2 "sect113r2" +#define NID_sect113r2 718 +#define OBJ_sect113r2 OBJ_secg_ellipticCurve,5L + +#define SN_sect131r1 "sect131r1" +#define NID_sect131r1 719 +#define OBJ_sect131r1 OBJ_secg_ellipticCurve,22L + +#define SN_sect131r2 "sect131r2" +#define NID_sect131r2 720 +#define OBJ_sect131r2 OBJ_secg_ellipticCurve,23L + +#define SN_sect163k1 "sect163k1" +#define NID_sect163k1 721 +#define OBJ_sect163k1 OBJ_secg_ellipticCurve,1L + +#define SN_sect163r1 "sect163r1" +#define NID_sect163r1 722 +#define OBJ_sect163r1 OBJ_secg_ellipticCurve,2L + +#define SN_sect163r2 "sect163r2" +#define NID_sect163r2 723 +#define OBJ_sect163r2 OBJ_secg_ellipticCurve,15L + +#define SN_sect193r1 "sect193r1" +#define NID_sect193r1 724 +#define OBJ_sect193r1 OBJ_secg_ellipticCurve,24L + +#define SN_sect193r2 "sect193r2" +#define NID_sect193r2 725 +#define OBJ_sect193r2 OBJ_secg_ellipticCurve,25L + +#define SN_sect233k1 "sect233k1" +#define NID_sect233k1 726 +#define OBJ_sect233k1 OBJ_secg_ellipticCurve,26L + +#define SN_sect233r1 "sect233r1" +#define NID_sect233r1 727 +#define OBJ_sect233r1 OBJ_secg_ellipticCurve,27L + +#define SN_sect239k1 "sect239k1" +#define NID_sect239k1 728 +#define OBJ_sect239k1 OBJ_secg_ellipticCurve,3L + +#define SN_sect283k1 "sect283k1" +#define NID_sect283k1 729 +#define OBJ_sect283k1 OBJ_secg_ellipticCurve,16L + +#define SN_sect283r1 "sect283r1" +#define NID_sect283r1 730 +#define OBJ_sect283r1 OBJ_secg_ellipticCurve,17L + +#define SN_sect409k1 "sect409k1" +#define NID_sect409k1 731 +#define OBJ_sect409k1 OBJ_secg_ellipticCurve,36L + +#define SN_sect409r1 "sect409r1" +#define NID_sect409r1 732 +#define OBJ_sect409r1 OBJ_secg_ellipticCurve,37L + +#define SN_sect571k1 "sect571k1" +#define NID_sect571k1 733 +#define OBJ_sect571k1 OBJ_secg_ellipticCurve,38L + +#define SN_sect571r1 "sect571r1" +#define NID_sect571r1 734 +#define OBJ_sect571r1 OBJ_secg_ellipticCurve,39L + +#define OBJ_wap_wsg_idm_ecid OBJ_wap_wsg,4L + +#define SN_wap_wsg_idm_ecid_wtls1 "wap-wsg-idm-ecid-wtls1" +#define NID_wap_wsg_idm_ecid_wtls1 735 +#define OBJ_wap_wsg_idm_ecid_wtls1 OBJ_wap_wsg_idm_ecid,1L + +#define SN_wap_wsg_idm_ecid_wtls3 "wap-wsg-idm-ecid-wtls3" +#define NID_wap_wsg_idm_ecid_wtls3 736 +#define OBJ_wap_wsg_idm_ecid_wtls3 OBJ_wap_wsg_idm_ecid,3L + +#define SN_wap_wsg_idm_ecid_wtls4 "wap-wsg-idm-ecid-wtls4" +#define NID_wap_wsg_idm_ecid_wtls4 737 +#define OBJ_wap_wsg_idm_ecid_wtls4 OBJ_wap_wsg_idm_ecid,4L + +#define SN_wap_wsg_idm_ecid_wtls5 "wap-wsg-idm-ecid-wtls5" +#define NID_wap_wsg_idm_ecid_wtls5 738 +#define OBJ_wap_wsg_idm_ecid_wtls5 OBJ_wap_wsg_idm_ecid,5L + +#define SN_wap_wsg_idm_ecid_wtls6 "wap-wsg-idm-ecid-wtls6" +#define NID_wap_wsg_idm_ecid_wtls6 739 +#define OBJ_wap_wsg_idm_ecid_wtls6 OBJ_wap_wsg_idm_ecid,6L + +#define SN_wap_wsg_idm_ecid_wtls7 "wap-wsg-idm-ecid-wtls7" +#define NID_wap_wsg_idm_ecid_wtls7 740 +#define OBJ_wap_wsg_idm_ecid_wtls7 OBJ_wap_wsg_idm_ecid,7L + +#define SN_wap_wsg_idm_ecid_wtls8 "wap-wsg-idm-ecid-wtls8" +#define NID_wap_wsg_idm_ecid_wtls8 741 +#define OBJ_wap_wsg_idm_ecid_wtls8 OBJ_wap_wsg_idm_ecid,8L + +#define SN_wap_wsg_idm_ecid_wtls9 "wap-wsg-idm-ecid-wtls9" +#define NID_wap_wsg_idm_ecid_wtls9 742 +#define OBJ_wap_wsg_idm_ecid_wtls9 OBJ_wap_wsg_idm_ecid,9L + +#define SN_wap_wsg_idm_ecid_wtls10 "wap-wsg-idm-ecid-wtls10" +#define NID_wap_wsg_idm_ecid_wtls10 743 +#define OBJ_wap_wsg_idm_ecid_wtls10 OBJ_wap_wsg_idm_ecid,10L + +#define SN_wap_wsg_idm_ecid_wtls11 "wap-wsg-idm-ecid-wtls11" +#define NID_wap_wsg_idm_ecid_wtls11 744 +#define OBJ_wap_wsg_idm_ecid_wtls11 OBJ_wap_wsg_idm_ecid,11L + +#define SN_wap_wsg_idm_ecid_wtls12 "wap-wsg-idm-ecid-wtls12" +#define NID_wap_wsg_idm_ecid_wtls12 745 +#define OBJ_wap_wsg_idm_ecid_wtls12 OBJ_wap_wsg_idm_ecid,12L + +#define SN_cast5_cbc "CAST5-CBC" +#define LN_cast5_cbc "cast5-cbc" +#define NID_cast5_cbc 108 +#define OBJ_cast5_cbc OBJ_ISO_US,113533L,7L,66L,10L + +#define SN_cast5_ecb "CAST5-ECB" +#define LN_cast5_ecb "cast5-ecb" +#define NID_cast5_ecb 109 + +#define SN_cast5_cfb64 "CAST5-CFB" +#define LN_cast5_cfb64 "cast5-cfb" +#define NID_cast5_cfb64 110 + +#define SN_cast5_ofb64 "CAST5-OFB" +#define LN_cast5_ofb64 "cast5-ofb" +#define NID_cast5_ofb64 111 + +#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" +#define NID_pbeWithMD5AndCast5_CBC 112 +#define OBJ_pbeWithMD5AndCast5_CBC OBJ_ISO_US,113533L,7L,66L,12L + +#define SN_id_PasswordBasedMAC "id-PasswordBasedMAC" +#define LN_id_PasswordBasedMAC "password based MAC" +#define NID_id_PasswordBasedMAC 782 +#define OBJ_id_PasswordBasedMAC OBJ_ISO_US,113533L,7L,66L,13L + +#define SN_id_DHBasedMac "id-DHBasedMac" +#define LN_id_DHBasedMac "Diffie-Hellman based MAC" +#define NID_id_DHBasedMac 783 +#define OBJ_id_DHBasedMac OBJ_ISO_US,113533L,7L,66L,30L + +#define SN_rsadsi "rsadsi" +#define LN_rsadsi "RSA Data Security, Inc." +#define NID_rsadsi 1 +#define OBJ_rsadsi OBJ_ISO_US,113549L + +#define SN_pkcs "pkcs" +#define LN_pkcs "RSA Data Security, Inc. PKCS" +#define NID_pkcs 2 +#define OBJ_pkcs OBJ_rsadsi,1L + +#define SN_pkcs1 "pkcs1" +#define NID_pkcs1 186 +#define OBJ_pkcs1 OBJ_pkcs,1L + +#define LN_rsaEncryption "rsaEncryption" +#define NID_rsaEncryption 6 +#define OBJ_rsaEncryption OBJ_pkcs1,1L + +#define SN_md2WithRSAEncryption "RSA-MD2" +#define LN_md2WithRSAEncryption "md2WithRSAEncryption" +#define NID_md2WithRSAEncryption 7 +#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L + +#define SN_md4WithRSAEncryption "RSA-MD4" +#define LN_md4WithRSAEncryption "md4WithRSAEncryption" +#define NID_md4WithRSAEncryption 396 +#define OBJ_md4WithRSAEncryption OBJ_pkcs1,3L + +#define SN_md5WithRSAEncryption "RSA-MD5" +#define LN_md5WithRSAEncryption "md5WithRSAEncryption" +#define NID_md5WithRSAEncryption 8 +#define OBJ_md5WithRSAEncryption OBJ_pkcs1,4L + +#define SN_sha1WithRSAEncryption "RSA-SHA1" +#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" +#define NID_sha1WithRSAEncryption 65 +#define OBJ_sha1WithRSAEncryption OBJ_pkcs1,5L + +#define SN_rsaesOaep "RSAES-OAEP" +#define LN_rsaesOaep "rsaesOaep" +#define NID_rsaesOaep 919 +#define OBJ_rsaesOaep OBJ_pkcs1,7L + +#define SN_mgf1 "MGF1" +#define LN_mgf1 "mgf1" +#define NID_mgf1 911 +#define OBJ_mgf1 OBJ_pkcs1,8L + +#define SN_pSpecified "PSPECIFIED" +#define LN_pSpecified "pSpecified" +#define NID_pSpecified 935 +#define OBJ_pSpecified OBJ_pkcs1,9L + +#define SN_rsassaPss "RSASSA-PSS" +#define LN_rsassaPss "rsassaPss" +#define NID_rsassaPss 912 +#define OBJ_rsassaPss OBJ_pkcs1,10L + +#define SN_sha256WithRSAEncryption "RSA-SHA256" +#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption" +#define NID_sha256WithRSAEncryption 668 +#define OBJ_sha256WithRSAEncryption OBJ_pkcs1,11L + +#define SN_sha384WithRSAEncryption "RSA-SHA384" +#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption" +#define NID_sha384WithRSAEncryption 669 +#define OBJ_sha384WithRSAEncryption OBJ_pkcs1,12L + +#define SN_sha512WithRSAEncryption "RSA-SHA512" +#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption" +#define NID_sha512WithRSAEncryption 670 +#define OBJ_sha512WithRSAEncryption OBJ_pkcs1,13L + +#define SN_sha224WithRSAEncryption "RSA-SHA224" +#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption" +#define NID_sha224WithRSAEncryption 671 +#define OBJ_sha224WithRSAEncryption OBJ_pkcs1,14L + +#define SN_sha512_224WithRSAEncryption "RSA-SHA512/224" +#define LN_sha512_224WithRSAEncryption "sha512-224WithRSAEncryption" +#define NID_sha512_224WithRSAEncryption 1145 +#define OBJ_sha512_224WithRSAEncryption OBJ_pkcs1,15L + +#define SN_sha512_256WithRSAEncryption "RSA-SHA512/256" +#define LN_sha512_256WithRSAEncryption "sha512-256WithRSAEncryption" +#define NID_sha512_256WithRSAEncryption 1146 +#define OBJ_sha512_256WithRSAEncryption OBJ_pkcs1,16L + +#define SN_pkcs3 "pkcs3" +#define NID_pkcs3 27 +#define OBJ_pkcs3 OBJ_pkcs,3L + +#define LN_dhKeyAgreement "dhKeyAgreement" +#define NID_dhKeyAgreement 28 +#define OBJ_dhKeyAgreement OBJ_pkcs3,1L + +#define SN_pkcs5 "pkcs5" +#define NID_pkcs5 187 +#define OBJ_pkcs5 OBJ_pkcs,5L + +#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" +#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" +#define NID_pbeWithMD2AndDES_CBC 9 +#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs5,1L + +#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" +#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" +#define NID_pbeWithMD5AndDES_CBC 10 +#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs5,3L + +#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" +#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" +#define NID_pbeWithMD2AndRC2_CBC 168 +#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs5,4L + +#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" +#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" +#define NID_pbeWithMD5AndRC2_CBC 169 +#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs5,6L + +#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" +#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" +#define NID_pbeWithSHA1AndDES_CBC 170 +#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs5,10L + +#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" +#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" +#define NID_pbeWithSHA1AndRC2_CBC 68 +#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs5,11L + +#define LN_id_pbkdf2 "PBKDF2" +#define NID_id_pbkdf2 69 +#define OBJ_id_pbkdf2 OBJ_pkcs5,12L + +#define LN_pbes2 "PBES2" +#define NID_pbes2 161 +#define OBJ_pbes2 OBJ_pkcs5,13L + +#define LN_pbmac1 "PBMAC1" +#define NID_pbmac1 162 +#define OBJ_pbmac1 OBJ_pkcs5,14L + +#define SN_pkcs7 "pkcs7" +#define NID_pkcs7 20 +#define OBJ_pkcs7 OBJ_pkcs,7L + +#define LN_pkcs7_data "pkcs7-data" +#define NID_pkcs7_data 21 +#define OBJ_pkcs7_data OBJ_pkcs7,1L + +#define LN_pkcs7_signed "pkcs7-signedData" +#define NID_pkcs7_signed 22 +#define OBJ_pkcs7_signed OBJ_pkcs7,2L + +#define LN_pkcs7_enveloped "pkcs7-envelopedData" +#define NID_pkcs7_enveloped 23 +#define OBJ_pkcs7_enveloped OBJ_pkcs7,3L + +#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" +#define NID_pkcs7_signedAndEnveloped 24 +#define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L + +#define LN_pkcs7_digest "pkcs7-digestData" +#define NID_pkcs7_digest 25 +#define OBJ_pkcs7_digest OBJ_pkcs7,5L + +#define LN_pkcs7_encrypted "pkcs7-encryptedData" +#define NID_pkcs7_encrypted 26 +#define OBJ_pkcs7_encrypted OBJ_pkcs7,6L + +#define SN_pkcs9 "pkcs9" +#define NID_pkcs9 47 +#define OBJ_pkcs9 OBJ_pkcs,9L + +#define LN_pkcs9_emailAddress "emailAddress" +#define NID_pkcs9_emailAddress 48 +#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L + +#define LN_pkcs9_unstructuredName "unstructuredName" +#define NID_pkcs9_unstructuredName 49 +#define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L + +#define LN_pkcs9_contentType "contentType" +#define NID_pkcs9_contentType 50 +#define OBJ_pkcs9_contentType OBJ_pkcs9,3L + +#define LN_pkcs9_messageDigest "messageDigest" +#define NID_pkcs9_messageDigest 51 +#define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L + +#define LN_pkcs9_signingTime "signingTime" +#define NID_pkcs9_signingTime 52 +#define OBJ_pkcs9_signingTime OBJ_pkcs9,5L + +#define LN_pkcs9_countersignature "countersignature" +#define NID_pkcs9_countersignature 53 +#define OBJ_pkcs9_countersignature OBJ_pkcs9,6L + +#define LN_pkcs9_challengePassword "challengePassword" +#define NID_pkcs9_challengePassword 54 +#define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L + +#define LN_pkcs9_unstructuredAddress "unstructuredAddress" +#define NID_pkcs9_unstructuredAddress 55 +#define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L + +#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" +#define NID_pkcs9_extCertAttributes 56 +#define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L + +#define SN_ext_req "extReq" +#define LN_ext_req "Extension Request" +#define NID_ext_req 172 +#define OBJ_ext_req OBJ_pkcs9,14L + +#define SN_SMIMECapabilities "SMIME-CAPS" +#define LN_SMIMECapabilities "S/MIME Capabilities" +#define NID_SMIMECapabilities 167 +#define OBJ_SMIMECapabilities OBJ_pkcs9,15L + +#define SN_SMIME "SMIME" +#define LN_SMIME "S/MIME" +#define NID_SMIME 188 +#define OBJ_SMIME OBJ_pkcs9,16L + +#define SN_id_smime_mod "id-smime-mod" +#define NID_id_smime_mod 189 +#define OBJ_id_smime_mod OBJ_SMIME,0L + +#define SN_id_smime_ct "id-smime-ct" +#define NID_id_smime_ct 190 +#define OBJ_id_smime_ct OBJ_SMIME,1L + +#define SN_id_smime_aa "id-smime-aa" +#define NID_id_smime_aa 191 +#define OBJ_id_smime_aa OBJ_SMIME,2L + +#define SN_id_smime_alg "id-smime-alg" +#define NID_id_smime_alg 192 +#define OBJ_id_smime_alg OBJ_SMIME,3L + +#define SN_id_smime_cd "id-smime-cd" +#define NID_id_smime_cd 193 +#define OBJ_id_smime_cd OBJ_SMIME,4L + +#define SN_id_smime_spq "id-smime-spq" +#define NID_id_smime_spq 194 +#define OBJ_id_smime_spq OBJ_SMIME,5L + +#define SN_id_smime_cti "id-smime-cti" +#define NID_id_smime_cti 195 +#define OBJ_id_smime_cti OBJ_SMIME,6L + +#define SN_id_smime_mod_cms "id-smime-mod-cms" +#define NID_id_smime_mod_cms 196 +#define OBJ_id_smime_mod_cms OBJ_id_smime_mod,1L + +#define SN_id_smime_mod_ess "id-smime-mod-ess" +#define NID_id_smime_mod_ess 197 +#define OBJ_id_smime_mod_ess OBJ_id_smime_mod,2L + +#define SN_id_smime_mod_oid "id-smime-mod-oid" +#define NID_id_smime_mod_oid 198 +#define OBJ_id_smime_mod_oid OBJ_id_smime_mod,3L + +#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3" +#define NID_id_smime_mod_msg_v3 199 +#define OBJ_id_smime_mod_msg_v3 OBJ_id_smime_mod,4L + +#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88" +#define NID_id_smime_mod_ets_eSignature_88 200 +#define OBJ_id_smime_mod_ets_eSignature_88 OBJ_id_smime_mod,5L + +#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97" +#define NID_id_smime_mod_ets_eSignature_97 201 +#define OBJ_id_smime_mod_ets_eSignature_97 OBJ_id_smime_mod,6L + +#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88" +#define NID_id_smime_mod_ets_eSigPolicy_88 202 +#define OBJ_id_smime_mod_ets_eSigPolicy_88 OBJ_id_smime_mod,7L + +#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97" +#define NID_id_smime_mod_ets_eSigPolicy_97 203 +#define OBJ_id_smime_mod_ets_eSigPolicy_97 OBJ_id_smime_mod,8L + +#define SN_id_smime_ct_receipt "id-smime-ct-receipt" +#define NID_id_smime_ct_receipt 204 +#define OBJ_id_smime_ct_receipt OBJ_id_smime_ct,1L + +#define SN_id_smime_ct_authData "id-smime-ct-authData" +#define NID_id_smime_ct_authData 205 +#define OBJ_id_smime_ct_authData OBJ_id_smime_ct,2L + +#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert" +#define NID_id_smime_ct_publishCert 206 +#define OBJ_id_smime_ct_publishCert OBJ_id_smime_ct,3L + +#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo" +#define NID_id_smime_ct_TSTInfo 207 +#define OBJ_id_smime_ct_TSTInfo OBJ_id_smime_ct,4L + +#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo" +#define NID_id_smime_ct_TDTInfo 208 +#define OBJ_id_smime_ct_TDTInfo OBJ_id_smime_ct,5L + +#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo" +#define NID_id_smime_ct_contentInfo 209 +#define OBJ_id_smime_ct_contentInfo OBJ_id_smime_ct,6L + +#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData" +#define NID_id_smime_ct_DVCSRequestData 210 +#define OBJ_id_smime_ct_DVCSRequestData OBJ_id_smime_ct,7L + +#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData" +#define NID_id_smime_ct_DVCSResponseData 211 +#define OBJ_id_smime_ct_DVCSResponseData OBJ_id_smime_ct,8L + +#define SN_id_smime_ct_compressedData "id-smime-ct-compressedData" +#define NID_id_smime_ct_compressedData 786 +#define OBJ_id_smime_ct_compressedData OBJ_id_smime_ct,9L + +#define SN_id_smime_ct_contentCollection "id-smime-ct-contentCollection" +#define NID_id_smime_ct_contentCollection 1058 +#define OBJ_id_smime_ct_contentCollection OBJ_id_smime_ct,19L + +#define SN_id_smime_ct_authEnvelopedData "id-smime-ct-authEnvelopedData" +#define NID_id_smime_ct_authEnvelopedData 1059 +#define OBJ_id_smime_ct_authEnvelopedData OBJ_id_smime_ct,23L + +#define SN_id_ct_routeOriginAuthz "id-ct-routeOriginAuthz" +#define NID_id_ct_routeOriginAuthz 1234 +#define OBJ_id_ct_routeOriginAuthz OBJ_id_smime_ct,24L + +#define SN_id_ct_rpkiManifest "id-ct-rpkiManifest" +#define NID_id_ct_rpkiManifest 1235 +#define OBJ_id_ct_rpkiManifest OBJ_id_smime_ct,26L + +#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_ct_rpkiGhostbusters "id-ct-rpkiGhostbusters" +#define NID_id_ct_rpkiGhostbusters 1236 +#define OBJ_id_ct_rpkiGhostbusters OBJ_id_smime_ct,35L + +#define SN_id_ct_resourceTaggedAttest "id-ct-resourceTaggedAttest" +#define NID_id_ct_resourceTaggedAttest 1237 +#define OBJ_id_ct_resourceTaggedAttest OBJ_id_smime_ct,36L + +#define SN_id_ct_geofeedCSVwithCRLF "id-ct-geofeedCSVwithCRLF" +#define NID_id_ct_geofeedCSVwithCRLF 1246 +#define OBJ_id_ct_geofeedCSVwithCRLF OBJ_id_smime_ct,47L + +#define SN_id_ct_signedChecklist "id-ct-signedChecklist" +#define NID_id_ct_signedChecklist 1247 +#define OBJ_id_ct_signedChecklist OBJ_id_smime_ct,48L + +#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" +#define NID_id_smime_aa_receiptRequest 212 +#define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L + +#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel" +#define NID_id_smime_aa_securityLabel 213 +#define OBJ_id_smime_aa_securityLabel OBJ_id_smime_aa,2L + +#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory" +#define NID_id_smime_aa_mlExpandHistory 214 +#define OBJ_id_smime_aa_mlExpandHistory OBJ_id_smime_aa,3L + +#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint" +#define NID_id_smime_aa_contentHint 215 +#define OBJ_id_smime_aa_contentHint OBJ_id_smime_aa,4L + +#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest" +#define NID_id_smime_aa_msgSigDigest 216 +#define OBJ_id_smime_aa_msgSigDigest OBJ_id_smime_aa,5L + +#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType" +#define NID_id_smime_aa_encapContentType 217 +#define OBJ_id_smime_aa_encapContentType OBJ_id_smime_aa,6L + +#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier" +#define NID_id_smime_aa_contentIdentifier 218 +#define OBJ_id_smime_aa_contentIdentifier OBJ_id_smime_aa,7L + +#define SN_id_smime_aa_macValue "id-smime-aa-macValue" +#define NID_id_smime_aa_macValue 219 +#define OBJ_id_smime_aa_macValue OBJ_id_smime_aa,8L + +#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels" +#define NID_id_smime_aa_equivalentLabels 220 +#define OBJ_id_smime_aa_equivalentLabels OBJ_id_smime_aa,9L + +#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference" +#define NID_id_smime_aa_contentReference 221 +#define OBJ_id_smime_aa_contentReference OBJ_id_smime_aa,10L + +#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref" +#define NID_id_smime_aa_encrypKeyPref 222 +#define OBJ_id_smime_aa_encrypKeyPref OBJ_id_smime_aa,11L + +#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate" +#define NID_id_smime_aa_signingCertificate 223 +#define OBJ_id_smime_aa_signingCertificate OBJ_id_smime_aa,12L + +#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts" +#define NID_id_smime_aa_smimeEncryptCerts 224 +#define OBJ_id_smime_aa_smimeEncryptCerts OBJ_id_smime_aa,13L + +#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken" +#define NID_id_smime_aa_timeStampToken 225 +#define OBJ_id_smime_aa_timeStampToken OBJ_id_smime_aa,14L + +#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId" +#define NID_id_smime_aa_ets_sigPolicyId 226 +#define OBJ_id_smime_aa_ets_sigPolicyId OBJ_id_smime_aa,15L + +#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType" +#define NID_id_smime_aa_ets_commitmentType 227 +#define OBJ_id_smime_aa_ets_commitmentType OBJ_id_smime_aa,16L + +#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation" +#define NID_id_smime_aa_ets_signerLocation 228 +#define OBJ_id_smime_aa_ets_signerLocation OBJ_id_smime_aa,17L + +#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr" +#define NID_id_smime_aa_ets_signerAttr 229 +#define OBJ_id_smime_aa_ets_signerAttr OBJ_id_smime_aa,18L + +#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert" +#define NID_id_smime_aa_ets_otherSigCert 230 +#define OBJ_id_smime_aa_ets_otherSigCert OBJ_id_smime_aa,19L + +#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp" +#define NID_id_smime_aa_ets_contentTimestamp 231 +#define OBJ_id_smime_aa_ets_contentTimestamp OBJ_id_smime_aa,20L + +#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs" +#define NID_id_smime_aa_ets_CertificateRefs 232 +#define OBJ_id_smime_aa_ets_CertificateRefs OBJ_id_smime_aa,21L + +#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs" +#define NID_id_smime_aa_ets_RevocationRefs 233 +#define OBJ_id_smime_aa_ets_RevocationRefs OBJ_id_smime_aa,22L + +#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues" +#define NID_id_smime_aa_ets_certValues 234 +#define OBJ_id_smime_aa_ets_certValues OBJ_id_smime_aa,23L + +#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues" +#define NID_id_smime_aa_ets_revocationValues 235 +#define OBJ_id_smime_aa_ets_revocationValues OBJ_id_smime_aa,24L + +#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp" +#define NID_id_smime_aa_ets_escTimeStamp 236 +#define OBJ_id_smime_aa_ets_escTimeStamp OBJ_id_smime_aa,25L + +#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp" +#define NID_id_smime_aa_ets_certCRLTimestamp 237 +#define OBJ_id_smime_aa_ets_certCRLTimestamp OBJ_id_smime_aa,26L + +#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp" +#define NID_id_smime_aa_ets_archiveTimeStamp 238 +#define OBJ_id_smime_aa_ets_archiveTimeStamp OBJ_id_smime_aa,27L + +#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType" +#define NID_id_smime_aa_signatureType 239 +#define OBJ_id_smime_aa_signatureType OBJ_id_smime_aa,28L + +#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc" +#define NID_id_smime_aa_dvcs_dvc 240 +#define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L + +#define SN_id_smime_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" +#define NID_id_smime_aa_signingCertificateV2 1086 +#define OBJ_id_smime_aa_signingCertificateV2 OBJ_id_smime_aa,47L + +#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" +#define NID_id_smime_alg_ESDHwith3DES 241 +#define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L + +#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2" +#define NID_id_smime_alg_ESDHwithRC2 242 +#define OBJ_id_smime_alg_ESDHwithRC2 OBJ_id_smime_alg,2L + +#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap" +#define NID_id_smime_alg_3DESwrap 243 +#define OBJ_id_smime_alg_3DESwrap OBJ_id_smime_alg,3L + +#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap" +#define NID_id_smime_alg_RC2wrap 244 +#define OBJ_id_smime_alg_RC2wrap OBJ_id_smime_alg,4L + +#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH" +#define NID_id_smime_alg_ESDH 245 +#define OBJ_id_smime_alg_ESDH OBJ_id_smime_alg,5L + +#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap" +#define NID_id_smime_alg_CMS3DESwrap 246 +#define OBJ_id_smime_alg_CMS3DESwrap OBJ_id_smime_alg,6L + +#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap" +#define NID_id_smime_alg_CMSRC2wrap 247 +#define OBJ_id_smime_alg_CMSRC2wrap OBJ_id_smime_alg,7L + +#define SN_id_alg_PWRI_KEK "id-alg-PWRI-KEK" +#define NID_id_alg_PWRI_KEK 893 +#define OBJ_id_alg_PWRI_KEK OBJ_id_smime_alg,9L + +#define SN_id_smime_cd_ldap "id-smime-cd-ldap" +#define NID_id_smime_cd_ldap 248 +#define OBJ_id_smime_cd_ldap OBJ_id_smime_cd,1L + +#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri" +#define NID_id_smime_spq_ets_sqt_uri 249 +#define OBJ_id_smime_spq_ets_sqt_uri OBJ_id_smime_spq,1L + +#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice" +#define NID_id_smime_spq_ets_sqt_unotice 250 +#define OBJ_id_smime_spq_ets_sqt_unotice OBJ_id_smime_spq,2L + +#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin" +#define NID_id_smime_cti_ets_proofOfOrigin 251 +#define OBJ_id_smime_cti_ets_proofOfOrigin OBJ_id_smime_cti,1L + +#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt" +#define NID_id_smime_cti_ets_proofOfReceipt 252 +#define OBJ_id_smime_cti_ets_proofOfReceipt OBJ_id_smime_cti,2L + +#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery" +#define NID_id_smime_cti_ets_proofOfDelivery 253 +#define OBJ_id_smime_cti_ets_proofOfDelivery OBJ_id_smime_cti,3L + +#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender" +#define NID_id_smime_cti_ets_proofOfSender 254 +#define OBJ_id_smime_cti_ets_proofOfSender OBJ_id_smime_cti,4L + +#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval" +#define NID_id_smime_cti_ets_proofOfApproval 255 +#define OBJ_id_smime_cti_ets_proofOfApproval OBJ_id_smime_cti,5L + +#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation" +#define NID_id_smime_cti_ets_proofOfCreation 256 +#define OBJ_id_smime_cti_ets_proofOfCreation OBJ_id_smime_cti,6L + +#define LN_friendlyName "friendlyName" +#define NID_friendlyName 156 +#define OBJ_friendlyName OBJ_pkcs9,20L + +#define LN_localKeyID "localKeyID" +#define NID_localKeyID 157 +#define OBJ_localKeyID OBJ_pkcs9,21L + +#define SN_ms_csp_name "CSPName" +#define LN_ms_csp_name "Microsoft CSP Name" +#define NID_ms_csp_name 417 +#define OBJ_ms_csp_name 1L,3L,6L,1L,4L,1L,311L,17L,1L + +#define SN_LocalKeySet "LocalKeySet" +#define LN_LocalKeySet "Microsoft Local Key set" +#define NID_LocalKeySet 856 +#define OBJ_LocalKeySet 1L,3L,6L,1L,4L,1L,311L,17L,2L + +#define OBJ_certTypes OBJ_pkcs9,22L + +#define LN_x509Certificate "x509Certificate" +#define NID_x509Certificate 158 +#define OBJ_x509Certificate OBJ_certTypes,1L + +#define LN_sdsiCertificate "sdsiCertificate" +#define NID_sdsiCertificate 159 +#define OBJ_sdsiCertificate OBJ_certTypes,2L + +#define OBJ_crlTypes OBJ_pkcs9,23L + +#define LN_x509Crl "x509Crl" +#define NID_x509Crl 160 +#define OBJ_x509Crl OBJ_crlTypes,1L + +#define OBJ_pkcs12 OBJ_pkcs,12L + +#define OBJ_pkcs12_pbeids OBJ_pkcs12,1L + +#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" +#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" +#define NID_pbe_WithSHA1And128BitRC4 144 +#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids,1L + +#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" +#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" +#define NID_pbe_WithSHA1And40BitRC4 145 +#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids,2L + +#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" +#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 +#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids,3L + +#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" +#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 +#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids,4L + +#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" +#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" +#define NID_pbe_WithSHA1And128BitRC2_CBC 148 +#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids,5L + +#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" +#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" +#define NID_pbe_WithSHA1And40BitRC2_CBC 149 +#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids,6L + +#define OBJ_pkcs12_Version1 OBJ_pkcs12,10L + +#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1,1L + +#define LN_keyBag "keyBag" +#define NID_keyBag 150 +#define OBJ_keyBag OBJ_pkcs12_BagIds,1L + +#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" +#define NID_pkcs8ShroudedKeyBag 151 +#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds,2L + +#define LN_certBag "certBag" +#define NID_certBag 152 +#define OBJ_certBag OBJ_pkcs12_BagIds,3L + +#define LN_crlBag "crlBag" +#define NID_crlBag 153 +#define OBJ_crlBag OBJ_pkcs12_BagIds,4L + +#define LN_secretBag "secretBag" +#define NID_secretBag 154 +#define OBJ_secretBag OBJ_pkcs12_BagIds,5L + +#define LN_safeContentsBag "safeContentsBag" +#define NID_safeContentsBag 155 +#define OBJ_safeContentsBag OBJ_pkcs12_BagIds,6L + +#define SN_md2 "MD2" +#define LN_md2 "md2" +#define NID_md2 3 +#define OBJ_md2 OBJ_rsadsi,2L,2L + +#define SN_md4 "MD4" +#define LN_md4 "md4" +#define NID_md4 257 +#define OBJ_md4 OBJ_rsadsi,2L,4L + +#define SN_md5 "MD5" +#define LN_md5 "md5" +#define NID_md5 4 +#define OBJ_md5 OBJ_rsadsi,2L,5L + +#define SN_md5_sha1 "MD5-SHA1" +#define LN_md5_sha1 "md5-sha1" +#define NID_md5_sha1 114 + +#define LN_hmacWithMD5 "hmacWithMD5" +#define NID_hmacWithMD5 797 +#define OBJ_hmacWithMD5 OBJ_rsadsi,2L,6L + +#define LN_hmacWithSHA1 "hmacWithSHA1" +#define NID_hmacWithSHA1 163 +#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L + +#define SN_sm2 "SM2" +#define LN_sm2 "sm2" +#define NID_sm2 1172 +#define OBJ_sm2 OBJ_sm_scheme,301L + +#define SN_sm3 "SM3" +#define LN_sm3 "sm3" +#define NID_sm3 1143 +#define OBJ_sm3 OBJ_sm_scheme,401L + +#define SN_sm3WithRSAEncryption "RSA-SM3" +#define LN_sm3WithRSAEncryption "sm3WithRSAEncryption" +#define NID_sm3WithRSAEncryption 1144 +#define OBJ_sm3WithRSAEncryption OBJ_sm_scheme,504L + +#define SN_SM2_with_SM3 "SM2-SM3" +#define LN_SM2_with_SM3 "SM2-with-SM3" +#define NID_SM2_with_SM3 1204 +#define OBJ_SM2_with_SM3 OBJ_sm_scheme,501L + +#define LN_hmacWithSHA224 "hmacWithSHA224" +#define NID_hmacWithSHA224 798 +#define OBJ_hmacWithSHA224 OBJ_rsadsi,2L,8L + +#define LN_hmacWithSHA256 "hmacWithSHA256" +#define NID_hmacWithSHA256 799 +#define OBJ_hmacWithSHA256 OBJ_rsadsi,2L,9L + +#define LN_hmacWithSHA384 "hmacWithSHA384" +#define NID_hmacWithSHA384 800 +#define OBJ_hmacWithSHA384 OBJ_rsadsi,2L,10L + +#define LN_hmacWithSHA512 "hmacWithSHA512" +#define NID_hmacWithSHA512 801 +#define OBJ_hmacWithSHA512 OBJ_rsadsi,2L,11L + +#define LN_hmacWithSHA512_224 "hmacWithSHA512-224" +#define NID_hmacWithSHA512_224 1193 +#define OBJ_hmacWithSHA512_224 OBJ_rsadsi,2L,12L + +#define LN_hmacWithSHA512_256 "hmacWithSHA512-256" +#define NID_hmacWithSHA512_256 1194 +#define OBJ_hmacWithSHA512_256 OBJ_rsadsi,2L,13L + +#define SN_rc2_cbc "RC2-CBC" +#define LN_rc2_cbc "rc2-cbc" +#define NID_rc2_cbc 37 +#define OBJ_rc2_cbc OBJ_rsadsi,3L,2L + +#define SN_rc2_ecb "RC2-ECB" +#define LN_rc2_ecb "rc2-ecb" +#define NID_rc2_ecb 38 + +#define SN_rc2_cfb64 "RC2-CFB" +#define LN_rc2_cfb64 "rc2-cfb" +#define NID_rc2_cfb64 39 + +#define SN_rc2_ofb64 "RC2-OFB" +#define LN_rc2_ofb64 "rc2-ofb" +#define NID_rc2_ofb64 40 + +#define SN_rc2_40_cbc "RC2-40-CBC" +#define LN_rc2_40_cbc "rc2-40-cbc" +#define NID_rc2_40_cbc 98 + +#define SN_rc2_64_cbc "RC2-64-CBC" +#define LN_rc2_64_cbc "rc2-64-cbc" +#define NID_rc2_64_cbc 166 + +#define SN_rc4 "RC4" +#define LN_rc4 "rc4" +#define NID_rc4 5 +#define OBJ_rc4 OBJ_rsadsi,3L,4L + +#define SN_rc4_40 "RC4-40" +#define LN_rc4_40 "rc4-40" +#define NID_rc4_40 97 + +#define SN_des_ede3_cbc "DES-EDE3-CBC" +#define LN_des_ede3_cbc "des-ede3-cbc" +#define NID_des_ede3_cbc 44 +#define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L + +#define SN_rc5_cbc "RC5-CBC" +#define LN_rc5_cbc "rc5-cbc" +#define NID_rc5_cbc 120 +#define OBJ_rc5_cbc OBJ_rsadsi,3L,8L + +#define SN_rc5_ecb "RC5-ECB" +#define LN_rc5_ecb "rc5-ecb" +#define NID_rc5_ecb 121 + +#define SN_rc5_cfb64 "RC5-CFB" +#define LN_rc5_cfb64 "rc5-cfb" +#define NID_rc5_cfb64 122 + +#define SN_rc5_ofb64 "RC5-OFB" +#define LN_rc5_ofb64 "rc5-ofb" +#define NID_rc5_ofb64 123 + +#define SN_ms_ext_req "msExtReq" +#define LN_ms_ext_req "Microsoft Extension Request" +#define NID_ms_ext_req 171 +#define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L + +#define SN_ms_code_ind "msCodeInd" +#define LN_ms_code_ind "Microsoft Individual Code Signing" +#define NID_ms_code_ind 134 +#define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L + +#define SN_ms_code_com "msCodeCom" +#define LN_ms_code_com "Microsoft Commercial Code Signing" +#define NID_ms_code_com 135 +#define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L + +#define SN_ms_ctl_sign "msCTLSign" +#define LN_ms_ctl_sign "Microsoft Trust List Signing" +#define NID_ms_ctl_sign 136 +#define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L + +#define SN_ms_sgc "msSGC" +#define LN_ms_sgc "Microsoft Server Gated Crypto" +#define NID_ms_sgc 137 +#define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L + +#define SN_ms_efs "msEFS" +#define LN_ms_efs "Microsoft Encrypted File System" +#define NID_ms_efs 138 +#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L + +#define SN_ms_smartcard_login "msSmartcardLogin" +#define LN_ms_smartcard_login "Microsoft Smartcard Login" +#define NID_ms_smartcard_login 648 +#define OBJ_ms_smartcard_login 1L,3L,6L,1L,4L,1L,311L,20L,2L,2L + +#define SN_ms_upn "msUPN" +#define LN_ms_upn "Microsoft User Principal Name" +#define NID_ms_upn 649 +#define OBJ_ms_upn 1L,3L,6L,1L,4L,1L,311L,20L,2L,3L + +#define SN_idea_cbc "IDEA-CBC" +#define LN_idea_cbc "idea-cbc" +#define NID_idea_cbc 34 +#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L + +#define SN_idea_ecb "IDEA-ECB" +#define LN_idea_ecb "idea-ecb" +#define NID_idea_ecb 36 + +#define SN_idea_cfb64 "IDEA-CFB" +#define LN_idea_cfb64 "idea-cfb" +#define NID_idea_cfb64 35 + +#define SN_idea_ofb64 "IDEA-OFB" +#define LN_idea_ofb64 "idea-ofb" +#define NID_idea_ofb64 46 + +#define SN_bf_cbc "BF-CBC" +#define LN_bf_cbc "bf-cbc" +#define NID_bf_cbc 91 +#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L + +#define SN_bf_ecb "BF-ECB" +#define LN_bf_ecb "bf-ecb" +#define NID_bf_ecb 92 + +#define SN_bf_cfb64 "BF-CFB" +#define LN_bf_cfb64 "bf-cfb" +#define NID_bf_cfb64 93 + +#define SN_bf_ofb64 "BF-OFB" +#define LN_bf_ofb64 "bf-ofb" +#define NID_bf_ofb64 94 + +#define SN_id_pkix "PKIX" +#define NID_id_pkix 127 +#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L + +#define SN_id_pkix_mod "id-pkix-mod" +#define NID_id_pkix_mod 258 +#define OBJ_id_pkix_mod OBJ_id_pkix,0L + +#define SN_id_pe "id-pe" +#define NID_id_pe 175 +#define OBJ_id_pe OBJ_id_pkix,1L + +#define SN_id_qt "id-qt" +#define NID_id_qt 259 +#define OBJ_id_qt OBJ_id_pkix,2L + +#define SN_id_kp "id-kp" +#define NID_id_kp 128 +#define OBJ_id_kp OBJ_id_pkix,3L + +#define SN_id_it "id-it" +#define NID_id_it 260 +#define OBJ_id_it OBJ_id_pkix,4L + +#define SN_id_pkip "id-pkip" +#define NID_id_pkip 261 +#define OBJ_id_pkip OBJ_id_pkix,5L + +#define SN_id_alg "id-alg" +#define NID_id_alg 262 +#define OBJ_id_alg OBJ_id_pkix,6L + +#define SN_id_cmc "id-cmc" +#define NID_id_cmc 263 +#define OBJ_id_cmc OBJ_id_pkix,7L + +#define SN_id_on "id-on" +#define NID_id_on 264 +#define OBJ_id_on OBJ_id_pkix,8L + +#define SN_id_pda "id-pda" +#define NID_id_pda 265 +#define OBJ_id_pda OBJ_id_pkix,9L + +#define SN_id_aca "id-aca" +#define NID_id_aca 266 +#define OBJ_id_aca OBJ_id_pkix,10L + +#define SN_id_qcs "id-qcs" +#define NID_id_qcs 267 +#define OBJ_id_qcs OBJ_id_pkix,11L + +#define SN_id_cp "id-cp" +#define NID_id_cp 1238 +#define OBJ_id_cp OBJ_id_pkix,14L + +#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_sbgp_ipAddrBlockv2 "sbgp-ipAddrBlockv2" +#define NID_sbgp_ipAddrBlockv2 1239 +#define OBJ_sbgp_ipAddrBlockv2 OBJ_id_pe,28L + +#define SN_sbgp_autonomousSysNumv2 "sbgp-autonomousSysNumv2" +#define NID_sbgp_autonomousSysNumv2 1240 +#define OBJ_sbgp_autonomousSysNumv2 OBJ_id_pe,29L + +#define SN_id_qt_cps "id-qt-cps" +#define LN_id_qt_cps "Policy Qualifier CPS" +#define NID_id_qt_cps 164 +#define OBJ_id_qt_cps OBJ_id_qt,1L + +#define SN_id_qt_unotice "id-qt-unotice" +#define LN_id_qt_unotice "Policy Qualifier User Notice" +#define NID_id_qt_unotice 165 +#define OBJ_id_qt_unotice OBJ_id_qt,2L + +#define SN_textNotice "textNotice" +#define NID_textNotice 293 +#define OBJ_textNotice OBJ_id_qt,3L + +#define SN_server_auth "serverAuth" +#define LN_server_auth "TLS Web Server Authentication" +#define NID_server_auth 129 +#define OBJ_server_auth OBJ_id_kp,1L + +#define SN_client_auth "clientAuth" +#define LN_client_auth "TLS Web Client Authentication" +#define NID_client_auth 130 +#define OBJ_client_auth OBJ_id_kp,2L + +#define SN_code_sign "codeSigning" +#define LN_code_sign "Code Signing" +#define NID_code_sign 131 +#define OBJ_code_sign OBJ_id_kp,3L + +#define SN_email_protect "emailProtection" +#define LN_email_protect "E-mail Protection" +#define NID_email_protect 132 +#define OBJ_email_protect OBJ_id_kp,4L + +#define SN_ipsecEndSystem "ipsecEndSystem" +#define LN_ipsecEndSystem "IPSec End System" +#define NID_ipsecEndSystem 294 +#define OBJ_ipsecEndSystem OBJ_id_kp,5L + +#define SN_ipsecTunnel "ipsecTunnel" +#define LN_ipsecTunnel "IPSec Tunnel" +#define NID_ipsecTunnel 295 +#define OBJ_ipsecTunnel OBJ_id_kp,6L + +#define SN_ipsecUser "ipsecUser" +#define LN_ipsecUser "IPSec User" +#define NID_ipsecUser 296 +#define OBJ_ipsecUser OBJ_id_kp,7L + +#define SN_time_stamp "timeStamping" +#define LN_time_stamp "Time Stamping" +#define NID_time_stamp 133 +#define OBJ_time_stamp OBJ_id_kp,8L + +#define SN_OCSP_sign "OCSPSigning" +#define LN_OCSP_sign "OCSP Signing" +#define NID_OCSP_sign 180 +#define OBJ_OCSP_sign OBJ_id_kp,9L + +#define SN_dvcs "DVCS" +#define LN_dvcs "dvcs" +#define NID_dvcs 297 +#define OBJ_dvcs OBJ_id_kp,10L + +#define SN_ipsec_IKE "ipsecIKE" +#define LN_ipsec_IKE "ipsec Internet Key Exchange" +#define NID_ipsec_IKE 1022 +#define OBJ_ipsec_IKE OBJ_id_kp,17L + +#define SN_capwapAC "capwapAC" +#define LN_capwapAC "Ctrl/provision WAP Access" +#define NID_capwapAC 1023 +#define OBJ_capwapAC OBJ_id_kp,18L + +#define SN_capwapWTP "capwapWTP" +#define LN_capwapWTP "Ctrl/Provision WAP Termination" +#define NID_capwapWTP 1024 +#define OBJ_capwapWTP OBJ_id_kp,19L + +#define SN_sshClient "secureShellClient" +#define LN_sshClient "SSH Client" +#define NID_sshClient 1025 +#define OBJ_sshClient OBJ_id_kp,21L + +#define SN_sshServer "secureShellServer" +#define LN_sshServer "SSH Server" +#define NID_sshServer 1026 +#define OBJ_sshServer OBJ_id_kp,22L + +#define SN_sendRouter "sendRouter" +#define LN_sendRouter "Send Router" +#define NID_sendRouter 1027 +#define OBJ_sendRouter OBJ_id_kp,23L + +#define SN_sendProxiedRouter "sendProxiedRouter" +#define LN_sendProxiedRouter "Send Proxied Router" +#define NID_sendProxiedRouter 1028 +#define OBJ_sendProxiedRouter OBJ_id_kp,24L + +#define SN_sendOwner "sendOwner" +#define LN_sendOwner "Send Owner" +#define NID_sendOwner 1029 +#define OBJ_sendOwner OBJ_id_kp,25L + +#define SN_sendProxiedOwner "sendProxiedOwner" +#define LN_sendProxiedOwner "Send Proxied Owner" +#define NID_sendProxiedOwner 1030 +#define OBJ_sendProxiedOwner OBJ_id_kp,26L + +#define SN_cmcCA "cmcCA" +#define LN_cmcCA "CMC Certificate Authority" +#define NID_cmcCA 1131 +#define OBJ_cmcCA OBJ_id_kp,27L + +#define SN_cmcRA "cmcRA" +#define LN_cmcRA "CMC Registration Authority" +#define NID_cmcRA 1132 +#define OBJ_cmcRA OBJ_id_kp,28L + +#define SN_cmcArchive "cmcArchive" +#define LN_cmcArchive "CMC Archive Server" +#define NID_cmcArchive 1219 +#define OBJ_cmcArchive OBJ_id_kp,29L + +#define SN_id_kp_bgpsec_router "id-kp-bgpsec-router" +#define LN_id_kp_bgpsec_router "BGPsec Router" +#define NID_id_kp_bgpsec_router 1220 +#define OBJ_id_kp_bgpsec_router OBJ_id_kp,30L + +#define SN_id_kp_BrandIndicatorforMessageIdentification "id-kp-BrandIndicatorforMessageIdentification" +#define LN_id_kp_BrandIndicatorforMessageIdentification "Brand Indicator for Message Identification" +#define NID_id_kp_BrandIndicatorforMessageIdentification 1221 +#define OBJ_id_kp_BrandIndicatorforMessageIdentification OBJ_id_kp,31L + +#define SN_cmKGA "cmKGA" +#define LN_cmKGA "Certificate Management Key Generation Authority" +#define NID_cmKGA 1222 +#define OBJ_cmKGA OBJ_id_kp,32L + +#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_it_caCerts "id-it-caCerts" +#define NID_id_it_caCerts 1223 +#define OBJ_id_it_caCerts OBJ_id_it,17L + +#define SN_id_it_rootCaKeyUpdate "id-it-rootCaKeyUpdate" +#define NID_id_it_rootCaKeyUpdate 1224 +#define OBJ_id_it_rootCaKeyUpdate OBJ_id_it,18L + +#define SN_id_it_certReqTemplate "id-it-certReqTemplate" +#define NID_id_it_certReqTemplate 1225 +#define OBJ_id_it_certReqTemplate OBJ_id_it,19L + +#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_XmppAddr "id-on-xmppAddr" +#define LN_XmppAddr "XmppAddr" +#define NID_XmppAddr 1209 +#define OBJ_XmppAddr OBJ_id_on,5L + +#define SN_SRVName "id-on-dnsSRV" +#define LN_SRVName "SRVName" +#define NID_SRVName 1210 +#define OBJ_SRVName OBJ_id_on,7L + +#define SN_NAIRealm "id-on-NAIRealm" +#define LN_NAIRealm "NAIRealm" +#define NID_NAIRealm 1211 +#define OBJ_NAIRealm OBJ_id_on,8L + +#define SN_id_on_SmtpUTF8Mailbox "id-on-SmtpUTF8Mailbox" +#define LN_id_on_SmtpUTF8Mailbox "Smtp UTF8 Mailbox" +#define NID_id_on_SmtpUTF8Mailbox 1208 +#define OBJ_id_on_SmtpUTF8Mailbox OBJ_id_on,9L + +#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_ipAddr_asNumber "ipAddr-asNumber" +#define NID_ipAddr_asNumber 1241 +#define OBJ_ipAddr_asNumber OBJ_id_cp,2L + +#define SN_ipAddr_asNumberv2 "ipAddr-asNumberv2" +#define NID_ipAddr_asNumberv2 1242 +#define OBJ_ipAddr_asNumberv2 OBJ_id_cp,3L + +#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 SN_rpkiManifest "rpkiManifest" +#define LN_rpkiManifest "RPKI Manifest" +#define NID_rpkiManifest 1243 +#define OBJ_rpkiManifest OBJ_id_ad,10L + +#define SN_signedObject "signedObject" +#define LN_signedObject "Signed Object" +#define NID_signedObject 1244 +#define OBJ_signedObject OBJ_id_ad,11L + +#define SN_rpkiNotify "rpkiNotify" +#define LN_rpkiNotify "RPKI Notify" +#define NID_rpkiNotify 1245 +#define OBJ_rpkiNotify OBJ_id_ad,13L + +#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_blake2bmac "BLAKE2BMAC" +#define LN_blake2bmac "blake2bmac" +#define NID_blake2bmac 1201 +#define OBJ_blake2bmac 1L,3L,6L,1L,4L,1L,1722L,12L,2L,1L + +#define SN_blake2smac "BLAKE2SMAC" +#define LN_blake2smac "blake2smac" +#define NID_blake2smac 1202 +#define OBJ_blake2smac 1L,3L,6L,1L,4L,1L,1722L,12L,2L,2L + +#define SN_blake2b512 "BLAKE2b512" +#define LN_blake2b512 "blake2b512" +#define NID_blake2b512 1056 +#define OBJ_blake2b512 OBJ_blake2bmac,16L + +#define SN_blake2s256 "BLAKE2s256" +#define LN_blake2s256 "blake2s256" +#define NID_blake2s256 1057 +#define OBJ_blake2s256 OBJ_blake2smac,8L + +#define SN_sxnet "SXNetID" +#define LN_sxnet "Strong Extranet ID" +#define NID_sxnet 143 +#define OBJ_sxnet 1L,3L,101L,1L,4L,1L + +#define SN_X500 "X500" +#define LN_X500 "directory services (X.500)" +#define NID_X500 11 +#define OBJ_X500 2L,5L + +#define SN_X509 "X509" +#define NID_X509 12 +#define OBJ_X509 OBJ_X500,4L + +#define SN_commonName "CN" +#define LN_commonName "commonName" +#define NID_commonName 13 +#define OBJ_commonName OBJ_X509,3L + +#define SN_surname "SN" +#define LN_surname "surname" +#define NID_surname 100 +#define OBJ_surname OBJ_X509,4L + +#define LN_serialNumber "serialNumber" +#define NID_serialNumber 105 +#define OBJ_serialNumber OBJ_X509,5L + +#define SN_countryName "C" +#define LN_countryName "countryName" +#define NID_countryName 14 +#define OBJ_countryName OBJ_X509,6L + +#define SN_localityName "L" +#define LN_localityName "localityName" +#define NID_localityName 15 +#define OBJ_localityName OBJ_X509,7L + +#define SN_stateOrProvinceName "ST" +#define LN_stateOrProvinceName "stateOrProvinceName" +#define NID_stateOrProvinceName 16 +#define OBJ_stateOrProvinceName OBJ_X509,8L + +#define SN_streetAddress "street" +#define LN_streetAddress "streetAddress" +#define NID_streetAddress 660 +#define OBJ_streetAddress OBJ_X509,9L + +#define SN_organizationName "O" +#define LN_organizationName "organizationName" +#define NID_organizationName 17 +#define OBJ_organizationName OBJ_X509,10L + +#define SN_organizationalUnitName "OU" +#define LN_organizationalUnitName "organizationalUnitName" +#define NID_organizationalUnitName 18 +#define OBJ_organizationalUnitName OBJ_X509,11L + +#define SN_title "title" +#define LN_title "title" +#define NID_title 106 +#define OBJ_title OBJ_X509,12L + +#define LN_description "description" +#define NID_description 107 +#define OBJ_description OBJ_X509,13L + +#define LN_searchGuide "searchGuide" +#define NID_searchGuide 859 +#define OBJ_searchGuide OBJ_X509,14L + +#define LN_businessCategory "businessCategory" +#define NID_businessCategory 860 +#define OBJ_businessCategory OBJ_X509,15L + +#define LN_postalAddress "postalAddress" +#define NID_postalAddress 861 +#define OBJ_postalAddress OBJ_X509,16L + +#define LN_postalCode "postalCode" +#define NID_postalCode 661 +#define OBJ_postalCode OBJ_X509,17L + +#define LN_postOfficeBox "postOfficeBox" +#define NID_postOfficeBox 862 +#define OBJ_postOfficeBox OBJ_X509,18L + +#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName" +#define NID_physicalDeliveryOfficeName 863 +#define OBJ_physicalDeliveryOfficeName OBJ_X509,19L + +#define LN_telephoneNumber "telephoneNumber" +#define NID_telephoneNumber 864 +#define OBJ_telephoneNumber OBJ_X509,20L + +#define LN_telexNumber "telexNumber" +#define NID_telexNumber 865 +#define OBJ_telexNumber OBJ_X509,21L + +#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier" +#define NID_teletexTerminalIdentifier 866 +#define OBJ_teletexTerminalIdentifier OBJ_X509,22L + +#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber" +#define NID_facsimileTelephoneNumber 867 +#define OBJ_facsimileTelephoneNumber OBJ_X509,23L + +#define LN_x121Address "x121Address" +#define NID_x121Address 868 +#define OBJ_x121Address OBJ_X509,24L + +#define LN_internationaliSDNNumber "internationaliSDNNumber" +#define NID_internationaliSDNNumber 869 +#define OBJ_internationaliSDNNumber OBJ_X509,25L + +#define LN_registeredAddress "registeredAddress" +#define NID_registeredAddress 870 +#define OBJ_registeredAddress OBJ_X509,26L + +#define LN_destinationIndicator "destinationIndicator" +#define NID_destinationIndicator 871 +#define OBJ_destinationIndicator OBJ_X509,27L + +#define LN_preferredDeliveryMethod "preferredDeliveryMethod" +#define NID_preferredDeliveryMethod 872 +#define OBJ_preferredDeliveryMethod OBJ_X509,28L + +#define LN_presentationAddress "presentationAddress" +#define NID_presentationAddress 873 +#define OBJ_presentationAddress OBJ_X509,29L + +#define LN_supportedApplicationContext "supportedApplicationContext" +#define NID_supportedApplicationContext 874 +#define OBJ_supportedApplicationContext OBJ_X509,30L + +#define SN_member "member" +#define NID_member 875 +#define OBJ_member OBJ_X509,31L + +#define SN_owner "owner" +#define NID_owner 876 +#define OBJ_owner OBJ_X509,32L + +#define LN_roleOccupant "roleOccupant" +#define NID_roleOccupant 877 +#define OBJ_roleOccupant OBJ_X509,33L + +#define SN_seeAlso "seeAlso" +#define NID_seeAlso 878 +#define OBJ_seeAlso OBJ_X509,34L + +#define LN_userPassword "userPassword" +#define NID_userPassword 879 +#define OBJ_userPassword OBJ_X509,35L + +#define LN_userCertificate "userCertificate" +#define NID_userCertificate 880 +#define OBJ_userCertificate OBJ_X509,36L + +#define LN_cACertificate "cACertificate" +#define NID_cACertificate 881 +#define OBJ_cACertificate OBJ_X509,37L + +#define LN_authorityRevocationList "authorityRevocationList" +#define NID_authorityRevocationList 882 +#define OBJ_authorityRevocationList OBJ_X509,38L + +#define LN_certificateRevocationList "certificateRevocationList" +#define NID_certificateRevocationList 883 +#define OBJ_certificateRevocationList OBJ_X509,39L + +#define LN_crossCertificatePair "crossCertificatePair" +#define NID_crossCertificatePair 884 +#define OBJ_crossCertificatePair OBJ_X509,40L + +#define SN_name "name" +#define LN_name "name" +#define NID_name 173 +#define OBJ_name OBJ_X509,41L + +#define SN_givenName "GN" +#define LN_givenName "givenName" +#define NID_givenName 99 +#define OBJ_givenName OBJ_X509,42L + +#define SN_initials "initials" +#define LN_initials "initials" +#define NID_initials 101 +#define OBJ_initials OBJ_X509,43L + +#define LN_generationQualifier "generationQualifier" +#define NID_generationQualifier 509 +#define OBJ_generationQualifier OBJ_X509,44L + +#define LN_x500UniqueIdentifier "x500UniqueIdentifier" +#define NID_x500UniqueIdentifier 503 +#define OBJ_x500UniqueIdentifier OBJ_X509,45L + +#define SN_dnQualifier "dnQualifier" +#define LN_dnQualifier "dnQualifier" +#define NID_dnQualifier 174 +#define OBJ_dnQualifier OBJ_X509,46L + +#define LN_enhancedSearchGuide "enhancedSearchGuide" +#define NID_enhancedSearchGuide 885 +#define OBJ_enhancedSearchGuide OBJ_X509,47L + +#define LN_protocolInformation "protocolInformation" +#define NID_protocolInformation 886 +#define OBJ_protocolInformation OBJ_X509,48L + +#define LN_distinguishedName "distinguishedName" +#define NID_distinguishedName 887 +#define OBJ_distinguishedName OBJ_X509,49L + +#define LN_uniqueMember "uniqueMember" +#define NID_uniqueMember 888 +#define OBJ_uniqueMember OBJ_X509,50L + +#define LN_houseIdentifier "houseIdentifier" +#define NID_houseIdentifier 889 +#define OBJ_houseIdentifier OBJ_X509,51L + +#define LN_supportedAlgorithms "supportedAlgorithms" +#define NID_supportedAlgorithms 890 +#define OBJ_supportedAlgorithms OBJ_X509,52L + +#define LN_deltaRevocationList "deltaRevocationList" +#define NID_deltaRevocationList 891 +#define OBJ_deltaRevocationList OBJ_X509,53L + +#define SN_dmdName "dmdName" +#define NID_dmdName 892 +#define OBJ_dmdName OBJ_X509,54L + +#define LN_pseudonym "pseudonym" +#define NID_pseudonym 510 +#define OBJ_pseudonym OBJ_X509,65L + +#define SN_role "role" +#define LN_role "role" +#define NID_role 400 +#define OBJ_role OBJ_X509,72L + +#define LN_organizationIdentifier "organizationIdentifier" +#define NID_organizationIdentifier 1089 +#define OBJ_organizationIdentifier OBJ_X509,97L + +#define SN_countryCode3c "c3" +#define LN_countryCode3c "countryCode3c" +#define NID_countryCode3c 1090 +#define OBJ_countryCode3c OBJ_X509,98L + +#define SN_countryCode3n "n3" +#define LN_countryCode3n "countryCode3n" +#define NID_countryCode3n 1091 +#define OBJ_countryCode3n OBJ_X509,99L + +#define LN_dnsName "dnsName" +#define NID_dnsName 1092 +#define OBJ_dnsName OBJ_X509,100L + +#define SN_X500algorithms "X500algorithms" +#define LN_X500algorithms "directory services - algorithms" +#define NID_X500algorithms 378 +#define OBJ_X500algorithms OBJ_X500,8L + +#define SN_rsa "RSA" +#define LN_rsa "rsa" +#define NID_rsa 19 +#define OBJ_rsa OBJ_X500algorithms,1L,1L + +#define SN_mdc2WithRSA "RSA-MDC2" +#define LN_mdc2WithRSA "mdc2WithRSA" +#define NID_mdc2WithRSA 96 +#define OBJ_mdc2WithRSA OBJ_X500algorithms,3L,100L + +#define SN_mdc2 "MDC2" +#define LN_mdc2 "mdc2" +#define NID_mdc2 95 +#define OBJ_mdc2 OBJ_X500algorithms,3L,101L + +#define SN_id_ce "id-ce" +#define NID_id_ce 81 +#define OBJ_id_ce OBJ_X500,29L + +#define SN_subject_directory_attributes "subjectDirectoryAttributes" +#define LN_subject_directory_attributes "X509v3 Subject Directory Attributes" +#define NID_subject_directory_attributes 769 +#define OBJ_subject_directory_attributes OBJ_id_ce,9L + +#define SN_subject_key_identifier "subjectKeyIdentifier" +#define LN_subject_key_identifier "X509v3 Subject Key Identifier" +#define NID_subject_key_identifier 82 +#define OBJ_subject_key_identifier OBJ_id_ce,14L + +#define SN_key_usage "keyUsage" +#define LN_key_usage "X509v3 Key Usage" +#define NID_key_usage 83 +#define OBJ_key_usage OBJ_id_ce,15L + +#define SN_private_key_usage_period "privateKeyUsagePeriod" +#define LN_private_key_usage_period "X509v3 Private Key Usage Period" +#define NID_private_key_usage_period 84 +#define OBJ_private_key_usage_period OBJ_id_ce,16L + +#define SN_subject_alt_name "subjectAltName" +#define LN_subject_alt_name "X509v3 Subject Alternative Name" +#define NID_subject_alt_name 85 +#define OBJ_subject_alt_name OBJ_id_ce,17L + +#define SN_issuer_alt_name "issuerAltName" +#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" +#define NID_issuer_alt_name 86 +#define OBJ_issuer_alt_name OBJ_id_ce,18L + +#define SN_basic_constraints "basicConstraints" +#define LN_basic_constraints "X509v3 Basic Constraints" +#define NID_basic_constraints 87 +#define OBJ_basic_constraints OBJ_id_ce,19L + +#define SN_crl_number "crlNumber" +#define LN_crl_number "X509v3 CRL Number" +#define NID_crl_number 88 +#define OBJ_crl_number OBJ_id_ce,20L + +#define SN_crl_reason "CRLReason" +#define LN_crl_reason "X509v3 CRL Reason Code" +#define NID_crl_reason 141 +#define OBJ_crl_reason OBJ_id_ce,21L + +#define SN_invalidity_date "invalidityDate" +#define LN_invalidity_date "Invalidity Date" +#define NID_invalidity_date 142 +#define OBJ_invalidity_date OBJ_id_ce,24L + +#define SN_delta_crl "deltaCRL" +#define LN_delta_crl "X509v3 Delta CRL Indicator" +#define NID_delta_crl 140 +#define OBJ_delta_crl OBJ_id_ce,27L + +#define SN_issuing_distribution_point "issuingDistributionPoint" +#define LN_issuing_distribution_point "X509v3 Issuing Distribution Point" +#define NID_issuing_distribution_point 770 +#define OBJ_issuing_distribution_point OBJ_id_ce,28L + +#define SN_certificate_issuer "certificateIssuer" +#define LN_certificate_issuer "X509v3 Certificate Issuer" +#define NID_certificate_issuer 771 +#define OBJ_certificate_issuer OBJ_id_ce,29L + +#define SN_name_constraints "nameConstraints" +#define LN_name_constraints "X509v3 Name Constraints" +#define NID_name_constraints 666 +#define OBJ_name_constraints OBJ_id_ce,30L + +#define SN_crl_distribution_points "crlDistributionPoints" +#define LN_crl_distribution_points "X509v3 CRL Distribution Points" +#define NID_crl_distribution_points 103 +#define OBJ_crl_distribution_points OBJ_id_ce,31L + +#define SN_certificate_policies "certificatePolicies" +#define LN_certificate_policies "X509v3 Certificate Policies" +#define NID_certificate_policies 89 +#define OBJ_certificate_policies OBJ_id_ce,32L + +#define SN_any_policy "anyPolicy" +#define LN_any_policy "X509v3 Any Policy" +#define NID_any_policy 746 +#define OBJ_any_policy OBJ_certificate_policies,0L + +#define SN_policy_mappings "policyMappings" +#define LN_policy_mappings "X509v3 Policy Mappings" +#define NID_policy_mappings 747 +#define OBJ_policy_mappings OBJ_id_ce,33L + +#define SN_authority_key_identifier "authorityKeyIdentifier" +#define LN_authority_key_identifier "X509v3 Authority Key Identifier" +#define NID_authority_key_identifier 90 +#define OBJ_authority_key_identifier OBJ_id_ce,35L + +#define SN_policy_constraints "policyConstraints" +#define LN_policy_constraints "X509v3 Policy Constraints" +#define NID_policy_constraints 401 +#define OBJ_policy_constraints OBJ_id_ce,36L + +#define SN_ext_key_usage "extendedKeyUsage" +#define LN_ext_key_usage "X509v3 Extended Key Usage" +#define NID_ext_key_usage 126 +#define OBJ_ext_key_usage OBJ_id_ce,37L + +#define SN_freshest_crl "freshestCRL" +#define LN_freshest_crl "X509v3 Freshest CRL" +#define NID_freshest_crl 857 +#define OBJ_freshest_crl OBJ_id_ce,46L + +#define SN_inhibit_any_policy "inhibitAnyPolicy" +#define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" +#define NID_inhibit_any_policy 748 +#define OBJ_inhibit_any_policy OBJ_id_ce,54L + +#define SN_target_information "targetInformation" +#define LN_target_information "X509v3 AC Targeting" +#define NID_target_information 402 +#define OBJ_target_information OBJ_id_ce,55L + +#define SN_no_rev_avail "noRevAvail" +#define LN_no_rev_avail "X509v3 No Revocation Available" +#define NID_no_rev_avail 403 +#define OBJ_no_rev_avail OBJ_id_ce,56L + +#define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" +#define LN_anyExtendedKeyUsage "Any Extended Key Usage" +#define NID_anyExtendedKeyUsage 910 +#define OBJ_anyExtendedKeyUsage OBJ_ext_key_usage,0L + +#define SN_netscape "Netscape" +#define LN_netscape "Netscape Communications Corp." +#define NID_netscape 57 +#define OBJ_netscape 2L,16L,840L,1L,113730L + +#define SN_netscape_cert_extension "nsCertExt" +#define LN_netscape_cert_extension "Netscape Certificate Extension" +#define NID_netscape_cert_extension 58 +#define OBJ_netscape_cert_extension OBJ_netscape,1L + +#define SN_netscape_data_type "nsDataType" +#define LN_netscape_data_type "Netscape Data Type" +#define NID_netscape_data_type 59 +#define OBJ_netscape_data_type OBJ_netscape,2L + +#define SN_netscape_cert_type "nsCertType" +#define LN_netscape_cert_type "Netscape Cert Type" +#define NID_netscape_cert_type 71 +#define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L + +#define SN_netscape_base_url "nsBaseUrl" +#define LN_netscape_base_url "Netscape Base Url" +#define NID_netscape_base_url 72 +#define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L + +#define SN_netscape_revocation_url "nsRevocationUrl" +#define LN_netscape_revocation_url "Netscape Revocation Url" +#define NID_netscape_revocation_url 73 +#define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L + +#define SN_netscape_ca_revocation_url "nsCaRevocationUrl" +#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" +#define NID_netscape_ca_revocation_url 74 +#define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L + +#define SN_netscape_renewal_url "nsRenewalUrl" +#define LN_netscape_renewal_url "Netscape Renewal Url" +#define NID_netscape_renewal_url 75 +#define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L + +#define SN_netscape_ca_policy_url "nsCaPolicyUrl" +#define LN_netscape_ca_policy_url "Netscape CA Policy Url" +#define NID_netscape_ca_policy_url 76 +#define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L + +#define SN_netscape_ssl_server_name "nsSslServerName" +#define LN_netscape_ssl_server_name "Netscape SSL Server Name" +#define NID_netscape_ssl_server_name 77 +#define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L + +#define SN_netscape_comment "nsComment" +#define LN_netscape_comment "Netscape Comment" +#define NID_netscape_comment 78 +#define OBJ_netscape_comment OBJ_netscape_cert_extension,13L + +#define SN_netscape_cert_sequence "nsCertSequence" +#define LN_netscape_cert_sequence "Netscape Certificate Sequence" +#define NID_netscape_cert_sequence 79 +#define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L + +#define SN_ns_sgc "nsSGC" +#define LN_ns_sgc "Netscape Server Gated Crypto" +#define NID_ns_sgc 139 +#define OBJ_ns_sgc OBJ_netscape,4L,1L + +#define SN_org "ORG" +#define LN_org "org" +#define NID_org 379 +#define OBJ_org OBJ_iso,3L + +#define SN_dod "DOD" +#define LN_dod "dod" +#define NID_dod 380 +#define OBJ_dod OBJ_org,6L + +#define SN_iana "IANA" +#define LN_iana "iana" +#define NID_iana 381 +#define OBJ_iana OBJ_dod,1L + +#define OBJ_internet OBJ_iana + +#define SN_Directory "directory" +#define LN_Directory "Directory" +#define NID_Directory 382 +#define OBJ_Directory OBJ_internet,1L + +#define SN_Management "mgmt" +#define LN_Management "Management" +#define NID_Management 383 +#define OBJ_Management OBJ_internet,2L + +#define SN_Experimental "experimental" +#define LN_Experimental "Experimental" +#define NID_Experimental 384 +#define OBJ_Experimental OBJ_internet,3L + +#define SN_Private "private" +#define LN_Private "Private" +#define NID_Private 385 +#define OBJ_Private OBJ_internet,4L + +#define SN_Security "security" +#define LN_Security "Security" +#define NID_Security 386 +#define OBJ_Security OBJ_internet,5L + +#define SN_SNMPv2 "snmpv2" +#define LN_SNMPv2 "SNMPv2" +#define NID_SNMPv2 387 +#define OBJ_SNMPv2 OBJ_internet,6L + +#define LN_Mail "Mail" +#define NID_Mail 388 +#define OBJ_Mail OBJ_internet,7L + +#define SN_Enterprises "enterprises" +#define LN_Enterprises "Enterprises" +#define NID_Enterprises 389 +#define OBJ_Enterprises OBJ_Private,1L + +#define SN_dcObject "dcobject" +#define LN_dcObject "dcObject" +#define NID_dcObject 390 +#define OBJ_dcObject OBJ_Enterprises,1466L,344L + +#define SN_mime_mhs "mime-mhs" +#define LN_mime_mhs "MIME MHS" +#define NID_mime_mhs 504 +#define OBJ_mime_mhs OBJ_Mail,1L + +#define SN_mime_mhs_headings "mime-mhs-headings" +#define LN_mime_mhs_headings "mime-mhs-headings" +#define NID_mime_mhs_headings 505 +#define OBJ_mime_mhs_headings OBJ_mime_mhs,1L + +#define SN_mime_mhs_bodies "mime-mhs-bodies" +#define LN_mime_mhs_bodies "mime-mhs-bodies" +#define NID_mime_mhs_bodies 506 +#define OBJ_mime_mhs_bodies OBJ_mime_mhs,2L + +#define SN_id_hex_partial_message "id-hex-partial-message" +#define LN_id_hex_partial_message "id-hex-partial-message" +#define NID_id_hex_partial_message 507 +#define OBJ_id_hex_partial_message OBJ_mime_mhs_headings,1L + +#define SN_id_hex_multipart_message "id-hex-multipart-message" +#define LN_id_hex_multipart_message "id-hex-multipart-message" +#define NID_id_hex_multipart_message 508 +#define OBJ_id_hex_multipart_message OBJ_mime_mhs_headings,2L + +#define SN_zlib_compression "ZLIB" +#define LN_zlib_compression "zlib compression" +#define NID_zlib_compression 125 +#define OBJ_zlib_compression OBJ_id_smime_alg,8L + +#define OBJ_csor 2L,16L,840L,1L,101L,3L + +#define OBJ_nistAlgorithms OBJ_csor,4L + +#define OBJ_aes OBJ_nistAlgorithms,1L + +#define SN_aes_128_ecb "AES-128-ECB" +#define LN_aes_128_ecb "aes-128-ecb" +#define NID_aes_128_ecb 418 +#define OBJ_aes_128_ecb OBJ_aes,1L + +#define SN_aes_128_cbc "AES-128-CBC" +#define LN_aes_128_cbc "aes-128-cbc" +#define NID_aes_128_cbc 419 +#define OBJ_aes_128_cbc OBJ_aes,2L + +#define SN_aes_128_ofb128 "AES-128-OFB" +#define LN_aes_128_ofb128 "aes-128-ofb" +#define NID_aes_128_ofb128 420 +#define OBJ_aes_128_ofb128 OBJ_aes,3L + +#define SN_aes_128_cfb128 "AES-128-CFB" +#define LN_aes_128_cfb128 "aes-128-cfb" +#define NID_aes_128_cfb128 421 +#define OBJ_aes_128_cfb128 OBJ_aes,4L + +#define SN_id_aes128_wrap "id-aes128-wrap" +#define NID_id_aes128_wrap 788 +#define OBJ_id_aes128_wrap OBJ_aes,5L + +#define SN_aes_128_gcm "id-aes128-GCM" +#define LN_aes_128_gcm "aes-128-gcm" +#define NID_aes_128_gcm 895 +#define OBJ_aes_128_gcm OBJ_aes,6L + +#define SN_aes_128_ccm "id-aes128-CCM" +#define LN_aes_128_ccm "aes-128-ccm" +#define NID_aes_128_ccm 896 +#define OBJ_aes_128_ccm OBJ_aes,7L + +#define SN_id_aes128_wrap_pad "id-aes128-wrap-pad" +#define NID_id_aes128_wrap_pad 897 +#define OBJ_id_aes128_wrap_pad OBJ_aes,8L + +#define SN_aes_192_ecb "AES-192-ECB" +#define LN_aes_192_ecb "aes-192-ecb" +#define NID_aes_192_ecb 422 +#define OBJ_aes_192_ecb OBJ_aes,21L + +#define SN_aes_192_cbc "AES-192-CBC" +#define LN_aes_192_cbc "aes-192-cbc" +#define NID_aes_192_cbc 423 +#define OBJ_aes_192_cbc OBJ_aes,22L + +#define SN_aes_192_ofb128 "AES-192-OFB" +#define LN_aes_192_ofb128 "aes-192-ofb" +#define NID_aes_192_ofb128 424 +#define OBJ_aes_192_ofb128 OBJ_aes,23L + +#define SN_aes_192_cfb128 "AES-192-CFB" +#define LN_aes_192_cfb128 "aes-192-cfb" +#define NID_aes_192_cfb128 425 +#define OBJ_aes_192_cfb128 OBJ_aes,24L + +#define SN_id_aes192_wrap "id-aes192-wrap" +#define NID_id_aes192_wrap 789 +#define OBJ_id_aes192_wrap OBJ_aes,25L + +#define SN_aes_192_gcm "id-aes192-GCM" +#define LN_aes_192_gcm "aes-192-gcm" +#define NID_aes_192_gcm 898 +#define OBJ_aes_192_gcm OBJ_aes,26L + +#define SN_aes_192_ccm "id-aes192-CCM" +#define LN_aes_192_ccm "aes-192-ccm" +#define NID_aes_192_ccm 899 +#define OBJ_aes_192_ccm OBJ_aes,27L + +#define SN_id_aes192_wrap_pad "id-aes192-wrap-pad" +#define NID_id_aes192_wrap_pad 900 +#define OBJ_id_aes192_wrap_pad OBJ_aes,28L + +#define SN_aes_256_ecb "AES-256-ECB" +#define LN_aes_256_ecb "aes-256-ecb" +#define NID_aes_256_ecb 426 +#define OBJ_aes_256_ecb OBJ_aes,41L + +#define SN_aes_256_cbc "AES-256-CBC" +#define LN_aes_256_cbc "aes-256-cbc" +#define NID_aes_256_cbc 427 +#define OBJ_aes_256_cbc OBJ_aes,42L + +#define SN_aes_256_ofb128 "AES-256-OFB" +#define LN_aes_256_ofb128 "aes-256-ofb" +#define NID_aes_256_ofb128 428 +#define OBJ_aes_256_ofb128 OBJ_aes,43L + +#define SN_aes_256_cfb128 "AES-256-CFB" +#define LN_aes_256_cfb128 "aes-256-cfb" +#define NID_aes_256_cfb128 429 +#define OBJ_aes_256_cfb128 OBJ_aes,44L + +#define SN_id_aes256_wrap "id-aes256-wrap" +#define NID_id_aes256_wrap 790 +#define OBJ_id_aes256_wrap OBJ_aes,45L + +#define SN_aes_256_gcm "id-aes256-GCM" +#define LN_aes_256_gcm "aes-256-gcm" +#define NID_aes_256_gcm 901 +#define OBJ_aes_256_gcm OBJ_aes,46L + +#define SN_aes_256_ccm "id-aes256-CCM" +#define LN_aes_256_ccm "aes-256-ccm" +#define NID_aes_256_ccm 902 +#define OBJ_aes_256_ccm OBJ_aes,47L + +#define SN_id_aes256_wrap_pad "id-aes256-wrap-pad" +#define NID_id_aes256_wrap_pad 903 +#define OBJ_id_aes256_wrap_pad OBJ_aes,48L + +#define SN_aes_128_xts "AES-128-XTS" +#define LN_aes_128_xts "aes-128-xts" +#define NID_aes_128_xts 913 +#define OBJ_aes_128_xts OBJ_ieee_siswg,0L,1L,1L + +#define SN_aes_256_xts "AES-256-XTS" +#define LN_aes_256_xts "aes-256-xts" +#define NID_aes_256_xts 914 +#define OBJ_aes_256_xts OBJ_ieee_siswg,0L,1L,2L + +#define SN_aes_128_cfb1 "AES-128-CFB1" +#define LN_aes_128_cfb1 "aes-128-cfb1" +#define NID_aes_128_cfb1 650 + +#define SN_aes_192_cfb1 "AES-192-CFB1" +#define LN_aes_192_cfb1 "aes-192-cfb1" +#define NID_aes_192_cfb1 651 + +#define SN_aes_256_cfb1 "AES-256-CFB1" +#define LN_aes_256_cfb1 "aes-256-cfb1" +#define NID_aes_256_cfb1 652 + +#define SN_aes_128_cfb8 "AES-128-CFB8" +#define LN_aes_128_cfb8 "aes-128-cfb8" +#define NID_aes_128_cfb8 653 + +#define SN_aes_192_cfb8 "AES-192-CFB8" +#define LN_aes_192_cfb8 "aes-192-cfb8" +#define NID_aes_192_cfb8 654 + +#define SN_aes_256_cfb8 "AES-256-CFB8" +#define LN_aes_256_cfb8 "aes-256-cfb8" +#define NID_aes_256_cfb8 655 + +#define SN_aes_128_ctr "AES-128-CTR" +#define LN_aes_128_ctr "aes-128-ctr" +#define NID_aes_128_ctr 904 + +#define SN_aes_192_ctr "AES-192-CTR" +#define LN_aes_192_ctr "aes-192-ctr" +#define NID_aes_192_ctr 905 + +#define SN_aes_256_ctr "AES-256-CTR" +#define LN_aes_256_ctr "aes-256-ctr" +#define NID_aes_256_ctr 906 + +#define SN_aes_128_ocb "AES-128-OCB" +#define LN_aes_128_ocb "aes-128-ocb" +#define NID_aes_128_ocb 958 + +#define SN_aes_192_ocb "AES-192-OCB" +#define LN_aes_192_ocb "aes-192-ocb" +#define NID_aes_192_ocb 959 + +#define SN_aes_256_ocb "AES-256-OCB" +#define LN_aes_256_ocb "aes-256-ocb" +#define NID_aes_256_ocb 960 + +#define SN_des_cfb1 "DES-CFB1" +#define LN_des_cfb1 "des-cfb1" +#define NID_des_cfb1 656 + +#define SN_des_cfb8 "DES-CFB8" +#define LN_des_cfb8 "des-cfb8" +#define NID_des_cfb8 657 + +#define SN_des_ede3_cfb1 "DES-EDE3-CFB1" +#define LN_des_ede3_cfb1 "des-ede3-cfb1" +#define NID_des_ede3_cfb1 658 + +#define SN_des_ede3_cfb8 "DES-EDE3-CFB8" +#define LN_des_ede3_cfb8 "des-ede3-cfb8" +#define NID_des_ede3_cfb8 659 + +#define OBJ_nist_hashalgs OBJ_nistAlgorithms,2L + +#define SN_sha256 "SHA256" +#define LN_sha256 "sha256" +#define NID_sha256 672 +#define OBJ_sha256 OBJ_nist_hashalgs,1L + +#define SN_sha384 "SHA384" +#define LN_sha384 "sha384" +#define NID_sha384 673 +#define OBJ_sha384 OBJ_nist_hashalgs,2L + +#define SN_sha512 "SHA512" +#define LN_sha512 "sha512" +#define NID_sha512 674 +#define OBJ_sha512 OBJ_nist_hashalgs,3L + +#define SN_sha224 "SHA224" +#define LN_sha224 "sha224" +#define NID_sha224 675 +#define OBJ_sha224 OBJ_nist_hashalgs,4L + +#define SN_sha512_224 "SHA512-224" +#define LN_sha512_224 "sha512-224" +#define NID_sha512_224 1094 +#define OBJ_sha512_224 OBJ_nist_hashalgs,5L + +#define SN_sha512_256 "SHA512-256" +#define LN_sha512_256 "sha512-256" +#define NID_sha512_256 1095 +#define OBJ_sha512_256 OBJ_nist_hashalgs,6L + +#define SN_sha3_224 "SHA3-224" +#define LN_sha3_224 "sha3-224" +#define NID_sha3_224 1096 +#define OBJ_sha3_224 OBJ_nist_hashalgs,7L + +#define SN_sha3_256 "SHA3-256" +#define LN_sha3_256 "sha3-256" +#define NID_sha3_256 1097 +#define OBJ_sha3_256 OBJ_nist_hashalgs,8L + +#define SN_sha3_384 "SHA3-384" +#define LN_sha3_384 "sha3-384" +#define NID_sha3_384 1098 +#define OBJ_sha3_384 OBJ_nist_hashalgs,9L + +#define SN_sha3_512 "SHA3-512" +#define LN_sha3_512 "sha3-512" +#define NID_sha3_512 1099 +#define OBJ_sha3_512 OBJ_nist_hashalgs,10L + +#define SN_shake128 "SHAKE128" +#define LN_shake128 "shake128" +#define NID_shake128 1100 +#define OBJ_shake128 OBJ_nist_hashalgs,11L + +#define SN_shake256 "SHAKE256" +#define LN_shake256 "shake256" +#define NID_shake256 1101 +#define OBJ_shake256 OBJ_nist_hashalgs,12L + +#define SN_hmac_sha3_224 "id-hmacWithSHA3-224" +#define LN_hmac_sha3_224 "hmac-sha3-224" +#define NID_hmac_sha3_224 1102 +#define OBJ_hmac_sha3_224 OBJ_nist_hashalgs,13L + +#define SN_hmac_sha3_256 "id-hmacWithSHA3-256" +#define LN_hmac_sha3_256 "hmac-sha3-256" +#define NID_hmac_sha3_256 1103 +#define OBJ_hmac_sha3_256 OBJ_nist_hashalgs,14L + +#define SN_hmac_sha3_384 "id-hmacWithSHA3-384" +#define LN_hmac_sha3_384 "hmac-sha3-384" +#define NID_hmac_sha3_384 1104 +#define OBJ_hmac_sha3_384 OBJ_nist_hashalgs,15L + +#define SN_hmac_sha3_512 "id-hmacWithSHA3-512" +#define LN_hmac_sha3_512 "hmac-sha3-512" +#define NID_hmac_sha3_512 1105 +#define OBJ_hmac_sha3_512 OBJ_nist_hashalgs,16L + +#define SN_kmac128 "KMAC128" +#define LN_kmac128 "kmac128" +#define NID_kmac128 1196 +#define OBJ_kmac128 OBJ_nist_hashalgs,19L + +#define SN_kmac256 "KMAC256" +#define LN_kmac256 "kmac256" +#define NID_kmac256 1197 +#define OBJ_kmac256 OBJ_nist_hashalgs,20L + +#define OBJ_dsa_with_sha2 OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA224 "dsa_with_SHA224" +#define NID_dsa_with_SHA224 802 +#define OBJ_dsa_with_SHA224 OBJ_dsa_with_sha2,1L + +#define SN_dsa_with_SHA256 "dsa_with_SHA256" +#define NID_dsa_with_SHA256 803 +#define OBJ_dsa_with_SHA256 OBJ_dsa_with_sha2,2L + +#define OBJ_sigAlgs OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA384 "id-dsa-with-sha384" +#define LN_dsa_with_SHA384 "dsa_with_SHA384" +#define NID_dsa_with_SHA384 1106 +#define OBJ_dsa_with_SHA384 OBJ_sigAlgs,3L + +#define SN_dsa_with_SHA512 "id-dsa-with-sha512" +#define LN_dsa_with_SHA512 "dsa_with_SHA512" +#define NID_dsa_with_SHA512 1107 +#define OBJ_dsa_with_SHA512 OBJ_sigAlgs,4L + +#define SN_dsa_with_SHA3_224 "id-dsa-with-sha3-224" +#define LN_dsa_with_SHA3_224 "dsa_with_SHA3-224" +#define NID_dsa_with_SHA3_224 1108 +#define OBJ_dsa_with_SHA3_224 OBJ_sigAlgs,5L + +#define SN_dsa_with_SHA3_256 "id-dsa-with-sha3-256" +#define LN_dsa_with_SHA3_256 "dsa_with_SHA3-256" +#define NID_dsa_with_SHA3_256 1109 +#define OBJ_dsa_with_SHA3_256 OBJ_sigAlgs,6L + +#define SN_dsa_with_SHA3_384 "id-dsa-with-sha3-384" +#define LN_dsa_with_SHA3_384 "dsa_with_SHA3-384" +#define NID_dsa_with_SHA3_384 1110 +#define OBJ_dsa_with_SHA3_384 OBJ_sigAlgs,7L + +#define SN_dsa_with_SHA3_512 "id-dsa-with-sha3-512" +#define LN_dsa_with_SHA3_512 "dsa_with_SHA3-512" +#define NID_dsa_with_SHA3_512 1111 +#define OBJ_dsa_with_SHA3_512 OBJ_sigAlgs,8L + +#define SN_ecdsa_with_SHA3_224 "id-ecdsa-with-sha3-224" +#define LN_ecdsa_with_SHA3_224 "ecdsa_with_SHA3-224" +#define NID_ecdsa_with_SHA3_224 1112 +#define OBJ_ecdsa_with_SHA3_224 OBJ_sigAlgs,9L + +#define SN_ecdsa_with_SHA3_256 "id-ecdsa-with-sha3-256" +#define LN_ecdsa_with_SHA3_256 "ecdsa_with_SHA3-256" +#define NID_ecdsa_with_SHA3_256 1113 +#define OBJ_ecdsa_with_SHA3_256 OBJ_sigAlgs,10L + +#define SN_ecdsa_with_SHA3_384 "id-ecdsa-with-sha3-384" +#define LN_ecdsa_with_SHA3_384 "ecdsa_with_SHA3-384" +#define NID_ecdsa_with_SHA3_384 1114 +#define OBJ_ecdsa_with_SHA3_384 OBJ_sigAlgs,11L + +#define SN_ecdsa_with_SHA3_512 "id-ecdsa-with-sha3-512" +#define LN_ecdsa_with_SHA3_512 "ecdsa_with_SHA3-512" +#define NID_ecdsa_with_SHA3_512 1115 +#define OBJ_ecdsa_with_SHA3_512 OBJ_sigAlgs,12L + +#define SN_RSA_SHA3_224 "id-rsassa-pkcs1-v1_5-with-sha3-224" +#define LN_RSA_SHA3_224 "RSA-SHA3-224" +#define NID_RSA_SHA3_224 1116 +#define OBJ_RSA_SHA3_224 OBJ_sigAlgs,13L + +#define SN_RSA_SHA3_256 "id-rsassa-pkcs1-v1_5-with-sha3-256" +#define LN_RSA_SHA3_256 "RSA-SHA3-256" +#define NID_RSA_SHA3_256 1117 +#define OBJ_RSA_SHA3_256 OBJ_sigAlgs,14L + +#define SN_RSA_SHA3_384 "id-rsassa-pkcs1-v1_5-with-sha3-384" +#define LN_RSA_SHA3_384 "RSA-SHA3-384" +#define NID_RSA_SHA3_384 1118 +#define OBJ_RSA_SHA3_384 OBJ_sigAlgs,15L + +#define SN_RSA_SHA3_512 "id-rsassa-pkcs1-v1_5-with-sha3-512" +#define LN_RSA_SHA3_512 "RSA-SHA3-512" +#define NID_RSA_SHA3_512 1119 +#define OBJ_RSA_SHA3_512 OBJ_sigAlgs,16L + +#define SN_hold_instruction_code "holdInstructionCode" +#define LN_hold_instruction_code "Hold Instruction Code" +#define NID_hold_instruction_code 430 +#define OBJ_hold_instruction_code OBJ_id_ce,23L + +#define OBJ_holdInstruction OBJ_X9_57,2L + +#define SN_hold_instruction_none "holdInstructionNone" +#define LN_hold_instruction_none "Hold Instruction None" +#define NID_hold_instruction_none 431 +#define OBJ_hold_instruction_none OBJ_holdInstruction,1L + +#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer" +#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer" +#define NID_hold_instruction_call_issuer 432 +#define OBJ_hold_instruction_call_issuer OBJ_holdInstruction,2L + +#define SN_hold_instruction_reject "holdInstructionReject" +#define LN_hold_instruction_reject "Hold Instruction Reject" +#define NID_hold_instruction_reject 433 +#define OBJ_hold_instruction_reject OBJ_holdInstruction,3L + +#define SN_data "data" +#define NID_data 434 +#define OBJ_data OBJ_itu_t,9L + +#define SN_pss "pss" +#define NID_pss 435 +#define OBJ_pss OBJ_data,2342L + +#define SN_ucl "ucl" +#define NID_ucl 436 +#define OBJ_ucl OBJ_pss,19200300L + +#define SN_pilot "pilot" +#define NID_pilot 437 +#define OBJ_pilot OBJ_ucl,100L + +#define LN_pilotAttributeType "pilotAttributeType" +#define NID_pilotAttributeType 438 +#define OBJ_pilotAttributeType OBJ_pilot,1L + +#define LN_pilotAttributeSyntax "pilotAttributeSyntax" +#define NID_pilotAttributeSyntax 439 +#define OBJ_pilotAttributeSyntax OBJ_pilot,3L + +#define LN_pilotObjectClass "pilotObjectClass" +#define NID_pilotObjectClass 440 +#define OBJ_pilotObjectClass OBJ_pilot,4L + +#define LN_pilotGroups "pilotGroups" +#define NID_pilotGroups 441 +#define OBJ_pilotGroups OBJ_pilot,10L + +#define LN_iA5StringSyntax "iA5StringSyntax" +#define NID_iA5StringSyntax 442 +#define OBJ_iA5StringSyntax OBJ_pilotAttributeSyntax,4L + +#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax" +#define NID_caseIgnoreIA5StringSyntax 443 +#define OBJ_caseIgnoreIA5StringSyntax OBJ_pilotAttributeSyntax,5L + +#define LN_pilotObject "pilotObject" +#define NID_pilotObject 444 +#define OBJ_pilotObject OBJ_pilotObjectClass,3L + +#define LN_pilotPerson "pilotPerson" +#define NID_pilotPerson 445 +#define OBJ_pilotPerson OBJ_pilotObjectClass,4L + +#define SN_account "account" +#define NID_account 446 +#define OBJ_account OBJ_pilotObjectClass,5L + +#define SN_document "document" +#define NID_document 447 +#define OBJ_document OBJ_pilotObjectClass,6L + +#define SN_room "room" +#define NID_room 448 +#define OBJ_room OBJ_pilotObjectClass,7L + +#define LN_documentSeries "documentSeries" +#define NID_documentSeries 449 +#define OBJ_documentSeries OBJ_pilotObjectClass,9L + +#define SN_Domain "domain" +#define LN_Domain "Domain" +#define NID_Domain 392 +#define OBJ_Domain OBJ_pilotObjectClass,13L + +#define LN_rFC822localPart "rFC822localPart" +#define NID_rFC822localPart 450 +#define OBJ_rFC822localPart OBJ_pilotObjectClass,14L + +#define LN_dNSDomain "dNSDomain" +#define NID_dNSDomain 451 +#define OBJ_dNSDomain OBJ_pilotObjectClass,15L + +#define LN_domainRelatedObject "domainRelatedObject" +#define NID_domainRelatedObject 452 +#define OBJ_domainRelatedObject OBJ_pilotObjectClass,17L + +#define LN_friendlyCountry "friendlyCountry" +#define NID_friendlyCountry 453 +#define OBJ_friendlyCountry OBJ_pilotObjectClass,18L + +#define LN_simpleSecurityObject "simpleSecurityObject" +#define NID_simpleSecurityObject 454 +#define OBJ_simpleSecurityObject OBJ_pilotObjectClass,19L + +#define LN_pilotOrganization "pilotOrganization" +#define NID_pilotOrganization 455 +#define OBJ_pilotOrganization OBJ_pilotObjectClass,20L + +#define LN_pilotDSA "pilotDSA" +#define NID_pilotDSA 456 +#define OBJ_pilotDSA OBJ_pilotObjectClass,21L + +#define LN_qualityLabelledData "qualityLabelledData" +#define NID_qualityLabelledData 457 +#define OBJ_qualityLabelledData OBJ_pilotObjectClass,22L + +#define SN_userId "UID" +#define LN_userId "userId" +#define NID_userId 458 +#define OBJ_userId OBJ_pilotAttributeType,1L + +#define LN_textEncodedORAddress "textEncodedORAddress" +#define NID_textEncodedORAddress 459 +#define OBJ_textEncodedORAddress OBJ_pilotAttributeType,2L + +#define SN_rfc822Mailbox "mail" +#define LN_rfc822Mailbox "rfc822Mailbox" +#define NID_rfc822Mailbox 460 +#define OBJ_rfc822Mailbox OBJ_pilotAttributeType,3L + +#define SN_info "info" +#define NID_info 461 +#define OBJ_info OBJ_pilotAttributeType,4L + +#define LN_favouriteDrink "favouriteDrink" +#define NID_favouriteDrink 462 +#define OBJ_favouriteDrink OBJ_pilotAttributeType,5L + +#define LN_roomNumber "roomNumber" +#define NID_roomNumber 463 +#define OBJ_roomNumber OBJ_pilotAttributeType,6L + +#define SN_photo "photo" +#define NID_photo 464 +#define OBJ_photo OBJ_pilotAttributeType,7L + +#define LN_userClass "userClass" +#define NID_userClass 465 +#define OBJ_userClass OBJ_pilotAttributeType,8L + +#define SN_host "host" +#define NID_host 466 +#define OBJ_host OBJ_pilotAttributeType,9L + +#define SN_manager "manager" +#define NID_manager 467 +#define OBJ_manager OBJ_pilotAttributeType,10L + +#define LN_documentIdentifier "documentIdentifier" +#define NID_documentIdentifier 468 +#define OBJ_documentIdentifier OBJ_pilotAttributeType,11L + +#define LN_documentTitle "documentTitle" +#define NID_documentTitle 469 +#define OBJ_documentTitle OBJ_pilotAttributeType,12L + +#define LN_documentVersion "documentVersion" +#define NID_documentVersion 470 +#define OBJ_documentVersion OBJ_pilotAttributeType,13L + +#define LN_documentAuthor "documentAuthor" +#define NID_documentAuthor 471 +#define OBJ_documentAuthor OBJ_pilotAttributeType,14L + +#define LN_documentLocation "documentLocation" +#define NID_documentLocation 472 +#define OBJ_documentLocation OBJ_pilotAttributeType,15L + +#define LN_homeTelephoneNumber "homeTelephoneNumber" +#define NID_homeTelephoneNumber 473 +#define OBJ_homeTelephoneNumber OBJ_pilotAttributeType,20L + +#define SN_secretary "secretary" +#define NID_secretary 474 +#define OBJ_secretary OBJ_pilotAttributeType,21L + +#define LN_otherMailbox "otherMailbox" +#define NID_otherMailbox 475 +#define OBJ_otherMailbox OBJ_pilotAttributeType,22L + +#define LN_lastModifiedTime "lastModifiedTime" +#define NID_lastModifiedTime 476 +#define OBJ_lastModifiedTime OBJ_pilotAttributeType,23L + +#define LN_lastModifiedBy "lastModifiedBy" +#define NID_lastModifiedBy 477 +#define OBJ_lastModifiedBy OBJ_pilotAttributeType,24L + +#define SN_domainComponent "DC" +#define LN_domainComponent "domainComponent" +#define NID_domainComponent 391 +#define OBJ_domainComponent OBJ_pilotAttributeType,25L + +#define LN_aRecord "aRecord" +#define NID_aRecord 478 +#define OBJ_aRecord OBJ_pilotAttributeType,26L + +#define LN_pilotAttributeType27 "pilotAttributeType27" +#define NID_pilotAttributeType27 479 +#define OBJ_pilotAttributeType27 OBJ_pilotAttributeType,27L + +#define LN_mXRecord "mXRecord" +#define NID_mXRecord 480 +#define OBJ_mXRecord OBJ_pilotAttributeType,28L + +#define LN_nSRecord "nSRecord" +#define NID_nSRecord 481 +#define OBJ_nSRecord OBJ_pilotAttributeType,29L + +#define LN_sOARecord "sOARecord" +#define NID_sOARecord 482 +#define OBJ_sOARecord OBJ_pilotAttributeType,30L + +#define LN_cNAMERecord "cNAMERecord" +#define NID_cNAMERecord 483 +#define OBJ_cNAMERecord OBJ_pilotAttributeType,31L + +#define LN_associatedDomain "associatedDomain" +#define NID_associatedDomain 484 +#define OBJ_associatedDomain OBJ_pilotAttributeType,37L + +#define LN_associatedName "associatedName" +#define NID_associatedName 485 +#define OBJ_associatedName OBJ_pilotAttributeType,38L + +#define LN_homePostalAddress "homePostalAddress" +#define NID_homePostalAddress 486 +#define OBJ_homePostalAddress OBJ_pilotAttributeType,39L + +#define LN_personalTitle "personalTitle" +#define NID_personalTitle 487 +#define OBJ_personalTitle OBJ_pilotAttributeType,40L + +#define LN_mobileTelephoneNumber "mobileTelephoneNumber" +#define NID_mobileTelephoneNumber 488 +#define OBJ_mobileTelephoneNumber OBJ_pilotAttributeType,41L + +#define LN_pagerTelephoneNumber "pagerTelephoneNumber" +#define NID_pagerTelephoneNumber 489 +#define OBJ_pagerTelephoneNumber OBJ_pilotAttributeType,42L + +#define LN_friendlyCountryName "friendlyCountryName" +#define NID_friendlyCountryName 490 +#define OBJ_friendlyCountryName OBJ_pilotAttributeType,43L + +#define SN_uniqueIdentifier "uid" +#define LN_uniqueIdentifier "uniqueIdentifier" +#define NID_uniqueIdentifier 102 +#define OBJ_uniqueIdentifier OBJ_pilotAttributeType,44L + +#define LN_organizationalStatus "organizationalStatus" +#define NID_organizationalStatus 491 +#define OBJ_organizationalStatus OBJ_pilotAttributeType,45L + +#define LN_janetMailbox "janetMailbox" +#define NID_janetMailbox 492 +#define OBJ_janetMailbox OBJ_pilotAttributeType,46L + +#define LN_mailPreferenceOption "mailPreferenceOption" +#define NID_mailPreferenceOption 493 +#define OBJ_mailPreferenceOption OBJ_pilotAttributeType,47L + +#define LN_buildingName "buildingName" +#define NID_buildingName 494 +#define OBJ_buildingName OBJ_pilotAttributeType,48L + +#define LN_dSAQuality "dSAQuality" +#define NID_dSAQuality 495 +#define OBJ_dSAQuality OBJ_pilotAttributeType,49L + +#define LN_singleLevelQuality "singleLevelQuality" +#define NID_singleLevelQuality 496 +#define OBJ_singleLevelQuality OBJ_pilotAttributeType,50L + +#define LN_subtreeMinimumQuality "subtreeMinimumQuality" +#define NID_subtreeMinimumQuality 497 +#define OBJ_subtreeMinimumQuality OBJ_pilotAttributeType,51L + +#define LN_subtreeMaximumQuality "subtreeMaximumQuality" +#define NID_subtreeMaximumQuality 498 +#define OBJ_subtreeMaximumQuality OBJ_pilotAttributeType,52L + +#define LN_personalSignature "personalSignature" +#define NID_personalSignature 499 +#define OBJ_personalSignature OBJ_pilotAttributeType,53L + +#define LN_dITRedirect "dITRedirect" +#define NID_dITRedirect 500 +#define OBJ_dITRedirect OBJ_pilotAttributeType,54L + +#define SN_audio "audio" +#define NID_audio 501 +#define OBJ_audio OBJ_pilotAttributeType,55L + +#define LN_documentPublisher "documentPublisher" +#define NID_documentPublisher 502 +#define OBJ_documentPublisher OBJ_pilotAttributeType,56L + +#define SN_id_set "id-set" +#define LN_id_set "Secure Electronic Transactions" +#define NID_id_set 512 +#define OBJ_id_set OBJ_international_organizations,42L + +#define SN_set_ctype "set-ctype" +#define LN_set_ctype "content types" +#define NID_set_ctype 513 +#define OBJ_set_ctype OBJ_id_set,0L + +#define SN_set_msgExt "set-msgExt" +#define LN_set_msgExt "message extensions" +#define NID_set_msgExt 514 +#define OBJ_set_msgExt OBJ_id_set,1L + +#define SN_set_attr "set-attr" +#define NID_set_attr 515 +#define OBJ_set_attr OBJ_id_set,3L + +#define SN_set_policy "set-policy" +#define NID_set_policy 516 +#define OBJ_set_policy OBJ_id_set,5L + +#define SN_set_certExt "set-certExt" +#define LN_set_certExt "certificate extensions" +#define NID_set_certExt 517 +#define OBJ_set_certExt OBJ_id_set,7L + +#define SN_set_brand "set-brand" +#define NID_set_brand 518 +#define OBJ_set_brand OBJ_id_set,8L + +#define SN_setct_PANData "setct-PANData" +#define NID_setct_PANData 519 +#define OBJ_setct_PANData OBJ_set_ctype,0L + +#define SN_setct_PANToken "setct-PANToken" +#define NID_setct_PANToken 520 +#define OBJ_setct_PANToken OBJ_set_ctype,1L + +#define SN_setct_PANOnly "setct-PANOnly" +#define NID_setct_PANOnly 521 +#define OBJ_setct_PANOnly OBJ_set_ctype,2L + +#define SN_setct_OIData "setct-OIData" +#define NID_setct_OIData 522 +#define OBJ_setct_OIData OBJ_set_ctype,3L + +#define SN_setct_PI "setct-PI" +#define NID_setct_PI 523 +#define OBJ_setct_PI OBJ_set_ctype,4L + +#define SN_setct_PIData "setct-PIData" +#define NID_setct_PIData 524 +#define OBJ_setct_PIData OBJ_set_ctype,5L + +#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned" +#define NID_setct_PIDataUnsigned 525 +#define OBJ_setct_PIDataUnsigned OBJ_set_ctype,6L + +#define SN_setct_HODInput "setct-HODInput" +#define NID_setct_HODInput 526 +#define OBJ_setct_HODInput OBJ_set_ctype,7L + +#define SN_setct_AuthResBaggage "setct-AuthResBaggage" +#define NID_setct_AuthResBaggage 527 +#define OBJ_setct_AuthResBaggage OBJ_set_ctype,8L + +#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage" +#define NID_setct_AuthRevReqBaggage 528 +#define OBJ_setct_AuthRevReqBaggage OBJ_set_ctype,9L + +#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage" +#define NID_setct_AuthRevResBaggage 529 +#define OBJ_setct_AuthRevResBaggage OBJ_set_ctype,10L + +#define SN_setct_CapTokenSeq "setct-CapTokenSeq" +#define NID_setct_CapTokenSeq 530 +#define OBJ_setct_CapTokenSeq OBJ_set_ctype,11L + +#define SN_setct_PInitResData "setct-PInitResData" +#define NID_setct_PInitResData 531 +#define OBJ_setct_PInitResData OBJ_set_ctype,12L + +#define SN_setct_PI_TBS "setct-PI-TBS" +#define NID_setct_PI_TBS 532 +#define OBJ_setct_PI_TBS OBJ_set_ctype,13L + +#define SN_setct_PResData "setct-PResData" +#define NID_setct_PResData 533 +#define OBJ_setct_PResData OBJ_set_ctype,14L + +#define SN_setct_AuthReqTBS "setct-AuthReqTBS" +#define NID_setct_AuthReqTBS 534 +#define OBJ_setct_AuthReqTBS OBJ_set_ctype,16L + +#define SN_setct_AuthResTBS "setct-AuthResTBS" +#define NID_setct_AuthResTBS 535 +#define OBJ_setct_AuthResTBS OBJ_set_ctype,17L + +#define SN_setct_AuthResTBSX "setct-AuthResTBSX" +#define NID_setct_AuthResTBSX 536 +#define OBJ_setct_AuthResTBSX OBJ_set_ctype,18L + +#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS" +#define NID_setct_AuthTokenTBS 537 +#define OBJ_setct_AuthTokenTBS OBJ_set_ctype,19L + +#define SN_setct_CapTokenData "setct-CapTokenData" +#define NID_setct_CapTokenData 538 +#define OBJ_setct_CapTokenData OBJ_set_ctype,20L + +#define SN_setct_CapTokenTBS "setct-CapTokenTBS" +#define NID_setct_CapTokenTBS 539 +#define OBJ_setct_CapTokenTBS OBJ_set_ctype,21L + +#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg" +#define NID_setct_AcqCardCodeMsg 540 +#define OBJ_setct_AcqCardCodeMsg OBJ_set_ctype,22L + +#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS" +#define NID_setct_AuthRevReqTBS 541 +#define OBJ_setct_AuthRevReqTBS OBJ_set_ctype,23L + +#define SN_setct_AuthRevResData "setct-AuthRevResData" +#define NID_setct_AuthRevResData 542 +#define OBJ_setct_AuthRevResData OBJ_set_ctype,24L + +#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS" +#define NID_setct_AuthRevResTBS 543 +#define OBJ_setct_AuthRevResTBS OBJ_set_ctype,25L + +#define SN_setct_CapReqTBS "setct-CapReqTBS" +#define NID_setct_CapReqTBS 544 +#define OBJ_setct_CapReqTBS OBJ_set_ctype,26L + +#define SN_setct_CapReqTBSX "setct-CapReqTBSX" +#define NID_setct_CapReqTBSX 545 +#define OBJ_setct_CapReqTBSX OBJ_set_ctype,27L + +#define SN_setct_CapResData "setct-CapResData" +#define NID_setct_CapResData 546 +#define OBJ_setct_CapResData OBJ_set_ctype,28L + +#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS" +#define NID_setct_CapRevReqTBS 547 +#define OBJ_setct_CapRevReqTBS OBJ_set_ctype,29L + +#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX" +#define NID_setct_CapRevReqTBSX 548 +#define OBJ_setct_CapRevReqTBSX OBJ_set_ctype,30L + +#define SN_setct_CapRevResData "setct-CapRevResData" +#define NID_setct_CapRevResData 549 +#define OBJ_setct_CapRevResData OBJ_set_ctype,31L + +#define SN_setct_CredReqTBS "setct-CredReqTBS" +#define NID_setct_CredReqTBS 550 +#define OBJ_setct_CredReqTBS OBJ_set_ctype,32L + +#define SN_setct_CredReqTBSX "setct-CredReqTBSX" +#define NID_setct_CredReqTBSX 551 +#define OBJ_setct_CredReqTBSX OBJ_set_ctype,33L + +#define SN_setct_CredResData "setct-CredResData" +#define NID_setct_CredResData 552 +#define OBJ_setct_CredResData OBJ_set_ctype,34L + +#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS" +#define NID_setct_CredRevReqTBS 553 +#define OBJ_setct_CredRevReqTBS OBJ_set_ctype,35L + +#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX" +#define NID_setct_CredRevReqTBSX 554 +#define OBJ_setct_CredRevReqTBSX OBJ_set_ctype,36L + +#define SN_setct_CredRevResData "setct-CredRevResData" +#define NID_setct_CredRevResData 555 +#define OBJ_setct_CredRevResData OBJ_set_ctype,37L + +#define SN_setct_PCertReqData "setct-PCertReqData" +#define NID_setct_PCertReqData 556 +#define OBJ_setct_PCertReqData OBJ_set_ctype,38L + +#define SN_setct_PCertResTBS "setct-PCertResTBS" +#define NID_setct_PCertResTBS 557 +#define OBJ_setct_PCertResTBS OBJ_set_ctype,39L + +#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData" +#define NID_setct_BatchAdminReqData 558 +#define OBJ_setct_BatchAdminReqData OBJ_set_ctype,40L + +#define SN_setct_BatchAdminResData "setct-BatchAdminResData" +#define NID_setct_BatchAdminResData 559 +#define OBJ_setct_BatchAdminResData OBJ_set_ctype,41L + +#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS" +#define NID_setct_CardCInitResTBS 560 +#define OBJ_setct_CardCInitResTBS OBJ_set_ctype,42L + +#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS" +#define NID_setct_MeAqCInitResTBS 561 +#define OBJ_setct_MeAqCInitResTBS OBJ_set_ctype,43L + +#define SN_setct_RegFormResTBS "setct-RegFormResTBS" +#define NID_setct_RegFormResTBS 562 +#define OBJ_setct_RegFormResTBS OBJ_set_ctype,44L + +#define SN_setct_CertReqData "setct-CertReqData" +#define NID_setct_CertReqData 563 +#define OBJ_setct_CertReqData OBJ_set_ctype,45L + +#define SN_setct_CertReqTBS "setct-CertReqTBS" +#define NID_setct_CertReqTBS 564 +#define OBJ_setct_CertReqTBS OBJ_set_ctype,46L + +#define SN_setct_CertResData "setct-CertResData" +#define NID_setct_CertResData 565 +#define OBJ_setct_CertResData OBJ_set_ctype,47L + +#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS" +#define NID_setct_CertInqReqTBS 566 +#define OBJ_setct_CertInqReqTBS OBJ_set_ctype,48L + +#define SN_setct_ErrorTBS "setct-ErrorTBS" +#define NID_setct_ErrorTBS 567 +#define OBJ_setct_ErrorTBS OBJ_set_ctype,49L + +#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE" +#define NID_setct_PIDualSignedTBE 568 +#define OBJ_setct_PIDualSignedTBE OBJ_set_ctype,50L + +#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE" +#define NID_setct_PIUnsignedTBE 569 +#define OBJ_setct_PIUnsignedTBE OBJ_set_ctype,51L + +#define SN_setct_AuthReqTBE "setct-AuthReqTBE" +#define NID_setct_AuthReqTBE 570 +#define OBJ_setct_AuthReqTBE OBJ_set_ctype,52L + +#define SN_setct_AuthResTBE "setct-AuthResTBE" +#define NID_setct_AuthResTBE 571 +#define OBJ_setct_AuthResTBE OBJ_set_ctype,53L + +#define SN_setct_AuthResTBEX "setct-AuthResTBEX" +#define NID_setct_AuthResTBEX 572 +#define OBJ_setct_AuthResTBEX OBJ_set_ctype,54L + +#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE" +#define NID_setct_AuthTokenTBE 573 +#define OBJ_setct_AuthTokenTBE OBJ_set_ctype,55L + +#define SN_setct_CapTokenTBE "setct-CapTokenTBE" +#define NID_setct_CapTokenTBE 574 +#define OBJ_setct_CapTokenTBE OBJ_set_ctype,56L + +#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX" +#define NID_setct_CapTokenTBEX 575 +#define OBJ_setct_CapTokenTBEX OBJ_set_ctype,57L + +#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE" +#define NID_setct_AcqCardCodeMsgTBE 576 +#define OBJ_setct_AcqCardCodeMsgTBE OBJ_set_ctype,58L + +#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE" +#define NID_setct_AuthRevReqTBE 577 +#define OBJ_setct_AuthRevReqTBE OBJ_set_ctype,59L + +#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE" +#define NID_setct_AuthRevResTBE 578 +#define OBJ_setct_AuthRevResTBE OBJ_set_ctype,60L + +#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB" +#define NID_setct_AuthRevResTBEB 579 +#define OBJ_setct_AuthRevResTBEB OBJ_set_ctype,61L + +#define SN_setct_CapReqTBE "setct-CapReqTBE" +#define NID_setct_CapReqTBE 580 +#define OBJ_setct_CapReqTBE OBJ_set_ctype,62L + +#define SN_setct_CapReqTBEX "setct-CapReqTBEX" +#define NID_setct_CapReqTBEX 581 +#define OBJ_setct_CapReqTBEX OBJ_set_ctype,63L + +#define SN_setct_CapResTBE "setct-CapResTBE" +#define NID_setct_CapResTBE 582 +#define OBJ_setct_CapResTBE OBJ_set_ctype,64L + +#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE" +#define NID_setct_CapRevReqTBE 583 +#define OBJ_setct_CapRevReqTBE OBJ_set_ctype,65L + +#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX" +#define NID_setct_CapRevReqTBEX 584 +#define OBJ_setct_CapRevReqTBEX OBJ_set_ctype,66L + +#define SN_setct_CapRevResTBE "setct-CapRevResTBE" +#define NID_setct_CapRevResTBE 585 +#define OBJ_setct_CapRevResTBE OBJ_set_ctype,67L + +#define SN_setct_CredReqTBE "setct-CredReqTBE" +#define NID_setct_CredReqTBE 586 +#define OBJ_setct_CredReqTBE OBJ_set_ctype,68L + +#define SN_setct_CredReqTBEX "setct-CredReqTBEX" +#define NID_setct_CredReqTBEX 587 +#define OBJ_setct_CredReqTBEX OBJ_set_ctype,69L + +#define SN_setct_CredResTBE "setct-CredResTBE" +#define NID_setct_CredResTBE 588 +#define OBJ_setct_CredResTBE OBJ_set_ctype,70L + +#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE" +#define NID_setct_CredRevReqTBE 589 +#define OBJ_setct_CredRevReqTBE OBJ_set_ctype,71L + +#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX" +#define NID_setct_CredRevReqTBEX 590 +#define OBJ_setct_CredRevReqTBEX OBJ_set_ctype,72L + +#define SN_setct_CredRevResTBE "setct-CredRevResTBE" +#define NID_setct_CredRevResTBE 591 +#define OBJ_setct_CredRevResTBE OBJ_set_ctype,73L + +#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE" +#define NID_setct_BatchAdminReqTBE 592 +#define OBJ_setct_BatchAdminReqTBE OBJ_set_ctype,74L + +#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE" +#define NID_setct_BatchAdminResTBE 593 +#define OBJ_setct_BatchAdminResTBE OBJ_set_ctype,75L + +#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE" +#define NID_setct_RegFormReqTBE 594 +#define OBJ_setct_RegFormReqTBE OBJ_set_ctype,76L + +#define SN_setct_CertReqTBE "setct-CertReqTBE" +#define NID_setct_CertReqTBE 595 +#define OBJ_setct_CertReqTBE OBJ_set_ctype,77L + +#define SN_setct_CertReqTBEX "setct-CertReqTBEX" +#define NID_setct_CertReqTBEX 596 +#define OBJ_setct_CertReqTBEX OBJ_set_ctype,78L + +#define SN_setct_CertResTBE "setct-CertResTBE" +#define NID_setct_CertResTBE 597 +#define OBJ_setct_CertResTBE OBJ_set_ctype,79L + +#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS" +#define NID_setct_CRLNotificationTBS 598 +#define OBJ_setct_CRLNotificationTBS OBJ_set_ctype,80L + +#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS" +#define NID_setct_CRLNotificationResTBS 599 +#define OBJ_setct_CRLNotificationResTBS OBJ_set_ctype,81L + +#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS" +#define NID_setct_BCIDistributionTBS 600 +#define OBJ_setct_BCIDistributionTBS OBJ_set_ctype,82L + +#define SN_setext_genCrypt "setext-genCrypt" +#define LN_setext_genCrypt "generic cryptogram" +#define NID_setext_genCrypt 601 +#define OBJ_setext_genCrypt OBJ_set_msgExt,1L + +#define SN_setext_miAuth "setext-miAuth" +#define LN_setext_miAuth "merchant initiated auth" +#define NID_setext_miAuth 602 +#define OBJ_setext_miAuth OBJ_set_msgExt,3L + +#define SN_setext_pinSecure "setext-pinSecure" +#define NID_setext_pinSecure 603 +#define OBJ_setext_pinSecure OBJ_set_msgExt,4L + +#define SN_setext_pinAny "setext-pinAny" +#define NID_setext_pinAny 604 +#define OBJ_setext_pinAny OBJ_set_msgExt,5L + +#define SN_setext_track2 "setext-track2" +#define NID_setext_track2 605 +#define OBJ_setext_track2 OBJ_set_msgExt,7L + +#define SN_setext_cv "setext-cv" +#define LN_setext_cv "additional verification" +#define NID_setext_cv 606 +#define OBJ_setext_cv OBJ_set_msgExt,8L + +#define SN_set_policy_root "set-policy-root" +#define NID_set_policy_root 607 +#define OBJ_set_policy_root OBJ_set_policy,0L + +#define SN_setCext_hashedRoot "setCext-hashedRoot" +#define NID_setCext_hashedRoot 608 +#define OBJ_setCext_hashedRoot OBJ_set_certExt,0L + +#define SN_setCext_certType "setCext-certType" +#define NID_setCext_certType 609 +#define OBJ_setCext_certType OBJ_set_certExt,1L + +#define SN_setCext_merchData "setCext-merchData" +#define NID_setCext_merchData 610 +#define OBJ_setCext_merchData OBJ_set_certExt,2L + +#define SN_setCext_cCertRequired "setCext-cCertRequired" +#define NID_setCext_cCertRequired 611 +#define OBJ_setCext_cCertRequired OBJ_set_certExt,3L + +#define SN_setCext_tunneling "setCext-tunneling" +#define NID_setCext_tunneling 612 +#define OBJ_setCext_tunneling OBJ_set_certExt,4L + +#define SN_setCext_setExt "setCext-setExt" +#define NID_setCext_setExt 613 +#define OBJ_setCext_setExt OBJ_set_certExt,5L + +#define SN_setCext_setQualf "setCext-setQualf" +#define NID_setCext_setQualf 614 +#define OBJ_setCext_setQualf OBJ_set_certExt,6L + +#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities" +#define NID_setCext_PGWYcapabilities 615 +#define OBJ_setCext_PGWYcapabilities OBJ_set_certExt,7L + +#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier" +#define NID_setCext_TokenIdentifier 616 +#define OBJ_setCext_TokenIdentifier OBJ_set_certExt,8L + +#define SN_setCext_Track2Data "setCext-Track2Data" +#define NID_setCext_Track2Data 617 +#define OBJ_setCext_Track2Data OBJ_set_certExt,9L + +#define SN_setCext_TokenType "setCext-TokenType" +#define NID_setCext_TokenType 618 +#define OBJ_setCext_TokenType OBJ_set_certExt,10L + +#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities" +#define NID_setCext_IssuerCapabilities 619 +#define OBJ_setCext_IssuerCapabilities OBJ_set_certExt,11L + +#define SN_setAttr_Cert "setAttr-Cert" +#define NID_setAttr_Cert 620 +#define OBJ_setAttr_Cert OBJ_set_attr,0L + +#define SN_setAttr_PGWYcap "setAttr-PGWYcap" +#define LN_setAttr_PGWYcap "payment gateway capabilities" +#define NID_setAttr_PGWYcap 621 +#define OBJ_setAttr_PGWYcap OBJ_set_attr,1L + +#define SN_setAttr_TokenType "setAttr-TokenType" +#define NID_setAttr_TokenType 622 +#define OBJ_setAttr_TokenType OBJ_set_attr,2L + +#define SN_setAttr_IssCap "setAttr-IssCap" +#define LN_setAttr_IssCap "issuer capabilities" +#define NID_setAttr_IssCap 623 +#define OBJ_setAttr_IssCap OBJ_set_attr,3L + +#define SN_set_rootKeyThumb "set-rootKeyThumb" +#define NID_set_rootKeyThumb 624 +#define OBJ_set_rootKeyThumb OBJ_setAttr_Cert,0L + +#define SN_set_addPolicy "set-addPolicy" +#define NID_set_addPolicy 625 +#define OBJ_set_addPolicy OBJ_setAttr_Cert,1L + +#define SN_setAttr_Token_EMV "setAttr-Token-EMV" +#define NID_setAttr_Token_EMV 626 +#define OBJ_setAttr_Token_EMV OBJ_setAttr_TokenType,1L + +#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime" +#define NID_setAttr_Token_B0Prime 627 +#define OBJ_setAttr_Token_B0Prime OBJ_setAttr_TokenType,2L + +#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM" +#define NID_setAttr_IssCap_CVM 628 +#define OBJ_setAttr_IssCap_CVM OBJ_setAttr_IssCap,3L + +#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2" +#define NID_setAttr_IssCap_T2 629 +#define OBJ_setAttr_IssCap_T2 OBJ_setAttr_IssCap,4L + +#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig" +#define NID_setAttr_IssCap_Sig 630 +#define OBJ_setAttr_IssCap_Sig OBJ_setAttr_IssCap,5L + +#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm" +#define LN_setAttr_GenCryptgrm "generate cryptogram" +#define NID_setAttr_GenCryptgrm 631 +#define OBJ_setAttr_GenCryptgrm OBJ_setAttr_IssCap_CVM,1L + +#define SN_setAttr_T2Enc "setAttr-T2Enc" +#define LN_setAttr_T2Enc "encrypted track 2" +#define NID_setAttr_T2Enc 632 +#define OBJ_setAttr_T2Enc OBJ_setAttr_IssCap_T2,1L + +#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt" +#define LN_setAttr_T2cleartxt "cleartext track 2" +#define NID_setAttr_T2cleartxt 633 +#define OBJ_setAttr_T2cleartxt OBJ_setAttr_IssCap_T2,2L + +#define SN_setAttr_TokICCsig "setAttr-TokICCsig" +#define LN_setAttr_TokICCsig "ICC or token signature" +#define NID_setAttr_TokICCsig 634 +#define OBJ_setAttr_TokICCsig OBJ_setAttr_IssCap_Sig,1L + +#define SN_setAttr_SecDevSig "setAttr-SecDevSig" +#define LN_setAttr_SecDevSig "secure device signature" +#define NID_setAttr_SecDevSig 635 +#define OBJ_setAttr_SecDevSig OBJ_setAttr_IssCap_Sig,2L + +#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA" +#define NID_set_brand_IATA_ATA 636 +#define OBJ_set_brand_IATA_ATA OBJ_set_brand,1L + +#define SN_set_brand_Diners "set-brand-Diners" +#define NID_set_brand_Diners 637 +#define OBJ_set_brand_Diners OBJ_set_brand,30L + +#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress" +#define NID_set_brand_AmericanExpress 638 +#define OBJ_set_brand_AmericanExpress OBJ_set_brand,34L + +#define SN_set_brand_JCB "set-brand-JCB" +#define NID_set_brand_JCB 639 +#define OBJ_set_brand_JCB OBJ_set_brand,35L + +#define SN_set_brand_Visa "set-brand-Visa" +#define NID_set_brand_Visa 640 +#define OBJ_set_brand_Visa OBJ_set_brand,4L + +#define SN_set_brand_MasterCard "set-brand-MasterCard" +#define NID_set_brand_MasterCard 641 +#define OBJ_set_brand_MasterCard OBJ_set_brand,5L + +#define SN_set_brand_Novus "set-brand-Novus" +#define NID_set_brand_Novus 642 +#define OBJ_set_brand_Novus OBJ_set_brand,6011L + +#define SN_des_cdmf "DES-CDMF" +#define LN_des_cdmf "des-cdmf" +#define NID_des_cdmf 643 +#define OBJ_des_cdmf OBJ_rsadsi,3L,10L + +#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET" +#define NID_rsaOAEPEncryptionSET 644 +#define OBJ_rsaOAEPEncryptionSET OBJ_rsadsi,1L,1L,6L + +#define SN_ipsec3 "Oakley-EC2N-3" +#define LN_ipsec3 "ipsec3" +#define NID_ipsec3 749 + +#define SN_ipsec4 "Oakley-EC2N-4" +#define LN_ipsec4 "ipsec4" +#define NID_ipsec4 750 + +#define SN_whirlpool "whirlpool" +#define NID_whirlpool 804 +#define OBJ_whirlpool OBJ_iso,0L,10118L,3L,0L,55L + +#define SN_cryptopro "cryptopro" +#define NID_cryptopro 805 +#define OBJ_cryptopro OBJ_member_body,643L,2L,2L + +#define SN_cryptocom "cryptocom" +#define NID_cryptocom 806 +#define OBJ_cryptocom OBJ_member_body,643L,2L,9L + +#define SN_id_tc26 "id-tc26" +#define NID_id_tc26 974 +#define OBJ_id_tc26 OBJ_member_body,643L,7L,1L + +#define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" +#define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" +#define NID_id_GostR3411_94_with_GostR3410_2001 807 +#define OBJ_id_GostR3411_94_with_GostR3410_2001 OBJ_cryptopro,3L + +#define SN_id_GostR3411_94_with_GostR3410_94 "id-GostR3411-94-with-GostR3410-94" +#define LN_id_GostR3411_94_with_GostR3410_94 "GOST R 34.11-94 with GOST R 34.10-94" +#define NID_id_GostR3411_94_with_GostR3410_94 808 +#define OBJ_id_GostR3411_94_with_GostR3410_94 OBJ_cryptopro,4L + +#define SN_id_GostR3411_94 "md_gost94" +#define LN_id_GostR3411_94 "GOST R 34.11-94" +#define NID_id_GostR3411_94 809 +#define OBJ_id_GostR3411_94 OBJ_cryptopro,9L + +#define SN_id_HMACGostR3411_94 "id-HMACGostR3411-94" +#define LN_id_HMACGostR3411_94 "HMAC GOST 34.11-94" +#define NID_id_HMACGostR3411_94 810 +#define OBJ_id_HMACGostR3411_94 OBJ_cryptopro,10L + +#define SN_id_GostR3410_2001 "gost2001" +#define LN_id_GostR3410_2001 "GOST R 34.10-2001" +#define NID_id_GostR3410_2001 811 +#define OBJ_id_GostR3410_2001 OBJ_cryptopro,19L + +#define SN_id_GostR3410_94 "gost94" +#define LN_id_GostR3410_94 "GOST R 34.10-94" +#define NID_id_GostR3410_94 812 +#define OBJ_id_GostR3410_94 OBJ_cryptopro,20L + +#define SN_id_Gost28147_89 "gost89" +#define LN_id_Gost28147_89 "GOST 28147-89" +#define NID_id_Gost28147_89 813 +#define OBJ_id_Gost28147_89 OBJ_cryptopro,21L + +#define SN_gost89_cnt "gost89-cnt" +#define NID_gost89_cnt 814 + +#define SN_gost89_cnt_12 "gost89-cnt-12" +#define NID_gost89_cnt_12 975 + +#define SN_gost89_cbc "gost89-cbc" +#define NID_gost89_cbc 1009 + +#define SN_gost89_ecb "gost89-ecb" +#define NID_gost89_ecb 1010 + +#define SN_gost89_ctr "gost89-ctr" +#define NID_gost89_ctr 1011 + +#define SN_id_Gost28147_89_MAC "gost-mac" +#define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" +#define NID_id_Gost28147_89_MAC 815 +#define OBJ_id_Gost28147_89_MAC OBJ_cryptopro,22L + +#define SN_gost_mac_12 "gost-mac-12" +#define NID_gost_mac_12 976 + +#define SN_id_GostR3411_94_prf "prf-gostr3411-94" +#define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" +#define NID_id_GostR3411_94_prf 816 +#define OBJ_id_GostR3411_94_prf OBJ_cryptopro,23L + +#define SN_id_GostR3410_2001DH "id-GostR3410-2001DH" +#define LN_id_GostR3410_2001DH "GOST R 34.10-2001 DH" +#define NID_id_GostR3410_2001DH 817 +#define OBJ_id_GostR3410_2001DH OBJ_cryptopro,98L + +#define SN_id_GostR3410_94DH "id-GostR3410-94DH" +#define LN_id_GostR3410_94DH "GOST R 34.10-94 DH" +#define NID_id_GostR3410_94DH 818 +#define OBJ_id_GostR3410_94DH OBJ_cryptopro,99L + +#define SN_id_Gost28147_89_CryptoPro_KeyMeshing "id-Gost28147-89-CryptoPro-KeyMeshing" +#define NID_id_Gost28147_89_CryptoPro_KeyMeshing 819 +#define OBJ_id_Gost28147_89_CryptoPro_KeyMeshing OBJ_cryptopro,14L,1L + +#define SN_id_Gost28147_89_None_KeyMeshing "id-Gost28147-89-None-KeyMeshing" +#define NID_id_Gost28147_89_None_KeyMeshing 820 +#define OBJ_id_Gost28147_89_None_KeyMeshing OBJ_cryptopro,14L,0L + +#define SN_id_GostR3411_94_TestParamSet "id-GostR3411-94-TestParamSet" +#define NID_id_GostR3411_94_TestParamSet 821 +#define OBJ_id_GostR3411_94_TestParamSet OBJ_cryptopro,30L,0L + +#define SN_id_GostR3411_94_CryptoProParamSet "id-GostR3411-94-CryptoProParamSet" +#define NID_id_GostR3411_94_CryptoProParamSet 822 +#define OBJ_id_GostR3411_94_CryptoProParamSet OBJ_cryptopro,30L,1L + +#define SN_id_Gost28147_89_TestParamSet "id-Gost28147-89-TestParamSet" +#define NID_id_Gost28147_89_TestParamSet 823 +#define OBJ_id_Gost28147_89_TestParamSet OBJ_cryptopro,31L,0L + +#define SN_id_Gost28147_89_CryptoPro_A_ParamSet "id-Gost28147-89-CryptoPro-A-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_A_ParamSet 824 +#define OBJ_id_Gost28147_89_CryptoPro_A_ParamSet OBJ_cryptopro,31L,1L + +#define SN_id_Gost28147_89_CryptoPro_B_ParamSet "id-Gost28147-89-CryptoPro-B-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_B_ParamSet 825 +#define OBJ_id_Gost28147_89_CryptoPro_B_ParamSet OBJ_cryptopro,31L,2L + +#define SN_id_Gost28147_89_CryptoPro_C_ParamSet "id-Gost28147-89-CryptoPro-C-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_C_ParamSet 826 +#define OBJ_id_Gost28147_89_CryptoPro_C_ParamSet OBJ_cryptopro,31L,3L + +#define SN_id_Gost28147_89_CryptoPro_D_ParamSet "id-Gost28147-89-CryptoPro-D-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_D_ParamSet 827 +#define OBJ_id_Gost28147_89_CryptoPro_D_ParamSet OBJ_cryptopro,31L,4L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 828 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet OBJ_cryptopro,31L,5L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 829 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet OBJ_cryptopro,31L,6L + +#define SN_id_Gost28147_89_CryptoPro_RIC_1_ParamSet "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 830 +#define OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet OBJ_cryptopro,31L,7L + +#define SN_id_GostR3410_94_TestParamSet "id-GostR3410-94-TestParamSet" +#define NID_id_GostR3410_94_TestParamSet 831 +#define OBJ_id_GostR3410_94_TestParamSet OBJ_cryptopro,32L,0L + +#define SN_id_GostR3410_94_CryptoPro_A_ParamSet "id-GostR3410-94-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_A_ParamSet 832 +#define OBJ_id_GostR3410_94_CryptoPro_A_ParamSet OBJ_cryptopro,32L,2L + +#define SN_id_GostR3410_94_CryptoPro_B_ParamSet "id-GostR3410-94-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_B_ParamSet 833 +#define OBJ_id_GostR3410_94_CryptoPro_B_ParamSet OBJ_cryptopro,32L,3L + +#define SN_id_GostR3410_94_CryptoPro_C_ParamSet "id-GostR3410-94-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_C_ParamSet 834 +#define OBJ_id_GostR3410_94_CryptoPro_C_ParamSet OBJ_cryptopro,32L,4L + +#define SN_id_GostR3410_94_CryptoPro_D_ParamSet "id-GostR3410-94-CryptoPro-D-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_D_ParamSet 835 +#define OBJ_id_GostR3410_94_CryptoPro_D_ParamSet OBJ_cryptopro,32L,5L + +#define SN_id_GostR3410_94_CryptoPro_XchA_ParamSet "id-GostR3410-94-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchA_ParamSet 836 +#define OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet OBJ_cryptopro,33L,1L + +#define SN_id_GostR3410_94_CryptoPro_XchB_ParamSet "id-GostR3410-94-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchB_ParamSet 837 +#define OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet OBJ_cryptopro,33L,2L + +#define SN_id_GostR3410_94_CryptoPro_XchC_ParamSet "id-GostR3410-94-CryptoPro-XchC-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchC_ParamSet 838 +#define OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet OBJ_cryptopro,33L,3L + +#define SN_id_GostR3410_2001_TestParamSet "id-GostR3410-2001-TestParamSet" +#define NID_id_GostR3410_2001_TestParamSet 839 +#define OBJ_id_GostR3410_2001_TestParamSet OBJ_cryptopro,35L,0L + +#define SN_id_GostR3410_2001_CryptoPro_A_ParamSet "id-GostR3410-2001-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_A_ParamSet 840 +#define OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet OBJ_cryptopro,35L,1L + +#define SN_id_GostR3410_2001_CryptoPro_B_ParamSet "id-GostR3410-2001-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_B_ParamSet 841 +#define OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet OBJ_cryptopro,35L,2L + +#define SN_id_GostR3410_2001_CryptoPro_C_ParamSet "id-GostR3410-2001-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_C_ParamSet 842 +#define OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet OBJ_cryptopro,35L,3L + +#define SN_id_GostR3410_2001_CryptoPro_XchA_ParamSet "id-GostR3410-2001-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet 843 +#define OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet OBJ_cryptopro,36L,0L + +#define SN_id_GostR3410_2001_CryptoPro_XchB_ParamSet "id-GostR3410-2001-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet 844 +#define OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet OBJ_cryptopro,36L,1L + +#define SN_id_GostR3410_94_a "id-GostR3410-94-a" +#define NID_id_GostR3410_94_a 845 +#define OBJ_id_GostR3410_94_a OBJ_id_GostR3410_94,1L + +#define SN_id_GostR3410_94_aBis "id-GostR3410-94-aBis" +#define NID_id_GostR3410_94_aBis 846 +#define OBJ_id_GostR3410_94_aBis OBJ_id_GostR3410_94,2L + +#define SN_id_GostR3410_94_b "id-GostR3410-94-b" +#define NID_id_GostR3410_94_b 847 +#define OBJ_id_GostR3410_94_b OBJ_id_GostR3410_94,3L + +#define SN_id_GostR3410_94_bBis "id-GostR3410-94-bBis" +#define NID_id_GostR3410_94_bBis 848 +#define OBJ_id_GostR3410_94_bBis OBJ_id_GostR3410_94,4L + +#define SN_id_Gost28147_89_cc "id-Gost28147-89-cc" +#define LN_id_Gost28147_89_cc "GOST 28147-89 Cryptocom ParamSet" +#define NID_id_Gost28147_89_cc 849 +#define OBJ_id_Gost28147_89_cc OBJ_cryptocom,1L,6L,1L + +#define SN_id_GostR3410_94_cc "gost94cc" +#define LN_id_GostR3410_94_cc "GOST 34.10-94 Cryptocom" +#define NID_id_GostR3410_94_cc 850 +#define OBJ_id_GostR3410_94_cc OBJ_cryptocom,1L,5L,3L + +#define SN_id_GostR3410_2001_cc "gost2001cc" +#define LN_id_GostR3410_2001_cc "GOST 34.10-2001 Cryptocom" +#define NID_id_GostR3410_2001_cc 851 +#define OBJ_id_GostR3410_2001_cc OBJ_cryptocom,1L,5L,4L + +#define SN_id_GostR3411_94_with_GostR3410_94_cc "id-GostR3411-94-with-GostR3410-94-cc" +#define LN_id_GostR3411_94_with_GostR3410_94_cc "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_94_cc 852 +#define OBJ_id_GostR3411_94_with_GostR3410_94_cc OBJ_cryptocom,1L,3L,3L + +#define SN_id_GostR3411_94_with_GostR3410_2001_cc "id-GostR3411-94-with-GostR3410-2001-cc" +#define LN_id_GostR3411_94_with_GostR3410_2001_cc "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_2001_cc 853 +#define OBJ_id_GostR3411_94_with_GostR3410_2001_cc OBJ_cryptocom,1L,3L,4L + +#define SN_id_GostR3410_2001_ParamSet_cc "id-GostR3410-2001-ParamSet-cc" +#define LN_id_GostR3410_2001_ParamSet_cc "GOST R 3410-2001 Parameter Set Cryptocom" +#define NID_id_GostR3410_2001_ParamSet_cc 854 +#define OBJ_id_GostR3410_2001_ParamSet_cc OBJ_cryptocom,1L,8L,1L + +#define SN_id_tc26_algorithms "id-tc26-algorithms" +#define NID_id_tc26_algorithms 977 +#define OBJ_id_tc26_algorithms OBJ_id_tc26,1L + +#define SN_id_tc26_sign "id-tc26-sign" +#define NID_id_tc26_sign 978 +#define OBJ_id_tc26_sign OBJ_id_tc26_algorithms,1L + +#define SN_id_GostR3410_2012_256 "gost2012_256" +#define LN_id_GostR3410_2012_256 "GOST R 34.10-2012 with 256 bit modulus" +#define NID_id_GostR3410_2012_256 979 +#define OBJ_id_GostR3410_2012_256 OBJ_id_tc26_sign,1L + +#define SN_id_GostR3410_2012_512 "gost2012_512" +#define LN_id_GostR3410_2012_512 "GOST R 34.10-2012 with 512 bit modulus" +#define NID_id_GostR3410_2012_512 980 +#define OBJ_id_GostR3410_2012_512 OBJ_id_tc26_sign,2L + +#define SN_id_tc26_digest "id-tc26-digest" +#define NID_id_tc26_digest 981 +#define OBJ_id_tc26_digest OBJ_id_tc26_algorithms,2L + +#define SN_id_GostR3411_2012_256 "md_gost12_256" +#define LN_id_GostR3411_2012_256 "GOST R 34.11-2012 with 256 bit hash" +#define NID_id_GostR3411_2012_256 982 +#define OBJ_id_GostR3411_2012_256 OBJ_id_tc26_digest,2L + +#define SN_id_GostR3411_2012_512 "md_gost12_512" +#define LN_id_GostR3411_2012_512 "GOST R 34.11-2012 with 512 bit hash" +#define NID_id_GostR3411_2012_512 983 +#define OBJ_id_GostR3411_2012_512 OBJ_id_tc26_digest,3L + +#define SN_id_tc26_signwithdigest "id-tc26-signwithdigest" +#define NID_id_tc26_signwithdigest 984 +#define OBJ_id_tc26_signwithdigest OBJ_id_tc26_algorithms,3L + +#define SN_id_tc26_signwithdigest_gost3410_2012_256 "id-tc26-signwithdigest-gost3410-2012-256" +#define LN_id_tc26_signwithdigest_gost3410_2012_256 "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_256 985 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_256 OBJ_id_tc26_signwithdigest,2L + +#define SN_id_tc26_signwithdigest_gost3410_2012_512 "id-tc26-signwithdigest-gost3410-2012-512" +#define LN_id_tc26_signwithdigest_gost3410_2012_512 "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_512 986 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_512 OBJ_id_tc26_signwithdigest,3L + +#define SN_id_tc26_mac "id-tc26-mac" +#define NID_id_tc26_mac 987 +#define OBJ_id_tc26_mac OBJ_id_tc26_algorithms,4L + +#define SN_id_tc26_hmac_gost_3411_2012_256 "id-tc26-hmac-gost-3411-2012-256" +#define LN_id_tc26_hmac_gost_3411_2012_256 "HMAC GOST 34.11-2012 256 bit" +#define NID_id_tc26_hmac_gost_3411_2012_256 988 +#define OBJ_id_tc26_hmac_gost_3411_2012_256 OBJ_id_tc26_mac,1L + +#define SN_id_tc26_hmac_gost_3411_2012_512 "id-tc26-hmac-gost-3411-2012-512" +#define LN_id_tc26_hmac_gost_3411_2012_512 "HMAC GOST 34.11-2012 512 bit" +#define NID_id_tc26_hmac_gost_3411_2012_512 989 +#define OBJ_id_tc26_hmac_gost_3411_2012_512 OBJ_id_tc26_mac,2L + +#define SN_id_tc26_cipher "id-tc26-cipher" +#define NID_id_tc26_cipher 990 +#define OBJ_id_tc26_cipher OBJ_id_tc26_algorithms,5L + +#define SN_id_tc26_cipher_gostr3412_2015_magma "id-tc26-cipher-gostr3412-2015-magma" +#define NID_id_tc26_cipher_gostr3412_2015_magma 1173 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma OBJ_id_tc26_cipher,1L + +#define SN_magma_ctr_acpkm "magma-ctr-acpkm" +#define NID_magma_ctr_acpkm 1174 +#define OBJ_magma_ctr_acpkm OBJ_id_tc26_cipher_gostr3412_2015_magma,1L + +#define SN_magma_ctr_acpkm_omac "magma-ctr-acpkm-omac" +#define NID_magma_ctr_acpkm_omac 1175 +#define OBJ_magma_ctr_acpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_magma,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik "id-tc26-cipher-gostr3412-2015-kuznyechik" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik 1176 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik OBJ_id_tc26_cipher,2L + +#define SN_kuznyechik_ctr_acpkm "kuznyechik-ctr-acpkm" +#define NID_kuznyechik_ctr_acpkm 1177 +#define OBJ_kuznyechik_ctr_acpkm OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,1L + +#define SN_kuznyechik_ctr_acpkm_omac "kuznyechik-ctr-acpkm-omac" +#define NID_kuznyechik_ctr_acpkm_omac 1178 +#define OBJ_kuznyechik_ctr_acpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,2L + +#define SN_id_tc26_agreement "id-tc26-agreement" +#define NID_id_tc26_agreement 991 +#define OBJ_id_tc26_agreement OBJ_id_tc26_algorithms,6L + +#define SN_id_tc26_agreement_gost_3410_2012_256 "id-tc26-agreement-gost-3410-2012-256" +#define NID_id_tc26_agreement_gost_3410_2012_256 992 +#define OBJ_id_tc26_agreement_gost_3410_2012_256 OBJ_id_tc26_agreement,1L + +#define SN_id_tc26_agreement_gost_3410_2012_512 "id-tc26-agreement-gost-3410-2012-512" +#define NID_id_tc26_agreement_gost_3410_2012_512 993 +#define OBJ_id_tc26_agreement_gost_3410_2012_512 OBJ_id_tc26_agreement,2L + +#define SN_id_tc26_wrap "id-tc26-wrap" +#define NID_id_tc26_wrap 1179 +#define OBJ_id_tc26_wrap OBJ_id_tc26_algorithms,7L + +#define SN_id_tc26_wrap_gostr3412_2015_magma "id-tc26-wrap-gostr3412-2015-magma" +#define NID_id_tc26_wrap_gostr3412_2015_magma 1180 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma OBJ_id_tc26_wrap,1L + +#define SN_magma_kexp15 "magma-kexp15" +#define NID_magma_kexp15 1181 +#define OBJ_magma_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_magma,1L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik "id-tc26-wrap-gostr3412-2015-kuznyechik" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik 1182 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik OBJ_id_tc26_wrap,2L + +#define SN_kuznyechik_kexp15 "kuznyechik-kexp15" +#define NID_kuznyechik_kexp15 1183 +#define OBJ_kuznyechik_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_constants "id-tc26-constants" +#define NID_id_tc26_constants 994 +#define OBJ_id_tc26_constants OBJ_id_tc26,2L + +#define SN_id_tc26_sign_constants "id-tc26-sign-constants" +#define NID_id_tc26_sign_constants 995 +#define OBJ_id_tc26_sign_constants OBJ_id_tc26_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_constants "id-tc26-gost-3410-2012-256-constants" +#define NID_id_tc26_gost_3410_2012_256_constants 1147 +#define OBJ_id_tc26_gost_3410_2012_256_constants OBJ_id_tc26_sign_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetA "id-tc26-gost-3410-2012-256-paramSetA" +#define LN_id_tc26_gost_3410_2012_256_paramSetA "GOST R 34.10-2012 (256 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_256_paramSetA 1148 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetA OBJ_id_tc26_gost_3410_2012_256_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetB "id-tc26-gost-3410-2012-256-paramSetB" +#define LN_id_tc26_gost_3410_2012_256_paramSetB "GOST R 34.10-2012 (256 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_256_paramSetB 1184 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetB OBJ_id_tc26_gost_3410_2012_256_constants,2L + +#define SN_id_tc26_gost_3410_2012_256_paramSetC "id-tc26-gost-3410-2012-256-paramSetC" +#define LN_id_tc26_gost_3410_2012_256_paramSetC "GOST R 34.10-2012 (256 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_256_paramSetC 1185 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetC OBJ_id_tc26_gost_3410_2012_256_constants,3L + +#define SN_id_tc26_gost_3410_2012_256_paramSetD "id-tc26-gost-3410-2012-256-paramSetD" +#define LN_id_tc26_gost_3410_2012_256_paramSetD "GOST R 34.10-2012 (256 bit) ParamSet D" +#define NID_id_tc26_gost_3410_2012_256_paramSetD 1186 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetD OBJ_id_tc26_gost_3410_2012_256_constants,4L + +#define SN_id_tc26_gost_3410_2012_512_constants "id-tc26-gost-3410-2012-512-constants" +#define NID_id_tc26_gost_3410_2012_512_constants 996 +#define OBJ_id_tc26_gost_3410_2012_512_constants OBJ_id_tc26_sign_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetTest "id-tc26-gost-3410-2012-512-paramSetTest" +#define LN_id_tc26_gost_3410_2012_512_paramSetTest "GOST R 34.10-2012 (512 bit) testing parameter set" +#define NID_id_tc26_gost_3410_2012_512_paramSetTest 997 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetTest OBJ_id_tc26_gost_3410_2012_512_constants,0L + +#define SN_id_tc26_gost_3410_2012_512_paramSetA "id-tc26-gost-3410-2012-512-paramSetA" +#define LN_id_tc26_gost_3410_2012_512_paramSetA "GOST R 34.10-2012 (512 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_512_paramSetA 998 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetA OBJ_id_tc26_gost_3410_2012_512_constants,1L + +#define SN_id_tc26_gost_3410_2012_512_paramSetB "id-tc26-gost-3410-2012-512-paramSetB" +#define LN_id_tc26_gost_3410_2012_512_paramSetB "GOST R 34.10-2012 (512 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_512_paramSetB 999 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetB OBJ_id_tc26_gost_3410_2012_512_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetC "id-tc26-gost-3410-2012-512-paramSetC" +#define LN_id_tc26_gost_3410_2012_512_paramSetC "GOST R 34.10-2012 (512 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_512_paramSetC 1149 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetC OBJ_id_tc26_gost_3410_2012_512_constants,3L + +#define SN_id_tc26_digest_constants "id-tc26-digest-constants" +#define NID_id_tc26_digest_constants 1000 +#define OBJ_id_tc26_digest_constants OBJ_id_tc26_constants,2L + +#define SN_id_tc26_cipher_constants "id-tc26-cipher-constants" +#define NID_id_tc26_cipher_constants 1001 +#define OBJ_id_tc26_cipher_constants OBJ_id_tc26_constants,5L + +#define SN_id_tc26_gost_28147_constants "id-tc26-gost-28147-constants" +#define NID_id_tc26_gost_28147_constants 1002 +#define OBJ_id_tc26_gost_28147_constants OBJ_id_tc26_cipher_constants,1L + +#define SN_id_tc26_gost_28147_param_Z "id-tc26-gost-28147-param-Z" +#define LN_id_tc26_gost_28147_param_Z "GOST 28147-89 TC26 parameter set" +#define NID_id_tc26_gost_28147_param_Z 1003 +#define OBJ_id_tc26_gost_28147_param_Z OBJ_id_tc26_gost_28147_constants,1L + +#define SN_INN "INN" +#define LN_INN "INN" +#define NID_INN 1004 +#define OBJ_INN OBJ_member_body,643L,3L,131L,1L,1L + +#define SN_OGRN "OGRN" +#define LN_OGRN "OGRN" +#define NID_OGRN 1005 +#define OBJ_OGRN OBJ_member_body,643L,100L,1L + +#define SN_SNILS "SNILS" +#define LN_SNILS "SNILS" +#define NID_SNILS 1006 +#define OBJ_SNILS OBJ_member_body,643L,100L,3L + +#define SN_OGRNIP "OGRNIP" +#define LN_OGRNIP "OGRNIP" +#define NID_OGRNIP 1226 +#define OBJ_OGRNIP OBJ_member_body,643L,100L,5L + +#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_classSignTool "classSignTool" +#define LN_classSignTool "Class of Signing Tool" +#define NID_classSignTool 1227 +#define OBJ_classSignTool OBJ_member_body,643L,100L,113L + +#define SN_classSignToolKC1 "classSignToolKC1" +#define LN_classSignToolKC1 "Class of Signing Tool KC1" +#define NID_classSignToolKC1 1228 +#define OBJ_classSignToolKC1 OBJ_member_body,643L,100L,113L,1L + +#define SN_classSignToolKC2 "classSignToolKC2" +#define LN_classSignToolKC2 "Class of Signing Tool KC2" +#define NID_classSignToolKC2 1229 +#define OBJ_classSignToolKC2 OBJ_member_body,643L,100L,113L,2L + +#define SN_classSignToolKC3 "classSignToolKC3" +#define LN_classSignToolKC3 "Class of Signing Tool KC3" +#define NID_classSignToolKC3 1230 +#define OBJ_classSignToolKC3 OBJ_member_body,643L,100L,113L,3L + +#define SN_classSignToolKB1 "classSignToolKB1" +#define LN_classSignToolKB1 "Class of Signing Tool KB1" +#define NID_classSignToolKB1 1231 +#define OBJ_classSignToolKB1 OBJ_member_body,643L,100L,113L,4L + +#define SN_classSignToolKB2 "classSignToolKB2" +#define LN_classSignToolKB2 "Class of Signing Tool KB2" +#define NID_classSignToolKB2 1232 +#define OBJ_classSignToolKB2 OBJ_member_body,643L,100L,113L,5L + +#define SN_classSignToolKA1 "classSignToolKA1" +#define LN_classSignToolKA1 "Class of Signing Tool KA1" +#define NID_classSignToolKA1 1233 +#define OBJ_classSignToolKA1 OBJ_member_body,643L,100L,113L,6L + +#define SN_kuznyechik_ecb "kuznyechik-ecb" +#define NID_kuznyechik_ecb 1012 + +#define SN_kuznyechik_ctr "kuznyechik-ctr" +#define NID_kuznyechik_ctr 1013 + +#define SN_kuznyechik_ofb "kuznyechik-ofb" +#define NID_kuznyechik_ofb 1014 + +#define SN_kuznyechik_cbc "kuznyechik-cbc" +#define NID_kuznyechik_cbc 1015 + +#define SN_kuznyechik_cfb "kuznyechik-cfb" +#define NID_kuznyechik_cfb 1016 + +#define SN_kuznyechik_mac "kuznyechik-mac" +#define NID_kuznyechik_mac 1017 + +#define SN_magma_ecb "magma-ecb" +#define NID_magma_ecb 1187 + +#define SN_magma_ctr "magma-ctr" +#define NID_magma_ctr 1188 + +#define SN_magma_ofb "magma-ofb" +#define NID_magma_ofb 1189 + +#define SN_magma_cbc "magma-cbc" +#define NID_magma_cbc 1190 + +#define SN_magma_cfb "magma-cfb" +#define NID_magma_cfb 1191 + +#define SN_magma_mac "magma-mac" +#define NID_magma_mac 1192 + +#define SN_camellia_128_cbc "CAMELLIA-128-CBC" +#define LN_camellia_128_cbc "camellia-128-cbc" +#define NID_camellia_128_cbc 751 +#define OBJ_camellia_128_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,2L + +#define SN_camellia_192_cbc "CAMELLIA-192-CBC" +#define LN_camellia_192_cbc "camellia-192-cbc" +#define NID_camellia_192_cbc 752 +#define OBJ_camellia_192_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,3L + +#define SN_camellia_256_cbc "CAMELLIA-256-CBC" +#define LN_camellia_256_cbc "camellia-256-cbc" +#define NID_camellia_256_cbc 753 +#define OBJ_camellia_256_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,4L + +#define SN_id_camellia128_wrap "id-camellia128-wrap" +#define NID_id_camellia128_wrap 907 +#define OBJ_id_camellia128_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,2L + +#define SN_id_camellia192_wrap "id-camellia192-wrap" +#define NID_id_camellia192_wrap 908 +#define OBJ_id_camellia192_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,3L + +#define SN_id_camellia256_wrap "id-camellia256-wrap" +#define NID_id_camellia256_wrap 909 +#define OBJ_id_camellia256_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,4L + +#define OBJ_ntt_ds 0L,3L,4401L,5L + +#define OBJ_camellia OBJ_ntt_ds,3L,1L,9L + +#define SN_camellia_128_ecb "CAMELLIA-128-ECB" +#define LN_camellia_128_ecb "camellia-128-ecb" +#define NID_camellia_128_ecb 754 +#define OBJ_camellia_128_ecb OBJ_camellia,1L + +#define SN_camellia_128_ofb128 "CAMELLIA-128-OFB" +#define LN_camellia_128_ofb128 "camellia-128-ofb" +#define NID_camellia_128_ofb128 766 +#define OBJ_camellia_128_ofb128 OBJ_camellia,3L + +#define SN_camellia_128_cfb128 "CAMELLIA-128-CFB" +#define LN_camellia_128_cfb128 "camellia-128-cfb" +#define NID_camellia_128_cfb128 757 +#define OBJ_camellia_128_cfb128 OBJ_camellia,4L + +#define SN_camellia_128_gcm "CAMELLIA-128-GCM" +#define LN_camellia_128_gcm "camellia-128-gcm" +#define NID_camellia_128_gcm 961 +#define OBJ_camellia_128_gcm OBJ_camellia,6L + +#define SN_camellia_128_ccm "CAMELLIA-128-CCM" +#define LN_camellia_128_ccm "camellia-128-ccm" +#define NID_camellia_128_ccm 962 +#define OBJ_camellia_128_ccm OBJ_camellia,7L + +#define SN_camellia_128_ctr "CAMELLIA-128-CTR" +#define LN_camellia_128_ctr "camellia-128-ctr" +#define NID_camellia_128_ctr 963 +#define OBJ_camellia_128_ctr OBJ_camellia,9L + +#define SN_camellia_128_cmac "CAMELLIA-128-CMAC" +#define LN_camellia_128_cmac "camellia-128-cmac" +#define NID_camellia_128_cmac 964 +#define OBJ_camellia_128_cmac OBJ_camellia,10L + +#define SN_camellia_192_ecb "CAMELLIA-192-ECB" +#define LN_camellia_192_ecb "camellia-192-ecb" +#define NID_camellia_192_ecb 755 +#define OBJ_camellia_192_ecb OBJ_camellia,21L + +#define SN_camellia_192_ofb128 "CAMELLIA-192-OFB" +#define LN_camellia_192_ofb128 "camellia-192-ofb" +#define NID_camellia_192_ofb128 767 +#define OBJ_camellia_192_ofb128 OBJ_camellia,23L + +#define SN_camellia_192_cfb128 "CAMELLIA-192-CFB" +#define LN_camellia_192_cfb128 "camellia-192-cfb" +#define NID_camellia_192_cfb128 758 +#define OBJ_camellia_192_cfb128 OBJ_camellia,24L + +#define SN_camellia_192_gcm "CAMELLIA-192-GCM" +#define LN_camellia_192_gcm "camellia-192-gcm" +#define NID_camellia_192_gcm 965 +#define OBJ_camellia_192_gcm OBJ_camellia,26L + +#define SN_camellia_192_ccm "CAMELLIA-192-CCM" +#define LN_camellia_192_ccm "camellia-192-ccm" +#define NID_camellia_192_ccm 966 +#define OBJ_camellia_192_ccm OBJ_camellia,27L + +#define SN_camellia_192_ctr "CAMELLIA-192-CTR" +#define LN_camellia_192_ctr "camellia-192-ctr" +#define NID_camellia_192_ctr 967 +#define OBJ_camellia_192_ctr OBJ_camellia,29L + +#define SN_camellia_192_cmac "CAMELLIA-192-CMAC" +#define LN_camellia_192_cmac "camellia-192-cmac" +#define NID_camellia_192_cmac 968 +#define OBJ_camellia_192_cmac OBJ_camellia,30L + +#define SN_camellia_256_ecb "CAMELLIA-256-ECB" +#define LN_camellia_256_ecb "camellia-256-ecb" +#define NID_camellia_256_ecb 756 +#define OBJ_camellia_256_ecb OBJ_camellia,41L + +#define SN_camellia_256_ofb128 "CAMELLIA-256-OFB" +#define LN_camellia_256_ofb128 "camellia-256-ofb" +#define NID_camellia_256_ofb128 768 +#define OBJ_camellia_256_ofb128 OBJ_camellia,43L + +#define SN_camellia_256_cfb128 "CAMELLIA-256-CFB" +#define LN_camellia_256_cfb128 "camellia-256-cfb" +#define NID_camellia_256_cfb128 759 +#define OBJ_camellia_256_cfb128 OBJ_camellia,44L + +#define SN_camellia_256_gcm "CAMELLIA-256-GCM" +#define LN_camellia_256_gcm "camellia-256-gcm" +#define NID_camellia_256_gcm 969 +#define OBJ_camellia_256_gcm OBJ_camellia,46L + +#define SN_camellia_256_ccm "CAMELLIA-256-CCM" +#define LN_camellia_256_ccm "camellia-256-ccm" +#define NID_camellia_256_ccm 970 +#define OBJ_camellia_256_ccm OBJ_camellia,47L + +#define SN_camellia_256_ctr "CAMELLIA-256-CTR" +#define LN_camellia_256_ctr "camellia-256-ctr" +#define NID_camellia_256_ctr 971 +#define OBJ_camellia_256_ctr OBJ_camellia,49L + +#define SN_camellia_256_cmac "CAMELLIA-256-CMAC" +#define LN_camellia_256_cmac "camellia-256-cmac" +#define NID_camellia_256_cmac 972 +#define OBJ_camellia_256_cmac OBJ_camellia,50L + +#define SN_camellia_128_cfb1 "CAMELLIA-128-CFB1" +#define LN_camellia_128_cfb1 "camellia-128-cfb1" +#define NID_camellia_128_cfb1 760 + +#define SN_camellia_192_cfb1 "CAMELLIA-192-CFB1" +#define LN_camellia_192_cfb1 "camellia-192-cfb1" +#define NID_camellia_192_cfb1 761 + +#define SN_camellia_256_cfb1 "CAMELLIA-256-CFB1" +#define LN_camellia_256_cfb1 "camellia-256-cfb1" +#define NID_camellia_256_cfb1 762 + +#define SN_camellia_128_cfb8 "CAMELLIA-128-CFB8" +#define LN_camellia_128_cfb8 "camellia-128-cfb8" +#define NID_camellia_128_cfb8 763 + +#define SN_camellia_192_cfb8 "CAMELLIA-192-CFB8" +#define LN_camellia_192_cfb8 "camellia-192-cfb8" +#define NID_camellia_192_cfb8 764 + +#define SN_camellia_256_cfb8 "CAMELLIA-256-CFB8" +#define LN_camellia_256_cfb8 "camellia-256-cfb8" +#define NID_camellia_256_cfb8 765 + +#define OBJ_aria 1L,2L,410L,200046L,1L,1L + +#define SN_aria_128_ecb "ARIA-128-ECB" +#define LN_aria_128_ecb "aria-128-ecb" +#define NID_aria_128_ecb 1065 +#define OBJ_aria_128_ecb OBJ_aria,1L + +#define SN_aria_128_cbc "ARIA-128-CBC" +#define LN_aria_128_cbc "aria-128-cbc" +#define NID_aria_128_cbc 1066 +#define OBJ_aria_128_cbc OBJ_aria,2L + +#define SN_aria_128_cfb128 "ARIA-128-CFB" +#define LN_aria_128_cfb128 "aria-128-cfb" +#define NID_aria_128_cfb128 1067 +#define OBJ_aria_128_cfb128 OBJ_aria,3L + +#define SN_aria_128_ofb128 "ARIA-128-OFB" +#define LN_aria_128_ofb128 "aria-128-ofb" +#define NID_aria_128_ofb128 1068 +#define OBJ_aria_128_ofb128 OBJ_aria,4L + +#define SN_aria_128_ctr "ARIA-128-CTR" +#define LN_aria_128_ctr "aria-128-ctr" +#define NID_aria_128_ctr 1069 +#define OBJ_aria_128_ctr OBJ_aria,5L + +#define SN_aria_192_ecb "ARIA-192-ECB" +#define LN_aria_192_ecb "aria-192-ecb" +#define NID_aria_192_ecb 1070 +#define OBJ_aria_192_ecb OBJ_aria,6L + +#define SN_aria_192_cbc "ARIA-192-CBC" +#define LN_aria_192_cbc "aria-192-cbc" +#define NID_aria_192_cbc 1071 +#define OBJ_aria_192_cbc OBJ_aria,7L + +#define SN_aria_192_cfb128 "ARIA-192-CFB" +#define LN_aria_192_cfb128 "aria-192-cfb" +#define NID_aria_192_cfb128 1072 +#define OBJ_aria_192_cfb128 OBJ_aria,8L + +#define SN_aria_192_ofb128 "ARIA-192-OFB" +#define LN_aria_192_ofb128 "aria-192-ofb" +#define NID_aria_192_ofb128 1073 +#define OBJ_aria_192_ofb128 OBJ_aria,9L + +#define SN_aria_192_ctr "ARIA-192-CTR" +#define LN_aria_192_ctr "aria-192-ctr" +#define NID_aria_192_ctr 1074 +#define OBJ_aria_192_ctr OBJ_aria,10L + +#define SN_aria_256_ecb "ARIA-256-ECB" +#define LN_aria_256_ecb "aria-256-ecb" +#define NID_aria_256_ecb 1075 +#define OBJ_aria_256_ecb OBJ_aria,11L + +#define SN_aria_256_cbc "ARIA-256-CBC" +#define LN_aria_256_cbc "aria-256-cbc" +#define NID_aria_256_cbc 1076 +#define OBJ_aria_256_cbc OBJ_aria,12L + +#define SN_aria_256_cfb128 "ARIA-256-CFB" +#define LN_aria_256_cfb128 "aria-256-cfb" +#define NID_aria_256_cfb128 1077 +#define OBJ_aria_256_cfb128 OBJ_aria,13L + +#define SN_aria_256_ofb128 "ARIA-256-OFB" +#define LN_aria_256_ofb128 "aria-256-ofb" +#define NID_aria_256_ofb128 1078 +#define OBJ_aria_256_ofb128 OBJ_aria,14L + +#define SN_aria_256_ctr "ARIA-256-CTR" +#define LN_aria_256_ctr "aria-256-ctr" +#define NID_aria_256_ctr 1079 +#define OBJ_aria_256_ctr OBJ_aria,15L + +#define SN_aria_128_cfb1 "ARIA-128-CFB1" +#define LN_aria_128_cfb1 "aria-128-cfb1" +#define NID_aria_128_cfb1 1080 + +#define SN_aria_192_cfb1 "ARIA-192-CFB1" +#define LN_aria_192_cfb1 "aria-192-cfb1" +#define NID_aria_192_cfb1 1081 + +#define SN_aria_256_cfb1 "ARIA-256-CFB1" +#define LN_aria_256_cfb1 "aria-256-cfb1" +#define NID_aria_256_cfb1 1082 + +#define SN_aria_128_cfb8 "ARIA-128-CFB8" +#define LN_aria_128_cfb8 "aria-128-cfb8" +#define NID_aria_128_cfb8 1083 + +#define SN_aria_192_cfb8 "ARIA-192-CFB8" +#define LN_aria_192_cfb8 "aria-192-cfb8" +#define NID_aria_192_cfb8 1084 + +#define SN_aria_256_cfb8 "ARIA-256-CFB8" +#define LN_aria_256_cfb8 "aria-256-cfb8" +#define NID_aria_256_cfb8 1085 + +#define SN_aria_128_ccm "ARIA-128-CCM" +#define LN_aria_128_ccm "aria-128-ccm" +#define NID_aria_128_ccm 1120 +#define OBJ_aria_128_ccm OBJ_aria,37L + +#define SN_aria_192_ccm "ARIA-192-CCM" +#define LN_aria_192_ccm "aria-192-ccm" +#define NID_aria_192_ccm 1121 +#define OBJ_aria_192_ccm OBJ_aria,38L + +#define SN_aria_256_ccm "ARIA-256-CCM" +#define LN_aria_256_ccm "aria-256-ccm" +#define NID_aria_256_ccm 1122 +#define OBJ_aria_256_ccm OBJ_aria,39L + +#define SN_aria_128_gcm "ARIA-128-GCM" +#define LN_aria_128_gcm "aria-128-gcm" +#define NID_aria_128_gcm 1123 +#define OBJ_aria_128_gcm OBJ_aria,34L + +#define SN_aria_192_gcm "ARIA-192-GCM" +#define LN_aria_192_gcm "aria-192-gcm" +#define NID_aria_192_gcm 1124 +#define OBJ_aria_192_gcm OBJ_aria,35L + +#define SN_aria_256_gcm "ARIA-256-GCM" +#define LN_aria_256_gcm "aria-256-gcm" +#define NID_aria_256_gcm 1125 +#define OBJ_aria_256_gcm OBJ_aria,36L + +#define SN_kisa "KISA" +#define LN_kisa "kisa" +#define NID_kisa 773 +#define OBJ_kisa OBJ_member_body,410L,200004L + +#define SN_seed_ecb "SEED-ECB" +#define LN_seed_ecb "seed-ecb" +#define NID_seed_ecb 776 +#define OBJ_seed_ecb OBJ_kisa,1L,3L + +#define SN_seed_cbc "SEED-CBC" +#define LN_seed_cbc "seed-cbc" +#define NID_seed_cbc 777 +#define OBJ_seed_cbc OBJ_kisa,1L,4L + +#define SN_seed_cfb128 "SEED-CFB" +#define LN_seed_cfb128 "seed-cfb" +#define NID_seed_cfb128 779 +#define OBJ_seed_cfb128 OBJ_kisa,1L,5L + +#define SN_seed_ofb128 "SEED-OFB" +#define LN_seed_ofb128 "seed-ofb" +#define NID_seed_ofb128 778 +#define OBJ_seed_ofb128 OBJ_kisa,1L,6L + +#define SN_sm4_ecb "SM4-ECB" +#define LN_sm4_ecb "sm4-ecb" +#define NID_sm4_ecb 1133 +#define OBJ_sm4_ecb OBJ_sm_scheme,104L,1L + +#define SN_sm4_cbc "SM4-CBC" +#define LN_sm4_cbc "sm4-cbc" +#define NID_sm4_cbc 1134 +#define OBJ_sm4_cbc OBJ_sm_scheme,104L,2L + +#define SN_sm4_ofb128 "SM4-OFB" +#define LN_sm4_ofb128 "sm4-ofb" +#define NID_sm4_ofb128 1135 +#define OBJ_sm4_ofb128 OBJ_sm_scheme,104L,3L + +#define SN_sm4_cfb128 "SM4-CFB" +#define LN_sm4_cfb128 "sm4-cfb" +#define NID_sm4_cfb128 1137 +#define OBJ_sm4_cfb128 OBJ_sm_scheme,104L,4L + +#define SN_sm4_cfb1 "SM4-CFB1" +#define LN_sm4_cfb1 "sm4-cfb1" +#define NID_sm4_cfb1 1136 +#define OBJ_sm4_cfb1 OBJ_sm_scheme,104L,5L + +#define SN_sm4_cfb8 "SM4-CFB8" +#define LN_sm4_cfb8 "sm4-cfb8" +#define NID_sm4_cfb8 1138 +#define OBJ_sm4_cfb8 OBJ_sm_scheme,104L,6L + +#define SN_sm4_ctr "SM4-CTR" +#define LN_sm4_ctr "sm4-ctr" +#define NID_sm4_ctr 1139 +#define OBJ_sm4_ctr OBJ_sm_scheme,104L,7L + +#define SN_hmac "HMAC" +#define LN_hmac "hmac" +#define NID_hmac 855 + +#define SN_cmac "CMAC" +#define LN_cmac "cmac" +#define NID_cmac 894 + +#define SN_rc4_hmac_md5 "RC4-HMAC-MD5" +#define LN_rc4_hmac_md5 "rc4-hmac-md5" +#define NID_rc4_hmac_md5 915 + +#define SN_aes_128_cbc_hmac_sha1 "AES-128-CBC-HMAC-SHA1" +#define LN_aes_128_cbc_hmac_sha1 "aes-128-cbc-hmac-sha1" +#define NID_aes_128_cbc_hmac_sha1 916 + +#define SN_aes_192_cbc_hmac_sha1 "AES-192-CBC-HMAC-SHA1" +#define LN_aes_192_cbc_hmac_sha1 "aes-192-cbc-hmac-sha1" +#define NID_aes_192_cbc_hmac_sha1 917 + +#define SN_aes_256_cbc_hmac_sha1 "AES-256-CBC-HMAC-SHA1" +#define LN_aes_256_cbc_hmac_sha1 "aes-256-cbc-hmac-sha1" +#define NID_aes_256_cbc_hmac_sha1 918 + +#define SN_aes_128_cbc_hmac_sha256 "AES-128-CBC-HMAC-SHA256" +#define LN_aes_128_cbc_hmac_sha256 "aes-128-cbc-hmac-sha256" +#define NID_aes_128_cbc_hmac_sha256 948 + +#define SN_aes_192_cbc_hmac_sha256 "AES-192-CBC-HMAC-SHA256" +#define LN_aes_192_cbc_hmac_sha256 "aes-192-cbc-hmac-sha256" +#define NID_aes_192_cbc_hmac_sha256 949 + +#define SN_aes_256_cbc_hmac_sha256 "AES-256-CBC-HMAC-SHA256" +#define LN_aes_256_cbc_hmac_sha256 "aes-256-cbc-hmac-sha256" +#define NID_aes_256_cbc_hmac_sha256 950 + +#define SN_chacha20_poly1305 "ChaCha20-Poly1305" +#define LN_chacha20_poly1305 "chacha20-poly1305" +#define NID_chacha20_poly1305 1018 + +#define SN_chacha20 "ChaCha20" +#define LN_chacha20 "chacha20" +#define NID_chacha20 1019 + +#define SN_dhpublicnumber "dhpublicnumber" +#define LN_dhpublicnumber "X9.42 DH" +#define NID_dhpublicnumber 920 +#define OBJ_dhpublicnumber OBJ_ISO_US,10046L,2L,1L + +#define SN_brainpoolP160r1 "brainpoolP160r1" +#define NID_brainpoolP160r1 921 +#define OBJ_brainpoolP160r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,1L + +#define SN_brainpoolP160t1 "brainpoolP160t1" +#define NID_brainpoolP160t1 922 +#define OBJ_brainpoolP160t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,2L + +#define SN_brainpoolP192r1 "brainpoolP192r1" +#define NID_brainpoolP192r1 923 +#define OBJ_brainpoolP192r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,3L + +#define SN_brainpoolP192t1 "brainpoolP192t1" +#define NID_brainpoolP192t1 924 +#define OBJ_brainpoolP192t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,4L + +#define SN_brainpoolP224r1 "brainpoolP224r1" +#define NID_brainpoolP224r1 925 +#define OBJ_brainpoolP224r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,5L + +#define SN_brainpoolP224t1 "brainpoolP224t1" +#define NID_brainpoolP224t1 926 +#define OBJ_brainpoolP224t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,6L + +#define SN_brainpoolP256r1 "brainpoolP256r1" +#define NID_brainpoolP256r1 927 +#define OBJ_brainpoolP256r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,7L + +#define SN_brainpoolP256t1 "brainpoolP256t1" +#define NID_brainpoolP256t1 928 +#define OBJ_brainpoolP256t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,8L + +#define SN_brainpoolP320r1 "brainpoolP320r1" +#define NID_brainpoolP320r1 929 +#define OBJ_brainpoolP320r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,9L + +#define SN_brainpoolP320t1 "brainpoolP320t1" +#define NID_brainpoolP320t1 930 +#define OBJ_brainpoolP320t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,10L + +#define SN_brainpoolP384r1 "brainpoolP384r1" +#define NID_brainpoolP384r1 931 +#define OBJ_brainpoolP384r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,11L + +#define SN_brainpoolP384t1 "brainpoolP384t1" +#define NID_brainpoolP384t1 932 +#define OBJ_brainpoolP384t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,12L + +#define SN_brainpoolP512r1 "brainpoolP512r1" +#define NID_brainpoolP512r1 933 +#define OBJ_brainpoolP512r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,13L + +#define SN_brainpoolP512t1 "brainpoolP512t1" +#define NID_brainpoolP512t1 934 +#define OBJ_brainpoolP512t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,14L + +#define OBJ_x9_63_scheme 1L,3L,133L,16L,840L,63L,0L + +#define OBJ_secg_scheme OBJ_certicom_arc,1L + +#define SN_dhSinglePass_stdDH_sha1kdf_scheme "dhSinglePass-stdDH-sha1kdf-scheme" +#define NID_dhSinglePass_stdDH_sha1kdf_scheme 936 +#define OBJ_dhSinglePass_stdDH_sha1kdf_scheme OBJ_x9_63_scheme,2L + +#define SN_dhSinglePass_stdDH_sha224kdf_scheme "dhSinglePass-stdDH-sha224kdf-scheme" +#define NID_dhSinglePass_stdDH_sha224kdf_scheme 937 +#define OBJ_dhSinglePass_stdDH_sha224kdf_scheme OBJ_secg_scheme,11L,0L + +#define SN_dhSinglePass_stdDH_sha256kdf_scheme "dhSinglePass-stdDH-sha256kdf-scheme" +#define NID_dhSinglePass_stdDH_sha256kdf_scheme 938 +#define OBJ_dhSinglePass_stdDH_sha256kdf_scheme OBJ_secg_scheme,11L,1L + +#define SN_dhSinglePass_stdDH_sha384kdf_scheme "dhSinglePass-stdDH-sha384kdf-scheme" +#define NID_dhSinglePass_stdDH_sha384kdf_scheme 939 +#define OBJ_dhSinglePass_stdDH_sha384kdf_scheme OBJ_secg_scheme,11L,2L + +#define SN_dhSinglePass_stdDH_sha512kdf_scheme "dhSinglePass-stdDH-sha512kdf-scheme" +#define NID_dhSinglePass_stdDH_sha512kdf_scheme 940 +#define OBJ_dhSinglePass_stdDH_sha512kdf_scheme OBJ_secg_scheme,11L,3L + +#define SN_dhSinglePass_cofactorDH_sha1kdf_scheme "dhSinglePass-cofactorDH-sha1kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha1kdf_scheme 941 +#define OBJ_dhSinglePass_cofactorDH_sha1kdf_scheme OBJ_x9_63_scheme,3L + +#define SN_dhSinglePass_cofactorDH_sha224kdf_scheme "dhSinglePass-cofactorDH-sha224kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha224kdf_scheme 942 +#define OBJ_dhSinglePass_cofactorDH_sha224kdf_scheme OBJ_secg_scheme,14L,0L + +#define SN_dhSinglePass_cofactorDH_sha256kdf_scheme "dhSinglePass-cofactorDH-sha256kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha256kdf_scheme 943 +#define OBJ_dhSinglePass_cofactorDH_sha256kdf_scheme OBJ_secg_scheme,14L,1L + +#define SN_dhSinglePass_cofactorDH_sha384kdf_scheme "dhSinglePass-cofactorDH-sha384kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha384kdf_scheme 944 +#define OBJ_dhSinglePass_cofactorDH_sha384kdf_scheme OBJ_secg_scheme,14L,2L + +#define SN_dhSinglePass_cofactorDH_sha512kdf_scheme "dhSinglePass-cofactorDH-sha512kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha512kdf_scheme 945 +#define OBJ_dhSinglePass_cofactorDH_sha512kdf_scheme OBJ_secg_scheme,14L,3L + +#define SN_dh_std_kdf "dh-std-kdf" +#define NID_dh_std_kdf 946 + +#define SN_dh_cofactor_kdf "dh-cofactor-kdf" +#define NID_dh_cofactor_kdf 947 + +#define SN_ct_precert_scts "ct_precert_scts" +#define LN_ct_precert_scts "CT Precertificate SCTs" +#define NID_ct_precert_scts 951 +#define OBJ_ct_precert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,2L + +#define SN_ct_precert_poison "ct_precert_poison" +#define LN_ct_precert_poison "CT Precertificate Poison" +#define NID_ct_precert_poison 952 +#define OBJ_ct_precert_poison 1L,3L,6L,1L,4L,1L,11129L,2L,4L,3L + +#define SN_ct_precert_signer "ct_precert_signer" +#define LN_ct_precert_signer "CT Precertificate Signer" +#define NID_ct_precert_signer 953 +#define OBJ_ct_precert_signer 1L,3L,6L,1L,4L,1L,11129L,2L,4L,4L + +#define SN_ct_cert_scts "ct_cert_scts" +#define LN_ct_cert_scts "CT Certificate SCTs" +#define NID_ct_cert_scts 954 +#define OBJ_ct_cert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,5L + +#define SN_jurisdictionLocalityName "jurisdictionL" +#define LN_jurisdictionLocalityName "jurisdictionLocalityName" +#define NID_jurisdictionLocalityName 955 +#define OBJ_jurisdictionLocalityName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,1L + +#define SN_jurisdictionStateOrProvinceName "jurisdictionST" +#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" +#define NID_jurisdictionStateOrProvinceName 956 +#define OBJ_jurisdictionStateOrProvinceName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,2L + +#define SN_jurisdictionCountryName "jurisdictionC" +#define LN_jurisdictionCountryName "jurisdictionCountryName" +#define NID_jurisdictionCountryName 957 +#define OBJ_jurisdictionCountryName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,3L + +#define SN_id_scrypt "id-scrypt" +#define LN_id_scrypt "scrypt" +#define NID_id_scrypt 973 +#define OBJ_id_scrypt 1L,3L,6L,1L,4L,1L,11591L,4L,11L + +#define SN_tls1_prf "TLS1-PRF" +#define LN_tls1_prf "tls1-prf" +#define NID_tls1_prf 1021 + +#define SN_hkdf "HKDF" +#define LN_hkdf "hkdf" +#define NID_hkdf 1036 + +#define SN_sshkdf "SSHKDF" +#define LN_sshkdf "sshkdf" +#define NID_sshkdf 1203 + +#define SN_sskdf "SSKDF" +#define LN_sskdf "sskdf" +#define NID_sskdf 1205 + +#define SN_x942kdf "X942KDF" +#define LN_x942kdf "x942kdf" +#define NID_x942kdf 1207 + +#define SN_x963kdf "X963KDF" +#define LN_x963kdf "x963kdf" +#define NID_x963kdf 1206 + +#define SN_id_pkinit "id-pkinit" +#define NID_id_pkinit 1031 +#define OBJ_id_pkinit 1L,3L,6L,1L,5L,2L,3L + +#define SN_pkInitClientAuth "pkInitClientAuth" +#define LN_pkInitClientAuth "PKINIT Client Auth" +#define NID_pkInitClientAuth 1032 +#define OBJ_pkInitClientAuth OBJ_id_pkinit,4L + +#define SN_pkInitKDC "pkInitKDC" +#define LN_pkInitKDC "Signing KDC Response" +#define NID_pkInitKDC 1033 +#define OBJ_pkInitKDC OBJ_id_pkinit,5L + +#define SN_X25519 "X25519" +#define NID_X25519 1034 +#define OBJ_X25519 1L,3L,101L,110L + +#define SN_X448 "X448" +#define NID_X448 1035 +#define OBJ_X448 1L,3L,101L,111L + +#define SN_ED25519 "ED25519" +#define NID_ED25519 1087 +#define OBJ_ED25519 1L,3L,101L,112L + +#define SN_ED448 "ED448" +#define NID_ED448 1088 +#define OBJ_ED448 1L,3L,101L,113L + +#define SN_kx_rsa "KxRSA" +#define LN_kx_rsa "kx-rsa" +#define NID_kx_rsa 1037 + +#define SN_kx_ecdhe "KxECDHE" +#define LN_kx_ecdhe "kx-ecdhe" +#define NID_kx_ecdhe 1038 + +#define SN_kx_dhe "KxDHE" +#define LN_kx_dhe "kx-dhe" +#define NID_kx_dhe 1039 + +#define SN_kx_ecdhe_psk "KxECDHE-PSK" +#define LN_kx_ecdhe_psk "kx-ecdhe-psk" +#define NID_kx_ecdhe_psk 1040 + +#define SN_kx_dhe_psk "KxDHE-PSK" +#define LN_kx_dhe_psk "kx-dhe-psk" +#define NID_kx_dhe_psk 1041 + +#define SN_kx_rsa_psk "KxRSA_PSK" +#define LN_kx_rsa_psk "kx-rsa-psk" +#define NID_kx_rsa_psk 1042 + +#define SN_kx_psk "KxPSK" +#define LN_kx_psk "kx-psk" +#define NID_kx_psk 1043 + +#define SN_kx_srp "KxSRP" +#define LN_kx_srp "kx-srp" +#define NID_kx_srp 1044 + +#define SN_kx_gost "KxGOST" +#define LN_kx_gost "kx-gost" +#define NID_kx_gost 1045 + +#define SN_kx_gost18 "KxGOST18" +#define LN_kx_gost18 "kx-gost18" +#define NID_kx_gost18 1218 + +#define SN_kx_any "KxANY" +#define LN_kx_any "kx-any" +#define NID_kx_any 1063 + +#define SN_auth_rsa "AuthRSA" +#define LN_auth_rsa "auth-rsa" +#define NID_auth_rsa 1046 + +#define SN_auth_ecdsa "AuthECDSA" +#define LN_auth_ecdsa "auth-ecdsa" +#define NID_auth_ecdsa 1047 + +#define SN_auth_psk "AuthPSK" +#define LN_auth_psk "auth-psk" +#define NID_auth_psk 1048 + +#define SN_auth_dss "AuthDSS" +#define LN_auth_dss "auth-dss" +#define NID_auth_dss 1049 + +#define SN_auth_gost01 "AuthGOST01" +#define LN_auth_gost01 "auth-gost01" +#define NID_auth_gost01 1050 + +#define SN_auth_gost12 "AuthGOST12" +#define LN_auth_gost12 "auth-gost12" +#define NID_auth_gost12 1051 + +#define SN_auth_srp "AuthSRP" +#define LN_auth_srp "auth-srp" +#define NID_auth_srp 1052 + +#define SN_auth_null "AuthNULL" +#define LN_auth_null "auth-null" +#define NID_auth_null 1053 + +#define SN_auth_any "AuthANY" +#define LN_auth_any "auth-any" +#define NID_auth_any 1064 + +#define SN_poly1305 "Poly1305" +#define LN_poly1305 "poly1305" +#define NID_poly1305 1061 + +#define SN_siphash "SipHash" +#define LN_siphash "siphash" +#define NID_siphash 1062 + +#define SN_ffdhe2048 "ffdhe2048" +#define NID_ffdhe2048 1126 + +#define SN_ffdhe3072 "ffdhe3072" +#define NID_ffdhe3072 1127 + +#define SN_ffdhe4096 "ffdhe4096" +#define NID_ffdhe4096 1128 + +#define SN_ffdhe6144 "ffdhe6144" +#define NID_ffdhe6144 1129 + +#define SN_ffdhe8192 "ffdhe8192" +#define NID_ffdhe8192 1130 + +#define SN_modp_1536 "modp_1536" +#define NID_modp_1536 1212 + +#define SN_modp_2048 "modp_2048" +#define NID_modp_2048 1213 + +#define SN_modp_3072 "modp_3072" +#define NID_modp_3072 1214 + +#define SN_modp_4096 "modp_4096" +#define NID_modp_4096 1215 + +#define SN_modp_6144 "modp_6144" +#define NID_modp_6144 1216 + +#define SN_modp_8192 "modp_8192" +#define NID_modp_8192 1217 + +#define SN_ISO_UA "ISO-UA" +#define NID_ISO_UA 1150 +#define OBJ_ISO_UA OBJ_member_body,804L + +#define SN_ua_pki "ua-pki" +#define NID_ua_pki 1151 +#define OBJ_ua_pki OBJ_ISO_UA,2L,1L,1L,1L + +#define SN_dstu28147 "dstu28147" +#define LN_dstu28147 "DSTU Gost 28147-2009" +#define NID_dstu28147 1152 +#define OBJ_dstu28147 OBJ_ua_pki,1L,1L,1L + +#define SN_dstu28147_ofb "dstu28147-ofb" +#define LN_dstu28147_ofb "DSTU Gost 28147-2009 OFB mode" +#define NID_dstu28147_ofb 1153 +#define OBJ_dstu28147_ofb OBJ_dstu28147,2L + +#define SN_dstu28147_cfb "dstu28147-cfb" +#define LN_dstu28147_cfb "DSTU Gost 28147-2009 CFB mode" +#define NID_dstu28147_cfb 1154 +#define OBJ_dstu28147_cfb OBJ_dstu28147,3L + +#define SN_dstu28147_wrap "dstu28147-wrap" +#define LN_dstu28147_wrap "DSTU Gost 28147-2009 key wrap" +#define NID_dstu28147_wrap 1155 +#define OBJ_dstu28147_wrap OBJ_dstu28147,5L + +#define SN_hmacWithDstu34311 "hmacWithDstu34311" +#define LN_hmacWithDstu34311 "HMAC DSTU Gost 34311-95" +#define NID_hmacWithDstu34311 1156 +#define OBJ_hmacWithDstu34311 OBJ_ua_pki,1L,1L,2L + +#define SN_dstu34311 "dstu34311" +#define LN_dstu34311 "DSTU Gost 34311-95" +#define NID_dstu34311 1157 +#define OBJ_dstu34311 OBJ_ua_pki,1L,2L,1L + +#define SN_dstu4145le "dstu4145le" +#define LN_dstu4145le "DSTU 4145-2002 little endian" +#define NID_dstu4145le 1158 +#define OBJ_dstu4145le OBJ_ua_pki,1L,3L,1L,1L + +#define SN_dstu4145be "dstu4145be" +#define LN_dstu4145be "DSTU 4145-2002 big endian" +#define NID_dstu4145be 1159 +#define OBJ_dstu4145be OBJ_dstu4145le,1L,1L + +#define SN_uacurve0 "uacurve0" +#define LN_uacurve0 "DSTU curve 0" +#define NID_uacurve0 1160 +#define OBJ_uacurve0 OBJ_dstu4145le,2L,0L + +#define SN_uacurve1 "uacurve1" +#define LN_uacurve1 "DSTU curve 1" +#define NID_uacurve1 1161 +#define OBJ_uacurve1 OBJ_dstu4145le,2L,1L + +#define SN_uacurve2 "uacurve2" +#define LN_uacurve2 "DSTU curve 2" +#define NID_uacurve2 1162 +#define OBJ_uacurve2 OBJ_dstu4145le,2L,2L + +#define SN_uacurve3 "uacurve3" +#define LN_uacurve3 "DSTU curve 3" +#define NID_uacurve3 1163 +#define OBJ_uacurve3 OBJ_dstu4145le,2L,3L + +#define SN_uacurve4 "uacurve4" +#define LN_uacurve4 "DSTU curve 4" +#define NID_uacurve4 1164 +#define OBJ_uacurve4 OBJ_dstu4145le,2L,4L + +#define SN_uacurve5 "uacurve5" +#define LN_uacurve5 "DSTU curve 5" +#define NID_uacurve5 1165 +#define OBJ_uacurve5 OBJ_dstu4145le,2L,5L + +#define SN_uacurve6 "uacurve6" +#define LN_uacurve6 "DSTU curve 6" +#define NID_uacurve6 1166 +#define OBJ_uacurve6 OBJ_dstu4145le,2L,6L + +#define SN_uacurve7 "uacurve7" +#define LN_uacurve7 "DSTU curve 7" +#define NID_uacurve7 1167 +#define OBJ_uacurve7 OBJ_dstu4145le,2L,7L + +#define SN_uacurve8 "uacurve8" +#define LN_uacurve8 "DSTU curve 8" +#define NID_uacurve8 1168 +#define OBJ_uacurve8 OBJ_dstu4145le,2L,8L + +#define SN_uacurve9 "uacurve9" +#define LN_uacurve9 "DSTU curve 9" +#define NID_uacurve9 1169 +#define OBJ_uacurve9 OBJ_dstu4145le,2L,9L + +#define SN_aes_128_siv "AES-128-SIV" +#define LN_aes_128_siv "aes-128-siv" +#define NID_aes_128_siv 1198 + +#define SN_aes_192_siv "AES-192-SIV" +#define LN_aes_192_siv "aes-192-siv" +#define NID_aes_192_siv 1199 + +#define SN_aes_256_siv "AES-256-SIV" +#define LN_aes_256_siv "aes-256-siv" +#define NID_aes_256_siv 1200 + +#endif /* OPENSSL_OBJ_MAC_H */ + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm SN_magma_ctr_acpkm +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm NID_magma_ctr_acpkm +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm OBJ_magma_ctr_acpkm + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac SN_magma_ctr_acpkm_omac +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac NID_magma_ctr_acpkm_omac +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac OBJ_magma_ctr_acpkm_omac + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm SN_kuznyechik_ctr_acpkm +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm NID_kuznyechik_ctr_acpkm +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm OBJ_kuznyechik_ctr_acpkm + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac SN_kuznyechik_ctr_acpkm_omac +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac NID_kuznyechik_ctr_acpkm_omac +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac OBJ_kuznyechik_ctr_acpkm_omac + +#define SN_id_tc26_wrap_gostr3412_2015_magma_kexp15 SN_magma_kexp15 +#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 NID_magma_kexp15 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15 OBJ_magma_kexp15 + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 SN_kuznyechik_kexp15 +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 NID_kuznyechik_kexp15 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 OBJ_kuznyechik_kexp15 + +#define SN_grasshopper_ecb SN_kuznyechik_ecb +#define NID_grasshopper_ecb NID_kuznyechik_ecb + +#define SN_grasshopper_ctr SN_kuznyechik_ctr +#define NID_grasshopper_ctr NID_kuznyechik_ctr + +#define SN_grasshopper_ofb SN_kuznyechik_ofb +#define NID_grasshopper_ofb NID_kuznyechik_ofb + +#define SN_grasshopper_cbc SN_kuznyechik_cbc +#define NID_grasshopper_cbc NID_kuznyechik_cbc + +#define SN_grasshopper_cfb SN_kuznyechik_cfb +#define NID_grasshopper_cfb NID_kuznyechik_cfb + +#define SN_grasshopper_mac SN_kuznyechik_mac +#define NID_grasshopper_mac NID_kuznyechik_mac + +#endif /* OPENSSL_NO_DEPRECATED_3_0 */ diff --git a/include/openssl/objects.h b/include/openssl/objects.h new file mode 100644 index 0000000..9ea91c2 --- /dev/null +++ b/include/openssl/objects.h @@ -0,0 +1,183 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_OBJECTS_H +# define OPENSSL_OBJECTS_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_OBJECTS_H +# endif + +# include +# include +# include +# include + +# define OBJ_NAME_TYPE_UNDEF 0x00 +# define OBJ_NAME_TYPE_MD_METH 0x01 +# define OBJ_NAME_TYPE_CIPHER_METH 0x02 +# define OBJ_NAME_TYPE_PKEY_METH 0x03 +# define OBJ_NAME_TYPE_COMP_METH 0x04 +# define OBJ_NAME_TYPE_MAC_METH 0x05 +# define OBJ_NAME_TYPE_KDF_METH 0x06 +# define OBJ_NAME_TYPE_NUM 0x07 + +# 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); + +DECLARE_ASN1_DUP_FUNCTION_name(ASN1_OBJECT, OBJ) +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); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define OBJ_cleanup() while(0) continue +#endif +int OBJ_create_objects(BIO *in); + +size_t OBJ_length(const ASN1_OBJECT *obj); +const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj); + +int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid); +int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid); +int OBJ_add_sigid(int signid, int dig_id, int pkey_id); +void OBJ_sigid_free(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/objectserr.h b/include/openssl/objectserr.h new file mode 100644 index 0000000..585217f --- /dev/null +++ b/include/openssl/objectserr.h @@ -0,0 +1,28 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_OBJECTSERR_H +# define OPENSSL_OBJECTSERR_H +# pragma once + +# include +# include +# include + + + +/* + * OBJ reason codes. + */ +# define OBJ_R_OID_EXISTS 102 +# define OBJ_R_UNKNOWN_NID 101 +# define OBJ_R_UNKNOWN_OBJECT_NAME 103 + +#endif diff --git a/include/openssl/ocsp.h b/include/openssl/ocsp.h new file mode 100644 index 0000000..5958657 --- /dev/null +++ b/include/openssl/ocsp.h @@ -0,0 +1,483 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/ocsp.h.in + * + * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_OCSP_H +# define OPENSSL_OCSP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_OCSP_H +# endif + +# include +# include +# 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), + * -- value 7 is not used + * removeFromCRL (8), + * privilegeWithdrawn (9), + * aACompromise (10) } + */ +# 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 +# define OCSP_REVOKED_STATUS_PRIVILEGEWITHDRAWN 9 +# define OCSP_REVOKED_STATUS_AACOMPROMISE 10 + + +# 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 +# define OCSP_PARTIAL_CHAIN 0x1000 + +typedef struct ocsp_cert_id_st OCSP_CERTID; +typedef struct ocsp_one_request_st OCSP_ONEREQ; +typedef struct ocsp_req_info_st OCSP_REQINFO; +typedef struct ocsp_signature_st OCSP_SIGNATURE; +typedef struct ocsp_request_st OCSP_REQUEST; + +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_CERTID, OCSP_CERTID, OCSP_CERTID) +#define sk_OCSP_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_value(sk, idx) ((OCSP_CERTID *)OPENSSL_sk_value(ossl_check_const_OCSP_CERTID_sk_type(sk), (idx))) +#define sk_OCSP_CERTID_new(cmp) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new(ossl_check_OCSP_CERTID_compfunc_type(cmp))) +#define sk_OCSP_CERTID_new_null() ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_CERTID_new_reserve(cmp, n) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_CERTID_compfunc_type(cmp), (n))) +#define sk_OCSP_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_CERTID_sk_type(sk), (n)) +#define sk_OCSP_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_delete(sk, i) ((OCSP_CERTID *)OPENSSL_sk_delete(ossl_check_OCSP_CERTID_sk_type(sk), (i))) +#define sk_OCSP_CERTID_delete_ptr(sk, ptr) ((OCSP_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_pop(sk) ((OCSP_CERTID *)OPENSSL_sk_pop(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_shift(sk) ((OCSP_CERTID *)OPENSSL_sk_shift(ossl_check_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_CERTID_sk_type(sk),ossl_check_OCSP_CERTID_freefunc_type(freefunc)) +#define sk_OCSP_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), (idx)) +#define sk_OCSP_CERTID_set(sk, idx, ptr) ((OCSP_CERTID *)OPENSSL_sk_set(ossl_check_OCSP_CERTID_sk_type(sk), (idx), ossl_check_OCSP_CERTID_type(ptr))) +#define sk_OCSP_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) +#define sk_OCSP_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), pnum) +#define sk_OCSP_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_CERTID_sk_type(sk)) +#define sk_OCSP_CERTID_dup(sk) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_CERTID_sk_type(sk))) +#define sk_OCSP_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_copyfunc_type(copyfunc), ossl_check_OCSP_CERTID_freefunc_type(freefunc))) +#define sk_OCSP_CERTID_set_cmp_func(sk, cmp) ((sk_OCSP_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_ONEREQ, OCSP_ONEREQ, OCSP_ONEREQ) +#define sk_OCSP_ONEREQ_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_value(sk, idx) ((OCSP_ONEREQ *)OPENSSL_sk_value(ossl_check_const_OCSP_ONEREQ_sk_type(sk), (idx))) +#define sk_OCSP_ONEREQ_new(cmp) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new(ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) +#define sk_OCSP_ONEREQ_new_null() ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_null()) +#define sk_OCSP_ONEREQ_new_reserve(cmp, n) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_ONEREQ_compfunc_type(cmp), (n))) +#define sk_OCSP_ONEREQ_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_ONEREQ_sk_type(sk), (n)) +#define sk_OCSP_ONEREQ_free(sk) OPENSSL_sk_free(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_delete(sk, i) ((OCSP_ONEREQ *)OPENSSL_sk_delete(ossl_check_OCSP_ONEREQ_sk_type(sk), (i))) +#define sk_OCSP_ONEREQ_delete_ptr(sk, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_pop(sk) ((OCSP_ONEREQ *)OPENSSL_sk_pop(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_shift(sk) ((OCSP_ONEREQ *)OPENSSL_sk_shift(ossl_check_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_ONEREQ_sk_type(sk),ossl_check_OCSP_ONEREQ_freefunc_type(freefunc)) +#define sk_OCSP_ONEREQ_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), (idx)) +#define sk_OCSP_ONEREQ_set(sk, idx, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_set(ossl_check_OCSP_ONEREQ_sk_type(sk), (idx), ossl_check_OCSP_ONEREQ_type(ptr))) +#define sk_OCSP_ONEREQ_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) +#define sk_OCSP_ONEREQ_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), pnum) +#define sk_OCSP_ONEREQ_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) +#define sk_OCSP_ONEREQ_dup(sk) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_dup(ossl_check_const_OCSP_ONEREQ_sk_type(sk))) +#define sk_OCSP_ONEREQ_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_copyfunc_type(copyfunc), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc))) +#define sk_OCSP_ONEREQ_set_cmp_func(sk, cmp) ((sk_OCSP_ONEREQ_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) + + +# 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 + +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_RESPID, OCSP_RESPID, OCSP_RESPID) +#define sk_OCSP_RESPID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_value(sk, idx) ((OCSP_RESPID *)OPENSSL_sk_value(ossl_check_const_OCSP_RESPID_sk_type(sk), (idx))) +#define sk_OCSP_RESPID_new(cmp) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new(ossl_check_OCSP_RESPID_compfunc_type(cmp))) +#define sk_OCSP_RESPID_new_null() ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_null()) +#define sk_OCSP_RESPID_new_reserve(cmp, n) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_RESPID_compfunc_type(cmp), (n))) +#define sk_OCSP_RESPID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_RESPID_sk_type(sk), (n)) +#define sk_OCSP_RESPID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_delete(sk, i) ((OCSP_RESPID *)OPENSSL_sk_delete(ossl_check_OCSP_RESPID_sk_type(sk), (i))) +#define sk_OCSP_RESPID_delete_ptr(sk, ptr) ((OCSP_RESPID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_pop(sk) ((OCSP_RESPID *)OPENSSL_sk_pop(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_shift(sk) ((OCSP_RESPID *)OPENSSL_sk_shift(ossl_check_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_RESPID_sk_type(sk),ossl_check_OCSP_RESPID_freefunc_type(freefunc)) +#define sk_OCSP_RESPID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), (idx)) +#define sk_OCSP_RESPID_set(sk, idx, ptr) ((OCSP_RESPID *)OPENSSL_sk_set(ossl_check_OCSP_RESPID_sk_type(sk), (idx), ossl_check_OCSP_RESPID_type(ptr))) +#define sk_OCSP_RESPID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) +#define sk_OCSP_RESPID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), pnum) +#define sk_OCSP_RESPID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_RESPID_sk_type(sk)) +#define sk_OCSP_RESPID_dup(sk) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_RESPID_sk_type(sk))) +#define sk_OCSP_RESPID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_copyfunc_type(copyfunc), ossl_check_OCSP_RESPID_freefunc_type(freefunc))) +#define sk_OCSP_RESPID_set_cmp_func(sk, cmp) ((sk_OCSP_RESPID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_compfunc_type(cmp))) + + +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; + +SKM_DEFINE_STACK_OF_INTERNAL(OCSP_SINGLERESP, OCSP_SINGLERESP, OCSP_SINGLERESP) +#define sk_OCSP_SINGLERESP_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_value(sk, idx) ((OCSP_SINGLERESP *)OPENSSL_sk_value(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), (idx))) +#define sk_OCSP_SINGLERESP_new(cmp) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) +#define sk_OCSP_SINGLERESP_new_null() ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_null()) +#define sk_OCSP_SINGLERESP_new_reserve(cmp, n) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp), (n))) +#define sk_OCSP_SINGLERESP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_SINGLERESP_sk_type(sk), (n)) +#define sk_OCSP_SINGLERESP_free(sk) OPENSSL_sk_free(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_delete(sk, i) ((OCSP_SINGLERESP *)OPENSSL_sk_delete(ossl_check_OCSP_SINGLERESP_sk_type(sk), (i))) +#define sk_OCSP_SINGLERESP_delete_ptr(sk, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_pop(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_pop(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_shift(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_shift(ossl_check_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_SINGLERESP_sk_type(sk),ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc)) +#define sk_OCSP_SINGLERESP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), (idx)) +#define sk_OCSP_SINGLERESP_set(sk, idx, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_set(ossl_check_OCSP_SINGLERESP_sk_type(sk), (idx), ossl_check_OCSP_SINGLERESP_type(ptr))) +#define sk_OCSP_SINGLERESP_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) +#define sk_OCSP_SINGLERESP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), pnum) +#define sk_OCSP_SINGLERESP_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) +#define sk_OCSP_SINGLERESP_dup(sk) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_dup(ossl_check_const_OCSP_SINGLERESP_sk_type(sk))) +#define sk_OCSP_SINGLERESP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_copyfunc_type(copyfunc), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc))) +#define sk_OCSP_SINGLERESP_set_cmp_func(sk, cmp) ((sk_OCSP_SINGLERESP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) + + +typedef struct ocsp_response_data_st OCSP_RESPDATA; + +typedef struct ocsp_basic_response_st OCSP_BASICRESP; + +typedef struct ocsp_crl_id_st OCSP_CRLID; +typedef struct ocsp_service_locator_st OCSP_SERVICELOC; + +# define PEM_STRING_OCSP_REQUEST "OCSP REQUEST" +# define PEM_STRING_OCSP_RESPONSE "OCSP RESPONSE" + +# define d2i_OCSP_REQUEST_bio(bp,p) ASN1_d2i_bio_of(OCSP_REQUEST,OCSP_REQUEST_new,d2i_OCSP_REQUEST,bp,p) + +# define d2i_OCSP_RESPONSE_bio(bp,p) ASN1_d2i_bio_of(OCSP_RESPONSE,OCSP_RESPONSE_new,d2i_OCSP_RESPONSE,bp,p) + +# define PEM_read_bio_OCSP_REQUEST(bp,x,cb) (OCSP_REQUEST *)PEM_ASN1_read_bio( \ + (char *(*)())d2i_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST, \ + bp,(char **)(x),cb,NULL) + +# define PEM_read_bio_OCSP_RESPONSE(bp,x,cb) (OCSP_RESPONSE *)PEM_ASN1_read_bio(\ + (char *(*)())d2i_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE, \ + bp,(char **)(x),cb,NULL) + +# define PEM_write_bio_OCSP_REQUEST(bp,o) \ + PEM_ASN1_write_bio((int (*)())i2d_OCSP_REQUEST,PEM_STRING_OCSP_REQUEST,\ + bp,(char *)(o), NULL,NULL,0,NULL,NULL) + +# define PEM_write_bio_OCSP_RESPONSE(bp,o) \ + PEM_ASN1_write_bio((int (*)())i2d_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE,\ + bp,(char *)(o), NULL,NULL,0,NULL,NULL) + +# define i2d_OCSP_RESPONSE_bio(bp,o) ASN1_i2d_bio_of(OCSP_RESPONSE,i2d_OCSP_RESPONSE,bp,o) + +# define i2d_OCSP_REQUEST_bio(bp,o) ASN1_i2d_bio_of(OCSP_REQUEST,i2d_OCSP_REQUEST,bp,o) + +# define ASN1_BIT_STRING_digest(data,type,md,len) \ + ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING),type,data,md,len) + +# define OCSP_CERTSTATUS_dup(cs)\ + (OCSP_CERTSTATUS*)ASN1_dup((i2d_of_void *)i2d_OCSP_CERTSTATUS,\ + (d2i_of_void *)d2i_OCSP_CERTSTATUS,(char *)(cs)) + +DECLARE_ASN1_DUP_FUNCTION(OCSP_CERTID) + +OSSL_HTTP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, + const OCSP_REQUEST *req, int buf_size); +OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef OSSL_HTTP_REQ_CTX OCSP_REQ_CTX; +# define OCSP_REQ_CTX_new(io, buf_size) \ + OSSL_HTTP_REQ_CTX_new(io, io, buf_size) +# define OCSP_REQ_CTX_free OSSL_HTTP_REQ_CTX_free +# define OCSP_REQ_CTX_http(rctx, op, path) \ + (OSSL_HTTP_REQ_CTX_set_expected(rctx, NULL, 1 /* asn1 */, 0, 0) && \ + OSSL_HTTP_REQ_CTX_set_request_line(rctx, strcmp(op, "POST") == 0, \ + NULL, NULL, path)) +# define OCSP_REQ_CTX_add1_header OSSL_HTTP_REQ_CTX_add1_header +# define OCSP_REQ_CTX_i2d(r, it, req) \ + OSSL_HTTP_REQ_CTX_set1_req(r, "application/ocsp-request", it, req) +# define OCSP_REQ_CTX_set1_req(r, req) \ + OCSP_REQ_CTX_i2d(r, ASN1_ITEM_rptr(OCSP_REQUEST), (ASN1_VALUE *)(req)) +# define OCSP_REQ_CTX_nbio OSSL_HTTP_REQ_CTX_nbio +# define OCSP_REQ_CTX_nbio_d2i OSSL_HTTP_REQ_CTX_nbio_d2i +# define OCSP_sendreq_nbio(p, r) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(r, (ASN1_VALUE **)(p), \ + ASN1_ITEM_rptr(OCSP_RESPONSE)) +# define OCSP_REQ_CTX_get0_mem_bio OSSL_HTTP_REQ_CTX_get0_mem_bio +# define OCSP_set_max_response_length OSSL_HTTP_REQ_CTX_set_max_response_length +# endif + +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, const X509_NAME *nm); +int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert); + +int OCSP_request_sign(OCSP_REQUEST *req, + X509 *signer, + EVP_PKEY *key, + const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); + +int OCSP_response_status(OCSP_RESPONSE *resp); +OCSP_BASICRESP *OCSP_response_get1_basic(OCSP_RESPONSE *resp); + +const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs); +const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs); +const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_signer(OCSP_BASICRESP *bs, X509 **signer, + STACK_OF(X509) *extra_certs); + +int OCSP_resp_count(OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx); +const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(const OCSP_BASICRESP* bs); +const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs); +int OCSP_resp_get0_id(const OCSP_BASICRESP *bs, + const ASN1_OCTET_STRING **pid, + const X509_NAME **pname); +int OCSP_resp_get1_id(const OCSP_BASICRESP *bs, + ASN1_OCTET_STRING **pid, + X509_NAME **pname); + +int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last); +int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status, + int *reason, + ASN1_GENERALIZEDTIME **revtime, + ASN1_GENERALIZEDTIME **thisupd, + ASN1_GENERALIZEDTIME **nextupd); +int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd, + ASN1_GENERALIZEDTIME *nextupd, long sec, long maxsec); + +int OCSP_request_verify(OCSP_REQUEST *req, STACK_OF(X509) *certs, + X509_STORE *store, unsigned long flags); + +# define OCSP_parse_url(url, host, port, path, ssl) \ + OSSL_HTTP_parse_url(url, ssl, NULL, host, port, NULL, path, NULL, NULL) + +int OCSP_id_issuer_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); +int OCSP_id_cmp(const OCSP_CERTID *a, const OCSP_CERTID *b); + +int OCSP_request_onereq_count(OCSP_REQUEST *req); +OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i); +OCSP_CERTID *OCSP_onereq_get0_id(OCSP_ONEREQ *one); +int OCSP_id_get0_info(ASN1_OCTET_STRING **piNameHash, ASN1_OBJECT **pmd, + ASN1_OCTET_STRING **pikeyHash, + ASN1_INTEGER **pserial, OCSP_CERTID *cid); +int OCSP_request_is_signed(OCSP_REQUEST *req); +OCSP_RESPONSE *OCSP_response_create(int status, OCSP_BASICRESP *bs); +OCSP_SINGLERESP *OCSP_basic_add1_status(OCSP_BASICRESP *rsp, + OCSP_CERTID *cid, + int status, int reason, + ASN1_TIME *revtime, + ASN1_TIME *thisupd, + ASN1_TIME *nextupd); +int OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert); +int OCSP_basic_sign(OCSP_BASICRESP *brsp, + X509 *signer, EVP_PKEY *key, const EVP_MD *dgst, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_basic_sign_ctx(OCSP_BASICRESP *brsp, + X509 *signer, EVP_MD_CTX *ctx, + STACK_OF(X509) *certs, unsigned long flags); +int OCSP_RESPID_set_by_name(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_set_by_key_ex(OCSP_RESPID *respid, X509 *cert, + OSSL_LIB_CTX *libctx, const char *propq); +int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); +int OCSP_RESPID_match_ex(OCSP_RESPID *respid, X509 *cert, OSSL_LIB_CTX *libctx, + const char *propq); +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(const X509_NAME *issuer, const char **urls); + +int OCSP_REQUEST_get_ext_count(OCSP_REQUEST *x); +int OCSP_REQUEST_get_ext_by_NID(OCSP_REQUEST *x, int nid, int lastpos); +int OCSP_REQUEST_get_ext_by_OBJ(OCSP_REQUEST *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_REQUEST_get_ext_by_critical(OCSP_REQUEST *x, int crit, int lastpos); +X509_EXTENSION *OCSP_REQUEST_get_ext(OCSP_REQUEST *x, int loc); +X509_EXTENSION *OCSP_REQUEST_delete_ext(OCSP_REQUEST *x, int loc); +void *OCSP_REQUEST_get1_ext_d2i(OCSP_REQUEST *x, int nid, int *crit, + int *idx); +int OCSP_REQUEST_add1_ext_i2d(OCSP_REQUEST *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_REQUEST_add_ext(OCSP_REQUEST *x, X509_EXTENSION *ex, int loc); + +int OCSP_ONEREQ_get_ext_count(OCSP_ONEREQ *x); +int OCSP_ONEREQ_get_ext_by_NID(OCSP_ONEREQ *x, int nid, int lastpos); +int OCSP_ONEREQ_get_ext_by_OBJ(OCSP_ONEREQ *x, const ASN1_OBJECT *obj, int lastpos); +int OCSP_ONEREQ_get_ext_by_critical(OCSP_ONEREQ *x, int crit, int lastpos); +X509_EXTENSION *OCSP_ONEREQ_get_ext(OCSP_ONEREQ *x, int loc); +X509_EXTENSION *OCSP_ONEREQ_delete_ext(OCSP_ONEREQ *x, int loc); +void *OCSP_ONEREQ_get1_ext_d2i(OCSP_ONEREQ *x, int nid, int *crit, int *idx); +int OCSP_ONEREQ_add1_ext_i2d(OCSP_ONEREQ *x, int nid, void *value, int crit, + unsigned long flags); +int OCSP_ONEREQ_add_ext(OCSP_ONEREQ *x, X509_EXTENSION *ex, int loc); + +int OCSP_BASICRESP_get_ext_count(OCSP_BASICRESP *x); +int OCSP_BASICRESP_get_ext_by_NID(OCSP_BASICRESP *x, int nid, int lastpos); +int OCSP_BASICRESP_get_ext_by_OBJ(OCSP_BASICRESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_BASICRESP_get_ext_by_critical(OCSP_BASICRESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_BASICRESP_get_ext(OCSP_BASICRESP *x, int loc); +X509_EXTENSION *OCSP_BASICRESP_delete_ext(OCSP_BASICRESP *x, int loc); +void *OCSP_BASICRESP_get1_ext_d2i(OCSP_BASICRESP *x, int nid, int *crit, + int *idx); +int OCSP_BASICRESP_add1_ext_i2d(OCSP_BASICRESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_BASICRESP_add_ext(OCSP_BASICRESP *x, X509_EXTENSION *ex, int loc); + +int OCSP_SINGLERESP_get_ext_count(OCSP_SINGLERESP *x); +int OCSP_SINGLERESP_get_ext_by_NID(OCSP_SINGLERESP *x, int nid, int lastpos); +int OCSP_SINGLERESP_get_ext_by_OBJ(OCSP_SINGLERESP *x, const ASN1_OBJECT *obj, + int lastpos); +int OCSP_SINGLERESP_get_ext_by_critical(OCSP_SINGLERESP *x, int crit, + int lastpos); +X509_EXTENSION *OCSP_SINGLERESP_get_ext(OCSP_SINGLERESP *x, int loc); +X509_EXTENSION *OCSP_SINGLERESP_delete_ext(OCSP_SINGLERESP *x, int loc); +void *OCSP_SINGLERESP_get1_ext_d2i(OCSP_SINGLERESP *x, int nid, int *crit, + int *idx); +int OCSP_SINGLERESP_add1_ext_i2d(OCSP_SINGLERESP *x, int nid, void *value, + int crit, unsigned long flags); +int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc); +const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x); + +DECLARE_ASN1_FUNCTIONS(OCSP_SINGLERESP) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTSTATUS) +DECLARE_ASN1_FUNCTIONS(OCSP_REVOKEDINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_BASICRESP) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPDATA) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPID) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPONSE) +DECLARE_ASN1_FUNCTIONS(OCSP_RESPBYTES) +DECLARE_ASN1_FUNCTIONS(OCSP_ONEREQ) +DECLARE_ASN1_FUNCTIONS(OCSP_CERTID) +DECLARE_ASN1_FUNCTIONS(OCSP_REQUEST) +DECLARE_ASN1_FUNCTIONS(OCSP_SIGNATURE) +DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO) +DECLARE_ASN1_FUNCTIONS(OCSP_CRLID) +DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC) + +const char *OCSP_response_status_str(long s); +const char *OCSP_cert_status_str(long s); +const char *OCSP_crl_reason_str(long s); + +int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST *a, unsigned long flags); +int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE *o, unsigned long flags); + +int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, + X509_STORE *st, unsigned long flags); + + +# ifdef __cplusplus +} +# endif +# endif /* !defined(OPENSSL_NO_OCSP) */ +#endif diff --git a/include/openssl/ocsperr.h b/include/openssl/ocsperr.h new file mode 100644 index 0000000..46a0523 --- /dev/null +++ b/include/openssl/ocsperr.h @@ -0,0 +1,53 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_OCSPERR_H +# define OPENSSL_OCSPERR_H +# pragma once + +# include +# include +# include + + +# ifndef OPENSSL_NO_OCSP + + +/* + * OCSP reason codes. + */ +# define OCSP_R_CERTIFICATE_VERIFY_ERROR 101 +# define OCSP_R_DIGEST_ERR 102 +# define OCSP_R_DIGEST_NAME_ERR 106 +# define OCSP_R_DIGEST_SIZE_ERR 107 +# define OCSP_R_ERROR_IN_NEXTUPDATE_FIELD 122 +# define OCSP_R_ERROR_IN_THISUPDATE_FIELD 123 +# 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_SIGNATURE_FAILURE 117 +# define OCSP_R_SIGNER_CERTIFICATE_NOT_FOUND 118 +# define OCSP_R_STATUS_EXPIRED 125 +# define OCSP_R_STATUS_NOT_YET_VALID 126 +# define OCSP_R_STATUS_TOO_OLD 127 +# define OCSP_R_UNKNOWN_MESSAGE_DIGEST 119 +# define OCSP_R_UNKNOWN_NID 120 +# define OCSP_R_UNSUPPORTED_REQUESTORNAME_TYPE 129 + +# endif +#endif diff --git a/include/openssl/opensslconf.h b/include/openssl/opensslconf.h new file mode 100644 index 0000000..1e83371 --- /dev/null +++ b/include/openssl/opensslconf.h @@ -0,0 +1,17 @@ +/* + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_OPENSSLCONF_H +# define OPENSSL_OPENSSLCONF_H +# pragma once + +# include +# include + +#endif /* OPENSSL_OPENSSLCONF_H */ diff --git a/include/openssl/opensslv.h b/include/openssl/opensslv.h new file mode 100644 index 0000000..1b40ef0 --- /dev/null +++ b/include/openssl/opensslv.h @@ -0,0 +1,114 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/opensslv.h.in + * + * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_OPENSSLV_H +# define OPENSSL_OPENSSLV_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * SECTION 1: VERSION DATA. These will change for each release + */ + +/* + * Base version macros + * + * These macros express version number MAJOR.MINOR.PATCH exactly + */ +# define OPENSSL_VERSION_MAJOR 3 +# define OPENSSL_VERSION_MINOR 1 +# define OPENSSL_VERSION_PATCH 0 + +/* + * Additional version information + * + * These are also part of the new version scheme, but aren't part + * of the version number itself. + */ + +/* Could be: #define OPENSSL_VERSION_PRE_RELEASE "-alpha.1" */ +# define OPENSSL_VERSION_PRE_RELEASE "" +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+fips" */ +/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+vendor.1" */ +# define OPENSSL_VERSION_BUILD_METADATA "" + +/* + * Note: The OpenSSL Project will never define OPENSSL_VERSION_BUILD_METADATA + * to be anything but the empty string. Its use is entirely reserved for + * others + */ + +/* + * Shared library version + * + * This is strictly to express ABI version, which may or may not + * be related to the API version expressed with the macros above. + * This is defined in free form. + */ +# define OPENSSL_SHLIB_VERSION 3 + +/* + * SECTION 2: USEFUL MACROS + */ + +/* For checking general API compatibility when preprocessing */ +# define OPENSSL_VERSION_PREREQ(maj,min) \ + ((OPENSSL_VERSION_MAJOR << 16) + OPENSSL_VERSION_MINOR >= ((maj) << 16) + (min)) + +/* + * Macros to get the version in easily digested string form, both the short + * "MAJOR.MINOR.PATCH" variant (where MAJOR, MINOR and PATCH are replaced + * with the values from the corresponding OPENSSL_VERSION_ macros) and the + * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and + * OPENSSL_VERSION_BUILD_METADATA_STR appended. + */ +# define OPENSSL_VERSION_STR "3.1.0" +# define OPENSSL_FULL_VERSION_STR "3.1.0" + +/* + * SECTION 3: ADDITIONAL METADATA + * + * These strings are defined separately to allow them to be parsable. + */ +# define OPENSSL_RELEASE_DATE "14 Mar 2023" + +/* + * SECTION 4: BACKWARD COMPATIBILITY + */ + +# define OPENSSL_VERSION_TEXT "OpenSSL 3.1.0 14 Mar 2023" + +/* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ +# ifdef OPENSSL_VERSION_PRE_RELEASE +# define _OPENSSL_VERSION_PRE_RELEASE 0x0L +# else +# define _OPENSSL_VERSION_PRE_RELEASE 0xfL +# endif +# define OPENSSL_VERSION_NUMBER \ + ( (OPENSSL_VERSION_MAJOR<<28) \ + |(OPENSSL_VERSION_MINOR<<20) \ + |(OPENSSL_VERSION_PATCH<<4) \ + |_OPENSSL_VERSION_PRE_RELEASE ) + +# ifdef __cplusplus +} +# endif + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_OPENSSLV_H +# endif + +#endif /* OPENSSL_OPENSSLV_H */ diff --git a/include/openssl/ossl_typ.h b/include/openssl/ossl_typ.h new file mode 100644 index 0000000..82a5898 --- /dev/null +++ b/include/openssl/ossl_typ.h @@ -0,0 +1,16 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with 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 original was renamed to + * + * This header file only exists for compatibility reasons with older + * applications which #include . + */ +# include diff --git a/include/openssl/param_build.h b/include/openssl/param_build.h new file mode 100644 index 0000000..f29fdb2 --- /dev/null +++ b/include/openssl/param_build.h @@ -0,0 +1,63 @@ +/* + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_PARAM_BUILD_H +# define OPENSSL_PARAM_BUILD_H +# pragma once + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +OSSL_PARAM_BLD *OSSL_PARAM_BLD_new(void); +OSSL_PARAM *OSSL_PARAM_BLD_to_param(OSSL_PARAM_BLD *bld); +void OSSL_PARAM_BLD_free(OSSL_PARAM_BLD *bld); + +int OSSL_PARAM_BLD_push_int(OSSL_PARAM_BLD *bld, const char *key, int val); +int OSSL_PARAM_BLD_push_uint(OSSL_PARAM_BLD *bld, const char *key, + unsigned int val); +int OSSL_PARAM_BLD_push_long(OSSL_PARAM_BLD *bld, const char *key, + long int val); +int OSSL_PARAM_BLD_push_ulong(OSSL_PARAM_BLD *bld, const char *key, + unsigned long int val); +int OSSL_PARAM_BLD_push_int32(OSSL_PARAM_BLD *bld, const char *key, + int32_t val); +int OSSL_PARAM_BLD_push_uint32(OSSL_PARAM_BLD *bld, const char *key, + uint32_t val); +int OSSL_PARAM_BLD_push_int64(OSSL_PARAM_BLD *bld, const char *key, + int64_t val); +int OSSL_PARAM_BLD_push_uint64(OSSL_PARAM_BLD *bld, const char *key, + uint64_t val); +int OSSL_PARAM_BLD_push_size_t(OSSL_PARAM_BLD *bld, const char *key, + size_t val); +int OSSL_PARAM_BLD_push_time_t(OSSL_PARAM_BLD *bld, const char *key, + time_t val); +int OSSL_PARAM_BLD_push_double(OSSL_PARAM_BLD *bld, const char *key, + double val); +int OSSL_PARAM_BLD_push_BN(OSSL_PARAM_BLD *bld, const char *key, + const BIGNUM *bn); +int OSSL_PARAM_BLD_push_BN_pad(OSSL_PARAM_BLD *bld, const char *key, + const BIGNUM *bn, size_t sz); +int OSSL_PARAM_BLD_push_utf8_string(OSSL_PARAM_BLD *bld, const char *key, + const char *buf, size_t bsize); +int OSSL_PARAM_BLD_push_utf8_ptr(OSSL_PARAM_BLD *bld, const char *key, + char *buf, size_t bsize); +int OSSL_PARAM_BLD_push_octet_string(OSSL_PARAM_BLD *bld, const char *key, + const void *buf, size_t bsize); +int OSSL_PARAM_BLD_push_octet_ptr(OSSL_PARAM_BLD *bld, const char *key, + void *buf, size_t bsize); + +# ifdef __cplusplus +} +# endif +#endif /* OPENSSL_PARAM_BUILD_H */ diff --git a/include/openssl/params.h b/include/openssl/params.h new file mode 100644 index 0000000..d75eab0 --- /dev/null +++ b/include/openssl/params.h @@ -0,0 +1,160 @@ +/* + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_PARAMS_H +# define OPENSSL_PARAMS_H +# pragma once + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# define OSSL_PARAM_UNMODIFIED ((size_t)-1) + +# define OSSL_PARAM_END \ + { NULL, 0, NULL, 0, 0 } + +# define OSSL_PARAM_DEFN(key, type, addr, sz) \ + { (key), (type), (addr), (sz), OSSL_PARAM_UNMODIFIED } + +/* Basic parameter types without return sizes */ +# define OSSL_PARAM_int(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int)) +# define OSSL_PARAM_uint(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(unsigned int)) +# define OSSL_PARAM_long(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(long int)) +# define OSSL_PARAM_ulong(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(unsigned long int)) +# define OSSL_PARAM_int32(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int32_t)) +# define OSSL_PARAM_uint32(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(uint32_t)) +# define OSSL_PARAM_int64(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(int64_t)) +# define OSSL_PARAM_uint64(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), \ + sizeof(uint64_t)) +# define OSSL_PARAM_size_t(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), sizeof(size_t)) +# define OSSL_PARAM_time_t(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(time_t)) +# define OSSL_PARAM_double(key, addr) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_REAL, (addr), sizeof(double)) + +# define OSSL_PARAM_BN(key, bn, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (bn), (sz)) +# define OSSL_PARAM_utf8_string(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UTF8_STRING, (addr), sz) +# define OSSL_PARAM_octet_string(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_OCTET_STRING, (addr), sz) + +# define OSSL_PARAM_utf8_ptr(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_UTF8_PTR, (addr), sz) +# define OSSL_PARAM_octet_ptr(key, addr, sz) \ + OSSL_PARAM_DEFN((key), OSSL_PARAM_OCTET_PTR, (addr), sz) + +/* Search an OSSL_PARAM array for a matching name */ +OSSL_PARAM *OSSL_PARAM_locate(OSSL_PARAM *p, const char *key); +const OSSL_PARAM *OSSL_PARAM_locate_const(const OSSL_PARAM *p, const char *key); + +/* Basic parameter type run-time construction */ +OSSL_PARAM OSSL_PARAM_construct_int(const char *key, int *buf); +OSSL_PARAM OSSL_PARAM_construct_uint(const char *key, unsigned int *buf); +OSSL_PARAM OSSL_PARAM_construct_long(const char *key, long int *buf); +OSSL_PARAM OSSL_PARAM_construct_ulong(const char *key, unsigned long int *buf); +OSSL_PARAM OSSL_PARAM_construct_int32(const char *key, int32_t *buf); +OSSL_PARAM OSSL_PARAM_construct_uint32(const char *key, uint32_t *buf); +OSSL_PARAM OSSL_PARAM_construct_int64(const char *key, int64_t *buf); +OSSL_PARAM OSSL_PARAM_construct_uint64(const char *key, uint64_t *buf); +OSSL_PARAM OSSL_PARAM_construct_size_t(const char *key, size_t *buf); +OSSL_PARAM OSSL_PARAM_construct_time_t(const char *key, time_t *buf); +OSSL_PARAM OSSL_PARAM_construct_BN(const char *key, unsigned char *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_double(const char *key, double *buf); +OSSL_PARAM OSSL_PARAM_construct_utf8_string(const char *key, char *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_utf8_ptr(const char *key, char **buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_octet_string(const char *key, void *buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_octet_ptr(const char *key, void **buf, + size_t bsize); +OSSL_PARAM OSSL_PARAM_construct_end(void); + +int OSSL_PARAM_allocate_from_text(OSSL_PARAM *to, + const OSSL_PARAM *paramdefs, + const char *key, const char *value, + size_t value_n, int *found); + +int OSSL_PARAM_get_int(const OSSL_PARAM *p, int *val); +int OSSL_PARAM_get_uint(const OSSL_PARAM *p, unsigned int *val); +int OSSL_PARAM_get_long(const OSSL_PARAM *p, long int *val); +int OSSL_PARAM_get_ulong(const OSSL_PARAM *p, unsigned long int *val); +int OSSL_PARAM_get_int32(const OSSL_PARAM *p, int32_t *val); +int OSSL_PARAM_get_uint32(const OSSL_PARAM *p, uint32_t *val); +int OSSL_PARAM_get_int64(const OSSL_PARAM *p, int64_t *val); +int OSSL_PARAM_get_uint64(const OSSL_PARAM *p, uint64_t *val); +int OSSL_PARAM_get_size_t(const OSSL_PARAM *p, size_t *val); +int OSSL_PARAM_get_time_t(const OSSL_PARAM *p, time_t *val); + +int OSSL_PARAM_set_int(OSSL_PARAM *p, int val); +int OSSL_PARAM_set_uint(OSSL_PARAM *p, unsigned int val); +int OSSL_PARAM_set_long(OSSL_PARAM *p, long int val); +int OSSL_PARAM_set_ulong(OSSL_PARAM *p, unsigned long int val); +int OSSL_PARAM_set_int32(OSSL_PARAM *p, int32_t val); +int OSSL_PARAM_set_uint32(OSSL_PARAM *p, uint32_t val); +int OSSL_PARAM_set_int64(OSSL_PARAM *p, int64_t val); +int OSSL_PARAM_set_uint64(OSSL_PARAM *p, uint64_t val); +int OSSL_PARAM_set_size_t(OSSL_PARAM *p, size_t val); +int OSSL_PARAM_set_time_t(OSSL_PARAM *p, time_t val); + +int OSSL_PARAM_get_double(const OSSL_PARAM *p, double *val); +int OSSL_PARAM_set_double(OSSL_PARAM *p, double val); + +int OSSL_PARAM_get_BN(const OSSL_PARAM *p, BIGNUM **val); +int OSSL_PARAM_set_BN(OSSL_PARAM *p, const BIGNUM *val); + +int OSSL_PARAM_get_utf8_string(const OSSL_PARAM *p, char **val, size_t max_len); +int OSSL_PARAM_set_utf8_string(OSSL_PARAM *p, const char *val); + +int OSSL_PARAM_get_octet_string(const OSSL_PARAM *p, void **val, size_t max_len, + size_t *used_len); +int OSSL_PARAM_set_octet_string(OSSL_PARAM *p, const void *val, size_t len); + +int OSSL_PARAM_get_utf8_ptr(const OSSL_PARAM *p, const char **val); +int OSSL_PARAM_set_utf8_ptr(OSSL_PARAM *p, const char *val); + +int OSSL_PARAM_get_octet_ptr(const OSSL_PARAM *p, const void **val, + size_t *used_len); +int OSSL_PARAM_set_octet_ptr(OSSL_PARAM *p, const void *val, + size_t used_len); + +int OSSL_PARAM_get_utf8_string_ptr(const OSSL_PARAM *p, const char **val); +int OSSL_PARAM_get_octet_string_ptr(const OSSL_PARAM *p, const void **val, + size_t *used_len); + +int OSSL_PARAM_modified(const OSSL_PARAM *p); +void OSSL_PARAM_set_all_unmodified(OSSL_PARAM *p); + +OSSL_PARAM *OSSL_PARAM_dup(const OSSL_PARAM *p); +OSSL_PARAM *OSSL_PARAM_merge(const OSSL_PARAM *p1, const OSSL_PARAM *p2); +void OSSL_PARAM_free(OSSL_PARAM *p); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/pem.h b/include/openssl/pem.h new file mode 100644 index 0000000..000d9c8 --- /dev/null +++ b/include/openssl/pem.h @@ -0,0 +1,541 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_PEM_H +# define OPENSSL_PEM_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_PEM_H +# endif + +# include +# include +# include +# include +# include +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define PEM_BUFSIZE 1024 + +# define PEM_STRING_X509_OLD "X509 CERTIFICATE" +# define PEM_STRING_X509 "CERTIFICATE" +# define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +# define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +# define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +# define PEM_STRING_X509_CRL "X509 CRL" +# define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +# define PEM_STRING_PUBLIC "PUBLIC KEY" +# define PEM_STRING_RSA "RSA PRIVATE KEY" +# define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +# define PEM_STRING_DSA "DSA PRIVATE KEY" +# define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +# define PEM_STRING_PKCS7 "PKCS7" +# define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +# define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +# define PEM_STRING_PKCS8INF "PRIVATE KEY" +# define PEM_STRING_DHPARAMS "DH PARAMETERS" +# define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +# define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +# define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +# define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +# define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +# define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +# define PEM_STRING_PARAMETERS "PARAMETERS" +# define PEM_STRING_CMS "CMS" + +# define PEM_TYPE_ENCRYPTED 10 +# define PEM_TYPE_MIC_ONLY 20 +# define PEM_TYPE_MIC_CLEAR 30 +# define PEM_TYPE_CLEAR 40 + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +# define PEM_read_cb_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u) +# define PEM_read_cb_ex_fnsig(name, type, INTYPE, readname) \ + type *PEM_##readname##_##name##_ex(INTYPE *out, type **x, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +# define PEM_write_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x) +# define PEM_write_cb_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u) +# define PEM_write_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) +# define PEM_write_cb_ex_fnsig(name, type, OUTTYPE, writename) \ + int PEM_##writename##_##name##_ex(OUTTYPE *out, const type *x, \ + const EVP_CIPHER *enc, \ + const unsigned char *kstr, int klen, \ + pem_password_cb *cb, void *u, \ + OSSL_LIB_CTX *libctx, \ + const char *propq) + +# ifdef OPENSSL_NO_STDIO + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +# endif +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +# endif +# 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) \ + PEM_write_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL, NULL, 0, NULL, NULL); \ + } + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, FILE, write) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) +# endif +# 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) \ + PEM_write_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, NULL,NULL,0,NULL,NULL); \ + } + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + PEM_write_cb_fnsig(name, type, BIO, write_bio) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u); \ + } + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) +# endif + +# define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# 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) +# endif + +# 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) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# 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) +# endif + +# 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) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) +# endif + +# 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 */ + +/* + * The mysterious 'extern' that's passed to some macros is innocuous, + * and is there to quiet pre-C99 compilers that may complain about empty + * arguments in macro calls. + */ +# if defined(OPENSSL_NO_STDIO) + +# define DECLARE_PEM_read_fp_attr(attr, name, type) /**/ +# define DECLARE_PEM_read_fp_ex_attr(attr, name, type) /**/ +# define DECLARE_PEM_write_fp_attr(attr, name, type) /**/ +# define DECLARE_PEM_write_fp_ex_attr(attr, name, type) /**/ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_fp_const_attr(attr, name, type) /**/ +# endif +# define DECLARE_PEM_write_cb_fp_attr(attr, name, type) /**/ +# define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) /**/ + +# else + +# define DECLARE_PEM_read_fp_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); +# define DECLARE_PEM_read_fp_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, FILE, read); \ + attr PEM_read_cb_ex_fnsig(name, type, FILE, read); + +# define DECLARE_PEM_write_fp_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +# define DECLARE_PEM_write_fp_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); \ + attr PEM_write_ex_fnsig(name, type, FILE, write); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_fp_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, FILE, write); +# endif +# define DECLARE_PEM_write_cb_fp_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); +# define DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, FILE, write); \ + attr PEM_write_cb_ex_fnsig(name, type, FILE, write); + +# endif + +# define DECLARE_PEM_read_fp(name, type) \ + DECLARE_PEM_read_fp_attr(extern, name, type) +# define DECLARE_PEM_write_fp(name, type) \ + DECLARE_PEM_write_fp_attr(extern, name, type) +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_fp_const(name, type) \ + DECLARE_PEM_write_fp_const_attr(extern, name, type) +# endif +# define DECLARE_PEM_write_cb_fp(name, type) \ + DECLARE_PEM_write_cb_fp_attr(extern, name, type) + +# define DECLARE_PEM_read_bio_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); +# define DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + attr PEM_read_cb_fnsig(name, type, BIO, read_bio); \ + attr PEM_read_cb_ex_fnsig(name, type, BIO, read_bio); +# define DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_bio_attr(extern, name, type) +# define DECLARE_PEM_read_bio_ex(name, type) \ + DECLARE_PEM_read_bio_ex_attr(extern, name, type) + +# define DECLARE_PEM_write_bio_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_ex_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_bio_attr(extern, name, type) +# define DECLARE_PEM_write_bio_ex(name, type) \ + DECLARE_PEM_write_bio_ex_attr(extern, name, type) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + attr PEM_write_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_bio_const_attr(extern, name, type) +# endif + +# define DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + attr PEM_write_cb_fnsig(name, type, BIO, write_bio); \ + attr PEM_write_cb_ex_fnsig(name, type, BIO, write_bio); +# define DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_bio_attr(extern, name, type) +# define DECLARE_PEM_write_cb_ex_bio(name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(extern, name, type) + +# define DECLARE_PEM_write_attr(attr, name, type) \ + DECLARE_PEM_write_bio_attr(attr, name, type) \ + DECLARE_PEM_write_fp_attr(attr, name, type) +# define DECLARE_PEM_write_ex_attr(attr, name, type) \ + DECLARE_PEM_write_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_fp_ex_attr(attr, name, type) +# define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_attr(extern, name, type) +# define DECLARE_PEM_write_ex(name, type) \ + DECLARE_PEM_write_ex_attr(extern, name, type) +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_write_const_attr(attr, name, type) \ + DECLARE_PEM_write_bio_const_attr(attr, name, type) \ + DECLARE_PEM_write_fp_const_attr(attr, name, type) +# define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_const_attr(extern, name, type) +# endif +# define DECLARE_PEM_write_cb_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_attr(attr, name, type) +# define DECLARE_PEM_write_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_fp_ex_attr(attr, name, type) +# define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_attr(extern, name, type) +# define DECLARE_PEM_write_cb_ex(name, type) \ + DECLARE_PEM_write_cb_ex_attr(extern, name, type) +# define DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_read_bio_attr(attr, name, type) \ + DECLARE_PEM_read_fp_attr(attr, name, type) +# define DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_read_bio_ex_attr(attr, name, type) \ + DECLARE_PEM_read_fp_ex_attr(attr, name, type) +# define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_attr(extern, name, type) +# define DECLARE_PEM_read_ex(name, type) \ + DECLARE_PEM_read_ex_attr(extern, name, type) +# define DECLARE_PEM_rw_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_attr(attr, name, type) +# define DECLARE_PEM_rw_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_ex_attr(attr, name, type) +# define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_rw_attr(extern, name, type) +# define DECLARE_PEM_rw_ex(name, type) \ + DECLARE_PEM_rw_ex_attr(extern, name, type) +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define DECLARE_PEM_rw_const_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_const_attr(attr, name, type) +# define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_rw_const_attr(extern, name, type) +# endif +# define DECLARE_PEM_rw_cb_attr(attr, name, type) \ + DECLARE_PEM_read_attr(attr, name, type) \ + DECLARE_PEM_write_cb_attr(attr, name, type) +# define DECLARE_PEM_rw_cb_ex_attr(attr, name, type) \ + DECLARE_PEM_read_ex_attr(attr, name, type) \ + DECLARE_PEM_write_cb_ex_attr(attr, name, type) +# define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_rw_cb_attr(extern, name, type) +# define DECLARE_PEM_rw_cb_ex(name, type) \ + DECLARE_PEM_rw_cb_ex_attr(extern, name, type) + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +# define PEM_FLAG_SECURE 0x1 +# define PEM_FLAG_EAY_COMPATIBLE 0x2 +# define PEM_FLAG_ONLY_B64 0x4 +int PEM_read_bio_ex(BIO *bp, char **name, char **header, + unsigned char **data, long *len, unsigned int flags); +int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, + const void *x, const EVP_CIPHER *enc, + const 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); +STACK_OF(X509_INFO) +*PEM_X509_INFO_read_bio_ex(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u, OSSL_LIB_CTX *libctx, + const char *propq); + +int PEM_X509_INFO_write_bio(BIO *bp, const X509_INFO *xi, EVP_CIPHER *enc, + const 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, + const void *x, const EVP_CIPHER *enc, + const 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); +STACK_OF(X509_INFO) +*PEM_X509_INFO_read_ex(FILE *fp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, + void *u, OSSL_LIB_CTX *libctx, const char *propq); +#endif + +int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +int PEM_SignUpdate(EVP_MD_CTX *ctx, const unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +/* The default pem_password_cb that's used internally */ +int PEM_def_callback(char *buf, int num, int rwflag, void *userdata); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, const 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(X509_PUBKEY, X509_PUBKEY) +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_DEPRECATED_3_0 +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSAPublicKey, RSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, RSA_PUBKEY, RSA) +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_DSA +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, DSAPrivateKey, DSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSA_PUBKEY, DSA) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DSAparams, DSA) +# endif +# endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_EC +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, ECPKParameters, EC_GROUP) +DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, ECPrivateKey, EC_KEY) +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, EC_PUBKEY, EC_KEY) +# endif +# endif + +# ifndef OPENSSL_NO_DH +# ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DHparams, DH) +DECLARE_PEM_write_attr(OSSL_DEPRECATEDIN_3_0, DHxparams, DH) +# endif +# endif +DECLARE_PEM_rw_cb_ex(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw_ex(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PrivateKey_traditional(BIO *bp, const EVP_PKEY *x, + const EVP_CIPHER *enc, + const unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +/* Why do these take a signed char *kstr? */ +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, const EVP_PKEY *, const EVP_CIPHER *, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_bio(BIO *bp, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, const EVP_PKEY *x, int nid, + const 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, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, const EVP_PKEY *x, int nid, + const char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, const EVP_PKEY *x, int nid, + const 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, const EVP_PKEY *x, const EVP_CIPHER *enc, + const char *kstr, int klen, + pem_password_cb *cd, void *u); +# endif +EVP_PKEY *PEM_read_bio_Parameters_ex(BIO *bp, EVP_PKEY **x, + OSSL_LIB_CTX *libctx, const char *propq); +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, const EVP_PKEY *x); + +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, const EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, const EVP_PKEY *pk); +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +EVP_PKEY *b2i_PVK_bio_ex(BIO *in, pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); +int i2b_PVK_bio(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +int i2b_PVK_bio_ex(BIO *out, const EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u, + OSSL_LIB_CTX *libctx, const char *propq); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/pem2.h b/include/openssl/pem2.h new file mode 100644 index 0000000..a8a5325 --- /dev/null +++ b/include/openssl/pem2.h @@ -0,0 +1,19 @@ +/* + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_PEM2_H +# define OPENSSL_PEM2_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_PEM2_H +# endif +# include +#endif diff --git a/include/openssl/pemerr.h b/include/openssl/pemerr.h new file mode 100644 index 0000000..18f6d9e --- /dev/null +++ b/include/openssl/pemerr.h @@ -0,0 +1,58 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_PEMERR_H +# define OPENSSL_PEMERR_H +# pragma once + +# include +# include +# include + + + +/* + * PEM reason codes. + */ +# define PEM_R_BAD_BASE64_DECODE 100 +# define PEM_R_BAD_DECRYPT 101 +# define PEM_R_BAD_END_LINE 102 +# define PEM_R_BAD_IV_CHARS 103 +# define PEM_R_BAD_MAGIC_NUMBER 116 +# define PEM_R_BAD_PASSWORD_READ 104 +# define PEM_R_BAD_VERSION_NUMBER 117 +# define PEM_R_BIO_WRITE_FAILURE 118 +# define PEM_R_CIPHER_IS_NULL 127 +# define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +# define PEM_R_EXPECTING_DSS_KEY_BLOB 131 +# define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 +# define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +# define PEM_R_EXPECTING_RSA_KEY_BLOB 132 +# define PEM_R_HEADER_TOO_LONG 128 +# define PEM_R_INCONSISTENT_HEADER 121 +# define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 +# define PEM_R_KEYBLOB_TOO_SHORT 123 +# define PEM_R_MISSING_DEK_IV 129 +# define PEM_R_NOT_DEK_INFO 105 +# define PEM_R_NOT_ENCRYPTED 106 +# define PEM_R_NOT_PROC_TYPE 107 +# define PEM_R_NO_START_LINE 108 +# define PEM_R_PROBLEMS_GETTING_PASSWORD 109 +# define PEM_R_PVK_DATA_TOO_SHORT 124 +# define PEM_R_PVK_TOO_SHORT 125 +# define PEM_R_READ_KEY 111 +# define PEM_R_SHORT_HEADER 112 +# define PEM_R_UNEXPECTED_DEK_IV 130 +# define PEM_R_UNSUPPORTED_CIPHER 113 +# define PEM_R_UNSUPPORTED_ENCRYPTION 114 +# define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 +# define PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE 110 + +#endif diff --git a/include/openssl/pkcs12.h b/include/openssl/pkcs12.h new file mode 100644 index 0000000..b1fa3d3 --- /dev/null +++ b/include/openssl/pkcs12.h @@ -0,0 +1,353 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/pkcs12.h.in + * + * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_PKCS12_H +# define OPENSSL_PKCS12_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_PKCS12_H +# endif + +# include +# include +# include +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif + +#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; + +SKM_DEFINE_STACK_OF_INTERNAL(PKCS12_SAFEBAG, PKCS12_SAFEBAG, PKCS12_SAFEBAG) +#define sk_PKCS12_SAFEBAG_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_value(sk, idx) ((PKCS12_SAFEBAG *)OPENSSL_sk_value(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), (idx))) +#define sk_PKCS12_SAFEBAG_new(cmp) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) +#define sk_PKCS12_SAFEBAG_new_null() ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_null()) +#define sk_PKCS12_SAFEBAG_new_reserve(cmp, n) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_reserve(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp), (n))) +#define sk_PKCS12_SAFEBAG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (n)) +#define sk_PKCS12_SAFEBAG_free(sk) OPENSSL_sk_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_delete(sk, i) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (i))) +#define sk_PKCS12_SAFEBAG_delete_ptr(sk, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete_ptr(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_pop(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_pop(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_shift(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_shift(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk),ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc)) +#define sk_PKCS12_SAFEBAG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), (idx)) +#define sk_PKCS12_SAFEBAG_set(sk, idx, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_set(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (idx), ossl_check_PKCS12_SAFEBAG_type(ptr))) +#define sk_PKCS12_SAFEBAG_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) +#define sk_PKCS12_SAFEBAG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), pnum) +#define sk_PKCS12_SAFEBAG_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) +#define sk_PKCS12_SAFEBAG_dup(sk) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_dup(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk))) +#define sk_PKCS12_SAFEBAG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_copyfunc_type(copyfunc), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc))) +#define sk_PKCS12_SAFEBAG_set_cmp_func(sk, cmp) ((sk_PKCS12_SAFEBAG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) + + +typedef struct pkcs12_bag_st PKCS12_BAGS; + +# define PKCS12_ERROR 0 +# define PKCS12_OK 1 + +/* Compatibility macros */ + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 + +# 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 +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, + int attr_nid); +#endif + +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); +const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); +const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(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_create_secret(int type, int vtype, const unsigned char *value, int len); +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_SAFEBAG_create_pkcs8_encrypt_ex(int pbe_nid, + const char *pass, + int passlen, + unsigned char *salt, + int saltlen, int iter, + PKCS8_PRIV_KEY_INFO *p8inf, + OSSL_LIB_CTX *ctx, + const char *propq); + +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 *PKCS8_decrypt_ex(const X509_SIG *p8, const char *pass, + int passlen, OSSL_LIB_CTX *ctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen); +PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey_ex(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen, + OSSL_LIB_CTX *ctx, + const char *propq); +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_encrypt_ex(int pbe_nid, const EVP_CIPHER *cipher, + const char *pass, int passlen, unsigned char *salt, + int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8, + OSSL_LIB_CTX *ctx, const char *propq); +X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); +X509_SIG *PKCS8_set0_pbe_ex(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe, + OSSL_LIB_CTX *ctx, const char *propq); +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); +PKCS7 *PKCS12_pack_p7encdata_ex(int pbe_nid, const char *pass, int passlen, + unsigned char *salt, int saltlen, int iter, + STACK_OF(PKCS12_SAFEBAG) *bags, + OSSL_LIB_CTX *ctx, const char *propq); + +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 PKCS12_add1_attr_by_NID(PKCS12_SAFEBAG *bag, int nid, int type, + const unsigned char *bytes, int len); +int PKCS12_add1_attr_by_txt(PKCS12_SAFEBAG *bag, const char *attrname, int type, + const unsigned char *bytes, int len); +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); +unsigned char *PKCS12_pbe_crypt_ex(const X509_ALGOR *algor, + const char *pass, int passlen, + const unsigned char *in, int inlen, + unsigned char **data, int *datalen, + int en_de, OSSL_LIB_CTX *libctx, + const char *propq); +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); +void *PKCS12_item_decrypt_d2i_ex(const X509_ALGOR *algor, const ASN1_ITEM *it, + const char *pass, int passlen, + const ASN1_OCTET_STRING *oct, int zbuf, + OSSL_LIB_CTX *libctx, + const char *propq); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt_ex(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf, + OSSL_LIB_CTX *ctx, + const char *propq); +PKCS12 *PKCS12_init(int mode); +PKCS12 *PKCS12_init_ex(int mode, OSSL_LIB_CTX *ctx, const char *propq); + +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_asc_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +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_uni_ex(unsigned char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); +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_key_gen_utf8_ex(const char *pass, int passlen, unsigned char *salt, + int saltlen, int id, int iter, int n, + unsigned char *out, const EVP_MD *md_type, + OSSL_LIB_CTX *ctx, const char *propq); + +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_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md_type, int en_de, + OSSL_LIB_CTX *libctx, const char *propq); +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 *PKCS12_create_ex(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, + OSSL_LIB_CTX *ctx, const char *propq); + +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); +PKCS12_SAFEBAG *PKCS12_add_key_ex(STACK_OF(PKCS12_SAFEBAG) **pbags, + EVP_PKEY *key, int key_usage, int iter, + int key_nid, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12_SAFEBAG *PKCS12_add_secret(STACK_OF(PKCS12_SAFEBAG) **pbags, + int nid_type, const unsigned char *value, int len); +int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass); +int PKCS12_add_safe_ex(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass, + OSSL_LIB_CTX *ctx, const char *propq); + +PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); +PKCS12 *PKCS12_add_safes_ex(STACK_OF(PKCS7) *safes, int p7_nid, + OSSL_LIB_CTX *ctx, const char *propq); + +int i2d_PKCS12_bio(BIO *bp, const PKCS12 *p12); +# ifndef OPENSSL_NO_STDIO +int i2d_PKCS12_fp(FILE *fp, const PKCS12 *p12); +# endif +PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12); +# ifndef OPENSSL_NO_STDIO +PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); +# endif +int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/pkcs12err.h b/include/openssl/pkcs12err.h new file mode 100644 index 0000000..933c832 --- /dev/null +++ b/include/openssl/pkcs12err.h @@ -0,0 +1,45 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_PKCS12ERR_H +# define OPENSSL_PKCS12ERR_H +# pragma once + +# include +# include +# include + + + +/* + * PKCS12 reason codes. + */ +# define PKCS12_R_CANT_PACK_STRUCTURE 100 +# define PKCS12_R_CONTENT_TYPE_NOT_DATA 121 +# define PKCS12_R_DECODE_ERROR 101 +# define PKCS12_R_ENCODE_ERROR 102 +# define PKCS12_R_ENCRYPT_ERROR 103 +# define PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE 120 +# define PKCS12_R_INVALID_NULL_ARGUMENT 104 +# define PKCS12_R_INVALID_NULL_PKCS12_POINTER 105 +# define PKCS12_R_INVALID_TYPE 112 +# 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_CIPHERFINAL_ERROR 116 +# define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118 +# define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119 + +#endif diff --git a/include/openssl/pkcs7.h b/include/openssl/pkcs7.h new file mode 100644 index 0000000..e22771c --- /dev/null +++ b/include/openssl/pkcs7.h @@ -0,0 +1,430 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/pkcs7.h.in + * + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_PKCS7_H +# define OPENSSL_PKCS7_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_PKCS7_H +# endif + +# include +# include +# include + +# include +# include +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/*- +Encryption_ID DES-CBC +Digest_ID MD5 +Digest_Encryption_ID rsaEncryption +Key_Encryption_ID rsaEncryption +*/ + +typedef struct PKCS7_CTX_st { + OSSL_LIB_CTX *libctx; + char *propq; +} PKCS7_CTX; + +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; + const PKCS7_CTX *ctx; +} PKCS7_SIGNER_INFO; +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO) +#define sk_PKCS7_SIGNER_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_value(sk, idx) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_SIGNER_INFO_new(cmp) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) +#define sk_PKCS7_SIGNER_INFO_new_null() ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_SIGNER_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_SIGNER_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (n)) +#define sk_PKCS7_SIGNER_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_delete(sk, i) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (i))) +#define sk_PKCS7_SIGNER_INFO_delete_ptr(sk, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_pop(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_shift(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk),ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_SIGNER_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), (idx)) +#define sk_PKCS7_SIGNER_INFO_set(sk, idx, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (idx), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) +#define sk_PKCS7_SIGNER_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) +#define sk_PKCS7_SIGNER_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), pnum) +#define sk_PKCS7_SIGNER_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) +#define sk_PKCS7_SIGNER_INFO_dup(sk) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk))) +#define sk_PKCS7_SIGNER_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_SIGNER_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_SIGNER_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) + + +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 */ + const PKCS7_CTX *ctx; +} PKCS7_RECIP_INFO; +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INFO) +#define sk_PKCS7_RECIP_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_value(sk, idx) ((PKCS7_RECIP_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), (idx))) +#define sk_PKCS7_RECIP_INFO_new(cmp) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) +#define sk_PKCS7_RECIP_INFO_new_null() ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_RECIP_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp), (n))) +#define sk_PKCS7_RECIP_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (n)) +#define sk_PKCS7_RECIP_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_delete(sk, i) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (i))) +#define sk_PKCS7_RECIP_INFO_delete_ptr(sk, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_pop(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_shift(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk),ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc)) +#define sk_PKCS7_RECIP_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), (idx)) +#define sk_PKCS7_RECIP_INFO_set(sk, idx, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (idx), ossl_check_PKCS7_RECIP_INFO_type(ptr))) +#define sk_PKCS7_RECIP_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) +#define sk_PKCS7_RECIP_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), pnum) +#define sk_PKCS7_RECIP_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) +#define sk_PKCS7_RECIP_INFO_dup(sk) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk))) +#define sk_PKCS7_RECIP_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc))) +#define sk_PKCS7_RECIP_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_RECIP_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) + + + +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; + const PKCS7_CTX *ctx; +} 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_CTX ctx; +} PKCS7; +SKM_DEFINE_STACK_OF_INTERNAL(PKCS7, PKCS7, PKCS7) +#define sk_PKCS7_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_value(sk, idx) ((PKCS7 *)OPENSSL_sk_value(ossl_check_const_PKCS7_sk_type(sk), (idx))) +#define sk_PKCS7_new(cmp) ((STACK_OF(PKCS7) *)OPENSSL_sk_new(ossl_check_PKCS7_compfunc_type(cmp))) +#define sk_PKCS7_new_null() ((STACK_OF(PKCS7) *)OPENSSL_sk_new_null()) +#define sk_PKCS7_new_reserve(cmp, n) ((STACK_OF(PKCS7) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_compfunc_type(cmp), (n))) +#define sk_PKCS7_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_sk_type(sk), (n)) +#define sk_PKCS7_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_delete(sk, i) ((PKCS7 *)OPENSSL_sk_delete(ossl_check_PKCS7_sk_type(sk), (i))) +#define sk_PKCS7_delete_ptr(sk, ptr) ((PKCS7 *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_pop(sk) ((PKCS7 *)OPENSSL_sk_pop(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_shift(sk) ((PKCS7 *)OPENSSL_sk_shift(ossl_check_PKCS7_sk_type(sk))) +#define sk_PKCS7_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_sk_type(sk),ossl_check_PKCS7_freefunc_type(freefunc)) +#define sk_PKCS7_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), (idx)) +#define sk_PKCS7_set(sk, idx, ptr) ((PKCS7 *)OPENSSL_sk_set(ossl_check_PKCS7_sk_type(sk), (idx), ossl_check_PKCS7_type(ptr))) +#define sk_PKCS7_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) +#define sk_PKCS7_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), pnum) +#define sk_PKCS7_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_sk_type(sk)) +#define sk_PKCS7_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_sk_type(sk)) +#define sk_PKCS7_dup(sk) ((STACK_OF(PKCS7) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_sk_type(sk))) +#define sk_PKCS7_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_sk_type(sk), ossl_check_PKCS7_copyfunc_type(copyfunc), ossl_check_PKCS7_freefunc_type(freefunc))) +#define sk_PKCS7_set_cmp_func(sk, cmp) ((sk_PKCS7_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_compfunc_type(cmp))) + + + +# 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, const PKCS7 *p7); +# endif +DECLARE_ASN1_DUP_FUNCTION(PKCS7) +PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); +int i2d_PKCS7_bio(BIO *bp, const 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) +PKCS7 *PKCS7_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +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_type_is_other(PKCS7 *p7); +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_get_octet_string(PKCS7 *p7); +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(const PKCS7_SIGNER_INFO *si, int nid); +ASN1_TYPE *PKCS7_get_signed_attribute(const 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 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags, OSSL_LIB_CTX *libctx, + const char *propq); + +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); +PKCS7 *PKCS7_encrypt_ex(STACK_OF(X509) *certs, BIO *in, + const EVP_CIPHER *cipher, int flags, + OSSL_LIB_CTX *libctx, const char *propq); +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_ex(BIO *bio, BIO **bcont, PKCS7 **p7); +PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); + +BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/pkcs7err.h b/include/openssl/pkcs7err.h new file mode 100644 index 0000000..ceb1a50 --- /dev/null +++ b/include/openssl/pkcs7err.h @@ -0,0 +1,63 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_PKCS7ERR_H +# define OPENSSL_PKCS7ERR_H +# pragma once + +# include +# include +# include + + + +/* + * PKCS7 reason codes. + */ +# define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117 +# define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144 +# define PKCS7_R_CIPHER_NOT_INITIALIZED 116 +# define PKCS7_R_CONTENT_AND_DATA_PRESENT 118 +# define PKCS7_R_CTRL_ERROR 152 +# define PKCS7_R_DECRYPT_ERROR 119 +# define PKCS7_R_DIGEST_FAILURE 101 +# define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149 +# define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150 +# define PKCS7_R_ERROR_ADDING_RECIPIENT 120 +# define PKCS7_R_ERROR_SETTING_CIPHER 121 +# define PKCS7_R_INVALID_NULL_POINTER 143 +# define PKCS7_R_INVALID_SIGNED_DATA_TYPE 155 +# define PKCS7_R_NO_CONTENT 122 +# define PKCS7_R_NO_DEFAULT_DIGEST 151 +# define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154 +# define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115 +# define PKCS7_R_NO_SIGNATURES_ON_DATA 123 +# define PKCS7_R_NO_SIGNERS 142 +# define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104 +# define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124 +# define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153 +# define PKCS7_R_PKCS7_DATASIGN 145 +# define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127 +# define PKCS7_R_SIGNATURE_FAILURE 105 +# define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128 +# define PKCS7_R_SIGNING_CTRL_FAILURE 147 +# define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148 +# define PKCS7_R_SMIME_TEXT_ERROR 129 +# define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106 +# define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107 +# define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108 +# define PKCS7_R_UNKNOWN_DIGEST_TYPE 109 +# define PKCS7_R_UNKNOWN_OPERATION 110 +# define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111 +# define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112 +# define PKCS7_R_WRONG_CONTENT_TYPE 113 +# define PKCS7_R_WRONG_PKCS7_TYPE 114 + +#endif diff --git a/include/openssl/prov_ssl.h b/include/openssl/prov_ssl.h new file mode 100644 index 0000000..d3e0896 --- /dev/null +++ b/include/openssl/prov_ssl.h @@ -0,0 +1,34 @@ +/* + * Copyright 2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_PROV_SSL_H +# define OPENSSL_PROV_SSL_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* SSL/TLS related defines useful to providers */ + +# define SSL_MAX_MASTER_KEY_LENGTH 48 + +# define SSL3_VERSION 0x0300 +# define TLS1_VERSION 0x0301 +# define TLS1_1_VERSION 0x0302 +# define TLS1_2_VERSION 0x0303 +# define TLS1_3_VERSION 0x0304 +# define DTLS1_VERSION 0xFEFF +# define DTLS1_2_VERSION 0xFEFD +# define DTLS1_BAD_VER 0x0100 + +# ifdef __cplusplus +} +# endif +#endif /* OPENSSL_PROV_SSL_H */ diff --git a/include/openssl/proverr.h b/include/openssl/proverr.h new file mode 100644 index 0000000..5d5c16d --- /dev/null +++ b/include/openssl/proverr.h @@ -0,0 +1,149 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_PROVERR_H +# define OPENSSL_PROVERR_H +# pragma once + +# include +# include +# include + + + +/* + * PROV reason codes. + */ +# define PROV_R_ADDITIONAL_INPUT_TOO_LONG 184 +# define PROV_R_ALGORITHM_MISMATCH 173 +# define PROV_R_ALREADY_INSTANTIATED 185 +# define PROV_R_BAD_DECRYPT 100 +# define PROV_R_BAD_ENCODING 141 +# define PROV_R_BAD_LENGTH 142 +# define PROV_R_BAD_TLS_CLIENT_VERSION 161 +# define PROV_R_BN_ERROR 160 +# define PROV_R_CIPHER_OPERATION_FAILED 102 +# define PROV_R_DERIVATION_FUNCTION_INIT_FAILED 205 +# define PROV_R_DIGEST_NOT_ALLOWED 174 +# define PROV_R_EMS_NOT_ENABLED 233 +# define PROV_R_ENTROPY_SOURCE_STRENGTH_TOO_WEAK 186 +# define PROV_R_ERROR_INSTANTIATING_DRBG 188 +# define PROV_R_ERROR_RETRIEVING_ENTROPY 189 +# define PROV_R_ERROR_RETRIEVING_NONCE 190 +# define PROV_R_FAILED_DURING_DERIVATION 164 +# define PROV_R_FAILED_TO_CREATE_LOCK 180 +# define PROV_R_FAILED_TO_DECRYPT 162 +# define PROV_R_FAILED_TO_GENERATE_KEY 121 +# define PROV_R_FAILED_TO_GET_PARAMETER 103 +# define PROV_R_FAILED_TO_SET_PARAMETER 104 +# define PROV_R_FAILED_TO_SIGN 175 +# define PROV_R_FIPS_MODULE_CONDITIONAL_ERROR 227 +# define PROV_R_FIPS_MODULE_ENTERING_ERROR_STATE 224 +# define PROV_R_FIPS_MODULE_IN_ERROR_STATE 225 +# define PROV_R_GENERATE_ERROR 191 +# define PROV_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 165 +# define PROV_R_INDICATOR_INTEGRITY_FAILURE 210 +# define PROV_R_INSUFFICIENT_DRBG_STRENGTH 181 +# define PROV_R_INVALID_AAD 108 +# define PROV_R_INVALID_CONFIG_DATA 211 +# define PROV_R_INVALID_CONSTANT_LENGTH 157 +# define PROV_R_INVALID_CURVE 176 +# define PROV_R_INVALID_CUSTOM_LENGTH 111 +# define PROV_R_INVALID_DATA 115 +# define PROV_R_INVALID_DIGEST 122 +# define PROV_R_INVALID_DIGEST_LENGTH 166 +# define PROV_R_INVALID_DIGEST_SIZE 218 +# define PROV_R_INVALID_INPUT_LENGTH 230 +# define PROV_R_INVALID_ITERATION_COUNT 123 +# define PROV_R_INVALID_IV_LENGTH 109 +# define PROV_R_INVALID_KEY 158 +# define PROV_R_INVALID_KEY_LENGTH 105 +# define PROV_R_INVALID_MAC 151 +# define PROV_R_INVALID_MGF1_MD 167 +# define PROV_R_INVALID_MODE 125 +# define PROV_R_INVALID_OUTPUT_LENGTH 217 +# define PROV_R_INVALID_PADDING_MODE 168 +# define PROV_R_INVALID_PUBINFO 198 +# define PROV_R_INVALID_SALT_LENGTH 112 +# define PROV_R_INVALID_SEED_LENGTH 154 +# define PROV_R_INVALID_SIGNATURE_SIZE 179 +# define PROV_R_INVALID_STATE 212 +# define PROV_R_INVALID_TAG 110 +# define PROV_R_INVALID_TAG_LENGTH 118 +# define PROV_R_INVALID_UKM_LENGTH 200 +# define PROV_R_INVALID_X931_DIGEST 170 +# define PROV_R_IN_ERROR_STATE 192 +# define PROV_R_KEY_SETUP_FAILED 101 +# define PROV_R_KEY_SIZE_TOO_SMALL 171 +# define PROV_R_LENGTH_TOO_LARGE 202 +# define PROV_R_MISMATCHING_DOMAIN_PARAMETERS 203 +# define PROV_R_MISSING_CEK_ALG 144 +# define PROV_R_MISSING_CIPHER 155 +# define PROV_R_MISSING_CONFIG_DATA 213 +# define PROV_R_MISSING_CONSTANT 156 +# define PROV_R_MISSING_KEY 128 +# define PROV_R_MISSING_MAC 150 +# define PROV_R_MISSING_MESSAGE_DIGEST 129 +# define PROV_R_MISSING_OID 209 +# define PROV_R_MISSING_PASS 130 +# define PROV_R_MISSING_SALT 131 +# define PROV_R_MISSING_SECRET 132 +# define PROV_R_MISSING_SEED 140 +# define PROV_R_MISSING_SESSION_ID 133 +# define PROV_R_MISSING_TYPE 134 +# define PROV_R_MISSING_XCGHASH 135 +# define PROV_R_MODULE_INTEGRITY_FAILURE 214 +# define PROV_R_NOT_A_PRIVATE_KEY 221 +# define PROV_R_NOT_A_PUBLIC_KEY 220 +# define PROV_R_NOT_INSTANTIATED 193 +# define PROV_R_NOT_PARAMETERS 226 +# define PROV_R_NOT_SUPPORTED 136 +# define PROV_R_NOT_XOF_OR_INVALID_LENGTH 113 +# define PROV_R_NO_KEY_SET 114 +# define PROV_R_NO_PARAMETERS_SET 177 +# define PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 178 +# define PROV_R_OUTPUT_BUFFER_TOO_SMALL 106 +# define PROV_R_PARENT_CANNOT_GENERATE_RANDOM_NUMBERS 228 +# define PROV_R_PARENT_CANNOT_SUPPLY_ENTROPY_SEED 187 +# define PROV_R_PARENT_LOCKING_NOT_ENABLED 182 +# define PROV_R_PARENT_STRENGTH_TOO_WEAK 194 +# define PROV_R_PATH_MUST_BE_ABSOLUTE 219 +# define PROV_R_PERSONALISATION_STRING_TOO_LONG 195 +# define PROV_R_PSS_SALTLEN_TOO_SMALL 172 +# define PROV_R_REQUEST_TOO_LARGE_FOR_DRBG 196 +# define PROV_R_REQUIRE_CTR_MODE_CIPHER 206 +# define PROV_R_RESEED_ERROR 197 +# define PROV_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 222 +# define PROV_R_SEED_SOURCES_MUST_NOT_HAVE_A_PARENT 229 +# define PROV_R_SELF_TEST_KAT_FAILURE 215 +# define PROV_R_SELF_TEST_POST_FAILURE 216 +# define PROV_R_TAG_NOT_NEEDED 120 +# define PROV_R_TAG_NOT_SET 119 +# define PROV_R_TOO_MANY_RECORDS 126 +# define PROV_R_UNABLE_TO_FIND_CIPHERS 207 +# define PROV_R_UNABLE_TO_GET_PARENT_STRENGTH 199 +# define PROV_R_UNABLE_TO_GET_PASSPHRASE 159 +# define PROV_R_UNABLE_TO_INITIALISE_CIPHERS 208 +# define PROV_R_UNABLE_TO_LOAD_SHA256 147 +# define PROV_R_UNABLE_TO_LOCK_PARENT 201 +# define PROV_R_UNABLE_TO_RESEED 204 +# define PROV_R_UNSUPPORTED_CEK_ALG 145 +# define PROV_R_UNSUPPORTED_KEY_SIZE 153 +# define PROV_R_UNSUPPORTED_MAC_TYPE 137 +# define PROV_R_UNSUPPORTED_NUMBER_OF_ROUNDS 152 +# define PROV_R_URI_AUTHORITY_UNSUPPORTED 223 +# define PROV_R_VALUE_ERROR 138 +# define PROV_R_WRONG_FINAL_BLOCK_LENGTH 107 +# define PROV_R_WRONG_OUTPUT_BUFFER_SIZE 139 +# define PROV_R_XOF_DIGESTS_NOT_ALLOWED 183 +# define PROV_R_XTS_DATA_UNIT_IS_TOO_LARGE 148 +# define PROV_R_XTS_DUPLICATED_KEYS 149 + +#endif diff --git a/include/openssl/provider.h b/include/openssl/provider.h new file mode 100644 index 0000000..dc86ff5 --- /dev/null +++ b/include/openssl/provider.h @@ -0,0 +1,60 @@ +/* + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_PROVIDER_H +# define OPENSSL_PROVIDER_H +# pragma once + +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/* Set the default provider search path */ +int OSSL_PROVIDER_set_default_search_path(OSSL_LIB_CTX *, const char *path); + +/* Load and unload a provider */ +OSSL_PROVIDER *OSSL_PROVIDER_load(OSSL_LIB_CTX *, const char *name); +OSSL_PROVIDER *OSSL_PROVIDER_try_load(OSSL_LIB_CTX *, const char *name, + int retain_fallbacks); +int OSSL_PROVIDER_unload(OSSL_PROVIDER *prov); +int OSSL_PROVIDER_available(OSSL_LIB_CTX *, const char *name); +int OSSL_PROVIDER_do_all(OSSL_LIB_CTX *ctx, + int (*cb)(OSSL_PROVIDER *provider, void *cbdata), + void *cbdata); + +const OSSL_PARAM *OSSL_PROVIDER_gettable_params(const OSSL_PROVIDER *prov); +int OSSL_PROVIDER_get_params(const OSSL_PROVIDER *prov, OSSL_PARAM params[]); +int OSSL_PROVIDER_self_test(const OSSL_PROVIDER *prov); +int OSSL_PROVIDER_get_capabilities(const OSSL_PROVIDER *prov, + const char *capability, + OSSL_CALLBACK *cb, + void *arg); + +const OSSL_ALGORITHM *OSSL_PROVIDER_query_operation(const OSSL_PROVIDER *prov, + int operation_id, + int *no_cache); +void OSSL_PROVIDER_unquery_operation(const OSSL_PROVIDER *prov, + int operation_id, const OSSL_ALGORITHM *algs); +void *OSSL_PROVIDER_get0_provider_ctx(const OSSL_PROVIDER *prov); +const OSSL_DISPATCH *OSSL_PROVIDER_get0_dispatch(const OSSL_PROVIDER *prov); + +/* Add a built in providers */ +int OSSL_PROVIDER_add_builtin(OSSL_LIB_CTX *, const char *name, + OSSL_provider_init_fn *init_fn); + +/* Information */ +const char *OSSL_PROVIDER_get0_name(const OSSL_PROVIDER *prov); + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/include/openssl/rand.h b/include/openssl/rand.h new file mode 100644 index 0000000..90e0f0a --- /dev/null +++ b/include/openssl/rand.h @@ -0,0 +1,125 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_RAND_H +# define OPENSSL_RAND_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_RAND_H +# endif + +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Default security strength (in the sense of [NIST SP 800-90Ar1]) + * + * NIST SP 800-90Ar1 supports the strength of the DRBG being smaller than that + * of the cipher by collecting less entropy. The current DRBG implementation + * does not take RAND_DRBG_STRENGTH into account and sets the strength of the + * DRBG to that of the cipher. + */ +# define RAND_DRBG_STRENGTH 256 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +struct rand_meth_st { + int (*seed) (const void *buf, int num); + int (*bytes) (unsigned char *buf, int num); + void (*cleanup) (void); + int (*add) (const void *buf, int num, double randomness); + int (*pseudorand) (unsigned char *buf, int num); + int (*status) (void); +}; + +OSSL_DEPRECATEDIN_3_0 int RAND_set_rand_method(const RAND_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const RAND_METHOD *RAND_get_rand_method(void); +# ifndef OPENSSL_NO_ENGINE +OSSL_DEPRECATEDIN_3_0 int RAND_set_rand_engine(ENGINE *engine); +# endif + +OSSL_DEPRECATEDIN_3_0 RAND_METHOD *RAND_OpenSSL(void); +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define RAND_cleanup() while(0) continue +# endif +int RAND_bytes(unsigned char *buf, int num); +int RAND_priv_bytes(unsigned char *buf, int num); + +/* + * Equivalent of RAND_priv_bytes() but additionally taking an OSSL_LIB_CTX and + * a strength. + */ +int RAND_priv_bytes_ex(OSSL_LIB_CTX *ctx, unsigned char *buf, size_t num, + unsigned int strength); + +/* + * Equivalent of RAND_bytes() but additionally taking an OSSL_LIB_CTX and + * a strength. + */ +int RAND_bytes_ex(OSSL_LIB_CTX *ctx, unsigned char *buf, size_t num, + unsigned int strength); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 int RAND_pseudo_bytes(unsigned char *buf, int num); +# endif + +EVP_RAND_CTX *RAND_get0_primary(OSSL_LIB_CTX *ctx); +EVP_RAND_CTX *RAND_get0_public(OSSL_LIB_CTX *ctx); +EVP_RAND_CTX *RAND_get0_private(OSSL_LIB_CTX *ctx); +int RAND_set0_public(OSSL_LIB_CTX *ctx, EVP_RAND_CTX *rand); +int RAND_set0_private(OSSL_LIB_CTX *ctx, EVP_RAND_CTX *rand); + +int RAND_set_DRBG_type(OSSL_LIB_CTX *ctx, const char *drbg, const char *propq, + const char *cipher, const char *digest); +int RAND_set_seed_source_type(OSSL_LIB_CTX *ctx, const char *seed, + const char *propq); + +void RAND_seed(const void *buf, int num); +void RAND_keep_random_devices_open(int keep); + +# if defined(__ANDROID__) && defined(__NDK_FPABI__) +__NDK_FPABI__ /* __attribute__((pcs("aapcs"))) on ARM */ +# endif +void RAND_add(const void *buf, int num, double randomness); +int RAND_load_file(const char *file, long max_bytes); +int RAND_write_file(const char *file); +const char *RAND_file_name(char *file, size_t num); +int RAND_status(void); + +# ifndef OPENSSL_NO_EGD +int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes); +int RAND_egd(const char *path); +int RAND_egd_bytes(const char *path, int bytes); +# endif + +int RAND_poll(void); + +# if defined(_WIN32) && (defined(BASETYPES) || defined(_WINDEF_H)) +/* application has to include in order to use these */ +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void RAND_screen(void); +OSSL_DEPRECATEDIN_1_1_0 int RAND_event(UINT, WPARAM, LPARAM); +# endif +# endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/openssl/randerr.h b/include/openssl/randerr.h new file mode 100644 index 0000000..b5e08e4 --- /dev/null +++ b/include/openssl/randerr.h @@ -0,0 +1,68 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_RANDERR_H +# define OPENSSL_RANDERR_H +# pragma once + +# include +# include +# include + + + +/* + * RAND reason codes. + */ +# define RAND_R_ADDITIONAL_INPUT_TOO_LONG 102 +# define RAND_R_ALREADY_INSTANTIATED 103 +# define RAND_R_ARGUMENT_OUT_OF_RANGE 105 +# define RAND_R_CANNOT_OPEN_FILE 121 +# define RAND_R_DRBG_ALREADY_INITIALIZED 129 +# define RAND_R_DRBG_NOT_INITIALISED 104 +# define RAND_R_ENTROPY_INPUT_TOO_LONG 106 +# define RAND_R_ENTROPY_OUT_OF_RANGE 124 +# define RAND_R_ERROR_ENTROPY_POOL_WAS_IGNORED 127 +# define RAND_R_ERROR_INITIALISING_DRBG 107 +# define RAND_R_ERROR_INSTANTIATING_DRBG 108 +# define RAND_R_ERROR_RETRIEVING_ADDITIONAL_INPUT 109 +# define RAND_R_ERROR_RETRIEVING_ENTROPY 110 +# define RAND_R_ERROR_RETRIEVING_NONCE 111 +# define RAND_R_FAILED_TO_CREATE_LOCK 126 +# define RAND_R_FUNC_NOT_IMPLEMENTED 101 +# define RAND_R_FWRITE_ERROR 123 +# define RAND_R_GENERATE_ERROR 112 +# define RAND_R_INSUFFICIENT_DRBG_STRENGTH 139 +# define RAND_R_INTERNAL_ERROR 113 +# define RAND_R_IN_ERROR_STATE 114 +# define RAND_R_NOT_A_REGULAR_FILE 122 +# define RAND_R_NOT_INSTANTIATED 115 +# define RAND_R_NO_DRBG_IMPLEMENTATION_SELECTED 128 +# define RAND_R_PARENT_LOCKING_NOT_ENABLED 130 +# define RAND_R_PARENT_STRENGTH_TOO_WEAK 131 +# define RAND_R_PERSONALISATION_STRING_TOO_LONG 116 +# define RAND_R_PREDICTION_RESISTANCE_NOT_SUPPORTED 133 +# define RAND_R_PRNG_NOT_SEEDED 100 +# define RAND_R_RANDOM_POOL_OVERFLOW 125 +# define RAND_R_RANDOM_POOL_UNDERFLOW 134 +# define RAND_R_REQUEST_TOO_LARGE_FOR_DRBG 117 +# define RAND_R_RESEED_ERROR 118 +# define RAND_R_SELFTEST_FAILURE 119 +# define RAND_R_TOO_LITTLE_NONCE_REQUESTED 135 +# define RAND_R_TOO_MUCH_NONCE_REQUESTED 136 +# define RAND_R_UNABLE_TO_CREATE_DRBG 143 +# define RAND_R_UNABLE_TO_FETCH_DRBG 144 +# define RAND_R_UNABLE_TO_GET_PARENT_RESEED_PROP_COUNTER 141 +# define RAND_R_UNABLE_TO_GET_PARENT_STRENGTH 138 +# define RAND_R_UNABLE_TO_LOCK_PARENT 140 +# define RAND_R_UNSUPPORTED_DRBG_FLAGS 132 +# define RAND_R_UNSUPPORTED_DRBG_TYPE 120 + +#endif diff --git a/include/openssl/rc2.h b/include/openssl/rc2.h new file mode 100644 index 0000000..ff633fd --- /dev/null +++ b/include/openssl/rc2.h @@ -0,0 +1,68 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_RC2_H +# define OPENSSL_RC2_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_RC2_H +# endif + +# include + +# ifndef OPENSSL_NO_RC2 +# ifdef __cplusplus +extern "C" { +# endif + +# define RC2_BLOCK 8 +# define RC2_KEY_LENGTH 16 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef unsigned int RC2_INT; + +# define RC2_ENCRYPT 1 +# define RC2_DECRYPT 0 + +typedef struct rc2_key_st { + RC2_INT data[64]; +} RC2_KEY; +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 void RC2_set_key(RC2_KEY *key, int len, + const unsigned char *data, int bits); +OSSL_DEPRECATEDIN_3_0 void RC2_ecb_encrypt(const unsigned char *in, + unsigned char *out, RC2_KEY *key, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_encrypt(unsigned long *data, RC2_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC2_decrypt(unsigned long *data, RC2_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC2_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *ks, unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_cfb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *schedule, + unsigned char *ivec, + int *num, int enc); +OSSL_DEPRECATEDIN_3_0 void RC2_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC2_KEY *schedule, + unsigned char *ivec, + int *num); +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/include/openssl/rc4.h b/include/openssl/rc4.h new file mode 100644 index 0000000..600b288 --- /dev/null +++ b/include/openssl/rc4.h @@ -0,0 +1,47 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_RC4_H +# define OPENSSL_RC4_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_RC4_H +# endif + +# include + +# ifndef OPENSSL_NO_RC4 +# include +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct rc4_key_st { + RC4_INT x, y; + RC4_INT data[256]; +} RC4_KEY; +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 const char *RC4_options(void); +OSSL_DEPRECATEDIN_3_0 void RC4_set_key(RC4_KEY *key, int len, + const unsigned char *data); +OSSL_DEPRECATEDIN_3_0 void RC4(RC4_KEY *key, size_t len, + const unsigned char *indata, + unsigned char *outdata); +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/include/openssl/rc5.h b/include/openssl/rc5.h new file mode 100644 index 0000000..de83352 --- /dev/null +++ b/include/openssl/rc5.h @@ -0,0 +1,79 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_RC5_H +# define OPENSSL_RC5_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_RC5_H +# endif + +# include + +# ifndef OPENSSL_NO_RC5 +# ifdef __cplusplus +extern "C" { +# endif + +# define RC5_32_BLOCK 8 +# define RC5_32_KEY_LENGTH 16/* This is a default, max is 255 */ + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define RC5_ENCRYPT 1 +# define RC5_DECRYPT 0 + +# define RC5_32_INT unsigned int + +/* + * 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; +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RC5_32_set_key(RC5_32_KEY *key, int len, + const unsigned char *data, + int rounds); +OSSL_DEPRECATEDIN_3_0 void RC5_32_ecb_encrypt(const unsigned char *in, + unsigned char *out, + RC5_32_KEY *key, + int enc); +OSSL_DEPRECATEDIN_3_0 void RC5_32_encrypt(unsigned long *data, RC5_32_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC5_32_decrypt(unsigned long *data, RC5_32_KEY *key); +OSSL_DEPRECATEDIN_3_0 void RC5_32_cbc_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *ks, unsigned char *iv, + int enc); +OSSL_DEPRECATEDIN_3_0 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); +OSSL_DEPRECATEDIN_3_0 void RC5_32_ofb64_encrypt(const unsigned char *in, + unsigned char *out, long length, + RC5_32_KEY *schedule, + unsigned char *ivec, int *num); +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/include/openssl/ripemd.h b/include/openssl/ripemd.h new file mode 100644 index 0000000..900ee31 --- /dev/null +++ b/include/openssl/ripemd.h @@ -0,0 +1,59 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_RIPEMD_H +# define OPENSSL_RIPEMD_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_RIPEMD_H +# endif + +# include + +# ifndef OPENSSL_NO_RMD160 +# include +# include + +# define RIPEMD160_DIGEST_LENGTH 20 + +# ifdef __cplusplus +extern "C" { +# endif +# if !defined(OPENSSL_NO_DEPRECATED_3_0) + +# define RIPEMD160_LONG unsigned int + +# define RIPEMD160_CBLOCK 64 +# define RIPEMD160_LBLOCK (RIPEMD160_CBLOCK/4) + +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; +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Init(RIPEMD160_CTX *c); +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, + size_t len); +OSSL_DEPRECATEDIN_3_0 int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *RIPEMD160(const unsigned char *d, size_t n, + unsigned char *md); +OSSL_DEPRECATEDIN_3_0 void RIPEMD160_Transform(RIPEMD160_CTX *c, + const unsigned char *b); +# endif + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/include/openssl/rsa.h b/include/openssl/rsa.h new file mode 100644 index 0000000..d0c9599 --- /dev/null +++ b/include/openssl/rsa.h @@ -0,0 +1,610 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_RSA_H +# define OPENSSL_RSA_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_RSA_H +# endif + +# include + +# include +# include +# include +# include +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# include +# endif +# include +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif + +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_RSA_MAX_MODULUS_BITS +# define OPENSSL_RSA_MAX_MODULUS_BITS 16384 +# endif + +# define RSA_3 0x3L +# define RSA_F4 0x10001L + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/* The types RSA and RSA_METHOD are defined in ossl_typ.h */ + +# define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 2048 + +# ifndef OPENSSL_RSA_SMALL_MODULUS_BITS +# define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 +# endif + +/* exponent limit enforced for "large" modulus only */ +# ifndef OPENSSL_RSA_MAX_PUBEXP_BITS +# define OPENSSL_RSA_MAX_PUBEXP_BITS 64 +# endif +/* based on RFC 8017 appendix A.1.2 */ +# define RSA_ASN1_VERSION_DEFAULT 0 +# define RSA_ASN1_VERSION_MULTI 1 + +# define RSA_DEFAULT_PRIME_NUM 2 + +# define RSA_METHOD_FLAG_NO_CHECK 0x0001 +# 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 +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define RSA_FLAG_NO_CONSTTIME 0x0000 +# endif +/* 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. + */ +# ifndef OPENSSL_NO_DEPRECATED_0_9_8 +# define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME +# endif + +/*- + * New with 3.0: use part of the flags to denote exact type of RSA key, + * some of which are limited to specific signature and encryption schemes. + * These different types share the same RSA structure, but indicate the + * use of certain fields in that structure. + * Currently known are: + * RSA - this is the "normal" unlimited RSA structure (typenum 0) + * RSASSA-PSS - indicates that the PSS parameters are used. + * RSAES-OAEP - no specific field used for the moment, but OAEP padding + * is expected. (currently unused) + * + * 4 bits allow for 16 types + */ +# define RSA_FLAG_TYPE_MASK 0xF000 +# define RSA_FLAG_TYPE_RSA 0x0000 +# define RSA_FLAG_TYPE_RSASSAPSS 0x1000 +# define RSA_FLAG_TYPE_RSAESOAEP 0x2000 + +int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int pad_mode); +int EVP_PKEY_CTX_get_rsa_padding(EVP_PKEY_CTX *ctx, int *pad_mode); + +int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +int EVP_PKEY_CTX_get_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int *saltlen); + +int EVP_PKEY_CTX_set_rsa_keygen_bits(EVP_PKEY_CTX *ctx, int bits); +int EVP_PKEY_CTX_set1_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); +int EVP_PKEY_CTX_set_rsa_keygen_primes(EVP_PKEY_CTX *ctx, int primes); +int EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(EVP_PKEY_CTX *ctx, int saltlen); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp); +# endif + +/* Salt length matches digest */ +# define RSA_PSS_SALTLEN_DIGEST -1 +/* Verify only: auto detect salt length */ +# define RSA_PSS_SALTLEN_AUTO -2 +/* Set salt length to maximum possible */ +# define RSA_PSS_SALTLEN_MAX -3 +/* Auto-detect on verify, set salt length to min(maximum possible, digest + * length) on sign */ +# define RSA_PSS_SALTLEN_AUTO_DIGEST_MAX -4 +/* Old compatible max salt length for sign only */ +# define RSA_PSS_SALTLEN_MAX_SIGN -2 + +int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md_name(EVP_PKEY_CTX *ctx, + const char *mdname); + +int EVP_PKEY_CTX_set_rsa_pss_keygen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_pss_keygen_md_name(EVP_PKEY_CTX *ctx, + const char *mdname, + const char *mdprops); + +int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD *md); +int EVP_PKEY_CTX_set_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, const char *mdname, + const char *mdprops); +int EVP_PKEY_CTX_get_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD **md); +int EVP_PKEY_CTX_get_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, char *name, + size_t namelen); +int EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *ctx, void *label, int llen); +int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label); + +# define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5) + +# define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8) + +# define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 10) + +# define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 12) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) + +# define RSA_PKCS1_PADDING 1 +# define RSA_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_WITH_TLS_PADDING 7 + +# 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) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *RSA_new(void); +OSSL_DEPRECATEDIN_3_0 RSA *RSA_new_method(ENGINE *engine); +OSSL_DEPRECATEDIN_3_0 int RSA_bits(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_size(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_security_bits(const RSA *rsa); + +OSSL_DEPRECATEDIN_3_0 int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_crt_params(RSA *r, + BIGNUM *dmp1, BIGNUM *dmq1, + BIGNUM *iqmp); +OSSL_DEPRECATEDIN_3_0 int RSA_set0_multi_prime_params(RSA *r, + BIGNUM *primes[], + BIGNUM *exps[], + BIGNUM *coeffs[], + int pnum); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_key(const RSA *r, + const BIGNUM **n, const BIGNUM **e, + const BIGNUM **d); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_factors(const RSA *r, + const BIGNUM **p, const BIGNUM **q); +OSSL_DEPRECATEDIN_3_0 int RSA_get_multi_prime_extra_count(const RSA *r); +OSSL_DEPRECATEDIN_3_0 int RSA_get0_multi_prime_factors(const RSA *r, + const BIGNUM *primes[]); +OSSL_DEPRECATEDIN_3_0 void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, + const BIGNUM **dmq1, + const BIGNUM **iqmp); +OSSL_DEPRECATEDIN_3_0 +int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], + const BIGNUM *coeffs[]); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_n(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_e(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_d(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_p(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_q(const RSA *d); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_dmp1(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_dmq1(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const BIGNUM *RSA_get0_iqmp(const RSA *r); +OSSL_DEPRECATEDIN_3_0 const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); +OSSL_DEPRECATEDIN_3_0 void RSA_clear_flags(RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 int RSA_test_flags(const RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 void RSA_set_flags(RSA *r, int flags); +OSSL_DEPRECATEDIN_3_0 int RSA_get_version(RSA *r); +OSSL_DEPRECATEDIN_3_0 ENGINE *RSA_get0_engine(const RSA *r); +# endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +# define EVP_RSA_gen(bits) \ + EVP_PKEY_Q_keygen(NULL, NULL, "RSA", (size_t)(0 + (bits))) + +/* Deprecated version */ +# ifndef OPENSSL_NO_DEPRECATED_0_9_8 +OSSL_DEPRECATEDIN_0_9_8 RSA *RSA_generate_key(int bits, unsigned long e, void + (*callback) (int, int, void *), + void *cb_arg); +# endif + +/* New version */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb); +/* Multi-prime version */ +OSSL_DEPRECATEDIN_3_0 int RSA_generate_multi_prime_key(RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb); + +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 int RSA_X931_generate_key_ex(RSA *rsa, int bits, + const BIGNUM *e, + BN_GENCB *cb); + +OSSL_DEPRECATEDIN_3_0 int RSA_check_key(const RSA *); +OSSL_DEPRECATEDIN_3_0 int RSA_check_key_ex(const RSA *, BN_GENCB *cb); + /* next 4 return -1 on error */ +OSSL_DEPRECATEDIN_3_0 +int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r); +/* "up" the RSA object's reference count */ +OSSL_DEPRECATEDIN_3_0 int RSA_up_ref(RSA *r); +OSSL_DEPRECATEDIN_3_0 int RSA_flags(const RSA *r); + +OSSL_DEPRECATEDIN_3_0 void RSA_set_default_method(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_get_default_method(void); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_null_method(void); +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_get_method(const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); + +/* these are the actual RSA functions */ +OSSL_DEPRECATEDIN_3_0 const RSA_METHOD *RSA_PKCS1_OpenSSL(void); + +DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(OSSL_DEPRECATEDIN_3_0, + RSA, RSAPublicKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(OSSL_DEPRECATEDIN_3_0, + RSA, RSAPrivateKey) +# endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); + +struct rsa_pss_params_st { + X509_ALGOR *hashAlgorithm; + X509_ALGOR *maskGenAlgorithm; + ASN1_INTEGER *saltLength; + ASN1_INTEGER *trailerField; + /* Decoded hash algorithm from maskGenAlgorithm */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) +DECLARE_ASN1_DUP_FUNCTION(RSA_PSS_PARAMS) + +typedef struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; + /* Decoded hash algorithm from maskGenFunc */ + X509_ALGOR *maskHash; +} RSA_OAEP_PARAMS; + +DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_STDIO +OSSL_DEPRECATEDIN_3_0 int RSA_print_fp(FILE *fp, const RSA *r, int offset); +# endif + +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 int RSA_sign(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigret, + unsigned int *siglen, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 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 + */ +OSSL_DEPRECATEDIN_3_0 +int RSA_sign_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigbuf, unsigned int siglen, + RSA *rsa); + +OSSL_DEPRECATEDIN_3_0 int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 void RSA_blinding_off(RSA *rsa); +OSSL_DEPRECATEDIN_3_0 BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); + +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int PKCS1_MGF1(unsigned char *mask, long len, + const unsigned char *seed, long seedlen, + const EVP_MD *dgst); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, + const unsigned char *p, int pl); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_add_none(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_check_none(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_add_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl); +OSSL_DEPRECATEDIN_3_0 int RSA_padding_check_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +OSSL_DEPRECATEDIN_3_0 int RSA_X931_hash_id(int nid); + +OSSL_DEPRECATEDIN_3_0 +int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const unsigned char *EM, + int sLen); +OSSL_DEPRECATEDIN_3_0 +int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, const EVP_MD *Hash, + int sLen); + +OSSL_DEPRECATEDIN_3_0 +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); + +OSSL_DEPRECATEDIN_3_0 +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) +OSSL_DEPRECATEDIN_3_0 int RSA_set_ex_data(RSA *r, int idx, void *arg); +OSSL_DEPRECATEDIN_3_0 void *RSA_get_ex_data(const RSA *r, int idx); + +DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSAPublicKey) +DECLARE_ASN1_DUP_FUNCTION_name_attr(OSSL_DEPRECATEDIN_3_0, RSA, RSAPrivateKey) + +/* + * 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 + +OSSL_DEPRECATEDIN_3_0 RSA_METHOD *RSA_meth_new(const char *name, int flags); +OSSL_DEPRECATEDIN_3_0 void RSA_meth_free(RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 const char *RSA_meth_get0_name(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set1_name(RSA_METHOD *meth, + const char *name); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_get_flags(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set_flags(RSA_METHOD *meth, int flags); +OSSL_DEPRECATEDIN_3_0 void *RSA_meth_get0_app_data(const RSA_METHOD *meth); +OSSL_DEPRECATEDIN_3_0 int RSA_meth_set0_app_data(RSA_METHOD *meth, + void *app_data); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth)) (int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +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)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth)) (int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +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)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth)) (int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +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)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth)) (int flen, + const unsigned char *from, + unsigned char *to, + RSA *rsa, int padding); +OSSL_DEPRECATEDIN_3_0 +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)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth)) (BIGNUM *r0, + const BIGNUM *i, + RSA *rsa, BN_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_mod_exp(RSA_METHOD *rsa, + int (*mod_exp) (BIGNUM *r0, const BIGNUM *i, RSA *rsa, + BN_CTX *ctx)); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_init(const RSA_METHOD *meth)) (RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_init(RSA_METHOD *rsa, int (*init) (RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_finish(const RSA_METHOD *meth)) (RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish) (RSA *rsa)); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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)); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_keygen(const RSA_METHOD *meth)) (RSA *rsa, int bits, + BIGNUM *e, BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_keygen(RSA_METHOD *rsa, + int (*keygen) (RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb)); +OSSL_DEPRECATEDIN_3_0 +int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth)) (RSA *rsa, + int bits, + int primes, + BIGNUM *e, + BN_GENCB *cb); +OSSL_DEPRECATEDIN_3_0 +int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, + int (*keygen) (RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb)); +#endif /* !OPENSSL_NO_DEPRECATED_3_0 */ + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/rsaerr.h b/include/openssl/rsaerr.h new file mode 100644 index 0000000..c58463c --- /dev/null +++ b/include/openssl/rsaerr.h @@ -0,0 +1,107 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_RSAERR_H +# define OPENSSL_RSAERR_H +# pragma once + +# include +# include +# include + + + +/* + * RSA reason codes. + */ +# define RSA_R_ALGORITHM_MISMATCH 100 +# define RSA_R_BAD_E_VALUE 101 +# define RSA_R_BAD_FIXED_HEADER_DECRYPT 102 +# define RSA_R_BAD_PAD_BYTE_COUNT 103 +# define RSA_R_BAD_SIGNATURE 104 +# define RSA_R_BLOCK_TYPE_IS_NOT_01 106 +# define RSA_R_BLOCK_TYPE_IS_NOT_02 107 +# define RSA_R_DATA_GREATER_THAN_MOD_LEN 108 +# define RSA_R_DATA_TOO_LARGE 109 +# define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110 +# define RSA_R_DATA_TOO_LARGE_FOR_MODULUS 132 +# define RSA_R_DATA_TOO_SMALL 111 +# define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE 122 +# define RSA_R_DIGEST_DOES_NOT_MATCH 158 +# define RSA_R_DIGEST_NOT_ALLOWED 145 +# define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY 112 +# define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124 +# define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125 +# define RSA_R_D_E_NOT_CONGRUENT_TO_1 123 +# define RSA_R_FIRST_OCTET_INVALID 133 +# define RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 144 +# define RSA_R_INVALID_DIGEST 157 +# define RSA_R_INVALID_DIGEST_LENGTH 143 +# define RSA_R_INVALID_HEADER 137 +# define RSA_R_INVALID_KEYPAIR 171 +# define RSA_R_INVALID_KEY_LENGTH 173 +# define RSA_R_INVALID_LABEL 160 +# define RSA_R_INVALID_LENGTH 181 +# define RSA_R_INVALID_MESSAGE_LENGTH 131 +# define RSA_R_INVALID_MGF1_MD 156 +# define RSA_R_INVALID_MODULUS 174 +# define RSA_R_INVALID_MULTI_PRIME_KEY 167 +# define RSA_R_INVALID_OAEP_PARAMETERS 161 +# define RSA_R_INVALID_PADDING 138 +# define RSA_R_INVALID_PADDING_MODE 141 +# define RSA_R_INVALID_PSS_PARAMETERS 149 +# define RSA_R_INVALID_PSS_SALTLEN 146 +# define RSA_R_INVALID_REQUEST 175 +# define RSA_R_INVALID_SALT_LENGTH 150 +# define RSA_R_INVALID_STRENGTH 176 +# define RSA_R_INVALID_TRAILER 139 +# define RSA_R_INVALID_X931_DIGEST 142 +# define RSA_R_IQMP_NOT_INVERSE_OF_Q 126 +# define RSA_R_KEY_PRIME_NUM_INVALID 165 +# define RSA_R_KEY_SIZE_TOO_SMALL 120 +# define RSA_R_LAST_OCTET_INVALID 134 +# define RSA_R_MGF1_DIGEST_NOT_ALLOWED 152 +# define RSA_R_MISSING_PRIVATE_KEY 179 +# define RSA_R_MODULUS_TOO_LARGE 105 +# define RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R 168 +# define RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D 169 +# define RSA_R_MP_R_NOT_PRIME 170 +# define RSA_R_NO_PUBLIC_EXPONENT 140 +# define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 +# define RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES 172 +# define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 +# define RSA_R_OAEP_DECODING_ERROR 121 +# define RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 148 +# define RSA_R_PADDING_CHECK_FAILED 114 +# define RSA_R_PAIRWISE_TEST_FAILURE 177 +# define RSA_R_PKCS_DECODING_ERROR 159 +# define RSA_R_PSS_SALTLEN_TOO_SMALL 164 +# define RSA_R_PUB_EXPONENT_OUT_OF_RANGE 178 +# define RSA_R_P_NOT_PRIME 128 +# define RSA_R_Q_NOT_PRIME 129 +# define RSA_R_RANDOMNESS_SOURCE_STRENGTH_INSUFFICIENT 180 +# define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130 +# define RSA_R_SLEN_CHECK_FAILED 136 +# define RSA_R_SLEN_RECOVERY_FAILED 135 +# define RSA_R_SSLV3_ROLLBACK_ATTACK 115 +# define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116 +# define RSA_R_UNKNOWN_ALGORITHM_TYPE 117 +# define RSA_R_UNKNOWN_DIGEST 166 +# define RSA_R_UNKNOWN_MASK_DIGEST 151 +# define RSA_R_UNKNOWN_PADDING_TYPE 118 +# define RSA_R_UNSUPPORTED_ENCRYPTION_TYPE 162 +# define RSA_R_UNSUPPORTED_LABEL_SOURCE 163 +# define RSA_R_UNSUPPORTED_MASK_ALGORITHM 153 +# define RSA_R_UNSUPPORTED_MASK_PARAMETER 154 +# define RSA_R_UNSUPPORTED_SIGNATURE_TYPE 155 +# define RSA_R_VALUE_MISSING 147 +# define RSA_R_WRONG_SIGNATURE_LENGTH 119 + +#endif diff --git a/include/openssl/safestack.h b/include/openssl/safestack.h new file mode 100644 index 0000000..3308089 --- /dev/null +++ b/include/openssl/safestack.h @@ -0,0 +1,297 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/safestack.h.in + * + * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_SAFESTACK_H +# define OPENSSL_SAFESTACK_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_SAFESTACK_H +# endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define STACK_OF(type) struct stack_st_##type + +/* Helper macro for internal use */ +# define SKM_DEFINE_STACK_OF_INTERNAL(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 * const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 *a); \ + typedef t3 * (*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_unused ossl_inline t2 *ossl_check_##t1##_type(t2 *ptr) \ + { \ + return ptr; \ + } \ + static ossl_unused ossl_inline const OPENSSL_STACK *ossl_check_const_##t1##_sk_type(const STACK_OF(t1) *sk) \ + { \ + return (const OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_STACK *ossl_check_##t1##_sk_type(STACK_OF(t1) *sk) \ + { \ + return (OPENSSL_STACK *)sk; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_compfunc ossl_check_##t1##_compfunc_type(sk_##t1##_compfunc cmp) \ + { \ + return (OPENSSL_sk_compfunc)cmp; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_copyfunc ossl_check_##t1##_copyfunc_type(sk_##t1##_copyfunc cpy) \ + { \ + return (OPENSSL_sk_copyfunc)cpy; \ + } \ + static ossl_unused ossl_inline OPENSSL_sk_freefunc ossl_check_##t1##_freefunc_type(sk_##t1##_freefunc fr) \ + { \ + return (OPENSSL_sk_freefunc)fr; \ + } + +# define SKM_DEFINE_STACK_OF(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 * const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 *a); \ + typedef t3 * (*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + { \ + return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + { \ + return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_free((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + { \ + return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ + (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + { \ + OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + { \ + return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_all(STACK_OF(t1) *sk, t2 *ptr, int *pnum) \ + { \ + return OPENSSL_sk_find_all((OPENSSL_STACK *)sk, (const void *)ptr, pnum); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) * sk_##t1##_dup(const STACK_OF(t1) *sk) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + sk_##t1##_copyfunc copyfunc, \ + sk_##t1##_freefunc freefunc) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, \ + (OPENSSL_sk_copyfunc)copyfunc, \ + (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + { \ + return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ + } + +# define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) +# define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) +# define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) +# define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ + SKM_DEFINE_STACK_OF(t1, const t2, t2) + +/*- + * 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. + */ +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_STRING, char, char) +#define sk_OPENSSL_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_value(sk, idx) ((char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_STRING_sk_type(sk), (idx))) +#define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +#define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_STRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_STRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_STRING_sk_type(sk), (n)) +#define sk_OPENSSL_STRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_delete(sk, i) ((char *)OPENSSL_sk_delete(ossl_check_OPENSSL_STRING_sk_type(sk), (i))) +#define sk_OPENSSL_STRING_delete_ptr(sk, ptr) ((char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_pop(sk) ((char *)OPENSSL_sk_pop(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_shift(sk) ((char *)OPENSSL_sk_shift(ossl_check_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_STRING_sk_type(sk),ossl_check_OPENSSL_STRING_freefunc_type(freefunc)) +#define sk_OPENSSL_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), (idx)) +#define sk_OPENSSL_STRING_set(sk, idx, ptr) ((char *)OPENSSL_sk_set(ossl_check_OPENSSL_STRING_sk_type(sk), (idx), ossl_check_OPENSSL_STRING_type(ptr))) +#define sk_OPENSSL_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) +#define sk_OPENSSL_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), pnum) +#define sk_OPENSSL_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_STRING_sk_type(sk)) +#define sk_OPENSSL_STRING_dup(sk) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_STRING_sk_type(sk))) +#define sk_OPENSSL_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_STRING_freefunc_type(freefunc))) +#define sk_OPENSSL_STRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_CSTRING, const char, char) +#define sk_OPENSSL_CSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_value(sk, idx) ((const char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), (idx))) +#define sk_OPENSSL_CSTRING_new(cmp) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) +#define sk_OPENSSL_CSTRING_new_null() ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_CSTRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp), (n))) +#define sk_OPENSSL_CSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_CSTRING_sk_type(sk), (n)) +#define sk_OPENSSL_CSTRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_delete(sk, i) ((const char *)OPENSSL_sk_delete(ossl_check_OPENSSL_CSTRING_sk_type(sk), (i))) +#define sk_OPENSSL_CSTRING_delete_ptr(sk, ptr) ((const char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_pop(sk) ((const char *)OPENSSL_sk_pop(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_shift(sk) ((const char *)OPENSSL_sk_shift(ossl_check_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_CSTRING_sk_type(sk),ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc)) +#define sk_OPENSSL_CSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), (idx)) +#define sk_OPENSSL_CSTRING_set(sk, idx, ptr) ((const char *)OPENSSL_sk_set(ossl_check_OPENSSL_CSTRING_sk_type(sk), (idx), ossl_check_OPENSSL_CSTRING_type(ptr))) +#define sk_OPENSSL_CSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) +#define sk_OPENSSL_CSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), pnum) +#define sk_OPENSSL_CSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) +#define sk_OPENSSL_CSTRING_dup(sk) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))) +#define sk_OPENSSL_CSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc))) +#define sk_OPENSSL_CSTRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_CSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) + + +#if !defined(OPENSSL_NO_DEPRECATED_3_0) +/* + * This is not used by OpenSSL. A block of bytes, NOT nul-terminated. + * These should also be distinguished from "normal" stacks. + */ +typedef void *OPENSSL_BLOCK; +SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_BLOCK, void, void) +#define sk_OPENSSL_BLOCK_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), (idx))) +#define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) +#define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_null()) +#define sk_OPENSSL_BLOCK_new_reserve(cmp, n) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp), (n))) +#define sk_OPENSSL_BLOCK_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_BLOCK_sk_type(sk), (n)) +#define sk_OPENSSL_BLOCK_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_OPENSSL_BLOCK_sk_type(sk), (i))) +#define sk_OPENSSL_BLOCK_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_BLOCK_sk_type(sk),ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc)) +#define sk_OPENSSL_BLOCK_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), (idx)) +#define sk_OPENSSL_BLOCK_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_OPENSSL_BLOCK_sk_type(sk), (idx), ossl_check_OPENSSL_BLOCK_type(ptr))) +#define sk_OPENSSL_BLOCK_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) +#define sk_OPENSSL_BLOCK_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), pnum) +#define sk_OPENSSL_BLOCK_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) +#define sk_OPENSSL_BLOCK_dup(sk) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))) +#define sk_OPENSSL_BLOCK_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_copyfunc_type(copyfunc), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc))) +#define sk_OPENSSL_BLOCK_set_cmp_func(sk, cmp) ((sk_OPENSSL_BLOCK_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) + +#endif + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/seed.h b/include/openssl/seed.h new file mode 100644 index 0000000..edb218a --- /dev/null +++ b/include/openssl/seed.h @@ -0,0 +1,113 @@ +/* + * Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with 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 OPENSSL_SEED_H +# define OPENSSL_SEED_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_SEED_H +# endif + +# include + +# ifndef OPENSSL_NO_SEED +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# define SEED_BLOCK_SIZE 16 +# define SEED_KEY_LENGTH 16 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/* look whether we need 'long' to get 32 bits */ +# ifdef AES_LONG +# ifndef SEED_LONG +# define SEED_LONG 1 +# endif +# endif + + +typedef struct seed_key_st { +# ifdef SEED_LONG + unsigned long data[32]; +# else + unsigned int data[32]; +# endif +} SEED_KEY_SCHEDULE; +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], + SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +OSSL_DEPRECATEDIN_3_0 +void SEED_ecb_encrypt(const unsigned char *in, + unsigned char *out, + const SEED_KEY_SCHEDULE *ks, int enc); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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); +OSSL_DEPRECATEDIN_3_0 +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); +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/include/openssl/self_test.h b/include/openssl/self_test.h new file mode 100644 index 0000000..337a319 --- /dev/null +++ b/include/openssl/self_test.h @@ -0,0 +1,94 @@ +/* + * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_SELF_TEST_H +# define OPENSSL_SELF_TEST_H +# pragma once + +# include /* OSSL_CALLBACK */ + +# ifdef __cplusplus +extern "C" { +# endif + +/* The test event phases */ +# define OSSL_SELF_TEST_PHASE_NONE "None" +# define OSSL_SELF_TEST_PHASE_START "Start" +# define OSSL_SELF_TEST_PHASE_CORRUPT "Corrupt" +# define OSSL_SELF_TEST_PHASE_PASS "Pass" +# define OSSL_SELF_TEST_PHASE_FAIL "Fail" + +/* Test event categories */ +# define OSSL_SELF_TEST_TYPE_NONE "None" +# define OSSL_SELF_TEST_TYPE_MODULE_INTEGRITY "Module_Integrity" +# define OSSL_SELF_TEST_TYPE_INSTALL_INTEGRITY "Install_Integrity" +# define OSSL_SELF_TEST_TYPE_CRNG "Continuous_RNG_Test" +# define OSSL_SELF_TEST_TYPE_PCT "Conditional_PCT" +# define OSSL_SELF_TEST_TYPE_PCT_KAT "Conditional_KAT" +# define OSSL_SELF_TEST_TYPE_KAT_INTEGRITY "KAT_Integrity" +# define OSSL_SELF_TEST_TYPE_KAT_CIPHER "KAT_Cipher" +# define OSSL_SELF_TEST_TYPE_KAT_ASYM_CIPHER "KAT_AsymmetricCipher" +# define OSSL_SELF_TEST_TYPE_KAT_DIGEST "KAT_Digest" +# define OSSL_SELF_TEST_TYPE_KAT_SIGNATURE "KAT_Signature" +# define OSSL_SELF_TEST_TYPE_PCT_SIGNATURE "PCT_Signature" +# define OSSL_SELF_TEST_TYPE_KAT_KDF "KAT_KDF" +# define OSSL_SELF_TEST_TYPE_KAT_KA "KAT_KA" +# define OSSL_SELF_TEST_TYPE_DRBG "DRBG" + +/* Test event sub categories */ +# define OSSL_SELF_TEST_DESC_NONE "None" +# define OSSL_SELF_TEST_DESC_INTEGRITY_HMAC "HMAC" +# define OSSL_SELF_TEST_DESC_PCT_RSA_PKCS1 "RSA" +# define OSSL_SELF_TEST_DESC_PCT_ECDSA "ECDSA" +# define OSSL_SELF_TEST_DESC_PCT_DSA "DSA" +# define OSSL_SELF_TEST_DESC_CIPHER_AES_GCM "AES_GCM" +# define OSSL_SELF_TEST_DESC_CIPHER_AES_ECB "AES_ECB_Decrypt" +# define OSSL_SELF_TEST_DESC_CIPHER_TDES "TDES" +# define OSSL_SELF_TEST_DESC_ASYM_RSA_ENC "RSA_Encrypt" +# define OSSL_SELF_TEST_DESC_ASYM_RSA_DEC "RSA_Decrypt" +# define OSSL_SELF_TEST_DESC_MD_SHA1 "SHA1" +# define OSSL_SELF_TEST_DESC_MD_SHA2 "SHA2" +# define OSSL_SELF_TEST_DESC_MD_SHA3 "SHA3" +# define OSSL_SELF_TEST_DESC_SIGN_DSA "DSA" +# define OSSL_SELF_TEST_DESC_SIGN_RSA "RSA" +# define OSSL_SELF_TEST_DESC_SIGN_ECDSA "ECDSA" +# define OSSL_SELF_TEST_DESC_DRBG_CTR "CTR" +# define OSSL_SELF_TEST_DESC_DRBG_HASH "HASH" +# define OSSL_SELF_TEST_DESC_DRBG_HMAC "HMAC" +# define OSSL_SELF_TEST_DESC_KA_DH "DH" +# define OSSL_SELF_TEST_DESC_KA_ECDH "ECDH" +# define OSSL_SELF_TEST_DESC_KDF_HKDF "HKDF" +# define OSSL_SELF_TEST_DESC_KDF_SSKDF "SSKDF" +# define OSSL_SELF_TEST_DESC_KDF_X963KDF "X963KDF" +# define OSSL_SELF_TEST_DESC_KDF_X942KDF "X942KDF" +# define OSSL_SELF_TEST_DESC_KDF_PBKDF2 "PBKDF2" +# define OSSL_SELF_TEST_DESC_KDF_SSHKDF "SSHKDF" +# define OSSL_SELF_TEST_DESC_KDF_TLS12_PRF "TLS12_PRF" +# define OSSL_SELF_TEST_DESC_KDF_KBKDF "KBKDF" +# define OSSL_SELF_TEST_DESC_KDF_TLS13_EXTRACT "TLS13_KDF_EXTRACT" +# define OSSL_SELF_TEST_DESC_KDF_TLS13_EXPAND "TLS13_KDF_EXPAND" +# define OSSL_SELF_TEST_DESC_RNG "RNG" + +void OSSL_SELF_TEST_set_callback(OSSL_LIB_CTX *libctx, OSSL_CALLBACK *cb, + void *cbarg); +void OSSL_SELF_TEST_get_callback(OSSL_LIB_CTX *libctx, OSSL_CALLBACK **cb, + void **cbarg); + +OSSL_SELF_TEST *OSSL_SELF_TEST_new(OSSL_CALLBACK *cb, void *cbarg); +void OSSL_SELF_TEST_free(OSSL_SELF_TEST *st); + +void OSSL_SELF_TEST_onbegin(OSSL_SELF_TEST *st, const char *type, + const char *desc); +int OSSL_SELF_TEST_oncorrupt_byte(OSSL_SELF_TEST *st, unsigned char *bytes); +void OSSL_SELF_TEST_onend(OSSL_SELF_TEST *st, int ret); + +# ifdef __cplusplus +} +# endif +#endif /* OPENSSL_SELF_TEST_H */ diff --git a/include/openssl/sha.h b/include/openssl/sha.h new file mode 100644 index 0000000..6e65a04 --- /dev/null +++ b/include/openssl/sha.h @@ -0,0 +1,138 @@ +/* + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_SHA_H +# define OPENSSL_SHA_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_SHA_H +# endif + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# define SHA_DIGEST_LENGTH 20 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! 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) + +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; + +OSSL_DEPRECATEDIN_3_0 int SHA1_Init(SHA_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA1_Update(SHA_CTX *c, const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA1_Final(unsigned char *md, SHA_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA1_Transform(SHA_CTX *c, const unsigned char *data); +# endif + +unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# 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; + +OSSL_DEPRECATEDIN_3_0 int SHA224_Init(SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA224_Update(SHA256_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA224_Final(unsigned char *md, SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA256_Init(SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA256_Update(SHA256_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA256_Final(unsigned char *md, SHA256_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA256_Transform(SHA256_CTX *c, + const unsigned char *data); +# endif + +unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); +unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); + +# define SHA224_DIGEST_LENGTH 28 +# define SHA256_DIGEST_LENGTH 32 +# define SHA384_DIGEST_LENGTH 48 +# define SHA512_DIGEST_LENGTH 64 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/* + * 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 +# elif defined(__arch64__) +# define SHA_LONG64 unsigned long +# else +# define SHA_LONG64 unsigned long long +# 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; + +OSSL_DEPRECATEDIN_3_0 int SHA384_Init(SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA384_Update(SHA512_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA384_Final(unsigned char *md, SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA512_Init(SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 int SHA512_Update(SHA512_CTX *c, + const void *data, size_t len); +OSSL_DEPRECATEDIN_3_0 int SHA512_Final(unsigned char *md, SHA512_CTX *c); +OSSL_DEPRECATEDIN_3_0 void SHA512_Transform(SHA512_CTX *c, + const unsigned char *data); +# endif + +unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md); +unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md); + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/include/openssl/srp.h b/include/openssl/srp.h new file mode 100644 index 0000000..74709d8 --- /dev/null +++ b/include/openssl/srp.h @@ -0,0 +1,285 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/srp.h.in + * + * Copyright 2004-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2004, EdelKey Project. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + * + * Originally written by Christophe Renou and Peter Sylvester, + * for the EdelKey project. + */ + + + +#ifndef OPENSSL_SRP_H +# define OPENSSL_SRP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_SRP_H +# endif + +#include + +#ifndef OPENSSL_NO_SRP +# include +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 + +typedef struct SRP_gN_cache_st { + char *b64_bn; + BIGNUM *bn; +} SRP_gN_cache; +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN_cache, SRP_gN_cache, SRP_gN_cache) +#define sk_SRP_gN_cache_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_value(sk, idx) ((SRP_gN_cache *)OPENSSL_sk_value(ossl_check_const_SRP_gN_cache_sk_type(sk), (idx))) +#define sk_SRP_gN_cache_new(cmp) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new(ossl_check_SRP_gN_cache_compfunc_type(cmp))) +#define sk_SRP_gN_cache_new_null() ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_cache_new_reserve(cmp, n) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_cache_compfunc_type(cmp), (n))) +#define sk_SRP_gN_cache_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_cache_sk_type(sk), (n)) +#define sk_SRP_gN_cache_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_delete(sk, i) ((SRP_gN_cache *)OPENSSL_sk_delete(ossl_check_SRP_gN_cache_sk_type(sk), (i))) +#define sk_SRP_gN_cache_delete_ptr(sk, ptr) ((SRP_gN_cache *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_pop(sk) ((SRP_gN_cache *)OPENSSL_sk_pop(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_shift(sk) ((SRP_gN_cache *)OPENSSL_sk_shift(ossl_check_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_cache_sk_type(sk),ossl_check_SRP_gN_cache_freefunc_type(freefunc)) +#define sk_SRP_gN_cache_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), (idx)) +#define sk_SRP_gN_cache_set(sk, idx, ptr) ((SRP_gN_cache *)OPENSSL_sk_set(ossl_check_SRP_gN_cache_sk_type(sk), (idx), ossl_check_SRP_gN_cache_type(ptr))) +#define sk_SRP_gN_cache_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) +#define sk_SRP_gN_cache_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), pnum) +#define sk_SRP_gN_cache_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_cache_sk_type(sk)) +#define sk_SRP_gN_cache_dup(sk) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_cache_sk_type(sk))) +#define sk_SRP_gN_cache_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_copyfunc_type(copyfunc), ossl_check_SRP_gN_cache_freefunc_type(freefunc))) +#define sk_SRP_gN_cache_set_cmp_func(sk, cmp) ((sk_SRP_gN_cache_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_compfunc_type(cmp))) + + + +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; +SKM_DEFINE_STACK_OF_INTERNAL(SRP_user_pwd, SRP_user_pwd, SRP_user_pwd) +#define sk_SRP_user_pwd_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_value(sk, idx) ((SRP_user_pwd *)OPENSSL_sk_value(ossl_check_const_SRP_user_pwd_sk_type(sk), (idx))) +#define sk_SRP_user_pwd_new(cmp) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new(ossl_check_SRP_user_pwd_compfunc_type(cmp))) +#define sk_SRP_user_pwd_new_null() ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_null()) +#define sk_SRP_user_pwd_new_reserve(cmp, n) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_reserve(ossl_check_SRP_user_pwd_compfunc_type(cmp), (n))) +#define sk_SRP_user_pwd_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_user_pwd_sk_type(sk), (n)) +#define sk_SRP_user_pwd_free(sk) OPENSSL_sk_free(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_delete(sk, i) ((SRP_user_pwd *)OPENSSL_sk_delete(ossl_check_SRP_user_pwd_sk_type(sk), (i))) +#define sk_SRP_user_pwd_delete_ptr(sk, ptr) ((SRP_user_pwd *)OPENSSL_sk_delete_ptr(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_pop(sk) ((SRP_user_pwd *)OPENSSL_sk_pop(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_shift(sk) ((SRP_user_pwd *)OPENSSL_sk_shift(ossl_check_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_user_pwd_sk_type(sk),ossl_check_SRP_user_pwd_freefunc_type(freefunc)) +#define sk_SRP_user_pwd_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), (idx)) +#define sk_SRP_user_pwd_set(sk, idx, ptr) ((SRP_user_pwd *)OPENSSL_sk_set(ossl_check_SRP_user_pwd_sk_type(sk), (idx), ossl_check_SRP_user_pwd_type(ptr))) +#define sk_SRP_user_pwd_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) +#define sk_SRP_user_pwd_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), pnum) +#define sk_SRP_user_pwd_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_user_pwd_sk_type(sk)) +#define sk_SRP_user_pwd_dup(sk) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_dup(ossl_check_const_SRP_user_pwd_sk_type(sk))) +#define sk_SRP_user_pwd_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_copyfunc_type(copyfunc), ossl_check_SRP_user_pwd_freefunc_type(freefunc))) +#define sk_SRP_user_pwd_set_cmp_func(sk, cmp) ((sk_SRP_user_pwd_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_compfunc_type(cmp))) + + +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_user_pwd_new(void); +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_free(SRP_user_pwd *user_pwd); + +OSSL_DEPRECATEDIN_3_0 +void SRP_user_pwd_set_gN(SRP_user_pwd *user_pwd, const BIGNUM *g, + const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set1_ids(SRP_user_pwd *user_pwd, const char *id, + const char *info); +OSSL_DEPRECATEDIN_3_0 +int SRP_user_pwd_set0_sv(SRP_user_pwd *user_pwd, BIGNUM *s, BIGNUM *v); + +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; +SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN, SRP_gN, SRP_gN) +#define sk_SRP_gN_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_value(sk, idx) ((SRP_gN *)OPENSSL_sk_value(ossl_check_const_SRP_gN_sk_type(sk), (idx))) +#define sk_SRP_gN_new(cmp) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new(ossl_check_SRP_gN_compfunc_type(cmp))) +#define sk_SRP_gN_new_null() ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_null()) +#define sk_SRP_gN_new_reserve(cmp, n) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_compfunc_type(cmp), (n))) +#define sk_SRP_gN_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_sk_type(sk), (n)) +#define sk_SRP_gN_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_delete(sk, i) ((SRP_gN *)OPENSSL_sk_delete(ossl_check_SRP_gN_sk_type(sk), (i))) +#define sk_SRP_gN_delete_ptr(sk, ptr) ((SRP_gN *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_pop(sk) ((SRP_gN *)OPENSSL_sk_pop(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_shift(sk) ((SRP_gN *)OPENSSL_sk_shift(ossl_check_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_sk_type(sk),ossl_check_SRP_gN_freefunc_type(freefunc)) +#define sk_SRP_gN_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), (idx)) +#define sk_SRP_gN_set(sk, idx, ptr) ((SRP_gN *)OPENSSL_sk_set(ossl_check_SRP_gN_sk_type(sk), (idx), ossl_check_SRP_gN_type(ptr))) +#define sk_SRP_gN_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) +#define sk_SRP_gN_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), pnum) +#define sk_SRP_gN_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_sk_type(sk)) +#define sk_SRP_gN_dup(sk) ((STACK_OF(SRP_gN) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_sk_type(sk))) +#define sk_SRP_gN_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_sk_type(sk), ossl_check_SRP_gN_copyfunc_type(copyfunc), ossl_check_SRP_gN_freefunc_type(freefunc))) +#define sk_SRP_gN_set_cmp_func(sk, cmp) ((sk_SRP_gN_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_compfunc_type(cmp))) + + + +OSSL_DEPRECATEDIN_3_0 +SRP_VBASE *SRP_VBASE_new(char *seed_key); +OSSL_DEPRECATEDIN_3_0 +void SRP_VBASE_free(SRP_VBASE *vb); +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); + +OSSL_DEPRECATEDIN_3_0 +int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd); + +/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ +OSSL_DEPRECATEDIN_3_0 +SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); + +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier_ex(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +char *SRP_create_verifier(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g); +OSSL_DEPRECATEDIN_3_0 +int SRP_create_verifier_BN_ex(const char *user, const char *pass, BIGNUM **salt, + BIGNUM **verifier, const BIGNUM *N, + const BIGNUM *g, OSSL_LIB_CTX *libctx, + const char *propq); +OSSL_DEPRECATEDIN_3_0 +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 */ +OSSL_DEPRECATEDIN_3_0 +char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +SRP_gN *SRP_get_default_gN(const char *id); + +/* server side .... */ +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, + const BIGNUM *b, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B_ex(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v, OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v); + +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u_ex(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); + +/* client side .... */ + +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x_ex(const BIGNUM *s, const char *user, const char *pass, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key_ex(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u, + OSSL_LIB_CTX *libctx, const char *propq); +OSSL_DEPRECATEDIN_3_0 +BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); +OSSL_DEPRECATEDIN_3_0 +int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); + +# define SRP_MINIMAL_N 1024 + +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +/* This method ignores the configured seed and fails for an unknown user. */ +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 +SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username); +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/include/openssl/srtp.h b/include/openssl/srtp.h new file mode 100644 index 0000000..d64606e --- /dev/null +++ b/include/openssl/srtp.h @@ -0,0 +1,56 @@ +/* + * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with 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 OPENSSL_SRTP_H +# define OPENSSL_SRTP_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_D1_SRTP_H +# endif + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define SRTP_AES128_CM_SHA1_80 0x0001 +# define SRTP_AES128_CM_SHA1_32 0x0002 +# define SRTP_AES128_F8_SHA1_80 0x0003 +# define SRTP_AES128_F8_SHA1_32 0x0004 +# define SRTP_NULL_SHA1_80 0x0005 +# define SRTP_NULL_SHA1_32 0x0006 + +/* AEAD SRTP protection profiles from RFC 7714 */ +# define SRTP_AEAD_AES_128_GCM 0x0007 +# define SRTP_AEAD_AES_256_GCM 0x0008 + +# ifndef OPENSSL_NO_SRTP + +__owur int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); +__owur int SSL_set_tlsext_use_srtp(SSL *ssl, const char *profiles); + +__owur STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl); +__owur SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); + +# endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h new file mode 100644 index 0000000..d796a4c --- /dev/null +++ b/include/openssl/ssl.h @@ -0,0 +1,2602 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/ssl.h.in + * + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_SSL_H +# define OPENSSL_SSL_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_SSL_H +# endif + +# include +# include +# include +# include +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# include +# include +# include +# endif +# include +# include +# include +# include + +# include +# include +# include +# include +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif + +#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 +/* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */ + +/* The maximum number of encrypt/decrypt pipelines we can support */ +# define SSL_MAX_PIPELINES 32 + +/* text strings for the ciphers */ + +/* These are used to specify which ciphers to use and not to use */ + +# define SSL_TXT_LOW "LOW" +# define SSL_TXT_MEDIUM "MEDIUM" +# define SSL_TXT_HIGH "HIGH" +# define SSL_TXT_FIPS "FIPS" + +# define SSL_TXT_aNULL "aNULL" +# define SSL_TXT_eNULL "eNULL" +# define SSL_TXT_NULL "NULL" + +# define SSL_TXT_kRSA "kRSA" +# define SSL_TXT_kDHr "kDHr"/* this cipher class has been removed */ +# define SSL_TXT_kDHd "kDHd"/* this cipher class has been removed */ +# define SSL_TXT_kDH "kDH"/* this cipher class has been removed */ +# define SSL_TXT_kEDH "kEDH"/* alias for kDHE */ +# define SSL_TXT_kDHE "kDHE" +# define SSL_TXT_kECDHr "kECDHr"/* this cipher class has been removed */ +# define SSL_TXT_kECDHe "kECDHe"/* this cipher class has been removed */ +# define SSL_TXT_kECDH "kECDH"/* this cipher class has been removed */ +# define SSL_TXT_kEECDH "kEECDH"/* alias for kECDHE */ +# define SSL_TXT_kECDHE "kECDHE" +# define SSL_TXT_kPSK "kPSK" +# define SSL_TXT_kRSAPSK "kRSAPSK" +# define SSL_TXT_kECDHEPSK "kECDHEPSK" +# define SSL_TXT_kDHEPSK "kDHEPSK" +# define SSL_TXT_kGOST "kGOST" +# define SSL_TXT_kGOST18 "kGOST18" +# define SSL_TXT_kSRP "kSRP" + +# define SSL_TXT_aRSA "aRSA" +# define SSL_TXT_aDSS "aDSS" +# define SSL_TXT_aDH "aDH"/* this cipher class has been removed */ +# define SSL_TXT_aECDH "aECDH"/* this cipher class has been removed */ +# define SSL_TXT_aECDSA "aECDSA" +# define SSL_TXT_aPSK "aPSK" +# define SSL_TXT_aGOST94 "aGOST94" +# define SSL_TXT_aGOST01 "aGOST01" +# define SSL_TXT_aGOST12 "aGOST12" +# define SSL_TXT_aGOST "aGOST" +# define SSL_TXT_aSRP "aSRP" + +# define SSL_TXT_DSS "DSS" +# define SSL_TXT_DH "DH" +# define SSL_TXT_DHE "DHE"/* same as "kDHE:-ADH" */ +# define SSL_TXT_EDH "EDH"/* alias for DHE */ +# define SSL_TXT_ADH "ADH" +# define SSL_TXT_RSA "RSA" +# define SSL_TXT_ECDH "ECDH" +# define SSL_TXT_EECDH "EECDH"/* alias for ECDHE" */ +# define SSL_TXT_ECDHE "ECDHE"/* same as "kECDHE:-AECDH" */ +# define SSL_TXT_AECDH "AECDH" +# define SSL_TXT_ECDSA "ECDSA" +# define SSL_TXT_PSK "PSK" +# define SSL_TXT_SRP "SRP" + +# define SSL_TXT_DES "DES" +# define SSL_TXT_3DES "3DES" +# define SSL_TXT_RC4 "RC4" +# define SSL_TXT_RC2 "RC2" +# define SSL_TXT_IDEA "IDEA" +# define SSL_TXT_SEED "SEED" +# define SSL_TXT_AES128 "AES128" +# define SSL_TXT_AES256 "AES256" +# define SSL_TXT_AES "AES" +# define SSL_TXT_AES_GCM "AESGCM" +# define SSL_TXT_AES_CCM "AESCCM" +# define SSL_TXT_AES_CCM_8 "AESCCM8" +# define SSL_TXT_CAMELLIA128 "CAMELLIA128" +# define SSL_TXT_CAMELLIA256 "CAMELLIA256" +# define SSL_TXT_CAMELLIA "CAMELLIA" +# define SSL_TXT_CHACHA20 "CHACHA20" +# define SSL_TXT_GOST "GOST89" +# define SSL_TXT_ARIA "ARIA" +# define SSL_TXT_ARIA_GCM "ARIAGCM" +# define SSL_TXT_ARIA128 "ARIA128" +# define SSL_TXT_ARIA256 "ARIA256" +# define SSL_TXT_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912" +# define SSL_TXT_CBC "CBC" + +# define SSL_TXT_MD5 "MD5" +# define SSL_TXT_SHA1 "SHA1" +# define SSL_TXT_SHA "SHA"/* same as "SHA1" */ +# define SSL_TXT_GOST94 "GOST94" +# define SSL_TXT_GOST89MAC "GOST89MAC" +# define SSL_TXT_GOST12 "GOST12" +# define SSL_TXT_GOST89MAC12 "GOST89MAC12" +# define SSL_TXT_SHA256 "SHA256" +# define SSL_TXT_SHA384 "SHA384" + +# define SSL_TXT_SSLV3 "SSLv3" +# define SSL_TXT_TLSV1 "TLSv1" +# define SSL_TXT_TLSV1_1 "TLSv1.1" +# define SSL_TXT_TLSV1_2 "TLSv1.2" + +# define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +# define SSL_TXT_CMPALL "COMPLEMENTOFALL" +# define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + * This applies to ciphersuites for TLSv1.2 and below. + * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list() + * Update both macro and function simultaneously + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* + * This is the default set of TLSv1.3 ciphersuites + * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites() + * Update both macro and function simultaneously + */ +# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_CHACHA20_POLY1305_SHA256:" \ + "TLS_AES_128_GCM_SHA256" +# endif +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +# define SSL_SENT_SHUTDOWN 1 +# define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +# define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; +typedef struct ssl_comp_st SSL_COMP; + +STACK_OF(SSL_CIPHER); +STACK_OF(SSL_COMP); + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; +SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE) +#define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx))) +#define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) +#define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null()) +#define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n))) +#define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n)) +#define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i))) +#define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk),ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)) +#define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx)) +#define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) +#define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) +#define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum) +#define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) +#define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))) +#define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))) +#define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) + + + +typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + const SSL_CIPHER **cipher, void *arg); + +/* Extension context codes */ +/* This extension is only allowed in TLS */ +#define SSL_EXT_TLS_ONLY 0x0001 +/* This extension is only allowed in DTLS */ +#define SSL_EXT_DTLS_ONLY 0x0002 +/* Some extensions may be allowed in DTLS but we don't implement them for it */ +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ +#define SSL_EXT_SSL3_ALLOWED 0x0008 +/* Extension is only defined for TLS1.2 and below */ +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +/* Extension is only defined for TLS1.3 and above */ +#define SSL_EXT_TLS1_3_ONLY 0x0020 +/* Ignore this extension during parsing if we are resuming */ +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 +#define SSL_EXT_CLIENT_HELLO 0x0080 +/* Really means TLS1.2 or below */ +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type, + const unsigned char **out, size_t *outlen, + int *al, void *add_arg); + +typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type, + const unsigned char *in, size_t inlen, + int *al, void *parse_arg); + + +typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char **out, + size_t *outlen, X509 *x, + size_t chainidx, + int *al, void *add_arg); + +typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *out, + void *add_arg); + +typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *in, + size_t inlen, X509 *x, + size_t chainidx, + int *al, void *parse_arg); + +/* Typedef for verification callback */ +typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); + +/* Typedef for SSL async callback */ +typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); + +#define SSL_OP_BIT(n) ((uint64_t)1 << (uint64_t)n) + +/* + * SSL/TLS connection options. + */ + /* Disable Extended master secret */ +# define SSL_OP_NO_EXTENDED_MASTER_SECRET SSL_OP_BIT(0) + /* Cleanse plaintext copies of data delivered to the application */ +# define SSL_OP_CLEANSE_PLAINTEXT SSL_OP_BIT(1) + /* Allow initial connection to servers that don't support RI */ +# define SSL_OP_LEGACY_SERVER_CONNECT SSL_OP_BIT(2) + /* Enable support for Kernel TLS */ +# define SSL_OP_ENABLE_KTLS SSL_OP_BIT(3) +# define SSL_OP_TLSEXT_PADDING SSL_OP_BIT(4) +# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG SSL_OP_BIT(6) +# define SSL_OP_IGNORE_UNEXPECTED_EOF SSL_OP_BIT(7) +# define SSL_OP_ALLOW_CLIENT_RENEGOTIATION SSL_OP_BIT(8) +# define SSL_OP_DISABLE_TLSEXT_CA_NAMES SSL_OP_BIT(9) + /* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ +# define SSL_OP_ALLOW_NO_DHE_KEX SSL_OP_BIT(10) + /* + * 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 SSL_OP_BIT(11) + /* DTLS options */ +# define SSL_OP_NO_QUERY_MTU SSL_OP_BIT(12) + /* Turn on Cookie Exchange (on relevant for servers) */ +# define SSL_OP_COOKIE_EXCHANGE SSL_OP_BIT(13) + /* Don't use RFC4507 ticket extension */ +# define SSL_OP_NO_TICKET SSL_OP_BIT(14) +# ifndef OPENSSL_NO_DTLS1_METHOD + /* + * Use Cisco's version identifier of DTLS_BAD_VER + * (only with deprecated DTLSv1_client_method()) + */ +# define SSL_OP_CISCO_ANYCONNECT SSL_OP_BIT(15) +# endif + /* As server, disallow session resumption on renegotiation */ +# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION SSL_OP_BIT(16) + /* Don't use compression even if supported */ +# define SSL_OP_NO_COMPRESSION SSL_OP_BIT(17) + /* Permit unsafe legacy renegotiation */ +# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION SSL_OP_BIT(18) + /* Disable encrypt-then-mac */ +# define SSL_OP_NO_ENCRYPT_THEN_MAC SSL_OP_BIT(19) + /* + * Enable TLSv1.3 Compatibility mode. This is on by default. A future + * version of OpenSSL may have this disabled by default. + */ +# define SSL_OP_ENABLE_MIDDLEBOX_COMPAT SSL_OP_BIT(20) + /* + * Prioritize Chacha20Poly1305 when client does. + * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE + */ +# define SSL_OP_PRIORITIZE_CHACHA SSL_OP_BIT(21) + /* + * Set on servers to choose the cipher according to server's preferences. + */ +# define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) + /* + * 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 SSL_OP_BIT(23) + /* + * Switches off automatic TLSv1.3 anti-replay protection for early data. + * This is a server-side option only (no effect on the client). + */ +# define SSL_OP_NO_ANTI_REPLAY SSL_OP_BIT(24) +# define SSL_OP_NO_SSLv3 SSL_OP_BIT(25) +# define SSL_OP_NO_TLSv1 SSL_OP_BIT(26) +# define SSL_OP_NO_TLSv1_2 SSL_OP_BIT(27) +# define SSL_OP_NO_TLSv1_1 SSL_OP_BIT(28) +# define SSL_OP_NO_TLSv1_3 SSL_OP_BIT(29) +# define SSL_OP_NO_DTLSv1 SSL_OP_BIT(26) +# define SSL_OP_NO_DTLSv1_2 SSL_OP_BIT(27) + /* Disallow all renegotiation */ +# define SSL_OP_NO_RENEGOTIATION SSL_OP_BIT(30) + /* + * 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 SSL_OP_BIT(31) + +/* + * Option "collections." + */ +# define SSL_OP_NO_SSL_MASK \ + ( SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 \ + | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3 ) +# define SSL_OP_NO_DTLS_MASK \ + ( SSL_OP_NO_DTLSv1 | SSL_OP_NO_DTLSv1_2 ) + +/* Various bug workarounds that should be rather harmless. */ +# define SSL_OP_ALL \ + ( SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \ + | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG ) + +/* + * OBSOLETE OPTIONS retained for compatibility + */ + +# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 +# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 +# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 +# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 +# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 +# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 +# define SSL_OP_TLS_D5_BUG 0x0 +# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 +# define SSL_OP_SINGLE_ECDH_USE 0x0 +# define SSL_OP_SINGLE_DH_USE 0x0 +# define SSL_OP_EPHEMERAL_RSA 0x0 +# define SSL_OP_NO_SSLv2 0x0 +# define SSL_OP_PKCS1_CHECK_1 0x0 +# define SSL_OP_PKCS1_CHECK_2 0x0 +# define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 +# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0 + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +# define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001U +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U +/* + * Never bother the application with retries if the transport is blocking: + */ +# define SSL_MODE_AUTO_RETRY 0x00000004U +/* Don't attempt to automatically build certificate chain */ +# define SSL_MODE_NO_AUTO_CHAIN 0x00000008U +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) Released buffers are freed. + */ +# define SSL_MODE_RELEASE_BUFFERS 0x00000010U +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U +# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U +/* + * Support Asynchronous operation + */ +# define SSL_MODE_ASYNC 0x00000100U + +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +# define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certificate chain algorithms. When this is set we enforce them. + */ +# define SSL_CERT_FLAG_TLS_STRICT 0x00000001U + +/* Suite B modes, takes same values as certificate verify flags */ +# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +# define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +# define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +# define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +# define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +# define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +# define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +# define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +# define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +# define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +# define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +# define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +# define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +# define CERT_PKEY_SUITEB 0x800 + +# define SSL_CONF_FLAG_CMDLINE 0x1 +# define SSL_CONF_FLAG_FILE 0x2 +# define SSL_CONF_FLAG_CLIENT 0x4 +# define SSL_CONF_FLAG_SERVER 0x8 +# define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +# define SSL_CONF_FLAG_CERTIFICATE 0x20 +# define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40 +/* Configuration value types */ +# define SSL_CONF_TYPE_UNKNOWN 0x0 +# define SSL_CONF_TYPE_STRING 0x1 +# define SSL_CONF_TYPE_FILE 0x2 +# define SSL_CONF_TYPE_DIR 0x3 +# define SSL_CONF_TYPE_NONE 0x4 +# define SSL_CONF_TYPE_STORE 0x5 + +/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */ +# define SSL_COOKIE_LENGTH 4096 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +uint64_t SSL_CTX_get_options(const SSL_CTX *ctx); +uint64_t SSL_get_options(const SSL *s); +uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_clear_options(SSL *s, uint64_t op); +uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op); +uint64_t SSL_set_options(SSL *s, uint64_t 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) + +# 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 */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s, + int *ad); +OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s); +# endif +# endif + +/* 100k max cert list */ +# define SSL_MAX_CERT_LIST_DEFAULT (1024*100) + +# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32 + * bytes. The callback can alter this length to be less if desired. It is + * also an error for the callback to set the size to zero. + */ +typedef int (*GEN_SESSION_CB) (SSL *ssl, unsigned char *id, + unsigned int *id_len); + +# define SSL_SESS_CACHE_OFF 0x0000 +# define SSL_SESS_CACHE_CLIENT 0x0001 +# define SSL_SESS_CACHE_SERVER 0x0002 +# define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER) +# define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +# define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +# define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE) +# define SSL_SESS_CACHE_UPDATE_TIME 0x0400 + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +# define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL) +# define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL) +# define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL) +# define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL) +# define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL) +# define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL) +# define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL) +# define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL) +# define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL) +# define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb) (struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb) (struct ssl_ctx_st + *ctx, + SSL_SESSION *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb) (struct ssl_st + *ssl, + const unsigned char + *data, int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + const unsigned char *data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb) (const SSL *ssl, int type, int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +# ifndef OPENSSL_NO_ENGINE +__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +# endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb) (SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb) (SSL *ssl, + const unsigned + char *cookie, + unsigned int + cookie_len)); + +void SSL_CTX_set_stateless_cookie_generate_cb( + SSL_CTX *ctx, + int (*gen_stateless_cookie_cb) (SSL *ssl, + unsigned char *cookie, + size_t *cookie_len)); +void SSL_CTX_set_stateless_cookie_verify_cb( + SSL_CTX *ctx, + int (*verify_stateless_cookie_cb) (SSL *ssl, + const unsigned char *cookie, + size_t cookie_len)); +# ifndef OPENSSL_NO_NEXTPROTONEG + +typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned int *outlen, + void *arg); +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + SSL_CTX_npn_advertised_cb_func cb, + void *arg); +# define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb + +typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + SSL_CTX_npn_select_cb_func cb, + void *arg); +# define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb + +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +# define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated +# endif + +__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *in, unsigned int inlen, + const unsigned char *client, + unsigned int client_len); + +# define OPENSSL_NPN_UNSUPPORTED 0 +# define OPENSSL_NPN_NEGOTIATED 1 +# define OPENSSL_NPN_NO_OVERLAP 2 + +__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned int protos_len); +__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned int protos_len); +typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + SSL_CTX_alpn_select_cb_func cb, + void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned int *len); + +# ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +# define PSK_MAX_IDENTITY_LEN 256 +# define PSK_MAX_PSK_LEN 512 +typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl, + const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); +void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); + +typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl, + const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb); +void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb); + +__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +# endif + +typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl, + const unsigned char *identity, + size_t identity_len, + SSL_SESSION **sess); +typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, + const unsigned char **id, + size_t *idlen, + SSL_SESSION **sess); + +void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb); +void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, + SSL_psk_find_session_cb_func cb); +void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); +void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, + SSL_psk_use_session_cb_func cb); + +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, + unsigned int ext_type); + +__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + unsigned int context, + SSL_custom_ext_add_cb_ex add_cb, + SSL_custom_ext_free_cb_ex free_cb, + void *add_arg, + SSL_custom_ext_parse_cb_ex parse_cb, + void *parse_arg); + +__owur int SSL_extension_supported(unsigned int ext_type); + +# define SSL_NOTHING 1 +# define SSL_WRITING 2 +# define SSL_READING 3 +# define SSL_X509_LOOKUP 4 +# define SSL_ASYNC_PAUSED 5 +# define SSL_ASYNC_NO_JOBS 6 +# define SSL_CLIENT_HELLO_CB 7 +# define SSL_RETRY_VERIFY 8 + +/* 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_retry_verify(s) (SSL_want(s) == SSL_RETRY_VERIFY) +# define SSL_want_async(s) (SSL_want(s) == SSL_ASYNC_PAUSED) +# define SSL_want_async_job(s) (SSL_want(s) == SSL_ASYNC_NO_JOBS) +# define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB) + +# define SSL_MAC_FLAG_READ_MAC_STREAM 1 +# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 +# define SSL_MAC_FLAG_READ_MAC_TLSTREE 4 +# define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8 + +/* + * A callback for logging out TLS key material. This callback should log out + * |line| followed by a newline. + */ +typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line); + +/* + * SSL_CTX_set_keylog_callback configures a callback to log key material. This + * is intended for debugging use with tools like Wireshark. The cb function + * should log line followed by a newline. + */ +void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb); + +/* + * SSL_CTX_get_keylog_callback returns the callback configured by + * SSL_CTX_set_keylog_callback. + */ +SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx); + +int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data); +uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx); +int SSL_set_max_early_data(SSL *s, uint32_t max_early_data); +uint32_t SSL_get_max_early_data(const SSL *s); +int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data); +uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx); +int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data); +uint32_t SSL_get_recv_max_early_data(const SSL *s); + +#ifdef __cplusplus +} +#endif + +# include +# include +# include /* This is mostly sslv3 with a few tweaks */ +# include /* Datagram TLS */ +# include /* Support for the use_srtp extension */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These need to be after the above set of includes due to a compiler bug + * in VisualStudio 2015 + */ +SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) +#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx))) +#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp))) +#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null()) +#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n))) +#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n)) +#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i))) +#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk),ossl_check_SSL_CIPHER_freefunc_type(freefunc)) +#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx)) +#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr))) +#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) +#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum) +#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk)) +#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) +#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) +#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) +#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) +#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) +#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) +#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) +#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) +#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) +#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) +#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) +#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) +#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) +#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) +#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) +#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) +#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) +#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) + + +/* 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))) +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug); +# endif + +/* TLSv1.3 KeyUpdate message types */ +/* -1 used so that this is an invalid value for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NONE -1 +/* Values as defined for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NOT_REQUESTED 0 +#define SSL_KEY_UPDATE_REQUESTED 1 + +/* + * The valid handshake states (one for each type message sent and one for each + * type of message received). There are also two "special" states: + * TLS = TLS or DTLS state + * DTLS = DTLS specific state + * CR/SR = Client Read/Server Read + * CW/SW = Client Write/Server Write + * + * The "special" states are: + * TLS_ST_BEFORE = No handshake has been initiated yet + * TLS_ST_OK = A handshake has been successfully completed + */ +typedef enum { + TLS_ST_BEFORE, + TLS_ST_OK, + DTLS_ST_CR_HELLO_VERIFY_REQUEST, + TLS_ST_CR_SRVR_HELLO, + TLS_ST_CR_CERT, + TLS_ST_CR_CERT_STATUS, + TLS_ST_CR_KEY_EXCH, + TLS_ST_CR_CERT_REQ, + TLS_ST_CR_SRVR_DONE, + TLS_ST_CR_SESSION_TICKET, + TLS_ST_CR_CHANGE, + TLS_ST_CR_FINISHED, + TLS_ST_CW_CLNT_HELLO, + TLS_ST_CW_CERT, + TLS_ST_CW_KEY_EXCH, + TLS_ST_CW_CERT_VRFY, + TLS_ST_CW_CHANGE, + TLS_ST_CW_NEXT_PROTO, + TLS_ST_CW_FINISHED, + TLS_ST_SW_HELLO_REQ, + TLS_ST_SR_CLNT_HELLO, + DTLS_ST_SW_HELLO_VERIFY_REQUEST, + TLS_ST_SW_SRVR_HELLO, + TLS_ST_SW_CERT, + TLS_ST_SW_KEY_EXCH, + TLS_ST_SW_CERT_REQ, + TLS_ST_SW_SRVR_DONE, + TLS_ST_SR_CERT, + TLS_ST_SR_KEY_EXCH, + TLS_ST_SR_CERT_VRFY, + TLS_ST_SR_NEXT_PROTO, + TLS_ST_SR_CHANGE, + TLS_ST_SR_FINISHED, + TLS_ST_SW_SESSION_TICKET, + TLS_ST_SW_CERT_STATUS, + TLS_ST_SW_CHANGE, + TLS_ST_SW_FINISHED, + TLS_ST_SW_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_CERT_VRFY, + TLS_ST_SW_CERT_VRFY, + TLS_ST_CR_HELLO_REQ, + TLS_ST_SW_KEY_UPDATE, + TLS_ST_CW_KEY_UPDATE, + TLS_ST_SR_KEY_UPDATE, + TLS_ST_CR_KEY_UPDATE, + TLS_ST_EARLY_DATA, + TLS_ST_PENDING_EARLY_DATA_END, + TLS_ST_CW_END_OF_EARLY_DATA, + TLS_ST_SR_END_OF_EARLY_DATA +} OSSL_HANDSHAKE_STATE; + +/* + * Most of the following state values are no longer used and are defined to be + * the closest equivalent value in the current state machine code. Not all + * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT + * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP, + * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT. + */ + +# define SSL_ST_CONNECT 0x1000 +# define SSL_ST_ACCEPT 0x2000 + +# define SSL_ST_MASK 0x0FFF + +# define SSL_CB_LOOP 0x01 +# define SSL_CB_EXIT 0x02 +# define SSL_CB_READ 0x04 +# define SSL_CB_WRITE 0x08 +# define SSL_CB_ALERT 0x4000/* used in callback */ +# define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ) +# define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE) +# define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP) +# define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT) +# define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP) +# define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT) +# define SSL_CB_HANDSHAKE_START 0x10 +# define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +# define SSL_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a)) +# define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a)) +int SSL_in_init(const SSL *s); +int SSL_in_before(const SSL *s); +int SSL_is_init_finished(const SSL *s); + +/* + * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you + * should not need these + */ +# define SSL_ST_READ_HEADER 0xF0 +# define SSL_ST_READ_BODY 0xF1 +# define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +# define SSL_VERIFY_NONE 0x00 +# define SSL_VERIFY_PEER 0x01 +# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +# define SSL_VERIFY_CLIENT_ONCE 0x04 +# define SSL_VERIFY_POST_HANDSHAKE 0x08 + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define OpenSSL_add_ssl_algorithms() SSL_library_init() +# define SSLeay_add_ssl_algorithms() SSL_library_init() +# endif + +/* More backward compatibility */ +# define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_cipher_bits(s,np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np) +# define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +# define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_time(a) SSL_SESSION_get_time(a) +# define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b)) +# define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +# define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b)) + +# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id) +# define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +# define SSL_AD_REASON_OFFSET 1000/* offset to get SSL_R_... value + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +# define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +# define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +# define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +# define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +# define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +# define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +# define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +# define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +# define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +# define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +# define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +# define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +# define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +# define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +# define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +# define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +# define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +# define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +# define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +# define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +# define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +# define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +# define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +# define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +# define SSL_AD_MISSING_EXTENSION TLS13_AD_MISSING_EXTENSION +# define SSL_AD_CERTIFICATE_REQUIRED TLS13_AD_CERTIFICATE_REQUIRED +# define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +# define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +# define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +# define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +# define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +# define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +# define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +# define SSL_AD_NO_APPLICATION_PROTOCOL TLS1_AD_NO_APPLICATION_PROTOCOL +# define SSL_ERROR_NONE 0 +# define SSL_ERROR_SSL 1 +# define SSL_ERROR_WANT_READ 2 +# define SSL_ERROR_WANT_WRITE 3 +# define SSL_ERROR_WANT_X509_LOOKUP 4 +# define SSL_ERROR_SYSCALL 5/* look at error stack/return + * value/errno */ +# define SSL_ERROR_ZERO_RETURN 6 +# define SSL_ERROR_WANT_CONNECT 7 +# define SSL_ERROR_WANT_ACCEPT 8 +# define SSL_ERROR_WANT_ASYNC 9 +# define SSL_ERROR_WANT_ASYNC_JOB 10 +# define SSL_ERROR_WANT_CLIENT_HELLO_CB 11 +# define SSL_ERROR_WANT_RETRY_VERIFY 12 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define SSL_CTRL_SET_TMP_DH 3 +# define SSL_CTRL_SET_TMP_ECDH 4 +# define SSL_CTRL_SET_TMP_DH_CB 6 +# endif + +# 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 +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +# endif +# 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 +# define DTLS_CTRL_GET_TIMEOUT 73 +# define DTLS_CTRL_HANDLE_TIMEOUT 74 +# define SSL_CTRL_GET_RI_SUPPORT 76 +# define SSL_CTRL_CLEAR_MODE 78 +# define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79 +# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +# define SSL_CTRL_CHAIN 88 +# define SSL_CTRL_CHAIN_CERT 89 +# define SSL_CTRL_GET_GROUPS 90 +# define SSL_CTRL_SET_GROUPS 91 +# define SSL_CTRL_SET_GROUPS_LIST 92 +# define SSL_CTRL_GET_SHARED_GROUP 93 +# define SSL_CTRL_SET_SIGALGS 97 +# define SSL_CTRL_SET_SIGALGS_LIST 98 +# define SSL_CTRL_CERT_FLAGS 99 +# define SSL_CTRL_CLEAR_CERT_FLAGS 100 +# define SSL_CTRL_SET_CLIENT_SIGALGS 101 +# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +# define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +# define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +# define SSL_CTRL_BUILD_CERT_CHAIN 105 +# define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +# define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +# define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +# define SSL_CTRL_GET_PEER_TMP_KEY 109 +# define SSL_CTRL_GET_RAW_CIPHERLIST 110 +# define SSL_CTRL_GET_EC_POINT_FORMATS 111 +# define SSL_CTRL_GET_CHAIN_CERTS 115 +# define SSL_CTRL_SELECT_CURRENT_CERT 116 +# define SSL_CTRL_SET_CURRENT_CERT 117 +# define SSL_CTRL_SET_DH_AUTO 118 +# define DTLS_CTRL_SET_LINK_MTU 120 +# define DTLS_CTRL_GET_LINK_MIN_MTU 121 +# define SSL_CTRL_GET_EXTMS_SUPPORT 122 +# define SSL_CTRL_SET_MIN_PROTO_VERSION 123 +# define SSL_CTRL_SET_MAX_PROTO_VERSION 124 +# define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125 +# define SSL_CTRL_SET_MAX_PIPELINES 126 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129 +# define SSL_CTRL_GET_MIN_PROTO_VERSION 130 +# define SSL_CTRL_GET_MAX_PROTO_VERSION 131 +# define SSL_CTRL_GET_SIGNATURE_NID 132 +# define SSL_CTRL_GET_TMP_KEY 133 +# define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_SET_RETRY_VERIFY 136 +# define SSL_CTRL_GET_VERIFY_CERT_STORE 137 +# define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# define SSL_CERT_SET_FIRST 1 +# define SSL_CERT_SET_NEXT 2 +# define SSL_CERT_SET_SERVER 3 +# define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)(arg)) +# define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL) +# define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL) +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define SSL_CTX_set_tmp_dh(ctx,dh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) +# endif +# 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) +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define SSL_set_tmp_dh(ssl,dh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) +# define SSL_set_tmp_ecdh(ssl,ecdh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) +# endif +# define SSL_CTX_add_extra_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)(x509)) +# define SSL_CTX_get_extra_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509) +# define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509) +# define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL) +# define SSL_CTX_set0_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)(sk)) +# define SSL_CTX_set1_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)(sk)) +# define SSL_CTX_add0_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)(x509)) +# define SSL_CTX_add1_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)(x509)) +# define SSL_CTX_get0_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx,NULL) +# define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_CTX_select_current_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509)) +# define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_CTX_set0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set1_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st)) +# define SSL_CTX_get0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set1_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st)) +# define SSL_CTX_get0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_set0_chain(s,sk) \ + SSL_ctrl(s,SSL_CTRL_CHAIN,0,(char *)(sk)) +# define SSL_set1_chain(s,sk) \ + SSL_ctrl(s,SSL_CTRL_CHAIN,1,(char *)(sk)) +# define SSL_add0_chain_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,0,(char *)(x509)) +# define SSL_add1_chain_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,1,(char *)(x509)) +# define SSL_get0_chain_certs(s,px509) \ + SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_clear_chain_certs(s) \ + SSL_set0_chain(s,NULL) +# define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_select_current_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509)) +# define SSL_set_current_cert(s,op) \ + SSL_ctrl(s,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_set0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_set1_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st)) +#define SSL_get0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_set0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_set1_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st)) +#define SSL_get0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st)) + +# define SSL_get1_groups(s, glist) \ + SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_CTX_set1_groups(ctx, glist, glistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) +# define SSL_CTX_set1_groups_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_set1_groups(s, glist, glistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) +# define SSL_set1_groups_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(str)) +# define SSL_get_shared_group(s, n) \ + SSL_ctrl(s,SSL_CTRL_GET_SHARED_GROUP,n,NULL) +# define SSL_get_negotiated_group(s) \ + SSL_ctrl(s,SSL_CTRL_GET_NEGOTIATED_GROUP,0,NULL) +# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist)) +# define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(s)) +# define SSL_set1_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist)) +# define SSL_set1_sigalgs_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(str)) +# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist)) +# define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(s)) +# define SSL_set1_client_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist)) +# define SSL_set1_client_sigalgs_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(str)) +# define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist)) +# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen, \ + (char *)(clist)) +# define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) +# define SSL_get_peer_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_TMP_KEY,0,pk) +# define SSL_get_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_TMP_KEY,0,pk) +# define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,plst) +# define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,plst) +# define SSL_CTX_set_min_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +# define SSL_CTX_set_max_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +# define SSL_CTX_get_min_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +# define SSL_CTX_get_max_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +# define SSL_set_min_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +# define SSL_set_max_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +# define SSL_get_min_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +# define SSL_get_max_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) + +const char *SSL_group_to_name(SSL *s, int id); + +/* Backwards compatibility, original 1.1.0 names */ +# define SSL_CTRL_GET_SERVER_TMP_KEY \ + SSL_CTRL_GET_PEER_TMP_KEY +# define SSL_get_server_tmp_key(s, pk) \ + SSL_get_peer_tmp_key(s, pk) + +int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey); +int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey); + +/* + * The following symbol names are old and obsolete. They are kept + * for compatibility reasons only and should not be used anymore. + */ +# define SSL_CTRL_GET_CURVES SSL_CTRL_GET_GROUPS +# define SSL_CTRL_SET_CURVES SSL_CTRL_SET_GROUPS +# define SSL_CTRL_SET_CURVES_LIST SSL_CTRL_SET_GROUPS_LIST +# define SSL_CTRL_GET_SHARED_CURVE SSL_CTRL_GET_SHARED_GROUP + +# define SSL_get1_curves SSL_get1_groups +# define SSL_CTX_set1_curves SSL_CTX_set1_groups +# define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list +# define SSL_set1_curves SSL_set1_groups +# define SSL_set1_curves_list SSL_set1_groups_list +# define SSL_get_shared_curve SSL_get_shared_group + + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* 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); +__owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq, + const SSL_METHOD *meth); +int SSL_CTX_up_ref(SSL_CTX *ctx); +void SSL_CTX_free(SSL_CTX *); +__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx); +__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); +__owur int SSL_want(const SSL *s); +__owur int SSL_clear(SSL *s); + +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); + +__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); +__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +__owur const char *OPENSSL_cipher_name(const char *rfc_name); +__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c); +__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c); +__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c); +__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c); + +__owur int SSL_get_fd(const SSL *s); +__owur int SSL_get_rfd(const SSL *s); +__owur int SSL_get_wfd(const SSL *s); +__owur const char *SSL_get_cipher_list(const SSL *s, int n); +__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size); +__owur int SSL_get_read_ahead(const SSL *s); +__owur int SSL_pending(const SSL *s); +__owur int SSL_has_pending(const SSL *s); +# ifndef OPENSSL_NO_SOCK +__owur int SSL_set_fd(SSL *s, int fd); +__owur int SSL_set_rfd(SSL *s, int fd); +__owur int SSL_set_wfd(SSL *s, int fd); +# endif +void SSL_set0_rbio(SSL *s, BIO *rbio); +void SSL_set0_wbio(SSL *s, BIO *wbio); +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +__owur BIO *SSL_get_rbio(const SSL *s); +__owur BIO *SSL_get_wbio(const SSL *s); +__owur int SSL_set_cipher_list(SSL *s, const char *str); +__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str); +__owur int SSL_set_ciphersuites(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +__owur int SSL_get_verify_mode(const SSL *s); +__owur int SSL_get_verify_depth(const SSL *s); +__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s); +void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, + const unsigned char *d, long len); +# endif +__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +__owur int SSL_use_certificate(SSL *ssl, X509 *x); +__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); +__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + + +/* serverinfo file format versions */ +# define SSL_SERVERINFOV1 1 +# define SSL_SERVERINFOV2 2 + +/* Set serverinfo data for the current active cert. */ +__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, + const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__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_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__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 STACK_OF(X509_NAME) +*SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx, + const char *propq); +__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); +int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *uri); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define SSL_load_error_strings() \ + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +# endif + +__owur const char *SSL_state_string(const SSL *s); +__owur const char *SSL_rstate_string(const SSL *s); +__owur const char *SSL_state_string_long(const SSL *s); +__owur const char *SSL_rstate_string_long(const SSL *s); +__owur long SSL_SESSION_get_time(const SSL_SESSION *s); +__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); +__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); +__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); + +__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); +__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); +void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, + const unsigned char **alpn, + size_t *len); +__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s, + const unsigned char *alpn, + size_t len); +__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); +__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher); +__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s); +__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s); +void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick, + size_t *len); +__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s); +__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s, + uint32_t max_early_data); +__owur int SSL_copy_session_id(SSL *to, const SSL *from); +__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); +__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, + unsigned int sid_len); +__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s); + +__owur SSL_SESSION *SSL_SESSION_new(void); +__owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, + unsigned int *len); +__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +# ifndef OPENSSL_NO_STDIO +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +# endif +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x); +int SSL_SESSION_up_ref(SSL_SESSION *ses); +void SSL_SESSION_free(SSL_SESSION *ses); +__owur int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp); +__owur int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session); +int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session); +__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); +__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb); +__owur int SSL_has_matching_session_id(const SSL *s, + const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); + +# ifdef OPENSSL_X509_H +__owur X509 *SSL_get0_peer_certificate(const SSL *s); +__owur X509 *SSL_get1_peer_certificate(const SSL *s); +/* Deprecated in 3.0.0 */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define SSL_get_peer_certificate SSL_get1_peer_certificate +# endif +# 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_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +# endif +__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); +__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); +pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx); +void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx); +void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb); +void SSL_set_default_passwd_cb_userdata(SSL *s, void *u); +pem_password_cb *SSL_get_default_passwd_cb(SSL *s); +void *SSL_get_default_passwd_cb_userdata(SSL *s); + +__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx); +__owur int SSL_check_private_key(const SSL *ctx); + +__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_up_ref(SSL *s); +int SSL_is_dtls(const SSL *s); +__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose); +__owur int SSL_set_purpose(SSL *ssl, int purpose); +__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); +__owur int SSL_set_trust(SSL *ssl, int trust); + +__owur int SSL_set1_host(SSL *s, const char *hostname); +__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur const char *SSL_get0_peername(SSL *s); +void SSL_set_hostflags(SSL *s, unsigned int flags); + +__owur int SSL_CTX_dane_enable(SSL_CTX *ctx); +__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md, + uint8_t mtype, uint8_t ord); +__owur int SSL_dane_enable(SSL *s, const char *basedomain); +__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector, + uint8_t mtype, const 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, const unsigned 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 +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb) (SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb) (SSL *, void *)); +OSSL_DEPRECATEDIN_3_0 +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb) (SSL *, int *, void *)); +OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +OSSL_DEPRECATEDIN_3_0 +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s); + +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s); +OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); +# endif +# endif + +/* + * ClientHello callback and helpers. + */ + +# define SSL_CLIENT_HELLO_SUCCESS 1 +# define SSL_CLIENT_HELLO_ERROR 0 +# define SSL_CLIENT_HELLO_RETRY (-1) + +typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); +void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, + void *arg); +int SSL_client_hello_isv2(SSL *s); +unsigned int SSL_client_hello_get0_legacy_version(SSL *s); +size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_compression_methods(SSL *s, + const unsigned char **out); +int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get0_ext(SSL *s, unsigned int type, + const unsigned char **out, size_t *outlen); + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +# ifdef OSSL_ASYNC_FD +/* + * Windows application developer has to include windows.h to use these. + */ +__owur int SSL_waiting_for_async(SSL *s); +__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds); +__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +__owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback); +__owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg); +__owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback); +__owur int SSL_set_async_callback_arg(SSL *s, void *arg); +__owur int SSL_get_async_status(SSL *s, int *status); + +# endif +__owur int SSL_accept(SSL *ssl); +__owur int SSL_stateless(SSL *s); +__owur int SSL_connect(SSL *ssl); +__owur int SSL_read(SSL *ssl, void *buf, int num); +__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); + +# define SSL_READ_EARLY_DATA_ERROR 0 +# define SSL_READ_EARLY_DATA_SUCCESS 1 +# define SSL_READ_EARLY_DATA_FINISH 2 + +__owur int SSL_read_early_data(SSL *s, void *buf, size_t num, + size_t *readbytes); +__owur int SSL_peek(SSL *ssl, void *buf, int num); +__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); +__owur ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size, + int flags); +__owur int SSL_write(SSL *ssl, const void *buf, int num); +__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written); +__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num, + size_t *written); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +# define SSL_EARLY_DATA_NOT_SENT 0 +# define SSL_EARLY_DATA_REJECTED 1 +# define SSL_EARLY_DATA_ACCEPTED 2 + +__owur int SSL_get_early_data_status(const SSL *s); + +__owur int SSL_get_error(const SSL *s, int ret_code); +__owur const char *SSL_get_version(const SSL *s); + +/* This sets the 'default' SSL version that SSL_new() will create */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); +# endif + +# ifndef OPENSSL_NO_SSL3_METHOD +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void); +# endif +# 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 +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void); +# endif +# endif + +# ifndef OPENSSL_NO_TLS1_1_METHOD +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void); +# endif +# endif + +# ifndef OPENSSL_NO_TLS1_2_METHOD +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void); +# endif +# endif + +# ifndef OPENSSL_NO_DTLS1_METHOD +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void); +# endif +# endif + +# ifndef OPENSSL_NO_DTLS1_2_METHOD +/* DTLSv1.2 */ +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void); +OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void); +# endif +# endif + +__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +__owur size_t DTLS_get_data_mtu(const SSL *s); + +__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx); +__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); + +__owur int SSL_do_handshake(SSL *s); +int SSL_key_update(SSL *s, int updatetype); +int SSL_get_key_update_type(const SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); +int SSL_new_session_ticket(SSL *s); +int SSL_shutdown(SSL *s); +__owur int SSL_verify_client_post_handshake(SSL *s); +void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); +void SSL_set_post_handshake_auth(SSL *s, int val); + +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); +__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +__owur const char *SSL_alert_type_string_long(int value); +__owur const char *SSL_alert_type_string(int value); +__owur const char *SSL_alert_desc_string_long(int value); +__owur const char *SSL_alert_desc_string(int value); + +void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s); +__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx); +__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x); +__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x); +__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +__owur int SSL_add_client_CA(SSL *ssl, X509 *x); +__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +__owur long SSL_get_default_timeout(const SSL *s); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define SSL_library_init() OPENSSL_init_ssl(0, NULL) +# endif + +__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk); + +__owur SSL *SSL_dup(SSL *ssl); + +__owur X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ +struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +__owur int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +__owur int SSL_get_shutdown(const SSL *ssl); +__owur int SSL_version(const SSL *ssl); +__owur int SSL_client_version(const SSL *s); +__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_store(SSL_CTX *ctx); +__owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile); +__owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath); +__owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore); +__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx, + const char *CAfile, + const char *CApath); +# define SSL_get0_session SSL_get_session/* just peek at pointer */ +__owur SSL_SESSION *SSL_get_session(const SSL *ssl); +__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb) (const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type, + int val); +__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); + +void SSL_set_verify_result(SSL *ssl, long v); +__owur long SSL_get_verify_result(const SSL *ssl); +__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s); + +__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess, + unsigned char *out, size_t outlen); +__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess, + const unsigned char *in, size_t len); +uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess); + +#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef) +__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef) +__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef) +__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); + +__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +# define SSL_CTX_sess_set_cache_size(ctx,t) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL) +# define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL) +# define SSL_CTX_set_session_cache_mode(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL) +# define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL) + +# define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +# define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m) +# define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) +# define SSL_CTX_set_read_ahead(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL) +# define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_CTX_set_max_cert_list(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) +# define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_set_max_cert_list(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) + +# define SSL_CTX_set_max_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) +# define SSL_set_max_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) +# define SSL_CTX_set_split_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL) +# define SSL_set_split_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL) +# define SSL_CTX_set_max_pipelines(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_PIPELINES,m,NULL) +# define SSL_set_max_pipelines(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_PIPELINES,m,NULL) +# define SSL_set_retry_verify(ssl) \ + (SSL_ctrl(ssl,SSL_CTRL_SET_RETRY_VERIFY,0,NULL) > 0) + +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 +# ifndef OPENSSL_NO_DEPRECATED_3_0 +/* NB: the |keylength| is only applicable when is_export is true */ +OSSL_DEPRECATEDIN_3_0 +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +OSSL_DEPRECATEDIN_3_0 +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +# endif +# endif + +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); +__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); +__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); +__owur int SSL_COMP_get_id(const SSL_COMP *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define SSL_COMP_free_compression_methods() while(0) continue +# endif +__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); +int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c); +int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c); +int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len, + int isv2format, STACK_OF(SSL_CIPHER) **sk, + STACK_OF(SSL_CIPHER) **scsvs); + +/* TLS extensions functions */ +__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +__owur int SSL_set_session_ticket_ext_cb(SSL *s, + tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +__owur int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn session_secret_cb, + void *arg); + +void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, + int (*cb) (SSL *ssl, + int + is_forward_secure)); + +void SSL_set_not_resumable_session_callback(SSL *ssl, + int (*cb) (SSL *ssl, + int is_forward_secure)); + +void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, + size_t (*cb) (SSL *ssl, int type, + size_t len, void *arg)); +void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); +int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); + +int SSL_set_record_padding_callback(SSL *ssl, + size_t (*cb) (SSL *ssl, int type, + size_t len, void *arg)); +void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); +int SSL_set_block_padding(SSL *ssl, size_t block_size); + +int SSL_set_num_tickets(SSL *s, size_t num_tickets); +size_t SSL_get_num_tickets(const SSL *s); +int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define SSL_cache_hit(s) SSL_session_reused(s) +# endif + +__owur int SSL_session_reused(const SSL *s); +__owur int SSL_is_server(const SSL *s); + +__owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, + unsigned int flags); +__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +void SSL_add_ssl_module(void); +int SSL_config(SSL *s, const char *name); +int SSL_CTX_config(SSL_CTX *ctx, const char *name); + +# ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +# endif + +# ifndef OPENSSL_NO_SOCK +int DTLSv1_listen(SSL *s, BIO_ADDR *client); +# endif + +# ifndef OPENSSL_NO_CT + +/* + * A callback for verifying that the received SCTs are sufficient. + * Expected to return 1 if they are sufficient, otherwise 0. + * May return a negative integer if an error occurs. + * A connection should be aborted if the SCTs are deemed insufficient. + */ +typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, + const STACK_OF(SCT) *scts, void *arg); + +/* + * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate + * the received SCTs. + * If the callback returns a non-positive result, the connection is terminated. + * Call this function before beginning a handshake. + * If a NULL |callback| is provided, SCT validation is disabled. + * |arg| is arbitrary userdata that will be passed to the callback whenever it + * is invoked. Ownership of |arg| remains with the caller. + * + * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response + * will be requested. + */ +int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, + void *arg); +int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, + ssl_ct_validation_cb callback, + void *arg); +#define SSL_disable_ct(s) \ + ((void) SSL_set_validation_callback((s), NULL, NULL)) +#define SSL_CTX_disable_ct(ctx) \ + ((void) SSL_CTX_set_validation_callback((ctx), NULL, NULL)) + +/* + * The validation type enumerates the available behaviours of the built-in SSL + * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct(). + * The underlying callback is a static function in libssl. + */ +enum { + SSL_CT_VALIDATION_PERMISSIVE = 0, + SSL_CT_VALIDATION_STRICT +}; + +/* + * Enable CT by setting up a callback that implements one of the built-in + * validation variants. The SSL_CT_VALIDATION_PERMISSIVE variant always + * continues the handshake, the application can make appropriate decisions at + * handshake completion. The SSL_CT_VALIDATION_STRICT variant requires at + * least one valid SCT, or else handshake termination will be requested. The + * handshake may continue anyway if SSL_VERIFY_NONE is in effect. + */ +int SSL_enable_ct(SSL *s, int validation_mode); +int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); + +/* + * Report whether a non-NULL callback is enabled. + */ +int SSL_ct_is_enabled(const SSL *s); +int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx); + +/* Gets the SCTs received from a connection */ +const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s); + +/* + * Loads the CT log list from the default location. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx); + +/* + * Loads the CT log list from the specified file path. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path); + +/* + * Sets the CT log list used by all SSL connections created from this SSL_CTX. + * Ownership of the CTLOG_STORE is transferred to the SSL_CTX. + */ +void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs); + +/* + * Gets the CT log list used by all SSL connections created from this SSL_CTX. + * This will be NULL unless one of the following functions has been called: + * - SSL_CTX_set_default_ctlog_list_file + * - SSL_CTX_set_ctlog_list_file + * - SSL_CTX_set_ctlog_store + */ +const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx); + +# endif /* OPENSSL_NO_CT */ + +/* What the "other" parameter contains in security callback */ +/* Mask for type */ +# define SSL_SECOP_OTHER_TYPE 0xffff0000 +# define SSL_SECOP_OTHER_NONE 0 +# define SSL_SECOP_OTHER_CIPHER (1 << 16) +# define SSL_SECOP_OTHER_CURVE (2 << 16) +# define SSL_SECOP_OTHER_DH (3 << 16) +# define SSL_SECOP_OTHER_PKEY (4 << 16) +# define SSL_SECOP_OTHER_SIGALG (5 << 16) +# define SSL_SECOP_OTHER_CERT (6 << 16) + +/* Indicated operation refers to peer key or certificate */ +# define SSL_SECOP_PEER 0x1000 + +/* Values for "op" parameter in security callback */ + +/* Called to filter ciphers */ +/* Ciphers client supports */ +# define SSL_SECOP_CIPHER_SUPPORTED (1 | SSL_SECOP_OTHER_CIPHER) +/* Cipher shared by client/server */ +# define SSL_SECOP_CIPHER_SHARED (2 | SSL_SECOP_OTHER_CIPHER) +/* Sanity check of cipher server selects */ +# define SSL_SECOP_CIPHER_CHECK (3 | SSL_SECOP_OTHER_CIPHER) +/* Curves supported by client */ +# define SSL_SECOP_CURVE_SUPPORTED (4 | SSL_SECOP_OTHER_CURVE) +/* Curves shared by client/server */ +# define SSL_SECOP_CURVE_SHARED (5 | SSL_SECOP_OTHER_CURVE) +/* Sanity check of curve server selects */ +# define SSL_SECOP_CURVE_CHECK (6 | SSL_SECOP_OTHER_CURVE) +/* Temporary DH key */ +# define SSL_SECOP_TMP_DH (7 | SSL_SECOP_OTHER_PKEY) +/* SSL/TLS version */ +# define SSL_SECOP_VERSION (9 | SSL_SECOP_OTHER_NONE) +/* Session tickets */ +# define SSL_SECOP_TICKET (10 | SSL_SECOP_OTHER_NONE) +/* Supported signature algorithms sent to peer */ +# define SSL_SECOP_SIGALG_SUPPORTED (11 | SSL_SECOP_OTHER_SIGALG) +/* Shared signature algorithm */ +# define SSL_SECOP_SIGALG_SHARED (12 | SSL_SECOP_OTHER_SIGALG) +/* Sanity check signature algorithm allowed */ +# define SSL_SECOP_SIGALG_CHECK (13 | SSL_SECOP_OTHER_SIGALG) +/* Used to get mask of supported public key signature algorithms */ +# define SSL_SECOP_SIGALG_MASK (14 | SSL_SECOP_OTHER_SIGALG) +/* Use to see if compression is allowed */ +# define SSL_SECOP_COMPRESSION (15 | SSL_SECOP_OTHER_NONE) +/* EE key in certificate */ +# define SSL_SECOP_EE_KEY (16 | SSL_SECOP_OTHER_CERT) +/* CA key in certificate */ +# define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT) +/* CA digest algorithm in certificate */ +# define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT) +/* Peer EE key in certificate */ +# define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER) +/* Peer CA key in certificate */ +# define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER) +/* Peer CA digest algorithm in certificate */ +# define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER) + +void SSL_set_security_level(SSL *s, int level); +__owur int SSL_get_security_level(const SSL *s); +void SSL_set_security_callback(SSL *s, + int (*cb) (const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_get_security_callback(const SSL *s)) (const SSL *s, + const SSL_CTX *ctx, int op, + int bits, int nid, void *other, + void *ex); +void SSL_set0_security_ex_data(SSL *s, void *ex); +__owur void *SSL_get0_security_ex_data(const SSL *s); + +void SSL_CTX_set_security_level(SSL_CTX *ctx, int level); +__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx); +void SSL_CTX_set_security_callback(SSL_CTX *ctx, + int (*cb) (const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx)) (const SSL *s, + const SSL_CTX *ctx, + int op, int bits, + int nid, + void *other, + void *ex); +void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex); +__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx); + +/* OPENSSL_INIT flag 0x010000 reserved for internal use */ +# define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L +# define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L + +# define OPENSSL_INIT_SSL_DEFAULT \ + (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS) + +int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); + +# ifndef OPENSSL_NO_UNIT_TEST +__owur const struct openssl_ssl_test_functions *SSL_test_functions(void); +# endif + +__owur int SSL_free_buffers(SSL *ssl); +__owur int SSL_alloc_buffers(SSL *ssl); + +/* Status codes passed to the decrypt session ticket callback. Some of these + * are for internal use only and are never passed to the callback. */ +typedef int SSL_TICKET_STATUS; + +/* Support for ticket appdata */ +/* fatal error, malloc failure */ +# define SSL_TICKET_FATAL_ERR_MALLOC 0 +/* fatal error, either from parsing or decrypting the ticket */ +# define SSL_TICKET_FATAL_ERR_OTHER 1 +/* No ticket present */ +# define SSL_TICKET_NONE 2 +/* Empty ticket present */ +# define SSL_TICKET_EMPTY 3 +/* the ticket couldn't be decrypted */ +# define SSL_TICKET_NO_DECRYPT 4 +/* a ticket was successfully decrypted */ +# define SSL_TICKET_SUCCESS 5 +/* same as above but the ticket needs to be renewed */ +# define SSL_TICKET_SUCCESS_RENEW 6 + +/* Return codes for the decrypt session ticket callback */ +typedef int SSL_TICKET_RETURN; + +/* An error occurred */ +#define SSL_TICKET_RETURN_ABORT 0 +/* Do not use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE 1 +/* Do not use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE_RENEW 2 +/* Use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE 3 +/* Use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE_RENEW 4 + +typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg); +typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss, + const unsigned char *keyname, + size_t keyname_length, + SSL_TICKET_STATUS status, + void *arg); +int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, + SSL_CTX_generate_session_ticket_fn gen_cb, + SSL_CTX_decrypt_session_ticket_fn dec_cb, + void *arg); +int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len); +int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); + +typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); + +void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); + + +typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + +/* store the default cipher strings inside the library */ +const char *OSSL_default_cipher_list(void); +const char *OSSL_default_ciphersuites(void); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/ssl2.h b/include/openssl/ssl2.h new file mode 100644 index 0000000..428ead0 --- /dev/null +++ b/include/openssl/ssl2.h @@ -0,0 +1,30 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_SSL2_H +# define OPENSSL_SSL2_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_SSL2_H +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define SSL2_VERSION 0x0002 + +# define SSL2_MT_CLIENT_HELLO 1 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/openssl/ssl3.h b/include/openssl/ssl3.h new file mode 100644 index 0000000..49bd51f --- /dev/null +++ b/include/openssl/ssl3.h @@ -0,0 +1,347 @@ +/* + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_SSL3_H +# define OPENSSL_SSL3_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_SSL3_H +# endif + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Signalling cipher suite value from RFC 5746 + * (TLS_EMPTY_RENEGOTIATION_INFO_SCSV) + */ +# define SSL3_CK_SCSV 0x030000FF + +/* + * Signalling cipher suite value from draft-ietf-tls-downgrade-scsv-00 + * (TLS_FALLBACK_SCSV) + */ +# define SSL3_CK_FALLBACK_SCSV 0x03005600 + +# define SSL3_CK_RSA_NULL_MD5 0x03000001 +# define SSL3_CK_RSA_NULL_SHA 0x03000002 +# define SSL3_CK_RSA_RC4_40_MD5 0x03000003 +# define SSL3_CK_RSA_RC4_128_MD5 0x03000004 +# define SSL3_CK_RSA_RC4_128_SHA 0x03000005 +# define SSL3_CK_RSA_RC2_40_MD5 0x03000006 +# define SSL3_CK_RSA_IDEA_128_SHA 0x03000007 +# define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008 +# define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009 +# define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A + +# define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B +# define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C +# define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D +# define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E +# define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F +# define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010 + +# define SSL3_CK_DHE_DSS_DES_40_CBC_SHA 0x03000011 +# define SSL3_CK_EDH_DSS_DES_40_CBC_SHA SSL3_CK_DHE_DSS_DES_40_CBC_SHA +# define SSL3_CK_DHE_DSS_DES_64_CBC_SHA 0x03000012 +# define SSL3_CK_EDH_DSS_DES_64_CBC_SHA SSL3_CK_DHE_DSS_DES_64_CBC_SHA +# define SSL3_CK_DHE_DSS_DES_192_CBC3_SHA 0x03000013 +# define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA SSL3_CK_DHE_DSS_DES_192_CBC3_SHA +# define SSL3_CK_DHE_RSA_DES_40_CBC_SHA 0x03000014 +# define SSL3_CK_EDH_RSA_DES_40_CBC_SHA SSL3_CK_DHE_RSA_DES_40_CBC_SHA +# define SSL3_CK_DHE_RSA_DES_64_CBC_SHA 0x03000015 +# define SSL3_CK_EDH_RSA_DES_64_CBC_SHA SSL3_CK_DHE_RSA_DES_64_CBC_SHA +# define SSL3_CK_DHE_RSA_DES_192_CBC3_SHA 0x03000016 +# define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA SSL3_CK_DHE_RSA_DES_192_CBC3_SHA + +# define SSL3_CK_ADH_RC4_40_MD5 0x03000017 +# define SSL3_CK_ADH_RC4_128_MD5 0x03000018 +# define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019 +# define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A +# define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +# define SSL3_RFC_RSA_NULL_MD5 "TLS_RSA_WITH_NULL_MD5" +# define SSL3_RFC_RSA_NULL_SHA "TLS_RSA_WITH_NULL_SHA" +# define SSL3_RFC_RSA_DES_192_CBC3_SHA "TLS_RSA_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_ADH_DES_192_CBC_SHA "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_RSA_IDEA_128_SHA "TLS_RSA_WITH_IDEA_CBC_SHA" +# define SSL3_RFC_RSA_RC4_128_MD5 "TLS_RSA_WITH_RC4_128_MD5" +# define SSL3_RFC_RSA_RC4_128_SHA "TLS_RSA_WITH_RC4_128_SHA" +# define SSL3_RFC_ADH_RC4_128_MD5 "TLS_DH_anon_WITH_RC4_128_MD5" + +# define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5" +# define SSL3_TXT_RSA_NULL_SHA "NULL-SHA" +# define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5" +# define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5" +# define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA" +# define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5" +# define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA" +# define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA" +# define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA" +# define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA" + +# define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA" +# define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA" +# define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA" +# define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA" +# define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA" +# define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA" + +# define SSL3_TXT_DHE_DSS_DES_40_CBC_SHA "EXP-DHE-DSS-DES-CBC-SHA" +# define SSL3_TXT_DHE_DSS_DES_64_CBC_SHA "DHE-DSS-DES-CBC-SHA" +# define SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA "DHE-DSS-DES-CBC3-SHA" +# define SSL3_TXT_DHE_RSA_DES_40_CBC_SHA "EXP-DHE-RSA-DES-CBC-SHA" +# define SSL3_TXT_DHE_RSA_DES_64_CBC_SHA "DHE-RSA-DES-CBC-SHA" +# define SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA "DHE-RSA-DES-CBC3-SHA" + +/* + * This next block of six "EDH" labels is for backward compatibility with + * older versions of OpenSSL. New code should use the six "DHE" labels above + * instead: + */ +# define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA" +# define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA" +# define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA" +# define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA" +# define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA" +# define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA" + +# define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5" +# define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5" +# define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA" +# define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA" +# define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" + +# define SSL3_SSL_SESSION_ID_LENGTH 32 +# define SSL3_MAX_SSL_SESSION_ID_LENGTH 32 + +# define SSL3_MASTER_SECRET_SIZE 48 +# define SSL3_RANDOM_SIZE 32 +# define SSL3_SESSION_ID_SIZE 32 +# define SSL3_RT_HEADER_LENGTH 5 + +# define SSL3_HM_HEADER_LENGTH 4 + +# ifndef SSL3_ALIGN_PAYLOAD + /* + * Some will argue that this increases memory footprint, but it's not + * actually true. Point is that malloc has to return at least 64-bit aligned + * pointers, meaning that allocating 5 bytes wastes 3 bytes in either case. + * Suggested pre-gaping simply moves these wasted bytes from the end of + * allocated region to its front, but makes data payload aligned, which + * improves performance:-) + */ +# define SSL3_ALIGN_PAYLOAD 8 +# else +# if (SSL3_ALIGN_PAYLOAD&(SSL3_ALIGN_PAYLOAD-1))!=0 +# error "insane SSL3_ALIGN_PAYLOAD" +# undef SSL3_ALIGN_PAYLOAD +# endif +# endif + +/* + * This is the maximum MAC (digest) size used by the SSL library. Currently + * maximum of 20 is used by SHA1, but we reserve for future extension for + * 512-bit hashes. + */ + +# define SSL3_RT_MAX_MD_SIZE 64 + +/* + * Maximum block size used in all ciphersuites. Currently 16 for AES. + */ + +# define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16 + +# define SSL3_RT_MAX_EXTRA (16384) + +/* Maximum plaintext length: defined by SSL/TLS standards */ +# define SSL3_RT_MAX_PLAIN_LENGTH 16384 +/* Maximum compression overhead: defined by SSL/TLS standards */ +# define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024 + +/* + * The standards give a maximum encryption overhead of 1024 bytes. In + * practice the value is lower than this. The overhead is the maximum number + * of padding bytes (256) plus the mac size. + */ +# define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE) +# define SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD 256 + +/* + * OpenSSL currently only uses a padding length of at most one block so the + * send overhead is smaller. + */ + +# define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \ + (SSL_RT_MAX_CIPHER_BLOCK_SIZE + SSL3_RT_MAX_MD_SIZE) + +/* If compression isn't used don't include the compression overhead */ + +# ifdef OPENSSL_NO_COMP +# define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH +# else +# define SSL3_RT_MAX_COMPRESSED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH+SSL3_RT_MAX_COMPRESSED_OVERHEAD) +# endif +# define SSL3_RT_MAX_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_ENCRYPTED_OVERHEAD+SSL3_RT_MAX_COMPRESSED_LENGTH) +# define SSL3_RT_MAX_TLS13_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD) +# define SSL3_RT_MAX_PACKET_SIZE \ + (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH) + +# define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54" +# define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52" + +/* SSL3_VERSION is defined in prov_ssl.h */ +# 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 + +/* Pseudo content types to indicate additional parameters */ +# define TLS1_RT_CRYPTO 0x1000 +# define TLS1_RT_CRYPTO_PREMASTER (TLS1_RT_CRYPTO | 0x1) +# define TLS1_RT_CRYPTO_CLIENT_RANDOM (TLS1_RT_CRYPTO | 0x2) +# define TLS1_RT_CRYPTO_SERVER_RANDOM (TLS1_RT_CRYPTO | 0x3) +# define TLS1_RT_CRYPTO_MASTER (TLS1_RT_CRYPTO | 0x4) + +# define TLS1_RT_CRYPTO_READ 0x0000 +# define TLS1_RT_CRYPTO_WRITE 0x0100 +# define TLS1_RT_CRYPTO_MAC (TLS1_RT_CRYPTO | 0x5) +# define TLS1_RT_CRYPTO_KEY (TLS1_RT_CRYPTO | 0x6) +# define TLS1_RT_CRYPTO_IV (TLS1_RT_CRYPTO | 0x7) +# define TLS1_RT_CRYPTO_FIXED_IV (TLS1_RT_CRYPTO | 0x8) + +/* Pseudo content types for SSL/TLS header info */ +# define SSL3_RT_HEADER 0x100 +# define SSL3_RT_INNER_CONTENT_TYPE 0x101 + +# define SSL3_AL_WARNING 1 +# define SSL3_AL_FATAL 2 + +# define SSL3_AD_CLOSE_NOTIFY 0 +# define SSL3_AD_UNEXPECTED_MESSAGE 10/* fatal */ +# define SSL3_AD_BAD_RECORD_MAC 20/* fatal */ +# define SSL3_AD_DECOMPRESSION_FAILURE 30/* fatal */ +# define SSL3_AD_HANDSHAKE_FAILURE 40/* fatal */ +# define SSL3_AD_NO_CERTIFICATE 41 +# define SSL3_AD_BAD_CERTIFICATE 42 +# define SSL3_AD_UNSUPPORTED_CERTIFICATE 43 +# define SSL3_AD_CERTIFICATE_REVOKED 44 +# define SSL3_AD_CERTIFICATE_EXPIRED 45 +# define SSL3_AD_CERTIFICATE_UNKNOWN 46 +# define SSL3_AD_ILLEGAL_PARAMETER 47/* fatal */ + +# define TLS1_HB_REQUEST 1 +# define TLS1_HB_RESPONSE 2 + + +# define SSL3_CT_RSA_SIGN 1 +# define SSL3_CT_DSS_SIGN 2 +# define SSL3_CT_RSA_FIXED_DH 3 +# define SSL3_CT_DSS_FIXED_DH 4 +# define SSL3_CT_RSA_EPHEMERAL_DH 5 +# define SSL3_CT_DSS_EPHEMERAL_DH 6 +# define SSL3_CT_FORTEZZA_DMS 20 +/* + * SSL3_CT_NUMBER is used to size arrays and it must be large enough to + * contain all of the cert types defined for *either* SSLv3 and TLSv1. + */ +# define SSL3_CT_NUMBER 12 + +# if defined(TLS_CT_NUMBER) +# if TLS_CT_NUMBER != SSL3_CT_NUMBER +# error "SSL/TLS CT_NUMBER values do not match" +# endif +# endif + +/* No longer used as of OpenSSL 1.1.1 */ +# define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 + +/* Removed from OpenSSL 1.1.0 */ +# define TLS1_FLAGS_TLS_PADDING_BUG 0x0 + +# define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 + +/* Set if we encrypt then mac instead of usual mac then encrypt */ +# define TLS1_FLAGS_ENCRYPT_THEN_MAC_READ 0x0100 +# define TLS1_FLAGS_ENCRYPT_THEN_MAC TLS1_FLAGS_ENCRYPT_THEN_MAC_READ + +/* Set if extended master secret extension received from peer */ +# define TLS1_FLAGS_RECEIVED_EXTMS 0x0200 + +# define TLS1_FLAGS_ENCRYPT_THEN_MAC_WRITE 0x0400 + +# define TLS1_FLAGS_STATELESS 0x0800 + +/* Set if extended master secret extension required on renegotiation */ +# define TLS1_FLAGS_REQUIRED_EXTMS 0x1000 + +# define SSL3_MT_HELLO_REQUEST 0 +# define SSL3_MT_CLIENT_HELLO 1 +# define SSL3_MT_SERVER_HELLO 2 +# define SSL3_MT_NEWSESSION_TICKET 4 +# define SSL3_MT_END_OF_EARLY_DATA 5 +# define SSL3_MT_ENCRYPTED_EXTENSIONS 8 +# define SSL3_MT_CERTIFICATE 11 +# define SSL3_MT_SERVER_KEY_EXCHANGE 12 +# define SSL3_MT_CERTIFICATE_REQUEST 13 +# define SSL3_MT_SERVER_DONE 14 +# define SSL3_MT_CERTIFICATE_VERIFY 15 +# define SSL3_MT_CLIENT_KEY_EXCHANGE 16 +# define SSL3_MT_FINISHED 20 +# define SSL3_MT_CERTIFICATE_URL 21 +# define SSL3_MT_CERTIFICATE_STATUS 22 +# define SSL3_MT_SUPPLEMENTAL_DATA 23 +# define SSL3_MT_KEY_UPDATE 24 +# ifndef OPENSSL_NO_NEXTPROTONEG +# define SSL3_MT_NEXT_PROTO 67 +# endif +# define SSL3_MT_MESSAGE_HASH 254 +# define DTLS1_MT_HELLO_VERIFY_REQUEST 3 + +/* Dummy message type for handling CCS like a normal handshake message */ +# define SSL3_MT_CHANGE_CIPHER_SPEC 0x0101 + +# define SSL3_MT_CCS 1 + +/* These are used when changing over to a new cipher */ +# define SSL3_CC_READ 0x001 +# define SSL3_CC_WRITE 0x002 +# define SSL3_CC_CLIENT 0x010 +# define SSL3_CC_SERVER 0x020 +# define SSL3_CC_EARLY 0x040 +# define SSL3_CC_HANDSHAKE 0x080 +# define SSL3_CC_APPLICATION 0x100 +# define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT|SSL3_CC_WRITE) +# define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER|SSL3_CC_READ) +# define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT|SSL3_CC_READ) +# define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER|SSL3_CC_WRITE) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/openssl/sslerr.h b/include/openssl/sslerr.h new file mode 100644 index 0000000..f188255 --- /dev/null +++ b/include/openssl/sslerr.h @@ -0,0 +1,344 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_SSLERR_H +# define OPENSSL_SSLERR_H +# pragma once + +# include +# include +# include + + + +/* + * SSL reason codes. + */ +# define SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY 291 +# define SSL_R_APP_DATA_IN_HANDSHAKE 100 +# define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 +# define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE 158 +# define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +# define SSL_R_BAD_CIPHER 186 +# define SSL_R_BAD_DATA 390 +# define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 +# define SSL_R_BAD_DECOMPRESSION 107 +# define SSL_R_BAD_DH_VALUE 102 +# define SSL_R_BAD_DIGEST_LENGTH 111 +# define SSL_R_BAD_EARLY_DATA 233 +# define SSL_R_BAD_ECC_CERT 304 +# define SSL_R_BAD_ECPOINT 306 +# define SSL_R_BAD_EXTENSION 110 +# define SSL_R_BAD_HANDSHAKE_LENGTH 332 +# define SSL_R_BAD_HANDSHAKE_STATE 236 +# define SSL_R_BAD_HELLO_REQUEST 105 +# define SSL_R_BAD_HRR_VERSION 263 +# define SSL_R_BAD_KEY_SHARE 108 +# define SSL_R_BAD_KEY_UPDATE 122 +# define SSL_R_BAD_LEGACY_VERSION 292 +# define SSL_R_BAD_LENGTH 271 +# define SSL_R_BAD_PACKET 240 +# define SSL_R_BAD_PACKET_LENGTH 115 +# define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +# define SSL_R_BAD_PSK 219 +# define SSL_R_BAD_PSK_IDENTITY 114 +# define SSL_R_BAD_RECORD_TYPE 443 +# define SSL_R_BAD_RSA_ENCRYPT 119 +# define SSL_R_BAD_SIGNATURE 123 +# define SSL_R_BAD_SRP_A_LENGTH 347 +# define SSL_R_BAD_SRP_PARAMETERS 371 +# define SSL_R_BAD_SRTP_MKI_VALUE 352 +# define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 +# define SSL_R_BAD_SSL_FILETYPE 124 +# define SSL_R_BAD_VALUE 384 +# define SSL_R_BAD_WRITE_RETRY 127 +# define SSL_R_BINDER_DOES_NOT_VERIFY 253 +# define SSL_R_BIO_NOT_SET 128 +# define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 +# define SSL_R_BN_LIB 130 +# define SSL_R_CALLBACK_FAILED 234 +# define SSL_R_CANNOT_CHANGE_CIPHER 109 +# define SSL_R_CANNOT_GET_GROUP_NAME 299 +# define SSL_R_CA_DN_LENGTH_MISMATCH 131 +# define SSL_R_CA_KEY_TOO_SMALL 397 +# define SSL_R_CA_MD_TOO_WEAK 398 +# define SSL_R_CCS_RECEIVED_EARLY 133 +# define SSL_R_CERTIFICATE_VERIFY_FAILED 134 +# define SSL_R_CERT_CB_ERROR 377 +# define SSL_R_CERT_LENGTH_MISMATCH 135 +# define SSL_R_CIPHERSUITE_DIGEST_HAS_CHANGED 218 +# define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 +# define SSL_R_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_COPY_PARAMETERS_FAILED 296 +# define SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED 206 +# define SSL_R_DANE_ALREADY_ENABLED 172 +# define SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL 173 +# define SSL_R_DANE_NOT_ENABLED 175 +# define SSL_R_DANE_TLSA_BAD_CERTIFICATE 180 +# define SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE 184 +# define SSL_R_DANE_TLSA_BAD_DATA_LENGTH 189 +# define SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH 192 +# define SSL_R_DANE_TLSA_BAD_MATCHING_TYPE 200 +# define SSL_R_DANE_TLSA_BAD_PUBLIC_KEY 201 +# define SSL_R_DANE_TLSA_BAD_SELECTOR 202 +# define SSL_R_DANE_TLSA_NULL_DATA 203 +# define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 +# define SSL_R_DATA_LENGTH_TOO_LONG 146 +# define SSL_R_DECRYPTION_FAILED 147 +# define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 +# define SSL_R_DH_KEY_TOO_SMALL 394 +# define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 +# define SSL_R_DIGEST_CHECK_FAILED 149 +# define SSL_R_DTLS_MESSAGE_TOO_BIG 334 +# define SSL_R_DUPLICATE_COMPRESSION_ID 309 +# define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 +# define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 +# define SSL_R_EE_KEY_TOO_SMALL 399 +# define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 +# define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 +# define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 +# define SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN 204 +# define SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE 194 +# define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 +# define SSL_R_EXTENSION_NOT_RECEIVED 279 +# define SSL_R_EXTRA_DATA_IN_MESSAGE 153 +# define SSL_R_EXT_LENGTH_MISMATCH 163 +# define SSL_R_FAILED_TO_INIT_ASYNC 405 +# define SSL_R_FRAGMENTED_CLIENT_HELLO 401 +# define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 +# define SSL_R_HTTPS_PROXY_REQUEST 155 +# define SSL_R_HTTP_REQUEST 156 +# define SSL_R_ILLEGAL_POINT_COMPRESSION 162 +# define SSL_R_ILLEGAL_SUITEB_DIGEST 380 +# define SSL_R_INAPPROPRIATE_FALLBACK 373 +# define SSL_R_INCONSISTENT_COMPRESSION 340 +# define SSL_R_INCONSISTENT_EARLY_DATA_ALPN 222 +# define SSL_R_INCONSISTENT_EARLY_DATA_SNI 231 +# define SSL_R_INCONSISTENT_EXTMS 104 +# define SSL_R_INSUFFICIENT_SECURITY 241 +# define SSL_R_INVALID_ALERT 205 +# define SSL_R_INVALID_CCS_MESSAGE 260 +# define SSL_R_INVALID_CERTIFICATE_OR_ALG 238 +# define SSL_R_INVALID_COMMAND 280 +# define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +# define SSL_R_INVALID_CONFIG 283 +# define SSL_R_INVALID_CONFIGURATION_NAME 113 +# define SSL_R_INVALID_CONTEXT 282 +# define SSL_R_INVALID_CT_VALIDATION_TYPE 212 +# define SSL_R_INVALID_KEY_UPDATE_TYPE 120 +# define SSL_R_INVALID_MAX_EARLY_DATA 174 +# define SSL_R_INVALID_NULL_CMD_NAME 385 +# define SSL_R_INVALID_SEQUENCE_NUMBER 402 +# define SSL_R_INVALID_SERVERINFO_DATA 388 +# define SSL_R_INVALID_SESSION_ID 999 +# define SSL_R_INVALID_SRP_USERNAME 357 +# define SSL_R_INVALID_STATUS_RESPONSE 328 +# define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 +# define SSL_R_LEGACY_SIGALG_DISALLOWED_OR_UNSUPPORTED 333 +# define SSL_R_LENGTH_MISMATCH 159 +# define SSL_R_LENGTH_TOO_LONG 404 +# define SSL_R_LENGTH_TOO_SHORT 160 +# define SSL_R_LIBRARY_BUG 274 +# define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +# define SSL_R_MISSING_DSA_SIGNING_CERT 165 +# define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 +# define SSL_R_MISSING_FATAL 256 +# define SSL_R_MISSING_PARAMETERS 290 +# define SSL_R_MISSING_PSK_KEX_MODES_EXTENSION 310 +# define SSL_R_MISSING_RSA_CERTIFICATE 168 +# define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 +# define SSL_R_MISSING_RSA_SIGNING_CERT 170 +# define SSL_R_MISSING_SIGALGS_EXTENSION 112 +# define SSL_R_MISSING_SIGNING_CERT 221 +# define SSL_R_MISSING_SRP_PARAM 358 +# define SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION 209 +# define SSL_R_MISSING_TMP_DH_KEY 171 +# define SSL_R_MISSING_TMP_ECDH_KEY 311 +# define SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA 293 +# define SSL_R_NOT_ON_RECORD_BOUNDARY 182 +# define SSL_R_NOT_REPLACING_CERTIFICATE 289 +# define SSL_R_NOT_SERVER 284 +# define SSL_R_NO_APPLICATION_PROTOCOL 235 +# define SSL_R_NO_CERTIFICATES_RETURNED 176 +# define SSL_R_NO_CERTIFICATE_ASSIGNED 177 +# define SSL_R_NO_CERTIFICATE_SET 179 +# define SSL_R_NO_CHANGE_FOLLOWING_HRR 214 +# define SSL_R_NO_CIPHERS_AVAILABLE 181 +# define SSL_R_NO_CIPHERS_SPECIFIED 183 +# define SSL_R_NO_CIPHER_MATCH 185 +# define SSL_R_NO_CLIENT_CERT_METHOD 331 +# define SSL_R_NO_COMPRESSION_SPECIFIED 187 +# define SSL_R_NO_COOKIE_CALLBACK_SET 287 +# define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 +# define SSL_R_NO_METHOD_SPECIFIED 188 +# define SSL_R_NO_PEM_EXTENSIONS 389 +# define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 +# define SSL_R_NO_PROTOCOLS_AVAILABLE 191 +# define SSL_R_NO_RENEGOTIATION 339 +# define SSL_R_NO_REQUIRED_DIGEST 324 +# define SSL_R_NO_SHARED_CIPHER 193 +# define SSL_R_NO_SHARED_GROUPS 410 +# define SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS 376 +# define SSL_R_NO_SRTP_PROFILES 359 +# define SSL_R_NO_SUITABLE_DIGEST_ALGORITHM 297 +# define SSL_R_NO_SUITABLE_GROUPS 295 +# define SSL_R_NO_SUITABLE_KEY_SHARE 101 +# define SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM 118 +# define SSL_R_NO_VALID_SCTS 216 +# define SSL_R_NO_VERIFY_COOKIE_CALLBACK 403 +# define SSL_R_NULL_SSL_CTX 195 +# define SSL_R_NULL_SSL_METHOD_PASSED 196 +# define SSL_R_OCSP_CALLBACK_FAILURE 305 +# define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 +# define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +# define SSL_R_OVERFLOW_ERROR 237 +# define SSL_R_PACKET_LENGTH_TOO_LONG 198 +# define SSL_R_PARSE_TLSEXT 227 +# define SSL_R_PATH_TOO_LONG 270 +# define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 +# define SSL_R_PEM_NAME_BAD_PREFIX 391 +# define SSL_R_PEM_NAME_TOO_SHORT 392 +# define SSL_R_PIPELINE_FAILURE 406 +# define SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR 278 +# define SSL_R_PRIVATE_KEY_MISMATCH 288 +# define SSL_R_PROTOCOL_IS_SHUTDOWN 207 +# define SSL_R_PSK_IDENTITY_NOT_FOUND 223 +# define SSL_R_PSK_NO_CLIENT_CB 224 +# define SSL_R_PSK_NO_SERVER_CB 225 +# define SSL_R_READ_BIO_NOT_SET 211 +# define SSL_R_READ_TIMEOUT_EXPIRED 312 +# define SSL_R_RECORD_LENGTH_MISMATCH 213 +# define SSL_R_RECORD_TOO_SMALL 298 +# define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 +# define SSL_R_RENEGOTIATION_ENCODING_ERR 336 +# define SSL_R_RENEGOTIATION_MISMATCH 337 +# define SSL_R_REQUEST_PENDING 285 +# define SSL_R_REQUEST_SENT 286 +# define SSL_R_REQUIRED_CIPHER_MISSING 215 +# define SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING 342 +# define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 +# define SSL_R_SCT_VERIFICATION_FAILED 208 +# define SSL_R_SERVERHELLO_TLSEXT 275 +# define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 +# define SSL_R_SHUTDOWN_WHILE_IN_INIT 407 +# define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 +# define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 +# define SSL_R_SRP_A_CALC 361 +# define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 +# define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 +# define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 +# define SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH 232 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 +# define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 +# define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 +# define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 +# define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 +# define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 +# define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 +# define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 +# define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 +# define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 +# define SSL_R_SSL_COMMAND_SECTION_EMPTY 117 +# define SSL_R_SSL_COMMAND_SECTION_NOT_FOUND 125 +# define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 +# define SSL_R_SSL_HANDSHAKE_FAILURE 229 +# define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 +# define SSL_R_SSL_NEGATIVE_LENGTH 372 +# define SSL_R_SSL_SECTION_EMPTY 126 +# define SSL_R_SSL_SECTION_NOT_FOUND 136 +# define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 +# define SSL_R_SSL_SESSION_ID_CONFLICT 302 +# define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 +# define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 +# define SSL_R_SSL_SESSION_ID_TOO_LONG 408 +# define SSL_R_SSL_SESSION_VERSION_MISMATCH 210 +# define SSL_R_STILL_IN_INIT 121 +# define SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED 1116 +# define SSL_R_TLSV13_ALERT_MISSING_EXTENSION 1109 +# define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 +# define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 +# define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 +# define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 +# define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 +# define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 +# define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 +# define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 +# define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 +# define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 +# define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 +# define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 +# define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 +# define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 +# define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 +# define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 +# define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 +# define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 +# define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 +# define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 +# define SSL_R_TOO_MANY_KEY_UPDATES 132 +# define SSL_R_TOO_MANY_WARN_ALERTS 409 +# define SSL_R_TOO_MUCH_EARLY_DATA 164 +# define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 +# define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 +# define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 +# define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 +# define SSL_R_UNEXPECTED_CCS_MESSAGE 262 +# define SSL_R_UNEXPECTED_END_OF_EARLY_DATA 178 +# define SSL_R_UNEXPECTED_EOF_WHILE_READING 294 +# define SSL_R_UNEXPECTED_MESSAGE 244 +# define SSL_R_UNEXPECTED_RECORD 245 +# define SSL_R_UNINITIALIZED 276 +# define SSL_R_UNKNOWN_ALERT_TYPE 246 +# define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 +# define SSL_R_UNKNOWN_CIPHER_RETURNED 248 +# define SSL_R_UNKNOWN_CIPHER_TYPE 249 +# define SSL_R_UNKNOWN_CMD_NAME 386 +# define SSL_R_UNKNOWN_COMMAND 139 +# define SSL_R_UNKNOWN_DIGEST 368 +# define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +# define SSL_R_UNKNOWN_PKEY_TYPE 251 +# define SSL_R_UNKNOWN_PROTOCOL 252 +# define SSL_R_UNKNOWN_SSL_VERSION 254 +# define SSL_R_UNKNOWN_STATE 255 +# define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 +# define SSL_R_UNSOLICITED_EXTENSION 217 +# define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 +# define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 +# define SSL_R_UNSUPPORTED_PROTOCOL 258 +# define SSL_R_UNSUPPORTED_SSL_VERSION 259 +# define SSL_R_UNSUPPORTED_STATUS_TYPE 329 +# define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 +# define SSL_R_VERSION_TOO_HIGH 166 +# define SSL_R_VERSION_TOO_LOW 396 +# define SSL_R_WRONG_CERTIFICATE_TYPE 383 +# define SSL_R_WRONG_CIPHER_RETURNED 261 +# define SSL_R_WRONG_CURVE 378 +# define SSL_R_WRONG_SIGNATURE_LENGTH 264 +# define SSL_R_WRONG_SIGNATURE_SIZE 265 +# define SSL_R_WRONG_SIGNATURE_TYPE 370 +# define SSL_R_WRONG_SSL_VERSION 266 +# define SSL_R_WRONG_VERSION_NUMBER 267 +# define SSL_R_X509_LIB 268 +# define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 + +#endif diff --git a/include/openssl/sslerr_legacy.h b/include/openssl/sslerr_legacy.h new file mode 100644 index 0000000..ccf6d3b --- /dev/null +++ b/include/openssl/sslerr_legacy.h @@ -0,0 +1,468 @@ +/* + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with 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 header file preserves symbols from pre-3.0 OpenSSL. + * It should never be included directly, as it's already included + * by the public sslerr.h headers, and since it will go away some + * time in the future. + */ + +#ifndef OPENSSL_SSLERR_LEGACY_H +# define OPENSSL_SSLERR_LEGACY_H +# pragma once + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int ERR_load_SSL_strings(void); + +/* Collected _F_ macros from OpenSSL 1.1.1 */ + +/* + * SSL function codes. + */ +# define SSL_F_ADD_CLIENT_KEY_SHARE_EXT 0 +# define SSL_F_ADD_KEY_SHARE 0 +# define SSL_F_BYTES_TO_CIPHER_LIST 0 +# define SSL_F_CHECK_SUITEB_CIPHER_LIST 0 +# define SSL_F_CIPHERSUITE_CB 0 +# define SSL_F_CONSTRUCT_CA_NAMES 0 +# define SSL_F_CONSTRUCT_KEY_EXCHANGE_TBS 0 +# define SSL_F_CONSTRUCT_STATEFUL_TICKET 0 +# define SSL_F_CONSTRUCT_STATELESS_TICKET 0 +# define SSL_F_CREATE_SYNTHETIC_MESSAGE_HASH 0 +# define SSL_F_CREATE_TICKET_PREQUEL 0 +# define SSL_F_CT_MOVE_SCTS 0 +# define SSL_F_CT_STRICT 0 +# define SSL_F_CUSTOM_EXT_ADD 0 +# define SSL_F_CUSTOM_EXT_PARSE 0 +# define SSL_F_D2I_SSL_SESSION 0 +# define SSL_F_DANE_CTX_ENABLE 0 +# define SSL_F_DANE_MTYPE_SET 0 +# define SSL_F_DANE_TLSA_ADD 0 +# define SSL_F_DERIVE_SECRET_KEY_AND_IV 0 +# define SSL_F_DO_DTLS1_WRITE 0 +# define SSL_F_DO_SSL3_WRITE 0 +# define SSL_F_DTLS1_BUFFER_RECORD 0 +# define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 0 +# define SSL_F_DTLS1_HEARTBEAT 0 +# define SSL_F_DTLS1_HM_FRAGMENT_NEW 0 +# define SSL_F_DTLS1_PREPROCESS_FRAGMENT 0 +# define SSL_F_DTLS1_PROCESS_BUFFERED_RECORDS 0 +# define SSL_F_DTLS1_PROCESS_RECORD 0 +# define SSL_F_DTLS1_READ_BYTES 0 +# define SSL_F_DTLS1_READ_FAILED 0 +# define SSL_F_DTLS1_RETRANSMIT_MESSAGE 0 +# define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 0 +# define SSL_F_DTLS1_WRITE_BYTES 0 +# define SSL_F_DTLSV1_LISTEN 0 +# define SSL_F_DTLS_CONSTRUCT_CHANGE_CIPHER_SPEC 0 +# define SSL_F_DTLS_CONSTRUCT_HELLO_VERIFY_REQUEST 0 +# define SSL_F_DTLS_GET_REASSEMBLED_MESSAGE 0 +# define SSL_F_DTLS_PROCESS_HELLO_VERIFY 0 +# define SSL_F_DTLS_RECORD_LAYER_NEW 0 +# define SSL_F_DTLS_WAIT_FOR_DRY 0 +# define SSL_F_EARLY_DATA_COUNT_OK 0 +# define SSL_F_FINAL_EARLY_DATA 0 +# define SSL_F_FINAL_EC_PT_FORMATS 0 +# define SSL_F_FINAL_EMS 0 +# define SSL_F_FINAL_KEY_SHARE 0 +# define SSL_F_FINAL_MAXFRAGMENTLEN 0 +# define SSL_F_FINAL_RENEGOTIATE 0 +# define SSL_F_FINAL_SERVER_NAME 0 +# define SSL_F_FINAL_SIG_ALGS 0 +# define SSL_F_GET_CERT_VERIFY_TBS_DATA 0 +# define SSL_F_NSS_KEYLOG_INT 0 +# define SSL_F_OPENSSL_INIT_SSL 0 +# define SSL_F_OSSL_STATEM_CLIENT13_READ_TRANSITION 0 +# define SSL_F_OSSL_STATEM_CLIENT13_WRITE_TRANSITION 0 +# define SSL_F_OSSL_STATEM_CLIENT_CONSTRUCT_MESSAGE 0 +# define SSL_F_OSSL_STATEM_CLIENT_POST_PROCESS_MESSAGE 0 +# define SSL_F_OSSL_STATEM_CLIENT_PROCESS_MESSAGE 0 +# define SSL_F_OSSL_STATEM_CLIENT_READ_TRANSITION 0 +# define SSL_F_OSSL_STATEM_CLIENT_WRITE_TRANSITION 0 +# define SSL_F_OSSL_STATEM_SERVER13_READ_TRANSITION 0 +# define SSL_F_OSSL_STATEM_SERVER13_WRITE_TRANSITION 0 +# define SSL_F_OSSL_STATEM_SERVER_CONSTRUCT_MESSAGE 0 +# define SSL_F_OSSL_STATEM_SERVER_POST_PROCESS_MESSAGE 0 +# define SSL_F_OSSL_STATEM_SERVER_POST_WORK 0 +# define SSL_F_OSSL_STATEM_SERVER_PRE_WORK 0 +# define SSL_F_OSSL_STATEM_SERVER_PROCESS_MESSAGE 0 +# define SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION 0 +# define SSL_F_OSSL_STATEM_SERVER_WRITE_TRANSITION 0 +# define SSL_F_PARSE_CA_NAMES 0 +# define SSL_F_PITEM_NEW 0 +# define SSL_F_PQUEUE_NEW 0 +# define SSL_F_PROCESS_KEY_SHARE_EXT 0 +# define SSL_F_READ_STATE_MACHINE 0 +# define SSL_F_SET_CLIENT_CIPHERSUITE 0 +# define SSL_F_SRP_GENERATE_CLIENT_MASTER_SECRET 0 +# define SSL_F_SRP_GENERATE_SERVER_MASTER_SECRET 0 +# define SSL_F_SRP_VERIFY_SERVER_PARAM 0 +# define SSL_F_SSL3_CHANGE_CIPHER_STATE 0 +# define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 0 +# define SSL_F_SSL3_CTRL 0 +# define SSL_F_SSL3_CTX_CTRL 0 +# define SSL_F_SSL3_DIGEST_CACHED_RECORDS 0 +# define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 0 +# define SSL_F_SSL3_ENC 0 +# define SSL_F_SSL3_FINAL_FINISH_MAC 0 +# define SSL_F_SSL3_FINISH_MAC 0 +# define SSL_F_SSL3_GENERATE_KEY_BLOCK 0 +# define SSL_F_SSL3_GENERATE_MASTER_SECRET 0 +# define SSL_F_SSL3_GET_RECORD 0 +# define SSL_F_SSL3_INIT_FINISHED_MAC 0 +# define SSL_F_SSL3_OUTPUT_CERT_CHAIN 0 +# define SSL_F_SSL3_READ_BYTES 0 +# define SSL_F_SSL3_READ_N 0 +# define SSL_F_SSL3_SETUP_KEY_BLOCK 0 +# define SSL_F_SSL3_SETUP_READ_BUFFER 0 +# define SSL_F_SSL3_SETUP_WRITE_BUFFER 0 +# define SSL_F_SSL3_WRITE_BYTES 0 +# define SSL_F_SSL3_WRITE_PENDING 0 +# define SSL_F_SSL_ADD_CERT_CHAIN 0 +# define SSL_F_SSL_ADD_CERT_TO_BUF 0 +# define SSL_F_SSL_ADD_CERT_TO_WPACKET 0 +# define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 0 +# define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 0 +# define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 0 +# define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 0 +# define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 0 +# define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 0 +# define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 0 +# define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 0 +# define SSL_F_SSL_BAD_METHOD 0 +# define SSL_F_SSL_BUILD_CERT_CHAIN 0 +# define SSL_F_SSL_BYTES_TO_CIPHER_LIST 0 +# define SSL_F_SSL_CACHE_CIPHERLIST 0 +# define SSL_F_SSL_CERT_ADD0_CHAIN_CERT 0 +# define SSL_F_SSL_CERT_DUP 0 +# define SSL_F_SSL_CERT_NEW 0 +# define SSL_F_SSL_CERT_SET0_CHAIN 0 +# define SSL_F_SSL_CHECK_PRIVATE_KEY 0 +# define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 0 +# define SSL_F_SSL_CHECK_SRP_EXT_CLIENTHELLO 0 +# define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 0 +# define SSL_F_SSL_CHOOSE_CLIENT_VERSION 0 +# define SSL_F_SSL_CIPHER_DESCRIPTION 0 +# define SSL_F_SSL_CIPHER_LIST_TO_BYTES 0 +# define SSL_F_SSL_CIPHER_PROCESS_RULESTR 0 +# define SSL_F_SSL_CIPHER_STRENGTH_SORT 0 +# define SSL_F_SSL_CLEAR 0 +# define SSL_F_SSL_CLIENT_HELLO_GET1_EXTENSIONS_PRESENT 0 +# define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 0 +# define SSL_F_SSL_CONF_CMD 0 +# define SSL_F_SSL_CREATE_CIPHER_LIST 0 +# define SSL_F_SSL_CTRL 0 +# define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 0 +# define SSL_F_SSL_CTX_ENABLE_CT 0 +# define SSL_F_SSL_CTX_MAKE_PROFILES 0 +# define SSL_F_SSL_CTX_NEW 0 +# define SSL_F_SSL_CTX_SET_ALPN_PROTOS 0 +# define SSL_F_SSL_CTX_SET_CIPHER_LIST 0 +# define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 0 +# define SSL_F_SSL_CTX_SET_CT_VALIDATION_CALLBACK 0 +# define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 0 +# define SSL_F_SSL_CTX_SET_SSL_VERSION 0 +# define SSL_F_SSL_CTX_SET_TLSEXT_MAX_FRAGMENT_LENGTH 0 +# define SSL_F_SSL_CTX_USE_CERTIFICATE 0 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 0 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 0 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY 0 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 0 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 0 +# define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 0 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 0 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 0 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 0 +# define SSL_F_SSL_CTX_USE_SERVERINFO 0 +# define SSL_F_SSL_CTX_USE_SERVERINFO_EX 0 +# define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 0 +# define SSL_F_SSL_DANE_DUP 0 +# define SSL_F_SSL_DANE_ENABLE 0 +# define SSL_F_SSL_DERIVE 0 +# define SSL_F_SSL_DO_CONFIG 0 +# define SSL_F_SSL_DO_HANDSHAKE 0 +# define SSL_F_SSL_DUP_CA_LIST 0 +# define SSL_F_SSL_ENABLE_CT 0 +# define SSL_F_SSL_GENERATE_PKEY_GROUP 0 +# define SSL_F_SSL_GENERATE_SESSION_ID 0 +# define SSL_F_SSL_GET_NEW_SESSION 0 +# define SSL_F_SSL_GET_PREV_SESSION 0 +# define SSL_F_SSL_GET_SERVER_CERT_INDEX 0 +# define SSL_F_SSL_GET_SIGN_PKEY 0 +# define SSL_F_SSL_HANDSHAKE_HASH 0 +# define SSL_F_SSL_INIT_WBIO_BUFFER 0 +# define SSL_F_SSL_KEY_UPDATE 0 +# define SSL_F_SSL_LOAD_CLIENT_CA_FILE 0 +# define SSL_F_SSL_LOG_MASTER_SECRET 0 +# define SSL_F_SSL_LOG_RSA_CLIENT_KEY_EXCHANGE 0 +# define SSL_F_SSL_MODULE_INIT 0 +# define SSL_F_SSL_NEW 0 +# define SSL_F_SSL_NEXT_PROTO_VALIDATE 0 +# define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 0 +# define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 0 +# define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 0 +# define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 0 +# define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 0 +# define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 0 +# define SSL_F_SSL_PEEK 0 +# define SSL_F_SSL_PEEK_EX 0 +# define SSL_F_SSL_PEEK_INTERNAL 0 +# define SSL_F_SSL_READ 0 +# define SSL_F_SSL_READ_EARLY_DATA 0 +# define SSL_F_SSL_READ_EX 0 +# define SSL_F_SSL_READ_INTERNAL 0 +# define SSL_F_SSL_RENEGOTIATE 0 +# define SSL_F_SSL_RENEGOTIATE_ABBREVIATED 0 +# define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 0 +# define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 0 +# define SSL_F_SSL_SESSION_DUP 0 +# define SSL_F_SSL_SESSION_NEW 0 +# define SSL_F_SSL_SESSION_PRINT_FP 0 +# define SSL_F_SSL_SESSION_SET1_ID 0 +# define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 0 +# define SSL_F_SSL_SET_ALPN_PROTOS 0 +# define SSL_F_SSL_SET_CERT 0 +# define SSL_F_SSL_SET_CERT_AND_KEY 0 +# define SSL_F_SSL_SET_CIPHER_LIST 0 +# define SSL_F_SSL_SET_CT_VALIDATION_CALLBACK 0 +# define SSL_F_SSL_SET_FD 0 +# define SSL_F_SSL_SET_PKEY 0 +# define SSL_F_SSL_SET_RFD 0 +# define SSL_F_SSL_SET_SESSION 0 +# define SSL_F_SSL_SET_SESSION_ID_CONTEXT 0 +# define SSL_F_SSL_SET_SESSION_TICKET_EXT 0 +# define SSL_F_SSL_SET_TLSEXT_MAX_FRAGMENT_LENGTH 0 +# define SSL_F_SSL_SET_WFD 0 +# define SSL_F_SSL_SHUTDOWN 0 +# define SSL_F_SSL_SRP_CTX_INIT 0 +# define SSL_F_SSL_START_ASYNC_JOB 0 +# define SSL_F_SSL_UNDEFINED_FUNCTION 0 +# define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 0 +# define SSL_F_SSL_USE_CERTIFICATE 0 +# define SSL_F_SSL_USE_CERTIFICATE_ASN1 0 +# define SSL_F_SSL_USE_CERTIFICATE_FILE 0 +# define SSL_F_SSL_USE_PRIVATEKEY 0 +# define SSL_F_SSL_USE_PRIVATEKEY_ASN1 0 +# define SSL_F_SSL_USE_PRIVATEKEY_FILE 0 +# define SSL_F_SSL_USE_PSK_IDENTITY_HINT 0 +# define SSL_F_SSL_USE_RSAPRIVATEKEY 0 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 0 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 0 +# define SSL_F_SSL_VALIDATE_CT 0 +# define SSL_F_SSL_VERIFY_CERT_CHAIN 0 +# define SSL_F_SSL_VERIFY_CLIENT_POST_HANDSHAKE 0 +# define SSL_F_SSL_WRITE 0 +# define SSL_F_SSL_WRITE_EARLY_DATA 0 +# define SSL_F_SSL_WRITE_EARLY_FINISH 0 +# define SSL_F_SSL_WRITE_EX 0 +# define SSL_F_SSL_WRITE_INTERNAL 0 +# define SSL_F_STATE_MACHINE 0 +# define SSL_F_TLS12_CHECK_PEER_SIGALG 0 +# define SSL_F_TLS12_COPY_SIGALGS 0 +# define SSL_F_TLS13_CHANGE_CIPHER_STATE 0 +# define SSL_F_TLS13_ENC 0 +# define SSL_F_TLS13_FINAL_FINISH_MAC 0 +# define SSL_F_TLS13_GENERATE_SECRET 0 +# define SSL_F_TLS13_HKDF_EXPAND 0 +# define SSL_F_TLS13_RESTORE_HANDSHAKE_DIGEST_FOR_PHA 0 +# define SSL_F_TLS13_SAVE_HANDSHAKE_DIGEST_FOR_PHA 0 +# define SSL_F_TLS13_SETUP_KEY_BLOCK 0 +# define SSL_F_TLS1_CHANGE_CIPHER_STATE 0 +# define SSL_F_TLS1_CHECK_DUPLICATE_EXTENSIONS 0 +# define SSL_F_TLS1_ENC 0 +# define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 0 +# define SSL_F_TLS1_GET_CURVELIST 0 +# define SSL_F_TLS1_PRF 0 +# define SSL_F_TLS1_SAVE_U16 0 +# define SSL_F_TLS1_SETUP_KEY_BLOCK 0 +# define SSL_F_TLS1_SET_GROUPS 0 +# define SSL_F_TLS1_SET_RAW_SIGALGS 0 +# define SSL_F_TLS1_SET_SERVER_SIGALGS 0 +# define SSL_F_TLS1_SET_SHARED_SIGALGS 0 +# define SSL_F_TLS1_SET_SIGALGS 0 +# define SSL_F_TLS_CHOOSE_SIGALG 0 +# define SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK 0 +# define SSL_F_TLS_COLLECT_EXTENSIONS 0 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_AUTHORITIES 0 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST 0 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS 0 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS_BODY 0 +# define SSL_F_TLS_CONSTRUCT_CERT_VERIFY 0 +# define SSL_F_TLS_CONSTRUCT_CHANGE_CIPHER_SPEC 0 +# define SSL_F_TLS_CONSTRUCT_CKE_DHE 0 +# define SSL_F_TLS_CONSTRUCT_CKE_ECDHE 0 +# define SSL_F_TLS_CONSTRUCT_CKE_GOST 0 +# define SSL_F_TLS_CONSTRUCT_CKE_PSK_PREAMBLE 0 +# define SSL_F_TLS_CONSTRUCT_CKE_RSA 0 +# define SSL_F_TLS_CONSTRUCT_CKE_SRP 0 +# define SSL_F_TLS_CONSTRUCT_CLIENT_CERTIFICATE 0 +# define SSL_F_TLS_CONSTRUCT_CLIENT_HELLO 0 +# define SSL_F_TLS_CONSTRUCT_CLIENT_KEY_EXCHANGE 0 +# define SSL_F_TLS_CONSTRUCT_CLIENT_VERIFY 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_ALPN 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_CERTIFICATE 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_COOKIE 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_EARLY_DATA 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_EC_PT_FORMATS 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_EMS 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_ETM 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_HELLO 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_EXCHANGE 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_SHARE 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_MAXFRAGMENTLEN 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_NPN 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_PADDING 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_POST_HANDSHAKE_AUTH 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK_KEX_MODES 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_RENEGOTIATE 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_SCT 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_SERVER_NAME 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_SESSION_TICKET 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_SIG_ALGS 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_SRP 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_STATUS_REQUEST 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_GROUPS 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_VERSIONS 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_USE_SRTP 0 +# define SSL_F_TLS_CONSTRUCT_CTOS_VERIFY 0 +# define SSL_F_TLS_CONSTRUCT_ENCRYPTED_EXTENSIONS 0 +# define SSL_F_TLS_CONSTRUCT_END_OF_EARLY_DATA 0 +# define SSL_F_TLS_CONSTRUCT_EXTENSIONS 0 +# define SSL_F_TLS_CONSTRUCT_FINISHED 0 +# define SSL_F_TLS_CONSTRUCT_HELLO_REQUEST 0 +# define SSL_F_TLS_CONSTRUCT_HELLO_RETRY_REQUEST 0 +# define SSL_F_TLS_CONSTRUCT_KEY_UPDATE 0 +# define SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET 0 +# define SSL_F_TLS_CONSTRUCT_NEXT_PROTO 0 +# define SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE 0 +# define SSL_F_TLS_CONSTRUCT_SERVER_HELLO 0 +# define SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE 0 +# define SSL_F_TLS_CONSTRUCT_STOC_ALPN 0 +# define SSL_F_TLS_CONSTRUCT_STOC_CERTIFICATE 0 +# define SSL_F_TLS_CONSTRUCT_STOC_COOKIE 0 +# define SSL_F_TLS_CONSTRUCT_STOC_CRYPTOPRO_BUG 0 +# define SSL_F_TLS_CONSTRUCT_STOC_DONE 0 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA 0 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA_INFO 0 +# define SSL_F_TLS_CONSTRUCT_STOC_EC_PT_FORMATS 0 +# define SSL_F_TLS_CONSTRUCT_STOC_EMS 0 +# define SSL_F_TLS_CONSTRUCT_STOC_ETM 0 +# define SSL_F_TLS_CONSTRUCT_STOC_HELLO 0 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_EXCHANGE 0 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_SHARE 0 +# define SSL_F_TLS_CONSTRUCT_STOC_MAXFRAGMENTLEN 0 +# define SSL_F_TLS_CONSTRUCT_STOC_NEXT_PROTO_NEG 0 +# define SSL_F_TLS_CONSTRUCT_STOC_PSK 0 +# define SSL_F_TLS_CONSTRUCT_STOC_RENEGOTIATE 0 +# define SSL_F_TLS_CONSTRUCT_STOC_SERVER_NAME 0 +# define SSL_F_TLS_CONSTRUCT_STOC_SESSION_TICKET 0 +# define SSL_F_TLS_CONSTRUCT_STOC_STATUS_REQUEST 0 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_GROUPS 0 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_VERSIONS 0 +# define SSL_F_TLS_CONSTRUCT_STOC_USE_SRTP 0 +# define SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO 0 +# define SSL_F_TLS_FINISH_HANDSHAKE 0 +# define SSL_F_TLS_GET_MESSAGE_BODY 0 +# define SSL_F_TLS_GET_MESSAGE_HEADER 0 +# define SSL_F_TLS_HANDLE_ALPN 0 +# define SSL_F_TLS_HANDLE_STATUS_REQUEST 0 +# define SSL_F_TLS_PARSE_CERTIFICATE_AUTHORITIES 0 +# define SSL_F_TLS_PARSE_CLIENTHELLO_TLSEXT 0 +# define SSL_F_TLS_PARSE_CTOS_ALPN 0 +# define SSL_F_TLS_PARSE_CTOS_COOKIE 0 +# define SSL_F_TLS_PARSE_CTOS_EARLY_DATA 0 +# define SSL_F_TLS_PARSE_CTOS_EC_PT_FORMATS 0 +# define SSL_F_TLS_PARSE_CTOS_EMS 0 +# define SSL_F_TLS_PARSE_CTOS_KEY_SHARE 0 +# define SSL_F_TLS_PARSE_CTOS_MAXFRAGMENTLEN 0 +# define SSL_F_TLS_PARSE_CTOS_POST_HANDSHAKE_AUTH 0 +# define SSL_F_TLS_PARSE_CTOS_PSK 0 +# define SSL_F_TLS_PARSE_CTOS_PSK_KEX_MODES 0 +# define SSL_F_TLS_PARSE_CTOS_RENEGOTIATE 0 +# define SSL_F_TLS_PARSE_CTOS_SERVER_NAME 0 +# define SSL_F_TLS_PARSE_CTOS_SESSION_TICKET 0 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS 0 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS_CERT 0 +# define SSL_F_TLS_PARSE_CTOS_SRP 0 +# define SSL_F_TLS_PARSE_CTOS_STATUS_REQUEST 0 +# define SSL_F_TLS_PARSE_CTOS_SUPPORTED_GROUPS 0 +# define SSL_F_TLS_PARSE_CTOS_USE_SRTP 0 +# define SSL_F_TLS_PARSE_STOC_ALPN 0 +# define SSL_F_TLS_PARSE_STOC_COOKIE 0 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA 0 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA_INFO 0 +# define SSL_F_TLS_PARSE_STOC_EC_PT_FORMATS 0 +# define SSL_F_TLS_PARSE_STOC_KEY_SHARE 0 +# define SSL_F_TLS_PARSE_STOC_MAXFRAGMENTLEN 0 +# define SSL_F_TLS_PARSE_STOC_NPN 0 +# define SSL_F_TLS_PARSE_STOC_PSK 0 +# define SSL_F_TLS_PARSE_STOC_RENEGOTIATE 0 +# define SSL_F_TLS_PARSE_STOC_SCT 0 +# define SSL_F_TLS_PARSE_STOC_SERVER_NAME 0 +# define SSL_F_TLS_PARSE_STOC_SESSION_TICKET 0 +# define SSL_F_TLS_PARSE_STOC_STATUS_REQUEST 0 +# define SSL_F_TLS_PARSE_STOC_SUPPORTED_VERSIONS 0 +# define SSL_F_TLS_PARSE_STOC_USE_SRTP 0 +# define SSL_F_TLS_POST_PROCESS_CLIENT_HELLO 0 +# define SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE 0 +# define SSL_F_TLS_PREPARE_CLIENT_CERTIFICATE 0 +# define SSL_F_TLS_PROCESS_AS_HELLO_RETRY_REQUEST 0 +# define SSL_F_TLS_PROCESS_CERTIFICATE_REQUEST 0 +# define SSL_F_TLS_PROCESS_CERT_STATUS 0 +# define SSL_F_TLS_PROCESS_CERT_STATUS_BODY 0 +# define SSL_F_TLS_PROCESS_CERT_VERIFY 0 +# define SSL_F_TLS_PROCESS_CHANGE_CIPHER_SPEC 0 +# define SSL_F_TLS_PROCESS_CKE_DHE 0 +# define SSL_F_TLS_PROCESS_CKE_ECDHE 0 +# define SSL_F_TLS_PROCESS_CKE_GOST 0 +# define SSL_F_TLS_PROCESS_CKE_PSK_PREAMBLE 0 +# define SSL_F_TLS_PROCESS_CKE_RSA 0 +# define SSL_F_TLS_PROCESS_CKE_SRP 0 +# define SSL_F_TLS_PROCESS_CLIENT_CERTIFICATE 0 +# define SSL_F_TLS_PROCESS_CLIENT_HELLO 0 +# define SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE 0 +# define SSL_F_TLS_PROCESS_ENCRYPTED_EXTENSIONS 0 +# define SSL_F_TLS_PROCESS_END_OF_EARLY_DATA 0 +# define SSL_F_TLS_PROCESS_FINISHED 0 +# define SSL_F_TLS_PROCESS_HELLO_REQ 0 +# define SSL_F_TLS_PROCESS_HELLO_RETRY_REQUEST 0 +# define SSL_F_TLS_PROCESS_INITIAL_SERVER_FLIGHT 0 +# define SSL_F_TLS_PROCESS_KEY_EXCHANGE 0 +# define SSL_F_TLS_PROCESS_KEY_UPDATE 0 +# define SSL_F_TLS_PROCESS_NEW_SESSION_TICKET 0 +# define SSL_F_TLS_PROCESS_NEXT_PROTO 0 +# define SSL_F_TLS_PROCESS_SERVER_CERTIFICATE 0 +# define SSL_F_TLS_PROCESS_SERVER_DONE 0 +# define SSL_F_TLS_PROCESS_SERVER_HELLO 0 +# define SSL_F_TLS_PROCESS_SKE_DHE 0 +# define SSL_F_TLS_PROCESS_SKE_ECDHE 0 +# define SSL_F_TLS_PROCESS_SKE_PSK_PREAMBLE 0 +# define SSL_F_TLS_PROCESS_SKE_SRP 0 +# define SSL_F_TLS_PSK_DO_BINDER 0 +# define SSL_F_TLS_SCAN_CLIENTHELLO_TLSEXT 0 +# define SSL_F_TLS_SETUP_HANDSHAKE 0 +# define SSL_F_USE_CERTIFICATE_CHAIN_FILE 0 +# define SSL_F_WPACKET_INTERN_INIT_LEN 0 +# define SSL_F_WPACKET_START_SUB_PACKET_LEN__ 0 +# define SSL_F_WRITE_STATE_MACHINE 0 +# endif + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/stack.h b/include/openssl/stack.h new file mode 100644 index 0000000..f0c5c54 --- /dev/null +++ b/include/openssl/stack.h @@ -0,0 +1,90 @@ +/* + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_STACK_H +# define OPENSSL_STACK_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_STACK_H +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */ + +typedef int (*OPENSSL_sk_compfunc)(const void *, const void *); +typedef void (*OPENSSL_sk_freefunc)(void *); +typedef void *(*OPENSSL_sk_copyfunc)(const void *); + +int OPENSSL_sk_num(const OPENSSL_STACK *); +void *OPENSSL_sk_value(const OPENSSL_STACK *, int); + +void *OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data); + +OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_new_null(void); +OPENSSL_STACK *OPENSSL_sk_new_reserve(OPENSSL_sk_compfunc c, int n); +int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n); +void OPENSSL_sk_free(OPENSSL_STACK *); +void OPENSSL_sk_pop_free(OPENSSL_STACK *st, void (*func) (void *)); +OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *, + OPENSSL_sk_copyfunc c, + OPENSSL_sk_freefunc f); +int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where); +void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc); +void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p); +int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_all(OPENSSL_STACK *st, const void *data, int *pnum); +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); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# 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/include/openssl/store.h b/include/openssl/store.h new file mode 100644 index 0000000..3c1445e --- /dev/null +++ b/include/openssl/store.h @@ -0,0 +1,369 @@ +/* + * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_STORE_H +# define OPENSSL_STORE_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_OSSL_STORE_H +# endif + +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * The main OSSL_STORE functions. + * ------------------------------ + * + * These allow applications to open a channel to a resource with supported + * data (keys, certs, crls, ...), read the data a piece at a time and decide + * what to do with it, and finally close. + */ + +typedef struct ossl_store_ctx_st OSSL_STORE_CTX; + +/* + * Typedef for the OSSL_STORE_INFO post processing callback. This can be used + * to massage the given OSSL_STORE_INFO, or to drop it entirely (by returning + * NULL). + */ +typedef OSSL_STORE_INFO *(*OSSL_STORE_post_process_info_fn)(OSSL_STORE_INFO *, + void *); + +/* + * Open a channel given a URI. The given UI method will be used any time the + * loader needs extra input, for example when a password or pin is needed, and + * will be passed the same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + */ +OSSL_STORE_CTX * +OSSL_STORE_open(const char *uri, const UI_METHOD *ui_method, void *ui_data, + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); +OSSL_STORE_CTX * +OSSL_STORE_open_ex(const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[], + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/* + * Control / fine tune the OSSL_STORE channel. |cmd| determines what is to be + * done, and depends on the underlying loader (use OSSL_STORE_get0_scheme to + * determine which loader is used), except for common commands (see below). + * Each command takes different arguments. + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_ctrl(OSSL_STORE_CTX *ctx, int cmd, + ... /* args */); +OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, + va_list args); +# endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 + +/* + * Common ctrl commands that different loaders may choose to support. + */ +/* int on = 0 or 1; STORE_ctrl(ctx, STORE_C_USE_SECMEM, &on); */ +# define OSSL_STORE_C_USE_SECMEM 1 +/* Where custom commands start */ +# define OSSL_STORE_C_CUSTOM_START 100 + +# endif + +/* + * Read one data item (a key, a cert, a CRL) that is supported by the OSSL_STORE + * functionality, given a context. + * Returns a OSSL_STORE_INFO pointer, from which OpenSSL typed data can be + * extracted with OSSL_STORE_INFO_get0_PKEY(), OSSL_STORE_INFO_get0_CERT(), ... + * NULL is returned on error, which may include that the data found at the URI + * can't be figured out for certain or is ambiguous. + */ +OSSL_STORE_INFO *OSSL_STORE_load(OSSL_STORE_CTX *ctx); + +/* + * Check if end of data (end of file) is reached + * Returns 1 on end, 0 otherwise. + */ +int OSSL_STORE_eof(OSSL_STORE_CTX *ctx); + +/* + * Check if an error occurred + * Returns 1 if it did, 0 otherwise. + */ +int OSSL_STORE_error(OSSL_STORE_CTX *ctx); + +/* + * Close the channel + * Returns 1 on success, 0 on error. + */ +int OSSL_STORE_close(OSSL_STORE_CTX *ctx); + +/* + * Attach to a BIO. This works like OSSL_STORE_open() except it takes a + * BIO instead of a uri, along with a scheme to use when reading. + * The given UI method will be used any time the loader needs extra input, + * for example when a password or pin is needed, and will be passed the + * same user data every time it's needed in this context. + * + * Returns a context reference which represents the channel to communicate + * through. + * + * Note that this function is considered unsafe, all depending on what the + * BIO actually reads. + */ +OSSL_STORE_CTX *OSSL_STORE_attach(BIO *bio, const char *scheme, + OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[], + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); + +/*- + * Extracting OpenSSL types from and creating new OSSL_STORE_INFOs + * --------------------------------------------------------------- + */ + +/* + * Types of data that can be ossl_stored in a OSSL_STORE_INFO. + * OSSL_STORE_INFO_NAME is typically found when getting a listing of + * available "files" / "tokens" / what have you. + */ +# define OSSL_STORE_INFO_NAME 1 /* char * */ +# define OSSL_STORE_INFO_PARAMS 2 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_PUBKEY 3 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_PKEY 4 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_CERT 5 /* X509 * */ +# define OSSL_STORE_INFO_CRL 6 /* X509_CRL * */ + +/* + * Functions to generate OSSL_STORE_INFOs, one function for each type we + * support having in them, as well as a generic constructor. + * + * In all cases, ownership of the object is transferred to the OSSL_STORE_INFO + * and will therefore be freed when the OSSL_STORE_INFO is freed. + */ +OSSL_STORE_INFO *OSSL_STORE_INFO_new(int type, void *data); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_NAME(char *name); +int OSSL_STORE_INFO_set0_NAME_description(OSSL_STORE_INFO *info, char *desc); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PARAMS(EVP_PKEY *params); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PUBKEY(EVP_PKEY *pubkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PKEY(EVP_PKEY *pkey); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CERT(X509 *x509); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_CRL(X509_CRL *crl); + +/* + * Functions to try to extract data from a OSSL_STORE_INFO. + */ +int OSSL_STORE_INFO_get_type(const OSSL_STORE_INFO *info); +void *OSSL_STORE_INFO_get0_data(int type, const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME(const OSSL_STORE_INFO *info); +const char *OSSL_STORE_INFO_get0_NAME_description(const OSSL_STORE_INFO *info); +char *OSSL_STORE_INFO_get1_NAME_description(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PUBKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PUBKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PKEY(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get0_CERT(const OSSL_STORE_INFO *info); +X509 *OSSL_STORE_INFO_get1_CERT(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get0_CRL(const OSSL_STORE_INFO *info); +X509_CRL *OSSL_STORE_INFO_get1_CRL(const OSSL_STORE_INFO *info); + +const char *OSSL_STORE_INFO_type_string(int type); + +/* + * Free the OSSL_STORE_INFO + */ +void OSSL_STORE_INFO_free(OSSL_STORE_INFO *info); + + +/*- + * Functions to construct a search URI from a base URI and search criteria + * ----------------------------------------------------------------------- + */ + +/* OSSL_STORE search types */ +# define OSSL_STORE_SEARCH_BY_NAME 1 /* subject in certs, issuer in CRLs */ +# define OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 2 +# define OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 3 +# define OSSL_STORE_SEARCH_BY_ALIAS 4 + +/* To check what search types the scheme handler supports */ +int OSSL_STORE_supports_search(OSSL_STORE_CTX *ctx, int search_type); + +/* Search term constructors */ +/* + * The input is considered to be owned by the caller, and must therefore + * remain present throughout the lifetime of the returned OSSL_STORE_SEARCH + */ +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_name(X509_NAME *name); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_issuer_serial(X509_NAME *name, + const ASN1_INTEGER + *serial); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_key_fingerprint(const EVP_MD *digest, + const unsigned char + *bytes, size_t len); +OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_alias(const char *alias); + +/* Search term destructor */ +void OSSL_STORE_SEARCH_free(OSSL_STORE_SEARCH *search); + +/* Search term accessors */ +int OSSL_STORE_SEARCH_get_type(const OSSL_STORE_SEARCH *criterion); +X509_NAME *OSSL_STORE_SEARCH_get0_name(const OSSL_STORE_SEARCH *criterion); +const ASN1_INTEGER *OSSL_STORE_SEARCH_get0_serial(const OSSL_STORE_SEARCH + *criterion); +const unsigned char *OSSL_STORE_SEARCH_get0_bytes(const OSSL_STORE_SEARCH + *criterion, size_t *length); +const char *OSSL_STORE_SEARCH_get0_string(const OSSL_STORE_SEARCH *criterion); +const EVP_MD *OSSL_STORE_SEARCH_get0_digest(const OSSL_STORE_SEARCH *criterion); + +/* + * Add search criterion and expected return type (which can be unspecified) + * to the loading channel. This MUST happen before the first OSSL_STORE_load(). + */ +int OSSL_STORE_expect(OSSL_STORE_CTX *ctx, int expected_type); +int OSSL_STORE_find(OSSL_STORE_CTX *ctx, const OSSL_STORE_SEARCH *search); + + +/*- + * Function to fetch a loader and extract data from it + * --------------------------------------------------- + */ + +typedef struct ossl_store_loader_st OSSL_STORE_LOADER; + +OSSL_STORE_LOADER *OSSL_STORE_LOADER_fetch(OSSL_LIB_CTX *libctx, + const char *scheme, + const char *properties); +int OSSL_STORE_LOADER_up_ref(OSSL_STORE_LOADER *loader); +void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader); +const OSSL_PROVIDER *OSSL_STORE_LOADER_get0_provider(const OSSL_STORE_LOADER * + loader); +const char *OSSL_STORE_LOADER_get0_properties(const OSSL_STORE_LOADER *loader); +const char *OSSL_STORE_LOADER_get0_description(const OSSL_STORE_LOADER *loader); +int OSSL_STORE_LOADER_is_a(const OSSL_STORE_LOADER *loader, + const char *scheme); +void OSSL_STORE_LOADER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(OSSL_STORE_LOADER *loader, + void *arg), + void *arg); +int OSSL_STORE_LOADER_names_do_all(const OSSL_STORE_LOADER *loader, + void (*fn)(const char *name, void *data), + void *data); + +/*- + * Function to register a loader for the given URI scheme. + * ------------------------------------------------------- + * + * The loader receives all the main components of an URI except for the + * scheme. + */ + +# ifndef OPENSSL_NO_DEPRECATED_3_0 + +/* struct ossl_store_loader_ctx_st is defined differently by each loader */ +typedef struct ossl_store_loader_ctx_st OSSL_STORE_LOADER_CTX; +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_fn) + (const OSSL_STORE_LOADER *loader, const char *uri, + const UI_METHOD *ui_method, void *ui_data); +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_ex_fn) + (const OSSL_STORE_LOADER *loader, + const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data); + +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_attach_fn) + (const OSSL_STORE_LOADER *loader, BIO *bio, + OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data); +typedef int (*OSSL_STORE_ctrl_fn) + (OSSL_STORE_LOADER_CTX *ctx, int cmd, va_list args); +typedef int (*OSSL_STORE_expect_fn) + (OSSL_STORE_LOADER_CTX *ctx, int expected); +typedef int (*OSSL_STORE_find_fn) + (OSSL_STORE_LOADER_CTX *ctx, const OSSL_STORE_SEARCH *criteria); +typedef OSSL_STORE_INFO *(*OSSL_STORE_load_fn) + (OSSL_STORE_LOADER_CTX *ctx, const UI_METHOD *ui_method, void *ui_data); +typedef int (*OSSL_STORE_eof_fn)(OSSL_STORE_LOADER_CTX *ctx); +typedef int (*OSSL_STORE_error_fn)(OSSL_STORE_LOADER_CTX *ctx); +typedef int (*OSSL_STORE_close_fn)(OSSL_STORE_LOADER_CTX *ctx); + +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(ENGINE *e, const char *scheme); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_open(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_fn open_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_open_ex(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_ex_fn open_ex_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_attach(OSSL_STORE_LOADER *loader, + OSSL_STORE_attach_fn attach_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_ctrl(OSSL_STORE_LOADER *loader, + OSSL_STORE_ctrl_fn ctrl_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_expect(OSSL_STORE_LOADER *loader, + OSSL_STORE_expect_fn expect_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_find(OSSL_STORE_LOADER *loader, + OSSL_STORE_find_fn find_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_load(OSSL_STORE_LOADER *loader, + OSSL_STORE_load_fn load_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_eof(OSSL_STORE_LOADER *loader, + OSSL_STORE_eof_fn eof_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_error(OSSL_STORE_LOADER *loader, + OSSL_STORE_error_fn error_function); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *loader, + OSSL_STORE_close_fn close_function); +OSSL_DEPRECATEDIN_3_0 +const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +const char * OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); +OSSL_DEPRECATEDIN_3_0 +OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme); +# endif + +/*- + * Functions to list STORE loaders + * ------------------------------- + */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int OSSL_STORE_do_all_loaders(void (*do_function)(const OSSL_STORE_LOADER *loader, + void *do_arg), + void *do_arg); +# endif + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/storeerr.h b/include/openssl/storeerr.h new file mode 100644 index 0000000..00529c8 --- /dev/null +++ b/include/openssl/storeerr.h @@ -0,0 +1,49 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_STOREERR_H +# define OPENSSL_STOREERR_H +# pragma once + +# include +# include +# include + + + +/* + * OSSL_STORE reason codes. + */ +# define OSSL_STORE_R_AMBIGUOUS_CONTENT_TYPE 107 +# define OSSL_STORE_R_BAD_PASSWORD_READ 115 +# define OSSL_STORE_R_ERROR_VERIFYING_PKCS12_MAC 113 +# define OSSL_STORE_R_FINGERPRINT_SIZE_DOES_NOT_MATCH_DIGEST 121 +# define OSSL_STORE_R_INVALID_SCHEME 106 +# define OSSL_STORE_R_IS_NOT_A 112 +# define OSSL_STORE_R_LOADER_INCOMPLETE 116 +# define OSSL_STORE_R_LOADING_STARTED 117 +# define OSSL_STORE_R_NOT_A_CERTIFICATE 100 +# define OSSL_STORE_R_NOT_A_CRL 101 +# define OSSL_STORE_R_NOT_A_NAME 103 +# define OSSL_STORE_R_NOT_A_PRIVATE_KEY 102 +# define OSSL_STORE_R_NOT_A_PUBLIC_KEY 122 +# define OSSL_STORE_R_NOT_PARAMETERS 104 +# define OSSL_STORE_R_NO_LOADERS_FOUND 123 +# define OSSL_STORE_R_PASSPHRASE_CALLBACK_ERROR 114 +# define OSSL_STORE_R_PATH_MUST_BE_ABSOLUTE 108 +# define OSSL_STORE_R_SEARCH_ONLY_SUPPORTED_FOR_DIRECTORIES 119 +# define OSSL_STORE_R_UI_PROCESS_INTERRUPTED_OR_CANCELLED 109 +# define OSSL_STORE_R_UNREGISTERED_SCHEME 105 +# define OSSL_STORE_R_UNSUPPORTED_CONTENT_TYPE 110 +# define OSSL_STORE_R_UNSUPPORTED_OPERATION 118 +# define OSSL_STORE_R_UNSUPPORTED_SEARCH_TYPE 120 +# define OSSL_STORE_R_URI_AUTHORITY_UNSUPPORTED 111 + +#endif diff --git a/include/openssl/symhacks.h b/include/openssl/symhacks.h new file mode 100644 index 0000000..816f8f9 --- /dev/null +++ b/include/openssl/symhacks.h @@ -0,0 +1,39 @@ +/* + * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_SYMHACKS_H +# define OPENSSL_SYMHACKS_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_SYMHACKS_H +# endif + +# 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 + +# endif + +#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/include/openssl/tls1.h b/include/openssl/tls1.h new file mode 100644 index 0000000..793155e --- /dev/null +++ b/include/openssl/tls1.h @@ -0,0 +1,1180 @@ +/* + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_TLS1_H +# define OPENSSL_TLS1_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_TLS1_H +# endif + +# include +# 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 + +/* TLS*_VERSION constants are defined in prov_ssl.h */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define TLS_MAX_VERSION TLS1_3_VERSION +# endif + +/* Special value for method supporting multiple versions */ +# define TLS_ANY_VERSION 0x10000 + +# define TLS1_VERSION_MAJOR 0x03 +# define TLS1_VERSION_MINOR 0x01 + +# define TLS1_1_VERSION_MAJOR 0x03 +# define TLS1_1_VERSION_MINOR 0x02 + +# define TLS1_2_VERSION_MAJOR 0x03 +# define TLS1_2_VERSION_MINOR 0x03 + +# define TLS1_get_version(s) \ + ((SSL_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_version(s) : 0) + +# define TLS1_get_client_version(s) \ + ((SSL_client_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_client_version(s) : 0) + +# define TLS1_AD_DECRYPTION_FAILED 21 +# define TLS1_AD_RECORD_OVERFLOW 22 +# define TLS1_AD_UNKNOWN_CA 48/* fatal */ +# define TLS1_AD_ACCESS_DENIED 49/* fatal */ +# define TLS1_AD_DECODE_ERROR 50/* fatal */ +# define TLS1_AD_DECRYPT_ERROR 51 +# define TLS1_AD_EXPORT_RESTRICTION 60/* fatal */ +# define TLS1_AD_PROTOCOL_VERSION 70/* fatal */ +# define TLS1_AD_INSUFFICIENT_SECURITY 71/* fatal */ +# define TLS1_AD_INTERNAL_ERROR 80/* fatal */ +# define TLS1_AD_INAPPROPRIATE_FALLBACK 86/* fatal */ +# define TLS1_AD_USER_CANCELLED 90 +# define TLS1_AD_NO_RENEGOTIATION 100 +/* TLSv1.3 alerts */ +# define TLS13_AD_MISSING_EXTENSION 109 /* fatal */ +# define TLS13_AD_CERTIFICATE_REQUIRED 116 /* fatal */ +/* codes 110-114 are from RFC3546 */ +# define TLS1_AD_UNSUPPORTED_EXTENSION 110 +# define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 +# define TLS1_AD_UNRECOGNIZED_NAME 112 +# define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 +# define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 +# define TLS1_AD_UNKNOWN_PSK_IDENTITY 115/* fatal */ +# define TLS1_AD_NO_APPLICATION_PROTOCOL 120 /* fatal */ + +/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ +# define TLSEXT_TYPE_server_name 0 +# define TLSEXT_TYPE_max_fragment_length 1 +# define TLSEXT_TYPE_client_certificate_url 2 +# define TLSEXT_TYPE_trusted_ca_keys 3 +# define TLSEXT_TYPE_truncated_hmac 4 +# define TLSEXT_TYPE_status_request 5 +/* ExtensionType values from RFC4681 */ +# define TLSEXT_TYPE_user_mapping 6 +/* ExtensionType values from RFC5878 */ +# define TLSEXT_TYPE_client_authz 7 +# define TLSEXT_TYPE_server_authz 8 +/* ExtensionType values from RFC6091 */ +# define TLSEXT_TYPE_cert_type 9 + +/* ExtensionType values from RFC4492 */ +/* + * Prior to TLSv1.3 the supported_groups extension was known as + * elliptic_curves + */ +# define TLSEXT_TYPE_supported_groups 10 +# define TLSEXT_TYPE_elliptic_curves TLSEXT_TYPE_supported_groups +# define TLSEXT_TYPE_ec_point_formats 11 + + +/* ExtensionType value from RFC5054 */ +# define TLSEXT_TYPE_srp 12 + +/* ExtensionType values from RFC5246 */ +# define TLSEXT_TYPE_signature_algorithms 13 + +/* ExtensionType value from RFC5764 */ +# define TLSEXT_TYPE_use_srtp 14 + +/* ExtensionType value from RFC7301 */ +# define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * Extension type for Certificate Transparency + * https://tools.ietf.org/html/rfc6962#section-3.3.1 + */ +# define TLSEXT_TYPE_signed_certificate_timestamp 18 + +/* + * ExtensionType value for TLS padding extension. + * http://tools.ietf.org/html/draft-agl-tls-padding + */ +# define TLSEXT_TYPE_padding 21 + +/* ExtensionType value from RFC7366 */ +# define TLSEXT_TYPE_encrypt_then_mac 22 + +/* ExtensionType value from RFC7627 */ +# define TLSEXT_TYPE_extended_master_secret 23 + +/* ExtensionType value from RFC4507 */ +# define TLSEXT_TYPE_session_ticket 35 + +/* As defined for TLS1.3 */ +# define TLSEXT_TYPE_psk 41 +# define TLSEXT_TYPE_early_data 42 +# define TLSEXT_TYPE_supported_versions 43 +# define TLSEXT_TYPE_cookie 44 +# define TLSEXT_TYPE_psk_kex_modes 45 +# define TLSEXT_TYPE_certificate_authorities 47 +# define TLSEXT_TYPE_post_handshake_auth 49 +# define TLSEXT_TYPE_signature_algorithms_cert 50 +# define TLSEXT_TYPE_key_share 51 + +/* Temporary extension type */ +# define TLSEXT_TYPE_renegotiate 0xff01 + +# ifndef OPENSSL_NO_NEXTPROTONEG +/* This is not an IANA defined extension number */ +# define TLSEXT_TYPE_next_proto_neg 13172 +# endif + +/* NameType value from RFC3546 */ +# define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC3546 */ +# define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from RFC4492 */ +# define TLSEXT_ECPOINTFORMAT_first 0 +# define TLSEXT_ECPOINTFORMAT_uncompressed 0 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 +# define TLSEXT_ECPOINTFORMAT_last 2 + +/* Signature and hash algorithms from RFC5246 */ +# define TLSEXT_signature_anonymous 0 +# define TLSEXT_signature_rsa 1 +# define TLSEXT_signature_dsa 2 +# define TLSEXT_signature_ecdsa 3 +# define TLSEXT_signature_gostr34102001 237 +# define TLSEXT_signature_gostr34102012_256 238 +# define TLSEXT_signature_gostr34102012_512 239 + +/* Total number of different signature algorithms */ +# define TLSEXT_signature_num 7 + +# define TLSEXT_hash_none 0 +# define TLSEXT_hash_md5 1 +# define TLSEXT_hash_sha1 2 +# define TLSEXT_hash_sha224 3 +# define TLSEXT_hash_sha256 4 +# define TLSEXT_hash_sha384 5 +# define TLSEXT_hash_sha512 6 +# define TLSEXT_hash_gostr3411 237 +# define TLSEXT_hash_gostr34112012_256 238 +# define TLSEXT_hash_gostr34112012_512 239 + +/* Total number of different digest algorithms */ + +# define TLSEXT_hash_num 10 + +/* Flag set for unrecognised algorithms */ +# define TLSEXT_nid_unknown 0x1000000 + +/* ECC curves */ + +# define TLSEXT_curve_P_256 23 +# define TLSEXT_curve_P_384 24 + +/* OpenSSL value to disable maximum fragment length extension */ +# define TLSEXT_max_fragment_length_DISABLED 0 +/* Allowed values for max fragment length extension */ +# define TLSEXT_max_fragment_length_512 1 +# define TLSEXT_max_fragment_length_1024 2 +# define TLSEXT_max_fragment_length_2048 3 +# define TLSEXT_max_fragment_length_4096 4 + +int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); +int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); + +# define TLSEXT_MAXLEN_host_name 255 + +__owur const char *SSL_get_servername(const SSL *s, const int type); +__owur int SSL_get_servername_type(const SSL *s); +/* + * SSL_export_keying_material exports a value derived from the master secret, + * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and + * optional context. (Since a zero length context is allowed, the |use_context| + * flag controls whether a context is included.) It returns 1 on success and + * 0 or -1 otherwise. + */ +__owur int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *context, + size_t contextlen, int use_context); + +/* + * SSL_export_keying_material_early exports a value derived from the + * early exporter master secret, as specified in + * https://tools.ietf.org/html/draft-ietf-tls-tls13-23. It writes + * |olen| bytes to |out| given a label and optional context. It + * returns 1 on success and 0 otherwise. + */ +__owur int SSL_export_keying_material_early(SSL *s, unsigned char *out, + size_t olen, const char *label, + size_t llen, + const unsigned char *context, + size_t contextlen); + +int SSL_get_peer_signature_type_nid(const SSL *s, int *pnid); +int SSL_get_signature_type_nid(const SSL *s, int *pnid); + +int SSL_get_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +int SSL_get_shared_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +__owur int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); + +# define SSL_set_tlsext_host_name(s,name) \ + SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,\ + (void *)name) + +# define SSL_set_tlsext_debug_callback(ssl, cb) \ + SSL_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_CB,\ + (void (*)(void))cb) + +# define SSL_set_tlsext_debug_arg(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_ARG,0,arg) + +# define SSL_get_tlsext_status_type(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE,0,NULL) + +# define SSL_set_tlsext_status_type(ssl, type) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type,NULL) + +# define SSL_get_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS,0,arg) + +# define SSL_set_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS,0,arg) + +# define SSL_get_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS,0,arg) + +# define SSL_set_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS,0,arg) + +# define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,0,arg) + +# define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,arglen,arg) + +# define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ + SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_CB,\ + (void (*)(void))cb) + +# define SSL_TLSEXT_ERR_OK 0 +# define SSL_TLSEXT_ERR_ALERT_WARNING 1 +# define SSL_TLSEXT_ERR_ALERT_FATAL 2 +# define SSL_TLSEXT_ERR_NOACK 3 + +# define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0,arg) + +# define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_TLSEXT_TICKET_KEYS,keylen,keys) +# define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_TICKET_KEYS,keylen,keys) + +# define SSL_CTX_get_tlsext_status_cb(ssl, cb) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB,0,(void *)cb) +# define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,\ + (void (*)(void))cb) + +# define SSL_CTX_get_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG,0,arg) +# define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0,arg) + +# define SSL_CTX_set_tlsext_status_type(ssl, type) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type,NULL) + +# define SSL_CTX_get_tlsext_status_type(ssl) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE,0,NULL) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# 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) +# endif +int SSL_CTX_set_tlsext_ticket_key_evp_cb + (SSL_CTX *ctx, int (*fp)(SSL *, unsigned char *, unsigned char *, + EVP_CIPHER_CTX *, EVP_MAC_CTX *, int)); + +/* PSK ciphersuites from 4279 */ +# define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A +# define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D +# define TLS1_CK_DHE_PSK_WITH_RC4_128_SHA 0x0300008E +# define TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008F +# define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA 0x03000090 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA 0x03000091 +# define TLS1_CK_RSA_PSK_WITH_RC4_128_SHA 0x03000092 +# define TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x03000093 +# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA 0x03000094 +# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA 0x03000095 + +/* PSK ciphersuites from 5487 */ +# define TLS1_CK_PSK_WITH_AES_128_GCM_SHA256 0x030000A8 +# define TLS1_CK_PSK_WITH_AES_256_GCM_SHA384 0x030000A9 +# define TLS1_CK_DHE_PSK_WITH_AES_128_GCM_SHA256 0x030000AA +# define TLS1_CK_DHE_PSK_WITH_AES_256_GCM_SHA384 0x030000AB +# define TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256 0x030000AC +# define TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384 0x030000AD +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA256 0x030000AE +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA384 0x030000AF +# define TLS1_CK_PSK_WITH_NULL_SHA256 0x030000B0 +# define TLS1_CK_PSK_WITH_NULL_SHA384 0x030000B1 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA256 0x030000B2 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384 0x030000B3 +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA256 0x030000B4 +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA384 0x030000B5 +# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256 0x030000B6 +# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384 0x030000B7 +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA256 0x030000B8 +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA384 0x030000B9 + +/* NULL PSK ciphersuites from RFC4785 */ +# define TLS1_CK_PSK_WITH_NULL_SHA 0x0300002C +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA 0x0300002D +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA 0x0300002E + +/* AES ciphersuites from RFC3268 */ +# define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 +# define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 +# define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 +# define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B +# define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C +# define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B +# define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C +# define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 +# define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 +# define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 +# define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 +# define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A +# define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C +# define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D +# define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E +# define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F +# define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 +# define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 +# define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 +# define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 +# define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 +# define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 +# define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 +# define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 + +/* CCM ciphersuites from RFC6655 */ +# define TLS1_CK_RSA_WITH_AES_128_CCM 0x0300C09C +# define TLS1_CK_RSA_WITH_AES_256_CCM 0x0300C09D +# define TLS1_CK_DHE_RSA_WITH_AES_128_CCM 0x0300C09E +# define TLS1_CK_DHE_RSA_WITH_AES_256_CCM 0x0300C09F +# define TLS1_CK_RSA_WITH_AES_128_CCM_8 0x0300C0A0 +# define TLS1_CK_RSA_WITH_AES_256_CCM_8 0x0300C0A1 +# define TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8 0x0300C0A2 +# define TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8 0x0300C0A3 +# define TLS1_CK_PSK_WITH_AES_128_CCM 0x0300C0A4 +# define TLS1_CK_PSK_WITH_AES_256_CCM 0x0300C0A5 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CCM 0x0300C0A6 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CCM 0x0300C0A7 +# define TLS1_CK_PSK_WITH_AES_128_CCM_8 0x0300C0A8 +# define TLS1_CK_PSK_WITH_AES_256_CCM_8 0x0300C0A9 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8 0x0300C0AA +# define TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8 0x0300C0AB + +/* CCM ciphersuites from RFC7251 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM 0x0300C0AC +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM 0x0300C0AD +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM_8 0x0300C0AE +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM_8 0x0300C0AF + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BA +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BB +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BC +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BD +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BE +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA256 0x030000BF + +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C0 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C1 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C2 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C3 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C4 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA256 0x030000C5 + +/* ECC ciphersuites from RFC4492 */ +# define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 +# define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 +# define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 + +# define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 +# define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 +# define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A + +# define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B +# define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C +# define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D +# define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E +# define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F + +# define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 +# define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 +# define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 + +# define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 +# define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 +# define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 +# define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 +# define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 + +/* SRP ciphersuites from RFC 5054 */ +# define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A +# define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B +# define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C +# define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F +# define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 + +/* ECDH HMAC based ciphersuites from RFC5289 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 + +/* ECDHE PSK ciphersuites from RFC5489 */ +# define TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA 0x0300C033 +# define TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300C034 +# define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA 0x0300C035 +# define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA 0x0300C036 + +# define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0x0300C037 +# define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0x0300C038 + +/* NULL PSK ciphersuites from RFC4785 */ +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA 0x0300C039 +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256 0x0300C03A +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384 0x0300C03B + +/* Camellia-CBC ciphersuites from RFC6367 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C072 +# define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C073 +# define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C074 +# define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C075 +# define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C076 +# define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C077 +# define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C078 +# define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C079 + +# define TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C094 +# define TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C095 +# define TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C096 +# define TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C097 +# define TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C098 +# define TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C099 +# define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C09A +# define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C09B + +/* draft-ietf-tls-chacha20-poly1305-03 */ +# define TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCA8 +# define TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 0x0300CCA9 +# define TLS1_CK_DHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCAA +# define TLS1_CK_PSK_WITH_CHACHA20_POLY1305 0x0300CCAB +# define TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAC +# define TLS1_CK_DHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAD +# define TLS1_CK_RSA_PSK_WITH_CHACHA20_POLY1305 0x0300CCAE + +/* TLS v1.3 ciphersuites */ +# define TLS1_3_CK_AES_128_GCM_SHA256 0x03001301 +# define TLS1_3_CK_AES_256_GCM_SHA384 0x03001302 +# define TLS1_3_CK_CHACHA20_POLY1305_SHA256 0x03001303 +# define TLS1_3_CK_AES_128_CCM_SHA256 0x03001304 +# define TLS1_3_CK_AES_128_CCM_8_SHA256 0x03001305 + +/* Aria ciphersuites from RFC6209 */ +# define TLS1_CK_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C050 +# define TLS1_CK_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C051 +# define TLS1_CK_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C052 +# define TLS1_CK_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C053 +# define TLS1_CK_DH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C054 +# define TLS1_CK_DH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C055 +# define TLS1_CK_DHE_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C056 +# define TLS1_CK_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C057 +# define TLS1_CK_DH_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C058 +# define TLS1_CK_DH_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C059 +# define TLS1_CK_DH_anon_WITH_ARIA_128_GCM_SHA256 0x0300C05A +# define TLS1_CK_DH_anon_WITH_ARIA_256_GCM_SHA384 0x0300C05B +# define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05C +# define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05D +# define TLS1_CK_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05E +# define TLS1_CK_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05F +# define TLS1_CK_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C060 +# define TLS1_CK_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C061 +# define TLS1_CK_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C062 +# define TLS1_CK_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C063 +# define TLS1_CK_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06A +# define TLS1_CK_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06B +# define TLS1_CK_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06C +# define TLS1_CK_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06D +# define TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06E +# define TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06F + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +# define TLS1_RFC_RSA_WITH_AES_128_SHA "TLS_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ADH_WITH_AES_128_SHA "TLS_DH_anon_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_RSA_WITH_AES_256_SHA "TLS_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ADH_WITH_AES_256_SHA "TLS_DH_anon_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_RSA_WITH_NULL_SHA256 "TLS_RSA_WITH_NULL_SHA256" +# define TLS1_RFC_RSA_WITH_AES_128_SHA256 "TLS_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_AES_256_SHA256 "TLS_RSA_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256 "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256 "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256 "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256 "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_AES_128_SHA256 "TLS_DH_anon_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_AES_256_SHA256 "TLS_DH_anon_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256 "TLS_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384 "TLS_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256 "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384 "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256 "TLS_DH_anon_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384 "TLS_DH_anon_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_RSA_WITH_AES_128_CCM "TLS_RSA_WITH_AES_128_CCM" +# define TLS1_RFC_RSA_WITH_AES_256_CCM "TLS_RSA_WITH_AES_256_CCM" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM "TLS_DHE_RSA_WITH_AES_128_CCM" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM "TLS_DHE_RSA_WITH_AES_256_CCM" +# define TLS1_RFC_RSA_WITH_AES_128_CCM_8 "TLS_RSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_RSA_WITH_AES_256_CCM_8 "TLS_RSA_WITH_AES_256_CCM_8" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8 "TLS_DHE_RSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8 "TLS_DHE_RSA_WITH_AES_256_CCM_8" +# define TLS1_RFC_PSK_WITH_AES_128_CCM "TLS_PSK_WITH_AES_128_CCM" +# define TLS1_RFC_PSK_WITH_AES_256_CCM "TLS_PSK_WITH_AES_256_CCM" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM "TLS_DHE_PSK_WITH_AES_128_CCM" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM "TLS_DHE_PSK_WITH_AES_256_CCM" +# define TLS1_RFC_PSK_WITH_AES_128_CCM_8 "TLS_PSK_WITH_AES_128_CCM_8" +# define TLS1_RFC_PSK_WITH_AES_256_CCM_8 "TLS_PSK_WITH_AES_256_CCM_8" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8 "TLS_PSK_DHE_WITH_AES_128_CCM_8" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8 "TLS_PSK_DHE_WITH_AES_256_CCM_8" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM "TLS_ECDHE_ECDSA_WITH_AES_128_CCM" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM "TLS_ECDHE_ECDSA_WITH_AES_256_CCM" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8" +# define TLS1_3_RFC_AES_128_GCM_SHA256 "TLS_AES_128_GCM_SHA256" +# define TLS1_3_RFC_AES_256_GCM_SHA384 "TLS_AES_256_GCM_SHA384" +# define TLS1_3_RFC_CHACHA20_POLY1305_SHA256 "TLS_CHACHA20_POLY1305_SHA256" +# define TLS1_3_RFC_AES_128_CCM_SHA256 "TLS_AES_128_CCM_SHA256" +# define TLS1_3_RFC_AES_128_CCM_8_SHA256 "TLS_AES_128_CCM_8_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA "TLS_ECDHE_ECDSA_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA "TLS_ECDHE_RSA_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_NULL_SHA "TLS_ECDH_anon_WITH_NULL_SHA" +# define TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA "TLS_ECDH_anon_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA "TLS_ECDH_anon_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_NULL_SHA "TLS_PSK_WITH_NULL_SHA" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA "TLS_DHE_PSK_WITH_NULL_SHA" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA "TLS_RSA_PSK_WITH_NULL_SHA" +# define TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA "TLS_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA "TLS_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA "TLS_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA "TLS_DHE_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA "TLS_DHE_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA "TLS_RSA_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA "TLS_RSA_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256 "TLS_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384 "TLS_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256 "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384 "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256 "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384 "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256 "TLS_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384 "TLS_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_PSK_WITH_NULL_SHA256 "TLS_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_PSK_WITH_NULL_SHA384 "TLS_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA256 "TLS_DHE_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA384 "TLS_DHE_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256 "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384 "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA256 "TLS_RSA_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA384 "TLS_RSA_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA "TLS_ECDHE_PSK_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256 "TLS_ECDHE_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384 "TLS_ECDHE_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305 "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_PSK_WITH_CHACHA20_POLY1305 "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305 "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305 "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305 "TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_RSA_WITH_SEED_SHA "TLS_RSA_WITH_SEED_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_SEED_SHA "TLS_DHE_DSS_WITH_SEED_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_SEED_SHA "TLS_DHE_RSA_WITH_SEED_CBC_SHA" +# define TLS1_RFC_ADH_WITH_SEED_SHA "TLS_DH_anon_WITH_SEED_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA "TLS_ECDHE_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA "TLS_ECDH_anon_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA "TLS_ECDHE_RSA_WITH_RC4_128_SHA" +# define TLS1_RFC_PSK_WITH_RC4_128_SHA "TLS_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA "TLS_RSA_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA "TLS_DHE_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_anon_WITH_ARIA_128_GCM_SHA256 "TLS_DH_anon_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_anon_WITH_ARIA_256_GCM_SHA384 "TLS_DH_anon_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_PSK_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384" + + +/* + * XXX Backward compatibility alert: Older versions of OpenSSL gave some DHE + * ciphers names with "EDH" instead of "DHE". Going forward, we should be + * using DHE everywhere, though we may indefinitely maintain aliases for + * users or configurations that used "EDH" + */ +# define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" + +# define TLS1_TXT_PSK_WITH_NULL_SHA "PSK-NULL-SHA" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA "DHE-PSK-NULL-SHA" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA "RSA-PSK-NULL-SHA" + +/* AES ciphersuites from RFC3268 */ +# define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" +# define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" + +# define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" +# define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" + +/* ECC ciphersuites from RFC4492 */ +# define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" + +# define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" +# define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" +# define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" + +/* PSK ciphersuites from RFC 4279 */ +# define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" +# define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" + +# define TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA "DHE-PSK-RC4-SHA" +# define TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA "DHE-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA "DHE-PSK-AES128-CBC-SHA" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA "DHE-PSK-AES256-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA "RSA-PSK-RC4-SHA" +# define TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA "RSA-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA "RSA-PSK-AES128-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA "RSA-PSK-AES256-CBC-SHA" + +/* PSK ciphersuites from RFC 5487 */ +# define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256 "DHE-PSK-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384 "DHE-PSK-AES256-GCM-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256 "RSA-PSK-AES128-GCM-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384 "RSA-PSK-AES256-GCM-SHA384" + +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256 "PSK-AES128-CBC-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384 "PSK-AES256-CBC-SHA384" +# define TLS1_TXT_PSK_WITH_NULL_SHA256 "PSK-NULL-SHA256" +# define TLS1_TXT_PSK_WITH_NULL_SHA384 "PSK-NULL-SHA384" + +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256 "DHE-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384 "DHE-PSK-AES256-CBC-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA256 "DHE-PSK-NULL-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA384 "DHE-PSK-NULL-SHA384" + +# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256 "RSA-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384 "RSA-PSK-AES256-CBC-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA256 "RSA-PSK-NULL-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA384 "RSA-PSK-NULL-SHA384" + +/* SRP ciphersuite from RFC 5054 */ +# define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256 "CAMELLIA128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DH-DSS-CAMELLIA128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DH-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DHE-DSS-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DHE-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA256 "ADH-CAMELLIA128-SHA256" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA256 "CAMELLIA256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DH-DSS-CAMELLIA256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DH-RSA-CAMELLIA256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DHE-DSS-CAMELLIA256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DHE-RSA-CAMELLIA256-SHA256" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA256 "ADH-CAMELLIA256-SHA256" + +# define TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256 "PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384 "PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "DHE-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "DHE-PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "RSA-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "RSA-PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-PSK-CAMELLIA256-SHA384" + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" +# define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" +# define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" +# define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" +# define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" +# define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" + +/* TLS v1.2 ciphersuites */ +# define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" +# define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" +# define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" + +/* CCM ciphersuites from RFC6655 */ +# define TLS1_TXT_RSA_WITH_AES_128_CCM "AES128-CCM" +# define TLS1_TXT_RSA_WITH_AES_256_CCM "AES256-CCM" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM "DHE-RSA-AES128-CCM" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM "DHE-RSA-AES256-CCM" + +# define TLS1_TXT_RSA_WITH_AES_128_CCM_8 "AES128-CCM8" +# define TLS1_TXT_RSA_WITH_AES_256_CCM_8 "AES256-CCM8" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8 "DHE-RSA-AES128-CCM8" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8 "DHE-RSA-AES256-CCM8" + +# define TLS1_TXT_PSK_WITH_AES_128_CCM "PSK-AES128-CCM" +# define TLS1_TXT_PSK_WITH_AES_256_CCM "PSK-AES256-CCM" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM "DHE-PSK-AES128-CCM" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM "DHE-PSK-AES256-CCM" + +# define TLS1_TXT_PSK_WITH_AES_128_CCM_8 "PSK-AES128-CCM8" +# define TLS1_TXT_PSK_WITH_AES_256_CCM_8 "PSK-AES256-CCM8" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8 "DHE-PSK-AES128-CCM8" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8 "DHE-PSK-AES256-CCM8" + +/* CCM ciphersuites from RFC7251 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM "ECDHE-ECDSA-AES128-CCM" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM "ECDHE-ECDSA-AES256-CCM" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8 "ECDHE-ECDSA-AES128-CCM8" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 "ECDHE-ECDSA-AES256-CCM8" + +/* ECDH HMAC based ciphersuites from RFC5289 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" + +/* TLS v1.2 PSK GCM ciphersuites from RFC5487 */ +# define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" + +/* ECDHE PSK ciphersuites from RFC 5489 */ +# define TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA "ECDHE-PSK-RC4-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "ECDHE-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA "ECDHE-PSK-AES128-CBC-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA "ECDHE-PSK-AES256-CBC-SHA" + +# define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "ECDHE-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "ECDHE-PSK-AES256-CBC-SHA384" + +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA "ECDHE-PSK-NULL-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256 "ECDHE-PSK-NULL-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384 "ECDHE-PSK-NULL-SHA384" + +/* Camellia-CBC ciphersuites from RFC6367 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-ECDSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-ECDSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-ECDSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-ECDSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-RSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-RSA-CAMELLIA256-SHA384" + +/* draft-ietf-tls-chacha20-poly1305-03 */ +# define TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 "ECDHE-RSA-CHACHA20-POLY1305" +# define TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "ECDHE-ECDSA-CHACHA20-POLY1305" +# define TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305 "DHE-RSA-CHACHA20-POLY1305" +# define TLS1_TXT_PSK_WITH_CHACHA20_POLY1305 "PSK-CHACHA20-POLY1305" +# define TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305 "ECDHE-PSK-CHACHA20-POLY1305" +# define TLS1_TXT_DHE_PSK_WITH_CHACHA20_POLY1305 "DHE-PSK-CHACHA20-POLY1305" +# define TLS1_TXT_RSA_PSK_WITH_CHACHA20_POLY1305 "RSA-PSK-CHACHA20-POLY1305" + +/* Aria ciphersuites from RFC6209 */ +# define TLS1_TXT_RSA_WITH_ARIA_128_GCM_SHA256 "ARIA128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_ARIA_256_GCM_SHA384 "ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "DHE-RSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "DHE-RSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_ARIA_128_GCM_SHA256 "DH-RSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_ARIA_256_GCM_SHA384 "DH-RSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "DHE-DSS-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "DHE-DSS-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_ARIA_128_GCM_SHA256 "DH-DSS-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_ARIA_256_GCM_SHA384 "DH-DSS-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_anon_WITH_ARIA_128_GCM_SHA256 "ADH-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_anon_WITH_ARIA_256_GCM_SHA384 "ADH-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ECDSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ECDSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ECDSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ECDSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ARIA256-GCM-SHA384" +# define TLS1_TXT_PSK_WITH_ARIA_128_GCM_SHA256 "PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_ARIA_256_GCM_SHA384 "PSK-ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "DHE-PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "DHE-PSK-ARIA256-GCM-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "RSA-PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "RSA-PSK-ARIA256-GCM-SHA384" + +# define TLS_CT_RSA_SIGN 1 +# define TLS_CT_DSS_SIGN 2 +# define TLS_CT_RSA_FIXED_DH 3 +# define TLS_CT_DSS_FIXED_DH 4 +# define TLS_CT_ECDSA_SIGN 64 +# define TLS_CT_RSA_FIXED_ECDH 65 +# define TLS_CT_ECDSA_FIXED_ECDH 66 +# define TLS_CT_GOST01_SIGN 22 +# define TLS_CT_GOST12_IANA_SIGN 67 +# define TLS_CT_GOST12_IANA_512_SIGN 68 +# define TLS_CT_GOST12_LEGACY_SIGN 238 +# define TLS_CT_GOST12_LEGACY_512_SIGN 239 + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define TLS_CT_GOST12_SIGN TLS_CT_GOST12_LEGACY_SIGN +# define TLS_CT_GOST12_512_SIGN TLS_CT_GOST12_LEGACY_512_SIGN +# endif + +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +# define TLS_CT_NUMBER 12 + +# if defined(SSL3_CT_NUMBER) +# if TLS_CT_NUMBER != SSL3_CT_NUMBER +# error "SSL/TLS CT_NUMBER values do not match" +# endif +# endif + +# define TLS1_FINISH_MAC_LENGTH 12 + +# define TLS_MD_MAX_CONST_SIZE 22 + +/* ASCII: "client finished", in hex for EBCDIC compatibility */ +# define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" +# define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 +/* ASCII: "server finished", in hex for EBCDIC compatibility */ +# define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" +# define TLS_MD_SERVER_FINISH_CONST_SIZE 15 +/* ASCII: "server write key", in hex for EBCDIC compatibility */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "key expansion", in hex for EBCDIC compatibility */ +# define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" +# define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 +/* ASCII: "client write key", in hex for EBCDIC compatibility */ +# define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +# define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "server write key", in hex for EBCDIC compatibility */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" +# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +/* ASCII: "IV block", in hex for EBCDIC compatibility */ +# define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" +# define TLS_MD_IV_BLOCK_CONST_SIZE 8 +/* ASCII: "master secret", in hex for EBCDIC compatibility */ +# define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# define TLS_MD_MASTER_SECRET_CONST_SIZE 13 +/* ASCII: "extended master secret", in hex for EBCDIC compatibility */ +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST "\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE 22 + +/* TLS Session Ticket extension struct */ +struct tls_session_ticket_ext_st { + unsigned short length; + void *data; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/openssl/trace.h b/include/openssl/trace.h new file mode 100644 index 0000000..97e1385 --- /dev/null +++ b/include/openssl/trace.h @@ -0,0 +1,312 @@ +/* + * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_TRACE_H +# define OPENSSL_TRACE_H +# pragma once + +# include + +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * TRACE CATEGORIES + */ + +/* + * The trace messages of the OpenSSL libraries are organized into different + * categories. For every trace category, the application can register a separate + * tracer callback. When a callback is registered, a so called trace channel is + * created for this category. This channel consists essentially of an internal + * BIO which sends all trace output it receives to the registered application + * callback. + * + * The ALL category can be used as a fallback category to register a single + * channel which receives the output from all categories. However, if the + * application intends to print the trace channel name in the line prefix, + * it is better to register channels for all categories separately. + * (This is how the openssl application does it.) + */ +# define OSSL_TRACE_CATEGORY_ALL 0 /* The fallback */ +# define OSSL_TRACE_CATEGORY_TRACE 1 +# define OSSL_TRACE_CATEGORY_INIT 2 +# define OSSL_TRACE_CATEGORY_TLS 3 +# define OSSL_TRACE_CATEGORY_TLS_CIPHER 4 +# define OSSL_TRACE_CATEGORY_CONF 5 +# define OSSL_TRACE_CATEGORY_ENGINE_TABLE 6 +# define OSSL_TRACE_CATEGORY_ENGINE_REF_COUNT 7 +# define OSSL_TRACE_CATEGORY_PKCS5V2 8 +# define OSSL_TRACE_CATEGORY_PKCS12_KEYGEN 9 +# define OSSL_TRACE_CATEGORY_PKCS12_DECRYPT 10 +# define OSSL_TRACE_CATEGORY_X509V3_POLICY 11 +# define OSSL_TRACE_CATEGORY_BN_CTX 12 +# define OSSL_TRACE_CATEGORY_CMP 13 +# define OSSL_TRACE_CATEGORY_STORE 14 +# define OSSL_TRACE_CATEGORY_DECODER 15 +# define OSSL_TRACE_CATEGORY_ENCODER 16 +# define OSSL_TRACE_CATEGORY_REF_COUNT 17 +# define OSSL_TRACE_CATEGORY_HTTP 18 +/* Count of available categories. */ +# define OSSL_TRACE_CATEGORY_NUM 19 +/* KEEP THIS LIST IN SYNC with trace_categories[] in crypto/trace.c */ + +/* Returns the trace category number for the given |name| */ +int OSSL_trace_get_category_num(const char *name); + +/* Returns the trace category name for the given |num| */ +const char *OSSL_trace_get_category_name(int num); + +/* + * TRACE CONSUMERS + */ + +/* + * Enables tracing for the given |category| by providing a BIO sink + * as |channel|. If a null pointer is passed as |channel|, an existing + * trace channel is removed and tracing for the category is disabled. + * + * Returns 1 on success and 0 on failure + */ +int OSSL_trace_set_channel(int category, BIO* channel); + +/* + * Attach a prefix and a suffix to the given |category|, to be printed at the + * beginning and at the end of each trace output group, i.e. when + * OSSL_trace_begin() and OSSL_trace_end() are called. + * If a null pointer is passed as argument, the existing prefix or suffix is + * removed. + * + * They return 1 on success and 0 on failure + */ +int OSSL_trace_set_prefix(int category, const char *prefix); +int OSSL_trace_set_suffix(int category, const char *suffix); + +/* + * OSSL_trace_cb is the type tracing callback provided by the application. + * It MUST return the number of bytes written, or 0 on error (in other words, + * it can never write zero bytes). + * + * The |buffer| will always contain text, which may consist of several lines. + * The |data| argument points to whatever data was provided by the application + * when registering the tracer function. + * + * The |category| number is given, as well as a |cmd| number, described below. + */ +typedef size_t (*OSSL_trace_cb)(const char *buffer, size_t count, + int category, int cmd, void *data); +/* + * Possible |cmd| numbers. + */ +# define OSSL_TRACE_CTRL_BEGIN 0 +# define OSSL_TRACE_CTRL_WRITE 1 +# define OSSL_TRACE_CTRL_END 2 + +/* + * Enables tracing for the given |category| by creating an internal + * trace channel which sends the output to the given |callback|. + * If a null pointer is passed as callback, an existing trace channel + * is removed and tracing for the category is disabled. + * + * NOTE: OSSL_trace_set_channel() and OSSL_trace_set_callback() are mutually + * exclusive. + * + * Returns 1 on success and 0 on failure + */ +int OSSL_trace_set_callback(int category, OSSL_trace_cb callback, void *data); + +/* + * TRACE PRODUCERS + */ + +/* + * Returns 1 if tracing for the specified category is enabled, otherwise 0 + */ +int OSSL_trace_enabled(int category); + +/* + * Wrap a group of tracing output calls. OSSL_trace_begin() locks tracing and + * returns the trace channel associated with the given category, or NULL if no + * channel is associated with the category. OSSL_trace_end() unlocks tracing. + * + * Usage: + * + * BIO *out; + * if ((out = OSSL_trace_begin(category)) != NULL) { + * ... + * BIO_fprintf(out, ...); + * ... + * OSSL_trace_end(category, out); + * } + * + * See also the convenience macros OSSL_TRACE_BEGIN and OSSL_TRACE_END below. + */ +BIO *OSSL_trace_begin(int category); +void OSSL_trace_end(int category, BIO *channel); + +/* + * OSSL_TRACE* Convenience Macros + */ + +/* + * When the tracing feature is disabled, these macros are defined to + * produce dead code, which a good compiler should eliminate. + */ + +/* + * OSSL_TRACE_BEGIN, OSSL_TRACE_END - Define a Trace Group + * + * These two macros can be used to create a block which is executed only + * if the corresponding trace category is enabled. Inside this block, a + * local variable named |trc_out| is defined, which points to the channel + * associated with the given trace category. + * + * Usage: (using 'TLS' as an example category) + * + * OSSL_TRACE_BEGIN(TLS) { + * + * BIO_fprintf(trc_out, ... ); + * + * } OSSL_TRACE_END(TLS); + * + * + * This expands to the following code + * + * do { + * BIO *trc_out = OSSL_trace_begin(OSSL_TRACE_CATEGORY_TLS); + * if (trc_out != NULL) { + * ... + * BIO_fprintf(trc_out, ...); + * } + * OSSL_trace_end(OSSL_TRACE_CATEGORY_TLS, trc_out); + * } while (0); + * + * The use of the inner '{...}' group and the trailing ';' is enforced + * by the definition of the macros in order to make the code look as much + * like C code as possible. + * + * Before returning from inside the trace block, it is necessary to + * call OSSL_TRACE_CANCEL(category). + */ + +# if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +# define OSSL_TRACE_BEGIN(category) \ + do { \ + BIO *trc_out = OSSL_trace_begin(OSSL_TRACE_CATEGORY_##category); \ + \ + if (trc_out != NULL) + +# define OSSL_TRACE_END(category) \ + OSSL_trace_end(OSSL_TRACE_CATEGORY_##category, trc_out); \ + } while (0) + +# define OSSL_TRACE_CANCEL(category) \ + OSSL_trace_end(OSSL_TRACE_CATEGORY_##category, trc_out) \ + +# else + +# define OSSL_TRACE_BEGIN(category) \ + do { \ + BIO *trc_out = NULL; \ + if (0) + +# define OSSL_TRACE_END(category) \ + } while(0) + +# define OSSL_TRACE_CANCEL(category) \ + ((void)0) + +# endif + +/* + * OSSL_TRACE_ENABLED() - Check whether tracing is enabled for |category| + * + * Usage: + * + * if (OSSL_TRACE_ENABLED(TLS)) { + * ... + * } + */ +# if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +# define OSSL_TRACE_ENABLED(category) \ + OSSL_trace_enabled(OSSL_TRACE_CATEGORY_##category) + +# else + +# define OSSL_TRACE_ENABLED(category) (0) + +# endif + +/* + * OSSL_TRACE*() - OneShot Trace Macros + * + * These macros are intended to produce a simple printf-style trace output. + * Unfortunately, C90 macros don't support variable arguments, so the + * "vararg" OSSL_TRACEV() macro has a rather weird usage pattern: + * + * OSSL_TRACEV(category, (trc_out, "format string", ...args...)); + * + * Where 'channel' is the literal symbol of this name, not a variable. + * For that reason, it is currently not intended to be used directly, + * but only as helper macro for the other oneshot trace macros + * OSSL_TRACE(), OSSL_TRACE1(), OSSL_TRACE2(), ... + * + * Usage: + * + * OSSL_TRACE(INIT, "Hello world!\n"); + * OSSL_TRACE1(TLS, "The answer is %d\n", 42); + * OSSL_TRACE2(TLS, "The ultimate question to answer %d is '%s'\n", + * 42, "What do you get when you multiply six by nine?"); + */ + +# if !defined OPENSSL_NO_TRACE && !defined FIPS_MODULE + +# define OSSL_TRACEV(category, args) \ + OSSL_TRACE_BEGIN(category) \ + BIO_printf args; \ + OSSL_TRACE_END(category) + +# else + +# define OSSL_TRACEV(category, args) ((void)0) + +# endif + +# define OSSL_TRACE(category, text) \ + OSSL_TRACEV(category, (trc_out, "%s", text)) + +# define OSSL_TRACE1(category, format, arg1) \ + OSSL_TRACEV(category, (trc_out, format, arg1)) +# define OSSL_TRACE2(category, format, arg1, arg2) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2)) +# define OSSL_TRACE3(category, format, arg1, arg2, arg3) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3)) +# define OSSL_TRACE4(category, format, arg1, arg2, arg3, arg4) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4)) +# define OSSL_TRACE5(category, format, arg1, arg2, arg3, arg4, arg5) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5)) +# define OSSL_TRACE6(category, format, arg1, arg2, arg3, arg4, arg5, arg6) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6)) +# define OSSL_TRACE7(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7)) +# define OSSL_TRACE8(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)) +# define OSSL_TRACE9(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ + OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)) + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/include/openssl/ts.h b/include/openssl/ts.h new file mode 100644 index 0000000..8ff6733 --- /dev/null +++ b/include/openssl/ts.h @@ -0,0 +1,505 @@ +/* + * Copyright 2006-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_TS_H +# define OPENSSL_TS_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_TS_H +# endif + +# include + +# ifndef OPENSSL_NO_TS +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif +# ifdef __cplusplus +extern "C" { +# endif + +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 TS_resp_st TS_RESP; + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_REQ) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_REQ, TS_REQ) +DECLARE_ASN1_DUP_FUNCTION(TS_REQ) + +#ifndef OPENSSL_NO_STDIO +TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a); +int i2d_TS_REQ_fp(FILE *fp, const TS_REQ *a); +#endif +TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a); +int i2d_TS_REQ_bio(BIO *fp, const TS_REQ *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_MSG_IMPRINT) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_MSG_IMPRINT, TS_MSG_IMPRINT) +DECLARE_ASN1_DUP_FUNCTION(TS_MSG_IMPRINT) + +#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, const 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, const TS_MSG_IMPRINT *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_RESP) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_RESP, TS_RESP) +DECLARE_ASN1_DUP_FUNCTION(TS_RESP) + +#ifndef OPENSSL_NO_STDIO +TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a); +int i2d_TS_RESP_fp(FILE *fp, const TS_RESP *a); +#endif +TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a); +int i2d_TS_RESP_bio(BIO *bio, const TS_RESP *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_STATUS_INFO) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_STATUS_INFO, TS_STATUS_INFO) +DECLARE_ASN1_DUP_FUNCTION(TS_STATUS_INFO) + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_TST_INFO) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_TST_INFO, TS_TST_INFO) +DECLARE_ASN1_DUP_FUNCTION(TS_TST_INFO) +TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token); + +#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, const 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, const TS_TST_INFO *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TS_ACCURACY) +DECLARE_ASN1_ENCODE_FUNCTIONS_only(TS_ACCURACY, TS_ACCURACY) +DECLARE_ASN1_DUP_FUNCTION(TS_ACCURACY) + +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; + +/* Creates a response context that can be used for generating responses. */ +TS_RESP_CTX *TS_RESP_CTX_new(void); +TS_RESP_CTX *TS_RESP_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +void TS_RESP_CTX_free(TS_RESP_CTX *ctx); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_cert(TS_RESP_CTX *ctx, X509 *signer); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_signer_key(TS_RESP_CTX *ctx, EVP_PKEY *key); + +int TS_RESP_CTX_set_signer_digest(TS_RESP_CTX *ctx, + const EVP_MD *signer_digest); +int TS_RESP_CTX_set_ess_cert_id_digest(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* This parameter must be set. */ +int TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *def_policy); + +/* No additional certs are included in the response by default. */ +int TS_RESP_CTX_set_certs(TS_RESP_CTX *ctx, STACK_OF(X509) *certs); + +/* + * Adds a new acceptable policy, only the default policy is accepted by + * default. + */ +int TS_RESP_CTX_add_policy(TS_RESP_CTX *ctx, const ASN1_OBJECT *policy); + +/* + * Adds a new acceptable message digest. Note that no message digests are + * accepted by default. The md argument is shared with the caller. + */ +int TS_RESP_CTX_add_md(TS_RESP_CTX *ctx, const EVP_MD *md); + +/* Accuracy is not included by default. */ +int TS_RESP_CTX_set_accuracy(TS_RESP_CTX *ctx, + int secs, int millis, int micros); + +/* + * Clock precision digits, i.e. the number of decimal digits: '0' means sec, + * '3' msec, '6' usec, and so on. Default is 0. + */ +int TS_RESP_CTX_set_clock_precision_digits(TS_RESP_CTX *ctx, + unsigned clock_precision_digits); +/* At most we accept usec precision. */ +# define TS_MAX_CLOCK_PRECISION_DIGITS 6 + +/* Maximum status message length */ +# define TS_MAX_STATUS_LENGTH (1024 * 1024) + +/* No flags are set by default. */ +void TS_RESP_CTX_add_flags(TS_RESP_CTX *ctx, int flags); + +/* Default callback always returns a constant. */ +void TS_RESP_CTX_set_serial_cb(TS_RESP_CTX *ctx, TS_serial_cb cb, void *data); + +/* Default callback uses the gettimeofday() and gmtime() system calls. */ +void TS_RESP_CTX_set_time_cb(TS_RESP_CTX *ctx, TS_time_cb cb, void *data); + +/* + * Default callback rejects all extensions. The extension callback is called + * when the TS_TST_INFO object is already set up and not signed yet. + */ +/* FIXME: extension handling is not tested yet. */ +void TS_RESP_CTX_set_extension_cb(TS_RESP_CTX *ctx, + TS_extension_cb cb, void *data); + +/* The following methods can be used in the callbacks. */ +int TS_RESP_CTX_set_status_info(TS_RESP_CTX *ctx, + int status, const char *text); + +/* Sets the status info only if it is still TS_STATUS_GRANTED. */ +int TS_RESP_CTX_set_status_info_cond(TS_RESP_CTX *ctx, + int status, const char *text); + +int TS_RESP_CTX_add_failure_info(TS_RESP_CTX *ctx, int failure); + +/* The get methods below can be used in the extension callback. */ +TS_REQ *TS_RESP_CTX_get_request(TS_RESP_CTX *ctx); + +TS_TST_INFO *TS_RESP_CTX_get_tst_info(TS_RESP_CTX *ctx); + +/* + * Creates the signed TS_TST_INFO and puts it in TS_RESP. + * In case of errors it sets the status info properly. + * Returns NULL only in case of memory allocation/fatal error. + */ +TS_RESP *TS_RESP_create_response(TS_RESP_CTX *ctx, BIO *req_bio); + +/* + * Declarations related to response verification, + * they are defined in ts/ts_resp_verify.c. + */ + +int TS_RESP_verify_signature(PKCS7 *token, STACK_OF(X509) *certs, + X509_STORE *store, X509 **signer_out); + +/* Context structure for the generic verify method. */ + +/* Verify the signer's certificate and the signature of the response. */ +# define TS_VFY_SIGNATURE (1u << 0) +/* Verify the version number of the response. */ +# define TS_VFY_VERSION (1u << 1) +/* Verify if the policy supplied by the user matches the policy of the TSA. */ +# define TS_VFY_POLICY (1u << 2) +/* + * Verify the message imprint provided by the user. This flag should not be + * specified with TS_VFY_DATA. + */ +# define TS_VFY_IMPRINT (1u << 3) +/* + * Verify the message imprint computed by the verify method from the user + * provided data and the MD algorithm of the response. This flag should not + * be specified with TS_VFY_IMPRINT. + */ +# define TS_VFY_DATA (1u << 4) +/* Verify the nonce value. */ +# define TS_VFY_NONCE (1u << 5) +/* Verify if the TSA name field matches the signer certificate. */ +# define TS_VFY_SIGNER (1u << 6) +/* Verify if the TSA name field equals to the user provided name. */ +# define TS_VFY_TSA_NAME (1u << 7) + +/* You can use the following convenience constants. */ +# define TS_VFY_ALL_IMPRINT (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_IMPRINT \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) +# define TS_VFY_ALL_DATA (TS_VFY_SIGNATURE \ + | TS_VFY_VERSION \ + | TS_VFY_POLICY \ + | TS_VFY_DATA \ + | TS_VFY_NONCE \ + | TS_VFY_SIGNER \ + | TS_VFY_TSA_NAME) + +typedef struct TS_verify_ctx TS_VERIFY_CTX; + +int TS_RESP_verify_response(TS_VERIFY_CTX *ctx, TS_RESP *response); +int TS_RESP_verify_token(TS_VERIFY_CTX *ctx, PKCS7 *token); + +/* + * Declarations related to response verification context, + */ +TS_VERIFY_CTX *TS_VERIFY_CTX_new(void); +void TS_VERIFY_CTX_init(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_free(TS_VERIFY_CTX *ctx); +void TS_VERIFY_CTX_cleanup(TS_VERIFY_CTX *ctx); +int TS_VERIFY_CTX_set_flags(TS_VERIFY_CTX *ctx, int f); +int TS_VERIFY_CTX_add_flags(TS_VERIFY_CTX *ctx, int f); +BIO *TS_VERIFY_CTX_set_data(TS_VERIFY_CTX *ctx, BIO *b); +unsigned char *TS_VERIFY_CTX_set_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +X509_STORE *TS_VERIFY_CTX_set_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define TS_VERIFY_CTS_set_certs(ctx, cert) TS_VERIFY_CTX_set_certs(ctx,cert) +# endif +STACK_OF(X509) *TS_VERIFY_CTX_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(const CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ordering(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_tsa_name(CONF *conf, const char *section, TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_chain(CONF *conf, const char *section, + TS_RESP_CTX *ctx); +int TS_CONF_set_ess_cert_id_digest(CONF *conf, const char *section, + TS_RESP_CTX *ctx); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/include/openssl/tserr.h b/include/openssl/tserr.h new file mode 100644 index 0000000..e1b943e --- /dev/null +++ b/include/openssl/tserr.h @@ -0,0 +1,67 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_TSERR_H +# define OPENSSL_TSERR_H +# pragma once + +# include +# include +# include + + +# ifndef OPENSSL_NO_TS + + +/* + * TS reason codes. + */ +# define TS_R_BAD_PKCS7_TYPE 132 +# define TS_R_BAD_TYPE 133 +# define TS_R_CANNOT_LOAD_CERT 137 +# define TS_R_CANNOT_LOAD_KEY 138 +# define TS_R_CERTIFICATE_VERIFY_ERROR 100 +# define TS_R_COULD_NOT_SET_ENGINE 127 +# define TS_R_COULD_NOT_SET_TIME 115 +# define TS_R_DETACHED_CONTENT 134 +# define TS_R_ESS_ADD_SIGNING_CERT_ERROR 116 +# define TS_R_ESS_ADD_SIGNING_CERT_V2_ERROR 139 +# define TS_R_ESS_SIGNING_CERTIFICATE_ERROR 101 +# define TS_R_INVALID_NULL_POINTER 102 +# define TS_R_INVALID_SIGNER_CERTIFICATE_PURPOSE 117 +# define TS_R_MESSAGE_IMPRINT_MISMATCH 103 +# define TS_R_NONCE_MISMATCH 104 +# define TS_R_NONCE_NOT_RETURNED 105 +# define TS_R_NO_CONTENT 106 +# define TS_R_NO_TIME_STAMP_TOKEN 107 +# define TS_R_PKCS7_ADD_SIGNATURE_ERROR 118 +# define TS_R_PKCS7_ADD_SIGNED_ATTR_ERROR 119 +# define TS_R_PKCS7_TO_TS_TST_INFO_FAILED 129 +# define TS_R_POLICY_MISMATCH 108 +# define TS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 120 +# define TS_R_RESPONSE_SETUP_ERROR 121 +# define TS_R_SIGNATURE_FAILURE 109 +# define TS_R_THERE_MUST_BE_ONE_SIGNER 110 +# define TS_R_TIME_SYSCALL_ERROR 122 +# define TS_R_TOKEN_NOT_PRESENT 130 +# define TS_R_TOKEN_PRESENT 131 +# define TS_R_TSA_NAME_MISMATCH 111 +# define TS_R_TSA_UNTRUSTED 112 +# define TS_R_TST_INFO_SETUP_ERROR 123 +# define TS_R_TS_DATASIGN 124 +# define TS_R_UNACCEPTABLE_POLICY 125 +# define TS_R_UNSUPPORTED_MD_ALGORITHM 126 +# define TS_R_UNSUPPORTED_VERSION 113 +# define TS_R_VAR_BAD_VALUE 135 +# define TS_R_VAR_LOOKUP_FAILURE 136 +# define TS_R_WRONG_CONTENT_TYPE 114 + +# endif +#endif diff --git a/include/openssl/txt_db.h b/include/openssl/txt_db.h new file mode 100644 index 0000000..af169a3 --- /dev/null +++ b/include/openssl/txt_db.h @@ -0,0 +1,63 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_TXT_DB_H +# define OPENSSL_TXT_DB_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_TXT_DB_H +# endif + +# 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/include/openssl/types.h b/include/openssl/types.h new file mode 100644 index 0000000..5f9d8c2 --- /dev/null +++ b/include/openssl/types.h @@ -0,0 +1,239 @@ +/* + * Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Unfortunate workaround to avoid symbol conflict with wincrypt.h + * See https://github.com/openssl/openssl/issues/9981 + */ +#ifdef _WIN32 +# define WINCRYPT_USE_SYMBOL_PREFIX +# undef X509_NAME +# undef X509_EXTENSIONS +# undef PKCS7_SIGNER_INFO +# undef OCSP_REQUEST +# undef OCSP_RESPONSE +#endif + +#ifndef OPENSSL_TYPES_H +# define OPENSSL_TYPES_H + +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# include +# include +# include + +typedef struct ossl_provider_st OSSL_PROVIDER; /* Provider Object */ + +# 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_type_st ASN1_TYPE; +typedef struct asn1_object_st ASN1_OBJECT; +typedef struct asn1_string_table_st ASN1_STRING_TABLE; + +typedef struct ASN1_ITEM_st ASN1_ITEM; +typedef struct asn1_pctx_st ASN1_PCTX; +typedef struct asn1_sctx_st ASN1_SCTX; + +# ifdef BIGNUM +# undef BIGNUM +# endif + +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; + +STACK_OF(BIGNUM); +STACK_OF(BIGNUM_const); + +typedef struct err_state_st ERR_STATE; + +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_mac_st EVP_MAC; +typedef struct evp_mac_ctx_st EVP_MAC_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_keymgmt_st EVP_KEYMGMT; + +typedef struct evp_kdf_st EVP_KDF; +typedef struct evp_kdf_ctx_st EVP_KDF_CTX; + +typedef struct evp_rand_st EVP_RAND; +typedef struct evp_rand_ctx_st EVP_RAND_CTX; + +typedef struct evp_keyexch_st EVP_KEYEXCH; + +typedef struct evp_signature_st EVP_SIGNATURE; + +typedef struct evp_asym_cipher_st EVP_ASYM_CIPHER; + +typedef struct evp_kem_st EVP_KEM; + +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; + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; +# endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; +# endif +typedef struct rsa_pss_params_st RSA_PSS_PARAMS; + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +typedef struct ec_key_st EC_KEY; +typedef struct ec_key_method_st EC_KEY_METHOD; +# endif + +typedef struct rand_meth_st RAND_METHOD; +typedef struct rand_drbg_st RAND_DRBG; + +typedef struct ssl_dane_st SSL_DANE; +typedef struct x509_st X509; +typedef struct X509_algor_st X509_ALGOR; +typedef struct X509_crl_st X509_CRL; +typedef struct x509_crl_method_st X509_CRL_METHOD; +typedef struct x509_revoked_st X509_REVOKED; +typedef struct X509_name_st X509_NAME; +typedef struct X509_pubkey_st X509_PUBKEY; +typedef struct x509_store_st X509_STORE; +typedef struct x509_store_ctx_st X509_STORE_CTX; + +typedef struct x509_object_st X509_OBJECT; +typedef struct x509_lookup_st X509_LOOKUP; +typedef struct x509_lookup_method_st X509_LOOKUP_METHOD; +typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM; + +typedef struct x509_sig_info_st X509_SIG_INFO; + +typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; + +typedef struct v3_ext_ctx X509V3_CTX; +typedef struct conf_st CONF; +typedef struct ossl_init_settings_st OPENSSL_INIT_SETTINGS; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct engine_st ENGINE; +typedef struct ssl_st SSL; +typedef struct ssl_ctx_st SSL_CTX; + +typedef struct comp_ctx_st COMP_CTX; +typedef struct comp_method_st COMP_METHOD; + +typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; +typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; +typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; +typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; + +typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; +typedef struct DIST_POINT_st DIST_POINT; +typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; +typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; + +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; + +typedef struct ossl_http_req_ctx_st OSSL_HTTP_REQ_CTX; +typedef struct ocsp_response_st OCSP_RESPONSE; +typedef struct ocsp_responder_id_st OCSP_RESPID; + +typedef struct sct_st SCT; +typedef struct sct_ctx_st SCT_CTX; +typedef struct ctlog_st CTLOG; +typedef struct ctlog_store_st CTLOG_STORE; +typedef struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX; + +typedef struct ossl_store_info_st OSSL_STORE_INFO; +typedef struct ossl_store_search_st OSSL_STORE_SEARCH; + +typedef struct ossl_lib_ctx_st OSSL_LIB_CTX; + +typedef struct ossl_dispatch_st OSSL_DISPATCH; +typedef struct ossl_item_st OSSL_ITEM; +typedef struct ossl_algorithm_st OSSL_ALGORITHM; +typedef struct ossl_param_st OSSL_PARAM; +typedef struct ossl_param_bld_st OSSL_PARAM_BLD; + +typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata); + +typedef struct ossl_encoder_st OSSL_ENCODER; +typedef struct ossl_encoder_ctx_st OSSL_ENCODER_CTX; +typedef struct ossl_decoder_st OSSL_DECODER; +typedef struct ossl_decoder_ctx_st OSSL_DECODER_CTX; + +typedef struct ossl_self_test_st OSSL_SELF_TEST; + +#ifdef __cplusplus +} +#endif + +#endif /* OPENSSL_TYPES_H */ diff --git a/include/openssl/ui.h b/include/openssl/ui.h new file mode 100644 index 0000000..e5a6871 --- /dev/null +++ b/include/openssl/ui.h @@ -0,0 +1,407 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/ui.h.in + * + * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_UI_H +# define OPENSSL_UI_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_UI_H +# endif + +# include + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# include +# endif +# include +# include +# include +# include + +/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifdef OPENSSL_NO_UI_CONSOLE +# define OPENSSL_NO_UI +# endif +# endif + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * All the following functions return -1 or NULL on error and in some cases + * (UI_process()) -2 if interrupted or in some other way cancelled. When + * everything is fine, they return 0, a positive value or a non-NULL pointer, + * all depending on their purpose. + */ + +/* Creators and destructor. */ +UI *UI_new(void); +UI *UI_new_method(const UI_METHOD *method); +void UI_free(UI *ui); + +/*- + The following functions are used to add strings to be printed and prompt + strings to prompt for data. The names are UI_{add,dup}__string + and UI_{add,dup}_input_boolean. + + UI_{add,dup}__string have the following meanings: + add add a text or prompt string. The pointers given to these + functions are used verbatim, no copying is done. + dup make a copy of the text or prompt string, then add the copy + to the collection of strings in the user interface. + + The function is a name for the functionality that the given + string shall be used for. It can be one of: + input use the string as data prompt. + verify use the string as verification prompt. This + is used to verify a previous input. + info use the string for informational output. + error use the string for error output. + Honestly, there's currently no difference between info and error for the + moment. + + UI_{add,dup}_input_boolean have the same semantics for "add" and "dup", + and are typically used when one wants to prompt for a yes/no response. + + All of the functions in this group take a UI and a prompt string. + The string input and verify addition functions also take a flag argument, + a buffer for the result to end up with, a minimum input size and a maximum + input size (the result buffer MUST be large enough to be able to contain + the maximum number of characters). Additionally, the verify addition + functions takes another buffer to compare the result against. + The boolean input functions take an action description string (which should + be safe to ignore if the expected user action is obvious, for example with + a dialog box with an OK button and a Cancel button), a string of acceptable + characters to mean OK and to mean Cancel. The two last strings are checked + to make sure they don't have common characters. Additionally, the same + flag argument as for the string input is taken, as well as a result buffer. + The result buffer is required to be at least one byte long. Depending on + the answer, the first character from the OK or the Cancel character strings + will be stored in the first byte of the result buffer. No NUL will be + added, so the result is *not* a string. + + On success, the all return an index of the added information. That index + is useful when retrieving results with UI_get0_result(). */ +int UI_add_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_dup_input_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize); +int UI_add_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_dup_verify_string(UI *ui, const char *prompt, int flags, + char *result_buf, int minsize, int maxsize, + const char *test_buf); +int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc, + const char *ok_chars, const char *cancel_chars, + int flags, char *result_buf); +int UI_add_info_string(UI *ui, const char *text); +int UI_dup_info_string(UI *ui, const char *text); +int UI_add_error_string(UI *ui, const char *text); +int UI_dup_error_string(UI *ui, const char *text); + +/* These are the possible flags. They can be or'ed together. */ +/* Use to have echoing of input */ +# define UI_INPUT_FLAG_ECHO 0x01 +/* + * Use a default password. Where that password is found is completely up to + * the application, it might for example be in the user data set with + * UI_add_user_data(). It is not recommended to have more than one input in + * each UI being marked with this flag, or the application might get + * confused. + */ +# define UI_INPUT_FLAG_DEFAULT_PWD 0x02 + +/*- + * The user of these routines may want to define flags of their own. The core + * UI won't look at those, but will pass them on to the method routines. They + * must use higher bits so they don't get confused with the UI bits above. + * UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good + * example of use is this: + * + * #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE) + * +*/ +# define UI_INPUT_FLAG_USER_BASE 16 + +/*- + * The following function helps construct a prompt. + * phrase_desc is a textual short description of the phrase to enter, + * for example "pass phrase", and + * object_name is the name of the object + * (which might be a card name or a file name) or NULL. + * 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 {phrase_desc} for {object_name}:" + * + * So, if phrase_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 *phrase_desc, const char *object_name); + +/* + * The following function is used to store a pointer to user-specific data. + * Any previous such pointer will be returned and replaced. + * + * For callback purposes, this function makes a lot more sense than using + * ex_data, since the latter requires that different parts of OpenSSL or + * applications share the same ex_data index. + * + * Note that the UI_OpenSSL() method completely ignores the user data. Other + * methods may not, however. + */ +void *UI_add_user_data(UI *ui, void *user_data); +/* + * Alternatively, this function is used to duplicate the user data. + * This uses the duplicator method function. The destroy function will + * be used to free the user data in this case. + */ +int UI_dup_user_data(UI *ui, void *user_data); +/* We need a user data retrieving function as well. */ +void *UI_get0_user_data(UI *ui); + +/* Return the result associated with a prompt given with the index i. */ +const char *UI_get0_result(UI *ui, int i); +int UI_get_result_length(UI *ui, int i); + +/* When all strings have been added, process the whole thing. */ +int UI_process(UI *ui); + +/* + * Give a user interface parameterised control commands. This can be used to + * send down an integer, a data pointer or a function pointer, as well as be + * used to get information from a UI. + */ +int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f) (void)); + +/* The commands */ +/* + * Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the + * OpenSSL error stack before printing any info or added error messages and + * before any prompting. + */ +# define UI_CTRL_PRINT_ERRORS 1 +/* + * Check if a UI_process() is possible to do again with the same instance of + * a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0 + * if not. + */ +# define UI_CTRL_IS_REDOABLE 2 + +/* Some methods may use extra data */ +# define UI_set_app_data(s,arg) UI_set_ex_data(s,0,arg) +# define UI_get_app_data(s) UI_get_ex_data(s,0) + +# define UI_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef) +int UI_set_ex_data(UI *r, int idx, void *arg); +void *UI_get_ex_data(const UI *r, int idx); + +/* Use specific methods instead of the built-in one */ +void UI_set_default_method(const UI_METHOD *meth); +const UI_METHOD *UI_get_default_method(void); +const UI_METHOD *UI_get_method(UI *ui); +const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth); + +# ifndef OPENSSL_NO_UI_CONSOLE + +/* The method with all the built-in thingies */ +UI_METHOD *UI_OpenSSL(void); + +# endif + +/* + * NULL method. Literally does nothing, but may serve as a placeholder + * to avoid internal default. + */ +const UI_METHOD *UI_null(void); + +/* ---------- For method writers ---------- */ +/*- + A method contains a number of functions that implement the low level + of the User Interface. The functions are: + + an opener This function starts a session, maybe by opening + a channel to a tty, or by opening a window. + a writer This function is called to write a given string, + maybe to the tty, maybe as a field label in a + window. + a flusher This function is called to flush everything that + has been output so far. It can be used to actually + display a dialog box after it has been built. + a reader This function is called to read a given prompt, + maybe from the tty, maybe from a field in a + window. Note that it's called with all string + structures, not only the prompt ones, so it must + check such things itself. + a closer This function closes the session, maybe by closing + the channel to the tty, or closing the window. + + All these functions are expected to return: + + 0 on error. + 1 on success. + -1 on out-of-band events, for example if some prompting has + been canceled (by pressing Ctrl-C, for example). This is + only checked when returned by the flusher or the reader. + + The way this is used, the opener is first called, then the writer for all + strings, then the flusher, then the reader for all strings and finally the + closer. Note that if you want to prompt from a terminal or other command + line interface, the best is to have the reader also write the prompts + instead of having the writer do it. If you want to prompt from a dialog + box, the writer can be used to build up the contents of the box, and the + flusher to actually display the box and run the event loop until all data + has been given, after which the reader only grabs the given data and puts + them back into the UI strings. + + All method functions take a UI as argument. Additionally, the writer and + the reader take a UI_STRING. +*/ + +/* + * The UI_STRING type is the data structure that contains all the needed info + * about a string or a prompt, including test data for a verification prompt. + */ +typedef struct ui_string_st UI_STRING; + +SKM_DEFINE_STACK_OF_INTERNAL(UI_STRING, UI_STRING, UI_STRING) +#define sk_UI_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_value(sk, idx) ((UI_STRING *)OPENSSL_sk_value(ossl_check_const_UI_STRING_sk_type(sk), (idx))) +#define sk_UI_STRING_new(cmp) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new(ossl_check_UI_STRING_compfunc_type(cmp))) +#define sk_UI_STRING_new_null() ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_null()) +#define sk_UI_STRING_new_reserve(cmp, n) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_reserve(ossl_check_UI_STRING_compfunc_type(cmp), (n))) +#define sk_UI_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_UI_STRING_sk_type(sk), (n)) +#define sk_UI_STRING_free(sk) OPENSSL_sk_free(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_delete(sk, i) ((UI_STRING *)OPENSSL_sk_delete(ossl_check_UI_STRING_sk_type(sk), (i))) +#define sk_UI_STRING_delete_ptr(sk, ptr) ((UI_STRING *)OPENSSL_sk_delete_ptr(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_pop(sk) ((UI_STRING *)OPENSSL_sk_pop(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_shift(sk) ((UI_STRING *)OPENSSL_sk_shift(ossl_check_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_UI_STRING_sk_type(sk),ossl_check_UI_STRING_freefunc_type(freefunc)) +#define sk_UI_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), (idx)) +#define sk_UI_STRING_set(sk, idx, ptr) ((UI_STRING *)OPENSSL_sk_set(ossl_check_UI_STRING_sk_type(sk), (idx), ossl_check_UI_STRING_type(ptr))) +#define sk_UI_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) +#define sk_UI_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), pnum) +#define sk_UI_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_UI_STRING_sk_type(sk)) +#define sk_UI_STRING_dup(sk) ((STACK_OF(UI_STRING) *)OPENSSL_sk_dup(ossl_check_const_UI_STRING_sk_type(sk))) +#define sk_UI_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(UI_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_UI_STRING_sk_type(sk), ossl_check_UI_STRING_copyfunc_type(copyfunc), ossl_check_UI_STRING_freefunc_type(freefunc))) +#define sk_UI_STRING_set_cmp_func(sk, cmp) ((sk_UI_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_compfunc_type(cmp))) + + +/* + * The different types of strings that are currently supported. This is only + * needed by method authors. + */ +enum UI_string_types { + UIT_NONE = 0, + UIT_PROMPT, /* Prompt for a string */ + UIT_VERIFY, /* Prompt for a string and verify */ + UIT_BOOLEAN, /* Prompt for a yes/no response */ + UIT_INFO, /* Send info to the user */ + UIT_ERROR /* Send an error message to the user */ +}; + +/* Create and manipulate methods */ +UI_METHOD *UI_create_method(const char *name); +void UI_destroy_method(UI_METHOD *ui_method); +int UI_method_set_opener(UI_METHOD *method, int (*opener) (UI *ui)); +int UI_method_set_writer(UI_METHOD *method, + int (*writer) (UI *ui, UI_STRING *uis)); +int UI_method_set_flusher(UI_METHOD *method, int (*flusher) (UI *ui)); +int UI_method_set_reader(UI_METHOD *method, + int (*reader) (UI *ui, UI_STRING *uis)); +int UI_method_set_closer(UI_METHOD *method, int (*closer) (UI *ui)); +int UI_method_set_data_duplicator(UI_METHOD *method, + void *(*duplicator) (UI *ui, void *ui_data), + void (*destructor)(UI *ui, void *ui_data)); +int UI_method_set_prompt_constructor(UI_METHOD *method, + char *(*prompt_constructor) (UI *ui, + const char + *phrase_desc, + const char + *object_name)); +int UI_method_set_ex_data(UI_METHOD *method, int idx, void *data); +int (*UI_method_get_opener(const UI_METHOD *method)) (UI *); +int (*UI_method_get_writer(const UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_flusher(const UI_METHOD *method)) (UI *); +int (*UI_method_get_reader(const UI_METHOD *method)) (UI *, UI_STRING *); +int (*UI_method_get_closer(const UI_METHOD *method)) (UI *); +char *(*UI_method_get_prompt_constructor(const UI_METHOD *method)) + (UI *, const char *, const char *); +void *(*UI_method_get_data_duplicator(const UI_METHOD *method)) (UI *, void *); +void (*UI_method_get_data_destructor(const UI_METHOD *method)) (UI *, void *); +const void *UI_method_get_ex_data(const UI_METHOD *method, int idx); + +/* + * The following functions are helpers for method writers to access relevant + * data from a UI_STRING. + */ + +/* Return type of the UI_STRING */ +enum UI_string_types UI_get_string_type(UI_STRING *uis); +/* Return input flags of the UI_STRING */ +int UI_get_input_flags(UI_STRING *uis); +/* Return the actual string to output (the prompt, info or error) */ +const char *UI_get0_output_string(UI_STRING *uis); +/* + * Return the optional action string to output (the boolean prompt + * instruction) + */ +const char *UI_get0_action_string(UI_STRING *uis); +/* Return the result of a prompt */ +const char *UI_get0_result_string(UI_STRING *uis); +int UI_get_result_string_length(UI_STRING *uis); +/* + * Return the string to test the result against. Only useful with verifies. + */ +const char *UI_get0_test_string(UI_STRING *uis); +/* Return the required minimum size of the result */ +int UI_get_result_minsize(UI_STRING *uis); +/* Return the required maximum size of the result */ +int UI_get_result_maxsize(UI_STRING *uis); +/* Set the result of a UI_STRING. */ +int UI_set_result(UI *ui, UI_STRING *uis, const char *result); +int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len); + +/* A couple of popular utility functions */ +int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt, + int verify); +int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt, + int verify); +UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/uierr.h b/include/openssl/uierr.h new file mode 100644 index 0000000..473b04e --- /dev/null +++ b/include/openssl/uierr.h @@ -0,0 +1,38 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_UIERR_H +# define OPENSSL_UIERR_H +# pragma once + +# include +# include +# include + + + +/* + * UI reason codes. + */ +# define UI_R_COMMON_OK_AND_CANCEL_CHARACTERS 104 +# define UI_R_INDEX_TOO_LARGE 102 +# define UI_R_INDEX_TOO_SMALL 103 +# define UI_R_NO_RESULT_BUFFER 105 +# define UI_R_PROCESSING_ERROR 107 +# define UI_R_RESULT_TOO_LARGE 100 +# define UI_R_RESULT_TOO_SMALL 101 +# define UI_R_SYSASSIGN_ERROR 109 +# define UI_R_SYSDASSGN_ERROR 110 +# define UI_R_SYSQIOW_ERROR 111 +# define UI_R_UNKNOWN_CONTROL_COMMAND 106 +# define UI_R_UNKNOWN_TTYGET_ERRNO_VALUE 108 +# define UI_R_USER_DATA_DUPLICATION_UNSUPPORTED 112 + +#endif diff --git a/include/openssl/whrlpool.h b/include/openssl/whrlpool.h new file mode 100644 index 0000000..05ba463 --- /dev/null +++ b/include/openssl/whrlpool.h @@ -0,0 +1,62 @@ +/* + * Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_WHRLPOOL_H +# define OPENSSL_WHRLPOOL_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_WHRLPOOL_H +# endif + +# include + +# ifndef OPENSSL_NO_WHIRLPOOL +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define WHIRLPOOL_DIGEST_LENGTH (512/8) + +# if !defined(OPENSSL_NO_DEPRECATED_3_0) + +# 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; +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Init(WHIRLPOOL_CTX *c); +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Update(WHIRLPOOL_CTX *c, + const void *inp, size_t bytes); +OSSL_DEPRECATEDIN_3_0 void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, + const void *inp, size_t bits); +OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c); +OSSL_DEPRECATEDIN_3_0 unsigned char *WHIRLPOOL(const void *inp, size_t bytes, + unsigned char *md); +# endif + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/include/openssl/x509.h b/include/openssl/x509.h new file mode 100644 index 0000000..837a37f --- /dev/null +++ b/include/openssl/x509.h @@ -0,0 +1,1279 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/x509.h.in + * + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_H +# define OPENSSL_X509_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_X509_H +# endif + +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# include +# include +# include +# endif + +# include +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Needed stacks for types defined in other headers */ +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME, X509_NAME, X509_NAME) +#define sk_X509_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_value(sk, idx) ((X509_NAME *)OPENSSL_sk_value(ossl_check_const_X509_NAME_sk_type(sk), (idx))) +#define sk_X509_NAME_new(cmp) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new(ossl_check_X509_NAME_compfunc_type(cmp))) +#define sk_X509_NAME_new_null() ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_new_reserve(cmp, n) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_compfunc_type(cmp), (n))) +#define sk_X509_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_sk_type(sk), (n)) +#define sk_X509_NAME_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_delete(sk, i) ((X509_NAME *)OPENSSL_sk_delete(ossl_check_X509_NAME_sk_type(sk), (i))) +#define sk_X509_NAME_delete_ptr(sk, ptr) ((X509_NAME *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_pop(sk) ((X509_NAME *)OPENSSL_sk_pop(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_shift(sk) ((X509_NAME *)OPENSSL_sk_shift(ossl_check_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_sk_type(sk),ossl_check_X509_NAME_freefunc_type(freefunc)) +#define sk_X509_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), (idx)) +#define sk_X509_NAME_set(sk, idx, ptr) ((X509_NAME *)OPENSSL_sk_set(ossl_check_X509_NAME_sk_type(sk), (idx), ossl_check_X509_NAME_type(ptr))) +#define sk_X509_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) +#define sk_X509_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), pnum) +#define sk_X509_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_sk_type(sk)) +#define sk_X509_NAME_dup(sk) ((STACK_OF(X509_NAME) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_sk_type(sk))) +#define sk_X509_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_sk_type(sk), ossl_check_X509_NAME_copyfunc_type(copyfunc), ossl_check_X509_NAME_freefunc_type(freefunc))) +#define sk_X509_NAME_set_cmp_func(sk, cmp) ((sk_X509_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509, X509, X509) +#define sk_X509_num(sk) OPENSSL_sk_num(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_value(sk, idx) ((X509 *)OPENSSL_sk_value(ossl_check_const_X509_sk_type(sk), (idx))) +#define sk_X509_new(cmp) ((STACK_OF(X509) *)OPENSSL_sk_new(ossl_check_X509_compfunc_type(cmp))) +#define sk_X509_new_null() ((STACK_OF(X509) *)OPENSSL_sk_new_null()) +#define sk_X509_new_reserve(cmp, n) ((STACK_OF(X509) *)OPENSSL_sk_new_reserve(ossl_check_X509_compfunc_type(cmp), (n))) +#define sk_X509_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_sk_type(sk), (n)) +#define sk_X509_free(sk) OPENSSL_sk_free(ossl_check_X509_sk_type(sk)) +#define sk_X509_zero(sk) OPENSSL_sk_zero(ossl_check_X509_sk_type(sk)) +#define sk_X509_delete(sk, i) ((X509 *)OPENSSL_sk_delete(ossl_check_X509_sk_type(sk), (i))) +#define sk_X509_delete_ptr(sk, ptr) ((X509 *)OPENSSL_sk_delete_ptr(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))) +#define sk_X509_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_pop(sk) ((X509 *)OPENSSL_sk_pop(ossl_check_X509_sk_type(sk))) +#define sk_X509_shift(sk) ((X509 *)OPENSSL_sk_shift(ossl_check_X509_sk_type(sk))) +#define sk_X509_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_sk_type(sk),ossl_check_X509_freefunc_type(freefunc)) +#define sk_X509_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), (idx)) +#define sk_X509_set(sk, idx, ptr) ((X509 *)OPENSSL_sk_set(ossl_check_X509_sk_type(sk), (idx), ossl_check_X509_type(ptr))) +#define sk_X509_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) +#define sk_X509_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), pnum) +#define sk_X509_sort(sk) OPENSSL_sk_sort(ossl_check_X509_sk_type(sk)) +#define sk_X509_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_sk_type(sk)) +#define sk_X509_dup(sk) ((STACK_OF(X509) *)OPENSSL_sk_dup(ossl_check_const_X509_sk_type(sk))) +#define sk_X509_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_sk_type(sk), ossl_check_X509_copyfunc_type(copyfunc), ossl_check_X509_freefunc_type(freefunc))) +#define sk_X509_set_cmp_func(sk, cmp) ((sk_X509_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_sk_type(sk), ossl_check_X509_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_REVOKED, X509_REVOKED, X509_REVOKED) +#define sk_X509_REVOKED_num(sk) OPENSSL_sk_num(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_value(sk, idx) ((X509_REVOKED *)OPENSSL_sk_value(ossl_check_const_X509_REVOKED_sk_type(sk), (idx))) +#define sk_X509_REVOKED_new(cmp) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new(ossl_check_X509_REVOKED_compfunc_type(cmp))) +#define sk_X509_REVOKED_new_null() ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_null()) +#define sk_X509_REVOKED_new_reserve(cmp, n) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_reserve(ossl_check_X509_REVOKED_compfunc_type(cmp), (n))) +#define sk_X509_REVOKED_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_REVOKED_sk_type(sk), (n)) +#define sk_X509_REVOKED_free(sk) OPENSSL_sk_free(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_zero(sk) OPENSSL_sk_zero(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_delete(sk, i) ((X509_REVOKED *)OPENSSL_sk_delete(ossl_check_X509_REVOKED_sk_type(sk), (i))) +#define sk_X509_REVOKED_delete_ptr(sk, ptr) ((X509_REVOKED *)OPENSSL_sk_delete_ptr(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_pop(sk) ((X509_REVOKED *)OPENSSL_sk_pop(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_shift(sk) ((X509_REVOKED *)OPENSSL_sk_shift(ossl_check_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_REVOKED_sk_type(sk),ossl_check_X509_REVOKED_freefunc_type(freefunc)) +#define sk_X509_REVOKED_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), (idx)) +#define sk_X509_REVOKED_set(sk, idx, ptr) ((X509_REVOKED *)OPENSSL_sk_set(ossl_check_X509_REVOKED_sk_type(sk), (idx), ossl_check_X509_REVOKED_type(ptr))) +#define sk_X509_REVOKED_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) +#define sk_X509_REVOKED_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), pnum) +#define sk_X509_REVOKED_sort(sk) OPENSSL_sk_sort(ossl_check_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_REVOKED_sk_type(sk)) +#define sk_X509_REVOKED_dup(sk) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_dup(ossl_check_const_X509_REVOKED_sk_type(sk))) +#define sk_X509_REVOKED_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_copyfunc_type(copyfunc), ossl_check_X509_REVOKED_freefunc_type(freefunc))) +#define sk_X509_REVOKED_set_cmp_func(sk, cmp) ((sk_X509_REVOKED_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) +#define sk_X509_CRL_num(sk) OPENSSL_sk_num(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_value(sk, idx) ((X509_CRL *)OPENSSL_sk_value(ossl_check_const_X509_CRL_sk_type(sk), (idx))) +#define sk_X509_CRL_new(cmp) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new(ossl_check_X509_CRL_compfunc_type(cmp))) +#define sk_X509_CRL_new_null() ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_null()) +#define sk_X509_CRL_new_reserve(cmp, n) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_reserve(ossl_check_X509_CRL_compfunc_type(cmp), (n))) +#define sk_X509_CRL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_CRL_sk_type(sk), (n)) +#define sk_X509_CRL_free(sk) OPENSSL_sk_free(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_zero(sk) OPENSSL_sk_zero(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_delete(sk, i) ((X509_CRL *)OPENSSL_sk_delete(ossl_check_X509_CRL_sk_type(sk), (i))) +#define sk_X509_CRL_delete_ptr(sk, ptr) ((X509_CRL *)OPENSSL_sk_delete_ptr(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_pop(sk) ((X509_CRL *)OPENSSL_sk_pop(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_shift(sk) ((X509_CRL *)OPENSSL_sk_shift(ossl_check_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_CRL_sk_type(sk),ossl_check_X509_CRL_freefunc_type(freefunc)) +#define sk_X509_CRL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), (idx)) +#define sk_X509_CRL_set(sk, idx, ptr) ((X509_CRL *)OPENSSL_sk_set(ossl_check_X509_CRL_sk_type(sk), (idx), ossl_check_X509_CRL_type(ptr))) +#define sk_X509_CRL_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) +#define sk_X509_CRL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), pnum) +#define sk_X509_CRL_sort(sk) OPENSSL_sk_sort(ossl_check_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_CRL_sk_type(sk)) +#define sk_X509_CRL_dup(sk) ((STACK_OF(X509_CRL) *)OPENSSL_sk_dup(ossl_check_const_X509_CRL_sk_type(sk))) +#define sk_X509_CRL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_CRL) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_CRL_sk_type(sk), ossl_check_X509_CRL_copyfunc_type(copyfunc), ossl_check_X509_CRL_freefunc_type(freefunc))) +#define sk_X509_CRL_set_cmp_func(sk, cmp) ((sk_X509_CRL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_compfunc_type(cmp))) + + +/* Flags for X509_get_signature_info() */ +/* Signature info is valid */ +# define X509_SIG_INFO_VALID 0x1 +/* Signature is suitable for TLS use */ +# define X509_SIG_INFO_TLS 0x2 + +# define X509_FILETYPE_PEM 1 +# define X509_FILETYPE_ASN1 2 +# define X509_FILETYPE_DEFAULT 3 + +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 +# define X509v3_KU_NON_REPUDIATION 0x0040 +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 +# define X509v3_KU_KEY_AGREEMENT 0x0008 +# define X509v3_KU_KEY_CERT_SIGN 0x0004 +# define X509v3_KU_CRL_SIGN 0x0002 +# define X509v3_KU_ENCIPHER_ONLY 0x0001 +# define X509v3_KU_DECIPHER_ONLY 0x8000 +# define X509v3_KU_UNDEF 0xffff + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */ ; + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +typedef struct X509_sig_st X509_SIG; + +typedef struct X509_name_entry_st X509_NAME_ENTRY; + +SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME_ENTRY, X509_NAME_ENTRY, X509_NAME_ENTRY) +#define sk_X509_NAME_ENTRY_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_value(sk, idx) ((X509_NAME_ENTRY *)OPENSSL_sk_value(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), (idx))) +#define sk_X509_NAME_ENTRY_new(cmp) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) +#define sk_X509_NAME_ENTRY_new_null() ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_null()) +#define sk_X509_NAME_ENTRY_new_reserve(cmp, n) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp), (n))) +#define sk_X509_NAME_ENTRY_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_ENTRY_sk_type(sk), (n)) +#define sk_X509_NAME_ENTRY_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_delete(sk, i) ((X509_NAME_ENTRY *)OPENSSL_sk_delete(ossl_check_X509_NAME_ENTRY_sk_type(sk), (i))) +#define sk_X509_NAME_ENTRY_delete_ptr(sk, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_pop(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_pop(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_shift(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_shift(ossl_check_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_ENTRY_sk_type(sk),ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc)) +#define sk_X509_NAME_ENTRY_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), (idx)) +#define sk_X509_NAME_ENTRY_set(sk, idx, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_set(ossl_check_X509_NAME_ENTRY_sk_type(sk), (idx), ossl_check_X509_NAME_ENTRY_type(ptr))) +#define sk_X509_NAME_ENTRY_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) +#define sk_X509_NAME_ENTRY_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), pnum) +#define sk_X509_NAME_ENTRY_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) +#define sk_X509_NAME_ENTRY_dup(sk) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_ENTRY_sk_type(sk))) +#define sk_X509_NAME_ENTRY_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_copyfunc_type(copyfunc), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc))) +#define sk_X509_NAME_ENTRY_set_cmp_func(sk, cmp) ((sk_X509_NAME_ENTRY_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) + + +# define X509_EX_V_NETSCAPE_HACK 0x8000 +# define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st X509_EXTENSION; +SKM_DEFINE_STACK_OF_INTERNAL(X509_EXTENSION, X509_EXTENSION, X509_EXTENSION) +#define sk_X509_EXTENSION_num(sk) OPENSSL_sk_num(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_value(sk, idx) ((X509_EXTENSION *)OPENSSL_sk_value(ossl_check_const_X509_EXTENSION_sk_type(sk), (idx))) +#define sk_X509_EXTENSION_new(cmp) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new(ossl_check_X509_EXTENSION_compfunc_type(cmp))) +#define sk_X509_EXTENSION_new_null() ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_null()) +#define sk_X509_EXTENSION_new_reserve(cmp, n) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_reserve(ossl_check_X509_EXTENSION_compfunc_type(cmp), (n))) +#define sk_X509_EXTENSION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_EXTENSION_sk_type(sk), (n)) +#define sk_X509_EXTENSION_free(sk) OPENSSL_sk_free(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_zero(sk) OPENSSL_sk_zero(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_delete(sk, i) ((X509_EXTENSION *)OPENSSL_sk_delete(ossl_check_X509_EXTENSION_sk_type(sk), (i))) +#define sk_X509_EXTENSION_delete_ptr(sk, ptr) ((X509_EXTENSION *)OPENSSL_sk_delete_ptr(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_pop(sk) ((X509_EXTENSION *)OPENSSL_sk_pop(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_shift(sk) ((X509_EXTENSION *)OPENSSL_sk_shift(ossl_check_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_EXTENSION_sk_type(sk),ossl_check_X509_EXTENSION_freefunc_type(freefunc)) +#define sk_X509_EXTENSION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), (idx)) +#define sk_X509_EXTENSION_set(sk, idx, ptr) ((X509_EXTENSION *)OPENSSL_sk_set(ossl_check_X509_EXTENSION_sk_type(sk), (idx), ossl_check_X509_EXTENSION_type(ptr))) +#define sk_X509_EXTENSION_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) +#define sk_X509_EXTENSION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), pnum) +#define sk_X509_EXTENSION_sort(sk) OPENSSL_sk_sort(ossl_check_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_EXTENSION_sk_type(sk)) +#define sk_X509_EXTENSION_dup(sk) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_dup(ossl_check_const_X509_EXTENSION_sk_type(sk))) +#define sk_X509_EXTENSION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_copyfunc_type(copyfunc), ossl_check_X509_EXTENSION_freefunc_type(freefunc))) +#define sk_X509_EXTENSION_set_cmp_func(sk, cmp) ((sk_X509_EXTENSION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_compfunc_type(cmp))) + +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; +typedef struct x509_attributes_st X509_ATTRIBUTE; +SKM_DEFINE_STACK_OF_INTERNAL(X509_ATTRIBUTE, X509_ATTRIBUTE, X509_ATTRIBUTE) +#define sk_X509_ATTRIBUTE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_value(sk, idx) ((X509_ATTRIBUTE *)OPENSSL_sk_value(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), (idx))) +#define sk_X509_ATTRIBUTE_new(cmp) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) +#define sk_X509_ATTRIBUTE_new_null() ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_null()) +#define sk_X509_ATTRIBUTE_new_reserve(cmp, n) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_reserve(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp), (n))) +#define sk_X509_ATTRIBUTE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ATTRIBUTE_sk_type(sk), (n)) +#define sk_X509_ATTRIBUTE_free(sk) OPENSSL_sk_free(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_delete(sk, i) ((X509_ATTRIBUTE *)OPENSSL_sk_delete(ossl_check_X509_ATTRIBUTE_sk_type(sk), (i))) +#define sk_X509_ATTRIBUTE_delete_ptr(sk, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_delete_ptr(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_pop(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_pop(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_shift(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_shift(ossl_check_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ATTRIBUTE_sk_type(sk),ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc)) +#define sk_X509_ATTRIBUTE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), (idx)) +#define sk_X509_ATTRIBUTE_set(sk, idx, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_set(ossl_check_X509_ATTRIBUTE_sk_type(sk), (idx), ossl_check_X509_ATTRIBUTE_type(ptr))) +#define sk_X509_ATTRIBUTE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) +#define sk_X509_ATTRIBUTE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), pnum) +#define sk_X509_ATTRIBUTE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) +#define sk_X509_ATTRIBUTE_dup(sk) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_dup(ossl_check_const_X509_ATTRIBUTE_sk_type(sk))) +#define sk_X509_ATTRIBUTE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_copyfunc_type(copyfunc), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc))) +#define sk_X509_ATTRIBUTE_set_cmp_func(sk, cmp) ((sk_X509_ATTRIBUTE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) + +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; + +/* 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) +# define X509_FLAG_EXTENSIONS_ONLY_KID (1L << 13) + +/* 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) + +typedef struct X509_crl_info_st X509_CRL_INFO; + +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; +SKM_DEFINE_STACK_OF_INTERNAL(X509_INFO, X509_INFO, X509_INFO) +#define sk_X509_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_value(sk, idx) ((X509_INFO *)OPENSSL_sk_value(ossl_check_const_X509_INFO_sk_type(sk), (idx))) +#define sk_X509_INFO_new(cmp) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new(ossl_check_X509_INFO_compfunc_type(cmp))) +#define sk_X509_INFO_new_null() ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_null()) +#define sk_X509_INFO_new_reserve(cmp, n) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_reserve(ossl_check_X509_INFO_compfunc_type(cmp), (n))) +#define sk_X509_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_INFO_sk_type(sk), (n)) +#define sk_X509_INFO_free(sk) OPENSSL_sk_free(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_delete(sk, i) ((X509_INFO *)OPENSSL_sk_delete(ossl_check_X509_INFO_sk_type(sk), (i))) +#define sk_X509_INFO_delete_ptr(sk, ptr) ((X509_INFO *)OPENSSL_sk_delete_ptr(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_pop(sk) ((X509_INFO *)OPENSSL_sk_pop(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_shift(sk) ((X509_INFO *)OPENSSL_sk_shift(ossl_check_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_INFO_sk_type(sk),ossl_check_X509_INFO_freefunc_type(freefunc)) +#define sk_X509_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), (idx)) +#define sk_X509_INFO_set(sk, idx, ptr) ((X509_INFO *)OPENSSL_sk_set(ossl_check_X509_INFO_sk_type(sk), (idx), ossl_check_X509_INFO_type(ptr))) +#define sk_X509_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) +#define sk_X509_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), pnum) +#define sk_X509_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_INFO_sk_type(sk)) +#define sk_X509_INFO_dup(sk) ((STACK_OF(X509_INFO) *)OPENSSL_sk_dup(ossl_check_const_X509_INFO_sk_type(sk))) +#define sk_X509_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_INFO_sk_type(sk), ossl_check_X509_INFO_copyfunc_type(copyfunc), ossl_check_X509_INFO_freefunc_type(freefunc))) +#define sk_X509_INFO_set_cmp_func(sk, cmp) ((sk_X509_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_compfunc_type(cmp))) + + +/* + * The next 2 structures and their 8 routines are used to manipulate Netscape's + * spki structures - useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { +/* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +#ifndef OPENSSL_NO_SCRYPT +typedef struct SCRYPT_PARAMS_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *costParameter; + ASN1_INTEGER *blockSize; + ASN1_INTEGER *parallelizationParameter; + ASN1_INTEGER *keyLength; +} SCRYPT_PARAMS; +#endif + +#ifdef __cplusplus +} +#endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define X509_EXT_PACK_UNKNOWN 1 +# define X509_EXT_PACK_STRING 2 + +# define X509_extract_key(x) X509_get_pubkey(x)/*****/ +# define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +# define X509_name_cmp(a,b) X509_NAME_cmp((a),(b)) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl), + int (*crl_free) (X509_CRL *crl), + int (*crl_lookup) (X509_CRL *crl, + X509_REVOKED **ret, + const + ASN1_INTEGER *serial, + const + 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_self_signed(X509 *cert, int verify_signature); + +int X509_REQ_verify_ex(X509_REQ *a, EVP_PKEY *r, OSSL_LIB_CTX *libctx, + const char *propq); +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); +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); +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); +ASN1_OCTET_STRING *X509_digest_sig(const X509 *cert, + EVP_MD **md_used, int *md_is_fallback); +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); + +X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# include /* OSSL_HTTP_REQ_CTX_nbio_d2i */ +# define X509_http_nbio(rctx, pcert) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcert, ASN1_ITEM_rptr(X509)) +# define X509_CRL_http_nbio(rctx, pcrl) \ + OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcrl, ASN1_ITEM_rptr(X509_CRL)) +# endif + +# ifndef OPENSSL_NO_STDIO +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, const X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa); +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_fp(FILE *fp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_fp(FILE *fp, const DSA *dsa); +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_fp(FILE *fp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_fp(FILE *fp, const EC_KEY *eckey); +# endif /* OPENSSL_NO_EC */ +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_fp(FILE *fp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_fp(FILE *fp, const X509_PUBKEY *xpk); +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, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, const EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, const 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, const X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa); +OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa); +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_DSA +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_bio(BIO *bp, const DSA *dsa); +OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_bio(BIO *bp, const DSA *dsa); +# endif +# endif + +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_EC +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_bio(BIO *bp, const EC_KEY *eckey); +OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_bio(BIO *bp, const EC_KEY *eckey); +# endif /* OPENSSL_NO_EC */ +# endif /* OPENSSL_NO_DEPRECATED_3_0 */ + +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, const X509_SIG *p8); +X509_PUBKEY *d2i_X509_PUBKEY_bio(BIO *bp, X509_PUBKEY **xpk); +int i2d_X509_PUBKEY_bio(BIO *bp, const X509_PUBKEY *xpk); +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, const PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, const EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); + +DECLARE_ASN1_DUP_FUNCTION(X509) +DECLARE_ASN1_DUP_FUNCTION(X509_ALGOR) +DECLARE_ASN1_DUP_FUNCTION(X509_ATTRIBUTE) +DECLARE_ASN1_DUP_FUNCTION(X509_CRL) +DECLARE_ASN1_DUP_FUNCTION(X509_EXTENSION) +DECLARE_ASN1_DUP_FUNCTION(X509_PUBKEY) +DECLARE_ASN1_DUP_FUNCTION(X509_REQ) +DECLARE_ASN1_DUP_FUNCTION(X509_REVOKED) +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, + const void **ppval, const X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); +int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src); + +DECLARE_ASN1_DUP_FUNCTION(X509_NAME) +DECLARE_ASN1_DUP_FUNCTION(X509_NAME_ENTRY) + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +int X509_cmp_timeframe(const X509_VERIFY_PARAM *vpm, + const ASN1_TIME *start, const ASN1_TIME *end); +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) + +X509_PUBKEY *X509_PUBKEY_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get0(const X509_PUBKEY *key); +EVP_PKEY *X509_PUBKEY_get(const X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +long X509_get_pathlen(X509 *x); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(EVP_PKEY, PUBKEY) +EVP_PKEY *d2i_PUBKEY_ex(EVP_PKEY **a, const unsigned char **pp, long length, + OSSL_LIB_CTX *libctx, const char *propq); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,RSA, RSA_PUBKEY) +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_DSA +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,DSA, DSA_PUBKEY) +# endif +# endif +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_EC +DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, EC_KEY, EC_PUBKEY) +# endif +# 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) +X509_REQ *X509_REQ_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +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, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) +DECLARE_ASN1_FUNCTIONS(X509) +X509 *X509_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +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(const X509 *r, int idx); +DECLARE_ASN1_ENCODE_FUNCTIONS_only(X509,X509_AUX) + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid, + int *secbits, uint32_t *flags); +void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid, + int secbits, uint32_t flags); + +int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, + uint32_t *flags); + +void X509_get0_signature(const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg, const X509 *x); +int X509_get_signature_nid(const X509 *x); + +void X509_set0_distinguishing_id(X509 *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_get0_distinguishing_id(X509 *x); +void X509_REQ_set0_distinguishing_id(X509_REQ *x, ASN1_OCTET_STRING *d_id); +ASN1_OCTET_STRING *X509_REQ_get0_distinguishing_id(X509_REQ *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); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) +X509_CRL *X509_CRL_new_ex(OSSL_LIB_CTX *libctx, const char *propq); + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, const 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); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 +OSSL_DEPRECATEDIN_3_0 +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); +OSSL_DEPRECATEDIN_3_0 +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); +OSSL_DEPRECATEDIN_3_0 +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); +#endif +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, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey); +int ASN1_item_verify_ctx(const ASN1_ITEM *it, const X509_ALGOR *alg, + const ASN1_BIT_STRING *signature, const void *data, + EVP_MD_CTX *ctx); +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, + ASN1_BIT_STRING *signature, const void *data, + EVP_PKEY *pkey, const EVP_MD *md); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + const void *data, EVP_MD_CTX *ctx); + +#define X509_VERSION_1 0 +#define X509_VERSION_2 1 +#define X509_VERSION_3 2 + +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, const X509_NAME *name); +X509_NAME *X509_get_issuer_name(const X509 *a); +int X509_set_subject_name(X509 *x, const 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); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define X509_get_notBefore X509_getm_notBefore +# define X509_get_notAfter X509_getm_notAfter +# define X509_set_notBefore X509_set1_notBefore +# define X509_set_notAfter X509_set1_notAfter +#endif + + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &buf) + */ +X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x); +const STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x); +void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid, + const ASN1_BIT_STRING **psuid); +const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x); + +EVP_PKEY *X509_get0_pubkey(const X509 *x); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); + +#define X509_REQ_VERSION_1 0 + +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, const X509_NAME *name); +void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig); +int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg); +int X509_REQ_get_signature_nid(const X509_REQ *req); +int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, + const STACK_OF(X509_EXTENSION) *exts, int nid); +int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); +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); + +#define X509_CRL_VERSION_1 0 +#define X509_CRL_VERSION_2 1 + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, const 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); + +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# 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); +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl); +OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl); +#endif +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 + +# define X509_ADD_FLAG_DEFAULT 0 +# define X509_ADD_FLAG_UP_REF 0x1 +# define X509_ADD_FLAG_PREPEND 0x2 +# define X509_ADD_FLAG_NO_DUP 0x4 +# define X509_ADD_FLAG_NO_SS 0x8 +int X509_add_cert(STACK_OF(X509) *sk, X509 *cert, int flags); +int X509_add_certs(STACK_OF(X509) *sk, STACK_OF(X509) *certs, int flags); + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +#ifndef OPENSSL_NO_DEPRECATED_3_0 +# define X509_NAME_hash(x) X509_NAME_hash_ex(x, NULL, NULL, NULL) +OSSL_DEPRECATEDIN_3_0 int X509_certificate_type(const X509 *x, + const EVP_PKEY *pubkey); +#endif +unsigned long X509_NAME_hash_ex(const X509_NAME *x, OSSL_LIB_CTX *libctx, + const char *propq, int *ok); +unsigned long X509_NAME_hash_old(const X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +int X509_aux_print(BIO *out, X509 *x, int indent); +# ifndef OPENSSL_NO_STDIO +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent, + unsigned long flags); +# endif + +int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); + +int X509_NAME_entry_count(const X509_NAME *name); +int X509_NAME_get_text_by_NID(const X509_NAME *name, int nid, + char *buf, int len); +int X509_NAME_get_text_by_OBJ(const 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(const X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(const 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(const X509_NAME *nm, const unsigned char **pder, + size_t *pderlen); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + const ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); + +int X509_get_ext_count(const X509 *x); +int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(const X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(const X509_CRL *x); +int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(const X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit, + int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *x, int nid, int *crit, + int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + const ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(const X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *x, + const ASN1_OBJECT *obj, int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, const X509_NAME *name, + const ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, const X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) +#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) +#endif + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); +int PKCS5_pbe_set0_algor_ex(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe_set_ex(int alg, int iter, + const unsigned char *salt, int saltlen, + OSSL_LIB_CTX *libctx); + +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); +X509_ALGOR *PKCS5_pbe2_set_iv_ex(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid, + OSSL_LIB_CTX *libctx); + +#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); +X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen, + OSSL_LIB_CTX *libctx); + +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); +EVP_PKEY *EVP_PKCS82PKEY_ex(const PKCS8_PRIV_KEY_INFO *p8, OSSL_LIB_CTX *libctx, + const char *propq); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const 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(PKCS8_PRIV_KEY_INFO *p8, X509_ATTRIBUTE *attr); +int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, + const unsigned char *bytes, int len); +int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, + 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, const X509_PUBKEY *pub); +int X509_PUBKEY_eq(const X509_PUBKEY *a, const X509_PUBKEY *b); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/x509_vfy.h b/include/openssl/x509_vfy.h new file mode 100644 index 0000000..da956ec --- /dev/null +++ b/include/openssl/x509_vfy.h @@ -0,0 +1,894 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/x509_vfy.h.in + * + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509_VFY_H +# define OPENSSL_X509_VFY_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_X509_VFY_H +# endif + +/* + * Protect against recursion, x509.h and x509_vfy.h each include the other. + */ +# ifndef OPENSSL_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; + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +#define X509_LU_RETRY -1 +#define X509_LU_FAIL 0 +#endif + +SKM_DEFINE_STACK_OF_INTERNAL(X509_LOOKUP, X509_LOOKUP, X509_LOOKUP) +#define sk_X509_LOOKUP_num(sk) OPENSSL_sk_num(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_value(sk, idx) ((X509_LOOKUP *)OPENSSL_sk_value(ossl_check_const_X509_LOOKUP_sk_type(sk), (idx))) +#define sk_X509_LOOKUP_new(cmp) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new(ossl_check_X509_LOOKUP_compfunc_type(cmp))) +#define sk_X509_LOOKUP_new_null() ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_null()) +#define sk_X509_LOOKUP_new_reserve(cmp, n) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_reserve(ossl_check_X509_LOOKUP_compfunc_type(cmp), (n))) +#define sk_X509_LOOKUP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_LOOKUP_sk_type(sk), (n)) +#define sk_X509_LOOKUP_free(sk) OPENSSL_sk_free(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_zero(sk) OPENSSL_sk_zero(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_delete(sk, i) ((X509_LOOKUP *)OPENSSL_sk_delete(ossl_check_X509_LOOKUP_sk_type(sk), (i))) +#define sk_X509_LOOKUP_delete_ptr(sk, ptr) ((X509_LOOKUP *)OPENSSL_sk_delete_ptr(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_pop(sk) ((X509_LOOKUP *)OPENSSL_sk_pop(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_shift(sk) ((X509_LOOKUP *)OPENSSL_sk_shift(ossl_check_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_LOOKUP_sk_type(sk),ossl_check_X509_LOOKUP_freefunc_type(freefunc)) +#define sk_X509_LOOKUP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), (idx)) +#define sk_X509_LOOKUP_set(sk, idx, ptr) ((X509_LOOKUP *)OPENSSL_sk_set(ossl_check_X509_LOOKUP_sk_type(sk), (idx), ossl_check_X509_LOOKUP_type(ptr))) +#define sk_X509_LOOKUP_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) +#define sk_X509_LOOKUP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), pnum) +#define sk_X509_LOOKUP_sort(sk) OPENSSL_sk_sort(ossl_check_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_LOOKUP_sk_type(sk)) +#define sk_X509_LOOKUP_dup(sk) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_dup(ossl_check_const_X509_LOOKUP_sk_type(sk))) +#define sk_X509_LOOKUP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_copyfunc_type(copyfunc), ossl_check_X509_LOOKUP_freefunc_type(freefunc))) +#define sk_X509_LOOKUP_set_cmp_func(sk, cmp) ((sk_X509_LOOKUP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_OBJECT, X509_OBJECT, X509_OBJECT) +#define sk_X509_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_value(sk, idx) ((X509_OBJECT *)OPENSSL_sk_value(ossl_check_const_X509_OBJECT_sk_type(sk), (idx))) +#define sk_X509_OBJECT_new(cmp) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new(ossl_check_X509_OBJECT_compfunc_type(cmp))) +#define sk_X509_OBJECT_new_null() ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_null()) +#define sk_X509_OBJECT_new_reserve(cmp, n) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_X509_OBJECT_compfunc_type(cmp), (n))) +#define sk_X509_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_OBJECT_sk_type(sk), (n)) +#define sk_X509_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_delete(sk, i) ((X509_OBJECT *)OPENSSL_sk_delete(ossl_check_X509_OBJECT_sk_type(sk), (i))) +#define sk_X509_OBJECT_delete_ptr(sk, ptr) ((X509_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_pop(sk) ((X509_OBJECT *)OPENSSL_sk_pop(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_shift(sk) ((X509_OBJECT *)OPENSSL_sk_shift(ossl_check_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_OBJECT_sk_type(sk),ossl_check_X509_OBJECT_freefunc_type(freefunc)) +#define sk_X509_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), (idx)) +#define sk_X509_OBJECT_set(sk, idx, ptr) ((X509_OBJECT *)OPENSSL_sk_set(ossl_check_X509_OBJECT_sk_type(sk), (idx), ossl_check_X509_OBJECT_type(ptr))) +#define sk_X509_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) +#define sk_X509_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), pnum) +#define sk_X509_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_OBJECT_sk_type(sk)) +#define sk_X509_OBJECT_dup(sk) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_X509_OBJECT_sk_type(sk))) +#define sk_X509_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_copyfunc_type(copyfunc), ossl_check_X509_OBJECT_freefunc_type(freefunc))) +#define sk_X509_OBJECT_set_cmp_func(sk, cmp) ((sk_X509_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(X509_VERIFY_PARAM, X509_VERIFY_PARAM, X509_VERIFY_PARAM) +#define sk_X509_VERIFY_PARAM_num(sk) OPENSSL_sk_num(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_value(sk, idx) ((X509_VERIFY_PARAM *)OPENSSL_sk_value(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), (idx))) +#define sk_X509_VERIFY_PARAM_new(cmp) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) +#define sk_X509_VERIFY_PARAM_new_null() ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_null()) +#define sk_X509_VERIFY_PARAM_new_reserve(cmp, n) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_reserve(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp), (n))) +#define sk_X509_VERIFY_PARAM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (n)) +#define sk_X509_VERIFY_PARAM_free(sk) OPENSSL_sk_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_zero(sk) OPENSSL_sk_zero(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_delete(sk, i) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (i))) +#define sk_X509_VERIFY_PARAM_delete_ptr(sk, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete_ptr(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_pop(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_pop(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_shift(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_shift(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk),ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc)) +#define sk_X509_VERIFY_PARAM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), (idx)) +#define sk_X509_VERIFY_PARAM_set(sk, idx, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_set(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (idx), ossl_check_X509_VERIFY_PARAM_type(ptr))) +#define sk_X509_VERIFY_PARAM_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) +#define sk_X509_VERIFY_PARAM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), pnum) +#define sk_X509_VERIFY_PARAM_sort(sk) OPENSSL_sk_sort(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) +#define sk_X509_VERIFY_PARAM_dup(sk) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_dup(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk))) +#define sk_X509_VERIFY_PARAM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_copyfunc_type(copyfunc), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc))) +#define sk_X509_VERIFY_PARAM_set_cmp_func(sk, cmp) ((sk_X509_VERIFY_PARAM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) + + +/* 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; +SKM_DEFINE_STACK_OF_INTERNAL(X509_TRUST, X509_TRUST, X509_TRUST) +#define sk_X509_TRUST_num(sk) OPENSSL_sk_num(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_value(sk, idx) ((X509_TRUST *)OPENSSL_sk_value(ossl_check_const_X509_TRUST_sk_type(sk), (idx))) +#define sk_X509_TRUST_new(cmp) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new(ossl_check_X509_TRUST_compfunc_type(cmp))) +#define sk_X509_TRUST_new_null() ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_null()) +#define sk_X509_TRUST_new_reserve(cmp, n) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_reserve(ossl_check_X509_TRUST_compfunc_type(cmp), (n))) +#define sk_X509_TRUST_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_TRUST_sk_type(sk), (n)) +#define sk_X509_TRUST_free(sk) OPENSSL_sk_free(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_zero(sk) OPENSSL_sk_zero(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_delete(sk, i) ((X509_TRUST *)OPENSSL_sk_delete(ossl_check_X509_TRUST_sk_type(sk), (i))) +#define sk_X509_TRUST_delete_ptr(sk, ptr) ((X509_TRUST *)OPENSSL_sk_delete_ptr(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_pop(sk) ((X509_TRUST *)OPENSSL_sk_pop(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_shift(sk) ((X509_TRUST *)OPENSSL_sk_shift(ossl_check_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_TRUST_sk_type(sk),ossl_check_X509_TRUST_freefunc_type(freefunc)) +#define sk_X509_TRUST_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), (idx)) +#define sk_X509_TRUST_set(sk, idx, ptr) ((X509_TRUST *)OPENSSL_sk_set(ossl_check_X509_TRUST_sk_type(sk), (idx), ossl_check_X509_TRUST_type(ptr))) +#define sk_X509_TRUST_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) +#define sk_X509_TRUST_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), pnum) +#define sk_X509_TRUST_sort(sk) OPENSSL_sk_sort(ossl_check_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_TRUST_sk_type(sk)) +#define sk_X509_TRUST_dup(sk) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_dup(ossl_check_const_X509_TRUST_sk_type(sk))) +#define sk_X509_TRUST_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_copyfunc_type(copyfunc), ossl_check_X509_TRUST_freefunc_type(freefunc))) +#define sk_X509_TRUST_set_cmp_func(sk, cmp) ((sk_X509_TRUST_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_compfunc_type(cmp))) + + +/* 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 rejection OID and 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 + +int X509_TRUST_set(int *t, int trust); +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); + +int X509_trusted(const X509 *x); +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); + +int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, + int); +int X509_check_trust(X509 *x, int id, int flags); + +int X509_verify_cert(X509_STORE_CTX *ctx); +int X509_STORE_CTX_verify(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_build_chain(X509 *target, STACK_OF(X509) *certs, + X509_STORE *store, int with_self_signed, + OSSL_LIB_CTX *libctx, const char *propq); + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); +int X509_STORE_CTX_print_verify_cb(int ok, X509_STORE_CTX *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, + const X509_NAME *nm); +typedef STACK_OF(X509_CRL) + *(*X509_STORE_CTX_lookup_crls_fn)(const X509_STORE_CTX *ctx, + const 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_L_ADD_STORE 3 +# define X509_L_LOAD_STORE 4 + +# 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_LOOKUP_add_store(x,name) \ + X509_LOOKUP_ctrl((x),X509_L_ADD_STORE,(name),0,NULL) + +# define X509_LOOKUP_load_store(x,name) \ + X509_LOOKUP_ctrl((x),X509_L_LOAD_STORE,(name),0,NULL) + +# define X509_LOOKUP_load_file_ex(x, name, type, libctx, propq) \ +X509_LOOKUP_ctrl_ex((x), X509_L_FILE_LOAD, (name), (long)(type), NULL,\ + (libctx), (propq)) + +# define X509_LOOKUP_load_store_ex(x, name, libctx, propq) \ +X509_LOOKUP_ctrl_ex((x), X509_L_LOAD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +# define X509_LOOKUP_add_store_ex(x, name, libctx, propq) \ +X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ + (libctx), (propq)) + +# 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_NO_ISSUER_PUBLIC_KEY 24 +# define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +# define X509_V_ERR_INVALID_PURPOSE 26 +# define X509_V_ERR_CERT_UNTRUSTED 27 +# define X509_V_ERR_CERT_REJECTED 28 + +/* These are 'informational' when looking for issuer cert */ +# define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +# define X509_V_ERR_AKID_SKID_MISMATCH 30 +# define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +# define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 +# define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +# define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +# define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +# define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +# define X509_V_ERR_INVALID_NON_CA 37 +# define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +# define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +# define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 +# define X509_V_ERR_INVALID_EXTENSION 41 +# define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +# define X509_V_ERR_NO_EXPLICIT_POLICY 43 +# define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +# define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 +# define X509_V_ERR_UNNESTED_RESOURCE 46 +# define X509_V_ERR_PERMITTED_VIOLATION 47 +# define X509_V_ERR_EXCLUDED_VIOLATION 48 +# define X509_V_ERR_SUBTREE_MINMAX 49 +/* The application is not happy */ +# define X509_V_ERR_APPLICATION_VERIFICATION 50 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +# define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +# define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 +/* Another issuer check debug option */ +# define X509_V_ERR_PATH_LOOP 55 +/* Suite B mode algorithm violation */ +# define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +# define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +# define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +# define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +# define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +# define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 +/* Host, email and IP check errors */ +# define X509_V_ERR_HOSTNAME_MISMATCH 62 +# define X509_V_ERR_EMAIL_MISMATCH 63 +# define X509_V_ERR_IP_ADDRESS_MISMATCH 64 +/* DANE TLSA errors */ +# define X509_V_ERR_DANE_NO_MATCH 65 +/* security level errors */ +# define X509_V_ERR_EE_KEY_TOO_SMALL 66 +# define X509_V_ERR_CA_KEY_TOO_SMALL 67 +# define X509_V_ERR_CA_MD_TOO_WEAK 68 +/* Caller error */ +# define X509_V_ERR_INVALID_CALL 69 +/* Issuer lookup error */ +# define X509_V_ERR_STORE_LOOKUP 70 +/* Certificate transparency */ +# define X509_V_ERR_NO_VALID_SCTS 71 + +# define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72 +/* OCSP status errors */ +# define X509_V_ERR_OCSP_VERIFY_NEEDED 73 /* Need OCSP verification */ +# define X509_V_ERR_OCSP_VERIFY_FAILED 74 /* Couldn't verify cert through OCSP */ +# define X509_V_ERR_OCSP_CERT_UNKNOWN 75 /* Certificate wasn't recognized by the OCSP responder */ + +# define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 76 +# define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 77 + +/* Errors in case a check in X509_V_FLAG_X509_STRICT mode fails */ +# define X509_V_ERR_SIGNATURE_ALGORITHM_INCONSISTENCY 78 +# define X509_V_ERR_INVALID_CA 79 +# define X509_V_ERR_PATHLEN_INVALID_FOR_NON_CA 80 +# define X509_V_ERR_PATHLEN_WITHOUT_KU_KEY_CERT_SIGN 81 +# define X509_V_ERR_KU_KEY_CERT_SIGN_INVALID_FOR_NON_CA 82 +# define X509_V_ERR_ISSUER_NAME_EMPTY 83 +# define X509_V_ERR_SUBJECT_NAME_EMPTY 84 +# define X509_V_ERR_MISSING_AUTHORITY_KEY_IDENTIFIER 85 +# define X509_V_ERR_MISSING_SUBJECT_KEY_IDENTIFIER 86 +# define X509_V_ERR_EMPTY_SUBJECT_ALT_NAME 87 +# define X509_V_ERR_EMPTY_SUBJECT_SAN_NOT_CRITICAL 88 +# define X509_V_ERR_CA_BCONS_NOT_CRITICAL 89 +# define X509_V_ERR_AUTHORITY_KEY_IDENTIFIER_CRITICAL 90 +# define X509_V_ERR_SUBJECT_KEY_IDENTIFIER_CRITICAL 91 +# define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 +# define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 +# define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 + +/* Certificate verify flags */ +# ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# 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, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + X509_LOOKUP_TYPE type, + const X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +int X509_OBJECT_up_ref_count(X509_OBJECT *a); +X509_OBJECT *X509_OBJECT_new(void); +void X509_OBJECT_free(X509_OBJECT *a); +X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a); +X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a); +int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); +X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); +int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *v); +int X509_STORE_lock(X509_STORE *ctx); +int X509_STORE_unlock(X509_STORE *ctx); +int X509_STORE_up_ref(X509_STORE *v); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, + const X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, + const 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, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const X509_STORE *ctx, int idx); + +X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); +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 *trust_store, + X509 *target, STACK_OF(X509) *untrusted); +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(const X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const 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(const X509_STORE_CTX *ctx); +X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); +X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(const X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(const X509_STORE_CTX *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +# define X509_STORE_CTX_get_chain X509_STORE_CTX_get0_chain +# define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted +# define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack +# define X509_STORE_get_by_subject X509_STORE_CTX_get_by_subject +# define X509_STORE_get1_certs X509_STORE_CTX_get1_certs +# define X509_STORE_get1_crls X509_STORE_CTX_get1_crls +/* the following macro is misspelled; use X509_STORE_get1_certs instead */ +# define X509_STORE_get1_cert X509_STORE_CTX_get1_certs +/* the following macro is misspelled; use X509_STORE_get1_crls instead */ +# define X509_STORE_get1_crl X509_STORE_CTX_get1_crls +#endif + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); +X509_LOOKUP_METHOD *X509_LOOKUP_store(void); + +typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +typedef int (*X509_LOOKUP_ctrl_ex_fn)( + X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret, + OSSL_LIB_CTX *libctx, const char *propq); + +typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_subject_ex_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, + const char *propq); +typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const unsigned char* bytes, + int len, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const char *str, + int len, + X509_OBJECT *ret); + +X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); +void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method, + int (*new_item) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method, + void (*free_fn) (X509_LOOKUP *ctx)); +void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method, + int (*init) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method, + int (*shutdown) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method, + X509_LOOKUP_ctrl_fn ctrl_fn); +X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_subject_fn fn); +X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_issuer_serial_fn fn); +X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_fingerprint_fn fn); +X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_alias_fn fn); +X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( + const X509_LOOKUP_METHOD *method); + + +int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); +int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); + +int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret); +X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + const X509_NAME *name); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +int X509_LOOKUP_ctrl_ex(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, + char **ret, OSSL_LIB_CTX *libctx, const char *propq); + +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); +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); +int X509_load_cert_crl_file_ex(X509_LOOKUP *ctx, const char *file, int type, + OSSL_LIB_CTX *libctx, const char *propq); + +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, + const X509_NAME *name, X509_OBJECT *ret); +int X509_LOOKUP_by_subject_ex(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, X509_OBJECT *ret, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const X509_NAME *name, + const ASN1_INTEGER *serial, + X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const char *str, int len, X509_OBJECT *ret); +int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); +void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); +X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +int X509_STORE_load_file(X509_STORE *ctx, const char *file); +int X509_STORE_load_path(X509_STORE *ctx, const char *path); +int X509_STORE_load_store(X509_STORE *ctx, const char *store); +int X509_STORE_load_locations(X509_STORE *ctx, + const char *file, + const char *dir); +int X509_STORE_set_default_paths(X509_STORE *ctx); + +int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, + const char *dir, OSSL_LIB_CTX *libctx, + const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, + const char *propq); + +#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(const X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); +X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); +X509 *X509_STORE_CTX_get0_current_issuer(const X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(const X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, 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(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_num_untrusted(const X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(const 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(const 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); + +char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int idx); +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param); +char *X509_VERIFY_PARAM_get0_peername(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); +char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param); +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(const 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/include/openssl/x509err.h b/include/openssl/x509err.h new file mode 100644 index 0000000..a56facd --- /dev/null +++ b/include/openssl/x509err.h @@ -0,0 +1,68 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_X509ERR_H +# define OPENSSL_X509ERR_H +# pragma once + +# include +# include +# include + + + +/* + * X509 reason codes. + */ +# define X509_R_AKID_MISMATCH 110 +# define X509_R_BAD_SELECTOR 133 +# define X509_R_BAD_X509_FILETYPE 100 +# define X509_R_BASE64_DECODE_ERROR 118 +# define X509_R_CANT_CHECK_DH_KEY 114 +# define X509_R_CERTIFICATE_VERIFICATION_FAILED 139 +# 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_ERROR_GETTING_MD_BY_NID 141 +# define X509_R_ERROR_USING_SIGINF_SET 142 +# define X509_R_IDP_MISMATCH 128 +# define X509_R_INVALID_ATTRIBUTES 138 +# define X509_R_INVALID_DIRECTORY 113 +# define X509_R_INVALID_DISTPOINT 143 +# define X509_R_INVALID_FIELD_NAME 119 +# define X509_R_INVALID_TRUST 123 +# define X509_R_ISSUER_MISMATCH 129 +# define X509_R_KEY_TYPE_MISMATCH 115 +# define X509_R_KEY_VALUES_MISMATCH 116 +# define X509_R_LOADING_CERT_DIR 103 +# define X509_R_LOADING_DEFAULTS 104 +# define X509_R_METHOD_NOT_SUPPORTED 124 +# define X509_R_NAME_TOO_LONG 134 +# define X509_R_NEWER_CRL_NOT_NEWER 132 +# define X509_R_NO_CERTIFICATE_FOUND 135 +# define X509_R_NO_CERTIFICATE_OR_CRL_FOUND 136 +# define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 +# define X509_R_NO_CRL_FOUND 137 +# define X509_R_NO_CRL_NUMBER 130 +# define X509_R_PUBLIC_KEY_DECODE_ERROR 125 +# define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 +# define X509_R_SHOULD_RETRY 106 +# define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 +# define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 +# define X509_R_UNKNOWN_KEY_TYPE 117 +# define X509_R_UNKNOWN_NID 109 +# define X509_R_UNKNOWN_PURPOSE_ID 121 +# define X509_R_UNKNOWN_SIGID_ALGS 144 +# define X509_R_UNKNOWN_TRUST_ID 120 +# define X509_R_UNSUPPORTED_ALGORITHM 111 +# define X509_R_WRONG_LOOKUP_TYPE 112 +# define X509_R_WRONG_TYPE 122 + +#endif diff --git a/include/openssl/x509v3.h b/include/openssl/x509v3.h new file mode 100644 index 0000000..48b8850 --- /dev/null +++ b/include/openssl/x509v3.h @@ -0,0 +1,1453 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from ../openssl-3.1.0/include/openssl/x509v3.h.in + * + * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + + +#ifndef OPENSSL_X509V3_H +# define OPENSSL_X509V3_H +# pragma once + +# include +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define HEADER_X509V3_H +# endif + +# include +# include +# include +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif + +#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) (const 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 for producing X509 v3 extensions*/ +struct v3_ext_ctx { +# define X509V3_CTX_TEST 0x1 +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# define CTX_TEST X509V3_CTX_TEST +# endif +# 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; + EVP_PKEY *issuer_pkey; +/* Maybe more here */ +}; + +typedef struct v3_ext_method X509V3_EXT_METHOD; + +SKM_DEFINE_STACK_OF_INTERNAL(X509V3_EXT_METHOD, X509V3_EXT_METHOD, X509V3_EXT_METHOD) +#define sk_X509V3_EXT_METHOD_num(sk) OPENSSL_sk_num(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_value(sk, idx) ((X509V3_EXT_METHOD *)OPENSSL_sk_value(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), (idx))) +#define sk_X509V3_EXT_METHOD_new(cmp) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) +#define sk_X509V3_EXT_METHOD_new_null() ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_null()) +#define sk_X509V3_EXT_METHOD_new_reserve(cmp, n) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_reserve(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp), (n))) +#define sk_X509V3_EXT_METHOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (n)) +#define sk_X509V3_EXT_METHOD_free(sk) OPENSSL_sk_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_zero(sk) OPENSSL_sk_zero(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_delete(sk, i) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (i))) +#define sk_X509V3_EXT_METHOD_delete_ptr(sk, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete_ptr(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_pop(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_pop(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_shift(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_shift(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk),ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc)) +#define sk_X509V3_EXT_METHOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), (idx)) +#define sk_X509V3_EXT_METHOD_set(sk, idx, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_set(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (idx), ossl_check_X509V3_EXT_METHOD_type(ptr))) +#define sk_X509V3_EXT_METHOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) +#define sk_X509V3_EXT_METHOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), pnum) +#define sk_X509V3_EXT_METHOD_sort(sk) OPENSSL_sk_sort(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) +#define sk_X509V3_EXT_METHOD_dup(sk) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_dup(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk))) +#define sk_X509V3_EXT_METHOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_deep_copy(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_copyfunc_type(copyfunc), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc))) +#define sk_X509V3_EXT_METHOD_set_cmp_func(sk, cmp) ((sk_X509V3_EXT_METHOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) + + +/* 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_STRING *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; + +SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) +#define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) +#define sk_ACCESS_DESCRIPTION_new(cmp) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +#define sk_ACCESS_DESCRIPTION_new_null() ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_null()) +#define sk_ACCESS_DESCRIPTION_new_reserve(cmp, n) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_reserve(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp), (n))) +#define sk_ACCESS_DESCRIPTION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (n)) +#define sk_ACCESS_DESCRIPTION_free(sk) OPENSSL_sk_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_zero(sk) OPENSSL_sk_zero(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_delete(sk, i) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (i))) +#define sk_ACCESS_DESCRIPTION_delete_ptr(sk, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete_ptr(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_push(sk, ptr) OPENSSL_sk_push(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_pop(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_pop(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_shift(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_shift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk),ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc)) +#define sk_ACCESS_DESCRIPTION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), (idx)) +#define sk_ACCESS_DESCRIPTION_set(sk, idx, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_set(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (idx), ossl_check_ACCESS_DESCRIPTION_type(ptr))) +#define sk_ACCESS_DESCRIPTION_find(sk, ptr) OPENSSL_sk_find(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) +#define sk_ACCESS_DESCRIPTION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), pnum) +#define sk_ACCESS_DESCRIPTION_sort(sk) OPENSSL_sk_sort(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) +#define sk_ACCESS_DESCRIPTION_dup(sk) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_dup(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk))) +#define sk_ACCESS_DESCRIPTION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_deep_copy(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_copyfunc_type(copyfunc), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc))) +#define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, cmp) ((sk_ACCESS_DESCRIPTION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAME, GENERAL_NAME, GENERAL_NAME) +#define sk_GENERAL_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_value(sk, idx) ((GENERAL_NAME *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAME_sk_type(sk), (idx))) +#define sk_GENERAL_NAME_new(cmp) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new(ossl_check_GENERAL_NAME_compfunc_type(cmp))) +#define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAME_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAME_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAME_sk_type(sk), (n)) +#define sk_GENERAL_NAME_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_delete(sk, i) ((GENERAL_NAME *)OPENSSL_sk_delete(ossl_check_GENERAL_NAME_sk_type(sk), (i))) +#define sk_GENERAL_NAME_delete_ptr(sk, ptr) ((GENERAL_NAME *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_pop(sk) ((GENERAL_NAME *)OPENSSL_sk_pop(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_shift(sk) ((GENERAL_NAME *)OPENSSL_sk_shift(ossl_check_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAME_sk_type(sk),ossl_check_GENERAL_NAME_freefunc_type(freefunc)) +#define sk_GENERAL_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), (idx)) +#define sk_GENERAL_NAME_set(sk, idx, ptr) ((GENERAL_NAME *)OPENSSL_sk_set(ossl_check_GENERAL_NAME_sk_type(sk), (idx), ossl_check_GENERAL_NAME_type(ptr))) +#define sk_GENERAL_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) +#define sk_GENERAL_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), pnum) +#define sk_GENERAL_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAME_sk_type(sk)) +#define sk_GENERAL_NAME_dup(sk) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAME_sk_type(sk))) +#define sk_GENERAL_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_copyfunc_type(copyfunc), ossl_check_GENERAL_NAME_freefunc_type(freefunc))) +#define sk_GENERAL_NAME_set_cmp_func(sk, cmp) ((sk_GENERAL_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_compfunc_type(cmp))) + + +typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; +typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; +typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; + +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAMES, GENERAL_NAMES, GENERAL_NAMES) +#define sk_GENERAL_NAMES_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_value(sk, idx) ((GENERAL_NAMES *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAMES_sk_type(sk), (idx))) +#define sk_GENERAL_NAMES_new(cmp) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new(ossl_check_GENERAL_NAMES_compfunc_type(cmp))) +#define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_NAMES_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAMES_compfunc_type(cmp), (n))) +#define sk_GENERAL_NAMES_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAMES_sk_type(sk), (n)) +#define sk_GENERAL_NAMES_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_delete(sk, i) ((GENERAL_NAMES *)OPENSSL_sk_delete(ossl_check_GENERAL_NAMES_sk_type(sk), (i))) +#define sk_GENERAL_NAMES_delete_ptr(sk, ptr) ((GENERAL_NAMES *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_pop(sk) ((GENERAL_NAMES *)OPENSSL_sk_pop(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_shift(sk) ((GENERAL_NAMES *)OPENSSL_sk_shift(ossl_check_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAMES_sk_type(sk),ossl_check_GENERAL_NAMES_freefunc_type(freefunc)) +#define sk_GENERAL_NAMES_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), (idx)) +#define sk_GENERAL_NAMES_set(sk, idx, ptr) ((GENERAL_NAMES *)OPENSSL_sk_set(ossl_check_GENERAL_NAMES_sk_type(sk), (idx), ossl_check_GENERAL_NAMES_type(ptr))) +#define sk_GENERAL_NAMES_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) +#define sk_GENERAL_NAMES_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), pnum) +#define sk_GENERAL_NAMES_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAMES_sk_type(sk)) +#define sk_GENERAL_NAMES_dup(sk) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAMES_sk_type(sk))) +#define sk_GENERAL_NAMES_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_copyfunc_type(copyfunc), ossl_check_GENERAL_NAMES_freefunc_type(freefunc))) +#define sk_GENERAL_NAMES_set_cmp_func(sk, cmp) ((sk_GENERAL_NAMES_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_compfunc_type(cmp))) + + +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; +}; + +SKM_DEFINE_STACK_OF_INTERNAL(DIST_POINT, DIST_POINT, DIST_POINT) +#define sk_DIST_POINT_num(sk) OPENSSL_sk_num(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_value(sk, idx) ((DIST_POINT *)OPENSSL_sk_value(ossl_check_const_DIST_POINT_sk_type(sk), (idx))) +#define sk_DIST_POINT_new(cmp) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new(ossl_check_DIST_POINT_compfunc_type(cmp))) +#define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_null()) +#define sk_DIST_POINT_new_reserve(cmp, n) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_reserve(ossl_check_DIST_POINT_compfunc_type(cmp), (n))) +#define sk_DIST_POINT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_DIST_POINT_sk_type(sk), (n)) +#define sk_DIST_POINT_free(sk) OPENSSL_sk_free(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_zero(sk) OPENSSL_sk_zero(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_delete(sk, i) ((DIST_POINT *)OPENSSL_sk_delete(ossl_check_DIST_POINT_sk_type(sk), (i))) +#define sk_DIST_POINT_delete_ptr(sk, ptr) ((DIST_POINT *)OPENSSL_sk_delete_ptr(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_push(sk, ptr) OPENSSL_sk_push(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_pop(sk) ((DIST_POINT *)OPENSSL_sk_pop(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_shift(sk) ((DIST_POINT *)OPENSSL_sk_shift(ossl_check_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_DIST_POINT_sk_type(sk),ossl_check_DIST_POINT_freefunc_type(freefunc)) +#define sk_DIST_POINT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), (idx)) +#define sk_DIST_POINT_set(sk, idx, ptr) ((DIST_POINT *)OPENSSL_sk_set(ossl_check_DIST_POINT_sk_type(sk), (idx), ossl_check_DIST_POINT_type(ptr))) +#define sk_DIST_POINT_find(sk, ptr) OPENSSL_sk_find(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) +#define sk_DIST_POINT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), pnum) +#define sk_DIST_POINT_sort(sk) OPENSSL_sk_sort(ossl_check_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_DIST_POINT_sk_type(sk)) +#define sk_DIST_POINT_dup(sk) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_dup(ossl_check_const_DIST_POINT_sk_type(sk))) +#define sk_DIST_POINT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_deep_copy(ossl_check_const_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_copyfunc_type(copyfunc), ossl_check_DIST_POINT_freefunc_type(freefunc))) +#define sk_DIST_POINT_set_cmp_func(sk, cmp) ((sk_DIST_POINT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_compfunc_type(cmp))) + + +typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; + +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; + +SKM_DEFINE_STACK_OF_INTERNAL(SXNETID, SXNETID, SXNETID) +#define sk_SXNETID_num(sk) OPENSSL_sk_num(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_value(sk, idx) ((SXNETID *)OPENSSL_sk_value(ossl_check_const_SXNETID_sk_type(sk), (idx))) +#define sk_SXNETID_new(cmp) ((STACK_OF(SXNETID) *)OPENSSL_sk_new(ossl_check_SXNETID_compfunc_type(cmp))) +#define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)OPENSSL_sk_new_null()) +#define sk_SXNETID_new_reserve(cmp, n) ((STACK_OF(SXNETID) *)OPENSSL_sk_new_reserve(ossl_check_SXNETID_compfunc_type(cmp), (n))) +#define sk_SXNETID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SXNETID_sk_type(sk), (n)) +#define sk_SXNETID_free(sk) OPENSSL_sk_free(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_zero(sk) OPENSSL_sk_zero(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_delete(sk, i) ((SXNETID *)OPENSSL_sk_delete(ossl_check_SXNETID_sk_type(sk), (i))) +#define sk_SXNETID_delete_ptr(sk, ptr) ((SXNETID *)OPENSSL_sk_delete_ptr(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_push(sk, ptr) OPENSSL_sk_push(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_pop(sk) ((SXNETID *)OPENSSL_sk_pop(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_shift(sk) ((SXNETID *)OPENSSL_sk_shift(ossl_check_SXNETID_sk_type(sk))) +#define sk_SXNETID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SXNETID_sk_type(sk),ossl_check_SXNETID_freefunc_type(freefunc)) +#define sk_SXNETID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), (idx)) +#define sk_SXNETID_set(sk, idx, ptr) ((SXNETID *)OPENSSL_sk_set(ossl_check_SXNETID_sk_type(sk), (idx), ossl_check_SXNETID_type(ptr))) +#define sk_SXNETID_find(sk, ptr) OPENSSL_sk_find(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) +#define sk_SXNETID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), pnum) +#define sk_SXNETID_sort(sk) OPENSSL_sk_sort(ossl_check_SXNETID_sk_type(sk)) +#define sk_SXNETID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SXNETID_sk_type(sk)) +#define sk_SXNETID_dup(sk) ((STACK_OF(SXNETID) *)OPENSSL_sk_dup(ossl_check_const_SXNETID_sk_type(sk))) +#define sk_SXNETID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SXNETID) *)OPENSSL_sk_deep_copy(ossl_check_const_SXNETID_sk_type(sk), ossl_check_SXNETID_copyfunc_type(copyfunc), ossl_check_SXNETID_freefunc_type(freefunc))) +#define sk_SXNETID_set_cmp_func(sk, cmp) ((sk_SXNETID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_compfunc_type(cmp))) + + + +typedef struct SXNET_st { + ASN1_INTEGER *version; + STACK_OF(SXNETID) *ids; +} SXNET; + +typedef struct ISSUER_SIGN_TOOL_st { + ASN1_UTF8STRING *signTool; + ASN1_UTF8STRING *cATool; + ASN1_UTF8STRING *signToolCert; + ASN1_UTF8STRING *cAToolCert; +} ISSUER_SIGN_TOOL; + +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; + +SKM_DEFINE_STACK_OF_INTERNAL(POLICYQUALINFO, POLICYQUALINFO, POLICYQUALINFO) +#define sk_POLICYQUALINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_value(sk, idx) ((POLICYQUALINFO *)OPENSSL_sk_value(ossl_check_const_POLICYQUALINFO_sk_type(sk), (idx))) +#define sk_POLICYQUALINFO_new(cmp) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new(ossl_check_POLICYQUALINFO_compfunc_type(cmp))) +#define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYQUALINFO_new_reserve(cmp, n) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYQUALINFO_compfunc_type(cmp), (n))) +#define sk_POLICYQUALINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYQUALINFO_sk_type(sk), (n)) +#define sk_POLICYQUALINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_delete(sk, i) ((POLICYQUALINFO *)OPENSSL_sk_delete(ossl_check_POLICYQUALINFO_sk_type(sk), (i))) +#define sk_POLICYQUALINFO_delete_ptr(sk, ptr) ((POLICYQUALINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_pop(sk) ((POLICYQUALINFO *)OPENSSL_sk_pop(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_shift(sk) ((POLICYQUALINFO *)OPENSSL_sk_shift(ossl_check_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYQUALINFO_sk_type(sk),ossl_check_POLICYQUALINFO_freefunc_type(freefunc)) +#define sk_POLICYQUALINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), (idx)) +#define sk_POLICYQUALINFO_set(sk, idx, ptr) ((POLICYQUALINFO *)OPENSSL_sk_set(ossl_check_POLICYQUALINFO_sk_type(sk), (idx), ossl_check_POLICYQUALINFO_type(ptr))) +#define sk_POLICYQUALINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) +#define sk_POLICYQUALINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), pnum) +#define sk_POLICYQUALINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYQUALINFO_sk_type(sk)) +#define sk_POLICYQUALINFO_dup(sk) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYQUALINFO_sk_type(sk))) +#define sk_POLICYQUALINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_copyfunc_type(copyfunc), ossl_check_POLICYQUALINFO_freefunc_type(freefunc))) +#define sk_POLICYQUALINFO_set_cmp_func(sk, cmp) ((sk_POLICYQUALINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_compfunc_type(cmp))) + + + +typedef struct POLICYINFO_st { + ASN1_OBJECT *policyid; + STACK_OF(POLICYQUALINFO) *qualifiers; +} POLICYINFO; + +SKM_DEFINE_STACK_OF_INTERNAL(POLICYINFO, POLICYINFO, POLICYINFO) +#define sk_POLICYINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_value(sk, idx) ((POLICYINFO *)OPENSSL_sk_value(ossl_check_const_POLICYINFO_sk_type(sk), (idx))) +#define sk_POLICYINFO_new(cmp) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new(ossl_check_POLICYINFO_compfunc_type(cmp))) +#define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_null()) +#define sk_POLICYINFO_new_reserve(cmp, n) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYINFO_compfunc_type(cmp), (n))) +#define sk_POLICYINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYINFO_sk_type(sk), (n)) +#define sk_POLICYINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_delete(sk, i) ((POLICYINFO *)OPENSSL_sk_delete(ossl_check_POLICYINFO_sk_type(sk), (i))) +#define sk_POLICYINFO_delete_ptr(sk, ptr) ((POLICYINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_pop(sk) ((POLICYINFO *)OPENSSL_sk_pop(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_shift(sk) ((POLICYINFO *)OPENSSL_sk_shift(ossl_check_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYINFO_sk_type(sk),ossl_check_POLICYINFO_freefunc_type(freefunc)) +#define sk_POLICYINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), (idx)) +#define sk_POLICYINFO_set(sk, idx, ptr) ((POLICYINFO *)OPENSSL_sk_set(ossl_check_POLICYINFO_sk_type(sk), (idx), ossl_check_POLICYINFO_type(ptr))) +#define sk_POLICYINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) +#define sk_POLICYINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), pnum) +#define sk_POLICYINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYINFO_sk_type(sk)) +#define sk_POLICYINFO_dup(sk) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYINFO_sk_type(sk))) +#define sk_POLICYINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_copyfunc_type(copyfunc), ossl_check_POLICYINFO_freefunc_type(freefunc))) +#define sk_POLICYINFO_set_cmp_func(sk, cmp) ((sk_POLICYINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_compfunc_type(cmp))) + + +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; + +typedef struct POLICY_MAPPING_st { + ASN1_OBJECT *issuerDomainPolicy; + ASN1_OBJECT *subjectDomainPolicy; +} POLICY_MAPPING; + +SKM_DEFINE_STACK_OF_INTERNAL(POLICY_MAPPING, POLICY_MAPPING, POLICY_MAPPING) +#define sk_POLICY_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_value(sk, idx) ((POLICY_MAPPING *)OPENSSL_sk_value(ossl_check_const_POLICY_MAPPING_sk_type(sk), (idx))) +#define sk_POLICY_MAPPING_new(cmp) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new(ossl_check_POLICY_MAPPING_compfunc_type(cmp))) +#define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_null()) +#define sk_POLICY_MAPPING_new_reserve(cmp, n) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_POLICY_MAPPING_compfunc_type(cmp), (n))) +#define sk_POLICY_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICY_MAPPING_sk_type(sk), (n)) +#define sk_POLICY_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_delete(sk, i) ((POLICY_MAPPING *)OPENSSL_sk_delete(ossl_check_POLICY_MAPPING_sk_type(sk), (i))) +#define sk_POLICY_MAPPING_delete_ptr(sk, ptr) ((POLICY_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_pop(sk) ((POLICY_MAPPING *)OPENSSL_sk_pop(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_shift(sk) ((POLICY_MAPPING *)OPENSSL_sk_shift(ossl_check_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICY_MAPPING_sk_type(sk),ossl_check_POLICY_MAPPING_freefunc_type(freefunc)) +#define sk_POLICY_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), (idx)) +#define sk_POLICY_MAPPING_set(sk, idx, ptr) ((POLICY_MAPPING *)OPENSSL_sk_set(ossl_check_POLICY_MAPPING_sk_type(sk), (idx), ossl_check_POLICY_MAPPING_type(ptr))) +#define sk_POLICY_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) +#define sk_POLICY_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), pnum) +#define sk_POLICY_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICY_MAPPING_sk_type(sk)) +#define sk_POLICY_MAPPING_dup(sk) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_POLICY_MAPPING_sk_type(sk))) +#define sk_POLICY_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_copyfunc_type(copyfunc), ossl_check_POLICY_MAPPING_freefunc_type(freefunc))) +#define sk_POLICY_MAPPING_set_cmp_func(sk, cmp) ((sk_POLICY_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_compfunc_type(cmp))) + + +typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; + +typedef struct GENERAL_SUBTREE_st { + GENERAL_NAME *base; + ASN1_INTEGER *minimum; + ASN1_INTEGER *maximum; +} GENERAL_SUBTREE; + +SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_SUBTREE, GENERAL_SUBTREE, GENERAL_SUBTREE) +#define sk_GENERAL_SUBTREE_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_value(sk, idx) ((GENERAL_SUBTREE *)OPENSSL_sk_value(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), (idx))) +#define sk_GENERAL_SUBTREE_new(cmp) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) +#define sk_GENERAL_SUBTREE_new_null() ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_null()) +#define sk_GENERAL_SUBTREE_new_reserve(cmp, n) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp), (n))) +#define sk_GENERAL_SUBTREE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_SUBTREE_sk_type(sk), (n)) +#define sk_GENERAL_SUBTREE_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_delete(sk, i) ((GENERAL_SUBTREE *)OPENSSL_sk_delete(ossl_check_GENERAL_SUBTREE_sk_type(sk), (i))) +#define sk_GENERAL_SUBTREE_delete_ptr(sk, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_pop(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_pop(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_shift(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_shift(ossl_check_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_SUBTREE_sk_type(sk),ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc)) +#define sk_GENERAL_SUBTREE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), (idx)) +#define sk_GENERAL_SUBTREE_set(sk, idx, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_set(ossl_check_GENERAL_SUBTREE_sk_type(sk), (idx), ossl_check_GENERAL_SUBTREE_type(ptr))) +#define sk_GENERAL_SUBTREE_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) +#define sk_GENERAL_SUBTREE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), pnum) +#define sk_GENERAL_SUBTREE_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) +#define sk_GENERAL_SUBTREE_dup(sk) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_SUBTREE_sk_type(sk))) +#define sk_GENERAL_SUBTREE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_copyfunc_type(copyfunc), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc))) +#define sk_GENERAL_SUBTREE_set_cmp_func(sk, cmp) ((sk_GENERAL_SUBTREE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) + + +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, X509V3_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_UTF8STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_UTF8STRING), \ + 0,0,0,0, \ + (X509V3_EXT_I2S)i2s_ASN1_UTF8STRING, \ + (X509V3_EXT_S2I)s2i_ASN1_UTF8STRING, \ + 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 +# define EXFLAG_SI 0x20 /* self-issued, maybe not self-signed */ +# define EXFLAG_V1 0x40 +# define EXFLAG_INVALID 0x80 +/* EXFLAG_SET is set to indicate that some values have been precomputed */ +# define EXFLAG_SET 0x100 +# define EXFLAG_CRITICAL 0x200 +# define EXFLAG_PROXY 0x400 + +# define EXFLAG_INVALID_POLICY 0x800 +# define EXFLAG_FRESHEST 0x1000 +# define EXFLAG_SS 0x2000 /* cert is apparently self-signed */ + +# define EXFLAG_BCONS_CRITICAL 0x10000 +# define EXFLAG_AKID_CRITICAL 0x20000 +# define EXFLAG_SKID_CRITICAL 0x40000 +# define EXFLAG_SAN_CRITICAL 0x80000 +# define EXFLAG_NO_FINGERPRINT 0x100000 + +# define KU_DIGITAL_SIGNATURE 0x0080 +# define KU_NON_REPUDIATION 0x0040 +# define KU_KEY_ENCIPHERMENT 0x0020 +# define KU_DATA_ENCIPHERMENT 0x0010 +# define KU_KEY_AGREEMENT 0x0008 +# define KU_KEY_CERT_SIGN 0x0004 +# define KU_CRL_SIGN 0x0002 +# define KU_ENCIPHER_ONLY 0x0001 +# define KU_DECIPHER_ONLY 0x8000 + +# define NS_SSL_CLIENT 0x80 +# define NS_SSL_SERVER 0x40 +# define NS_SMIME 0x20 +# define NS_OBJSIGN 0x10 +# define NS_SSL_CA 0x04 +# define NS_SMIME_CA 0x02 +# define NS_OBJSIGN_CA 0x01 +# define NS_ANY_CA (NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA) + +# define XKU_SSL_SERVER 0x1 +# define XKU_SSL_CLIENT 0x2 +# define XKU_SMIME 0x4 +# define XKU_CODE_SIGN 0x8 +# define XKU_SGC 0x10 /* Netscape or MS Server-Gated Crypto */ +# 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; + +SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) +#define sk_X509_PURPOSE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_value(sk, idx) ((X509_PURPOSE *)OPENSSL_sk_value(ossl_check_const_X509_PURPOSE_sk_type(sk), (idx))) +#define sk_X509_PURPOSE_new(cmp) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new(ossl_check_X509_PURPOSE_compfunc_type(cmp))) +#define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_null()) +#define sk_X509_PURPOSE_new_reserve(cmp, n) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_reserve(ossl_check_X509_PURPOSE_compfunc_type(cmp), (n))) +#define sk_X509_PURPOSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_PURPOSE_sk_type(sk), (n)) +#define sk_X509_PURPOSE_free(sk) OPENSSL_sk_free(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_delete(sk, i) ((X509_PURPOSE *)OPENSSL_sk_delete(ossl_check_X509_PURPOSE_sk_type(sk), (i))) +#define sk_X509_PURPOSE_delete_ptr(sk, ptr) ((X509_PURPOSE *)OPENSSL_sk_delete_ptr(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_pop(sk) ((X509_PURPOSE *)OPENSSL_sk_pop(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_shift(sk) ((X509_PURPOSE *)OPENSSL_sk_shift(ossl_check_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_PURPOSE_sk_type(sk),ossl_check_X509_PURPOSE_freefunc_type(freefunc)) +#define sk_X509_PURPOSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), (idx)) +#define sk_X509_PURPOSE_set(sk, idx, ptr) ((X509_PURPOSE *)OPENSSL_sk_set(ossl_check_X509_PURPOSE_sk_type(sk), (idx), ossl_check_X509_PURPOSE_type(ptr))) +#define sk_X509_PURPOSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) +#define sk_X509_PURPOSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), pnum) +#define sk_X509_PURPOSE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_PURPOSE_sk_type(sk)) +#define sk_X509_PURPOSE_dup(sk) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_dup(ossl_check_const_X509_PURPOSE_sk_type(sk))) +#define sk_X509_PURPOSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_copyfunc_type(copyfunc), ossl_check_X509_PURPOSE_freefunc_type(freefunc))) +#define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) + + + +# 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 + +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) + +DECLARE_ASN1_FUNCTIONS(SXNET) +DECLARE_ASN1_FUNCTIONS(SXNETID) + +DECLARE_ASN1_FUNCTIONS(ISSUER_SIGN_TOOL) + +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) +DECLARE_ASN1_DUP_FUNCTION(GENERAL_NAME) +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); +char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, ASN1_UTF8STRING *utf8); +ASN1_UTF8STRING *s2i_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, + GENERAL_NAME *gen, + STACK_OF(CONF_VALUE) *ret); +int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen); + +DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES) + +STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, + GENERAL_NAMES *gen, + STACK_OF(CONF_VALUE) *extlist); +GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); + +DECLARE_ASN1_FUNCTIONS(OTHERNAME) +DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) +int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b); +void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value); +void *GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype); +int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, + ASN1_OBJECT *oid, ASN1_TYPE *value); +int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen, + ASN1_OBJECT **poid, ASN1_TYPE **pvalue); + +char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + const ASN1_OCTET_STRING *ia5); +ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, const char *str); + +DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) +int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a); + +DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE) + +DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES) +DECLARE_ASN1_FUNCTIONS(POLICYINFO) +DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO) +DECLARE_ASN1_FUNCTIONS(USERNOTICE) +DECLARE_ASN1_FUNCTIONS(NOTICEREF) + +DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) +DECLARE_ASN1_FUNCTIONS(DIST_POINT) +DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) +DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT) + +int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, const 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 OPENSSL_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); +/* For API backward compatibility, this is separate from X509V3_set_ctx(): */ +int X509V3_set_issuer_pkey(X509V3_CTX *ctx, EVP_PKEY *pkey); + +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); + +#ifndef OPENSSL_NO_DEPRECATED_1_1_0 +/* 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(const X509 *issuer, const AUTHORITY_KEYID *akid); +void X509_set_proxy_flag(X509 *x); +void X509_set_proxy_pathlen(X509 *x, long l); +long X509_get_proxy_pathlen(X509 *x); + +uint32_t X509_get_extension_flags(X509 *x); +uint32_t X509_get_key_usage(X509 *x); +uint32_t X509_get_extended_key_usage(X509 *x); +const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x); +const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x); +const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x); +const ASN1_INTEGER *X509_get0_authority_serial(X509 *x); + +int X509_PURPOSE_get_count(void); +X509_PURPOSE *X509_PURPOSE_get0(int idx); +int X509_PURPOSE_get_by_sname(const char *sname); +int X509_PURPOSE_get_by_id(int id); +int X509_PURPOSE_add(int id, int trust, int flags, + int (*ck) (const X509_PURPOSE *, const X509 *, int), + const char *name, const char *sname, void *arg); +char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp); +char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp); +int X509_PURPOSE_get_trust(const X509_PURPOSE *xp); +void X509_PURPOSE_cleanup(void); +int X509_PURPOSE_get_id(const X509_PURPOSE *); + +STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x); +STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x); +void X509_email_free(STACK_OF(OPENSSL_STRING) *sk); +STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x); +/* Flags for X509_check_* functions */ + +/* + * Always check subject name for host match even if subject alt names present + */ +# define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1 +/* Disable wildcard matching for dnsName fields and common name. */ +# define X509_CHECK_FLAG_NO_WILDCARDS 0x2 +/* Wildcards must not match a partial label. */ +# define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4 +/* Allow (non-partial) wildcards to match multiple labels. */ +# define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8 +/* Constraint verifier subdomain patterns to match a single labels. */ +# define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10 +/* Never check the subject CN */ +# define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 0x20 +/* + * Match reference identifiers starting with "." to any sub-domain. + * This is a non-public flag, turned on implicitly when the subject + * reference identity is a DNS name. + */ +# define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000 + +int X509_check_host(X509 *x, const char *chk, size_t chklen, + unsigned int flags, char **peername); +int X509_check_email(X509 *x, const char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen, + unsigned int flags); +int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags); + +ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); +ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); +int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk, + unsigned long chtype); + +void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); +SKM_DEFINE_STACK_OF_INTERNAL(X509_POLICY_NODE, X509_POLICY_NODE, X509_POLICY_NODE) +#define sk_X509_POLICY_NODE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_value(sk, idx) ((X509_POLICY_NODE *)OPENSSL_sk_value(ossl_check_const_X509_POLICY_NODE_sk_type(sk), (idx))) +#define sk_X509_POLICY_NODE_new(cmp) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new(ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) +#define sk_X509_POLICY_NODE_new_null() ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_null()) +#define sk_X509_POLICY_NODE_new_reserve(cmp, n) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_reserve(ossl_check_X509_POLICY_NODE_compfunc_type(cmp), (n))) +#define sk_X509_POLICY_NODE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_POLICY_NODE_sk_type(sk), (n)) +#define sk_X509_POLICY_NODE_free(sk) OPENSSL_sk_free(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_delete(sk, i) ((X509_POLICY_NODE *)OPENSSL_sk_delete(ossl_check_X509_POLICY_NODE_sk_type(sk), (i))) +#define sk_X509_POLICY_NODE_delete_ptr(sk, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_delete_ptr(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_pop(sk) ((X509_POLICY_NODE *)OPENSSL_sk_pop(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_shift(sk) ((X509_POLICY_NODE *)OPENSSL_sk_shift(ossl_check_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_POLICY_NODE_sk_type(sk),ossl_check_X509_POLICY_NODE_freefunc_type(freefunc)) +#define sk_X509_POLICY_NODE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), (idx)) +#define sk_X509_POLICY_NODE_set(sk, idx, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_set(ossl_check_X509_POLICY_NODE_sk_type(sk), (idx), ossl_check_X509_POLICY_NODE_type(ptr))) +#define sk_X509_POLICY_NODE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) +#define sk_X509_POLICY_NODE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), pnum) +#define sk_X509_POLICY_NODE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) +#define sk_X509_POLICY_NODE_dup(sk) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_dup(ossl_check_const_X509_POLICY_NODE_sk_type(sk))) +#define sk_X509_POLICY_NODE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_copyfunc_type(copyfunc), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc))) +#define sk_X509_POLICY_NODE_set_cmp_func(sk, cmp) ((sk_X509_POLICY_NODE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) + + + +#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; + +SKM_DEFINE_STACK_OF_INTERNAL(ASIdOrRange, ASIdOrRange, ASIdOrRange) +#define sk_ASIdOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_value(sk, idx) ((ASIdOrRange *)OPENSSL_sk_value(ossl_check_const_ASIdOrRange_sk_type(sk), (idx))) +#define sk_ASIdOrRange_new(cmp) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new(ossl_check_ASIdOrRange_compfunc_type(cmp))) +#define sk_ASIdOrRange_new_null() ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_null()) +#define sk_ASIdOrRange_new_reserve(cmp, n) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_reserve(ossl_check_ASIdOrRange_compfunc_type(cmp), (n))) +#define sk_ASIdOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASIdOrRange_sk_type(sk), (n)) +#define sk_ASIdOrRange_free(sk) OPENSSL_sk_free(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_delete(sk, i) ((ASIdOrRange *)OPENSSL_sk_delete(ossl_check_ASIdOrRange_sk_type(sk), (i))) +#define sk_ASIdOrRange_delete_ptr(sk, ptr) ((ASIdOrRange *)OPENSSL_sk_delete_ptr(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_pop(sk) ((ASIdOrRange *)OPENSSL_sk_pop(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_shift(sk) ((ASIdOrRange *)OPENSSL_sk_shift(ossl_check_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASIdOrRange_sk_type(sk),ossl_check_ASIdOrRange_freefunc_type(freefunc)) +#define sk_ASIdOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), (idx)) +#define sk_ASIdOrRange_set(sk, idx, ptr) ((ASIdOrRange *)OPENSSL_sk_set(ossl_check_ASIdOrRange_sk_type(sk), (idx), ossl_check_ASIdOrRange_type(ptr))) +#define sk_ASIdOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) +#define sk_ASIdOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), pnum) +#define sk_ASIdOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASIdOrRange_sk_type(sk)) +#define sk_ASIdOrRange_dup(sk) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_dup(ossl_check_const_ASIdOrRange_sk_type(sk))) +#define sk_ASIdOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_copyfunc_type(copyfunc), ossl_check_ASIdOrRange_freefunc_type(freefunc))) +#define sk_ASIdOrRange_set_cmp_func(sk, cmp) ((sk_ASIdOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_compfunc_type(cmp))) + + +typedef STACK_OF(ASIdOrRange) ASIdOrRanges; + +# 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; + +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressOrRange, IPAddressOrRange, IPAddressOrRange) +#define sk_IPAddressOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_value(sk, idx) ((IPAddressOrRange *)OPENSSL_sk_value(ossl_check_const_IPAddressOrRange_sk_type(sk), (idx))) +#define sk_IPAddressOrRange_new(cmp) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new(ossl_check_IPAddressOrRange_compfunc_type(cmp))) +#define sk_IPAddressOrRange_new_null() ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_null()) +#define sk_IPAddressOrRange_new_reserve(cmp, n) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressOrRange_compfunc_type(cmp), (n))) +#define sk_IPAddressOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressOrRange_sk_type(sk), (n)) +#define sk_IPAddressOrRange_free(sk) OPENSSL_sk_free(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_delete(sk, i) ((IPAddressOrRange *)OPENSSL_sk_delete(ossl_check_IPAddressOrRange_sk_type(sk), (i))) +#define sk_IPAddressOrRange_delete_ptr(sk, ptr) ((IPAddressOrRange *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_pop(sk) ((IPAddressOrRange *)OPENSSL_sk_pop(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_shift(sk) ((IPAddressOrRange *)OPENSSL_sk_shift(ossl_check_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressOrRange_sk_type(sk),ossl_check_IPAddressOrRange_freefunc_type(freefunc)) +#define sk_IPAddressOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), (idx)) +#define sk_IPAddressOrRange_set(sk, idx, ptr) ((IPAddressOrRange *)OPENSSL_sk_set(ossl_check_IPAddressOrRange_sk_type(sk), (idx), ossl_check_IPAddressOrRange_type(ptr))) +#define sk_IPAddressOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) +#define sk_IPAddressOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), pnum) +#define sk_IPAddressOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressOrRange_sk_type(sk)) +#define sk_IPAddressOrRange_dup(sk) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_dup(ossl_check_const_IPAddressOrRange_sk_type(sk))) +#define sk_IPAddressOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_copyfunc_type(copyfunc), ossl_check_IPAddressOrRange_freefunc_type(freefunc))) +#define sk_IPAddressOrRange_set_cmp_func(sk, cmp) ((sk_IPAddressOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_compfunc_type(cmp))) + + +typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; + +# 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; + +SKM_DEFINE_STACK_OF_INTERNAL(IPAddressFamily, IPAddressFamily, IPAddressFamily) +#define sk_IPAddressFamily_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_value(sk, idx) ((IPAddressFamily *)OPENSSL_sk_value(ossl_check_const_IPAddressFamily_sk_type(sk), (idx))) +#define sk_IPAddressFamily_new(cmp) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new(ossl_check_IPAddressFamily_compfunc_type(cmp))) +#define sk_IPAddressFamily_new_null() ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_null()) +#define sk_IPAddressFamily_new_reserve(cmp, n) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressFamily_compfunc_type(cmp), (n))) +#define sk_IPAddressFamily_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressFamily_sk_type(sk), (n)) +#define sk_IPAddressFamily_free(sk) OPENSSL_sk_free(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_delete(sk, i) ((IPAddressFamily *)OPENSSL_sk_delete(ossl_check_IPAddressFamily_sk_type(sk), (i))) +#define sk_IPAddressFamily_delete_ptr(sk, ptr) ((IPAddressFamily *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_pop(sk) ((IPAddressFamily *)OPENSSL_sk_pop(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_shift(sk) ((IPAddressFamily *)OPENSSL_sk_shift(ossl_check_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressFamily_sk_type(sk),ossl_check_IPAddressFamily_freefunc_type(freefunc)) +#define sk_IPAddressFamily_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), (idx)) +#define sk_IPAddressFamily_set(sk, idx, ptr) ((IPAddressFamily *)OPENSSL_sk_set(ossl_check_IPAddressFamily_sk_type(sk), (idx), ossl_check_IPAddressFamily_type(ptr))) +#define sk_IPAddressFamily_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) +#define sk_IPAddressFamily_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), pnum) +#define sk_IPAddressFamily_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressFamily_sk_type(sk)) +#define sk_IPAddressFamily_dup(sk) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_dup(ossl_check_const_IPAddressFamily_sk_type(sk))) +#define sk_IPAddressFamily_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_copyfunc_type(copyfunc), ossl_check_IPAddressFamily_freefunc_type(freefunc))) +#define sk_IPAddressFamily_set_cmp_func(sk, cmp) ((sk_IPAddressFamily_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_compfunc_type(cmp))) + + + +typedef STACK_OF(IPAddressFamily) IPAddrBlocks; + +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 */ + +SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING, ASN1_STRING, ASN1_STRING) +#define sk_ASN1_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_value(sk, idx) ((ASN1_STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_sk_type(sk), (idx))) +#define sk_ASN1_STRING_new(cmp) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_compfunc_type(cmp))) +#define sk_ASN1_STRING_new_null() ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_null()) +#define sk_ASN1_STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_compfunc_type(cmp), (n))) +#define sk_ASN1_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_sk_type(sk), (n)) +#define sk_ASN1_STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_delete(sk, i) ((ASN1_STRING *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_sk_type(sk), (i))) +#define sk_ASN1_STRING_delete_ptr(sk, ptr) ((ASN1_STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_pop(sk) ((ASN1_STRING *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_shift(sk) ((ASN1_STRING *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_sk_type(sk),ossl_check_ASN1_STRING_freefunc_type(freefunc)) +#define sk_ASN1_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), (idx)) +#define sk_ASN1_STRING_set(sk, idx, ptr) ((ASN1_STRING *)OPENSSL_sk_set(ossl_check_ASN1_STRING_sk_type(sk), (idx), ossl_check_ASN1_STRING_type(ptr))) +#define sk_ASN1_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) +#define sk_ASN1_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), pnum) +#define sk_ASN1_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_sk_type(sk)) +#define sk_ASN1_STRING_dup(sk) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_sk_type(sk))) +#define sk_ASN1_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_freefunc_type(freefunc))) +#define sk_ASN1_STRING_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_compfunc_type(cmp))) + + +/* + * Admission Syntax + */ +typedef struct NamingAuthority_st NAMING_AUTHORITY; +typedef struct ProfessionInfo_st PROFESSION_INFO; +typedef struct Admissions_st ADMISSIONS; +typedef struct AdmissionSyntax_st ADMISSION_SYNTAX; +DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY) +DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO) +DECLARE_ASN1_FUNCTIONS(ADMISSIONS) +DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX) +SKM_DEFINE_STACK_OF_INTERNAL(PROFESSION_INFO, PROFESSION_INFO, PROFESSION_INFO) +#define sk_PROFESSION_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_value(sk, idx) ((PROFESSION_INFO *)OPENSSL_sk_value(ossl_check_const_PROFESSION_INFO_sk_type(sk), (idx))) +#define sk_PROFESSION_INFO_new(cmp) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new(ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +#define sk_PROFESSION_INFO_new_null() ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_null()) +#define sk_PROFESSION_INFO_new_reserve(cmp, n) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PROFESSION_INFO_compfunc_type(cmp), (n))) +#define sk_PROFESSION_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PROFESSION_INFO_sk_type(sk), (n)) +#define sk_PROFESSION_INFO_free(sk) OPENSSL_sk_free(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_delete(sk, i) ((PROFESSION_INFO *)OPENSSL_sk_delete(ossl_check_PROFESSION_INFO_sk_type(sk), (i))) +#define sk_PROFESSION_INFO_delete_ptr(sk, ptr) ((PROFESSION_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_pop(sk) ((PROFESSION_INFO *)OPENSSL_sk_pop(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_shift(sk) ((PROFESSION_INFO *)OPENSSL_sk_shift(ossl_check_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PROFESSION_INFO_sk_type(sk),ossl_check_PROFESSION_INFO_freefunc_type(freefunc)) +#define sk_PROFESSION_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), (idx)) +#define sk_PROFESSION_INFO_set(sk, idx, ptr) ((PROFESSION_INFO *)OPENSSL_sk_set(ossl_check_PROFESSION_INFO_sk_type(sk), (idx), ossl_check_PROFESSION_INFO_type(ptr))) +#define sk_PROFESSION_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) +#define sk_PROFESSION_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), pnum) +#define sk_PROFESSION_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PROFESSION_INFO_sk_type(sk)) +#define sk_PROFESSION_INFO_dup(sk) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_dup(ossl_check_const_PROFESSION_INFO_sk_type(sk))) +#define sk_PROFESSION_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_copyfunc_type(copyfunc), ossl_check_PROFESSION_INFO_freefunc_type(freefunc))) +#define sk_PROFESSION_INFO_set_cmp_func(sk, cmp) ((sk_PROFESSION_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_compfunc_type(cmp))) +SKM_DEFINE_STACK_OF_INTERNAL(ADMISSIONS, ADMISSIONS, ADMISSIONS) +#define sk_ADMISSIONS_num(sk) OPENSSL_sk_num(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_value(sk, idx) ((ADMISSIONS *)OPENSSL_sk_value(ossl_check_const_ADMISSIONS_sk_type(sk), (idx))) +#define sk_ADMISSIONS_new(cmp) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new(ossl_check_ADMISSIONS_compfunc_type(cmp))) +#define sk_ADMISSIONS_new_null() ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_null()) +#define sk_ADMISSIONS_new_reserve(cmp, n) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_reserve(ossl_check_ADMISSIONS_compfunc_type(cmp), (n))) +#define sk_ADMISSIONS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ADMISSIONS_sk_type(sk), (n)) +#define sk_ADMISSIONS_free(sk) OPENSSL_sk_free(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_zero(sk) OPENSSL_sk_zero(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_delete(sk, i) ((ADMISSIONS *)OPENSSL_sk_delete(ossl_check_ADMISSIONS_sk_type(sk), (i))) +#define sk_ADMISSIONS_delete_ptr(sk, ptr) ((ADMISSIONS *)OPENSSL_sk_delete_ptr(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_push(sk, ptr) OPENSSL_sk_push(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_pop(sk) ((ADMISSIONS *)OPENSSL_sk_pop(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_shift(sk) ((ADMISSIONS *)OPENSSL_sk_shift(ossl_check_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ADMISSIONS_sk_type(sk),ossl_check_ADMISSIONS_freefunc_type(freefunc)) +#define sk_ADMISSIONS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), (idx)) +#define sk_ADMISSIONS_set(sk, idx, ptr) ((ADMISSIONS *)OPENSSL_sk_set(ossl_check_ADMISSIONS_sk_type(sk), (idx), ossl_check_ADMISSIONS_type(ptr))) +#define sk_ADMISSIONS_find(sk, ptr) OPENSSL_sk_find(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) +#define sk_ADMISSIONS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), pnum) +#define sk_ADMISSIONS_sort(sk) OPENSSL_sk_sort(ossl_check_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ADMISSIONS_sk_type(sk)) +#define sk_ADMISSIONS_dup(sk) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_dup(ossl_check_const_ADMISSIONS_sk_type(sk))) +#define sk_ADMISSIONS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_deep_copy(ossl_check_const_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_copyfunc_type(copyfunc), ossl_check_ADMISSIONS_freefunc_type(freefunc))) +#define sk_ADMISSIONS_set_cmp_func(sk, cmp) ((sk_ADMISSIONS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_compfunc_type(cmp))) + +typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS; + +const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId( + const NAMING_AUTHORITY *n); +const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL( + const NAMING_AUTHORITY *n); +const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText( + const NAMING_AUTHORITY *n); +void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n, + ASN1_OBJECT* namingAuthorityId); +void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n, + ASN1_IA5STRING* namingAuthorityUrl); +void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n, + ASN1_STRING* namingAuthorityText); + +const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_admissionAuthority( + ADMISSION_SYNTAX *as, GENERAL_NAME *aa); +const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions( + const ADMISSION_SYNTAX *as); +void ADMISSION_SYNTAX_set0_contentsOfAdmissions( + ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a); +const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa); +const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a); +void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na); +const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a); +void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi); +const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_addProfessionInfo( + PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos); +const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_namingAuthority( + PROFESSION_INFO *pi, NAMING_AUTHORITY *na); +const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionItems( + PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as); +const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_professionOIDs( + PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po); +const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber( + const PROFESSION_INFO *pi); +void PROFESSION_INFO_set0_registrationNumber( + PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/x509v3err.h b/include/openssl/x509v3err.h new file mode 100644 index 0000000..1ae3a56 --- /dev/null +++ b/include/openssl/x509v3err.h @@ -0,0 +1,93 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_X509V3ERR_H +# define OPENSSL_X509V3ERR_H +# pragma once + +# include +# include +# include + + + +/* + * X509V3 reason codes. + */ +# define X509V3_R_BAD_IP_ADDRESS 118 +# define X509V3_R_BAD_OBJECT 119 +# define X509V3_R_BN_DEC2BN_ERROR 100 +# define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 +# define X509V3_R_DIRNAME_ERROR 149 +# define X509V3_R_DISTPOINT_ALREADY_SET 160 +# define X509V3_R_DUPLICATE_ZONE_ID 133 +# define X509V3_R_EMPTY_KEY_USAGE 169 +# 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_CERTIFICATE 158 +# define X509V3_R_INVALID_EMPTY_NAME 108 +# 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_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_NEGATIVE_PATHLEN 168 +# define X509V3_R_NO_CONFIG_DATABASE 136 +# define X509V3_R_NO_ISSUER_CERTIFICATE 121 +# define X509V3_R_NO_ISSUER_DETAILS 127 +# define X509V3_R_NO_POLICY_IDENTIFIER 139 +# define X509V3_R_NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED 154 +# define X509V3_R_NO_PUBLIC_KEY 114 +# define X509V3_R_NO_SUBJECT_DETAILS 125 +# define X509V3_R_OPERATION_NOT_DEFINED 148 +# define X509V3_R_OTHERNAME_ERROR 147 +# define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155 +# define X509V3_R_POLICY_PATH_LENGTH 156 +# define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED 157 +# define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159 +# define X509V3_R_SECTION_NOT_FOUND 150 +# define X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS 122 +# define X509V3_R_UNABLE_TO_GET_ISSUER_KEYID 123 +# define X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT 111 +# define X509V3_R_UNKNOWN_EXTENSION 129 +# define X509V3_R_UNKNOWN_EXTENSION_NAME 130 +# define X509V3_R_UNKNOWN_OPTION 120 +# define X509V3_R_UNSUPPORTED_OPTION 117 +# define X509V3_R_UNSUPPORTED_TYPE 167 +# define X509V3_R_USER_TOO_LONG 132 + +#endif diff --git a/include/plcLicence.h b/include/plcLicence.h new file mode 100644 index 0000000..a38300d --- /dev/null +++ b/include/plcLicence.h @@ -0,0 +1,247 @@ +#ifndef PLC_LICENCE_H +#define PLC_LICENCE_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +#define MAX_LICENCE_COUNT 100 + +enum InputLicenceType +{ + EOSEOV +}; + +enum BinaryGenerationType +{ + Base64Cout = 1, + File = 2 +}; + +enum LicenceType +{ + LicenceOther = 0, + LicenceEov = 1 +}; +enum LidIdType +{ + Ddts = 1, + EovOsv = 2 +}; +enum PrefixType +{ + ELC1 = 1 +}; + +typedef uint32_t DWORD; // DWORD = unsigned 32 bit value +typedef uint16_t WORD; // WORD = unsigned 16 bit value +typedef uint8_t BYTE; // BYTE = unsigned 8 bit value +typedef uint32_t UDINT; +typedef unsigned long DATE; +typedef uint8_t USINT; +typedef int32_t DINT; +typedef uint16_t UINT; +typedef int16_t INT; + +/// @brief identifikace licence +typedef struct LicenceIdent +{ + WORD licPrefixType = 0; // WORD; typ licencniho souboru - pro kazdy prefig je jiny typ souboru a jiny zpusob zpracovani dat [sifrovani, podpis, komprese, ...] + WORD licHeaderType = 0; //: WORD; typ hlavicky kriptovane casti licencniho souboru + WORD licDataType = 0; //: WORD; typ licence - pro kazdou hlavicku jsou samostatne typy licenci - mohou byt i shodne s typem jine hlavicky + WORD licSubType = 0; //: WORD; slouceny typ hlavicku a typ licence => typ hlavicky * 256 + typ licence + WORD licIDType = 0; //: WORD; id aplikace, pro kterou je licence urcena => 1 = ddts, 2 = eov-osv + BYTE licPostfix = 0; //: BYTE; rozliseni licence pro stejny typ - napr. pokud mam 2x SW pro DRT na 2 nezavisle ED +} LicenceIdent; + +/// @brief struktura pro přípravu dat na generování +typedef struct LicenceSourceData +{ + + BYTE startGen; // na nabeznou hranu se vygeneruje licence + BYTE loadSD; //: BOOL; na nabeznou hranu se nacte SD karta + // zadavane hodnoty + BYTE licType_id; // vybrany typ licence + char licDescription1[40] = {}; //: STRING(39); jmeno stanice + char licDescription2[20] = {}; //: STRING(19); jmeno rozvadece + BYTE licPostfix; // rozliseni licence pro stejny typ - napr. pokud mam 2x SW pro DRT na 2 nezavisle ED + BYTE enInit; //: BOOL; inicializace (promazani) adresare pro licence + // interne generovane hodnoty + WORD licType; //: WORD; hlavicka licence + BYTE licIdOk; //: BOOL; korektne zvoleny typ licence + string licPostfixIdent; //[2]; //: STRING(2); vygenerovany postfix z cisla pro rozliseni postfixu v souborech a textech +} LicenceSourceData; + +/// @brief struktura obsahující dodatečné informace k licenci +typedef struct PlcData +{ + string plcType = ""; + string licenceType = ""; // typ + string licenceVersion = "1"; + string licenceName = ""; // název + string station = ""; // stanice + string distributor = ""; // rozvadec +} PlcData; + +/* +MID (Manufacturer ID): 8 bits - Identifies the manufacturer of the SD card. +OID (OEM/Application ID): 16 bits - Identifies the OEM and application-specific information. +PNM (Product Name): 40 bits - A string representing the product name of the SD card. +PRV (Product Revision): 8 bits - The product revision/version. +PSN (Product Serial Number): 32 bits - A unique serial number assigned to the SD card during manufacturing. +MDT (Manufacturing Date): 12 bits - Represents the manufacturing date of the SD card. +CRC (CRC7 Checksum): 7 bits - A cyclic redundancy check for error detection. +unused: 4 bits - Reserved for future use. +*/ + +/// @brief struktura pro načtení CIS a CSD dat +typedef struct SDData +{ + BYTE isCorrectLoad = 0; // SD karta je korektne nactena //bool vs byte ? + BYTE CID_nibble[32] = {0}; // surova data CID ze souboru + BYTE CID[16] = {0}; // prekodovane CID informace + BYTE manufacturerID = 0; // ID vyrobce 1B -> Byte 15 + char oemID[2] = {}; // ID aplikace/oem 2B -> Byte 13-14 // oemID: !!STRING(3); + char name[5] = {}; // jmeno produktu 5B -> Byte 8-12 !!STRING(6); + BYTE productRevision_hw = 0; + BYTE productRevision_sw = 0; + float productRevision = 0; // revize produktu 1B [bcd sh] -> Byte 7, bity 0-3 = revize HW, bity 4-7 = revize SW + DWORD serialNumber = 0; // seriove cislo karty 4B -> Byte 3-6 + WORD manufacturerDate_year = 0; + BYTE manufacturerDate_month = 0; + char manufacturerDate[10] = {}; //: STRING(10); // datum vyroby 2B [bcd -yym] -> Byte 1-2, bity 0-3 = mesic, bity 4-11 = posledni cislice roku or roku 2000, bity 12-15 nepouzito + BYTE CRCOK = 0; // CRC 1B -> Byte 0, bity 1-7, bit 0 je vzdy = 1 + BYTE CSD_nibble[32] = {}; //: ARRAY [0..31] OF BYTE; // surova data CSD ze souboru + BYTE CSD[16] = {}; //: ARRAY [0..15] OF BYTE; // prekodovane CSD informace + UDINT cardSize = 0; //: UDINT; // velikost SD karty + BYTE cardGSize = 0; // prepocitana velikost na GB +} CidData; + +// nekodovana cast licence + +/// @brief nekryptovaná hlavička licence +typedef struct LicenceDataMainHeaderELC +{ + BYTE licType = 0; + ; // typ licence => duplicitni polozka s hlavickou kodovane casti licence - pouze pro ucely dekodovani dat + BYTE dummy1 = 0; + WORD licSubType = 0; // horni byte = typ hlavicky kodovane casti, spodni byte = typ dat polozkove casti => duplicitni casti s id a hlavickou kodovane casti - pouze pro ucely dekodovani + char description[80] = {}; // viditelny popis licincniho souboru + UDINT sizeData = 0; // velikost kodovane casti licence v Bytech +} LicenceDataMainHeaderELC; + +// hlavní struktura licence +typedef struct LicenceDataMainELC +{ + // prefix MUSI zustat jako prvni prvek struktury a MUSI byt typu DWORD + DWORD prefix = 0; // urcuje strukturu dat citelne casti licencniho souboru [teto struktury] + zpusob sifrovani, dig, podpis, kompresi... dat + LicenceDataMainHeaderELC licHeader; // nekodovana cast licence +} LicenceDataMain; + +// polozkova cast licence verze 1.0 +typedef struct LicenceDataItem +{ + WORD protoId = 0; // id protokolu pro ktery je licence + WORD licCount = 0; // pocet datovych bodu licence + DWORD data1 = 0; // doplnkove nahodne cislo, slouzi pro overeni licence v runtime +} LicenceDataItem; + +// identifikace kodovane casti licence - !!! MUSI yustat pro vsechny verze STEJNA !!! +typedef struct LicenceDataId +{ + WORD version = 0; // verze hlavicky + WORD rez = 0; + UDINT cardSize = 0; +} LicenceDataId; + +typedef struct LicenceDataHeader +{ + BYTE licType = 0; // typ licence => 0...neznamy (chyba), 1...DDTS, 2...EOV-OSV + BYTE licReserve = 0; // rezerva + WORD licVersion = 0; //: WORD; verze polozkove casti licence + DATE licDate = 0; // datum vygenerovani licence + char licDescription1[40] = {}; // licDescription1: STRING(39); stanice, pro kterou byla licence generovana + char licDescription2[20] = {}; // STRING(19); rozvadec, pro ktery byla licence generovana + USINT licCount = 0; // aktivni pocet dat polozkove casti licence + BYTE licDummy = 0; // rezerva + WORD licReservew = 0; // rezerva +} LicenceDataHeader; + +// kodovana cast licence verze 1.1 s polozkovou casi licence verze 1.0 +typedef struct LicenceData +{ + LicenceDataId id; // id !!! MUSI zustat na PRVNIM miste struktury + LicenceDataHeader header; + LicenceDataItem items[MAX_LICENCE_COUNT]; // polozkova cast licence + WORD dummy = 0; // pro zarovnani struktur - jinak nebude fungovat vypocet a kontrola CRC !!! + WORD crc = 0; // kontrolni kod - !!! MUSI zustat na konci struktury +} LicenceData; + +typedef struct LicenceRetData +{ + BYTE retCode = 0; // navratovy kod funkce pro nacteni SD + DINT subCode = 0; // doplnkova informace chyby + std::string text = ""; // textovy popis navratove hodnoty + bool isDone = false; // operace korektne dokoncena +} LicenceRetData; + +typedef struct CryptData +{ + bool initDone = false; + DWORD cryptDataAddress = 0; // adresa na data, ktera se maji cryptovat + UINT cryptDataSize = 0; // velikostdat, ktera semaji cryptovat + BYTE aesInitVector[15] = {0}; //] : ARRAY [0..14] OF BYTE;// AES 128 bit IV + BYTE aesKey[32] = {0}; // : ARRAY [0..31] OF BYTE; // AES 256 bit key + DINT aesRetVal = 0; // navratova hodnota AES + DWORD retDataAddress = 0; // adresa na ulozeni cryptovana dat + UINT retDataSize = 0; // velikost cryptovanych dat + LicenceData *licenseData; +} CryptData; + +/// @brief licence class +class PlcLicence +{ + +private: + string cidString = ""; + string csdString = ""; + char *cid; // CID + char *csd; // CSD + string stationName; // name of station + string distributor; // name of switch + const char *dataFileName; // name of xml containing data (if not taken from commandline) + WORD licType = 2; // type of licence + BinaryGenerationType binaryGeneration = BinaryGenerationType::Base64Cout; //typ generování binárního souboru + + CryptData cryptData; // structure for encryp + CidData sdData; // data loaded from SD card + + void processConfigFile(string &dataFileName); //process data from config file + void getSDData(); // reads SD card + string getLicenceName(BYTE licPostfix); // get proper licencname + void initCrypto(); // inits keys and vectors for encryptin + unsigned char *getLicenceContent(); // reads content of licence + + +public: + string operationErrors = ""; + + PlcLicence(); + PlcLicence(char *cid, char *csd, char *stationName, char *switchName, char *licenceType, char *binaryType, const char *dataFileName); + PlcLicence(string cid, string csd, char *stationName, char *switchName, char *licenceType, char *binaryType, const char *dataFileName); + PlcLicence(map & arguments); + PlcLicence(char *cid, char *csd, string binaryType, string dataFileName); + bool CreateLicence(); // creates licence + bool ReadLicence(const char *dataFileName, WORD licType, BYTE licPostfix, char *cid, char *csd); // reads licence file to readable structures +}; + +#endif diff --git a/include/utils.h b/include/utils.h new file mode 100644 index 0000000..a16edab --- /dev/null +++ b/include/utils.h @@ -0,0 +1,80 @@ +#include +#include +#include +#include +#include + + +#define PEM_BUFSIZE_TEXT 1024 +#define BitVal(data, y) ((data >> y) & 1) /** Return Data.Y value **/ +#define SetBit(data, y) data |= (1 << y) /** Set Data.Y to 1 **/ +#define ClearBit(data, y) data &= ~(1 << y) /** Clear Data.Y to 0 **/ +#define TogleBit(data, y) (data ^= BitVal(y)) /** Togle Data.Y value **/ +#define Togle(data) (data = ~data) /** Togle Data value **/ + +#define PEM_BUFSIZE_TEXT 1024 + +#ifndef BYTE +typedef uint8_t BYTE; +#endif + +#ifndef WORD +typedef uint16_t WORD; +#endif + +#ifndef DWORD +typedef uint32_t DWORD; +#endif + +#ifndef DATE +typedef unsigned long DATE; +#endif + +using namespace std; + +struct DateAndTime { + uint16_t date; // DATE data type in CODESYS + uint16_t time; // TIME data type in CODESYS +}; + +void TestFunction(int); +void generatePause(); +string getXmlContentFromString(string source, string xmlTag); +float byteArrayToFloat(const BYTE* byteArray); +std::string right(const std::string& sourceString, size_t numChars); +std::tm dt_to_date(const std::chrono::system_clock::time_point& tp); +void getCharsFromString(string source, char *charArray); +std::string parseCID(const std::string& cidHex); +void bitsToCharArray(const std::string& bitsStr, char* charArray); +uint16_t calculateCRC16(const uint8_t* data, size_t length); +uint16_t calculateCrc(const uint8_t* data, size_t length); +WORD getCurrentDateAsCODESYSDate(); +DWORD getCurrentDateAsCODESYSDateDword(); +DateAndTime getCurrentDateTimeAsCODESYSDateTime(); +uint16_t convertToCODESYSDate(int day, int month, int year); +uint16_t convertToCODESYSTime(int hour, int minute); +DATE getLicDate(); +int encrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key, unsigned char *iv, unsigned char *ciphertext); +bool CompareFiles(const char *fileName, const char *fileName1); +unsigned short crc16(const unsigned char* data_p, unsigned char length); +int decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned char *key, unsigned char *iv, unsigned char *plaintext); +string convertToString(char* a, int size); +std::string base64_encode_ai(const std::string &input); +std::string base64_decode_ai(const std::string &encoded); +map getArguments(int argc, char *argv[]); +map mapArguments(int argc, char *argv[]); +char* getCharArray(string source); +void getCharsFromString1(string source, char *charArray); + + + + + + + + + + + + + diff --git a/lib/crypto.dll b/lib/crypto.dll new file mode 100644 index 0000000000000000000000000000000000000000..01f14044c0f5c68aae7a5594eea451573de86438 GIT binary patch literal 4902799 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Ϧ%$AD>KAS>Z_I+C#SF(sfe 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%0DM0LlUQHvp`7l!~cwYpoS| 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�g1OFbIeZx` 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

A`#TSFgrdl{& zK)Yp+mQ|;4wjBtZPy-w+ezIL~$tjo~*L6 z46&{H|Lj!Eq=xuzM}db)jW64^hb&87DMSh&%~$9|u*O&+eSL6zb(Zz{A%(6Kx3Xsg zk3@%!)x2Isyr~nx(;|`C&b)a-W(S@}LS#IBcJwWHC-MxoMAUKQu3=ssN(jZjHWDHB z>eEk}ycK@+D`KlOEZ=B0Prq3YPiLNUP4m~AW`p=0dr2|4!HUE?a0XFbk~=a8AP96q zZxtfTD@e#1QvC0EG#3)TF=$+nlyk(7QliRDJR6TH5YmJV?3*pY-(=74Mx}VI>pw&B z&U1Ui9%3IAhBG%O*6eEb?brdUf*=-VYv>snfjWcRwVBdUq9b65OYplo47>G2nslyd z>osRP-V;Z~Sm4mjOg$_JxwJ|=7k+qF2GRa<) zQg5k+taH3-W}sp7TdIOWtO&mlSanJK?Hq~K-yG5qzW8T*wTzJ_r~g)b8eKM%-ZEtb z#Wf@X&2%OZUi`p9vAdl3{84U_2F0&hZbKa+uDn10|7&)*(^dWb!bmatA~GY%{l`*k z`x)et5dVpHNhKwj+txg%Eb$y+p@lBV3xV8xRMM>?d?lTaML+7BvDPQPA1q|1fdmw_ z<_GQg;L?Ud9olNupNbA50g~lO8;o$THpv42`b#VB5A$GQYL0~ltv6=Sbkjd)cTCRv z-iUE6OVv4MYijjS(#fdY;ZL$&5Byk6@^fqMov)q+2W2yhSPiKu$1bnMVq4yBv%=G^ z&vIPaHADl|8H|QS;eO$hUtox_)ungt#9*p %wpzxBLHFdgeW@lLPFl{n%2L_aqo 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

(&k4$Wv$ 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%0A{+JwIi?2!kpe&{S$y>6EKLA2bRFYwb;DHp6d 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

i2l2~M0Mv9zyg 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

?lii!_->s9|J{0}!h{x7F{BJ7ddK*ZEY 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 z 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�@e5#$ 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 z"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

Nay*i@4qYQ|es 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�+Lk7hBkmpkwu3&R?cU~ZJM?42-Mjp42Y_t2dzZgyFC^pl zK7ZT6AOUwz`MdApK`BS@F|+UA5f6&lpZA%MXL0}1{DVdK+&O&yGj1sm+eqdIi;|FQ zcK_k$=iNzCe7Fd^NpOaZ_-u5mf+7_OR>dd>t+#R zy8lgNOy!Z$kMYRpCwXM_4;pc_^v^kr_@kps=OvUzj*c#!ov<=|bab$Edcyi(*?oD~ z8L9+JrzC6*mW|KDo^d4ZOV|@E^XB0cZzRSi90-=V^6(*$Qa(@YPw^%+m(LdaQ(Oth z%cpaH$`tNTnaBMp_i=y9JnT=&EFaJPDf6(4Aivzp{VDUXKV=fnfGsL_agz$mdvPwc zD9t@8qAd7amV|<~H>L2rY*8;bc{X;ZcyOXFgMgTJ1;?~ES~bA9 z#ksk`z*jNj4US&cyvNJKecKxw&kY9V)s_VVS0diRB3|_h^mEKrsI0kJAk+N&P+;#@z> z%*x+Dq>7!EcyNemGC+ol!)6ZTl)r;e6+7J;+}qxG{5*7e{aBoU%wC(X=8L-EXsda* zn+Hd?H#P(I8xX1zHCPU?a}p=YjcIS(3#ikthAELlL{7`)9CHKUO&tQdjV}_;(>{7m z>R}YV5q=Wz%&jidvDL+sxEP0v6F?j}+1?lePQBRl!sj*smww$?9Eu#qX=8Ieaf)|M zfNOT`sxVGdvj7)oZ!tIp6ng+&Y7UH1EKZT%EMPnU7&8W)f>SJ{0jD)FI87Y^{|h*6 z1WsqyR(Wuqakc;%Cs<;r#A!_wr|kecRUM0yi(_&6P<`_r8>cN@ahinL8E^{UpSTBf zy8$(h(NQrP4iPy`0^ShdO-g_Sj9)5oO0SMMP0E80Czu$!MW$fei~*|W3kY!lrestX zHqh|770@N+f|&%x!Ke?lHt)8PN=BVtyFntAMFdj2Fe-ql{|a6qc8RHIlu?lnM#Wz% z13Y;CX^^@WNL?2}Dik0XAqb>40jbk#YYgy#0gw@|68uA?uCtL^*523-`AWYIJSBJ` z%%~47ZQe_yqTen^WjVmk`JO=PWU>M>bKqmjAtDD%fWHR-FOJftG6^Gk7DlQq{Xkw9 z>E8|TDE**$6sZ6Yl*iu?fK0vk6r{p~1ya|?AeGWz3#2v!sZ(mV7~s@t0%V-=N#O!g z*GG}s2Cy@(2UB(7)X{H7kV+|wNI%O7q}tLCxb_0-q--coIYi_@`ti2`@PbpPFz&_a z4Wu9E4gjf1c~GtbsZt+Pfd)^fS7&2)4?+Gcy?S5m-mnhneZ9INg4w8EZ2@NQtF1qs zUfmGY0lleLIYeNhi(b8tAu$`Xr|MNNwg;U?uTIBCAyVhF^y>K9hA>WhU$552;54jP zKLJk1*IK93tF=*__NHFt5P{P!dUZVFWMLI>8olbmR-@DC)hXC?M5KO}UiH=@^g;)q zFZAlh2vVbZ^(c_)t;N#psd{x|R0Z^=UgZ#hi7tAT{#O{Or_rnPux;rydi6eRU?P1! zORu_Wu`N*|wfFVvrWmA#_3AMo)m7ViI=#9niqziJs~jSb+C{Ir7*jj5UVVc;YSFwO zVH?!95LTntT7=c|sMiY2#^}{9o@$JHie95WDH5@cXvF)3R=0H{HR2+46Y(_T{L3y* zWsD~YV4_YW60v$NJjfUoN4>UGbQAFxyJ)o0u|6VwN8!V4CO1XBK_p^bKsg%tePT31 zD^VA{D!Q?KJdP$t19frd=b@Znt6{=&5TjhEP)bBM5l5|yD(T{!#b^$+ z9CgExi1od~qoKvM)d7_Nk6Ma2SHZF_E>#ylD#m%59P2kB5i8o^(ZonKCAnU76ZVh* zT8s>L@rvjz0ci|+qvfdogG8*;6XrA`%@DJjT1uZKy0N_)jwVLtx;QW~UJF`|IxI-U z%2b%sV%!vNCFpaR!N&r9E-)UPLlB)^^^LUXI5UU``g1zeSE7RXJfhOaxBN4{@9_qFUk;+t-~Ul=T_k*qYsb zTWgGbX9=X*vEWS{6^QT*0yCIdV7}0h8WW3K;=%dmeJ+;chxWNtdUN|+C|!AdE|cR6 z`dlQv6Z%{t@0;1@0_mF5*YfC}UL?*s-xfaWJS?2Q?@lLh;z;z&;1&`obEhyekg$Rz3;Td`QG9@bOz@8%a}aQLobrY zE>37QeA95`+a$~5n^y1f&D`Sg&8cylFD+ri=BrEb<29G^2urW|YQ6Y*Q@AJQGBHB` z1xNlR`?v_mUWx+YBg9kj{O>pwefMQ&J{5fl4-}v9=J^SRumAJ-v5y$Pi#hTXQ*nqU zj~i#n+e8s9lh1d^=Ug7h%>&DE+$+w@{lBd}?d~ooyc)je$mfRtKMHU*b3sw`Y-W#N z=jqw4GaWzTZJ^6%vRF%3J`;w{S(FORGpoI2PzvI7%&C(1D(Z69XMVrYQ}$-_$pd+N?i$B^O@V9o0MGejOohcDoH^uFR+ z{4H+H#nJariBGx2@z$w$mW-8oer1w+Ew`yAGDIw~-wmUzrm1>%O&^>G?@XqadyKS7g{ zqE+h2^2F~{fzsICJJxM|y(Lqf6X|nyl^F-|xkXuh$N9d18#27F1+nf5r`2Y3A zzgJ(Z{e!J9prB**#byZ5Q{%hpi{GJ0&zUTIRCT;0_oe>e#RSkF4U4F!PSF>HU+9a` zr|1h;yuSFy@BjV!BD8|CwWOzdg5r8QJu&=Ddg5R&>50n$Cgnb&hipCZeypDO3&$eQ zOYd?Y%POpvd(3iie+O^aKsc)$KM6*nmT&mn*w2MemB!@DGtY5NM}bki4jWAl++-*# z4f9TMk;i|dyji-eh}Cjx+k6nqN>%~0{lL0`j?@l%VuL#xmPGdbAa-eqbMX%Y0Wfj6dE?`v z;(gCrfBp@mK{*)ehsKxiK>hmiK?#ZgGxVw82G}>lJQ_NO;9$7Askngb6NKqR=vOGB zAr}MJe0u5$_Io090m>3zF}De18|MEj`NLfLe>Z=azmDUNlCoap59vo;i9W<79?SB< z(q&Qq&8H13i}6U7&=b7X;~&lG!>1+qY`(KF2_9qu%DK%FD3IBMv}I{%L;TTAZ5aHk z!a>IT$I}iY*Svk0=nz#XJFtq{u;nanSFWzqhB4Vt7m=GP!*`D1yCYfm6%6y58@vnG z&ra3eXCY10bS+$=n-hjx|hwK zGHd3P=`&`z)hdsfpX^>Xea6F&J@~|ohuvxoGSb}39(-cTV^h96_fd};Fic~p@!qT{ zg>xTzcuJw6u0uwqyZCt8>>ZTLM(o|aST9ntD|PTYEBwt90qyvj+dBrpgu3Xd~S z^Nqte!ZF zFwBE+HNl9|**LFRaR=)2isxnzd}=1hWB4!l$5MndCMP{-C^en+Qs1j3yew$y634sR zH!+pWbz{Qlcz5(oc+R$;N8vfsejbVEq4x8QcuupQN8mZxe#TU^#O?cbrq}nKWObX{ zH#*JjyJINWP2gK8qfHK!3@$DM9Rq0|b&ESt20E@YFrNvO3~?)~kPkZ6c+@&0P?|ZS z<%tzub&KZv&TzN6p{Ti2D{47h+?nQf=o?(>wuRdYN5cQXH8rwb*(fI3C7Bxgh-nxz zXS-pT@X}0e#J1U$UbD=t;{Oe9b(Pn=SS$Yiu;jwKUFdB14j0<~mP^HrX9>~vwc=76 zaM4FM?Yl;7m|f`sMbsKYt#X@MvJfI7e2IP6Tpq5#v5LOF71zm>S#!j1g*B7E3%4OU z;CKi}fmm3Z2Cva6vwqYN>NG1sio!_?OXf`U->CrPWmLh|2W^`=&Erf`J)`Vv%xDg0_%kM0 zzd(+(8SlaEOYo;BT0caV@seS>x_W_-KLMan3>Y5#qAvP%{y_^3;KCprPwv4@INa3e zG3AaHYfq|0ni^)g^p+OFOx^j6S!rD_ z>fo*JoN0X>3C1y5b`i=thAa@L^og4d>oD+zosOTZ!!Ma>1Og%~xC8}-hh0Ta8ZVZD z8}W;cjn>ck2$en)JAJLZx9U1^$D!nFFPb7>I~M+i?IE?`CDCx3HS_OvsNZH8?}%Ua z!63Ai7fml^Iy;(vlj)(+^s7uKi?ohS&%DTQD_i&3;QDV^_44@$_PmaAyf6vc1Kfv> zma*d4%?CS;$sXr3+Ojw70zl6M>l@53#u>_}gQZ2sf(-)+IvQWe2Q)r`DDW-DHg4YG z6U&kPq|4R&^$$I2EDH&-A$+l$Nay=yj_a?ij z9)PHZ$zlJ+8YElzW#D++H$&hl4K7|5{B0m7(w5+bOukkbt+LM>tvB>hF} zWi+|`AF?eV8LDkATDRT?SZp|g2}SnRFu=vl290M@g{gct_|PVO153}K7x1=@$^juu>}(-Wg6UXbF1~5UG4=@ zPU=2w8AHD${x3I>_+e3h6gnC5?1ATnK(SP1Bt$k!i!m&-$B>WPEpaS**p7OT0+TVS z?t4+}!?r$oe@|FY=d$PG4@7=~W5M&}J2cMi+D5U3m}~2~jvp=;;K|Bj1VAAQQDYZl^XcJjs+qdfdL9L!pe?! z)B9<;>HQ3U0WMLLz+(dfk%SIe%<(R~do4HhJQV3?j0_j?#}z>fOLoB#RO3Mh|2`u+v`##-Net}wB0CH?Xw6oH*4=8Cc#bXjUlbOVK zb7-HtlD7!qO7 ztMFb{z(u>`?|&7mJa`IJ-(r<1sG^pHet~$WbuMb6_@^&Ge+n@GTU~8ei|Y4eR{H?U z<<`y|QNEJpd0}uvwY5rSz0IsP34^sC&30Ah#_3>R-p;3SJHXR1o1q)dvcZa-CWyWth63&!QwpU z7UkCS_4E(x@N|)QUq_8N$GSu$qz~!kP1n!E(ZKIdO#D)1w-ViDQL0|{g3!%+Y~x$ z2htqoGy%^MmiFK9>hqX^KwPLuv}I#CJeZp6)*S4-)j#g5$fB3W^*vltDY*nUZ^8yy z4iqsaZ`79E9xWhEjwmp}I=mVM;7CqFbs8Wuz?q)#EN!RwV&Pdrz|;5u_vKcDv?>?y z{R!}SVIHx|BgrW=SsQI#rghaM;U`{0FZ{-9>GvRX0FHC>YE+nPvHaU+9eG5$ioXVU z*5zLjyxXt@j5k@p+hlz+TQX|YRm>nShTS^GN#Y2uu2;8_-l=bb-okRzee<(}=T~B| z$dc~cPnh)sJ8P!4?5Cp3X6t**f{uIv<0OS%1NATq3<4~AaVJuxTR6=+59`&q#e9B{ zJRRr8<&$hpKLy#spu$sC4?$lrV-hNeH#5Tz6ZjC~E!NhhS7Ctu8{S6c<)Z)-1a1o( z0w}q_5XJU;C@iOx=K?>GE;?5}nlhT3u(W3$?DRdn7B-|G& z`0WEx8o{ab1ns(XWl=g78hGb(VD?^X=Sd(J;7IZPkUkjQzvI@=FO(K{AGwUzw$M6G z5SF^lTGX*$*vJ(m2cV&xb8v);A~(%`|7WDb#=XtD!_Iv{G&#{Z6Qo0F`lwHJ$_D4y z4GNh@gG<>kMDp%_huPu6*}_Q-Ys?Qs$M2&K3gv}9gaMkm#PVGs_{Hf5zg)}q{QV6) zlOLBlCBHn38j>G>0OkrMbAv);{&uUZ|IuR9=h7wWC)@QW+4X5dLf4=c@M~Qv%fF5C zD7phb>Y?Sgq9S|znq4C?Vwh9O&fUn=_I9~WW0hSl)XQSR@g2LlUFeGpA2nkCLxh#-c(iw3MaP?1)1o*eY~Xux{Rt{8PJJnZlr zC|`UWUi)uRHgF_~{{JM8xejxlz@8)#hk>7-F8uT)u!dwo+g~U934eXN&E{rnaebp% zin#WI?*XYfmAd~HFuqpYI^apj3A8b9SLC0YrW z_Fzgh$(US2>0t!~iZ9ZxOFdr%i;*YftU%F5tamIp1P(GLBl;k1F@wtIUx(t0Qis5M z7e!XeB3)l4idTO<-K!*>4ZnE0SN+ASx$;$U$$%KhhG-*79SiQ~tCuLaiPxnM)E1>H zp<9_{TUJUQ@xh4_#65H#-dX-k!8LdN7}PJsa6{$51#C=7i2F*c$MAajIOK!S!m;}* z3R;V@kV~EdZ%MhB3SLmLqYEy0=-YG&Z$L#d2c2H9`7smKZbvn8<5U14t6hs~p-WIc zdjC7Zm)Y+Iz^ar|gm6E|7Eylg9tB7nK~ei2yVA%)>V;DF=p7YS5+3mAyhw*C2$ z8SE6sq|_?9mR-%sfcHaK9~a5FgN4Rwm>>54zbyLu2uN6d4H4rX{3;RB0yx;);}Ptx zL;oQcY;F|0OS<~2#RuUlU_0B3(m9(ckR{wu!}|M`5ubIM2wft-!kR8}p@hq<%fH0} zBKlbQ3cb2A#2g(9?xkJfMClGb0DSjpQ5ZIBWjMdW`j>d5A!Gvq zG+?d%GSO3R1@Vj6rU;Pcg}b;G4;ZtX=xb(>qvLI1ju-q<^gU6;`e0EQ!HZZ`7@WI> z`{r2iT@cyeVi7`uIGRWV`r51%1hCk@JN(wo(|@oQ5TendQ()bkC;Pcd6bV`Tuoggr zGXvPBrOp#(?0|J!ah+&t7~x?)9ot`gRaPENcWBfl7$0nnk^u_jIeoGB-aQ|-LU(V;BK>+|H9HfBtvj)DYv;G6b7xBMuk{=o&8xy*Ci#Fe0 zkst$Jg6zg-s2RN3YzV-K0sy>gZp;;i3SO=Lb z>m{)sF@<_XtoO8CFKV*yVZD*zde_K$t5J6OZuA$r6>nnT86@Ao&i5zyelO8}^b#@3 z|77l9^cGsf++8x4{VuwIjZOyr|W z;j0^bpm6?Jmb02)qP$|kqRje+(2|%FZF4Lr&-T;lQTPQ$t=w7b(9eGxeyj7!zG@M^)ki#S#*+kRv4&G+m#Erb(-f>uJ- zT{810JMBzJPsq~jOc|?$RFlsQFU1zsg!ozh;ZjDX5GD$wbxp3wSvXP*rw#rPaRb#M z*c{RopjVFDWYHGKmT6r)QA*-HqDEMINU>{y@2)TnPA*$tT)K67o9SP zkP}KoZ`QwLodVXGOW1xEZ|~+9Sk5Z}%7k2$V?C1YQ9UxO(l77ntk9h^@T$T(+6WzF zzoFfmjh8fLJAO_khyQ?0-0u-8O2V6bz{`aH781ZExTC*_2t%%AMH6|}wrC>Xs*WZM zD-cZ-SZ|92>>b)SU_FFwYO=nHMHgnh!7k^Y?6?db>W>`vLEV;y+nBIH{g7?uvUpU5_TgKDy*Y+PUDL6L1J!nc3t+-c#V!VAT=Gi=jtvP$e% z%f!4-2pA+tSdk{mN3QkQaLN4NL1tZ9NNnymW6z%EX8FAmP>VgZG`U4i}p-3j(Lnr-;MnvZApmuL4E zoi$xZNPi;gHKdDrLDsti^}_PD0r_a-#C+s`Tf)E8ZqGtjR1GtbEmcDWdJv+u#CloQ z3$or#D1bo$tSNTYH|(m>q5D|1KV@0SxzJ`H4Oqr1`jSwci=KjQijwEQfdw+qgUDro zX(i%g!pY*a1BzO(N<{02(0-F&;R#}`Sm?WLpJ`K4I!8J!MWN8VCRI;%SZ{jx11;Fn^6QhJt*m0f@kte zGDt}JMpfWG`;)g{*Zs0V_+$a;6P#TSqrV^3a|?+f{UBHz!#duyT0y`Q<$nEMH4 zhlC@}pD?h~j2oZqSTQ$82#2`50lk{L=`1W?!LW84Jc;~^iEd05U_YVn_dv$W5y)P& z1S9oKKI!q_@XcqrIpEhE9v%2L>!yEDq~LDC(@;@N=)Y{1M{KgF3N3?Aq<39v<)7Ri zQ5y?bICj+@bXCRj)Kaugd^cmBiD}+Uq3r6cz1Z$T=6e~h!8Z1sYX`=`+=T=Q6XtMa z=}pl{o%K)gzVH!2LorKhILI2<$%L(CLQ8&sC}%8Eb8~(`$d8@a4+Z!yHp;nOllAf2 zQgys>08~cr#c|)%K-lc~OhXzJ+&iKsHUdz;{Qw%ZKj=jkh^mae$Z2>1^k@0s$nsLQ zA3+6dAy_{|R*8!Co2U}H526jf5yW_Fo=}`{q>ov%(F*$d8mcZQhA7C-+YLnL?=#py z26aQ^dmU?}toaEVTmGjo*w%QvZq&=ao^|UX%eFpFl=VJfz4uYi)^lP$4OmlS3Kxs>P&c&7*b-a6}mgY@9M1beT_)ME_?Vm#)^{xB7s zWv`f{O>|?2Da~r`hld%3Gf)JuV*9OUbcN19Ng*~KmPm)u`u-=K+{}cYXQF38Te;~= z=uhk?6g#xgNdX9mLp&_^g#=JEb35645(hA@Q4RoYKSSpkdMaT3bo*{{=OPM>Iq+X# zF2K`dE!!$*VhQ2?GGTtW1xts4eC=F8N#`@b>xUE)|KO^p!9isX$qrHf>o=glzd%gT zzv0yg|9wx^{|I%K2W9<5tX~|iABk=}i24m5hW*6rQE&N5R1i&qmwt;{==@ezzWJ2O zPE;0OW5p1M`p4cs2D<_O0@E0CBes!o;*yQQC+LV?;5m=amR3hJka(0}MZk(ZZ-yT` zL^Xu*ck?}8Z9r)v8e28te_JEA?d}{==2$piWFyBjxr}Ii{yzsHx;}flE!l0>Qn)da zP>uzg?84xb#UiXm2JqiB{rec*oMvzUKIw&~(w4Oo4n)XX-jou5?_e~-&MgJ-2);Dv zErjXSo+{`y4h=0oEXHutP(0JbqyeQAdMapX*AFA-LqW1_4L`L?WYvpV)k4*VGV2Xw z0jy1Pk@XR>K!@XaW^1K`r~iveqz^&GR>o?6PgPU>>!ii zZo}MQl~GxXxE3TY^WM-E!{Dl3mJp85Z2%dqU!zQTmt_FO5L63YdNrc7QGLQ_p7oSy zOOyy*iowUe_xE1`;35$~1b9nCz!0AZ7vLYhz0`8?FCYIV@?+tbfgSs+*Wc(ODEfqhLd|DcQ@_kx5 zemp*HD1HijS_Xa|4)0G#lv=cjrB?oW?6i(JG`6gdP1k)-X84{R>N2bZ_p0B@jfKI|N&9>$AFE_I!54tH`5Oj8<= zVZCG~KMY#lN86bw7To1z7`iwNq28vA>;=7`nQP6_h4TX(KKG z8KGB?C}?Q2@~N&=y3BgiOVP{|F0+E0Me?=4Y6p4+oE4hc%9k#+p8aQQYO7hP6S{*s zFfuGqIgn5yM^}$%<{EWvU`2`+D92zAYU&A1U9Fod0)bSbHC^+6kUS+_-LIL*t<%*e z);8Bby=1u5HEJCyC_A)3S&FU*tmf%TNK;T2I9WMZZPL|%5>ncrR@Vg9I0BU^>Jh+@ zq^?B^sVXVt1QrA31JzY#2<)e}0TA6c%Bj``R;8$G5T&cr&AoxLR4~X;bBBNNWvj9u zs)kzD)osAKhB{`uitXbc>q-mJH%eC;)HTW`&?H5{%Q9VUW+80q6(iu!&acn1Q%5)Tg(kgz-&}ob+yK&Sb=hou~Sn@ z)P_JcfZRf8Qq@&1GoYI#fhxcdKtD)W?0zU1oxGPv=F!y>K4M<>z0J_`%}K_nDPum0Bam6x7i&3aO1Qb-Q8#2jDg#Wy2Lz zts-u>D2=*OLPP~t3j=Y7TQk7+q$S|MdZLp&VUm4SPp}<20p4wSZBV z-%hb3j*F&7qdEVUXF}tr1@V)GZm~UvN$fw44rul#Tb$nrJnbG=_jz0uvZh6AEfj z+z?^(3n8o?tf_U%N~j?YaGY`gDs!BU5=toqIS-mqS5_#*ju`+32{cfGqG^IT1!HBX zRmgA#Dh6sQVkRdkMx!W!1a+fYWm2b()0KAUG;B--%Tbt0z^)twstyNKLZG0T34RjP zg9~iBAL+h8~A_lSiwxKxHZ<2&x(p0Z9C4|KgF=P=%Vg8SL*; z_fzgCKoi+x1@^1da$W7vOxnJ2w1Z%TcAYS+7!2zOTcRt+Amvb1nz{`(662x7XPaw5 z8g^}V;Bl=(?EsuZ)oM*Vz*Y-z^I!^~Pf*)j>w?Cp1lt^SDa}+zD=@-c>ROPeBn5i& z8H^2bM6;2Gap?Y6zWEB&Czx1M*HAg>W{6f#*{zw|!JG<=^lISJsjSt_-LN7s%+!~w zNkEsmM?9^Dbnl^tNRs+8gH}xt3swi#?gX(5c?$xgu&sMFwE>`MfeJ{{QGv$_`ZH<; zC;>})5QfieqtVNAnV*mzx#VI0>*tJs9))O81|=%FT1$)&cduyh;DX0WTe)urs! z)%6gtLAoykzQj6B34xnwNmn>PAQg|`vkq7b^7I5<4G9%W$CYQNS-9pm?xLoE*=xu0@XPl`7!faqmX=)u=1B^oOU_Al$HegZO z-!;-@0FO-sag+B!agwZH7<`mWq5rsr7Qb%zw^tm_!tQJR#(fiHsBA|9};O|h08|1 zCBMQ}R#A46Y%2<~eoB#Y@oQ0V^2d}Za5J=_;4AYmynn&FPy}mXHFk~mzmh$w_RfQv zdD4~gu~0>zEVSJubsP8ZC&c?iA;q!8`uDKK345C}f{3Ui$RlOhjS-K@?6 z*1-*_129NPXqA9iC>eM}!YoaIngZ0L0I7V!7xNTcKt`9j37nHcvj9s9ZUC)U0Hs+_ zPK6R-e88EihCt0?4BRvrQB% z4?2Z~%0%;7E2MS0asO|A^$cKQ1ku%Yu{%G;L|?O)A#$X_qskV&AIP=?_uq=)?RDvwe~Q+5@R&7A%whx zPAL>tRs02UX;oyQ1peD7EXLWO(ihQf$(pVjT?I0GJZvq%W=3@}W5NV4n##~hq2Z=X z+p8jPdPSFp5++6;p{e5UGauR&4edetgXOYl>3a2lVDh2D6(dhuM3vFfk0pIVuSf|Y z$r-eUG0l6$q-ZH-$QdnF+Nw7UfP5GK1p4P!meLlgrxg|lXr7iblx&3chjTUgV9*sY zOCyh2FWCD_HBe0J?5nx}*Z8<9^m?GOhD1xzgUh1H9~S-+$xFFlDCO_gXhK2fKO^fS zqX(GC3$f@e<_Y48$m+_{#2 zJwhuGS%+VXU`1UCIIo!2S0XzjpF&Kim;Y%cjtdB$|E{Jh@#UzgxQw`>_`tGKblBo( zK6RDb^ng~?D!w)#Zb5D zNo$W0$;S#eBU5E+#+O!w*3m(vn4U}5m7;-`OJw(uifU)p$tV`pw@MD=!}~ATaC$+i z>h1gurP#19jz~`En#bf1>(Ki-a=jbU12Xd%FIHn9gAIF&h9 zj?aiOX+9(-MUoe#xOi|A^yso5X*$r9YKa7CG{TI*JW<8+b%4|&fYl%tw3?*Jiu2On z6chGcXg#x#IBNb)DX-xo0)~I-tML^GsYQs^pg%oKSV{TG_+J6*YOJBJ7;E`U;95Va z^8CQ4-4hiLuxCMXs*7Oh6AxxqOi6a~{2UO;7lA#1aFrsGaw`4MbQS~N(1_$U#kGuY z=pML1n&3He1@s7QLv^8aH;l%Ty$y+q4l|LJ)=-fRFst$E>s9%k}0bFxTKg2&x3 z93aV8U5$k>c! zi*>g|j1XFA-oz@Z$;U~D^9qZexml#Wl)<(MUmy&Gqz=i@e+4ccl`J@n!3IIW0V?lp zh!KtN=GjKsZV)oO%7e;8TVO7dBSo%C+@JCHXvxM`o2*)V^T(Wpm^H)85M5Fwytf<_ zA6|x?7}`*}AsXU%tM_Ds=A-8DPrM`N6SfK!m-5=0{|VpWWRe9U)>pD16b)^LfpMrJ z)x*+we(sMy07O40wbKXD0I--Y7F|$MInRKJ{ojVm)xgAwgI5qG0N_;jnp(iIf)*|i zUtk+7mc!ZWfnoz{7htlV8 z5hV-IDQ0L-z!M1Mu&)6xW7bSVBrWMwgRdKhYXCUF5f8zp6E9&i$#@jTj3U84-*LV;%l`h77l$(uN zr@YvaHTbvy{ZROohzJvL`CzsK305|aN<3_MezqotlvRb6qu6-XyjgY%-rbFcV*El& zLYh~jVi5>9E!s-ab2zUpjsj84QCxy;K&erLb8sZwqU>@FMt0b&1#5641sS{MSy)|_ zKc4`O=^#dlP&O3i9i1%b4Ti9~8DN)`4G{?l3-GGJ7TB}}0sG3RMT{|uq$>O1X4g0z zhy}_AO(D^8OuGEI!+d1=g{}_a=v;t`!^|zS8M>Sa_!7blMvRlvJ+eaMuTaw<6UX?< zyxS$eoyZq8 zs?3KRFRIf*vPe&fXynB}64NM59(gDK!_s9Uw1RWE!B%TrB>Q)v$r8N%RWO1;6*oIW zEJ^Z*8YbvQV2{agz%G|b4g`{9?X)b@W{5`FK#cNY+z7*MzDwYOX=^mpuF|D@4553h z_ggFmxfFy#7F%s5C?qmQxR=WvAd%U^+r9wK9YdB(6m{ z1j;{|Sd=~&+92;CRvs-Anjv7cQZDZfyoki7e29|KC3guUbDj7W`++t!Pb=uotl6Zq z4Lfl!)#2$dyIN+b1apaD4i`N2GFqRLQ+`3X6hL7P$>a@HjCWj=hzDuoK}J!Kn~zW7 z9fq`oTnL{6$R)-Fa*1ORPui(`J(!BaIt3^_gfUu9K6-qd@0LEtkds^&R3@CgU~T~j zaYEn^!+(n?wg5;mP({s2RwN~eWT2Prvdv5(SK^4-03AZ>5l;$Em%>se(1x4u&;;T8 zNVPm%3oA^dX>#@~(=v0)l;_jW7rd>;w3*NhYzq4_^Ff%w!2J=uHs+p{?8Vbo>Am$s zO#sW>hea)R)`w>VFY~p9@>VJ|4PxIGHc@LbB{9hmGt$;_e4Hci9G1fY^4!vYMHNFk z&Hb^Jxmjo-@;$)kkSYrkSu~MBMS{%Ei~DJs++3aS1wLU6!sPD*>j%s6^A5eC==6btyxsQWkDQKly6CH^CGbF4-1QA|DOH7-4#Y z<4}|5Xz4OGQX-m?1zk)XXQ!N%N^z`$rAaYf@04a&jg{BFGwT0rJ@I%Z> z{*CbwMdgQ>oLNIKBEA7nJ;31NX_Lu`pBJ=MWZIipYJ4|K2M}L}$R`?K z!`KMzCf`A&FGoW!D4rVGt=5KA686j|zO@;N2F;@pY_}dKA*x^+gw{qW+vPn4%0QR_ zt4K`Xl6?+lvaFU71u`m8xyxk8Q`5)R-_rR^Y0yoQ%W7~F^MZcza!ON`(7J#@2dUMy zK){qE+5e=<_$t$xn@XRFY|3AW?eFR9ovcx&ZG;2j>lGt@O_LNbTe=f#jfNzsqFA2s zt+aHw{F8=jcuFnFTqMFz1RG77&uD!ip9L>#Wwf!fCH_k3N@fp)sFht!3ZZy^jJdR~ z0E32@G0hQRE|wn=gG2M6(EG4%6+scXK+VfyO!E>pdH!}OUF_YJSoKs`$+{JE1(+jQL9=~@g3DI)m?=^=BULF$s?mx{6B-9|Jp z+CEedFY3 zRYed&vMZRxv9jb9^&&)*7El~0E*fgyQya6A_W1zwF5@fz*-}<0v_Qw*U^1A3C>AX< zKw3eryN2#^-AMq1-e3^o4~4n;C;_U@3@N8ku~oySdI7*_fVH z5nG)@XamcJUciK#6p|-I8n-W4PS1dxmCQe13cV+Oc&YTgs?s;2A#| zapYwLG@*z5_Gq%8n`p}71o00rY2x-=q?Jw;XpWY=dzk!S=8x?GqP1#;o|^h+;(|Ga zB`WIokKj=VV@wdKf@N675MsW?j81dS_~ug9cZ4*mLmEgj7+}D*{H^g%ONnzXCiH_i zfF7)+;oEB26A?xQ=B2=5j#tUteGffBbE39oUd7*tf0}&aRQbH3rT7U!(#x149MH<5 z!4{VJRpkpiM2JC|xgjFEnGOj+t@n$(5G`fd&&O(nRcnYDi|&Nxmu{*IZ6YC>&!A>W z986SL8DX=AhF=V>iLiDL{7j4=#;3~oXe_4|1YZ370vHx-60*OJ63q5m&{h?Z2`ua* zXAO0XrHZkYq+FtAFNxJ(!4<*r(VSe%8p_J}`F-No6<5Y*^ygHsj&S32E3-ww zIzDI&D{eT&yqqlooKxO4uO_6+D^3sJtaF&2svt*fz+#RT=Q@igc&XU2m@~V-z&G}P z)rG@z54tsDL}@t6+5kTy?8E&|RmJS{nQshpn~=1|4etBPz)3g->rVViWpI)y$zDr(ZWO ze);5B@{Dp{n_GKn_q_Jy>3ur~#gbxQur!vxEmr?J zI}vtq%Y{yA(Oaa2lW+2C;spnA2m?1=EcxDhsXlzmuFs8ssAK&rSQES3O{Ts4YbK}8 zCr3DaKJ!8Gd|LXLhCWWMW4V9$AC+JJbP}(hrk>%|V=UG9f{L(SJy;)~7(qwAU(TI2 z|0mbtYrJP-8pg(33jv1q0obs^W7Kc=Wz~u z(Z7FkOGlzhcuD-g#K;1EMip@Xihc_d zBYWt#2bZwuwaeqA`yvbZ3ha}jhl3pbEJ z0NBU((0ysO7-*MaDD?_x&g>`g0MNen8t0`piXy^$WYwhjIh;`cA_<+&3pg)&j;+B@ zcFn)2cV1;8#2V)UF21TvT+oB%{8x-&2Tyn@YlEY+wk>Y{+x^j5TgMK5@I0*}UN&pT zJwN)vccQc2f904dk8tHrP4aIuX;t`;IE*ifd=&X)@PNVB7a-HabKj1)w{9vP6`sqD zIdl6IwZ2h|mP3?==e`$h-CV>0yBx0nR(S5fa?8{Dc44&jEkY@8gf`)5ATqTGRsAeV z;q3@Y5x?kj@!b^^#-XyQSjB=`$^J=rZb$1Ds_Y=cmhjx+Tud~uy!D;J*0+m7n?fj) z*0!FJmryYZ0bF0mnmMx|o{QDD;>T$F4^+%*t?O|)cZ;m4ijP2$;&b~RLbQ!#CI1Pi zagwaAuAg62761CjHN&=r8*hWM#+HHT@aI?Twcfp)ql5cR5S`C1Ok7Zqh$O06_sz6x zb(n<+>#GJAhnI$RJT5U)qWCMJ+RI#|)ar^yhv)Y1$KfLd`J7x`8Nvv}!f7vpV(a~< z);A&5+M3!8BOyb-);Dww&wTmG7PQVk0F$X3Y94(ivmLrFJD3-mW%VKk(BSc`B11>6 zrGfWpjGrNqbYmf=O#kFgDJZ$aKD2Hu3T=(Ak)L^Oc<#cQ+O_eWX&4F(G}){NU{m4B zz&+5-|1K${RUV_Pgtzqz|BNhSRx@}?4^^|rH#>Y-rrDkG4dJ;PTHk|<*3)(e9}EM- zhjE!y>pMlEouRc@a*_G8rPa;y&Cl=VpRAA1&_|M4jI<%D=@*8}aMbHcD#GGfo$jZv z+VHBbuBoYgiQdwoKD{zsj)G6?b~G^sG_T~Uxv!na$Yjor=NfZ=As~FJHFT}5t@KyF z^mi%!eU?%Dxv!F!$xLKpd@FT+%5oQ1T$LDj6V8gk1LuY3e$?uUzzf0o7h|JTfu-XQYf6JbYeF^0ZSVv8aeP#GIt6{gH!*|GFwMzJzAY z1G=8*Q>RKsC(2aGsKI5bL3N?0hz1PG7fn*hUSg2ihA16GVC z`u}Xi;QoJ9{P@+X#N=`cA%;Nt7DE1m`#(5xaQ|Q1Vo2P7uhRK}xG$)IScT(mG_d%f zum}Kk0ARk@fbju!brXgT1K%4q~BMqzi zw*$0+v+&%_sD|j^{(q$l!fVj*7T>U;>^H*IKh>z06QFCPhq;0_eb>p5?zf?=DpB?b zX-07?Nb{dCP@p;e-cdQY?2&-rmA(Qa_cLnXy^8IDV{TVnh~MMK3+`;7LHi6LHO z3=!@RQWs2Qyh|?;8AH6tuz_=lF+Ds)3}XK@sIj$daLww;1n8g8T4VXw0)P z6GS8V0@_P#jYe3E8r)w1+#C}Q0dz}1$I1-fSBdWvldsVFdHG6>;psW8G z-%b^uV(d|iDe6AGFe0($J_^L0rAsxx6yL5ZClQwh&EWAjwr(s8eMDe`IX4R&4rqM_ z8-Peg>teK}epjF>-)Aun>u%85>^plQDx-5P=w2V5iz6;DfzZqNRj`4gt?zMR5SBz96FXI;Nv+Hm6328n05f5Ap^?BZ+;!*6TXzS~R@&08s%+et% z70N-hpenSa^G-#%Re@?RUUlQRbF;L&>-u*Z!2ZyB(cXgF(tWewQZM(o#so%kO%V6Uec zHNIa1c7iv-_M_4|8?ZxyO7?5Ovf%CCG+@uknil&vV8?!z0sCkay{yFqS&Qs{XTa8Y zBMi{Zx9~3v*da8(uK|lG_HP=nl^Jtl{|0QuXBn`MSJ3bOqyanpzh%GPLq88uMAkk+5gCZ?eTxs zfGzxw7_bHZ#|_xx|KEQ7zsr6Nob1u_aw1wB^79-)E4wvy^{$a(0IWgy8>iuLCU^H=5OP=n( zi_ND-po+GB++}ofVA+^jE}u%dhc8wAI@l=Oa2){**4J>fkpe8Eo-+u)US0cwC8lEe zFT03OVa; zzhx25NxZMS_a+M=IzBoV;RbJP*sB?Qms@=Sz9$IZCnTvigKy6D4Og#i-P5HqIpl~j zwL5e;S0z=aulcxv4l^?iaQ!l~Q=W5uBI{Ejo@VoVIKTfTzL_A3xqHoDr{j!Z>fcv_ zwWS;gbmd>OC%PSCT)m-gOu*HLykPzK3fP#T{Oh^A3)p^6ku+D^`D?d*Xa7iU5DPI* zvUqM;ts1ZYOY)+F>lYtHy`QIEkL7UnKf!Wm6u&-66>G@V-IPV|4bK`_-^@X8EPuPZ z#FE3eUH~#`STqbn?-#w|lR1Ak^m6WZ7QI8B@#q!vDqaR&4-W8qG{0H=X5-;QksdK! zT)2Q^O)VsThdQj=i|o+K##LN?GKN>X=JHxyv8D6i^Xe{llcGAVSC_=peaT(GAmF4v zy$mqWxdX$_T5HuIXe#0ky+)m$`qjw#_U?e9_#sTspnu(6I6}ukr`&>8bwIpsr=Mxw zuJhX^iaICy^45@@n$4NisZ2w^d_xV@-QyO*EWsgZw*^2sD8#8~nY^>Ur@Z0DYrzkw zjI4L>0YmCLLRaQ|y1o1b9OnZ|zFyjWE2c!ejX27X5B>7w~I`jkyk<+6#>y6sXzHxq`DZm6Cz$TH61T zIfu$0c4)L#Bw1+nrylBvy>oX7r+^O3;f8O4(k$F99DFB=Z+p$~-!LZUs~x^>Cp-3D z@2PVNUsGQYO$^R|Ne`U`$feQYhDUfXdi>EIpvS#DM3%bhuVg8aB+1PI4QWdJLJ7B6 zf>)LaC0t8F1{0r6i4&(7C9cV24JdKX)1DGn!2{~~OHX-9Jjbu6#8h&$9|*sH1|8^p zAdk}g5YU5z_htei<(6hhq2^1J=vHuHc9sm^&Ox+4e^9_&w!xEOY|hs#8Gg9Vli@Ux z;RKN(J2oU|I_bv>5RXLRjsOlpG~v-QCjM-2bJCpvWFsan$QIrs{b($Gqqrw|!pqD# z+zC&tLpu8dJ~t&}{Ov%OyyASvvPp8BC5+xKri7@yDz}h>}J6 z!kZA|P{@d&&m$O5;6oapY57u-W6`KzlCxt+b7ztcjpX{R7PlRU8Gug*i$aop&!RyY zC+qx&-|48;BdrKx#)>@czx*)9lAaO+g~Ls^yP-c*P2q;CK_{tp!00ab2#QIm7aARC zb)EZbn<4+!7)g2$KQ6uzK$Xb~;ifWN-4f+oD@3U-hN+&j``HQ+ewFEZMVXN35Ucc;@{#Bjm50KD*ahCqHW%TzS z{%rKOA{qMoFL&)t|2ZD@(>y`a^#8L@^}>=Wp#LII|FhEcpC|gO_WjY{8VffZvk(1) z53;w63B^F}(SR#-*=Z;Gn;zZ|{eLI=r_%J_?!Ixct(ciEBsoy*(Een=oV0c;J z4T*E1d)-)f?69;Ht{dqNg|P!^a9*G&?4Al;+t}*XUM4iu4G|j-JViM*2N~o?Y%u@e zJl0OB>G7?u7Q;u8j`kLlSGo7^)o+f;s%e4;q2w|%hNRfT4KEshqD7vyhd|GpI`Mj* z6zO>tm)6S*H{7RJlwb?L?(Hw9dlzmnc{cr@MCLx{l@ovPghm@VvMJlhNP*VOBxP-G8YU+|pkhV%O0=)Z1NKV%+~x zzxVOM8G9$Ay3j8wrYjvm``?GEja_belYUdKul;UwJ^A$-tc#w=@h5)Uf1c4-K{f5o zId+3im;_4n6((SSG1y(5FL6iMNxY^QZcg_K@eA9_c6oBG^~#^Ooar-`kX`5Uo=t@6 zE|0N@lrwZ*vnrF+Qr%7ZD8;N_DO~(vrE)$GTvKEK5Ao2qh0AuGM{Q zvPb9^28@RK{C}+DzJkb>&g)I2knEOPg6FIsD4~gjEN6*--ES?AVYxGB^-lNX-}MW9`StwtsGi`b3(3)b|7Y_P3$_E( zCwo6PH@m#>uBc=kyd&L(EE`>G9*U{mpx%{8Mc_~8v5R|*neMaMUf9gj&tRzV9^;&O zdok3lM_BTG?sQ=HcSF|wIH!Stq4FnrJW2y=n!UwcMW0iz@|v}=g7b{ay?B!7M1HP9 ze!e+abz28Vx;2I@jJ0+Ir4l}#cahCzjo3X?h1f4gz z6a72uhWlL00<%0Sh$RYEw)e==1ADSw=MHlKv(@X*FHUxSVWMmW-69rl(86n7?VRZO z6sayXT<1cE8)hmw(R04#eA%t)oV*}Ne%zAl>d3hyNcw|MnoQF2AnC_GX#z>Bf~1># z(pZvS3X-lOi8YfgAfy7YOD_eq}$`c|ea$%2(W+17csztwaAAhy4%`#SR4*EC7N zv_IF>RX<^za^tuaUgIlLK;Qkxd$Z2el&A;{&jF_UU=?E@oBzK zx_0aElDf^Rb0JMjlra7I=+*kSyTmjhn-RWcJVq>ZEC+2|6JAgeJ8fYIYvdMP4(^_Q z2K1VY2sh}i%2;w##~->(J-&&ueAuPlx@IzgfT6iYfsCpKFe@r?ALnvNCf3kPcRFXc zs%bvQ_Dx7bVQ<5-82E|^hWmFYfD3VsXkygBG9iZ{f0wJaui;zecM;}=c>hW8#O72d z`xLk#&l^*N@SRZ=~`xq-uA@wEe-%}v3d_XWcMzDX{l5zuQq zx7?~*f6`6*PdQDtuFN)>`X^G@(3Etel{SvOIHmcY;x$4IHSmo{ws34 zZDf%M#E8zxHal2-??L3gm$y!oi_%{%g&DJAo(j29Uz6?bJ?)x-=@uaRf!=%FeHFms zZGd)ew5d`|L1Zq<#yGuw*41hg#d^<{szaN+7luyIa330b5te zu+hgjABU}-@uD=HH`eT~giC-r@C97gPuo4Fm$1j9FeA=={jtQTY?9PO^5oxqQ7H7c zT5fk2o(&$*7jFKaH9I}eI%Bi-C|?-%f64KXOq!iOzuxYb{CX@=T}X{*QKP$w@>Eph zmOi8h6cQIR&l7cajN%3rcC~4x1+#VjeY9yl)!-6& z=Y-yQ^9HHPb5$ic3X5yQz1Ub(QN;fxswnq3``I<|D2#A+aeALnnjWyyPpM73o(TDg z5{waTTBq7a2LMN#URJ|s(vz*d9d-SpP3wJ|no-!2vGizHW10HVlHw>3;&1jqvFWMd2T#_}B*(i(gYn zO{HGbX((lx4SA96-)Zv(iq6GGP&}F|<|&BejyOv&F9^)Is~wAs=%I~+aSjgkF>C{L%8AF{!5X4*|FQcNUnw(&fts5E<|6-J&tEjsV9?K zT|c8JFWfLx+B`9;*!t>y<(c_>P2$QDUCVZQWc`@NEmH@!pPiMXDemhP7By8Qn3zC+ zZE~lcWWrQ7h?*Nt4ut7SP5O&I>|mzpCzcD*aqY)WnjK{8t85E?uukGRR3?4#JyA)qYW2P%U-G1QICOcOBovcDt@t^Hof{K_ff9wpwX!A7E2=>~2o)dVSf}!%s}t-@mUF@#izpzar+AG%<)!Xpl%-!l zecdR2B9zu#hSVf|A z@PoLh{FFIwg2of~!yU!WR=@}sG4>ds2+JaQ976qKw76BMVu)JGxk{(r8{v&TPE^T%H9q(-=+V z2VXRv@1D1JDdq*o#P`Db6Y7-eF4N$0rhX}pId*^7yX1$_cR7= z{GALS?fIA=@mt|A9*Y_LZ~Mm*9$)6MCVAYp;63kG2@+RRFb6}!t+HgRS!##GyQrNGfg`k|#7pzD2Cs*M9}xM)AE4F3`f zD~MbBJh;b%_{V@HVV3MW1u&7*f4W1idJozLKDq~gpkRPZHh=SyjW4*X)y*c-pwuVH z7E8=P-tTe`ouGLU>Uy1GG-potIexAjw0gUJl`mai2L)e$ps!f&6(&{jJMMPBovDI# zlf?Sf03ct~)j&p$Oc$Pi(AFOWkrE;~3*1vAfg8A@%{_9zJr}uM_wf+F2=JyOz}MIH zz#<7Zo(@VFKloD>Pub>rQ@dJQem={&taf4J8u zthrGotb2#D;}DRi#uAq!E6*!-e^Sv-oo{--DQP#gd1+NhmOGCOWblAxyERHlcG6tf~#fOdX@OVfB%LQtu3#((Crq! zfb>&5zA1Jb&ZA8Ah2Vg>^Q?u!QX1pnJF=yHt;I)!^;U{_2=sKsaksndHyY{F ze@?~e(c^xC)(adFjh`Z(Q{RUu-Y>@}UGi(rJj{1Wh~vYi>SxjgZyqg>8d%^-{Zl2=^O2VPp|3|#F;|fNXof-1!;PfoSG;R zbv7>J_t1vM?AV8ePDbyrYynu=2Dh)k(j62Cgtu*LmO$~~ajF(&1Y zuZcfq%@NOGJ>0Ys)NHb$Y!Ik3K3lJ9EzqFWVltCkx1`}Yi<%Kl%1ceFQ@q%4U+HmqD_PD)dz1ws0k(MCvcCR~$hc!<#eF zrpcCPn>+rG@CL`1j3wKx|1>DKxtqDJJKFSfftBn#>*(Hj$!R`Rzq7TYOFk|=aJI|6 z7L_FNA=-sO$r?)f`?WdYrgIS6-P`VgnWMb*r$VP+@l+ijSO(V(^KwM|Ce*w7O&AV1 zZ>Rh82=}X4xC+NegC{eT)*|yA#-b`x^eeIXE?3BJbe{B}p)18DcTXOLAv6dnBa#la zo5{DiLHyPra~K2^PY(jyO_XCFjOA>SqJKw5c-Zxt<|H-m9sG2;R zBuAU>_ZhEM#?(p`%IKL zlc88q;y@VtNIZOnDsV@l3hnpy}NXu zYDZITs)zA+RuMqC61-4n9MKz*z>yMYZEj7)1*KbyJ#w!)P000f`rEWWM%S*7;6d}q z18p*yMsanma9kQ|8|864D!{QU4Bn}b-NzoakR3;9rLjC<6w`LeR@v5nGblBSI_fPbGj>uE9F6srZ2UB}b5yX&WWw|O;frhcZ;oE^@y6+c5}9$D8s-k`O@2y>WJGy;dcJ4=u%URrx?~!} zqofZA;Znc!uU0P{NN89j%j<)J^mBx*A)QQ{Fr5C zeIk8TzrM%&JR9hLr>D6CeUlrf7UZr=5A;p0f~5AJ270=7MYPFmW{et%r@Ky7esh(E z8x?eSQQz|R!)SRSEy+mDbI1GCSClH}viNs&08f^Gj{~06<*H@RkKsPg0a~e^?AlC8 z*LR;1?~{_+)tUQfFDdF8-}qYgx5U z^q3_KAYS2>ME+^yoe^$$j^>h6@=f+CWHM|`xMsU$(>Y$1 ziP}Du!!}N@iq87@9D>H-+i%gRY2Ha;Z0)@06RIUclEVevi(gjvWRrv&O37UruVp-p zEKGD6*7k#f#*XVhAFEv%iw}IBD#-e`W3?X**hvgsfaJyI)FgZKN^96y zvZfc#!Drl@{%Bf-mf{1qCc3mgr1_E?cbB2_**@T{yWmasoXNAh9DH`Bb2XU6Ly~RW z=3BKZa1ESEi7eeTRUSSx7*;{&?5gi;`XsufGy$G8+pWLT+C4|@9^~6CRJ-p3kJ`=h z$@4&x;S+a%PPu^2D|=J!@t|CGEdJEWrOvSSbO4JxnzJ&W=TQ2EkSTn}xePis?r2z~ zCP`t$eAT~c&3|uJXA|QvHgu)GU>FHJ(o4hIS>3R#T7N500l6cgC@iQ%XtXRFr-{?2Tkw85{P}HNDUY z)Y~zxn9}RLFvIlS8XLeN908x0k({=xXl3f!EVa|$#2>>m{L$Wx`IpWgY_0pe7-i}< zCdhS<0H~2tY~l-M^@TG0A?S%!-~Q_y^AZ1FdcAR=PYm_VFyfgi*j55)D;WL%V@`Dk9w??wc@2-Bgl|}vM(gZMbOFt&8|l7V|3feTX)&#L3e}1ClY8r(=WpMS-f=(oNRPEFZo8^q2i22_@&t^8T(n*!WyIQ zFbI?}6=dHgC+E=i#c<6g%eG1w1b?4QA2F-L+X*u|k@jhEN5)KezXzTA%ZXXaYCj?P z_f`T@FpcoWmKle~;zRbf6uezMJC;Nivi6T~#gF==2{H&PV5OIT?u>-dV%dy`^Q6kGfvfqXb>dZfn();-3vIC-YGdrH#vfHfvO0^%@ z13SCZ{+qzn*&b*GqDV{XhR)>^zWi{NPuqVge}7Ou%MY`B`BOWUkMG1h$lv+=&iuAv zpM>xD7SxZ`zGSw+)#8MKzWP_GGGle#pEKe+>EjX7#Rw=oaMgv8Rk1__kvg?Uobjl6 zymY9vE$7(gXx!b0NaJDww7(?1zoUIsPW7`T6pp3ZRjO8n(egF5EniLanI9*7xiT&9 zBCFcBNq+kEpQf7Y4vN*Hm#6ly;U4HaL6%nbkyWmd#@l41;^5SJ%I)?u>7HiOreT=Q#^`3Fj3wdO0i zrg8nW&kyT2{aBUbkm0rZP5a>zyc$Y_arWjd#^*JF-@H^9N%kz_+3mS?Bb%MqH6NH? zi0i-WF{Jrv(yDky{4K~CFF*J76sVp>zMdt8)bl9ybRI81vI^Rt%weZA{GLCKPDG2~ zkK(`Ll$|cIsueJu}=K|wfbQPhHrV0DiTPMz7K)OSZ%>g zvHX=CucgNmLxWNBZQ*$4DVrF6M=IWvyGn1s00u^8JnTI_eEH*4ertI_Ui(wQxJ;hh zOU>EH>*lL;8_I>EGm4^3-Gh|nq_ihQXEM5PZtMbLPhN{$NL@o$N$<2CYu0852Zwt- zR<_bO`Gg(htY-5!M=>n%tv8u266#KZ%bvqdK zW}fW2Ls^Vv!K-cViE}qApwu{oqVA3x8Ea2bucjYE^(+4%f%odfz>nP3e3f@+*9j`^ z{a<6q{tv8LkXsZEG-=$`PMJQg+kS+*O38b*>w z??=4v-v_Girs zB-$SSw9%M4n-|abTK`_}POLi%Ci3e)<8=!wYVZcR==bs9J<6&o$q$9hg;mb@FmTs( zj4RrQ15&%lovHT#>TOT&mv)bW7a(O_lR|{alkY!>(WZdvTY?-Wojk7xPZ(gZ{>1lV zf6_|Eu@?AuzHc3OwdjEbQR4|!&etrFB`9l*{?vc$t`uH=lrdQ3{g6ve8J}?Bg18KBLGYR3_kSP zLyTy5*iBwHh4TvY<_%Q-4@q$?H-NxWalkYq||Kou=;%i50247-avobc8pvP(X z7Eg7I8=KOmQtv;sjY>O?@k5%b0}9?jAlY37EY05I%q<)W1so}GZk^@9G1Jh%nIv!` z0_RRqKFhAsXBMBEQp4qk41(t)t7>34R0V{9@f7SUSF`RIvE5$bJ?Yz7n;+(L4LU$# ztS0Gy@ix}Pe^|DbByT-%CyBJ>`8A1|(q_ho(s5tb+8U{wiTZ=$X(*e?cm0aA`n{K5 z^tSv?XB0{8OpJD{M8&Dyw4WoE$gfGnN`h*a*1d*+E{b+MpUIZSFQdrASy^_D{52&g znoGL&&P(Lc-E-WtzszbyKAPe~<$0hqFE^zabVAy1N@^0c%IKRkKFrjT8PZaBPEF$0 zoGvf@?{pd7$aFckFCZ1ml=bA)-$z|d_cJCvM`qb(KgN=@97s&*=erZ9_ z^$G6zU;KMrx6b&kU!<;Qxe58A{)=8{vnGCEgZN5p&~Sqm)7S4ty~~fEID4oxf`t(< z_~X%XBb<3(x*=R+_07UqUfuV_9Ra}p01RMm>B7;F-az>*ws8fWJ7dO5Kulp2T2Dz+ z(~Ovj9kbP9tp0{Vgo`=!0+R)+4t%;UKQR0D7YyF!BL!lz=W7Qr*p8U)2b=6$KlXQ# z!stmC_wvv!K>jg6C#bwU;*`Hv<=0cM?Aocc?#s`!^1-}5mgrrR7*TGkYc4Z^aYj+X z%8GfzbSupkS8rIXX61aqN+bO3S zKbR#oUU#prf8))n{|prPLQxf)*pm~3g7tGlUqg6LHHjLGn?crn@tlpFOv5&MW`dPG z*BfaGy?(*?XdZ4b_uQHX%*UG^%cWNc3PwH)ezy!QN5AQnrMJVl83Zzh@2GE#V?l$O~A5<{^CSU)veAW~t*>`itAqJ|u z(Y`buqN@MQXZXrpbG_m9W5!T(0{o=zSDUllg+Bc)rH}J?8%jOy8t|!cmQ{*pOCOF@ zsjLLc`Zp_Li4*?X`>?#W=um0_j%9KO6FR>>mYPmNnobGU2*7$38c*L;dlGg(76-Mm zQcZnU1VCSRsTxh-%9RZRBQdT7J!V*``=SO1vW!BQ%#G%7h`lAuhe&L&+ zRe46sQZ3<@oQfs7i0Q)(EBMke+vKg6Uvo*ImPQ4v1)P9tJln*FMTCi4m=xrWw_s5u zYJL!z(ceASy{A!$<=-(|8dlKEQ9Zs%E~5`OmP_sj`~nQ)Oik4=h3FWI(8+YUv1c|P z-Fx^=D%MR&#U!T#FKHKaMn7AhI>uI{uYZl}&^8>!JNztbH7zNowX?d<&U`og@rP$D|q%X!nQXBVMcSrhm?@*syf zvi>KOFS=c7S4gQlCb!jtL0Ebx6&|N-qn*=({$}Fgek-%iM+!QGey=X7yQ*V$OFAvS zxb8foX0q=hab5DXi#~?42e59DezK zyndhd&fiaaz4zPRm~49o?ytQq-?RQ*3#T++9kdtPr@ePb3Hpa?Hbm3p!3UhNrTIz@8*M;CwKOSYf<$gDRxUzi7UF>0b2F7Tdd_6c3zQ02U zyrpqI@UZfrl<|&RyC0d5HF%tFw;sIgMr(zXhOzgMx`TYpQ&jVhEYCW3Y*1@fpXU2o zm+jTRec&(JAN*6lWa2d0^)Nw`JhI^ogCSjoZtwHVQld z`I`UedmW>!s|V)Jy}lTT>Gc9P)EBv0MSd4_=bRvWwmT>J?04sM2YiVh2mEV#9Dqct zJJqe2V!*vbpPIF!ACmlO2f%Fv0s%KULz0EGZ$br?;q5s5iyO)|!8ZyPD|TV}R_%BB z*X^?&LhYaF+yAoKU*_9CUhPi`+W&s0{mT8d|IPikU+}NnF9`a7mG%D~2-5sY(EktB zf8bL8CuQ1S2t@n#|JeQZzw5tlziZHc-~LDRxp_;_f3-g;X#bK-`<44^|L8*eyZhq* zz<=HTfkFSTwEmy3_CF2!|AG1sT*)tr6W@3cO5EUjqd27y}nHQf4M zl6tLf!SP$L;#v*-#LRp7#K;LZ^g*9vbSC@W1RUBTLe^=wGOUt)r&$Vz*(`RGe9GnN zltu0wpYok_%0f57r(En)@Nc?7q||@PBvA`xW=yUBlu4qbR{f{k@pvB(^5$uqxHkA` zi@4;E8BqP;@Z2MJvj(}DPZgT4)lKkcO%RBPETs#bOJwAuSy_=)^`927nLS)Jzum{R z)#wfyZNJ^yt>9X~_;9O@>(n$^r7bDVva{`H^zHlGC6F#as|NOp%w>1NAsKyShSJ{p zefbr}0AB)0%@eHbHkbOYCw^Acw818Ue(?4n(~Q$@vIZwxA)SG0n+p|sp4ZE_d1%_E zm_h`6yi6HQp990<9N%#AeHy;p>e%I`?9=d>nTA^fdo;6OtA6uPf=r)m6PM6DCjxU) z+Z)lQ>#5A2aS#z4@dfF9H@^fQT3sKO&OP_oR7Y%1Y}n4JpKI$v2`agUbx@a=a8v-{ z0|&6V$IfDZ-G8}Z>KF97c@`y@y1S?8glaoTwZ*r=Vn-gMC$_{kUr(jXt2YB64&xG2 zY}GLH4RjJOgVpecEZxJyn;C0c+T*T5O~hYszEK~OT_ZH*CeVaNVwM=EP=TfzUf*Wv zzg6_truk0vFY>ggoOvos`wOh2<4fuygsXd+yq=})YcuOg6iTk2pHH@_n`g1ztYbzj zKDOMW0m;t&p6&0-D^>1(c9|ifmX0<5*qYns<^p+VDDM_(%(Q(xM?qQ>^l;8 zQ%4<4C@jm&w6nMUv9~?Jdnf(OdwDE=06!&xUg9CAN)N_P&BY8%8;bjty5Fw8d#*cCMGg zC1c?y@1D|p+JXwFo%x=Kv=a~Zzjx2GLza>7BzbeDS!Iei9l;a@9omx(RU-$H0 z|G=LJbAF|Vy4LE}Y!gtpRoYzl$F+%E(YU&C#Bd2wMLT|C^KI*0-B%R%(L7vN1MB-X zx8!y0+nRa_HIP@JDRq^$wt>E{Hm~hS=^Pg0KYeKmz6|1vJHA$|)M2x0_`w~)d$cJZ z)&*NCzo|P@?N`(MPfAUEhx>3ImHwPcT|1q3JH8`Q?P}f)rWr~1yvs;B^b4HjL)WI}N#pb!o;5D~#$ ze@(IiU-yDyKRA=6fRfQX%>UF>vzC2Rq{hAbaJ!vuRYO-G>eL5Jr3aeL#!s-mD#n#? z%xnp;P?Wk^Y{g#7#Vo$l>0Na-G2HV6{dOrbXyBCK|15Uz9;eM~bt5$LhXO}TQAn$| zI#KBI)KLyi5Qkkdzr8~Yw0`PiZ2mO}-B_UWtTy%62AD6NGn%!Yg#G(0cMu)QQ`5nG z+RxL?SJK@o5jLm3VwH40&!%(vqxLPo?5}BR?6-U;`7vwr60oEA`E2`r!YEOxn2<&U z6nav=MAm09?kClRuWTVn2Uw4Zf2y!E3&*>zCx@Q5YB^i7?*zV@)f7_Vd{Qoht5I%x zeTLTrBVkfy_=*-Ktg=2&3SY5{|A`+8_C$BQ%Ub@>mn z^dxM4Z4W!@4mFk0>Yi&6=Plw>qwKJmwdGt5-(9ORAa@L4|H60*cA+&Nsvf2TPkbMX z3S~iv)aV3u;=ykvYCWdbK?xbcy>3(#t*&f}TQpZ#1~$=&3w_6x%izKFb_MM!m~99x zN+Yx=KM=d7h^(Uepq3ID0*8LiPBUn{eZN?nMw^xK z%M1T^D7*9TS(I_k9WB8PPufqsv>28OPDlSqpm-H>!UlAO6{CC|L#)+)t!ol3mY2t~Oun zLFm2(8T%K6wYV=%8UV~D~Vjn-H0hNi*7*Vaizau^Rgu0U& z4mAV5!D^|L5KFl`n*`-z*NmD6x@**6(6;4z7DmjqM{?H-A~BUY(nNh7Tf?nZgf)jq)WYe3uLDQw zM0frX%$*X6TSbcQr))t#ex66z;pTRk!&-q?a$%~qU~@;XUQW7eY2CkF|3`;s>;KcR zoccePTmQwXzteoLgkub)K+PI=e=D^ao(nzR-Z3UoP{x8x1pl5VBx4p!{EUa3(Wa9C zecnp`RI}Egh#j4+o79O-?&_{GLcE=I8bioU9I6U$R<}jb25n%diC;NUd$bq!Wt~d$ z=9zpm97k`_CeP_y0jVIw?Gh)I@oOhX!-rOu6>~Pm6p;EAF!m6QiB9!93$HsivzRM~ zf9ju-$jJ*gtOD9evlAT8RKGyW_WX4ZHV*5blDN+!(p~?QjI+GDZalTGAao;qid0Y}5S0bkENtDLp4e%-5F=;{5dX}H3TC&6Sk`;On-LJhX0L;BVCAl!IJ z_PhF&I)HckZhZ|mYV&wdUMZ^!GXb z`<>bEN=e=1zbjI7oqf{bBSzTNcX&_hf%>O{^4eOInqglm#b>N*6k7?Uzt1P&s!i^| zEB8tK<|S&OL?sj-%o)ReNdAY%?>&cQ$JZHO%FsL6ckw$p<2N5DZTzBHSrOqEgQWGj zyGBZKJz1D+bc*>Ic;HW*IFuQ)) zy?^AE4lAfZJ2xoX%f^<8m-KpOJCfZCoUup9_)ObpiReVt9OQGg6O4mjp@+?PdpW*# zBVzT2Z+I@w#)~hwNOD{u5$Kj%-;~_?di(lnRG*H8z;$`6>N|d)`a=7yFA<$=)dhUx z7F=lXJxd+UfAIAURekGeM^oD@eDi1l`0z*wzC?6dt~|H-xQrR|d`Z!$wYKWg?y+!9vs}SpQ8qncJc}ig6k3i~56*pwNG;#)rFx!`DQA zm_uidvOulGR4AdIq3`nvd5*F9fcrdn*B!*Adq_+pWp=8NR3$cZXKZ29gWd)ANhJ)iw2Il>0Kz)zjxC&YVm z*=x2(JCVU)T&3T~@AZz;!|;**j#H%5dwN`^zYp5$`_R4KEB1Pi?e#u3cu()o@kctd z4>P_Z{8V@M;gWVHhT%r-yA01gzM_G1P_%Cc<){-2Z9P-{^r3lmGf1h(tDDA8EU)fr ze#Yk2U5298`M4V6laJthQC5_qzYk7yoyx1~)%qcqH{M8f>097^z9-f4Hz8Fq^yuuJ z+ChrP$KL0hyT{MBO3GBplfIH$Rmo~9S0!0(`!_0Se>#vKbP~o&lCy#J6*`N>FyKCJ zQ^)H*m*&UtQ)k$D&dSw+s`0tjSgxsW2vwW>^P2EeY+KnCf6@KzH4Z#Na4$?PqCi?+ z_4aVyNQ=#X_i(=U25=rPBru~EUt-2~kmlL*0KiRY!9y@kdPctkDz7+Es0=sg#JpId z>yf0b}JpLb9`zp0e=6d!W`8jLzPFnQ~>-uiis!mgX2-IZHxT;15 z4kCxGvEx8dmdd%4ts8Y0B)Zm;gASZUyAyeIi7y(jT*-Td3M0R6&|SNcOi>+Q=$ zR7Z|4s>Jn_kl{3Iq2NF$OE0?n&o#c-{5tr4Q@L61#It++yuF$0r%=Y5UYQ!Q{iE0g z>Qb`r2!7lrjfSz`eH+Nk1r%=lCM0qv`_`tbwN11}eZ>3K-WfrAU9_Ly7daehL6!J$ z;660)^4uNa`!@vWoAV_>l0Dr9dN&x1bspsE@7{EnP4;y<$0yl$K0odU4Tk^E39119 zwZi}3#~Bt^P;+x3tr-4is-0!DuXeKd|06A@MyBz9gD-ivN@`!fl^ms#KcZv~{=ZF{ z$NywiAoF@Z_}{#pu7M<%f1_J#5{A-4p$Nrhc|74!sqx8Eo{?*_8;r{}43I6BDeR7lM|8MPu|C4qol+3~Z+oT2j&xbVr&E8D(>L>>j+e zJ-hP?>EiVe2#Ls|Pxd^8ANTew!^`ce1kvB>)pTGZ=2}d9`y&fjmKU*h6%ixcb(F1; zGI6$qkJ+gp+d|;CO2to-XA`n?(T-i<$8TuS0>QQ}u%u`TY;lmK0m6un2?=^IJ5&$j zmE!LF%5E{)mE^vV+%@bQdRRGen2pz2bYs)LD03#dH&0UbaHG~h5(H?Lhu>X^=#@Wh zZ>x9rVFHml-aw z8r%#kHudb(!4NgzYf6u2fo&fnWUG53rwXUG_1%4GAr;FEdDXyqSstB}0vMjjNU!UF zIqUdPnz52Gx8#7JW_P8p^riLbO20v++NJe&n=rA?y{cb;80uErQ{RWy9SS>hG~*T* zA#eMgfxSjM?Q>+`;~XDqjke$E&KhGRfB0oceyS(=K%U)q&h)bMdw}FcR29sTdJ!8d z$KN(<^AzJ$uH}6(nmD^0Q=5%@L@Kq8z5xo1&~ts2 zHN{RC4XMd;Ns@0Om03HJ^*}Y|@$L+Qz=^ z6f;uUewY&XQ19JDw5}+t)LDpRTIX(4by~(O>%g4!n}W`|tJbZ_^h~T>L(g6l4ik5m ztuy6(k_;1knYf$a?YP&tUiy$~>3W81%nb3xABR@%(WO zaC!bX4o)%?E^&T&s;8N94SW>oQ)7_g8F{&vzVJiv`N^8eUK1sxIAOZC&NvGcye%;?Lkw4esoWzOV zaA$wp^GaMjgOiedFQ!&^TQ*zYSn_Va8Sca1`n=x|&aoZHND+4tdA%e1)ce~Q6Gie=4 z`@Ygn4$|t5c9-!U!|5$?dJ*wDJ=l8h_T!L0KKL(%Ip2<~pZc7eH_|4<0l#Qtkhmht z$DQ_%3I%_#-tKY}A294T%5&Sk*vos))D;uthZ{c++r?mW<(A&LC))HoJtq6cUIa(= ztV~MpkNuc&QZKzGT z{B}txnM$gC5g$Ze>zMYG+$c;Y`#!TeYx}vU4rB00ZB$Zklc5E-r<>(c?}#ZDWU>YWfyMWNJ@|KJEDcL%n^f;u{JDC(bHj<4nZ` zDO^KdbV;3-h_}@kY(chZYUJ*gD)!?w+(asS;TzN4!I&GiL74wecxJVt?7Vsv3FF;fz=hGAs~^iJbN+&hyWp+KzAsC#WA zt8A`g`{4wEj@<#IslW61aotY`-?Y#Lh*A}DrEsRrc?{=_g}*PqxdY)BYvC?%n&uF@ zIeDA=`a8k5>-d)X1%G50rcsl|mzsR|YMBOp|GQ3(5DsH*H@!A2E6bB#2gRCEEOy_T zOm2kf4Bxp(IkwL4XS!O{x?@sRB|j5UPPog!4QM z0@4%^K~XF;A&HcP0HH{g7O+rtj{_k{NrI5?H?!|vBmVWv^T6J_ZDwa@XLo03XGw)Z zs~We#%E%BS*xTbjNi@y1fGs%u1o)@qA2=tKE(L7C&me}DoqzuBD6)5^`ch6MB-wAX zlp_*izp<_)=^8+ccr+o6G^+NgAP;xv0fOX5C@WE?Ni`{^$R@0SL=9vFi70eZsQ8c$ z7%*xGb81IQYc5~Xz7w@-&%fn~uLqN`q1Qe9FCWtcjr~LJ7XMAoh&hOmyH>N^*IeK~ zH3aW>V<$5X?J`*X4$>w#nVNxf0XJtPWRGR@kH>JrT1uwlJN=~RcSHAYuz5A)x33F4 z$Nh-!LrAwTc74atce3mIOCVu4IlujLDc!G*D(`Qh?|ZeK-vyNan(O;5`aZ3FW7oEv z^EZ?E@f}a!*IeJ}oZt1`kiPdhzk^?+{M#C6<>5QZ7TAHJB40jJlp1e2h)eK@T135J z3ns6~_MFHwXlxSEFCN#KxkwZx9BX~XUAfBhzgE7dEdL`|$iDQYr_0kj(Drd{yvqaR zG{U!v2Yw?cYGI5!exy7==9yGYgJSTb>yY*)|BPQY(owz@WqVjm`Jt5Xbo*D>Wufn;wVeGijlO#|Ro}sH(RbW)?)2_MQCZPw4^SvWA7LKp4~`+~Q%ZOCM?Hxz z$q##rh^Oh9O$lvUdDGKbUY>6R52S3Ri)pW!5`KNEJlflkkl9w&+1_gO9amGeFR%=K z4~tUY!39V0-K)NPdw-{>lPzR>m(xd6kMwsbYBQxf@ofiuK%AWbbGH-Lf4l6 z*xr(|{7lMLwHSJRMhSmDRi5l+B1pdl|B2$aTltttpGg>vT`B1vF`r@%&lNk&Qny5x zRB^x`YOwZ$u~+91@hu9pK91OgsT6OH#w<)z9j;TtD_3A0G!uJ8*nh^s4FPR9X%QAK z`j)|#lFZk$Q^iWmbTr@pi20sQvoI9J5y|3jw3w%xW%mq*wtVIEcXj6Tqb0l+Dmpzr{!q9P9&d0RVfN5v5Zn!@! z@AhU;`F!8037~ioIOH&4bNyM`=<1As7=!&@$#C&)d$S*=U5OXDdixFrP zb?6)?@^NSmjJw{3RMF0_xbnBD^7*LT-j!3ZUu(%#uA?gXwyG`AKvh=Osx&*R%tH*S ztd4@N_5pL{UV4)ZD}GlTd>5_W^E=p>q^-gmSG_k>6kv!^?a zr<+I~l}1o~zJPv{SEOWnnJYd&4Dw(DAQilP-V`Ol{|w2`E|&Nlp%hgbuOVP@BG3Q` zICd~yoc6|{ApLPjE>Sq`JeG=5t;_F$FJDVtAWhR}p$>%@Z3<^~FJPU04nKJn2eVGWr7_a=jE-lTaTF8W0<}TG|?IcdREpnl)I@ zwcEv^P1t^>YxAF`e`j0T6A*mjQKGX8qT*q-N%~^iW%XR)?1CE91@#y=)djBcx-o{a zt3ue(nJV|gY^pg6coTN-Is0KX@O5l)JI$2--XO0|V8I3_@+?Cn|JrJeMkQeWz6i)3 z|HDUHryj2Ff?!^4Lvg%y%O43=pA( zo5AtE8#csO+Wj56Eo1Zl3-XRsK9*ym3ZTP_0uV6OWFzxDkyTf@X(6=vnTc2*u`-(J zaSc!vUK3D_*b01s*BbnmczwW?d*U@4$ZH}|t535Rh-QPAY;w5sHW+t2m(3Nsv&w?Q z5-KTC#P=DbUJYH=J)5@0w6CN0y@QQfAqyAMC7%R2GKz{oIxNhuZM;tFRCGn2NZfY4 z$nmw5U!cN0h;mWo6Hwnm*Bo>yGcf!?I4NH@wxD)3exKw$i8d5SV?cJ12~yC3(mOJG zFS1C1u#{*4Kso>tqp1RmJ%e^UD7+Gd#k(j8VogU0UU~b!iC@(3p&7IplC|_eEle!g zYE9lk4H1egG-@-3Ap{&flSeFEc)dt^S9ggs&7KIFh~OFkq3sQih~b$`*ou5hMC;rn zs+NXAewLH2u_$;CGM1tvxs2&;CrwkoVw%>}YRwaMwqAGn89_Heeuy#6nO~9to#}^{ zTyXD~#P%Ez#*KVt#L0&D19cqV{cC$aO+|ahlk_g8y_SQ_*jZ4A6H`IA9Gpedz)h19 z2iWJMy-N6zNXYzDi3DtXB`sjKPGLz!lRJm7>S_$`M`Km3xM;2O>yK`BQoNzWRx zqJ31+%LLFCc!#E?C{)DcQvy>|WX8k$b^Fdirbk}1cL1$4doGs`$2RC%2;qHnD9-$E zg4xMlG!T);xxKNvB{>kcr}mOC&lUYQ;u)%ZO@?QqvDXRw>E&wtBz(*K;P{d8WqFLz z?d%SA9QhWy<0UFKXtJw2HlsD}5_ zt!6Js%}ka2HklyySmxxnOmXieZeMFcOPf9p1Y*70cMh49g@pHYxS8QPgh75;$sgMst#TUNN#S)ogmy~`CkzESTrLkxoXCGOc#OgWyCsS29N$={>|cEq-;N-tJ;5n z+Aq=V&geqt;V%&TRQr+1(NUBCvZ8A!pxT{86=j1SXm@F6MXQ|^x!Sz|6-8czFFk1< z0(t0MpGCkgJiwntDZE`I7Jo#@lY$#og^F!xANpbjdfE zm9oUz*NCDt!^57?k_En+0GzP82zT^%O(5dpay9T^=L#Ag!96DwnZ~PIyoZP~F?Vze zNZNziAnVJBQDnt+c0+(z=By%Nml*RR6LlRhQ$&s3hen#wd=T|Ie#cwr$+^M!Kl) zH|zh5Ot^#Y-0yju7s3~#5jVcppzT2TB}P~~pgX;YC{CLS$-hnE3RG<}$W;!OEv-eOQ2i-X75APueu%v?xHV*j^S_k@hp)alZo%2P;pI*Srqk3rC0s zYhnO(DY|L#4qDKdGFhoxAX4}f?nkxi(nV*kF2}j9fTuBTet~#R<{hN++C&}X#bT_L zV{U33rkYmmE%~@41O~-<2Q^+a4_5PzHMkJhx@ZixU8iw4-&)iU)DO}w-6o*~{JA&g ze)$+cnGcxVo9{)xOhb>kmVMxfT*Pv}sDmRATTeM(0WW#1=#_sT*oq@hHkbQJi~{$Y z^Gi*w$Md-OQd_mSO&hNM6-OE|UVaKM48k>8fOQr40+;cqQ%;0?5bMpK-vV{#M8WdX zV}B9P2%Qx>7OLTB8jG2~B}Zq8OW$*!8IxL$GmR8&B_cDBs0K<^LZrV$6Zn3Gc7SmG5ijw57qQ-iOF*MwD-L`yHjr8%=utnl&Ec8tKj2%$ zHJ=rIQ$6T=k)yLj(l&ScUU{DJt>K36jy=G)5bXfITTw{jdls?Y`0hueB))zczKbgV zCw%4lM)D_-2di?i;RB$Xl1Xc0n|~LI)WLbqn~R--w>qt_-)#8QY6ts%QA0MP7m6ve z-`S03M9F59|S?ETV{eUhq*HwAV*5FuXoV{CzT3=MJZ`gNDp zp4$313+%mF&fylgXvt}@y45-Qv^qq4Tks{GQ zLo6TW+@vFTY;@=(HWa#3oDpOsaX03P9}nka6Ltr+e#^DyiqYlIJAI;4K{8Qv$qTRf zARO1&QFacOJtmr%>~)00%wA@#siTD7fm~J(2Twu^~fIt4**+mFRmib zoZ~ADndgf1F@NilX>~yt-t8jzG)*TkM#&b1=jkUc4aJK?&VX)-GiX^@IkyB>3vm8S z2h1s%U378##p-hBNkbzaKhUQW>xvoIeMzM-k4`ad!54TA%M%I6Nww^9RsQCvGe!16 z=v9_$YG^Wvox+{`V>#?@5uR z%K=g5-Wfb^OO4l)jR8!X_6q+^=bY?Jx;W>43HVrYBtA=NfbjU$?lX}oD@@CFp(e1o zkk;41CwUspC0>1z;p0(DP?FA{fLf+Z6;&t+qnhn4v@_Hst|(XZlScvHX<6-Ms1!uYc)QRffoN7#m_`M(St4<9mGM1YrRs&9*u(_^)2be2Dm2;F+BrJ z)kVxTk_#`0!gd-*gcp@X$KcZ!Q7SqE3Jfj{F$QF1IQ=;hkoYXe*1tLCQh-{z< zGrBmY;CtU6^2DdIDMXCMNsxw4b-JDXJby=dA_IM17~`>%rsHUdM=arS1o)AP!G*_{ zz>I||;o*H>iQGTgs}6OZ5B+cadIo`BmNWSZL84cX81*`_^5h^-6g7I4lX%{vX|1os za~Xb%dQai$>yD=zy*&KMc+#t92=J-afWSNZFGLt{_DTMNip6I}J*Hb6;WJj^6F~SZ z0-m09n+Ob@baTT8SGQd9_ThzUv~IKLrR(tQ$V_XGP>jMQnHvAXe%n32`+ahFhKa|y zSMah;&p;os99)>wE*vP)Ejs0|jk4HFA1$H$#qxJmukWQ^-w(aMrylbx|ApH(-3K*i zg^QmMhv`+Cq5%PNYZ(Vr2>y;8zUs{pHJ`HdD@)SvLQ{|*t94#Hu$VdM4*_8dPLVMp zoj&O)U5xQSQe&};kzBEv>?CZ#W3+4^%4{T7bjkjhfhm7$zKhU$DDr3$hU8Sts+{=0!}dI3x35YlJ+BTAn1C=ZuzTGxB&K<^#m69U>qi zJIO3)(I)(25gCOaEFz~<)wbaES}kK3QlDss^er(9Fn$J*JgQ!w#`H+4GIuI+b4PRecAl-rC1Nu-^l0w~?m#lL5wS zvFxJ^=_MhbzsBL4Cb!?y;yVglY{7MrU;I>pyD6N@=0Op8L1lHC-GA;f_8pLdu-=C{zNPCCGy$n zFjniA@)Ccskm4JGAKb*NI zz_3Z-MAIMHi=5Xo*F|RcG%4@s9MF!N`kK9;x4n~7KNyNbrw>4HeVT~};c>{q^fdl? zL-c|7B&>zyv94(V%(G0j^l8&&D)nQ1SdSSjW;)@ZJq`5j{%@A1vHSxq>2Ux*1Tjeg z{Br_+p5a7u5)zG;OPX?@)pQ$c@_e?9)&U7z7MB~YiG8)ar?a)Sp`6$Yvv|&guFVy% zz#ESkEi0Hz70g1K$AehBUdHKEt##mE*;K8O7sNzz7X{>-fu`$A0aaVzF+wwkALu|$ zh^bYR5$`_4U@_oCU|ABy@+m9rV8g|&8jSq|nvEs)xuVQdsQ-Z&IxfYt;I8?ftWiH= zAk9kCptD+tn)!(h8U_VHv4GT|T18eOZ3c>dImzZ%QKcu-Rxa@ie zIcw)|QJ23vM~G#;F&3?zqs3|&6DuCTdJHiJaZCQ_F37%2pZ1A_1zOUKIpB5st=)9B zo#svcR{jD)d6#n*?{j68;Ualr(L-M!OSU=R*VIb zRSD5X9==^fcd??Dw*`b?^%enPrQH@@!}NCk}WEO7QuaCCezIY4@2G>Pn}ip1v)D^6`hsSE);aoaKxCx5YH2b zr}4rCV$0ttkLn!^KND?YZ8tLP01WL4yz=-->eK zoUC#hQn}Db%LJNQ*FLB9+i0S3AzKf5woQ<>WkAri?do?fua@xhBIvOno zaaBebw21EFl#J+35oC@^@3dfvm2!c?qJ(D@{vax^5w!h*m5N!~btmlsnyJI$F5r2Z zmlEJZGnQb*imBefM|cD8?FL*dtIF-a40g*X&r^2b^>k`K=;GCWP(&^987bJKRA+o* zHGIsFB#8|PA6@bU%uTdtY{F|64gVuDKbAuBngczn4d+O4vP=q@D%o3bfg}*Zr%aE5 z?%RP>IFTP>wCG1+mgIDNPr!Gg>w6)^8!dC@Bgj_gDPY*6?1Du6aE|zr4I|iZF08$1 zeH<=PW(zBfl#!w`QHT$$Of!<&zVuqwf}{fYt~I`rbje345`ISU9BtCeJ_+{v z!2BJk4p`q+AXfdxD~49+6)cA#fM;;hFBf`2l zHPIHBx&t^5c*Yy&7|DKXk?J(VZcpnJJ|Ev0LSX5njcS+rDC_`Mx^f>8RVlaC%#^fZ zmne^1!sH4+BM8t%)1uRaXk9gWReQxnt{+~om>vm7#Cuhk+>0;*G6u`haBe#gUyBBL z5<3Y^@vcuhFTl)2{%&wz2G-|Cih^t1ss%pDFEZ8PdD&8mN4K;yL(?>il{g?;4&bp4 z7zU8M|3_Q%feLkMsD=Tpi{w=B1TpAlCL1z-LU@)X?UQw$Bt`^;HJ?A#(TGujh|%B) z6Qdq@d9F5|X;&K(pT;43-_S)pI7%;ZQ0ze#cck)^=VlN1R+1e_BIX7ZHJntg`B zI!7XehQQV}fPL?X^rsEoP8ZCnR;C+`!L>p|t+~V;ktW1r7IXWGb5N-QQ?fD#!%! zBgYHA*SLSfe|%x7sR5QA{TQWe4}J5To9B_2ZX)U`ay6`HJ8Q_{I*{ZezCJ+%L9#Z< z)SV?E0ATQk^MsR}LeMc0Kt3Tw{BnvSNKUR=+UO zd22p8isqqc@f)OEjLg4X5?q$?Ds>X599NOKjfZu{ z4C?u3!Iw^<2FwG*nrCG0`YRIPHZNK8TnC^UeuUd|koCl+WW z$vL=`NMos_CW?u-zD9}x#^*r)a$O$nu%q6}9GJsgO&EeFsUyYsW1yx9X+Y6}$$6xq_U|_Th17JA8*R=N*Pw+Vt{{6m4Wu}M z3Srwal!TabJhM&e+|621@ioe+_F0v5#XWxzM3b-tLF~^bIiyRzMc{1BKH7x)1{s*8 zaR0di_d_ybGLldVBn{Xq`ymz-_Uwn+ps#ck=!wrUD$Rgu7LU){E_^T`d_*&ePs#*p zuB}-qloy`{a)*9JWFf(4PedZn*^ESxNY=meL9y-i1@OpIn$SJ}kQdVGN^NU_-bFJY?!p4x^paeqhIz8#FxaLs19Ntfq)c z{IL(W#q3Lwpyt7?LGJUTE~Nr`(_R6MlJk{VgM`}=Y#4V*Yr~zod{WL(k_HU?VIcl+!n`g0F=ShS6 zqI;wTXe7lKagJrA6eS=ofyTt%=3SdY&Jzrk7YJ{^@0ce$dEL2X0 zq3GN=>*RiM)|p{&&kmmpdh-*!c{!NXD@O9vfcG1IX1$9pIUcdr0BiRue1#Vvd_hF` z;)=Bz{NilyjRoIi!0?QsqG9($&I+xD@(9AMvA{PEi+q3x6^1_{XNQV--}~)pd}diZt`Xnoz2cjh&10>+)Lvj*2g8rpR z=&$m$ijdV=Hm(6#4c1ZNju*7?#P$GW+jj(8axg8p6vMb^Q4%szt8?hE1A^gWB;)qQ z2@Gi5xh*Gl!fybjKL+a?tcx~rz19r~L}W-IipYB)&ti(y+*4_%5 zENhxU{j1u_pkNL7fa zjpQd&vJ|}#f{}p^B!}lb^=?BM(d`uJs^seN0E)Bk5@whz@zV)Ot8WpH{?@0>ll5bX zBN}ks1$_UDT^(Q{g!#oNo4EuTMe;M$IkM{B6cHumKq%9+9bzQKX09hiQ^yd|6BhvG z1rA*@J$?s46-q7e$^;h5*dgDc44gNg4318o^{b06rypX&*3RQxik++ zF8}0ZiDEC#$qQqn)hr9#fXkaU=sK#G>oCR)4br7RcZk{w#AGNEi0?ataI_d(MEf>` zW6)50HO$Ib0kUl%zm(Bz@dg}gpaK()2`-BVdC06btiUlq>vhxl4jz?@S)?q**MjWfrRt7jt0d1^WaPz%q@-IXZ|( zJ)C%<>7w%;8VURCZzBhms*M6@N-BWb_5uKQLP-a_95vJ9 zhe{NuOY&l_F{;Xd~H>-rk*yn*u$b$+%qyEd{?LU7nB8LEwuqn?W%>gAkv`5yh#A2dOI%K}& zI(BxqSNw8IavNOB(fv?^51c&U$lYk2+@0K3q_o9{{cHTEZ3^we0TDvAe~L)C7qqMc zBDeE!L~QF*qCGh(@LverXq5kX9j7EoSik9#Lzy}^prR>9dXLt?C&^UaP1ksfb&W<} zLH%HhEz;|@_by5*j4<6!Dr^E5YQjE}_6A_ren*M+pbP$->h7P_Y_bvr<+1n8D-$s6Lc*aBI1>U=fK`dH+m!ud;`72QV*0TPOsDAS9 z<5(pM=la4hQ%=(k;GjL@gt`3^=3x@l2Qi%DE!gqXymy4h9FE`YqPs>)Gup-IL*w)i z$!;1ar$6Bk&8AW5FX6Zl_Df_hbRmnV!sah*FOvI_I@v_j6I-|%U+A@xf0#JJ=@RrTLqhFignum1c>u+bN~#Bx8Iskbe$xl9}PF7 zq{9a4^+lkMCmkk&GEO=;_p4t1pS|!Q`zZS^XNO4psDm8w5B5=xCyY-olAmu#d_oAH zl274t88OA-^KbT11-?WMCw)RhcnO+Q{=q(KfW&7VaX1NX@X34(a4{Kl^Q2FYf56AX zKFW(ep=3X{-vb}KhvmokNDC_Gv0E~LLuMU$%=Ebj95P580-yZPfX`Ln>4{GkFf5Kf z9`B8L;S&ygzVz&`a4}!@SGZET%3}ZxpOzAzIKpR*#Ag)Y)AK2OBL4v&4|_0Ad}us( z@^O-f$MbX_qRvy}dF$UymyZG4>0f#+@F045(&bBF=A?`FcvkS$`LH48r0H4OE8&*Y zNwFKJ3& zFGA|O$-XZFMqbLkPvI-&anEStZ=6QBjkjo#_JoKwIl5SWauhP2Cg292#mwI!glEa8 z@Vtx|XFs~hBe;ThiC8auVu8;gI6`#8Csy?1h{>_V;xjUz)eU$}is`$vQL32`(*tEbmp_Kybp4!j$s?el3q8dc7He)9DH?`=Pe z?;yA92&qo{p$Kz~A69N;?*!(6_0SnYF*T1$~r(@=FnLmQnRmgg6V-)}QB zVk?g=QnjnRhUHS^g;NCNVMx(M$Y$eKgLBJ#M<+76`IiBO^jV1SgLo|c^=StP3iJ=x zSCBncX-QgLa#yP6)f;H0x>2*bjLh=MEFN7hn$`JtJbsotcM zGH)S)P4hv^Il(TLTj(~)J7)~ms_0q}f$X)CPf>1q-U9v)0GP+7!;~tHJYe}S3>aq| zWo+}r9}m69;{N>W(Ck9);V>OFG)E1z9e5q6k(TLqnqjrmS*s2W)~8*eCbmJd^*QZ< zAxdT%a-b4J&&=6JUFbS>z+oV8hdyoyd6Z*MB`Hg3wOt2<*4j-6L)SprzdyldU>f*C zi$^TKh$~7`JFwEG-p2ZC@hbF8ou}II7%}#jxwxEfo#Q1m-Wp?|yD_I>k%C*vq*xjQ z5@JA#ksJ6dt1{M~eA?DYq|D>fHdCyy-e>yx0bYg=?Fejv{eYwR4EWH<8i^LmUBMi{ zX8B6XRi^5foGq|d_STh!1KKgqBHKpFxr0uRqhj@y@|>_LVbkx2q)UPsL3A3JQ7Pn5eLG3 zfR!|0W<3swB+U!E#uRF&rB%@NJlf#9I!~PKOWIB8bEgoTOjIm^I?OP~3uKaj8vF>V zbYA{oH06OtH!dtfw7q_;uoCUy-VMK^a%ngmBx&w~u5y`K(9 zP%)%{#5fHK5@WTbdo&zhc~AlyMX6N0MdJip`G_v0)nvJzgk36ClZhm@BP88Txw|F6 z6a`|@9~>fm!9c3ZoX6i-y@`IPmRvG~vqDo;Ypzs^raI(U%fq8qEP2$56~nQ%C-o+m zBISj++Ds{g|GCs}C z*aNDh}b zz@hdZp;Qq&pr-*{BV^G?D!N-1eY^}s4JZmtq8^H3b^*i10izu1C4G4au{to$yjKFI zo*;$YOtoIV!|wkGlyeczyi=SV4cG2GHY%8!XyJK;YWA% zqaXcvkR7W_K87FdlR@_V_+dWcOIJPc@GN|{!O=ZS8S#h?LU6og;1?(1-2CuTy76G@ z_aGaGHsoXEK{mX;nb3m|vIBG}e{l>H)z2b^t9Xzdig!pclmOCHhQOuJG(P8Q60*uQ zt*x~Qwdzu4Bc6CT8obw3#4aj{p>kQAe|#4DqXCpA)$T18;VmrWz`Apkr%X$Ikewu- z;(L&dlOkHJQPZOV3E<(MxEo@qFMHkAWN;hGVrzZxBPcUTtctQ&tDy6L0zw%tGt2_< z9D0j7bRw#e%;krEg8GN5<9-3UapSM(Z&6V~1yUxMphI0kzqGLd|%O zxG&T=T|-1=DEN>!ncngf9sb1KTU+Zo$d<7ZZ9see!fzVf1LRVS?^4O8#GrBZA&gTj zsNWS!e6m$70rfdm*p|vWfpdS^`vHj3pCd2LKR@AEmvF5w+q-TFjy94{*fquB!?x@5B#~m*FnEiWi-bxbNjurLj!4=$q$#DQ~XVmia}cL3}v$AVvYwlms3OF{-m zT{VtyzKnCDTcWH9*VXYPYJAMkriN7BT3IwdOZ;mRct{zS5(>mK$dl0s#Yb4Gly=a1 zKM62=bjj-xCk!`;HEY%V5N!4?W9(la7}IIlAjft1x4uQPJRA=kmqu&}njNwJtU(w`HJQl4a>~lp~9CcuT%YFWweKZDK zGCy0{zrzh0I}4yI58)dja-|k51nW&Y#l@C!F9b5`v*d`xFR>;jk6Ta_!YG-pAv^!b ze}O)&I_QD+{61(rmgiJq@Hic*#TL0heTNYbZOB)WB{%y2kZ5$~~KQ){A^h2f%9 zu4s3{3jzr0PhtWdDUdN&oVR-~54KZ}L8#%vjK}bg1t-Y&KWj=WO1>MTS4LnTsE`1X1Nfr=9x=3PcRv8G3-Q-2a8r*jZU!e&SzrGHdkR#XLFzv&S zP%-uabYHMZ1jY1e{ZU*Tw$i;ESX26bLd!Xr_b+pB9)sBPmalwQj!k9tX<^8(t5{N3 zu^n*4^^S_|fMYwx5qE9oprTYsb=rK$`OoTG=7a?*8TD;BVX5d&19J6f=@IR+Z{_a* zukRq|x5s%0T7mlzIq1n?aHc*jp4wB0*DT35sAY1vWkv+>q3xryyt}?@GLcTa*OzHl zFF~W(SA#T~)rCDF(=7VFq?sfbpnb6rwEmFb5Zw-~)aW+khDNt}qa@vmrxo4paQO@B z?c7nLHBdX@(M@#hkC<^VwdsqH*3tW(Oh``uMv}Eb|y$8(h!iOKT>kv+ZYH*x&99(>1 zzDHh&6%b=DTuzAOagdhQZfv(wPwWS$*W1@>OKFrVkR&2b1E@;wz z98?Iv3H)LhiD0BOo~#jZ8#ana3K1{V(TLdgFK;5Q!AoRJ#B$(A}+zqAxH4j zqr-JSf{aGBeR)nP+Q``VKxE4GrLA#~54=Rq4YA7g++WIgWEEYmT`$t)46Gg?c-}`L zF%r&JJoh8*e}~J?6q3VqO7KN5Zfxu%YHZgak<*_Vi$!G{+|9<1P|^D?HKZ#ffNlK^UByyLGIW4g=m4?M0b-#;ET}vVmDnEv zaeW$dku7-a0v5U7A`q8)LST6PdF_7;7!!K9dt1N$0yg&gj5}2?>6>xBoMeHjq67li7Xohwgya8F_ETOWWVuM5`%t{RE9C#%X)niTH%??SKxp^49|Z z3)|D(q&JI$-C)xLNktfwz#FFSG`kE>opXSdYS4`gJu7}w#GyMsR7w0$Q1cE{TkRX> zAMgu699AX1hiS=Cat`!N)-eH{ZN_FkNijaUg^f8j#3K5o+Md^W@11~E}%v@fdFvogFrt|``#>nr?hHE@0j zqh+sNw|Fn-G`(Q7wZ-GHS-!2xB>dJM8-+^b?caRE*KyK0AHfW*eaz4A^wR^ecw4M5 zK6EK`?n5L(gkPgQnC)Q^ZVuATw7C`|LuI zC?#UADO37^l3yp=E5J( zA%NMj_Ck@J^r4`Sq^$j>Y8-8HP$-THtwy1o_MxRH3iu>ZF=*+qUUbsakmCp9Aw9>B zvSEFb84w?nlkkVV1?}B5e?LRvh4BdJ65~7jIZVRX9Q*NY!$?vIr3YgLddku>l;>_u zUb0PPWTrD#ttZ%I&lwB}yz&+o6ZuZf9DOK6hwCYA&4?cpM=W}I zaaa-(jg~`Vna(9M{ze=fw}{DoSjz~vQ@tV|;0A~;c{!4>e}(^myJ9#}Nj_nED>{wI z3DXx2f^Z+BBC3KMNFk4=T3l`w8OQ!~VVS0nxljHjI|g;KmcJt$1e`uBjqV@}>1qkP zBb6v}CF4Rm300~(Q)Hc{A+kQxCJnEny$LTUEJ5&WaXW}1n-1r6421~chLNuPoDmD= zsleH8=@=&70tWVT=zpRMa#DZVb3DJPZF*JekFz*K+-cI;KZ>us8^3E{y6#N%!bH_JNZ-nIbqg5A3S4P*PJ*5ay5M#5*k*jFwIF9kr zOWRR}Mn16ml7_)@j>tY0WS8Rrt|e@Z?i1||*7A3WhLM;$V9n=u2b@e-F$;=L;0Js~ z;#Q-zJlLjC_*c^S{9}~E69IAFXCv$nDP*Wg(GbgWcpPsAt$+9~nqG%XqWD6C7}2bemh;(a6b3$$6l0v>$@DQau{ zNeY%%=(3)Mp`|T*G1VnDH4MFAIR$nyWL+(3ur=L(hbnaLKhS~I3}y%9TREa{w;)5z zUkR}OY}^wy>C;HbORK^4vp5xVOPCh3NXGE_-b~TE2h^>?S8v&e2VmLX0_0*G9xXH? z!7#KcmP1BsBj`3xKszDduaCT#a%%Q7fd8u@CT~*T_?V-UUWH!7H|G31H%NL>=?W;V zPirng(%euBQ1#}UzLQr|7O|i^rAsX?O!x}q?o;ju?0GY>yws;fX{G5<{#QgeJ|u2Hc-+pc0ipWVHq9fn=j)RDd;^pKFZACM$<7J@{DK z#UhUMp!8-7eo}pqG_-$}_!%uT&_!4rKsNy!Br(H4qki^_pb+~gc3v!${HfdB6HC}^ z-{e!elprvmdbb6G?Lj-RN)5#-VEJI>1eY6;)+KC(NOpwrS&vdDgq7aH*Yi*m@z=NQ=MhS4B; zM=M8bQdw>g$~g{*<`T$iFh|B(Lf;mcJr`!|OGHhXl0qqKkm9)Jwpzh>Qu-uYvky@~ zpGKy*ymQ2$5p|}!y8KThhzj4(K3WVNeSc1yp@n zJ!dr;Q?ab0IY?ak3Cf0=vMknCxZh_+ClsP$&q~gtT6kTPXTdH7$s~NvJ}jZvoS{FDer&o~k4fmDv3yeckn!10LwXJXkj3T(?J% zi*q(Wqb{yOt{80)JQ_oayS=rhl|j=a-+;?Leut(V=?1~RCxPaeBy`}s=p~a?OzR+2?05=u>>a0 zG9)O6k8cc?L@6W>BN~D;6#?uIBPbWzU}+bQNLtZZ+BFg#@IC;9W+iu_spD2Sl#3o^QfaVB8HubcBQuas$;b>OYci4=vl>Y>`lO7c7@LgIWF*DR(7@Pd zpu^w~Wk57>7`Yda^06+WL2ywL#}$rx8ijJ8xL5I$u4~H*P)cCO!;m8JJFXJXSts)ix;*0 zY{$a$K_K#D)A0#_%JqjQe;mbu%l{hxGoBv*)L>0<`;X%vD?E(xV#dGMxTgix8qV7; zLbQE_S)qalE2KWvpU!pBl?ngWpW66GzGC|m;~z=x{fY4}W1Rho@vnhV{W+lNKa79a zQ}FozQI3D`s^Z&#=`{Y2dh_i>^dOD@a-QQ~miMFbYWz>5@voJ4@j@iZ|NqAScf=t)lS40;XKnn8CX!~ zi6D+>s&eFtqA`@CnT&ur;%$5rhbM_(3G#IUSr_RJt0;k}jB1=$u0Hih6g8j1qYyF7 zjN(KN<6RB;=#i!j8nC2-6sU>V%!T^_Dg*gkr2OMy?MMz;dDX~Gwl#h>!DF(Z9p`sw zkP;c(aEJ`I#bQou5NPb9UFgh-4WTdISZ}8v%2_uy*V?*K)Q(|M0d=hQ0Fd|m0H|ud z-#glKoXhp3YkVUs`m>Q(fqZIwyR8oi|96n&8s8N2wv5rnH^mIlz^M75WfRZw-3(Nt z_2Jc9a()EdE4E(?#TQ6& z@7F@HM8-J#74k^~Bm32%X~wQuSa{C-}ZsW6u-@% zfF7ufUh(9&JjDDz##dX^0&@y&eC>OmNH1@t7c;)Tr*>$IrT;a)p6Z!@8ed^pb{0Fn z%E|Vg26w3TE*p>b*2Cklp6&IO?ftj$_1^G*>sL9x-bB7)`?XMXM3Q^I7K&yv#@Vlh zqMioEdwe~@Ay;wZ>ocLoS2cc~wIGA8VPJe!r`~M_DtL~s%4mNvgGxndhw zGSDy-ioaZuHk6o0u6VwtB2d^jV-_~xIO1@lCA zEw!$e8p}L;$JIFKgUs1D^sGMu=txX}0+1mrUUFh#dftUWo|x`|!A*QQR=7l%n6Zb) z->`Au$7$TO%VKG!ckd*i58*m*+*9&To}b`R4_aN2y>ySD4J8t)nJ+ztc0CAMBQh{F zYo4RAZ${TaQD$ui>l()e$WQJ3#p;U_40JKSCfeR$PK@?3wZRF7B&+EyYtQfpd#T>T zC8%C9L{JW?r-Sd^qtxUJRRaB81yO^cX2D;2j&^P-LnObB7FV=p45sF&Q_cRhJ2t3 zvs)~lwDWSXZ;|Z@r}A61@*|z)7jk)z9jf+TA39OuKa%l>vt4)m?f7)zZ;d6p z5s3onNoq*=+W<2oTf*Nk8t|i@!oMQm%U;+muJ7bl&!$p)WT{D1>M?4gR=cpihtz<6vFTTTwB0z;W*!;@$#;XOOq(1RMavLn(67Vb~2P46%a?=oau| zkB%Au$C?;Qu;3g?Y(TPtg(^&wsrX74Ky-<7Jp)VQthcb^qFQ3fa#Nmz?7_gKI%GrX zK8qR00m-xR!+FNe=YLS;VjO&Q6&k6Nkiqr`SPs$p4HcS)hCk6N#fgZji!O4dArtMP z_y|R#m#tYm@ZgP!RvxI;V$>KflRsA>YW%=Gxeh5Abo3AC8%9z8qlfW+Uj~`RV^%1S zbU7HyqKlag_)a4=)Yj~Kl+aL1*x=ac-uhZV4Og^_>`#Cs?z5ykfYE&d<=4gCvCksJ zZO!`Q+ddJ$Q~BH;bI5EAHq)!-!V;#|A~AzeEI_7=7>S}kev4F~PRuqMC`#PM0cpmK zSe)qz$!ETV6GHVq5We-6ELfb)IYespq~D*kPs!Bl+Mmo40mx|S!D1_0_(_;41havJ zxo{+4*3@9S)TM=palEJa8|HK&_8oe+a{_#S(cblK^}2r#@kw${%AoIVY< z%$VZ%e5fCqDZYMPErd*6^l327mZ|Xn2ir3`V*|6-!?}im&NV7fiL$NvT&RNQxe#ty z<4Tz^vgX zYkI}`k*EJ8_~VW#nLzk!@K0HNp_9h#qN#}N5rXB2yE-h@nOe%Khhv;nZ~9SvCAdC` zuX}ztu6ZiIdwQc{(p~FWmK;y8s*a5P@ z*d7Ffi|(-Yk8m`0n-8qxqot|i%dbc)j1&t>=(hKPP&xp!1ye2EZd@$7jD<#s%wfVR ztz!r(tP(aKD=BcgwsuAb_(1)4GcKlExbA~_s0P0p>E6%AFKCbDDNzwV;)lYb@h+|q ziQ#R^`os)wG!ye#$B+Yl^r*=AP{&v9_;n0{<1(N5L5{^j_dN^RenTPjK7_dj=7Nvk z#F%feU5r=H%L@jKDBs$6}QmKk$RAI*i zuIYi5e6<`S%N^RXWQ&8X%Rj@wt=$0e`T z`ncI=bZyOYB=S%ZT-XH;LME87oBTz~R%LzCAy? zdw&ViPMRNzvih!yzlUPxP4(0wdCts~6Vo7h0(Z7rHw-T28C9FP77 z=fok%@sCASm}l|s1XXSEZ$&^cM~zR%-QJ?2;GGsc%wP*{#<*k^1^2=?s*OfmIayCB zt|xzQb<~1-D$9EQ#y8dDY8OTa*0Z30aL8l^m5VG6>^76Aoa}<&$CEf|JCf|v0pE3g zKj&t@QpEAKs$-p!CA84lT})uq=+FRDC*iHLh!*@@TFcKiF^qVK`yTrv^pA-vLa959kKA1h@qw zktDuaa1+a56yyFa3Vv@M;S4Ym@uv`mkwH=LQDg#lL@Hz}0NJFORk{PwwWt(4{zE2_ z&96KB|9vEx^Gonlql-IFq#nei9*+d%{NOiW!#8Z`;&)l#2jMYi zAMua#5JRo!;;eyslxhzvkdz6iB**_bd;$g8XR;wy|Hg>SAaYZU;XsJzmhm7PPz^$& zc+`TiOd)$$#QnVoaksU&j)==Bi#ndPJP^ua&e5fu1xS4wbr+<$(QD6JkDZ(|M(eVXj{uq!1%xikioL^Fx90(pD3i5bY(ww)6%8m&b_d^k|)Tg_c z{)Y#V*N;pw7gkb;wIWt5XofZ+XKmz^u2LWtpc2E5iQZ}60iJ>~bsf`%Dx;100TIeS z+4p*T5QVyKn&jT*64W?=64fP~dIaY=z=3&1KNnvbtgXvXW&q!OpK8WDRVZo`KGwk7 zJ5lCtQ;FMLBum_A!^h~+4FPQ~hcjYrAKf|~rKr9)T=gBJI;^c%YbkwQDcd+DFoht^ z*C2%;8QyywOKBfs^N;CY)(4YMGIbj&4lLvGZS^mB4e4tA;5l7mKY|Xza>A)U@czag zk83@NkuhN)cF8TfIo$i7)(61h3@FB8-e?P4j^Dh)Vw+?nlI4m#ah}}>7nJ<3p)my3 z;{Pj9lZyz2KikhmX2x4#iv%Srl)3u!F35{@TiyUHr|5)HlqRD!dcm!v)BT+Cf2XaV z;j01T!CGq;0idI`Gol2}d8t>jMA~1}kyxVUh_~<2PdrT80PCOcw;Tq%Wlzv9&IX~V+^ z*ccFQ>jqZFp&H_6TFl_4Hd!BP7=m%1;yR!pbEJvYL z(Jj~k03zcj>f#*QNEVrl=0AM_3bep9Z870mj-|i}Z4>ZB%Uj{9*(Q`sIhD`@pN(nO z+V7xB3cw^akO}R-sOyS5OZ)n%*1FnLfYq{5;Ej5^_G9$QquNVO3X8#@$pui#O6}sw z-|>mteITgyZ}%gW3>)iMj$6*8(_kQzpQ>F*eAQ+Ax#p6ul0-%Y@Ck2kB4X8zvgLEdB z1RU6OIv4t&rf3R0g(HTKGxEgNPSj>)xJ@Nk#JMEd|Nf=q4SC`SFn|++47dQyMi997 zh~GV7cnRj}qwfpHFB<^YV7``Vv@H%x!tZ#?%kh>;xN-VwP`ssWs1aTPY>hW#5pIBU zFswqYrHy1w1-C**>);UV$wQ6S@!>}6RCwTe2m2{M%)5B$%81jYAS0MQ#Aq1?r$ZPE zV1E<*bOEbqV^k?)RM!Aw6nsKOy&htW8WC!Y8W(Pini64*n$5eiSgOWA)pVz7ur-5& zMXF{LRWpIANi@(Ey~!aCe_mG^t;zS{EX2p^7iJw8=BL|!P`CYbmcZSlre*M9u(hg$ z2xC;-eOz)jJ}wO&hOs-P;dTe5oikc{-7jUd4t(sN<{S;&?3B{%_L}X#X>U@v|bFY zsW-HN1Z`Nc&`bnvCPTxT!-FTmuYhJO7FsWYHjtsU@`g5ypp7jS+Dw8L$IxQEp&1EU zuVSGMBxu7JTAVkuu>{TZ*!MpQfMNy;4NEkWhNZz9DH@h&XEDPPTn(h;u*6o|lbL8( zf~x;AEW3L{`)|Xtmp8QkHZ1#jL;G*Ta-cV~|28a#ctiVd!*ZB6wEs3NM|ng0Z^Lq| zH?;pYEGKwF`)|V%GrcF5{I_A5=nd_^4a=F{(Eh`)^oH~whNL$XH5_S^O|v@QV8YS* z0Vu|wlr=S{Nt0Ba|7DJ~%3U=-2ZNHr$4$)s7Xboxe1{4Iv>zLNXI0&a1Fqz4z<+ zf7jtT6&^V7%7NJh3)566#5_@X{Lx1$oHy^edB#sGA5mdi+J&?)-+a5G3VnV3d;|PT zlu==~Zgso09k(h_h0U9vZ~o1nV^^y1^Uv3Q{+eHpA{CxGHU8AEyVA?6@c#Y3?msH^ zu!0JwO)HpoJL&F6DjYxl)A56k{TiXdg$rjd{QLGRZ>#XtS9`zuRq1v4DjYK8lOYWr zXLeNK&Yg#MTBZzdroxpg`>g!>=nE}WxL`qv1%B`QzNf;^KHL7;#NYv^R9L=zMEN1D zLdL3a#*DlfMejXGR$;Sdr<;9$d32HrYt=H<5^ueHUxk-0eQ~L0$6vOp@Z7l>=N^2$ zwXO>H?tO9Z>$jGFtimQu(we;e(ZF^p?A$rB^PAH@YN)~|PkwvyS>4NnRM@w#zVF;; zzCEMD;NV`t8}!fbQsLC8SyNYU|5K>2MT?(Xtapt2P=(j8Z@oUF&$(49T)n!(>i2W& zRaW7hJAd5ysp{i;D(uv$S*OwOEDlxSg$vy-tXlGAoC^E(o7Jzd{-(7mJank!p;CuG zIIhBm4c9g7ZF_a53d@!aFWdduD*aWsdGnLam%F{wU4?7bWUP6s`k+H995ZI~n0GFm zt)jw|lqM+yH&)G6;jUfBcFmbQvXu%44SH+Psiqkps4yrfHYllkXsQbD-FtZNuafsm ztMJH?az~!YwEm*PHf{3T+&VDxCl&hpSMd+8ShleWM~<8`vd-_v5>@hUujzT^1?tH0@^!bgveJhDbOCaCbwKUe=*Z(`O_70#S_Yi7>E{2x>} zVnoV_s#kxUsKQ@<>G{j&3%;14!m3pVR!!^N*xVS-u0|rbSaOL^!=_;H*zxw>99|rDJ;ffWn zu2^@lVH*`b_uR7Q8t*oiQ{hW59el}FIBbs!H*G51WbZWVH5JclYv{Z!}Qh(W8}*KKJW9hYFiEJ<)X6 zwNVxo8Vs!s(-Tr(Qejci#iEU2S9_^&`t8bZ_v>v9y!GqrzytmEn zPgEEhniN`VO>AowjvBRV)W|a@bSkV~eN^=mlbRk@;kVz;{kB>o{SFmw+je8yq1O{; zsjyeCF1=P%+i*;Uixy2;bn|-4cU1W7v-6(~{3`B66%HF_8&=wWaHtCN@~-AxtW@;8 z3MWrKIeE|8-+xqLrAmfMsr|#|sxUUTR_x1zlBTOLARsg#Hay6n!tCr9vipdYOH_FC z=F*!{GxqU;HR_V;2>E`swaZ->5S4hq6-TGeZ`-i3O4 zBbNS{7d1eISO$6g9Y0>qedp|xFE@v)uttrsHO^0Mo~^>~zyI_5tN~L^D*W!dcfYIHu-$GIjvoE}=&8S* zuBF26-3N8g2wZbRh3(syXXL*_U)CoUod6w zQ{gMG{Qb)H?AaGo*t>Up?+IDy&c;y26C!HD{}^PMw)`@`twh zLxpd?x#Z0j5BK#};px*;PyhMZ_b;n(!-f?b8otzJjtW2e=*^Gz-HUuxg#`uK1uI{^ z{iX`{?~mF);=$6-R9L_M;`+@tcM4MBYp+dv?QZCnjVeq|em=R^x4|b=IBC+ENjtu{ zwqJ!YG1p?w{4(jL3XR6b#{O?Cdq#z?zdro+!!36%R$*e|C@Z`y%Cl74dQ&olQ*MGZSU#{;p6<)dW-IaD-az9n!8*eOsw~R%?Ps)AVcojPb%WQpZK}eLKkoGL;*;^`{J^T9Xb1VP; zQiWk*sbQ_R8LFwUWy_l__n({cM1>nSezY;Nb>|f-Ja(+ku{I~?+)-i0ig6X^_kMP{ z3P1Ru)Cc7)CCw`A+O>YyPGdgyQ{j#szwbENWAX?UIviF*l|6$8GHrztzJz_TetE^0Z^m96oA_6GzqjB1#_bnYZ#XUS+qdtc zzK{Rkqx2c}mfXiQj1S zxafcHi_TN%-l?W?<4HQ@0c-Pjrq?TTh=Fj=giqQr*_!gcO`yTuDogGXLCP1 zF7dl#$D=#?Ppny&`2FVrt@d@7|idkDkBdw#4t$sV7eL&F;J)@!S2R zCF;Qn&n16(Y4xx7-SzNaM}F|n=`VD+|Ey!TtY2{Y#Rsp*9(VS4&;5MS#^KBI+PyRD zwz3be$@=A!^IG5Z?Vs$}e;#;z!~UHUMt^nWh0iYU{c+njt_q)d`4y>+lYg-}To{NI zjt|71+>2HbjAwIeQ&X^D&DarvSm~1{>1MWsNV+HBkCo0M$sZfOm#e~m4#q~RVC-g0 z7-KMHj9(duJ~@-mf#}PUt2jDqgZ_DWi~f0A=^uRx9^ZM49Ans;(RBo(Z_EBoAX*{2 zdV$z|7*UqYdz$CpcKctHSQ>Jp%jIm>u&pte9h=L02IJRq8N_I;E`-*SofV4QAa|m0 zHAYi*)(yudJ<|%Gv9GhQwb_5V=IZON-JRTLPwcn<|NUOUzGVD9uV1ctqU|-4XUQ-B z{NeBS`tuqmR}1ddPOIJi*YsX67Y8-l+4@~P$JkS)H9uPAR1K0KW~?!Khmm|ykEAl zt%zK9Z3?no=ud3G(h1is#AOV4K2CX?I(;WB@B*Vk5cTD4Am zqk5Us6EzQ(k|6)|NijmwHu)zX&@G?Zk4kiWeOyyG+8wA?nNp(~Lpg~zTgi>E^6z-R z)ONy3zh_C`s>$E!!VxbYD6Fx<$Cex_4Fr7gjMIEkU8(aO9zn_d&G2LyHJ%dAz)hAB z=P98>G?#gF=a+RLw|2ZT_Dj0gni>(jlU=O4H+lenw@w~^{F1_=ykGT5kbP?U`C9tf zN%r%8sBdSki7qIz=4>j8ZnW3z^Ld9Ine6sQ0WEw{8_--BA-WY_04TwLrEe46xe&P8ISjCCwht^1wJmhku~+T#WAhH0 z{Ed)OdA8ATxsgQLkqG{o$j4<#KE{17H}Bf5xKgpH*$dR+)x50+S$(Mz=qB26T_L=z zaknCcbd>Xz?h3IB$FC?fu*IEVD&SHa;`BQdPsy!$LyaIOz5>n(K;uw9JJ2^3I=`jz z>-UMN_e0|MA-6;X5V}v!MpmlS^j z(8loU?F0OtbxD4TZY<{R25znP>{gRx<6p<4)b0wPX!%cA?5{9@(tZw{u&CJcOR?uW z#z4ujdWbM&@o+H_AoY-S`zILB*dfJmiVy;w4CK1c@NY`_m&G0`hL-3vcCKrRT_rUyXYrEG&{U(T#Fm#cwUe_CDSp3(F`o zZ)13qk!Id*=51E;ZKR5A7XJ~BA%*(ww(e?G`LcYA))J+i*NX|zJ~)eqp+srFJcoy? z3DtgWA9eB#DJN~$eNM)xh{MrPLpLB?Wz&YdRmoONIfqZdILF-NkO0-x_&j^%ArRiO zH<(uy@9GI}+Z*2JwWbJr@yxl&Y63zRM>}{6R*v26v?Cc(aJ15j$oZ+h%SK0oSqGh6 zJkKixQnNat+dX|7s-f9LK1kHD8RU}E)sznN3?Jib=<^@KGl>85ctzAQOwo#tHLEXiw<+K`lx z16MSQKt1_KMF|{H?)}HnG652Z+K+2dAA((Sf%=wt*?bkhq&-Z&91LL;=^->RIck3P ze<*eGuhgFyNm)dVKc_gl$B+LS+ebb9)pZP{g&yL&4q(tE_&vH$PXYA-Pm?;E-J?Lk zX5zXg#}S?q#Pe)9m}^VprloI@wxWsL%`U-cRAdV}O7fDN63@k(6!O3yOWK*wJ zut!waTuI@)Z46~8J!Y;1E?7P`qhQrhRY`wByW$}LqW$*FekDDMZ!Du9RDV5>q z^Z=C!@ox4-|CKu)Sjtzl5dmyowCmqOI8q7|%0()}uO;_M`Nf-jn0V6R#5I%m1OQG4 z;^D)txw>^D7q~8F1AUliJad2%jJ}^+u3_{pzWP{toOY3Qn1sslb7i4dbt9HMmvRj& zSYX8?y4J*(4t(*)0KKI290sGDXd{MjSBM{>DQRiv^1sxITtK?SoMzf1Ux{-v18Y)z zNN2)ai(AwnTBkj(_u|D)lv8OkgGK_}5TM^pK%`B;rzd{a^=BTDR?^OCOw5+9cmOguk9(JZy- zO7Ro3B7dR5{_q5Fup)hgNYK2{S1>-~fec@CJV&w&p|jL`6u@iDDm#x7(tD6nk9EW6 z{@5VhzlEBNA3_>k6cP;AmrnL`>*GEFz6{38XjtxWXshlg;75`OxchaLuf$wGbFZ{W zkcl-%qnDuJ_Csx7LYV$3QU6dc_s%ht4D+j@9DbAr&PMk9&z-b$)FGW@MQ)%x9rc`Z zH4l|?;gPeP>0bQS3jMJUG}G6endCQv1Gh%-otIZDoYeDo3hDa_bsljvgb}&dwKEyz@<{aDDH{9i8K;9t zyAwFcdzLBxH3^krDW5|fTJIMBab!?W5J{c>Q7?*9zML*|{iow+T|iO0LdQmuu-lwb z%v5jX-~$@Fn8BPqi~?!~LHF&7e+s1Lp}EV+mXOCLK5IOCwr=B;@|Cw&@mu!IfM)aAo;klieJHFS;9lcU#Wx!$nak6i7(U-xu~S}O0QjA+Rg zRFytXF~$y35*Ij$eyXNXKPpVvJ)1vMnt3xQs22>pT!Hrh@ao=FGfh%wNs^m3rHa=l z99qRgRKXPYx{-S==6^YxCyR|QieyX?p!8X~+L}X1j&($zo!m=8gP;2lDoCWNq_Z=b zk2512p|j=`QP)m?{7%n+{v|ttdD}}m%0)8!!66X+v2L@3Cd3DLCTeHF!Urxh>$OX~ z99fN%&cM^?R?)AJ5DllI%+2AM_}}Jhu6&jD@^u4W)q8(89WRVv zq}ao-2P@HAfypTfGZvwX$`g{9QTQ1rQ&c8m(~LsBn5$J@GElIu6qJMZGKi(%&pna_ zAD4nFnTlH!{G1GG-*}CF7^Es?Ehonjy1B@u82=YisAC0lhFWS$Tq-3#GbQRib@gsN z{-Z1L@s>kMnJ`Sy_1n5K%MLfT3Uw=rE=`X1+&;C>M@Yg@z_p zg0<>b^l(x#^+035a-Pc|@ns%Ji~c3g)Sy1!^%!EN2;Db#TVd)z@>-A6#kkgH(zZfHAYl|vQ zA>95ovP`auE2z<`_&^#M4#|t z(L7r|V9A7cu&{AkNcPSQZa5=(JM%PyC3Ui##u|NDwI8Ru zJ6Gr?0sy-G+!MN;1U-drvZojHE_v&&#lDG0(^3d3L$2n5c0iu*lPtJrj zz|uFVt7l9p$yX@^)1^wK)O&8J%w(yDrIg(C*j)b8KTn<9?EF=#f3)RwE$4KL37?sm z;nbJ9hpN@Ltx`Qzh#cWWid}(b>jsI1(YBqiUc|z5x#A-}NDd8I4}MJsS=p5GE6cz0 zj&21#WsxZYM9z1H4-&pc)(vvd<_12*dvEv?YHGg(o&GrnT|^G+qtW$LJ9g_HyIx;h zPM@jZQ9w*$`{o^*bo#iA4kC5OR#=Af(G_awxm?;!Ad|@$sG25C#+Eio^j-fdEE}2O zeYaZ?xwS|2qB@b+C?+sZPxWJW!MIjMGS-VKl;VH{e(g(iKi&Y+iTGzfpCbKFPf0J{ z08}$>JoHfAe-h=^gmk%HQcm*F`xR2I4tOnle;JUR+re7TBdi0Mv})B*&W*~T9-Si2 z%3Z7!mpB(lmnZpi6C`o^m?R$!yxP?JK6O>zY3ePMdhc=TO^K*WrCxJ=LLu!j&PVX3X2N1dhz^+m6Bn-g^HzsbnG_nLl4$i1smg@kgq z=yLA8Ds?Zp^74XvbbowsGVOy-(jPr}*7TD8xH;L61+>_mSBR&3Kg)BGfB!Ua{;0jZ znzwhL+g|uK2e4wwQ}<|z+`O?`zVeCM)qnMgQMavIL|zZo^;WA-4kp_<%4C){mg)SV z&U#L+dn>gAqplvS+xbOqs-1;At9xjF%XVH$kJHY(gm;qXEmf@6wD(cdUO7)mwK4>C zQ`Bp+$kA~YH2%%byTP^+Q<9AcHT7MQCe>?hG=VR6QD44&P8OV?ju5v=N$)lElf?6W&6N0-T$Qhw5;LX5LbpU} zmUx~Lvbb~FXju^X#(|m;J%3KYS$&&w((Byj7Qc*v0l z)sb-fiIa|cEy%WAdwq7cTHTHEF4s`ktN;8exrCKM=g6?w!xg8nosjH&?hOxJ6yDpW z7Syg-%hguQEoy*DYe@urdr18D^-etlK7-e*K!s`-5H+f=tL(XX4Zi@QK( z{U|`{=IQyaMX^->9I{>--gie3BaW!$f#?d3=L?y*V`-Ycm`LqR6Z0-NXfIMPds!f&9O^z^3NarKp$0ACG7bXEVklu`qR~C`HYTzJ0E}mHPqcefa-ethM-nS!eh02 zEVqh+lJ-Z0e~e}u!iO&7cEwP8z1Kw5uOuWk}sjkE{FQN8-DZpt*hd4Zg%bSI#9zx8OH=b?1Hfzs^k zZS#F3)n8YM@r#%UG+azzRT`TGY7FyVl^>}k}s5Ps6ymGWlGES#j^gQN~|j{OO5pF+tSKLcV?;oMmIpZ zVu?rUB}h4Yn(7tO4Yyj6lK_DV7s?MGL@Z|udZJ>}hzbF-Z3y&2mOO5J(maMPz*yT@C z=sXR*QSJUxuacju;=VGsBE8OvtrqH4t1f$F-qzE{EY+||leF$1=o70okI|n3y_j0- z-e{)4C+s)LR-I0(^t$lYX8MBQz~C53AFzTq(V0$UVjewH+A~Vp)9R4+?CxROb6dY; zdtR0H9Ot&@q(5lSC##y{`^*OLT_O6(3%W_w>a>PrJIhrk(@qm}*Nppk>syX$wq9gw z#~))uP2yepz0Msy_BLO>B<_1P;qlHCn_4VGSXTm2X3tFT#(cCz7UjZy%m8=lM!BZ2 zz8%ed@-6R6Z@#~#?;?0=FJ%LA72+oDq|_(2TRLsH@+zvYFMr+E=f~FvVsoXO?34Bg z#AfJkZ}Tk>drs12@Rjn5d1eHEL2b=37oHR7C4SEOyz~e4ppZ_hqE>V@2-g zuWEBY_nynmrx$dUm=)Q{uM)RMslR{G#1(V;(r7{CO0X20(GcJx+O@VejEoGg0j%nZ zV{b_lwaWg?X67GXZZ3m|1nMDdM(B>^vo>INX+Q}YU_x%L6_INiqWfgccoiUhRFxxYSG8&ng%V=>-%^9@cU^wu-llVZ07mF7xzII; zlp4BDkH2U&c@k;Y)k<2))9Uh@v>G<)Xq1_A!5uU&;91>yvr)tJBIrcvoZv0wWVqx4 z92Q%#J6j9&wKz%$RFaNPgXgVDd(DjGoG(zhXk<{NwRj17{BoT8LI zLzre6jU~6PYjPGL?{)r?TBm|%X_|Ck*)^1|Ta3aZ_DQO|(8b~sYEASK9aLEdk_`I+ z!BP($R<3e=YSp=Q156*Uz$^E7a!ufY;A{Fa`=-?9{JoL<3-kTA(UH5*b@~ zwce)I_BzSWuo|kP3!nPj7flVVGD5w{j};^P?>n=J$G=IW)G->F?0k@6cGZH~iFr-D zPBBo%vhS!T^UY+gt4^%9kmk+e-z4ofIozwgC8CN?W*id9Lm`%ST~QcSL@tgA^a4tSD& zX)iH0U3uKMs-=ITd_RWB)<+gx%C%{JE*7ue(%Rq3^MB=UPjt@i?)lWi!Rw;$)oZPD z@kauSvgvNxZ}^2uPeCgU-A@QhHhC7hQ9~$zU20R}&E*Hd7od78 zrY*gl#U;H0!#R<%+{b>H_JJ>13WWxOM>Fk0;tfL|^IZa@{?T^{QmXrp@-66_;>W&7 znCE3;(2<1JswqbJ_I1S0mK6ih(OZ+gxo!SUDlMSPg~BAe^hC26Mh9q@2f9-h#8#&sd^w$T@mm9;>2zF2D3ufi`QMGz5AK{ks; z8i}|;vgdGLn~c_4gwn|yv``v}s7S5l1kYyuLzorpG2D^6sIEh*Kd^(#&e9j)U-0w9 ze0gCuUCXOzs|7cEOTP5S^njI#cf}EVWky}rGO~^E4Qs6C!EO@zb#r?Vo8$2=5fzU^9T?L~n)K0y5Axg3p5tYgx&6oRoGf(r# zMs+uusT6FKcS>-f$^DBZ@2hs#X*sp~2n5dc026*YW#pl9D&u;+rEXWqUMLM^d+_;m zk#;RBoJoH>O#SLxs?q9_uEr`m4JJ^}U8}1qm#T&Wr|wbie>G_#NxP9Wy-$$pb9I~f zK1{w#Xf$VpK)Q@nZRP}9eN|{bzN@=vO3Mkkn1(o4P$JoXx&flUcE*14wdYX#Nn(8x z`!jZd2K%UtlA?w-twM#2lN0p%lY!12V%b`uB0Ij->Y*%Qq0o8aawbyXDn4`{XMalgagwg2># zu@MV&R};Pf(by$9lz2x7_a!nwCcW741n?ttLhsWWve_(1jvwTYY$b&k=BRhl*gA+^ zti-JGqR|(ARv)0F^dIM)upXc?!GHNH@*;lh+APsWbS8@h7q=yWrJ9r`k-bfv?~Ss^ zcX`tp%?BfYwY)aFJX#+AZoIc#-wf~DU`O}Z(O+V(=T^ZDt{*=uQ}R0VkMSu7#(d_=8{$D#iW3TmTcLy~IK*Dbj7H;6C&}uazUzAWs-5__pF}^-8>f7McT17H+nKqvg z6N0rzqY6S#g1eRd8y&>{2$a(5R*FNJFNQOjFWMxYRcRp5r${^;zb=YyuRAgPO-`(^ zE7s)j=CtU7f*NbET!|3aXNPxqtSO>nO6G$;82$306u{Gr z>&Z<pf2{_3r*)qI_y zt+`*$ilmXpj!yEZ0{Z+xR^2*sA~4G6Z-zGtg84>tPM%ngw!xL5VY7m5dgCM z>M0TG$`_%(iKi#tOGNxQ5QuJ;MOtGZycmAhmH?bctJUS_NH5BLSv}R$KT9>(j+UsO z*q{o8&qLy0lV(NU5Lo00Z^_Z8HU7@KkmBF+i`;%%e(Bmi{MwU?y9;ZDfAZADe@8~4 zVA)4-Li7h5u_}b9;pG|OeHiebps?5rMW?8d6|jIV3$;m0`v`DE{=U##9QzaOYE75b z8=Nx0un{ih0aRHwSYv~8)LIVx2p{J|SADd`EGeOcdX6M)TZO@gaXw|BHhL|(dcUbs!tMXw)y-^Q|h8XnX;zc1;LXH-b1p7A( zVq%G)hcu+&ojV@%Id#?Dj$M}}YxV9@ZbPVoIj0q~iX^p`q=gT>C^W2BZFvi7>w>nO z)Tr$Zy84n;G=qhW6)A#;q&3lfu73EK$Rj=OLIVP^=1qbBO;aqIa$%M_+BBu441ulb zs1!n?uDy}hIzTL@$Fb+?Se>dfpJPKraUoLV_p$(BQXA1uM9ee5 z3*VgOQ62aFpo5Oqt49|Btj=@KLOoHTHJ#2P1A+V}78_#3L1ChRT``-Y!08Gc^?4(< zzM2bV#Rrca?=RSFnfS}biO3H>3;!1}0b0}k3BStl6G<)%FYBz>gjPRm`nMG;Pa;JB zLPo00{iUEJLg;xu`iW@mw{d&&P*EVd)0#e(Tr$(xAAk|8b{j)rhZPatlj)c}kT&RV z+Wq)qulnUv7^22unbTcy6*d`B%Rmn8bPJx zoj}1(tE@MYM{ftH!GLg%<25-x8z1^6P>kv0Tu$;sWc2X4r%2)L8Ueumqq<=g4#a< z8cO#Rgd@{vRDeK_2|K;5CmcWLhx}?2D}IPPUA9=Id)QZ^X9BI-${EKxoMMb=A9_`5 z+d#FdZRP6V+|L7GO<~vmKbigSt|DfELJvvXfD1ERrQJiHiS`UxsFMmlj1@41K9Xii-P_6{!;X>9Jenm3^f~ zkw7)+9i)cnz$`TqktO(Ph+=j_uBf_7kvJDJz(n7-%KRkS;RER$OT*-F&2mu>%`MWw zXgwNxN4MYAF}evXFb(*b^qOX>4TuKkCEkkT z`%+0wO$4Lkg!2himY(gM3+kj>)p?kv8~zc}TV?Y_JAwRPvnqDpQ$(@mxuDCAthAG_jBYJx4K zTTc7+hbDFTrFtRtU~3jd;zTHu!q~qay7(C~l*P{k@$@^z#}?riFN96n z-$tCoJaPl)34)mnnAn62Ey~Kyl7>&G;i?ZD0W0BOVEVeJeEFGqAZZPl`MdM6at&QP zyCFj?grE4>5xTgaxK1FS|DKLwS1p>$)FbH>yb6AiT=DESU@62oft+#+MjtT}ux_qb zn<+zvCJn8Y<+o&2%YMWO1MjLnD1cJ#7UVb3UNX?uo6Ks>nWo;`biIuxuc(oKfA0(U zU3*(i0um)}Hzi+lOFre6tiMkjF=XhfzpP{b0cjO)U1;*oZoApoc3H&${0d4qC)~pU9PAvoqI)rY}67^pSOEt#|g-si`&0R|d z+!AZm6Ykd;sdn^Bwc|ebYiG*p37>UGZK6RmMR|1_992k_7{O+Y*ZL0o;kwtPf;k-C z(5^nL5L<3miCxGJS7X@_YOhY$9P%kYDxGSbFBx5W-3Yw`tqk8deffZI0v`%BKe_3v zB)wEdVoIHz2_HCq4aAIx#QI-MOY79L(~Y0cOPj>cN0hQ)Sp2gImdjq9;^AuEZ$IdKRY*#rG^y|{s67A9rlMgRAggxu&cLZ6h#*mHY`Ey zl%v}`aqj7Ca`IFdviVzTMegE#&l1_=u_BvLR(K}Gik#0loxEL^%fvY+U3Z!D5O9+1 zE5gk*p1oN5iGIDdk9a>#JV(UKu5BI$yi*k2!WS7tp0~f?r;RQxSK5Z}?GIVKr`aFKWT~59hD!jF zRgN5j@W&p5a7SJB#HhKife#0bcz8mUGC@59&YD$C4*B37B0Pf(QPv69jHc%#qr)}lR2I} z$P^bL`E76GclQAh#2%BeU$5we?+T_EIy`Sa;XYSIadiYaWNjDE&M;s&pKAFQtEXK^ zW65sM>k0}sV^ZIfuI@xTM~yy9P9hL&!)^Y}Zizy-?w9u^>n?uC)P1r5OYr@xf<0uL zxz+T9S3aWoN&`F4KwrTYYesu`1$$eE^|Do2uew&DIgCNtxb%=Y(l4`Rp-}iAIJL|E zC`t+E$OQH<%pk&}0g5>PNtJ_m3l3`HMO`dj?PVx8MT;_I9R%+Eu2AT0cEo`ZSqcqs zjjGT*(Wssx*(aMDvI*{!DWy^Umo%iKSeG=R1GIX_} zuzM=v&s)~%n;^b(UPf<8=s(i_1G@cB2@+81)zb{~wiWH>0iD%HpEGAVol@hK?w;iq z2pDlS{ZjH`AQ%vC>^9D-NXr_*iS!qiT2r0}FS6g`WVc`M6nH3NDA2~Mn1{V&w=au~H$hIP#y zSJFT=)NkaaNNeLS**AcC_zC)+%##5EvJ}No<7-vs=536D|?bcHb{|uDU6njXt&^OT%@zWBP(a%ZzTh6zqKWOILzkKnB z^KJiK?tCkL#RC5alzDz(uUTsknR4kjb=n|Jj~l?QQueF$eESh7D;r9+oI#Ft)s;(eOF9sI^QMLY1EYHg-hfqJ_ zO|-0m-|vAAqI;>i2ohLp07rJo4{Hoii!j_H3kDRdoYgnqx-38l9lv?A33Ou zmD+)FH=n@&B6*dCA#QVjfczC?ac#aQ_tm&_SXN!%Q{&D_2>Jo#vhNNx7%Wm~HwxOZ z?Si)Gp(?F8+VvXkjw!T{EsX3asc<#*wG3vBcH%q&cvtQ>c+caTh(qk__3F!=S{DzU zqFs!HC^TstIgO&S%#;x=Q@!&im`|1(Qtk^W=Xw%Eg~;*jH^@ujbKJrpJc$xuk>9r} zA&mU-b05>$PVOR*_YsAyfo=1c@Equ^mkDM16MPJgQY`2mpp0GdD-EQh#g6~ucjA60Gg;Jl_Kekl96jHu zuiq8@X8K4eADeo!e2QmZC-u(my`6H#mrPC?>kVeP$7Trp$Ba-cb9kd1rp=ew5%gbA zDos<<`fV3{BkME@>~b*qbpfChy#YECWrsN7dX!B**)&apI0cv6u4#nQR|YZ$$ZW# zxLP@93W_CN>R>8NgW_NyhV6nqp=*rsTcZb;wN+o|3W}39rt~jyvj)8$LNTmYUwtd& zb=2Bk+l}r#z6E1(UL}6Av$r$nwCWbqk}G(WkvbK)QtVlZX)Q)h)0IMpmhma@WtYv_ z-g_vIQJD5><^8g zNo_Rk9SM}9Ji2icdl&3~;L=+b7EJ#pf7Q}+`P*sSr-_N5!R4re4FYJ=iyFROAS5@) zT~B7@6QkhzJ)P6){+Vb;LOHvERDrU4y;dL0&aG^vN2IxKyqrRcpQtm6J2`~vpb7Pf zU6DZ^b;U`BQ{;Xmf2^BO@cnT{5u7baxFY2MVM~KBzmx#NHyT{6I!2eBILRODq|W$h z4=uqjOG`JDy?of=hg~}HJS~Wpsr}n9O_1sIM0huzPqg*%d%X!G>Xh(Q4%MVJt*qRqhAF z7UZs1KXKQqSHhD7oC)vsm<6l#NLA5M--d*T8;iQ3%utc&xJAQ@7o_7vO1uFx@yC`X6&y$tx zAZtzrml9-O<5n*wou6}r%_iPt$J(HePg>;Qd76;hi3zItI#@_r_6B+EijIH;+QYwU z1XUZ|l8G$Mr7k{9bwBJtF{6ny#!(8j2!jk140#R6s;MBru<_q%8%r_(G(JFlc}A0=uUhb6-?_Z^=cYx0zsf7CG`n{#CX-~ z&}Vn+s(v$cR-2F4<8H=kcoJ++p^TZ`9&(%Wk;yP!AC;yBpG^}RMWeP+$S$V32IogM z6bG=pnbrZlH#sL4OHHC*tT6<6(p0gKA6JgaitrN`k;~nBunB9qc}h&yMD>ZP7N}pJ zr5<$rf~D59*$^S-%ZW^oNM>sx`W`uAM|{1kADOmbF--6XutQ+pigJ zbB_c7wG~k_6_vYRr@E*58bQ&uuhgrpcN>xZtt7^?Pm>}v?9_FJa4RGkEKYq)`rhp5 zhSfByqRs$r>1@f8;-`I$9&LfHXY1X4ZY1;fkFR1lg zq9|R_TXqKxR%opQ6IdU3pzs8(+*PA)|8p_9XtNyG2EEQiJLOZY`` zZm3nA0n9HG!I3r17NT-hUaCIz&$G??9CBBl0KxQnbSlWIcQ}J76{IYhGYXomM>QPm z)p|Xey#J=<`g!L#gLcEBB-)4CtM_j+Xlpov_Ek{YpgnR)Gql}#Ue*0Y<2#$aOyRq3 zC-{1Phwo-NMVho%YdM(2k2!x8!31RsX!vI7zfdPlw~f*61pa>Xoj>9Q?dN zX^)H2Ukyred)_8Jkr-@fexq8Ce}s(AJNY0O&;3k9M77%di$I!qB+XswLg`@enl6Xr zCF{T3tncfrR{85xx@VnTk%DeB&k!_VGx@{DHPpF@`rP>g(6_mu-|23|ha7855;T*Z z78Db-#jIxuSsqV{=G3&8UKXaI&l49!M0_fs=TipkxH@-;Ocs6WH4zptrc z#<`Mf6uCrBxc$$^B;hb@J-tNn(Ts2x~%RF&1WWl#!eF5eVPI-890RIC^?G) zzv1>@t3F*J>rZ=LT8@?_39%)Xi0e6{O*Vp2iq%9t0xUvlyad(qWl==$i~NCJnk1}2 zOuBR5k?T|Q*&+IFzTAbo1_z_opk8vc9vm8)J%Sj<5<)l851esG`*S*WQ8jO(8N_|7 z8IF!vlAc&E{J^&0V)a{J;o({v!|G(R>nkh~K_HCMk5^j`0W!A2ph&=-@?#ZMf$~8f z)v9g+7yg`QxT}7yJ`NQ=aK05e7d1J2pwNnN)RKqutjNVYQ1YBa|GS0%Mg4^Bm5*j5 zUClfZRpBi^Nqm>P!v~HD-5%c2g+>$6S! z^6ca=|A?L^#}jUj&)ppVVe~S-WSMln+W3mRpkDO8&(Rn+@*@*8j`S|^|ic$`1Ugn>9rS`C!N1TLJ>0?f~F^d!J1z`RB^V1s4mhRY0{Ow?GHL&Z#p!bs=D#%ShuqOT4wi z_-7a-^qtmE9rB)c$a^h}(ma1&^LO#`j4T6FYmO%$PYXFdXU!St$+ubSY%wqC`8Hp^ zHZQI6?N(M9+Z8O?_Ob??Vv;lRZT!?q%uDNhyR}ue(7d$Cx3P`O);@6C=G$$pviHr4 zH{Zs!R{R?Il9_L3T4isWmv;F!_qxAnUfSo|?X9xc%}a-TyMtBss(I;{Z+EoHUN$eC z^6gGm*@?W^^DKq~=w+20!Tb+!E8n)*&#h)>+_Le;3XH0%>#qBubU=DjNf)`Pj*ye) z{CDX9Pg>}EU%}Ez1FdP(fD{;2jVUF=gB=p*<^_G1m+m`$+_e?-N0XhuG;{)S@*lS=nZD)~syoOLy>+@s(M@=Ax6%CB~Qt$W3um%)pUTE__;8tus0>3uD9AauZSg1o z9XzCX6z$b{OFyz#mgeYXm|kl;PwCY5k~&>KidyZ2^`oquo$)*-$9VyR$LZH~ou0qk zczSYR=?J{x43E{G3eDlzno~HTnh=VZLd0-Xwo? z^#V+0pO5DBOmAE)t;kQ*ZO78=52bPXPq{Dm3=@f{cU@bdyE~aJrZpUgvCTAD!<$T# zv9yAoC0_|HY+#Bx@HmYEN8R+Xj^squOn>#q&$?2N;(B%I2}vdM4DCK18q4Vcap)f? ztCrq2iv2aWiAoTXGXWx^pM6#)?UGr@Bvfb4kaX-KFystLsxsYfweSr2(#nYGk~ix< zHS{&!RocbM=>kjO4v+~xYEh14$NLz%l$G#7EP2q+)jx~+Zi=M`2!1?jsa;TYPiLR5 zGofmd53F+Syrs4^XI0R%s(4hDI`zMqY4&_!re>Lm-*c5Wyw`irB`+f$7V}Z+drmUN zuF4YV;cwc8=4fW}Kk3V>4a9xvP4;~8wXoOhx8`_@BFjqtX75>JpYVyVyt{u?ySj4e zr$DTIAdW>eynSyV+K!#m*ogK#jcB(wh~Au6?^zni`-Cvk)IGKvzkQcQKM7ZR1F-?e z_@e`kE2tj(Q!L#XN5c)Be3`Z7UZ6XFA_={fhPAiL+r69~+F)CAgRKsZwxhxHgOm|X z(k4t?w4EIbw)#zye{nGc5mtP!3U$_uap0$qUWs4%sjF&>Umgi561|aBCjO6Peqi--_v zPO^H*;ScAhS&^@K3WO(0ti;{&80#c)Fj^riiy3iE14}2I(!^HKDyvL9H{|soUxK*@ zeeruZV$hmecsdvuwWM@Hni2Ga{-a3hGFD4l@Y7S(`Ajefr7F=tbqO#hOU1nCX^OpHCmr{}r zVK@dD2Eph$tL*QTk|Z2-*XR%F{4y63OtiVr=|GVxpzqZ`9N z&^PO;wdKbgU1ERBMDd%558c-?v4OJjp^YsQx9Y^bEfYW0iF;Zm%6>+CXhX}yf9u3w zTPDi>PPnc^>7-UoAJHFl%LDu^os>=kKLNASNgkd=b?VztdVZ4@yCv7?CEPwWyrb@% zvMP$`V-M_Cb#TXRa@x>~DbA0GIi`xvMN@4)tH@{P3~g8|1x#9Wjm;FmqGEpsEqMOJ zp$K|?I8G2l@k`#e*A6fD7Db0F9Wz^P=lMk*y<(zfwBCqp; zs4mg3onKhIxk}JgEOi1k)zru>8YFXe!r_QAF5l8$_B^dhEt32n$)oXebKWCizP#(B zYYyw9rumXz=h1po3vpU_s5~8RqZvsom``Xlc70R0zh~mPTmkKsjUZWo{F@AX^?T~F66BKyFFYyvMuqcLV%F<$=zCvfSH zd6ILEFZYsmzTCl9S-tyO%xlmpTLgCU^PGP>bS?Gc-f1`T;W104}aqSfzoj=pBqGxE-nGvuJ zGeeMjqpH=`r;=rv~P2zn>i!TGT%;ndA1RZ}M&HfN~|09Lc}T_h2qW+`cV%j*`NEr$A=&DaCAM#TZ_by z)TjSuiu%F<(=xjluv6=0~khXKemem~AFBXW=r4HuCXn$wS9J zIN#7w6TEDOWK7^gt_*`G%9Fa5j7|uQlHY+h(2B_U6rM^;x|0757iwS0+z()Uv8}Sz zRN+0T`=SluvZn{~I76v6uSm#(e?9{t&gRt8J{@6g~>aTpv@ec#XxDdB-bxmVR+ycSG+C&2 z!{k9#?U#7cUS`N$#jDMXSG}!ObRBfeTY?oqc>h_UD@Wh+2!8=&PTrsfn`tiZYnAqr zF;FZ?;lvVzW0)~HYby3B>p?kQRy=B{E-kjWGKqJk5xWS)iu$hhEOcNTdLy6v4`3Q7rQ3YsT@)RW4(8zbk;ePQB!A;4@5U;)sK%GM7Z|W=z#HI_rC{DN&r-9rx2D`k3BA0x zxf!e4dvUZ!XV&(+oMO%1g)GUcQgF=eQo*O6Kyvf8x~}QI{0Eo`J%_!!YFbxR;bfJYi^IDMh}ek zI4*!<(6GQ0${dJlchtc04#!Ejn=Q=UKHzFAOkTCN9Ej22f*fDFCg)VXq~@}pf* z23>Cv_4ZvR)n>-L(N5Y5DRp+BO7G}sk52w@wXU%(%K~qCMkg6Yy243l!iTT$M!qEF zr7SVn5eiCBUKyc5-O$x`LzQkRhN&)grL>e3nmUMjJC7a|?a?I=UXV_j+t$vswM(L{ z&m5-efx4|>Q#Jfp9J>^I0`;y8@2A=~sDXCkLDeqiwWIA#Ll;sb8bMbtjNG-oZt6l$ z$SX~?%QM=`Xwhwb;_wxw<1fz_&HvH$eXF=pQ(tf9kM(PhWu{%h-myOg;{DROFwJ3l z(|kz2W#qH9HS3~Szhf?r_B*-a2 z=M0x0*fsaX(dD9Ok0S)2KTatCiUl{-|25EG&JuWjlV4{$`yv|uL(BmOx_-;Utg z8P?SPAeNW_&>s@^aaq2_IukQ<+_oThS>YI>#eW&OeX%REbUy|>3-VTlI?Ls4)wqCP zuq2~h8n?IABknO}(u2`;Nr^v!R*S?xLmV}^gwd7w!hyl)a)f^SSt+643=bpsvtsG8 zY4YGus2?0vr6GvW7yUwWF|&~;Z-K#ui{v~5mt=VGWE)#QKZhFX9wy!dYheRKPFDm+ ztxN*3b(^j-Z9)X+RRae(w32(hXj6I`m#5Xodx#O1$>*E4zPwG&xta}x-$$V+LYyM@ zUQg3hxhUSXyDx89iZ0+{=<<=^;?xOW%oMj&9CAeXdJrl-x(zJvk>x8`HulHZU$es7 z+J@dUgPgq%3a#0ltB(LC1$ax*%tmr^&gW zFSN&$UkWx-z7^#?NZuV{ul8X=+6FF9A09^M-yN4kf4tmiFg;mPa77>P-e*u{bnddQVtt?n_&)-wyHEFE1Wk?jFHxgMO33aPLtrmW03H4f_N^Ft@ z#IY5^r3a`!kK@T5j?|sWPK-K>j7G11(&*L9@Lvj#im;w?iY!%P?Sk z84HSyK4@XB$F*ctao#GQXDM^KnL)=MDYIT;_Kfw&WF~IM47yYHZHQ(e^e<}y5n8H4 z)w_HodXAov#BRrYWR;00EA%`9OMYg#SFVUGlb8cEzKGkPgshsch}LZQfvfHgVJ)Aq zR$!FZ`I`Q2Sp(x`uHE5~>l?`Bg*>rgnUHIk zm)GiGUae<&08;5&F~>g1ugmM+OJe;xUlQ%t1yZ{y)I8rfdO+KZ3c4Z*Iqq zz4ZUFQ>`iI3FO0ftaBpYUd|{f5rz6Fo~=3U$}QCHNT$5Z9hQEO9lW*&VE|_zlbhi) zJ%s&F<|X6`SMAbOS$dse$1i->89{X^!}% z%7#y8D&;0oDZJwMNymYi!K1}~hdJMbeU6(ran#pV1a|e)`~}O2_{0O@`tc74$t{T= zh;W7jaKWT4les>{SSM6OXL zs@7H{bY8W86!A&Kfz-3yuXV9f>X3!P_3R3Z`K0V@5EpBGtg~J4#n`eS(KMM;Mv9Ob zhFJ$d0Z)}{H02)HQLFrV$o6FR)Whj&4QO@fXnRRolcM@mC^#qLtgYm&a=?b^p} zvfr~Hpb7UAbP^4gt7svM-kO$e$0h81qQzQ~qj_Nulz*tQtdN{cdDQJU7S_BZ|M^*$ z_}y4;C|b!?i9c_--?P%snA3fw*Gck*>rAvmXRaOd`jM);lf7k4Sp%Cp0Zl3N0TyXG z=r27_=5*aWG_#8i>NZB?uClsK=x1)#;RP9*7Li{7P`5la|G>R+MuE$*7lfJWTdFaFU!k|F*NH-=B>x5D zBXWlbzCDA{uY$2F@m#3YJQ$;ukm}`(P{*Pe%c#rJ%sPstxpkqtiW-s4?&*T`mp!3& z7qVdNJg7XFofZpZF>%^af+dN|xJIJ+#Hs0oV#e%=LiDj#;|m!dnootNS2*d0)3yd^x%}^StH0Bb`363_5_4!^i|Jo^hzl$5chinH8QZ-een?-(uEVqqbHid z`GR^63unGY2yuZmUQq4Bve}QffF=scw%dmt>6n&%*n^bA_Tf%V$^W$vt%w5#sLG}v zolOQGSg%iXv5YpvO@8>hy+t@*2#%=5-iu>hS(bH0Y&m1UhkIo7B_4P%2^kz?%WjCqd6L=K}~Glsm4C z>jAx$rlpE#aKXHlK@Z#i38^AcrVLF)v=CycM>|%*h?eTHyEROQU`YQnw2e};jFKSn zfeN*>S{A5b(IN8H1^bgb-pSy+s`FooePFS0wb(%%vbqAGC0mOGIFzqN1RS2R|B5~J zcZ@yA8%%3*&gPSJk*2Xr-$O{dBN*@Ml`ax;Zeujs(bW_Q>Sm#^K}a34GP>S1TE)8R zZjn{D6xHH|ofRn$n4q%}9x;M8xt4w$&Ie{66b;tznq3a%lpimO_YySv2#0W!2@7&P zZdi~@Bx9ugTL7sM1-NOT0M=>GN}5nSjkGkgaJQxYL(=NW&UNbpqrtR;P7WE8FYEcz zO#XB%sKLK0vSux!ob^Y%b)LL;{m#7O!*P_n_xmmJo}DT0xjPg2JI-6eyDwG#6?y;S z+eH43Ps#f)`xEckQF;G%N3#4;@}7|@pDFK;rOG!h=KcLtc}L!7r^-Ji?~7I^;I)p* z`><5``{X^8D33yS8m4M=ztBlyd_eyq$qJw2nb^*n>yb?)Ypw(Xk7$A(8jsufzp1lo z5np(mF^l}!Pgn!FXCjYq1Gw;r_2DSouTGXK`e=Os`?7I>L(Y92BJYw#F7JwnXAIY0%QD~f+lh|%*7Y{}jI4HXtQ!y5rckAs z{N&y*%)`qlt(`Wjw`TZak=#;&gI3y;{b=>rM%h~`$@@uc zoGZUK`L9prmkr%!`OjxyCHgx_U)-WrsKM)#-F%%(+tB5juGbm52GrHJC+RwXn|C;m z32?c6N8ev4OaB&hl}oBh$&n<~ZH7?iw;)uZtPM(DNYMRhm+oBb^RdwVV3O{2Zzc8S z6kWadHlu6F%aEYkLPN?sf6%0SJf;8fv4A*fLQnfHAIkL-aY=tKU@?IwTc zWd1|w*}YkQ9Zz51ms)Ht8$1uc`jWi)QbY#c@iG98mYF=eKbp`aD_r2Y_tX@AhsM{} zR`a^WN%_V3ES0}g^V+())!1{I`?pR0aVgaV*lL#0kqcYP0#Do<9>h}|k78NNiT|(; zLdrTsO(I>tNN|_2yvX6^QGbpPJ{WHF+}ndLn!HFLw)815e92B%e*6;2IBtExL1C8Q zs2UM4c*8D{BRY@7WHD6IDeoYTwpK)T9qZnhX_en553>{WmG$QbxwEJw82y!5sFxi0 zSbrbEE_jxpGzU;sWkuGWaDa!PJp9JP5P8_o!!UW+$HQ=WkWe5a!m|0}nUL!>>HtE)T!( zFh(B4ZzCiRyLcEc4-%VWfo39IDJuuK#h17Pi4(VYQe5aJX}17uip` zevz{+{dw_;s;?~qM4T09(Z%Y~I^$9^7k$HgH;SF^%6r|9PxCPl-JqSq>ea}oUOq=7 zq>4(}M}MkUev>}qb~im=r#GrTZu&6NSq;Nv7YV#kUs!V@U1vdL+#}1U=_k1(dJY}n zA2keboWp*WAQtl3fB4Vi-Os_pf4-8>G;oOa+LuisOc#gGd4>yU*x^45n+O`i5C2(Q zlH~JjhJQ{c7&`6|7$<-1bxzLZC znh6BIJAzF#h9c^FSs7OUlno=WG=5L&k*ONd8FNV0ULE2MrFt0LqO(YqaTfOF_QH}N z3N08STfmToU7D8r&IHnpg=MUpzlFS)yXfTZjkV&^ECOecwl{oBko^y(nc{J@iS>cl z!rl|U5^v)p$U}VE=xeV_W1<^t!f*4Cr(fQy;HPOQk*KT)m-(R`pSAxp4TsUKvaT1p zG^(EZ*MxJK05lQKxgl}cS!BiggFOj2)TkWN{IT-xQZp0Gr5clx-WrSNs7SDQ;s3-U zbU)Eyba@fILVfU%U<+j<4JvQkBh?Z|c@f{-*k!MfmMA92z*w}Z#kVHYn3^6WhX|^k zOeeT;TanSAD2~GEVZ~k+5lv4fL9P&KRQtyw>{=XfaF6{(s8Je5Jf|J%WR1t-2MTr6 z{zm=IMc}a`!at-l`HXu{W)fe_%XXGk=FtQ(enLM29#^LciSsmec#+59$lJUc#&Cat7FZTb6(qd^Y*&bX5 zF5)38b8zG-K`*h1^&rP+w56|i(DAKa!9$N0+OXsUMczm z8|qqt2w8w*Z&!3t9f(u*#N$47#CGBNXUCS z>Jqhd42Jc^4-9a>vD#QdN;CGd9vlJ??UsB5>g7Z?qxhjs(`6?tGITqQZ0bHqTKE7L z3+SQ6!epF)6EjY;t~`i*ls#?EErjk!09@#)t1@)wz>z!LZl$o(m6kvrbET#Xx<>Wa zo3s*CE>S@L7h+sUKBru2rEs<>939U)(ehICX(9iNzT0<`z6#b+v+gqc72+9d_A8zx z#m{a+-}vPR8HV?=r|wkqH3d(`CHxp_i#}XeDf`E=(J9M6^hpUd<2qVeb5|Na%l@Q= z_oa)VO#4{$#!B#RLTTJvp%qI>;s~9buiz?zLB&&`R+$g{9B!45h&Cr)mA?2L9(5ldjFY8E>D%Ou`L>sK zw652as>sknRlU_ra~1TpKmM=WS+r2+G?A@D2b5Lr({472ne9&8>=tcPQzn`D5Z#z` ztWkObtyQd^25y89!Kk}RAT-JyO)jLZ6h8$j+vFp-L}~QU5-4E$)&7V1V#LH!{6|^)TWsc#ZAZM+od{hHvB5r>uNlRWl*p7PtbTw??9@v z1O3X#vu2EpNoTxfd-d@$17Qi-gvrP2L4%|IoOhXF?gl9{ZfqL!jaG^_N)>x+i3OJ! z4t2a}r*cydT3#nb{)LKPC1HyX*^LW*j*N+tkVxryet6vKf(HqCsx z7|lrn*iL__St{C{ZUEZJ{I}iMk*crgSn=%Ix3Im)t{B4P+T%?q4L!hOgR?k+_$Z(4 zirQ9U7pHrFP=EhGLfBziWa7LD!yq7*2?z`wAKx#1RdSmaBWya8`}IZiyEf~wap4g> zZ$?&g&xV`;M;GyPVn#H$i1??9-g`A-Lxg$R-*`~*MhVkbL=oCa-~jU9<#h`Al+d@t zA-`6YQ8S2~E{Kd;s#nE0v&oKZp}K`{DUs*%RKmT`Qbm^^O`+-!ChO=tdtW zdQs9veqQ<~;_S+Si+t=FWlz8WI9B(zBGuH+(-~Iec%F(_sz%mhZseJI{#R;nZ;gMQO+|8@GE%^f&qB* zKAht~WG~G>$13}k=8%)3+ux7_BNK9msa}+V3*sc$73+184z2WI&S36vb!VmK1?MNx ziHw~|=HVjnS110g$#FGURBorBkmEc^BubtLws|K?OL{;cjHFrIYU9P1d<^wa|5$#s zl}~yiN3H)JP&&$@T~Por)IT1jURh+4cOPe{RLN*~nE}-Ym=Hil#^gmZcv_gkSXXL2 z;YHA`DUz%->IaP*vZhv@4_K|xzlpFh?Wz90m24>$CRv)B*J0~y$4Htr!V49>b#H4B zzdb^ThWROdB{&N0KzEOc?H2HSElb`VXqX-2B^?rK| zf_rL}4}`$SkGDV3a(4wramG$Yf*C}9mCJWowdXT_IMHp!tN%&C#a}w06}Z0(XKLRR ze{{Jt@rYbJ4;eU&F#?jLYsYTMUI=)jtp_b%l{#jeQ8N}xaTK55HME@}b(uKcsTDhP zW7|k$kEOA0i0DFysfSAr%~4MtZKPN^AhpWJ*qO}-bBg^_>D$v2_Do^0;p$!uw)cNt z)yLglCU4(Om8)H*jY42y+S#y+VcMG@Z!@NyPccaOAwSKS_Qda?_#imVwZFoxYUeMS zZOY{EpN`ad7G<0hbf$>rM^*QuZecDsRL<7p?f;|f%>$z@lK%e$0t6*aP=bJ0)Tp4M zpsq^*H6uYMnkXKqtQRZjg7+~|5QSh8bsPtA#RGNM3lG+PR(%#VL{x6X6G734t{1xf zF&^N-8jsEI^{)QRk+?p;{qhHy?oW4Bb#--jb#--hQ89&F*N}?rsa{8uMD;^}4QA73ce5|`qDtk9cc-%8xM@CjfpWJ|?r7zn?Q{RE+})L{mu1|s zKKFX%Zbz<$^m(~>1`5w0U+OHC>ZiKjU<+~ES?=J<`NrbWe1yf#A+dXk|MXz^1aL{nD*Od)d|nZa<(_=^R9t{uXstAJ%%E7 zvGUg=4FmZBW=^>VreP7*C>Q_V&I<8!6c*nQ;!luSzU->^c#f>!Y#+zr+H^V5`FAVV z=6)ZRL-e{ot5voQ!^V!s0+B{k>Z6Oyng>HQb8dEr3x>rIQly=U<1B@7WpCwcc|Aq@ zqU3gI8%X3j?eMf4>+Ovqk?Rh&40h2_ds>H0cY4pwvD@MfTW&qos~aoq*0uH4AU;SI|9uvDC@;+&N+ig94Mv7zqhK;QG`PMW%r&lI}=Y$?~@RKK~29*L>%ls z#HIxigW2=r=+@?5xAgR#s&v_%ci;f0fEPg<#&bHo0URL~Wp|K+hh!d0%i+7B9LywB za?pA|>sFdSRyF7SAL9A6Fd1gfgGo>Blb zS6<#gyB9xemhuP%8x{>-v~YCO09WYyDP9T8e?F3id2m>8u`hVMJzx#I$M+Jv=|pcS z=^YmNlNAZW;LThvrh5&B4yz*p&Aj;?Y1E|(eiE3XkDt&Z zrCkM1<*=8ttDBScL7~{pYENLXqVpjK3|sVvqpetoVZ0F6U!8}6j6z3dXnxPiwYk!; z+%U>fV9!i}^QDRv6A@ZhVMy zig4CX>z5a=rqG!b@|{;6(l#tCH^yi?p`SXmY!5Hn#I8~^W(qRdMPX6d*TY~#B~k;c z70TfQ7Fo5!#+!tnfc73WBHExELZJWP!8H0UAr}PZku|kvBB!j$iFg^N4tavY zF*q`bEyw-#`>L{v)^g-j?}!cq+|A_LgQ^yZPi0F@sq`)UD=6GJgFn5NqfeewE_UUo zGLLd5x~sL}=wj^h2a{#{J>EyV#b%<)hJVTEke*r)8$Z{$Qyc%q^7sYOLwtLRvjmvq zDE=gJDJu;W1nHdFHWD?8I&3^TjK^2!r8%}xk-v{RS;Zg=04mqHIc`81G}J<3W&W}Qm5 z=S-p71!(1)W;{>{`zr!n;hU|W6JtF2H%YPWD}u@BeR>;te2g=-Q-VtoU0aGQKA8F? zRWuH!2OIw<G?g{^+6b~a>&Z)E4+uEOWrTqzvKTqzCrNUHLUEwh8%qVH$R}a zir^ov;UuFs&6eEyrMU#>^1oF4Z2ia(m;QJB1l^SnK<=9>R4dcX+421A{mtdtBwd~? zSv{#F&%H7B*ZBKu?X~*F)Ss&QbA0{()ZTu-)?Oy|^)C6bwYOioy~KxS{AKh%##5V( zm%pUPW4A!*1<$0%Ls5&;Z-oAfFl4pT%a^}t5A<}7kg%80?9j{^OeHOB#%u!Ej zGLlMWJB^)L*>C{C>UTP8`Oq(T{km~uWR?yfhi=ia%Ww9EMjnCPoAGpX@$*dFruc6M z_P%^^C;g$PZc$d$y`?}6(eiKO+j(StZ0$-ZDWZ!Y@H%z;Tt=SM2yO%kv!0>wZ`i<=sb?sf^+v-^uxwcf; zn+bY%fhZUJYd&5~z({q&XtQo4e#0je2i4+$lgE0v3)pi_V&!Ol*?ZJ!q#?pc!`)IS zFp>>ZGvwem%+-t|6e&iTVJygv{{o_W>7*`s6%9N;G}yy;zkAmV65GKSI;Xw)39DT6 z0Hc^g=r7#4@A)10H1hqPJ@$`{?X59}WF_!+@YUa-cyqn4I!P12fmEwzQEQ$;CcF77 z$@JBGQeBt?-87>XwTW5w+!Puv~}7yRHas<%8B?$kwQP6{1Kgyc%k99z2_e2kwrX>8jY2}_g zTn&`JF0X4qxm$3WTIzi^6z#(TkkK|u`E z-iFWNuK0cM!*B4mTbIbJe~?j8#}m5^`IMp8HkfxS9v{2EV`B3zD4UmwPK>+!b|W@) zHrVt>LM$?g;d%;c0(q3V4_gevoz#*rH0y{~eiDN69nfX=xsp6DHS2&ItWmxBzTR2F zY=>;AqAmAPXGvIRYNpOTs&ljI)cQL6sg7b`foG}eq{2E~@_U7N&QqP!spI*Zwhtt+ znrf#azi0V7$4}srtXRGEe3{67M?Oqf+b$9CF~CO}6c<3R4N#Hy%73t}L_-sq(Wc=> zM#%`uN%SAMN+xg2DNG#$bezG}GPliA07_;W1=(+v2&@HqybTQfjgOdx-U@BXBI9CR zQL!4>E5s>RvS`yW9_Olig|o%&Z#YGrH)Y5locWl&_6;i0xSC`17lM&q*t~s%!?pz9 zqD==2l=q`{(|AI8ySJ@3|H{Ya-`Y3e!*%uI)&!~cy;ual<*Sattd-D_6#zQg({x}+ z(_H{-eK%*lFBx<;(V`jrW86i@{F|+Ca0~>c?Je%Ew+!z=!h58FDsuPG@V`TkaAysN zH$zS9HKE+Q3BKM>lx-gB>piY|(|%EJ9QDBZHiCQ3Y`2fEw_NoO^Yy0i+ebUG_{#}| zEVKT?%koa?fPTsSJ~cNT>NCmyvE%{CuJY&C&VWO=zRB)%J2~6>l|I<*oppA$WDFf<4mu0Ou}pM3G~)1g3RKC;PxjIT3M7z4sa-NQg?cP4`mY;RoY$ z3*u0Fa4?&c->=|coE##MawfR7MOY)(H}aXCi_QnGv8)+q*@IevyM>4=@*h?ta_>KU zGdU9F3OTgLisPiE?Wp*@$&;) z`a<_Kv$lTd@O)(?bq9kr@ii2q3S{Q)rnTN^SqPaX&GGuV_c&T!CfHxHydO_}yD7G2{2RjCsF3 z<|B2|pFU&75-!aT&0x`(c6;6awtBO{!?RsyS)irOFJO6;Gt8Xqzw7Qa(2?uEw(%hc z_Yd7uZ%HX_bBDe`uyr}>VU|tzj>YJw5vOw7^B)#-Sn}llPSJ24Z9LODs}5?2-?+}k zcb`8q-sBjD!97*f{ZEY4*Wc(o!XHBwv&-#S{oVKXSHW7SGdx=#?fc3cu;k0Il`_;? z1@1LphT;4WlR;%8r_epM-WdGnWx>uy8uae&>ADI^n&prJRTtk4RU>{uRew<>k2#y~ za_!cA{x3?G1eu9NOjwcOC2rFjBCGcN%H*Efk2HKh9c@!;2l&>qn*aQU6iqc97cI1{Lf_;cDXAv+ zvT1ZxMImW=yyOgeT%+wa-gZ|9(FyL{!_))3AQ)88=c5zcbUWp~f6t3z{E{!_EH@%U!ppnT@ z*5aId=5E=MUM4k!R`DB%@tzt!4YyN2itC5>OckO=)F}vsgOSFm{5GM!hDvN5_5Ez} zP-E4W8#zmCTpW$ux;!|R+}ZA#*R0(eA;0+^Yf4cezuh|cq4iy!7hbn`0yYGCU&_XL zy|4FI)q9+J!Ar11qH4oH3u2*rf2|GcSyCv1573oejjwgNYAJvyqx#M}z;vWgNTpC6+uEnfu5cK_)`ugU+>qfhzGGhqmLsSD%dpA393c zQIVRXiGza{>4txeAD`E0IpTztN=)?71xYJ!Hrr2`QzSwg2#-Teg}l`l1S?% z(px>SF@^4PMyD6wcpX6e^B2#k=KWUl3|~{D^a*MP+6t?`z;+6yLfr7-0@b;YI#tOF zSPq#BZt8|iINFoO_HO&DFKxZC4%e2@kIYL@h#gwuc+>; zkF9Sv>rL>-uv``MhzQvDRkmr0`It)pu+A5rRLL9xNdP3;6cVs6Icn>iix3V)5X@1= zLOB^kKL;n?p0Q`C--C^hWb9czl`dGEPM5UN*x=hI(&dZhE8Qnsf3DK=vh@>6FVEPU zOQtHlAX|Ts(r?_BhS#mX(i5}wdn(xcUTj9G(Gn#-j$m&ryMOL5PgDR_Sq;yLD%Xlhq@4xKsu4%ZXxz9{>xFEhajzLUK? zmf(2^+uXkHzI|P37D8Zh|F)~Y-fh})>ytTsl6lRbl=H-DbHa!;G$TyXZe{5(wROIv z%cz{}Roew*_~E9*R^ko!fe7_`wb3CxGk%4hP;PjM@8Mn0RMCDSb&wUYrzzqwP2;gw zv}lu&V7g@yAC^g9%ruV=B2E^{zj%Zl==bTQ^Rr!G{*eNL{pB%TP-W5#w-YoSKE0w5 z+E}fX5c|X&Xn62hu}7edRI%}J-pg}`4An%etrp+vrxfPJpYX)n(?#e3o{uqZI0wH6 zUXHz;F6HESsCLK0ZLfEbChoZs(G&WXh4lKY3oGUTq{#`;VWQw?ZXgK!KUqhHf!)ZB24N z{84KfzlisjE}Uk|yu1)?*_>>F8t=zLtt$8d->u+1R`7BJqs?sx ziRL%^1OmmHsl14(YLa-gf03TNUfu}obR!L?^2410d3o-Bs3qV%Sb1Z8%C&nYg17p|bZ<)>NlGji1~^;yC!MLp{Ma9V@vL z)9!`xG)Psu&(fHK*2YIBxoA>*u0Viz>poH!@E$i|O{}yL zS}&Z0iDha_29e_YymU)Qos_E$X-&v>w< z>qw9O87*CperZ#*-NI_Wx z8(~)$A6_@IJDxX+?}PEZmr6HPh2(I(>!lmmQ+Rtp!%eh;D6GREeJMJ4@h9RJ`+7x< zqV?7JpShnlYFG!+rsE6*_hVMNffKc_kiWQQl#kRIT5j~d0e+Qk;WFDL-*gc*bTARC zN^JJl!}jlt_YMD4$uxg)`;;R0z;7|#;>|UUZ!!pf= z-Br(_RV>g$0&XR#Nv>`jGB5lB`&ZYmHhHB~fNWTr~?=TDB)_u!{>c1iwn z@-@BQ{h)MDc;}Wbl}fnTHS?DtR?X(V^Q-r=196ihCb=Eu{9%yJjF`h7pdFfztCHQT z6WH2mx_RTKikiXXe)D$$M>@PwOX2n0apq!iq;K|iKK_S%p>6u_Q?R5Wq)^Km)Yx8hl@*tIL2ZHcFppxA9Xm`(25^go0OeqeL zpHr!puvFIa^E4O&NrFpx$hQe{KM(nxYpL^KSV#Wnw&J=8zU28TS?EhXu9DNjl37d7 zI6>cA(D(OshN+J3ZP50sROiTF)Y(II6fx2LxX9XCpgI=oGttueYIZ$Dy=S5w#Cjw( zuBbBE#WZ&ALC5>(?yJ79C3yO_Llt*&&f;8O5Xnn+zQ&(K!}m5?Xx`~|%t_s1ZD9b1 zUthn`jT>r*TN%5F2ip-n$jP|lG}))!zzPx8!VJ&Y5lTe>%FC@9TOTXv|4F zMV=o>9-?M@zn~i%B3lpqa?Kd^{^O;mcI<%kdx&;DK#y^Y?i0koz1@8W7?xcd+iU6H zuHspDJL-zqW|ic&rf~PN4$+2_^H+;k@paa@{3>>p>ZdgGtXN0?@VN}Q%z0uc52>Qv z$>p>J>0Z~HvZ;m{8d91t?tKfcT2OMYtALl+mA1Kro#d-fKp8KJMt%I0oeBm zz?-ScL9Yoibgi!EQq;ZL0>iBQ)4x)_lf8Q&8;q*NYjO=cd{IWnYS@PXBtMl| z`=@=MVU&$8cH;Wb$cL)rnd4=%B<7rqAUxng7`WZjb`2lJ_>ibXA-)rZO06*zJQ2Nt z4fYSN)IQd}k=!n7!$oV~Pxql&%}4~XhmaS;^>`=9xjvBz-`_SVp~C}m~TXC`=sfYY2o zxbx1y-#I+U)x8dj8K*NJ#f)owQe~5K%Id66o0PhN{KTL0a{0k}Q^{<7M2{J$L$w{u z8m9sY0sTCZ;MW zo{zvyg2~%a5!rWWMDIo&c{Q+2nhH}}6KOf4U1getwEb9Jds{Q)v2q_5EE3(}Y4Hc=!vHC)$%^ZLJ=YXi^m z*1*__{V4HLf*U&oIDJ{2RSINV3mZ1@qkWCKsT2x1S#V2kezTotWfxC5)jh>|WoWuQ zMgzOFif0rOjxm;oL0s$9;KQHov6U~7EFod0UUO?B%fpr-&pyRV{$1om~%NtCY1fPD-^7BnfVU%P3( z{>u&2KgSa_NwsgGw$_I+Trtxvljg~M1W`R7s}f5*oo4_r?8zDlP_pFiL#;nBp?tI# zadz%Of@~dg+j%?_h3B+1o&UZDOoKu?XJ+W^Avz~&NAcd{*1G*v>ncy(i>mV-&=Q-$ zavJnC{~=uy`quIp`rI<02Bn<^IIn}gRuN0yU3Ra)N`g6Q#&ExaLmJn2cu#=v?ijCd zT-%eLj5hT&>?OAYUSjoAx!+$KQT5Auwr&;54VM=q&u!gYNOAXA>1RlAZ7UVLozOi? zH2_!D|GR7Cx@QgZX7|ELT5?X)1+EVfH+xSuaDQZ1YLX;>4(5@H>>8Z&K6?19W~!tx zBy0j0{E0#1<5qE5f!WAfds;uB6lCd(g!D!6EzoFDG>}+gk!MKL-D`XoWWC4^qeQY^6|F9-11X}|%uhjZu1VA^&a)}!FAULDi>6m>|) zh>2(Sr)p%+UF`k0Sv1n?cJ6#@VWTiraSxZH#FyN~zr{etq-j$64YX&Zbn^_~A16@) z0Xz#v_iQax|8?yDojc3tPHB)oBcF24P0J;3reo{URQ&^C@j5MQ>_;5kyZ*bX=|`(xxKRu8e)o?yaOU_Ds!+Ogmbn3^eydW^ zNi~hDtL1pD(=O7((&;s%ZGS&3qn9(8>wT|*ZUNuS-7c|=zS>b6sO@Ej*p_G=(xfLI z0?lYy15y2xC4Gl+$*`I zVV&r6kIpxI^T5%Z^!V;E_B|hvkJ6O9U03h84&&wg!AcLQ4{jm8Y zr+mNvrab%;-?zudEALdzU&jrJC14}1fXR8T^%0|gIW#vv?dgB}O6czz(x17Bpc=t@ z&bRey|$Yyd)s;ARN^=-Lu#e)boF@t3hd^$d^bSI{|Ivr2A>Md+A~0Ph9oZ`Fc&N_c8D~(C3y|z1Ec-_>;T;eMRRUn#R~1 zx%!@(Nz7a0=+F=~yX(753KO;aA!z7gA49@5GZ*Vr6m@B(yMQ7ZqEA|FDW{$GoqA6? zH#>vB6rIcPvzQ5g*DU@~A^u{3^DehvdW7XGl#mSSue*5E!!xL5s=-Gc23JT8HoV!q z?D$Q~-}qDhgZ!QMkn#81DezaJXBn@j@Y~hH_YV9u`8yr1cjWKbObZ7NWmo;O+W2Ou zR_;=m;W5qwOJuv-SFLDd`*+MFwi!eO!pG2j*1OuY+cI=5t4xousmD^^Huo8O%(5K) z;FtIw>+uVGi}KU>c$q#I-z{3!6CU5~Dg?jZr~a?wv$e?jkoGOFPQ2z0%i=rV+V`2O z_MmJMR)j|O&t@>8m9A7MZO&zrsyVqmcTR3|Ykr%ali9wNTyp?(a%uV6=jS){9u|H$577B->Gf^Lnk*qu2VYEDc#2K$}K-XH{EG{j>*zW7rtJVcw;n1 zzGtCVdswOBtjIL_8MPpZU1FJAbHcyc51Gf8__#xK&gS1kMpr%*fn!m^_Ib}0xG<+i zcX18Z>B(#}Rt6i^F)Tk+wA3>IMx@oT)VZ9JTFCaPSl`|{C!-(PzBjRXbi(P}F;#So zipguAkZ%K7wNfRAkz)(}uAq?C&{II&j7JghSa#20*Agm1vI<2OyW&*IHvDq`yq22D zX}pPE(}h?7Bdd~!*Bc{j2H^_+R7H+iqL4w>ydxD>Mvxg{w?zt67z~F=P0O(H?6;xP$=z6?q zw$#ocZ&aA~IC-rL{XVd&eg^R%8cq~mVhq;$TC*rol?;z0hnY$;hLa`#O8nn_p={5T z0@vDjT_Z1g_oR5I_Y>GV$a3_XJ=BWS;7b93Z|(W~!4iWI`bgVuSbtn$Q>T@6VY9R^ z=AiSu&Nq~7wodH)%wWGvR=u6TWMbB4_mjL;ct?9Kj`4ViKAvC%@2k@7+M@ax`)~Av zX)CX0b^SqK9;9gN9jxbm>C3T#b=L2A{{s;U;@5fmeuweo-vbPhEjOlLFOjE!kq;$>+Wc#y~Yt=El|G49DZGUofk=lAtJ zfhP@dIbnzEzpc#y4QFnJ5qU*^xknuzs{$7@Bh23(a_grQQ)yYG@c=9b;fpnqhCP%> zm5h&j@i}vlH#(e&@*EP580P@3eN_Go;|;R=eP0YPim_sP8u2m3!C2~~eD^SZ32JT3 z7*yliv)05fY|kgRWZP2&2rhq%P5JQcM*fcOkC)6w9%3qp)-UbLgTrN~wU&DQpR)$| zwa1b0OWdDC3#t-5q8uuSs+fBes?0xs*B)vpS#r>SkX#x%^D-K$=Xy{?7-Sa>wC&rY ze3`8;WG#Bh`#tE^a5%<}>#k-Mt%XT$Fm(HVijS*e{4(a<++sUttXin4*8MnAJ=xue zyAk5t4-cry5fs&>lK5_T=&O#qAB(tWOQfN#fPIQqDYtNhIEeqQ`u9lB{5OT~aTQnQE0k5h znn@ZGL@%vO%qzQ|s;%Y3U+-Z>`cNd6>_58OC{j^4q^6X zbR=oM%;JkHAX{6*NaI!*tZI^b*?n*Czq{G>WhqGy|G`oUF))6_odUt%iF6GTQP?^h z{+kWWt>+tx9}As(bg_#2nPD#)gG6ePE!f7_=1eCqjCXc3m56uttd|4YdoL45(9X0E z+~(nG2AL=9AvT$wJ|Z^goBAKy;|JFNh;`#m=&1j3t4L!{e)wRUG;Zp}e%w@3P1MSD zQ}e;X0l;(9;c``i^~eZ}?<@oZ3<3RsHDj?`G||ib6vznW{xlyOXN;@3%Ot;?zHh!j zO-mJxz6f5Pa(8FRKlo3m$)SB9fT}&k@|iPp$H3R_iOsm*yoAnBm-kOAeRf!z(F>~1Pb^HDKP2$UY&}Rv>#EoW5 z7wDTq&>Fz452WqzsiOI6kbQgwesFXx>tv#Xc z(8G~ysH~fwUlVD}vtM1tEZiA1k;cu?n9-lyd31PIBq9wxC@kO14=I%zl^@Gr8La1L z{f|9sr)BJoJBuuu{^@Rhfzne820iosRmMK}@dduzj)A<%O|pgRkwBs|!cVP5}Z5uqx`iZ&Jb z@^xYPgTwN2JoV*&qPe2O?GBg3hu}VTDII3~pevvdp~|G6)v8$uCZ(N->{3IdVY51w zrwAh6_b)Tkf9+nvAJbMQoPT<`XWM@cxy{1+nfnsWMRU+AY;=QLL0naTSRSWrl5Xtj zHfPE|E`;Z%11unbSG!wqyN!=m;GLc0BE$>NgO4xY;m60dK=9+^FLNa<89%=7CPk9D^P^Ps?( z6*N_JpTLM;0&`)8*gpcMDtR&^tq0m&KhcVcG>}2}6BQP+&XJ)mh1xj7H z8c;@$WsyrS*v(_!L730+Y}!khhliMTvB&pFKQ-WE_WK&K2#b zQ6?K4{RCwCj=Bf}g0VV_V6MC7)pguw@-R*kj9Ucx4nf|_=T<0priZ+*ARm^7tmXsx zrVQi~LH-f7+_m0fjW1B$^L^b-f1qyHkp66^Nj})m?7gc_T-mw=&rrXk2>saudlOOWa}rC zo)^|nzgI~+)}5`HcJM3ulN=6XE_s_*{yjGf{ugDf zb!*Nsy@z1@LGM=gwOid^N>A-4X}3C^u043Axz)`y14^Xfa_t&1*{#ZVk3vKF_cLx+ z*nzy@Og{MYfCJ5fpc|9ghStt9kCO0p&8)c>duGXMriP&Maxb5ud<|q{7fTSMd0l+8 zcyjhaWknSwM3$@1 z+)s5Q+I1LdTl=Zn0jtHB@@bd$Q2rhx?vMzZ*$45LU8SFLzf<789mRrVtx&{PjRqyV zrti7NsQ?*`Pm>zDA+&pxeAr+7Y;i$>Ht!{0@8H?{4#_6Exji_W|3VV*Tp{9FNJM;T z3^gx)koziSyqluw`T}6XxkXGSt_M8TbbT**o^zj&WBVG4X#RBvU8AkK-&-B^nQMdFh8%t=X2o{=_$U>L#QAh`Rg07ik_FpcR;UxQ8^Y|DeRku&$*xLOmtg??+MSFtiYaLV zd^RU;{M))R>NicF;4QCDld{ux`5nrQmz#+Q<}#;8%m_pDV(q}tj(R}|el%TBg|DJ5 z5ZB|w#uUMuwCs~{8A_ELOg~_dbNgMYcz_?ICvYF`3Cn$U{0c}fN$Ds9!h177HluX| zEl?XyEZb4vcMrdh(D%8S@vZM1pSHNJ;rAW*9%z1ZLz5=G*T9+P8(=qG^Y4lDaMg`o zKF$Tamyf-Wg`6!&%ofIyqxh4v1^MV2#9$`@e)|RkJV=25=m9?{z?(oQ!ON;duYxKF zBzWob`VRJF;t9nPH=56)8I_4U(ol9UWVwe|29P^ZZ-zy zSucPaE@NpI`ap49xX*TH8fh2E@S3G%DThY*QVzgy91`~U*ZaX`q?Z;Z}_&f z(QX%?uJP;ZDtM2qe*B2`cz3K7>TU>bRUt;TAK$XCR+dlXE!>9PtoDs% zYL`r_N98l7WnMpZ>8Kyb&g*Up|lVtM>!XiVMD)DjW6dDLM0FBb?d*&&6kjiLPt`)!~o(IZ`+ z_$Lgq@*nua&+S1iqQ}&}*Yzf_FFcv4Ho9csro{C`~bNH()rG=xa2K<0*(14^hOL8 zQ95Ss+Gs!r~PTP1{7CSEa<>OT>OXmZCg)~Ckn_)Tjj0~POT;7>L9o84{au5YhQ z)pjwvDl_|;Q4H%#xHC5QkT3K97yPaWO1r@ z9_M%{eRSexm#3CK<@H1hWFsQ%*!8XPVzx#gH&Xd+^3E|Vye)NYlVK#&;1J3({X`e; z()F4=_kaSxrAnT((wp79-H5YuW?|!o>HQ(~I&ysr7l+>$0HiW`W-o4>S&6eVB^HJy z{%9pm=1$sLD={il;_0;it!0<`u*A zs!v37b2G`WP7Y*Qw=f3l$&R9#aR_^*xqE+4`-d6C7B?2;(bSO$&;^Bb+DJ)F9Tn^i zr;!v7H&}xyXKsyhjVlEKGl!&REOsF|JO0e<%dzGK=+Rt1E_v$=5!~WdmeRHbnve8) ztObFC2lw%HH2xCYe)Z)fHWebnWcbsycA!x0{-w(aC$e7E^p ztvx^si*M~8P&PG2BEGdd(Arht4Nmv1eS4SeIMI5i4v7lH`^~YlTLS=uXH?Hf3DJVvh@>6H-z=m_tWGwvQCak-RjHpWaoQKv3I^C5I6SarK2NHt#;=U?M>&L zcIwpTcAzM)J*`q<4sL(Ka?O&Ln8uo4i@nT(DCPrSaG-7liiRpW7U^!Gn|O>UK|2qfWNrl-8#7dt6f#XSAX0ap7kJ%~eNq1poSID|Zri}{F@6B(m-njvX19fgAtWy-nsfduPTkdTSDoBviPPdePR~gWTh)J@Jh7bsY<*6=CAk_{7_5W zCB~Z^8@~&eJEs7YOwH zdLu1;hP$Tz9$FEI^Y3My?5Dt~T52tS)uH*e59~gnCdr-cWUBSf7FwsT&3?0giOrmL3 zCA?vGSth<4Yv0;J6>V@@7XyR{nV;Du7b`$go_|Sgsj^nn9e7^ux8k=ySb~d`P z|54YTc`FNsfP*FOg-{0Eyen-69So4>-35bLZ1J?tbLXG0(%jj)s`Ge36BWG&xc6qH zx8*!4&#L<~$jm8dvz#OD86}B~ zTz%YYr;E{k!DV1s9P=e^HHA4;wMB--RvZ7mPnZj<`&$>-iD;?v{rrwLX|*$L_58A7 z(NuMhg6auv+U%dWqr&)j(5))NeNI+Wc5-+IF>`HT(zi(J+M!){8k#m>qfIAyaPDlX zSL@ZG#5baUPe>xz`c3;u%i%;|Yv0O9L%o%M`#(8Xh3kE)TNS9J*$;DvO_3do*F&1m zpdM71J#-vB*Rg+oOONUO6mc?7cLFxl_CRI3&BklVJlMYXY|73LM2_#Gxr`By1h=fjkVnk>^uv5i(>c zgsWbctFW%u`eqy4U=bkFelBuTYICPcg(9L=^9Vk`-0B}bcPtG>20n{}d+81Pwp`Bh~j(bY^i$H7JBva_sNE8T$e zG=$CA-?*oEo4DLY)*m%B$e)g~mupjM_}6vqP1t2^=~$vQc&B8Q#hgYVI#RM+&jZvACF<%_(aQ{Re?)J^clMG2 zg;*i+s1K(BsSk&x59XV%f4k2C<`jOpXHOOwg<{RX*~-J=CC)6IGebCEZk>kn`wW~R zf>Z0^V5-c(SxQ;x;nl+|ob5w64`tx&lY!%qP&e4a!J?mmb0uXvZ9k3OkA;4`nSYup#mzE21q9R(n%Y0PFD^0et<(@a*mG|Hzg;)D z+Hu%^Ob+D##8>TL4?0CbRW|y=A2g8;;accFw|m$mM9-SkI9NmeYL8F)iD?BQ<%Y3fCNgNPN!**#n+0$O-yTC%qn~=bwoqJI+7fhV~fbrv*?!ANHH!{Iy!? zf|JAjC+c*PI8*y{K}CX3TcQQ|wOc7TQUio&vGKEK$vPSr?A!iUW=cI-8cU(iL>Cqcw9J;#rlE$V zn%{8+|B&KPbO?C~;`Mw=Dtw{W^BKa@=^TbC9+{`lE!#zQt|jhKR{x=EK{+~>AvtpW z)zAcWBKk_?@>hv|Z&!$R13b~&=~1Y}nhfHQ?zwfIZmzVvlh6G)E9gWs!q z`A*ODKCi;!wdF{N%#xCkwY*e|=a$0q+WyA!NQ0dpCNcYACNRrU z>W~EIHVY>KE!t%EF%HizFHUdmA`RMUd=t5-YoxdS99X1n9 zQ-<(kLPeza_zHfUHzv}1(ioQ2@%2>&%*4_0iJ|FE=Kb->9I9u=GpwFJJx5MY+hF~D zD|z(y&Kt$}Wr2d3`2KRIo^O2b1JM?@gz@$QCmilF_^$DG4&-`m>^L}{6>IFaZWrn@ z=Qoe149eIV)f*Ak%g$;2sn@zPt#_M#Q`Ai~;vt5`-_2#}h^^}O<<1Vc2RJ{8IHX23F|EVp!z*e~=D`(Se}))jqv#XZrNM?fo!1 zEylZ6nRwgir^5^jH+Gh|nqdlq#Ssc)(-o6I@z!%Oi2K;~HFlj3yQ1Q={QY3m^30>% zObT8e>7Sl7RP$z~e3llqSpR%?mG#ebu>yyrx=eqjLAIY%ngcC69y@dh^KGvG7$>N9 zHCM5rWFT7#H*~N6=x8!ObxJnS8E+DqKEqK3|za5$Np!j7L_HW72*i5W+{de$8 z&S#n-qHBXp%~)2|r4=YHtv&SDRD?G7KLWJ!>Y@HX{IN8UW$q2s5ixKP1E+jN?HU=H zFXQ>Bw4IrB`~by6>7~_vJ*A^u!O?cw3=e*}4>;rGR^sY-VRTi2LU3DvcoL)Ylt>SL zU)ayX(Zr5eYPQ5*tx9~`de1qth2kv^HL1e9ih`GYn#$(+4)JqJE0YV#>S%6d;=B4! zB8s)Oo~yu>iP!3X&abUZZ05!mn^KfI^@j(3Up&ay_B zR0lUGk?iS@Fx&y`IPEsmlv9c35r0>qqCTZW{miGJ`*W-_JwQXKx0ZJud0z{bheJyypw=HXiQ~;oSf|nwPXk_Lvt!i8)XC^=@nC zxliA;R!17TtB+yIlP`nqT3boGRdGI*9goYy)y+%oyBDBAk z4e=f}ZE4$sVo}J3HTW|M1={pmJEC>dd$RAsnF!aTBetqZ{A5OiNMD|DB*a$YOPLOa zxv@YBH}MS?Su0s6+X66|Sk3tGnd}Zi?B#6wqWZnYRfdnBeC4%!O%yau zSAgYtPt$tVr2bH7Z3}jxW_rGJ&%7f0jJ5!>Y(^SS;iLQXZ0p>wfZ8lj@V51Lbnd^; z>Aa}FD=}d6mMS@(!dNHV-qrE})9IPp#eT|KaZ0Bh0cT;Yb0rUMnn%?jRDT4O`Snc) z89l33xf?>9S;NI7aJJqM%4Mhb+U)kb0`4h5(ev+$*VDOHMsO>0u4qGFuL3yqj#7jE zC&s2VvAHsJK^J^nhLeRE?0Tyfnbn2v_4nznB?n`Xon&)#PbAf%uBv{aswc6qb(Y=S+>y1ctRac%&8B8wp)DXI0fEGD|04=F87l2Dc zd@miT>*g(HFV?B|DiN;d zibbvd3&!TiQ`)|f+{%1zUV~GcPf^R)`7j!eC-eY0f+_Im!nhsBDyRSqdWK@|i+0AD zEPAP;<)p(pTu|<463DKv9p;0XpAVzUk^?w$WcYJM>xx|g+z23Stm)GVFE==Vb2qAM zUfweY(gZ%wT&}vE8d?FFClw~Qs&6ZZZ}rS?C|TcDT>CmsFLattuF|>Rm)1U0%~J-c zK0RwVUnpM_Y3zb^C^liq(6u$GK5U&b`qk3>^4BA?;vnNS>Vn?U0}6_xyA^C3|HSS} zSLv+};T)Lc@Zw5Lo8t?0c|6ul&{p97SkRtu3U(CgEA^k{^Q>j0;TzE5gkAfkCYMiz z`;MAayr7-AXV$h<#*UqM^{7&%IbpGw> zeDo?Q5#_CZu99q4F%`;{Z_r1v30u_8LH~*kT2qaUys??j67A8|`CqZHjEX$ftNY=R zr~335_IiBx%G7bsSEi~;qjf(Fs7xLId}UeNw|j2!-YblB^)(>e9euPR?$yVB-+ z9!QQrM`rvg0U-YQ>m)hIe>+sI8lk&+N`7qIuqAND%$al(Pr zIB<_Et^096>UYB20%j71cpdNRP-ONq`$K+kH+qqmyIArJ@J%V?@JJ_z-@#>sNo?B+ zG}RN1EUg?ds&vK+oG$ev07O4GEfAM#pN8<0fFgSRUEB!+^>!wfYYr5u5}&)HC@B6n z*jSfp_?dM~^`HRTcC7vfo{R1Sgt{sD`-9DXb>UZ@pr$VF8s6~zhS6A+*it>HH8$uy zpu4YK2zNJV9kj_{3e5{_YZRg)Hleo;Xz>#3Sy#Saq+t=o%9kSl%nCSsbdNlhA04(h zK4^4m%=4pDv9PQ79U1jPWvar`(a7P8qr;YP@sPfeEW}a;ePf)%Rh6%-ZKmm`g3S8Q z&zle*K#x32bK z+a_@5c;SuE5AS5?K7omgh1Xp%NOPs>Obvt(%d0=MSETWNe#DX&7V`R0b@FU=;j9zr zLLQZ1koIYB-PY)hrN`%G6u0pio3N=WRe6xVseZb04})vG_|1xUe%X*{lcM87ngXr9 zx@W7Dg<0$Mm0Jk;pSmCaNq0;bONq^~eQFBTwdG4|E9m)n1x9*Awnh_6Zwcvqs`(KT z%^e|2a!1G-ULd8I$!WCdIes!_{`+{pSp6*@d;a@)$!5mOpe3A!R^_j*`vIaqg}KqX zsqOsSz|SB;N5I!+$-I`pr#}s+gcW??CDTD~htJ=zFX3pV#clJd_x5R{_A|XTQZ5CV z?OXWX=DtJ;rTvMGd~f}S^69*Tqje+8K)Fy@Y__OLe9DBO*`nbswvoYg6c6WHFE6_z zixe8VHuw|Y6E1j5Xc``aESnc=5HO_>$2?PHgN!^(q1zRHq7h#}LRGdgvL1Q8#Ks zy2^vdEcw$hI42Ms_`}$Q*JJrVfFwWi)K<}9FKD~~JT-=n`;n;)oRLv$DpTsn9|tgA zUWg8RG192!RB4=~dKJXLSXI8-#>+m2iFI0zqC?riSdX-=#BF*%6Ek;NnM7;)48$rn zp%(wqPv|R5O(>%EoZunvn+VRLNjU!l&c-7R>ipYByeTc~1*Y#d5vFq!`%4F@xr88^Y}FgC|rr~PzC{cm7$5HYXt z_|@)gF$0NrcGv>%n33Q5@0s$Rfg4ftZ=S8WCK++JuJtPTE8w}@3fkBE6&4LXl$e&|%yqQT83Zq7$-AuYq6yAKXC=8%* zj@!d1+!DVjL)$G}JB79e>FCBp-MKLC5i;qd*Tuf+ms-do?w^p%@NUC@;@#+8#=GY; zyo)rR1-$5UbQ!A{tvFS!n2A4pw2&)YuzR4WVA} zv3}Wt+hU(h{)^gC9!>2HcA-W;?Ez3|5S)k4LY+Eo>j z5#93Y%g;;=u69*MVjozYHI;)tC|^3`lFCGozZtj8yu4yS|Eq0Os!wV8nybd?*e7Vv zBst@3I(S$3WdtF>Yi*t+v4aVSk>NoU3CU-}8NQyL^ zOy{dcCl&uT;r-N88rT)-%`lhrnMXoz!W=0ar#o>v$v8=bzrbQWSiDmA1@X0EFKSMRp$&c6XObbxtX4cF8{7E0AhkrZF z_cK3_VgHE9HCaQFi<)hi|6tZidb>LDiu>C?OnJUCR)1(7_J7d3t;d>aBVL2O;dFH< z_A*Ml-B0qSjl0P6cB}l8v7QsCVqtf(*pNOPMDA&GDk<>JyEcPbtzo$x}0c-|kkZlojny(j&W6nFIf+nZocdbzg_I_dMmng0I`%%zlf@0@|AO9A9)ccm1 zkF7|YB>QInvGGF#cx*Q}g$&*~&WkRT|0as^A1JB5?#fzPRhSx+ADgh&-T$w^>$t;> zq_J#nC=yE?jvl@(PpNT)$5p5LrQO`U?+V`7JobzgUArW@n2+WiD+{{hwQkS4D!1^l zKW<@i?apc%Y2dAz@LKlFVyR1)%y@6R9ZxU@H$tI#KGWR`kAlGm!FVzF zZdzauPKEP|Ydzj7oTv)#T8oRWSB0)&1=;Pqe0)fbTZ5ZCL|vX;qQ*} zas5#n+jV|{B@h5L_%)5i>Vd^u{}3Em&NK5v>evG5a22l0uIWukJfY`n3AIrXU3fiJ z=z&kFdgpb8qp?DbL%3hICFDL_H0J(-`xwUe+K^>DJsoY5xOMCS8k7LGoA({FgABAG zpJJ(FyYX!W-}IE>irHKRVp^@>veY>8(q3AnPpOF-zx9cMkV6tK-+28*`DAn6i%N?oXvtYET{RzXuo zBbR@r9hkv5ZiOTHKZHCfrVVN}hXZj8Suts5uKX2-GA|^D$J4nhVJbo3x{Fex zg@$i!L_cms|KN5CX&bs$ac##GCJNnffFZoiGT}24?h?wALSWfL&V%4VmD>|yCfR+G4@~zTZ>}Rg)NFxOJs5Qt2Tx@92hbWu7+j|xngohgR|IJ>mc?~cB&}5@LfRgNX=hqiMxTD zsKWb^MhhKvu8_VxgM)dwzPf1u4bEq9g!2Aqjfu&=FthpJkct$f<30xBDQJ$^?BmyQjSV-@G47o)I;yd! zk&N4JDj95_KC+3hWZFA@fET!B%cQQqjf&e@hpK}@rhp85P1Sz?yxINfr!DREAN+jC zT!6`uw!LVx-d0H#^sqYAx#w9$LK;Oy*iUnn>M@I|iY|dSEz2txse@)$NWe3}6z~zYpE{iw}kbWVMRLRjE zI^sqAUjXIqdi?n`XuA7CZYBi+Jrt6wlCsE`!;sARB;W^;4o>Ww@dxX#^v1n1`^}z8 z7i9LIC2hbDz8#YO-fceVTzGT!y&wxOq4bFy!W-(ObloG1JdtE z$w-SOouQ}oW7%3$^&blrzy_;byOjP@|7ZrkdH-K^QOuqv>3%EE@4aJ6dhI&*Zp?&! z4`4K(AkoBM4*t4ttGv*2{uT=TTC}>>+3rza;adu&-;|4~!ZIpYRIhW@#8kIy$@HUT zE*0%P3U`sO+oZY`9$7Edy)HzS9o=WEj(3+U8b^^}LFj)-d#jY5w_m3J=R$j@{#Q5~ zUCS#uly6+=XTTx2LrA#0_F+7+U5by4HW5BTbMj8)Ye;_Zz7FTuw4+~FGR*2ZUydIV zZDRgYv94jUg(_y>bo#alYN!!y+L}`CPX>Z3O2CK$BR$|GR<{3xj6n4F*)B7FTC6=~ zY56W%t@QE{>2%3Lr56m&v{y?=roG628+2vT8ULG^pT7V>TCN+)iZz=NC4d#XR2G7Z ztGTPF%+|w9+z>%m|6F)a5mD0nBq;$PjRBxq}>a+KLj?&UeGw+~XFkFkLE}{}~Qy&v@&8Gd; zi7AEdwWn#xckxTSDt`$yg@HX**52g)msQz@i0q$e7Tq?}FASIA{BbMLqH1)HL+UZ# zYRL4`f7g*x-&)+?XXr{!n|qYMTE0^yuTvC%f&q)vUO5pUBsp%yp}sK!v;b@XVDs-p zG5&FfgYkq;7&nmVF%AM_>y7FC-j9`5zf$$b`})_b{&v*Ys+Jvdo5``~LES1}r&x8W zjY_Z{uUhXxO~+c#sMg4genh+GQ!pslCoR84bCv#fn3vxU_6_;sSx_zf8PazJWS_vs z5^4MkKNu|=AOfIo^2fcu7h@M*u6oA%m^^H9%~CmdC7;;=EK;fY_I3JLi8k-Eld5L1 z~;c#v&x^K6?tpD$cj%-r|d7(1t#9V=gS0C4Q2_<(9|F0`=qgA% z=gLLj@JsLyz9@o$#&Kr8ve-e2H^-vQlO+V$cNO1=Kg91_;>L2%6Gd2x@-WxW5`^7b z;Rdgh%5RsC{JVx;Es8WOfVckn$zgc4c$dg~i!}H-vOwWopw3T@!qF13c-lHb?6gM+ zE$?HK4iqPpX$-b@nnHJ0M@<~B;g9SBHG4=qE9w4PAC}<29n&Pgrh0)(l}uJqI8pV9 zcA@q>Vtkko(2S+-V-y^w(j4a#=I{#Yoml26Za)FkD}!TTq4=KI%=?7DsGv4fKyUmo zMx~GL-M&UP05waKab@!80^b6VS|f(yara??*|URawtteNu$fXxm;X59w5ResM}~gU zxVR#6>k1t;wFldHdS-Iu5&=8Z&Sdk@CC^`bzTz;w6d-;oH$Sg-7kJjMLW}SRuw*ZO zX>-z-SUFzqjHKWjq`{|Et!rK_YYbffkgjv*u7*)70zEzjAAW&1e)<(Jany8Vi0?7* zJ#ttY-;4YbzK0ZvhC6;0dUN%Q;3$Jt2bF}+^UeBgD35&A!|xE|<)1B$jJ3#3nx5fj z;B~tqsPOc3n$LzM|5|o0U~$v3YlG{|UGv5=S=C%I%L^=?RVUHn*6*%azpc&nD+-|e z%R^1N&VX$9H4$zqlZ&h>eMZAe*~iFRP3^#qbXO`oO9eT8rAij4D*M%Es3s&`L4xv0 z7Bk9ie0069(8|-|+P<|bOgY)L1_rPJjI;zePq^6WO<*MoycK4Yn?tEGLTfx2_p^u zp6C*{Gi!JK_s0|T9hPfA6Kw%u=Mer);{w+U=qpAQ)LR|GFRC(Xv@3 zS~v#Fe+9wR#pKX!)o#gkzORzZ=jKb!hQjdX_>+hG70ml6GY4=O_(*w z)N(%ZiLqZp(XTy0+Xq2bK7C%+UmXKA8Vzs4eMB|)Dn+p{mqwdD_E6j+a$5hAoxhVe zyv>&_OA6v!5B>kBd-M3HiluKn2?-=Xn1Dn<6oNzn0VUv)K#+_~aH0tyi{c92AmY9- z!y*WYGZDsd02Oe%D!8xL9Yat^2&=fTDFjeKQ2H>S#w8F?^80?P&zU(B@P3~6eV>1R z_j4t4da3TNs;;iCuCA`EdvG^CT6=O4k;q%*+mq~tiSRKN02-H44So&(xjS!i`|1-s zr@BQm&X6QTh7=c^1(jOQC9r+S$@6|Ha;-qh(q^AkS=i-4!YuF|N$_l{tBUvb3#>ak zFC#8)0RIsTd6w2yC3ru~szfI|ZwDVHsK94c2NHZg#QXL%LtIu4*%cR8WhC+lC?1WJ zpbR9Ez{UXZF1K`>s^;=Q8+Ri%5_U}-)7^^B6(c)Sq(nN?Mt7z~@G+9AZe=s?DCr03*G1E>t}4R| zKkw2#B`D$9BMcF4Y0^#bqLERFY!emqje}c7eS*WaQsc|_L&D)5?ag7Hg#P9@Bl_C^ z55}AEzd2s>ejHS&N^)7Ap1yS}6TD~QH5pH;Z`p1%muK3cD7!RXgFzk!9j+P(vFY7k zx~CFf-Y>%6YJTS&B7Z*4dCPh3SrwGubt}oA8>6$=Geffk8e9yP_#xTzbkIkZ&=ZM- z3(v+psydJu*oc{8Own>$?sDs!2wbC*7K7WY>wJ#cBT$IR9g$3R@FIh@6UTx|$C64p zxrnUSLVtt)P+C5i)1Bi|Pw9u`uAa&Nk6%k=k^?jMj z(G-U?80d&~4L37eSjDak1Ws(qCukS@=g~Wt;c!Skcno z^m~=5XPXVCso>jxH~1=3xNf3QTzLv%@5kE>XT=l#-J#n^k?bZ8%iv2SM5$j zESTzfp(_ug|KD8JKF+ujkPwf>zPiJ{VSAqt+qxT2pP{1m^9AhSh0mcLZvzdXrWUVz zLLd5v;xR#vCC?ZL*!QDMXvAUl+gntX4#3cnq1G(dhug&{2QXKo2+lIxzO~rD)Op`W zRma>*C2wd3>ZpZg`MyYVg>H}MmZvNSA8?mK(bMp±T*hc3u-SN)V&5G=ePLya-3 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%0A*Eq{BXTnM(ILmRg4`@iPRqr7ox-wDfLEk`z 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

Ybyx@ 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�L>(A(b_)mF#16i=OP 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

TV6U zrd!Lc?bdPYy7k=pZUeWW+sOUJZR|F2o4U>1=57nOrQ6E=)otyzaof7>-1hEoZU?uc z`@7r8?d*1OySm-nKiuwa54We=%kAyj}o$O9=|8l3g)7!(7?ap!kap$`8-1+VTccHt; zUFq?XGdxy6fD3-SzGUccZ(>-Ry30x4PTh?d}eDr@PDD?e1~+ zy8GPy?g96pd&oWP9&wMl$K2!Y3HPLX%02C#anHKv-1F`Q_o92rz3g6bue#UV>+TKr zrhCi1?cQ=p5fdd0lrUJ36fucY_0SIR5xmGR1Y<-GD<1+Su4$*b&D z@v3^&yy{*JuclYatL@eC>U#CO`d$OCq1VX!#cS*}@tS(gyyjjDucg<@`_*ghwei|| z?Y#EhZ(awlqxZYl$?NQO@w$55yg$6|UJtLQ*URhe_3`?8{k;C(0B@i-$Q$ep@rHWC zyy4ymZ=^TM8|{tp#(Lwt@!kY)qW7ma$(!s=@&59rdegk=-VAT1_qR98o9)f<{_*B| z^St@q0&k(W$Xo0!@s@hayye~sZ>6`&TkWm!)_Uu_f4%kI25+Oc$=mF0@wR%~yzSl& zZ>P7*+wJY~_Imrg{oVoZpm)eS>>crrddIxu-U;udcgj2Mo$=0k=e+aY1@EGF$-C@b z@veH;yzAZ#@1}RlyY1ca?t1sU``!cZq4&sp>^3`*a?WgwB_-Xxg{x|-&{&)WO{tte7KZBpq&*cB;XZExBS^aE& zc0Y%o)6eDS_Vf68{d|6YzkpxRFXaEvFYFibi~7a<;(iJLC%>fsvtP}VKgpl$Px1fqr~1?U>HZ9VrvJA; z%b)Gf@&EDX`t$tx{sMoYzsO(gFY%Z9%lzg33V)@)%3tlT@z?t6{D1xR{sw=ezscY1 zZ}GSK+x+eR4u7Y=%irzq@%Q@s{Qdp`|Db=!KkOgzkNU^_U-7T{*Zk}L4gaQp%fId4@$dTg{QLd`|DpfLf9yZ;pZd@I=l%=-rT@x* z?Z5H=^Z7I3KnmnQ3DiIf^uP$rzzXcZ3EaR7{2&OzAPV9j2~q?pgSUdWgLi^=gZF~> zgAalagO7rbgHM7_gU^Cg!RNsj!I!~T!Pi0RAWe`qNEdt)d>echd>{M}qz^I#8G}s0 zk3r@jOOQ3l7Gw`{1UZ9TLGB<=kT=K|{mplnbsC?8Y^Dh8E;%0ZQ&YEUhx9@GeG2DO6PL7kv(P%o$-Gzc07je=i-#zB*y zY0xZa9<&Hr2Caf$gVsTtpl#4DXdnC*bO<^IzXzRy&Ow);YtSwDBj_IV2zmy+g5E)& zpl{GG=pPIS1_pzI!NHJVXfP}o9*hV^2BU(}!I)rdFfJG$Ob8|he+H9+$-$K1uV890 zEtnq62xbO<2eX3N!JOcqU~Vukm>(<%76yxg#lezbX|OC<9;^sf2CIVA!J1%gurByF zSRZT%HU^u5&B2ynYp^ZY9_$Eq2D^gY!Jc4murJsj90(2uhl0bwk>F@>EI1yV2u=p4 zg44m7;B0U%I3HXHE(Vu^%fXf4YH%&M9^43S2DgIS!JXi4a4)zYJO~~JkAla+li+Fa zEO;Kg2wn!Sg4e;D;J-i!#ZU_6Pzlvg3-!_rnju55tebkHb&GPs7i`RN?307vY!TSK-%T>M%{1HcS_O6Mh?h7k(f9 z5T*|^gc-w3;g4bFFiV&<%ob)3bA&m=Tw(4oPnb8%7v>KOgayMwA^%Ac772@n#lqrY ziSVbeWcYJfDl8qA3Co7%!t!B-uwqy#tQ=MetA^FW>S2wrW>_n%9o7l!hV{bwVS}(? z*eLuZY#cTTn}*H8=3$GlW!NhGHEbQW3EPJ4!uH{BVTZ6|_>PFpyN2DuKf>-| zkFaOhE9@Qi3Hyfq!v5iaa9}tn92^b_hlaz#;o*pIWH>4u9gYddhU3EV;e>Ev_-8mN zoE%OG{|cvu)57WDjBsZ7cQ`AY9nJ~=3Fn6M!ujEXaACM8TpTV5mxjy2<>88OWwzA!}Z~YaAUYB+#GHRw}#uo?ct7aXSgfe9qtMDhWo<(;eqgAcqlv^9tn?z z$HL>`iST52Dm)#Y3D1V-!t>#U@M3r=yc}K$uZGvc>*0;?W_T;S9o`A=hWEnz;e+sD z_$YiFJ_(7i|}RmDtsNj3I7X)NQ|UNj+97^v`CMP$c(JWj-1GiyvUD&D2$>g zj*=)vlrnlNdOLb2dN+D6dO!Lg`Y`$^`Z)R|`ZW41N)>$`eGz>beHDEjrH;}>X`^(} zH_^AzchUFJ4^jFkLzFSf6#W=wjPGdV`cZ?ZVbm!4C2AZsiJC^uqUKSHsAbeD`Za1DwTaqB?V|S4Z&8P+WAuB}De4?` ziMmGJqCcYUQIDu+)GO*8^@;jM{i6QSfM{SeC>k6MiH1hQqT$hqXk;`h8Xb*^#zy0! z@zI26V)SP;DViKjiT;YFM$@9{(Tr$j^mjBXnjOuF{)y&B^P>6Df@op1C|VpXiIzso zqUF(wXl1l2S{<#4)<)~1f1~x$hG=87DcT%uiMB@DqV3U+XlJx5+8ynQ_D1`n{n3Hw zV00)t936>{M#rM#(TV6}bSgR>or%sy=c4n`h3H~*DY_h8iLOT1qU+I(=w@^)x*gq# z?nd{b`_Y5wVe}|^96gDiM$e+>(TnJ1^eTECy@~#dgjkHFSdNugjkQ>hjo6H>*p8jp zjlI~9gE)+%IF6GzMVvBzD}FnECw@16FMdD%ApS7^DE>J9B>pu1EKU`F9)A&k8GjXj z9jA`d#A)Mn@i+0e@ptj}@egtOI76H<&J_O`XO6SPS>tSR_BcnJGtL#~j`PHM<9u=c zxIkPmE)@SSE*uw$i^j#`;&F-ir?_PNb6hGe9hZsA#^vJjafP^ITq&*`SBa~})#B=L zjkso9E3O^aiR;Go;`(uexMAEV{v~c4H;J3Z&En>9i@0UnD*iQY9k+?w#_i(v@o#a5 zxMTc#+$ruHcZs{k-Qqvu?s1Q}XWT399rua*#{J^{@ql<>JSZL<4~d7y!{Xubhl>cw+o#JSmG6zsX8dVm@rC$ed?~&hUx}~A*W&B( zjreAKE504yiSNeu;`{M~_+k7gejGoEpT^JP=kbg9W&A3B9lweHi-kl?q(n}XL`}3r zPmIJ&ti(>7#7(@!Pl6;&q9jg|Bt?=kc`JE4c_(={c`tcC`5^f)`6&4~`6T%?`7BA5 ze4c!fe3^Wee4V6D(j;kx_$|mKK@=1lHVp1uo zoK#7wCe@PaNsXjtQY)#Q)Jf_l^^*EYgQQ{7DETF6oHR+ACe4!ONsFXq(kl5iX`Qr5 z+9vIi_Q`Kahoocjd(tWCoODULCf$-hlI}^5q-WAA>7DdR`X>F7{>gx3U@|BfoD4~Z zCc~29$%tfRGAbFJj7i2OjnN~R{$lIh8eWM=YrGAo&#%t`)9 z<|gx!`N@K0VX`P$oGeL}Cd-oL$%ym$y^~r{0W3nmPoNP(9Cfkzj z$&O@avMbr0>`C?}`;z_1f#hIvC^?)QNscDRlHJzrj3(#v05Xo&=%sbcl?97!u+4QT}kvKO*tthu(VHD$=qFA!wN7S@uj=ZT1njL6L5tRqhY^sw@Y z$jHpd$jFa3KaMXCFHX*{PR>rJyY+lN!WT~?^l|?Ci-V)LCzqFqdufqt_~ZQPSHj>C({eA=Ad9Tbg)k`~rj-h!o47w}KZo*2i8A74(_ zi)rz3KFuG+cwQU;y1Bl|;k)a-{U1B11v1C&yb7G(Tqow3Sey8=Pi(n*f^|Vx$Qw#M znds^B9F}I7iF9oH`1^Xc@?Z^Ip4^_TFJ_M@vo?hQQ1>AyYDXBAwzyl&*N2~$i<=Ow z!7X-!wn8>F*}}P*ny8yeW1a3z2d5vDir=qJuBOYYi<8rzrkhXmo6pE>My)^@gps0> zS+a}|AT*Qtv|2A7dv4EA$i(CJVVZ4jI?1S`5w?prX#J0fbI8hZ&nt^6$UxC?(;*>?sG#i=D9@LZ6n?t5Z$t^{XcP zKOLVU_is-A@%ZTK^~`IO9*Drl5V%Fah$5!HcBaHi+f>PLNJw<|@GaSML_j@Fr`9dd5x;zUu^3tVFIzjd*%>{L}Hpbn{@^Ix)c2SAeRvg18X{AXavS zx52Us?%A>=yG*$bOAG*`1PG532qt!Nb^La!8D{8yx%^ygaKTUV{vybS95@CcrJ`7oxi`yZN_R!&;P00bPc$fnc+8huY z0v4rQ!p>s{ZrT*h z!l~a{KD0|$^yYp(do0Z|@q6nvl$rzn$OBw)aod!)#-t5tDI0fBg9LDW$6r2XG0lnpUx)Pcd17O!KcPS^=j!bKJ(< zibwcmipaXW{$n~lIqKk@rD2>%tRopq6`uCp)$1RV#9*~rG6HpAclG_AMXvg;Sh1jr zxSp=s(Lx>~NGOa8H2kodo)#F~neG)_KCEVIYgvNaF7EEM3>qwUD4~!|j!8U+4Ajg? zXt{ov-7o$gMTcq?X{G)`a$a@9K%K{NLIX~}e)sY(Au?*<k8u(%S()g6E)@2`LC6@->;U`^B^Pxt-F<;keW%y^NIQ5S+vLHg*2 zle@`PU{h0ICrd78D@l7c5?p!qG&?+*uPWU8fEL z4l|66I++mb%Y41Kvyq0x zQJ@iIV5zQ$YxNw{jgL|sf>o7~iyF|h@h%1Z*2Y?g{G4vLW!SUYK27tbElMyDt*@38 z>F(E2%hT-RzORum0J4_Nir1(T3(wjh>AEhO2(#J%TX5_WOPL@X|W`+ zAO%^)46aJuKBi2)yZZU;;^gYXbaMLoY_f%Ot*ar4l|Lki7M=3T@rRSL2-Sc|g7Pu$ zD=a}CPKQ`-zq&ZUG|X1rdl>P1P$axgOSrEPyu1GXTVH|&P*!L0GcL|DXbZvkiKW;a zt1QHV#wzCe>#LKWu-3-W;Hwj;?dS;8J?Ia8)*1`?8N9<+fO|#>jH2O$JkGy1!mv93 zw7gl~=a?H-p1KYqAQ0 zM9DMTGZ-+~#gIXw70U1UI5eL=ZfENmK82{V7=Kz}fWj3)=Z5j1RAWiMNABDC_4cC| zO9W)7sPy*ZdiF3qE+1hRPqX`JzFsfa%D+VSBZUmbk`9I0;SV$?<>YUSEF6bg;i}qj zVpobtccRrKVLiWJh~re|zvD}y#=9Nr>kh-wPs{B+E4f$!#+kR1w?=Q& z{K1Y*#L=G3%!7T2%P;*KGZ2AkwpOD^pfwU=vY1g~am>a=pb};ipB7qOWM-$~MC#E4 zX!D@n2EpET8BxlK&o5^lK@r&JW~o(4w#}#Q)9vzi2bli#A9OM$o;t)&$Y}5a!H781 z^agdm*x-AiM76bA7EFH@tA3cnKe@Uk#GLfaypoV5R$b3 zj$nM%AZ)T(xHMwZtVa}2konX(M8@KYB^Ld`j$#R^DVAWVSVX#F5zNIRl8Z$o7powt z76>-Qawsw`(W;6`uw)2(!zm@EJs!Tj6b11&SIIqa{>$Oz4;~7A2s!BkRnH84Ry)~`2n@`GEY}T{H zAEkyi=AwjkiBR=yMC2r7W)r)O7n=?N5&KryjZYmzM zNAoErudxE)t}$|XDacrR4YIgrWFUGsVov7%IWeX;^_@ zvl9Tid#k>HF8Y)dY7^qL$tGMj6N{;F)|Qfo7f4}N_cQTH?lZT2?Bs4&uurt8Q<*w* zxypW)@^VIvq88ZlL6nY(ZcL-1Ep6eS0=*)Ujgvvf!Dr^fSJKLAsHCYhDp-agh1p~) z6(y_@S={Bl z2zNZF_r!y6$Mdj7I|*_S?szuK`!Dn9w=Mhkz*^xx#&5Yqo8Q(W9#tT91eHu+qP}ZP zDsA6@w`ZrexWcs|WW#|{XAW2`dDto{hT)en&5`0<93P&G=@mH+m>dtAoL~R)%^rpm z>jiWI$AC{OYJ-CND(J7P-%+eh%i!@~~PM;c@na(l|wYA|`5*FGbhNGVAKU-OSj5;FAl9@_C3(wdgV<{oVeaaaZ3-CnTK#hTAL(y5hT={cm6XrR3+Or`%9}`2NQb<(u#J zzb{d~`=;cIQ37TE<+nTHeDm^$Qtl=Wva&cP7ij8Ue@l^+WN3RdP~d5HJ-`5J?h)9LdX z$-rHRW0E#x`MlqJTHJ~K>o2K1E-f?rQeAXw*0Sv<+~`7kRsv?&_H$p1nn@Zk4A*wm za#qUpRVpiraXlBXw6_x8EU*_s)Ja6f3|O+Y%+#Wi7>iqjxoFChG3#t7g8fWx!UaXX z7FhSg@V6w6jv@RMg_C)+#bSl(3O{p7r5fSmtg=elNVgEx?HS#?y|i>nHw*Q!HSikN zmhE9{(jK<9?BToZqj==UM@VPBxregYN%`$r^YzwKS~C}#?1wBT$!~Z}bJ5_?fSGX( zgX5#rVFMM$&3t>ita56Qn8qxL@UKOapNT=)3prKb+8c@fl15TTW-OS5uzB3o!O@iU zEd1%?NCu)WV7U55hDz0%$(V`IJe*>E5x!l^-k7>&lUXUK?YlE58!E;@Qh{6R=eCy0 zm)ZSxUR=`e3og&-+Ulve64B1P*V9|zzmPa2mT6@CE^^j$OexSp z4-YP{(yG4#X$4=Pvhpv1xc0Art^P|Oum1}~?Q+@wu&(&l3!$fCiMrGoR+N z!$u;-16Ua^r(>-s%cWN;Qp}X{Ifoe>Qc6;phBLQU6Aq@r%Xi`4>4_g?B>=6~o0OEzaJYs@04E^af2 z)Of4{k1Lc|1(_n!R%lONt(pFLwqE$Bx|AsqEM$=}yZ<=IQl<05>2vXMYUkrLELN4V zo_}^ttMY0lEWT{4+K~<{>gB|;?#hTWOzdM;bBweGqUN8WlHIlNS?Jhi+f}1x78}oZ zRCA>ljSfpo0m8to1X!#bDou(qE~=Jtw%JHe)ECgTFetn%6En)?C+yq1l^nykmbdD> zE}0|sTC#>FoRUl7lbcdRFs=~qtjdD~! zZ62_SfL#(5?|>&XzS$bX>PWf4PEq-s&jQOra`{m@SB0&A)j;ez8OOrK%}0M}zd6^d zy-os?{xYSsvkuLEM7OY|Ovw(gHd_h?n~Lt+ewQ-ftEUVtF4ZL@=dETX)?V#9fYC68 zYi{F*EADouenU$M@!Sc3JhURgX{#OyMzy}z5GJ&@^QRe>bF>c=jdv-BR*2OGbVSlnR(+ z_m@V&0u09-0ijU&N-H86s^VmS1omfP7Zvw|aC2r2VRwiGbl6HJMCMAd9+W_V zz6}bWBqZNGH6Fv539}ChfS#9=2n#G6U~4eN+RUw z;S*cE_;7x8Hu2oG9%TksgJ97EdaEeUIJe=*bM^DZ@xhUAyu`;3c3v94(DX=%jA|2s z)>gjramd>dN76V7xbGX9D9+LIR9>YiHv*pw0v0H$SQ6|)IPKn#)NHU#)E_OtUw!?G^md&H1f^O19@k) zP7P^eD_Mm|_yCy&V`sD@dQ5-M_lp)z#p_)F8E>;z z&#)CfK~UqY1yAg09WNj#tO><5W&O>5jj6Tvvvjk<=%|$yY z3q3v9M8%nfHlu$}Cddw_F*8C#)T#vEk=Vv)yN3ORQT5LVLE<)@TP9u7~qm2UApNb2@#hUZMoREgG{Y%p19v{ z%pnJBM>H*Dmr*ZqM}g6l^`Aa3LfoBI8r(*f1)&W$lu@?GDd%Gku?zJcJHPX1BM0+6 zJe3)E?eqh8=<*#+J@gBg;jXMOrteS=mTyr7Xq`{NSt8mNuDO!3+I+_3CIt68~<%znVWEC!AE9Exx|O>BT$%hz$;&b zDF*YcE!L_^j2h&`?UqIVS)D!p`pzWd_ON6NOI~ZJAh1=~5*KfWiy3(GK^W0zeDq%~ zmEUO`UHw)$Wcxs3tA!QWzge_t58IKZz3*R^Fn1J9+&iJkP8!DE2@99*$<}cUEq$s5 z?M?{`J)+COPdOXFF0}lX-l+s6SAKIxLZy!i2=>mE4L2?e(c3DL^oZLKD@xFXk%)K| znbthE6RJr$O~z?O3OkYV8w~@u?Uk!e0=lPbRRI~5hV7~`I7yRuQyPJakvfxSI+lj4 zPH0L)S}BbcguNfeC{}w6Q9Sm-AoDVa^Bo`ppum zdH&|$!`1PxSJwOkAaN?)_&H+0D${g&fcrSK5%|)Rf*LRJHF4W$IYz@wCEl*I8C@P! zPm14{CqG#hEWmd7;>ZFb$9_YI64d(wwK;$qAHvv~#MN+#jo-FBOj)Rr>F8%6XvTrL zC5qKVKx)pMMI>7&awdTmin`^WrN+AEnG|% zL1~j>k|p3O5K`m#3X{NIWrZ_2i@@q$Az@xK9$lMwWP*xN6H-3s!kQ{Htom|LYNccK z3U@vt92l?>#)N`72yd}13DCHLzbx?p7l#?3p%TE_DM7HT1VUK}L|P>f>y$vSR|3(j zgo3n6ARd%Z%8$S9;ZR8PQRSDoCj=UYD+p9p3>>n}!T4FrXfD`{-$Gu%7}jE*VXqy|_8(2y)AhL7+#@Gv80_JDk8H+d z2w!C&pH+=M0<#KXk&|Pj-fouHe_%AW7Pu4+r*yeaK?WTTgs30ym)BVNuv434k!523 zz*cqasN^rLsx#F7)2AR`6d3biN;p15r(|Q-@AqFwF!tsEpeFacH7LF}2d6dT8@u>~ zO#qm&N~RH5u()C+T8LiL0jnhqOKsPml`+(QA)^P@pDyA2-~v6_749rjMdN@*MbI&& zux9!Em%t*m1Ez>+w1{{_9<-9)!P<(%Y(Ux*@CF?~%BbglZ0m)!g5yJ=E7|j0+NVKW zL~Niw>c!bRe8H5vUm2|iaaw3|gL4hokbtkw4UHy^`Pg>-g<3Ar>e73~u=lM7xa-nG zY;GPf-I^pZpqu3#*8A}3!D|sh(k&zmM_SxwI?Cr=G*R84MBIj~A8b=1 zz4myk0=Dzu!xemy=qD$>TFP;A@qN6$d%DBDZJCAY=eRkeoMI29ewxW?sCn^A*liz- zQJVnP7OFIDer87qaB83m&zkK>>P$k!Qce4z1dLViP<@1Dm2q4zkvyy%XVAW;mPV>T z*AcvGuy1Ot4f=Vx<|ErOVaan9>ri8z5f8Rmu2n zW*EDMc)GB}QC49Ht3m}b?@RSz(Ghz*F<#+`Hw>Y%mW~hW)%t`-{WE{Yda(-E6($oc zj@jln5yAkK0U&DuWHMop%0&Q96QolR}dbjTja=b8?mT8(LHD6LrCZyN94z4dBeHIJ1g`Z;H;v55_fMElma7 zUf)-e4SJMPnw5r_o4?|K8gDk_8Q@TYGFYgL<5E6HcUS)>Orab+IoXt5kNns2V1zWI z%j0SvK5e)PfTR2OZb#GPbyikCl{59>#)q@xF3FmoQlxQkkWuN9L7uhq7=~yI)_4l> z#B#%BjY7F-N&j9oK*r~4U`%gnU?)?k0rIf3=T>PBxU*5$T#tDM3GQTU62%vgu2ON= z$e;p&YIW(j2+OehoOn>t1=&0Sk|sqPzuqqHpB82uXq-nUm}6aisH=<#;RGvkh&i18 zbaKi!3?S2gLOG9jw#}}<@YPILd2Vp<0A@M=iu)X%G`!dX^#Z*EnWLZB7(Y4Bk zY27W>G}tQ9`l||5D`Jh(*9`^T~ACnh&`;CuCF( z%t%j8HyV@9l!3i845*3S(UWc^;xIXayHX-8i@`b5m?GBEuu{(xbb6d>WTLzq6uUn7 z2NU9|7HQ69l%cSW!u7XQLvcH5Kb{q@A|GpnIANEGr6%l6R!dHTYpTkH*@^QgOzZha zct;%bs?DrIwRt#J8<<0}byaW>7h8%($q2lIeUKd4he--yha7cNu4T_Aw>nqcYG{lP?{2>sg96!IR&aSnpE{2%T8+U z-ZkF1a}t_#PF}l&njVMHjvhxy^0gP zyu;?5)M<9$lef63uk(HptR@lAYE}V^Ru$o)gvO=!6IB`cA_pUh>6BA1n5|(BH!vn&f0lSc^>Hd9MPS1G2oO8fgbT_s zO_l8-xn`BIDk4{$_E0S(S>-xkO&s^Wu4lMOsYJ1!8!|!ZGa}|Kw`XX3L<=J;2T6K| zc?Zh{gR(&@@bc=94#Pzk9VkcqT248i)wA*tPmk(;>K?!9dAa+fO-nvuwjgFs9b<77 z9WV6LGrvFYL4N4#IC0c)03Kcr;-6tto9z|u#GK>mksidQqI>&e{D&T9iyol(q}WNu z1?C<0?xe@~pv(Jj#(0l*A`RfglEZpvT1I&Ii>n06m6L>P(3?zvyb%XXz7sc5y=?_P zVzqGzK^lE+tqqnlP5tkr^YbE9U1W`?2GXMM?&>Nk#x$S2Zo(J*4d) zC+)EI04-w6KdwIRox*y~u@mY`2K~Y)fL<;caP~!VQ@4m?sH(|BRS|^TdFrveWE5XK z&I`VH%S&b^T)h8&Up8(vkS+maHnElf$=Y8CcX3Jtyp8(~F9=>9Uz}hodWn`%kDTEm z0$=SxmVpKmd-VraxUZJK@B;#ZraoSJgijc_s?eNQCh35vjS%QY0baO&V-xJ zY&Yj1E=SwDsj{}&OT^u4t%g|wUTnil9+2XQT)x5e@^EJAnM~+)w^-pENmYXyi{_H3 z?)T?&2~FX9Y0%RSqbkifnBX&ImAl@c*EU6YrlAGtiG7!HlSR^=sauk5IWMb}gx&Q@ z>YxG%a~u6YRZ7C1AM|=%O3zh5*r668%Ay|nRjITnF}RIqd}StW@N9@VQ6p6US%Bg? zEi6s6^_r394l{zuS5|^f&9gDFEsR?%DP5Hj9JWys#`Q=Fc1L2_rPc?rro9sCn+8$c z`;#IMU2`qyu6pKWIXr-gkM`V`Rz-UMU@|zL)E>X`2-dn$0hvj9ZQgAcgjQPPqMZOE z>V2$JDOT*SSBvxL`f8I&Mr1p9E^^~0L?GkrDu>WU$BK_c!}8k*i(?`h}|B~RWcxehucR7M;Opt$`c%?Uo% za3l>h3~h4^nL{UN>_c^Ve@v#%8xwRLG_yX^f?xdwOJYMk@RnYmyppR{JpyAr6hhTQ zL9!kc9Tyt3S~vvy!U5b_IM7nzJ{wBip- z7-fsTB)~%vqh`)Hwc;h@<0=o8L4yFrCKwnt3@3P9JCf?z(6$7SIcy)sJ}lXy4D`t4 zw!uJW7X;lV8rMi#V-s7wEt><4w?{e@h&z@8Tt*0m4dK$|7O2b)EbO+Xf~%=%SS?ML z6fK59b#bWTdlNT<)%<`pY1U=x7gChG;qDcyQLXaYtkanQMpM_gV!fOZ zH+dnhYM<`#HLw=RtF4#StW8+DofK^WMdq+Q92FlK)*>J-v=MvL)-onl(yl)sg5b3U z7?2x)fSuz|G%2yKOhKqTpZjZ?!Oy6ihCXgu!a6d5+Ln%F>$8ssk($gCqtOb$jFlxY zUqmR}B*yu3!b1acNpcd=H0|JB^-z`z%1sJ$-s%|wD;@#D>)5iWGt45a8pn5%DqUc9 z2m*&TAz>QuP8E8otNy z3LF|?4LUQv9sjt0j$;YR;K9mp`~h@u83PV5a9)MA*}dr#Cr;SDj2#w~&ch8(d%EB3 zVP=Afm7D{NbZ-F0R(w!4N`8zjelE+cro#6x3!?vkU;X{_-y)^avqP4~0wIW|-` zCEJs&*aJ{c12zP2=$#z-gxqrLH}(!yJzGy3bL&;GeUh_?J7T(%PjRIZ$|=yg!rb%F z3`dE3EiQK??+oJ%$mto|q1EOb)ydgJZ~gS;IIq5z%jkQphQ2=)gthwc@y>@qyNElo z<3=&kLm)mAJ$`TLQeSO0(`I%*uEh=3yyV4zQ7v@cvdiYNm);k6m+gFQkxGB%3;^_m zosU;~Qs4db`1t|x1AfQB-T$hIH3*72+w@Y zCrUT^4b8PB{LF{t6#KGy??-Ym!lRvvSj2!DeE$vJo$WYwI2}mtoDQ+x=?FS@I)OB5 z^?}^Cc_WtZR#7cS z-??@i+v|T%Sv&QCCkDUU+iUt@P3J4$1>8Y|8F`WAj-bB4kp&;?$6AR@tt*gRWCkvW zu6n!1T_7Ppzu8&ut_mX44&_FcvCif2C; zz!}D+*wy-O^7@S(rXY9tsOW&OpaCK?q)l`RrnhXwVY*&FnZ2x%~JDl7^ zDZ?I_3JAnOms&Vvm^M-qqZ{#==))el$YzghZhBV=iRHO;f~e6DWR#@x{rd?W4jiJ; zoeb8`oc2~@l!w_@+2zgMSv#2qMrY9no_hCShB@}GZJ_hrBOOd_nvu@mtnO-_Wkw}0 zpLh##h=<`%PmTu6r0^Y+aU9v|UVNN<3Wvy-ff--9WeYuSPo4$+39Ii#lU6KHopf@p z=TM%yDO{FWYh=#4nxthSmWR+1n`3BwSEQDUSxqB9;bfiItvackf|r$tng_ypvglHn zCcMR$?29tl?t#mhqRhq9JWL}!lJtK~naM8r&U`Z$vIn;-k)D$q3Dnd2yEKt+3+uBl zdD>leA@3|Z8Vss1W{ORyhU*;~r94eGjWf zBQXO|>Us#R*nlycpm8n4+4)$!XD+_U6F_KGHz8Td40q``*d!ykXrAxsHBz}kB@gZ8 zNV1iH+Q-|vs}(k*VfU+GA--*4k}P3-((5jOO=dyKx-($R*6XgYC*94%@&_gx$aKwY zZmPUQCC>#4(qzD4Xi1!Mm1slsP%YUliAUmTykd_E@VHY#aCW3Fn!$>M?V@9&Cum}} zYwc1I61|+bP6>S~-|8ygYI*<1-ZwA5YXtX8Mj~~CWyl#G*va|lkgw^y!M!KPB}4iE znlkO-&}3J1yk^$1p|a)bn|QW2NY=-wVy4oQT|+|Z=#X8F(R38Vc?o@*+Y87yy^~zr z8{Bwk^5tWYy^=bHIKid>4)FbgF1zI=mfVjpMljxw67kU}oQbrF@|?$@Ft~RE%zDCR zM3*RyTGq4Qr6=^0+A%*u40pps+Kz69+4b)f#f$}+hI!sT-Tk;b%i~d2UNzEjajk3{ zC;OKK$%K52$m1b_^0-H!Jnm5_4R8cPIl}%M|Xj(H$B@S|?FyE_l z%dUdb_{ZU{2MmHH9$FY3RAzZ-`&&j<;N>u2b=dgX&^&+sbu*vE`j= z6)N2SKvCwRnqi5{-BB*W=_`Oo*jZL3@HJ4JvZ z(lr_ZjU&xb5R%B?QPzzNI>9xrugTDS}=*nfJM|5Tl9sP@%*)Zs|uUq~t}@ zf^a%XUvhI2u62yJ~PE z{8dhlbsEgb8Ap}r#GqioM*F&ifE&)Q@qR21bd-Z}g4fMm8Z1Lo38fjYA%k76mEs>! zE0m^|1?~#U!I_;NhvRTI7(HgTyfrJJs#Ek-BPnBrFK{~muE<^#Cn^c}xL-ouULHl| zrBP3vd;aW@o{+t6M!DHO4wG%G%q;Zp^YwD^_xk0Z2el8b-r?D|QJq$5t-yelTC9+m zZo7WakiGUAJXK+$4XdJZxP~j#skxGNDYJ3})m`GP(7J(&p_8%^_7ZL_kV>dD`}Z=N zs0<-oSTM7bomKiEuoxeqa2$`pusk-yS#iERibtoEyM`yO!tjwcUCarbPT9wkNHj60 z-RMNg!+3lxGsr7#Eu`D5Jd$mRDq*}*mLlMl&J@P0k2!po!}88>%q0P|KwZi#so*Wc zD&;TxSs@I^R2fc1GhjcIM4<+VMFT@B8p5e)2&bYk9E*lWKfC2;s7*rJ?Ku`d~Q2`7`1uz^HAmN|@hLZvc&?&&{c8%8qleIfg3g>{A zE+VCP0kiTsQVLiAFJS?^hz0OU6#$j!ZP9_0J96aQ8Ip3RSj-)flsf=9cK~wk0HoYe z!zp(H#M}vxa#xU;JHtZm1c|vLka9;L<&Hqf-SwU4i$D2Vp|oZMiV*yC?t5G{yMO)N z-o7$Pa07V~yuk$;^3G(mlnj;vcBmDy#kHUrwZbN_I{ z9`n=e=F@Cn*ER7=0$AP-Um(hQIrrV*DV_zoO&h4*Eo>vsfCa+}l8se6APj9hlk&SL z%K~P}7E;YHP|7a9?H&UA{f*dh2_)&|*-rKQmBsZEp^z9~25nOO#`WcK+#MUzCLLO4 z;b?>=nWa9!`_)BZ9*xU0?sX3^N8dWQx&FfkfdqAk(|{{3@#B6_ou%UHA9+hwl%)aJ zf&@#}BvA75aI2o>;Z{FI;cp!y;YwuB+QaRQx|j9M{`Boj&p(6Tf184((U4Sq7egfr z{9SUezR?`uFXT$@`BO$~C0Fa4@1}3|(bwTs%aBwAy{w71CKz}<-Od_V7sWyF_iXVKrQ_{sxbLv39 z`O(pDsMQzWffVAj$k3Nv;+A zE=u|R(_($US}tM#zg``m9vvUa%Mb4^4}P+D6bCqOROq=mk^kxV^!NhzfboKKd$}q@ zh?;>m7Vd*xB^Ehu6yxZ6L_%azw|x3EU!S74&C!MSWp=-9@Fpj+FD407-A7%52epapEU|cY5Yge#>{qlcQt2PI-+RIc)=j0&Mmff|WHui~zf9 zBb2w4MW8lP*&-pEh#a(J6+FFyH-ZB3;wPl>$N2$XsKdhpho6>pwam)I14T&-u18+liYA+xEsN8f?} zJLmtd@PC*1zpMO*`-pJ3?=kSxlE5#MDo-*To}J>k*#npboPfFc>1EFhz2?o z1?(`E9w2pc@D7hFUYuOnyF(o+-ed@r!=) z^!V!X@ZcPW6nWd`wp_B&{-q;V{fUPzbczrf?GPBIn+C|4WtWTJz`2WIXc z_r$=f1pRE(5W193xEIUbdT4l?9GpnMnbXmZGh_7Y_-w}Sq74Ddk`1H_!7onFu1=uZ zW8B3;k6eSyg40-j-V7{_6swUnP)>U~)lPml;mHnpJB*@NAqy_1I*B!}M=Tt&Jp>GM zEp&O!Cy^uugZPYuO-3YMZ|1Z0&8H~^@a0Xy9P^L~Cw;gwUw@jsjX*rINzxs%ppv;b ztF(aO>zTvSc;uTEBigl)^7B!ix#3S1ipO>2H(tcKfApUyjsM;#49H{hH@8PKrj%4` zN`h5BI6MY_i%?$M{OaKHjc?k`$N zH1&ZPgUhz@UZ7;ywvO+n;wD!-12Vhck*aOcZsODCvKGY53DMc$W?!*|5Uzzbh9bg( zDgNaZKB(C6T+$(vfia#zHSWb5Bps5Hu*Z;)GoN85aQwGH)mB1PyJ2mm8eCH}ps&tK z=!A|cGP9Qh0HTYYl&i3z>(0p-v*^PZT_MoM$?0o*I9VbTq{JxU80FpZ<<&rmU@eqd z-~zU4EO^ypL3%|7N-ub%$|ge6<$#uz*)jxe7E(}-l(l9!rXWyn0$Z`{GIb|JVykc~z$h{` z_0%vTwlPVDVjhJjB`-))?EAA{@U~fNzZI?WD&`__JNSF_pjqqou|+Cg=7x;0aAGP^(_Oe6HBp&CPrz*MqF^+5py$D+MDQc@A>>w7kQO-W;2; zlj8HsH|oW1u)N)YkFvXV2G9I*sfej(BQ3|r z`z1X#CzfVUTTG2FgxDUKTmY*vZ|09!2;uzoc0g$ff@Zh8KjzB~c1Ecg zpC6y{8I_}x3#{j%PC^)#U4fI+lPl{tjYSYiF9PhI`0nKbH}$MmYAieGcMD`t*DFi1 zA~T2}OOo*hS3J(;skRb@$PzCzc-9Lr&DN+JOBq`pmmOZP)xhMaR$N2bZf00pWc~NC0FqBkPL{?m-9Jp4v4Iu}!D?*G_Y|97_gu?!#6mc_Lp2Q1e3IDXX%Zxl} z8Is>VZdw-oA{2PIzp=)7T4U$HTzdSXR2&((VdoUX_zD!lIC0v=dE`AOg~y*83fc)+ zv|6;&eY97P$}o3SR{(+3n$d-Cu+A!PBj54{z?pWMmfu2tnEewjaVa@+bn!SqS2{y# zB;X}!R2Gih&;_t7I(&=u4|y$SagVVS2X|<$_(q(lIyjH~($&Gn4#hQ(DCb<5Oj1Jk zc&W?9J^5*k!(8**%cteK$)Uu?i85vABx8^^JKtWTF*li!MXL3T8Qq*T<$_E(y?@vj z86;81A)l4T_c!U^8qw3;Y=OO@cgsVr47UkSpPruJOLj!nPjr2xG9qb{dXn!x9Lf#^ zO52YyWS(gcY~?iAbYEhmf(^uX%jx9m;QbEz!%iZ$*(`3Fx~14X9PgI3+JpP2QyI9% zEUoA2z%%yS@zPx!9-WY{~ zQC&?xCoA;b)(CQ$7Q_MxjN{^1u*P_p<3yaNYjYGW@@xyY)Jf1;%Yg8R7h%@RuZ{90 zRh(Y$8>3KGdoK?!F9y=&^07YkT`Ayv;9|uWng^oR^E*teFui*(+X8x_@U9pp?WR&w zr#e6E)S)#zNL2~vGwk9Yq`3aFLm_6Sy^V^xq@~T|!x!#0>E-V5L5Le2Mi(&>dvC(n z<}dn~I~@sQ-7i1FC-jj<4u<@uGwEg7hQxArt9VHA31}hh#_>2jug%XVsbj2jEG(@ zt5w`vH)Z^e?<%1iL!JG6d~k%<_;TJW9uuu->WoJ($6fB@$%w* z-O1xRD5xkIV?kZgD*DJ&IX*sS$X!;6mU2}uNYKt4ThsaU*)04>a`!M%p;J3knV;#D2tS4;!p(NGca^@p?=6SlEKWrUNUF?soCT zE>kz3Vqnw)KfRdUpUS3;KEAhr5Uti+0k4kVp1(P`!q@Sm9Iz$M6mK3ciV$6rpDvI+@W zu>2B9w?T}=)ef`pHfGE;rS|Z8`ypo16L&gc6vzy4;u#B<8Er`Fqo|TVlD7K1Xo~Zk zNP0{>YI=W+9gx5H1al}D*}YnRPK_@XMHI(&f8m~~6(cO1xu4^NfAMsQ=?T8M&#t%= zh&?I(zr<;4KJ;&eMMoOm5;>5VCiWAeH zR&nNjwu%$$jw&uZ&s1?@*;U108nreZJ@qv+toHL)Z_f`duy^|^52RS%iI!|5QL=Yn z^MCj1&B@`x)yWwidG_rOUYi4sEWDSHlhBWrNM$5F6O-Uf$}(5i4~?}0Sykxhn6JWJ z$WV^kymY&rxtEp*17FXy0wSq8u86|h_%j9KtU4kVA28GB9y982Ct0^p4tcPIT5@b{ zE=qAtG$1eGl6PbJglT%dHs9t-h`TeL$U8Dk9(}Jvi@q((Z83|LsZK>&x?L;KX@zll zllSV=+7}!9xP|WHyJuLo`1&!@1kSNYO204HJi{_(+F;RB_p&A#C)nJ4z%8aUlA+0s zIO<%XWH)g=tJeW%uiW-ne#*1mMwl=?sh=Sq)|E{1{=qtCPN*(7N9_tTcIqaX(sARg z7j{7CTk1VkKOja)5()jbox&SP1d-3YH;tWDGO{k<=_ZDh2e}p?A0RdCew)#@efQ=ypnK!NoY_E~X&T);kB0sD0a!NUeiN zak7I5q~st1-aCjwtPY|ey@M!}oerWf#5IV3Rc{)=;!6vZoXe#hu93|{ycdlVlhWit z6q!qFXCpWX3VEn-mX5l-)mN zNB<}dCLvqJ?iY_yNBCTe-FvXo@?}PHfPFt@g-gN% zGhtg%V3B0GIQS^XBs||mC(LkQFU$A}y*YW+tezG`D)!_3@_KfUk zUfBo54u6nQX|9Q)H^Ry0l0j1O zzPO=Wy&P^x;trn4>aj_bFPaVGkg%g{_6pjlaNC`wlgs6H6;6m49>CePnSryFem~;a zO|!%@6n3_8Y>PcnsR%Gm9ceT+Q1QN|D@}IjRsB~&qo_p4ib|wx1(nn)s#1n_(2{#) zRgT^gDy=t#N^5N)Q+AcHw}udJcPU5q5F*xFmt)2Is-;?S?VL0W=hf6Xk-oNxHq~iR zE~J6E3JJEwA~vkHO6V)BrRl!1YI>yiRY|n3M51l=6|65)UuD8OD%Gf(gn3*+4XG`X zHrrUE){v#n7=JkZ5TxD-L6<;y7Se&Z7zs4p9t*J`$u~mhZkJocthud;u3(s=B-eNd>jmM9A zs`si@63gEte07G)DVx>j%L=&3M!#l*=pm9v$-5g;3c#> zDDPhFq}8cnPHRs-G>_zgGA`bp9M~R5k)zyyQoKDKOAm_&+KwWCva@)48F5<^)s||t zaVjvZPazD-OMFE6LIp%B9A;XQ?UN`jHQH2^u)!%Vo(K>>B9&>>y2z4*_A4!! zT&DI3rFX#lW4PjNkdU~JI?e7P;;tr}DtDy$5{DGJoKv8kT^ZA4Z|9DPy5WBquR7^2 zBXx>DB+1V5PG(#^(rA~*2N#Dw^Z25^nik4dNp>7g_hH0RR2FR8=Bb2_^R?`=88g*R zI3-?(;RzOFWOraIT0PP3yY2HVQFo*!w4Fs!YS$*MprCf%skgGQf}?qE?a7)pYZqJi zqplkB>TF7vq+*QLdRmid?S$dRIPg7uf$j5a87P$RDVlSCc}qtaG2!jwGx5IEA~%aq zSV+RPP+<_DfL^j_3o8XmLF%59_K!;pX=>dnZzl3&3Tvu2zqC+-MFhef0hiS&Wj2@M&x*YK+QoJ1y_R!s6X<9^M zfL#ZfOzU>eqgB`Iip_?#6gx{tW@)H{>$Oz z4>|Z_6P(U3PTtE+h8&j%q7IxqDNVZ6ov34!$%-Xbyvk82H4(zH=PhXuXjf7iSB)p8 zcJS`k2H^~6&{D*CsK_Q=xbfjafyu7<=^nu0toN20;3HqK`FyD z{>&m6wXuo<1>Gb#?f*N6rIi#Zs%y#E9?OHWDjW*k%A)FZZtOFw@|IyFAp$fjkSdG@} z$_Sm&65naKM)WFd3Z6UGTI@eHV#;j|*|D*H$R6#yu>Ux;x&gJZcjwq?^TN^EeFd{Q z3!a^I)yM8Ex@HH`Dh469|bQ$L>KQA<{*KJuG2WvcsLR`#1xO`ud zW)Q0Yi!VI6Vv-^zb*HH^*OJqkfI)UT@8z`m5u@xPrXzm7*}%$^FpDW$V0MwPsxywX zqCmea`QL-5FHA{aPpr1-=xi=$81sdf^5}2N?1asbay`SDC)@|wWK&|1COfo7#Gy_l znv{Pia5KBZ`pZb#j%4h7a~}hQUjIlPH|%^=uhXe#1otKrOcLg}r|&3ZLF*JJNGux( z=S7(npK#^RDK>jfyn7+Q+)5S0cetzN@%CO`BWQUOjrXktIhls6VCpBsw?C2|(U5c-vStdmx00ZamkN8t1A zUCvnnDibz}#%|rxXwby2`OSla?#j0hgo+V(s6<#q58Wu#uLBJK<1pk(kCQkVh&&iZ$WNaXie?#&kHwb}&kKk83w^ zNqI`xun^af8qwYjI5<7R3f#pB-t@4~9-8@{91`e>o>EV$NnRXd4KsX5*OUS(UYz&p zbrhE$xQBv^`TrpGd~BODRUT^|h|98Yl_P*Iu||DHxMWfNo26n=vS0(p(wl4=FE>_O z*_kGcs;}HkNJ&=ynkf2c9Stt7ecv{B?pQJ)>&OP=RR8ST*E^<`H}g~ z=?h6c*AFt7M+IY(rovHnDQ#7ud~?!7*fSmJ)%z8&FA|b7GUzu655AXYIIYk&VkjYf z^IdYH%0{M(WpPuXCW0=;J@XG`^iaJTKGkt*DhY;0Dwe9{DmOp4mBRd=9c^=CkyBRM~ zDJ4NWR;2kAK#e%WOXg0Nwn$N)&q|P!+DQ3RELWly>k`yPOUf>Gn(Sc1do-|1BP*q> zO-WT^hcR9`!L{x7$wxu%?ZAeHs01ByNXdT8>nYWVwFFat3zy3HQA&l;iCjKuqNDBp z=wn|iXrAVJs8r~W@)?U&Wx{yd6BAMIGX%@s$gIR4zQ|+y$3b~uXUv38p+%6~hB}l~na)m*U=yR% zbnAicm$b`HT0WM$i8?B{SQG5~Ps%84e^y4d%s(k(!!#_T@Qlm&>j&BLrnM%Izey#k zHC>$TAgeNV5KS$hs=1pPi7-PvzJ(b@-W#_~4H|$N^@r}-5eEI-4(B5wTz8APsQi?x zg=HUy1jUHZnLNzae<(vizHlfKc;t(&0~2mLlFKhYEiLiSyo{A7h7GrK-s}oD%sYZa z2KUGCVjB~QTM6%#fV98J?$b>hrlXO#tId3iy*r_Fn8D18WWI5zd{)JansY@$&H+qE z7q5QO)jE+*ND5;c@G^+&J-vkFlou5@%k3JwX{6IrcD*i5e(Uak@#I{^73TPhC)qF1gx2nV9t+1 zo+Sykxf0M5KfyP=BfeXCQGVGYW;HCs!5X|mUFef(6|;>i>3f1)QBP0%j@&lWR4@i;z>tDXv zgFT>0$igDy352CA?oyw#wxwAV0X_{J??7Tl5OBn7al*YXqm>=P#BM zLq#&LvRK>o<7C&1$mJJj@B9%n)B#0~GdOUjr96~!5VJPQO{8~nRh#NCtNa!2 zY+LbbTgbt0g^b#jGm^YFSR9LH8Y1P8DWENF@Nt^0d|}+eMv>I`GaGnu}ZPw=`f1!lnL10gYandi6dna zZ^QSB$rhAZ^oYOF-1*{j4CCCd zI5Yey-WUE`s&`D99zNcwqv+}IxjSOg8$T0Krq;Wp3UR*^OxN9kc!oq>SIL|@W9wJi zlC{J>i;-iH$&Q?}spKxB3fHW{%(&Koe^`*BMZ;Xo`^YaoWN9!5Uv)^Mtb)NfWR*tv zq)X0h3Pmn_)7|pb(Au-Xf?nc7hF>*9S%O8^EC6yWIg&v1B*8O-Hgd;=qdR7}c7Y7B z<#X7pspBgNF8GrkS0OHd2#w1hva9#(@ah;lIj=4-fi%+J)e3mREJ(ML0*oD6ivHXo z%7|(}#lBlm?dDR~;BB-by+VfIt24khdU<$-WB%nFnupW`JXmhv6m}DR#Z?XT&-F@5 zvJ1u=L@{phFg=AXR~m$Gupi-_d5})V*#&k+`AY4mjL3^PIeUrwf6?m~2Fo7$NbKN2 zLYqplu9KXlxO7Rf>WGJ%<~TV@S}iY3pevMMp->X`yovxoa+!F!o|8fa%h7N#d(s71 zM!F#EjIIkot1cMiYIfBH5g3OI7MOulZJm4pQ2nFP+^|IjlLa;J_kU*S0 zC}2K70+>1AW%nGN*<;g{uXg;OO&8>+%oOBTog_%m<_GxAr|R`jjR;JiOEyB_##{0P zzxzILBTy0|AtgniM(5M^h>kxsIs+v-e^+ikcn@yAZm%oi7AV{#q{Il6=xd)?Prh^xk<>#yLQ=}Ba%{_0hSBvPe#EOM^*mY*zR=L~64D}RoUkl+qo@15o&o8Gf zgb9aY>dg>AgYaK?pX!g63-AD4aQw@}G_E)phUBBigt0Tm)~Cv#(5nDxH~jgL4=sH> zwF@;U%yx;0mtR<38;mFH2dscgf!hc)8pvij$|U8Z%Ah``)$drq;rx$Gj+6p9fEJAF zkiTRufPDQ6PB+G7V`mD#VoN68j#J?lpw{fCB*EXZ=#FRN@Vxo)PsbO^P(bb@k{AWh zJ53a-qNRA943-&Sm0>`XQF0`m#MPV2>Gd&Qk;Tbp5gq|%7@sB%4iDd592|a-xmXNq zguuYm9u_z2w1hdF>P*`*x+#^Fkre84Pci7DS6i zBKWM)Dsw3!X)J>OwZunhkUvf82OPOH>&^rq%-%J!u*A`~dFmukw^p$xLC~E(E=A7XERn`eD6^DF886msGpxR6NXafJi8N) z=I&c8`1}#c9RG+Ey?;mdE})}WKhWahGZNVJ2#MxyIiYbRk_gFZCrTZXBv|&##k$jW zGE4PIEO>qwV5Z{XWG9Z&NQRX~!mhHD)|Z{=uP=kGAhlrgv8-Z}cvL)$d?R;j-pc;NRCX>}%ky0ld53uf77AUnJzJkPw9!hY20T zo3yW&OJ3Q{6qV1e*XDe{Fqub7ofuGjzut`k5S<|Q!QlY}D0BIME&arhKPjX{l1=2i1wsWin?B8WObLiEWYv zMPJCfY)e!Pwozpfy=F-wraS@hHI1qyqGh396Mz<2WHo++GQVZO?j1H3193AkuL88p zvKvR%F$KqqnH{RRM6Yw`tj`Y%*OeX`nHu;+opR5!AwsvQKKCeWHE#iFVm1_-yvc z&}E-s%|4whG>Si=ZSm73Q3&VDZT!htWqqMq646iu1~XA@rwA}hf`@#Evk0eWS0{J` zLz`3$)7{mO?^%_@s7V>**7o#;pdZ!H|J+(Z|bk<)#Az4nVo7&)HN)t)HP`Q zboKAQnXn&@_uPq7gL}GrF~D)tU?y%Nqf<45%FeIJ ztpkUrn!Q#6Rj_hVe@9_`7bYlAd_ zY|)bAd+yLGWe^lw_5+h0Es)231DxvKx&<%%bil!tY(!=h4NkljD+c+UD1^~1$6zB& zI_5}+HwlsHO+pamc-e#}EV(EL&XAqFdWUBWbym}YGE(VSb^Ky0YQrdHVQnXo=ZhO+ zEwg7Tl-n`XGq#;^9Nfeg0?vH%s{Rp4I_ietigWQ*c@9B=*ylG$Q3x?bxdIAzB30|s zeaM7LQqJQk9byF_#$eF78K|6a+p=6x6+=%hkjE%MiiJngel8pTMF)&$U}8io=exmQ zut;GxVts{t4R?3rJqYLCE>J&#ZMHZBd>znY>y#8$1w0xqoz`ARq}qy9rIxn9=(*rh z<*-9emuh+iwMn2061+O1Cc^z}Q##fh;}KCp4=Q;SQFVnUM!<^p`?Ft;kCJ%0;|?h6 z6Dc+rQ{!Qwks1XM_mzn*QfR<2PU+W5w(WRS&diRo%P=Qcev!LFBh3znl*2Nib}*W& zd}87Q%r#dJvnSk2>fFgh5r8@>v34j@NS(EI45gD59%;FwQVU^JJ`mcWq34b?>l)-c zO(Jlp*yxb_okD0$wM-1jfw3x!&x(5p(>7ecSi?Gp)36_SsGW{OW%3!F_lU^FF-fcv z-9J~Tw#JIlShJO8T6LrukAAdLikVczO`$^6=dL8B-rRTRI5Ek_txC|7dUJO6%e!;7 zzdDAUDu@lCey6J_t&;MsunlozPw|dnw{epus|1miK+7a286s1yA``>DGFMCB{vL<#9;)G#O#v{5)zjkyHYy=soB{kDL_WKFv-U?SxLlElw#<4A>)V{p5C);$S$ah1-T&ePL zgwVpHoRJWGhp}}~pAD0C_(yN&8L+=42Vk z#oy#~T{R6pDClT*T#_*N7urgpq-i3-XpG4Y5%9?X8H3~ZV9($_pFC&{=ni++q0k4_ z1w5RC(9MQ!S|ILJA!)6uh>i6@N~e!HZI%+GX)_UQSYuXdwZ)k-88jR;Bda(3*wL(b z*}9H=20^_SiOOCEDIH!Lk}}3tqX=v-9Z)gN1tOQ@@L3Q$XpeZzzh}^uF1zEQB~$xd z9D+^r@B|Ajw2+RLr`ts}Y(^BET2YSc>ro|6HE3lFMy&v={W%SY!C;&2>^>?0H%qBQ zN1n9wjvzusYJHH-x~MdStS2O`WR$->lllS(_a~-4vBE*VJmW)FrV`dHE3*lhyj^X%GQ8{9W-2H4QUbgH4?>It0=PVw4`6swV>4U1ns7ocm%;u&}tr*Wr(i>us8=zVOB)Vrce8~awFb9Y}Eo~eQemz_RA!-OS9)?I;n zhek?qR&r>d5msnT(`B^2CM()he7&V9h<6YLiB&4NJOqqkWU9nW8AV&oayKC{x(>gh zos8^E8t(|h-ixaaS`{>R+D~gLf{#q45_(gqwBA%IZEPw+?@fhp*(yf;B$al=Mk7jZ z+!n!s@e%Ia4nf*Q(_9MNTO=vP>ROA8w8kPy8n`yXo%`h>*edZ*)HNY&8v%d zxWfS6No`nzX^5>5lwbq)8V=KF2ifnJHK7WIc}fL?vMU%$t02l1v&LekKI%R0Ag*qd zq0)czw>JUXmaT8mp}1Io3xma;Dvu^>!Yy%c`m`+TTZu-sl^deOQzUB0q+T4Yd8vv` z+=S!GOi$dA35i&j@cMYG`Fy>bj*V_BIq};U0FvdJb8OH3f>#R1456mmq~k!KqXlE= zXe{Y-bd1_!%kARVfk7gr!Cs=ojye$@mRJ^lMuB5bSb zjIyHwg}S5ag(gjcCvN+?1^xNTCqoz^w%OWQL5%lY1(W_<1(TjUXP5Gh>Sx5@ZBjIS zGCjFL_>5+qN|5!O`{2^|JHbVA3x|OsnBuUFL0>+Sy$`Z@p%tNF=SfRd-l2baSh+tMnDaPMPmi3t!lW~X9-oCG-R{c zmZb_sx>a<8b#A7rP$*QJf5OBMpWM_MC)$VZ@a4s(Z0&kt{MxC%xt^?v`;f!4uMskGVKa~Z{7oh`|7oQ6ubnyl9#byKWI1v^n zSZjI}cu_ucqm~!@14dG-4!poCUn;U4j_Ea)eEwf9#=va!} z8u9OcIbZc%f(Fn)S zFh&%ZdZEQ(xj#t_#4rcxV*a*8$A5>5jLcSzfnNqf-xE&SXt5%V?6|mzsr7_07)_Mz>LaDMgbKL92W>rQBFsq$kO=)sX8!Aw2 zL%^7;y6cNT=XwaLTj8vunMw6^XJo_zPyX1iKp7c^YB`)kct_CO`%)o$N_xiiA}`9VrPtk}pvy694& zam*PPH1u~EEC(Q;(xo$*VPfJhLbO2a?II)b(&M#w*%Si2-NOM$+87O}5dmEGLP)`t zuiG2Zz##)Ac5o$MzDZxeHHg6_W(slU8gX0zb+=GI8e!ZW{!x8bL2qWb0f5JEsjmV` z9`5vXUc~z7mcII>!ix7rR4fjIC%G^*n0kV6ery39VlG`)Jc|^k;B=?nCm-W(cpVuP zaEr?dct3q8m(#*G97-kLm6u>w3IRu@AfYJ*AEVmn<`IX$5Q#^P<#x4e z1kT_8(*CB`5t2W;+XQQba@D;ul#tNnIO1k=&pLP!0~j3LRzN%|=W#EXHQZr`yiZ5R zxEA*0{0i@uD17u551Ao!nS;~ihtsQrUlqJOxjkE7h~%R-Xl0xneAhu%#V+&o-J3U65UdjW zS3@{n@9S~oO0|PmZ$b_nY7@LX{@Xh|e|J0`oPMZsFLCE#0b9wNl74z=uFiYZ*@s{cR$>j;kli*Onco_NY;^gXs?vhc{(ZViCeed@%bxZPfnk?iGbP?vU_`r zE^-q*pJT7_hSU8YBFeGoIUTHRtrUc>AYSn{2PR998H?|l zOY;?3xNi0G@Br^-iWZA|%B0KlU-0BAQ+94ZCyK}=6&J^^C3J?@p0y$K`n3v4D^`CX zEDY=2V1ei2ja90!oS}oopqr^m7y<6GPQW|3s0du1ze2mzny^Th=X`%XGsR?>Pjqiu z!4^k059Y*RN$+tP$D1?NgD}#ZL>hhpdlXDjd92EY`V5%yYqyEdWvWNCn` zE!UT31Fb&i8bBHt2Be}P=1ZS))i+Wb)So;Jc=4)Irs7c<_;KK_TRiBac^uJGXz--b zmX^fDjQv~4Z_*sjh2ViW3VrN}S zS-j8Fm>#ULD^w&zWX$LKsH`QyGz!4ru2!SuAR#V1qb7=AC#?V}s)IFVd{?U^9G<c01H2l%{xa`}d+5sj+d@M)+&?^kymXnfs2ynOcJycD z2PN^Dn-@lOe8sLy*vf@qxCgUjsa$#3hNG0iQxdKBK1nPtb@&gx9i|DY6DOa%`7QUg z1eSL?gA=;+|F~_Wl6kpE2;oc~J&`hF8125?ky3sKOaT)1^Yc}TLm`{qCrBiQ;M#D! zw#KqUJf0V8l_~MuQbkm$)e>m(&#Fx#LS0)F85Y!hlp(WF(XCcWk^>!JH>oUd+jVvu ztkXQbSnSV6vu=TTCwrLjI##B64%h_M!!}J>>|gu(Lio*@mISM7VO9n5cCHAPN%|E5 zTo^SS)D?jgEGq&6h82MlE>nLS7q{>Rxv-^~up&?~UlDL9>BpkBD+11(R|FicD*_d= znY074BH$rcxTTmL{BbUy{?}4D`?^vGyI}FpH3D0rJQ!$;V$nP?#NNWO_qH6-g`l&uqnItq*eZiZle!-fleu0Yt zb2XsJF>j%%lcq~4h0p#Ozs~+8)Xe@BtFwO#+hT%B^R)$?{R>O#sXIj6PLING6tJ|- z0+iXm(PPirKvjs$@QrG-e}?MpUqk1=gvq`^b@p$7yAR1wn&=nhC(v@?vwMry=G*D) z?j)%=`xl_j_LZTAIdv~AWzvjIiEzsWO|$rKiT7CUxY?LZOJF_!OJ;jvwwE9BvOTiVVnI|9+~}n&}RQ0MsFKLBO+pCFkDCIkb=6qeb4K_782v;R!w?7u_Q zp6hx;n*C?)!R$XX!o&8%#XZsqcvwsQ8++DKE2`e7XlG%SHO+Nb%Seg9? zsQ4+9Vh)F)A6&Z6{!6?cFesCk^#ThJpZ!NZoBda)pZ!-F)*4?2nPD-Y^4MZP1K46f zM(big#bbegX!}Jeck#LmgcSm=uDh|0XhC-&+O8-&QsMmoJEM>mQ<*TBdM|6U?h_6?uhGh zK;?H1S6~`Uq{RWTz=XJ*j9T&pJ81<-Q5~!?(;@;(3Tbf>!J(=P;ZOyX8Vit#&Wi|? z;)@6pkVORlWlj_`bYDau4dJ+m&_iCj%vqESl+#U%SEiOBXqgp0EFw6?77=2&vc^RO z<0uORMM4S3{5fWl!Xg5taQZ6IWgaUx&Ne~q3zS@LHVrITGAMHNBLWu@D#AsC8p0w% z4Co|0A*E_1Jr39{+Y1tyjUHSgqzx?ZqfAtj?ENv_HAO81$eev^u`PUa;1NJY0 zeF8T6@7MoI@s<7k7xwpG+24O-fB#qe`+wTse`kMP=6|hn{uBGVZ-4)p{r%PcuI=x? zu)qJ4{r%VW_utyz|IPmXANKeEw!bg_xu)|U+28-z{{Cn7_n+C{_x5*XfB(7t{U7b` z|7?H%7yJ9a+u#4o{{BDq_dob=G`;`S{{H9o_rI{e|8IM51LatH)_1<+DLWVN675+p zD-w>6c9)af<76FSCLWDvJfrTO8Q+1iEvDNu+8mZrb+>wM;p!^6s=7zxu!#UCT!>+{ zfe?kj=2q87-~JX55`_S(WgT*}utdQLtK*OyEz3Ep-2++WY{DuDko`T+eXpdes&0?R zW5D zWZUns?f2QXW7})Cy=~jSW!s;#ZEV|rY}=7-f77=A%C^5}Tj#ry@#Sp$b+-Luwk_KB zeYSnpw&!g7ZMOAod)2m|unRUWZQ;q zKW^Jk*!Bl(`y;kJu!)eYI`B#)Ae}M-Y4t&roB(r;Z1v=tizl3K3Ru1?R~NizhCVA&6P9q>*J>`eC*2l zc3lgRo4YR=^V3QH2kM(-aV~CMHs(`F&kJ=PrLmKK()^Q^r|aAGmw8}jefycKB*)L{ z(Gc@j-uA-r-c!c>@JapL?>hZ*ut~4M=c2{;{QV(ghj{jdm!9XLDbF-7Y+Tt{zgjnM zS^CRaeuIf)Oy>K|8TpwukKu3B%?-ocIIOh$?E3lo_PMQdz8qpO=1$t5be!ALzdu7D z`@fhod}Oztc6{waPc!x1`WcRb^9ywwXYDUh{Sn)*pEK`&=$TEHV);YnyB~U%BMLeq z^8@<&+4b!mMzc|8c0Zy$AL5`%((zLdJ-fBdGn_w20q)w%@`=Cm(6byae184>_8N}> z??3c``tGSS6=S~YExclCJN!`N2jv{3`QzG?JQc5!{I1(`7tNno=uM_dr}<{-eP;9O z`u5i5Wj61{HJ%}PUWRmD{vv}p_iCeVcIDmk{5s4t+uQtZp7|bm&+V>kusj>}4{%VAE{F;wH{M;sc%K@m5AKT^cT=<(6 zLGxE0es1UK(`U{;k0hObb+;~3^Q#Z@?&`6xo6kJ_{MOnu2Pr#J+pw1+Hzkmv4Rl;(NXo@m|&Om{#0a`b(-6pI&)kcjLwN?Ojf= zeq{3%IW}Yd-OAY|8G7Wc^epW6pMUGwje5Odg14T1Wu0H8v1($z@2zKbGh~^i4{?!Y zHQ`&&ZS0)d;OR!j?8$2pUUN-e$%5-IuC-F`d+^|NZ*O-n}3wP zLsoX>r>@MW)1GhPArG$_H{P5s_Sj5+hr>dSg^oHyU{5XDsMyO@s4XgANP zVxIqicBfwds4*XX%PNnxmn(hGTlDmmiQXcQD(1%A?^k)9T=HMat8IB0#;?s@z4c+~ z+ud5{F8{H8eMR0F_hEei2QSY&%u^%vp7n=UukLI%g}ck{_ou zzr`zAN@L!+vUXm6mFG{a@SC0M#{8)j`N3J)_xG&miD6d4nDWXcyEdm*F4ecV@@d+{ zmYi9+q(6gc%(E+(Uas@=@*iGF?()LQCH)D=v)b;M7gu;P2S)oPX}R~etz6ROSzF=Z z82pgs#g$8TRQ?JVVhrCdtvuVoe0+to#Emu1aD6YYnw)Qz-TVF(hPt*-vhLz2-;t6~9queoS7;^M=g-Ag|a5W3H_Z-i_nH4=QykX4Guk6@${s${;7!Nx(<`?yqjN_N| zm5k$;^_7fcps#iso8}+MD|`P>%WHWKgZWi?wJC><|F`57U;2!^+Lo#PQ+Xv{HovB? zctVI7$*bKhM)T{*t1BDk|6QSD>lL0p^8c+|;Z&!r>%UpKdMTBWKm68LF6>;8@%$(9 zO7HwmdBvrS`7h%@wS`{Pe9 znT@wtFL-*Z`I0G^m(HF#gUyr27MgF6cYJkjsy-q;XBT_^jP~rVVe(LKR$mi zK*s!pzUQj?*Pl$^ZOOg=rtx>THaE;qX}e?omRaAFL&|cWzn#3^+}&C;KW)~xF6?gD zvHe{mzv3u6`?H2W^Sr&EGdMvc_kYw@ejwABzTtSjTE+i~S7P6PUfW&l(f`b=UAdZ$ z;!|e!t1#y88G92U0)$t7z`s)*zNkF+jqiE)MU;;J-oa=8ApQGhPJBG`{Cxf{^MCW- z8@mRVcdlO8-c2Oz3D!6LCrRIQkh z&8L!Y?(mll?zY7@U*_+!PC4$Kj`eA-wZqk94h^of&L@Fj{I`7X4gPkX&#mzfILzJO zws4&nxz09Mnt%Trx$8IZPv-lG`AR-3>$0n#+vF-63o}lxEu(lA2r|ckTHeO4U1tZEQelL39Df(^utEj3|nCkw!=<12#4V~ zoP^Ubx0l~@_lkR^y~y_)(>$U6t_15*^di#3kdU!p$-o4(t-oGASH&G#SqheHw z%8?hfqA-f0Zq$ng(J(SMoEy0t`5W$y;tlUcf1`0Dy3xN8-*9f`Z@M>2H@%zH zoBqw_&ERI|W^}W6Grl>zIlei)>DUh`h- zUT}{MC_ic@G_u;sO3QjS_gZ_wUiDh-TJu`#T5zqpU)%ThgZ=73?I1WPA9{zC!|Gw} z&_8S(HV<2e!D08Xci2Dd>pVux#N2jn=a@@@*%X;i`F4%@G;TLZ^bFSSD z@AjGP;O>a|mhXA@D);<*jeG5T;l23YROVZG)cg>#X2P6Go5-0+naEft48v~N3u7d0 zgrrSFvzJPmNSLgNNSMf1jD(4NP4~>T+_n6*@->gu@>#3)weVVWt#_?|ZE$UPZG3HV z&Fnk-`TfFvalf?h?N@Xy!~JN#yWiXI@5lRt{o(#-f4o20pYEFj=OA~GKPViy2gQTZ zLHWQts2s?;`v;AK=0S_~Zy$6H!h`6bd(b=RAH)ZPgW!rz=P-AeKP=cC zlD%o$-5DK@4=0DYqx@0fsC?udRgM}*&7;;)cqAG!I2s;}j*RL@1w+LmPTgKN>|2@?X8tLh=VUrZ);VTS)o<880B+4dl9y9OT&hkXBXt`-6_QJoz2iu9vI#C`SEitBQ zjRm65C( zQq@ADLZqpGqGq=bJBQ(6WMwEm92^c06G@sLnj_~Zktg@4cvP}dRXwU5`Bt`qqxMn9 zN?1>Aa3W{pqsh?}X>+dUuIH~8PO!=imB8SbWgc7~ULRc_t4x~6iE>CmVZl~ckcJxa z&_E(u$V3~d2(9(*BO3#xV}yK6kPu@nc|mP?=|)-YdDU9^A%tp22eCu!hG+GyMWFEYW4_}JOtb{Eef)^&P2!hVX~%waPlbZ?9&sNe@0 z_<{Dl&b{uv-n~g;AN!A*8sp1_dFsXD_Sj(UOuYg4>dQjbu%R>c>{3iYqW zx=N#KtdrHtCYl+bo1OiWZT%Z-pO_4I^OOAVqU?>-Z@4q0Q?a^}NSe9n+|1o9u#!bE zO^kIP-JBqG=9Y6Scgwjm*MLO+;}g7epb{3c_abF|{4f?D0V}Bh71- zOIFoSHcs@D%RVt)@PUa36fYI3mohgB=yeTU4n==&80J&HS;Jd}H~Y-T+$!8E->The z-3swoBall0v|=hHP(5;rM7rv?t015z`_*AYJ-qf1k3HRY@YODU+QUbO*H5}r?w)Cs zKvKPsqIvU6553R23oT&XJ214HUJy)-H^Za}V1V zA?FS@%SX;*tb%JTf=IcG_YKg)F<8=5O^m^fF1i?C1H=P+;6l+y2YlqSFR_fFTQVE? z7zauB!9rbdP!5z`v>01#Ku1ya1kAIj_Y)*K)!WK`b-%$XiA;A{r2(rnVU;S(s(}W# z@g-ffcz_R?98MLB6!9CCqpJFgHol?@Rv)0@6Z}IC-%tdtSJ3nZ{-BMvcR}a_e86PM zMvA>}W9z#XrHg$p;{7Xl{{|MJi~Szp`Ne|f@cbgtVjJ2Z^ezZ}074hpE`rWeJJAK1 z53Ehifo3b9@&>jwwHFg?tLQ)x4^RQIwz2qKtbGnUTLhO@z@%O9_W=Bz1A7OQVcv)1ng*}RRV)miL#oCfFs4f zLq)%dFDNm}D&uTo#XE|AW5vGHYoCk$_>4VZ>=C#&X8dEu?=XHB>o0l{BGs}ZeSD1U z$_N>s;O)$@Si{qus%gZ*B#E?R{?}y|zWST-o~s@wVl^GCjjsqP(PTi^*;l4V@e!Sz?O;k5$WlopNo>SC^1D={3M;t5j)&Z zUyBQR`dV}}2Rbh<=w}<8)thN%`vF?nUO+mcm5l|B9DsL3EAum591u6A`q&`$XcH6n zW~*FTKtZ#WE<9!gqvX(y#kH1oo>=xl^tFLLbS);DpszV_Q4!ByK^NK<8BMHplof9; zS;chqs~X8Iu7BeMjZN3RZEYk2acP?D;9HS7ylYW5%GZoj`YF(u_8$y#2s7j+5l~f9TFQP z_NPdUTd|%Yx8MyLa2IXs5kv|n7J(P>3=J!Zsm6C;C~ZXsG} zNG$$2@Lr~o?Eh!?F+JtxCd5W1xQIageLpg-$COK)h%B@p6T%Zr<-qV9NA9wg4eVwB zqZqTIQ}w{P43F5tN67k$FP1g#t49`pH^FZd(e9f1+(TyUCZuO;q-jPl8;f10nG)Xsv+O9e=Sg?>|v-pPw#{%ysA8C z!&;2QUbq@jwU-c8euk&o8GBu^kyhKN~R>y-xfQQtY`DSSlhJT zXTFus2PZ_>!v&78aEu*n-fiJ!+jiAb-81)`dj)vWqO4#0edaf4ieUaU4)N7rrm?gf0w2_cim<&DX$nwOfS{c47{g)UyK~BTC-J;Q@(u7$szK2#HXLaTooLW_iNAK0^(oJC4J~D|J2NhF z2n(68+3pOJip5Lq-6E$^J%JJI-qzr!%G@h=5zmRc> ziKE9FN9SSmlT|1yuV0;Iyu@dZXIyI$YgEA=HHf7i=&>h)$zr^TLk`k|H4ccQVlb>|xyPNw zW5>i#Vyh%J4Uk{K8V+oR2a^#HImJY%g2z3ucmNKM@!_VC$gtRD@hRd_#GlBXV(=a^I#ouuG~;xK8n@&%!&5~LJIGf{_epROlRD5Uahf@rgk)gItH8P!3!m{vT3uXVhS)4qv zc!?dZfgL;KXCh@3^TaE%+Z|;frU!X4d9Gcp9_uw_#Y#sb*e^roBe5m^-O|0Xa(N7@ zo%n&0X3_nyv{zOsFIgrjK{fuq;1#hdC2}?;vf+ZK#p;#dM*W*57*YS0WNm%L68;^z zQ*s|rX85@JG`UA|2Oqmt1{2HGlWR-NCD->DyWB%ik=#enklf2-M-waS>pkU;az8;X zaxa;Y={~MCK5`$KhulN%@Sw4uc%A+mbe%zBkCw+X)vW219dXr8x-g6e=G?W~?plt@ z1(_M-%pg}rVwKV3)Qa$*Mj_KZqa4kY{M?j0?v(6W9=k4A&yyjO>*vXIN!BV4r!Du$ z!(~rlu*IHC;lc9YLAggBk0kfWlOdOT<-xbyZ}Pb2c8tbFQzD-{IaaxE9;R^$Ka__d zlKbb;S{Xwg>8lb)REZC&_|PgmdKKGVg)gs?(XWCst3)DIq7RwK6V$LIwFFhNB30s~ zD)L=L`>Rw7-0wAv8{IR7 zCrpcZIB4|g)r9sI%QnxmO|S)t*3CmCQ+IG-dZq`3dt& z%ttB}?w>a5J8QsY70aVf(ZI#Qb%M_4Ye=@n7p!9 z!ifKCgO$4ES_Z851SypaQW3jSVKo}8Mw`q_m)y%hvq^?bQUPCBhIOxz$!w9y4B=P$ z@GB$u6@!N?P(xD2J2HpL6RI;YdpAbb9c118LgMP$6B;XtZ*#w>Jh`B;qRsy{j%7A- z*Z{$)6`S1`w$z z=&%pbt&U>QOuR!4De ziEKj^|JeMj`4Q89Li3Je?6-scc0nW_*vrQn1}9c?mF~}r4xUh+cN)~%=&O)}mI zp5VdtAp@-51iv7A|9(@T)-^#FQX3_Vnao_`n30`(VsDb!CzUFJ=7+jA${DNIk!lrp zRvRUeVxZPtDpq1eMH4J;&SqMZsuf>zMM>RCPqRhI$Q(t+MUY2DGpS9yLR-B;kDTg2 zW5(&Bqn@>>xTFd)X(&G?d)~*Uj@j`X9=FJzi|1=;O-5o7hl)y#R-BYTF^NrVf=&~g z7%M_etfHXQlC_IIG8|aT*i%%V*hWWdkP_>dAlSq{ivA5$az$>-ir0N>9TPO0*vB#Y zE-{2y$daP?8f;L@@-tm3>;~3S8nX2gr$Zj3Y89!k6WhFDq*mi4P~=(i%I-B@dEpRr~$sdE_Hc?L<+rs37Hr)^Ya2{;a~z zp~9}9S!NIHT$@$d3Ge|si_#k!A?Lf!Z(z_h84xrB0*B~ zG_>_jj>=9^Go(!rgVYO%yiCanO6Dis1N)wOuV( zSMeP^Tb(%pnTQk>U|q}Bf;Ci%I-1+*BS)h&-U{Du8px6Zqc74_(kQbwtJ;jnf{H{9 zHDhg5qFm}0JXn2^sHSGELzO78bHd|`MCCOyD{B>9Vw>AYRhK-w$kj;Y%0aG##S+P? z65BLwHC?1NAOn@JsaAm`6?L9QZw;-flNhc?Rh`J%SY<7zvQ|=AtHI<5rzNu1RaqOV ztQnOxmnhGpE~2IkzIdciWi7URj>uZ#mCB0Sd>Ea;BDbEh0!fVMfFfLr-Xw}{TKpDi zo#a3f+*BEZg36kwadkswtwVI(vp8;yzjZ8=o#Rs)N?oy~m zw}Hyrln5h_HxzmERNfjYZyl{U>TCVxSgVe5TESV;x}%!ba0bd5bXDGlDsP5LU||nL z-YUdj4LBE(w@~FRCWa99P~Ut@(av8!XFg_1HNh^k6jOC>E*NgJr7O*N7z zsHAx+X$_UMj=(Po-=`)q$Z-NTjT&QdU)#sRiZ=6?4Uk zxh58G7PL0lQz>g`b#O;(a{5#tj_{WvWjU3yl1f<(cD`k^ZC$Mr9$H>Lr|g|bSw$;_ zn_8a}YOQcgBsx|!m{ZJEQp{CTt}0N>)zx~JzaGXDzbUQ@(VhvgW9)6*W$+>e-E!%31`o7~5ENs$6P8 zqg4+^)mJRmwwcgASZrjY)*M)@XyeuzSgfUNYou6g03#u?W>nT(m9+|JtYKq-5H!|T zCU&f7ET?F!gdY`Y^Hti~#AsbxBQcVif4jz+RYFj>XMUM-cjNTqE6<1taby^Q}9 zIct2`V|$Uaj>=hIv$A8Avz*FVNu#=&@*aWK%ygCc7+Rb!a^`9#yrS$!Q(5*<`H%Pw z!}=m;17$;|U^PMfB4?hS5o#zS(oqJxuW~ki!!WB;(n2{so1sA z`%P8x+A{hVN$Y5w-~YTKfSSetfkpw{V{w3cLL|^tytW(0r+0z$1e zh?P+lxpFj`EWS~3z$A$&{~*Qz4gBTnj{zhCsE{EP^dExAV({2R(OBMcx88}kKSBI0 z#a@x+Y=^&3Q2vwV;(ajwA4G)zTJZhE){%ZWqx`($uCnI0eZ^gEn*si87(W7a4agEn zM&&i)``nY}=_P!hqI<#iL&aKO>d0Pjy`Xx*^n&O=H#{$BzN}f_FAS3J!-b7)mg&nG z#S4ZP1TXkKfJ+tZKGa;~ljiGHh8!ZqqGI+Yrvz2jl}GpJtxqCNA1JI zk2%RB9DIq&fg0KUfO95Y_^l!Amf_T~3yWHTLv6xpg?fT%a430yiS-&9>z#zbix1$~ z-&pMJl7pyr>V zSeE{rT`xarB(46XkEt1C?MXee=IVJ%VK$2km67738ftySQwhr%slV!L-cP)iu$@!* zPUnGV)*Z4ga`Gd9lN8?~bvz!KWy#3NUb=doOLj44{~S1M51uFB#B;1Ck7TzhFo;qG zD%fHIlOtKRB0P>{LnMBK z38PoloLHbWfIZEqj&C3%?I%q@6RF2?^eG48tArOHlkIc0A}vtK7=UGRu#!ch_X>Wh zw~+l^^h;fP#zpXN6&9$aCxp8CB!S#Q9Y)*MU<_auP57jFL~5mN&LCmehW9;F>5z-^ zs1T6zdNCZW3o{$Q`X_9^J3Eso8B3W%11}pXznadVL4?>QM(i?=0a>CPOsdSH4Xd>{ z17RJCwyvZNXWF&rWs6JIB-E0S^U0B4EH0dsosdn;!BB}kt6RV-J;qE_r#ur^jy5Wncj1k0I9 zn&?V%CTA1a)Oemd8zpP$e9`NrUi%)oYICcKwIw$rd1fbz^OzS^OPyG?BWrY^&w&Xo3{R zZJsW&`IE6$AmookPuf;eJUt5;APsV6kZTs7(i%UB5d4 zte5DLdmJG3i}F!H>Ko*_yGZvQnn}RC2z{Rum;NJ>6?z9ox$JM%P?ylBX39O=YKyK9NG0 zbN7~e-+DmSsq&O5(6mC2>XtD%VHfRMSjXB^=GXYU!zxzP>kf$1CwSeWdavqiEhpgR z9D0^|n$$+e2RX$dqCJb6vuK+|XL8u*#=INPQV*Jk}|Lu!%_R8GSYZT&lMDqkuowOF=RiC!9@<4xeEMs zK$aw?{>dd`Pklzt`ipd2Luv*L&&?^~FB)Xj+ScpE>MOE{NaWwu(;Z^{($VD>&`=wB z?k*srB50_BY&W&O@F{%;OFYXJ7@KRCEU0Jeg_?R=GX_oM@Sq|g4ydQLFMhJ2n$*{) zX-F*UC=>5%Jy%SIN9Hyli!*@>%`JHH#d!_z=D8&==&J8)Bh`I!F$FMSO{*6Y1Xu+9 z)v)?~DimU5OeCy}&7SD_)ThkPAYVDPk2Q87QVZiMqKnW_7gUtUlnZ)k;9uJKmoBzq z07jFY@`$JhczBVbA|Ad%rc@*;Ag?gE?r2SDWU*@n9cd8rcG1uQdGi3=ITCwMZt|MV`x=rK_o2 zw`?_4q?PcZS0n7jgz7zqb2pL`E^4KVWQBcOf6$J?D6*O10akKs>-ciySX^6OC3OhC zt$JzOGlhM0bwEAeSb0px*1i;}NAR@z#Ycl%wk9F66)=)59!p&UNTdSyGg5xe=vm|f z=(K2`94Jg(gKD$@D-u$VCUH<~E7B&)+vT)IsHhc?6=ixQwg_z1Y?sQk*w#T#Z0!68 zXmu4;2&PE#@f8>x-)2tRS{>iDPoo*xsy0V!aa~&hQc(-ru+O{<;Rw3Q>m+p`6RmH{ zk&$rm;$>Tx>)UFOwtaS-c#(ltA0-*poPFwLnfSUw^yJ$bq_&M9`nJMyj0HCuNhEPZ z881|^n75@IbEvU|SoVQp;EDL$T-h|yyCkL%q)^oA-HO&FHSDuk1vzxJ25z9YZ2hI9r%_y3iyB_LE3ubWwn=Q2NUix&)3q;{G_c-< zviS|x{Y~9!*&4pc){748bDoSo<*A_0lPwcHd>QIiv1}Y{^%qmO%33jBgIQ|W6Z@f_ z*YE4|2uHSh-qCtM*Vdg@w1&Q+HGyqCW!KdV(7-;W_I_T*e9lkP6u&pLo=?z)_`W># z?5^UB#Q#<8xt^x=fgR1>2%hb0)zr{>!YTEjj#h*w_PS(kb*T8WuQhs~kMum)4u{I# zycXNb{+G+jQNB^uwWU$d=en^mCaiV8%o=F{BFYYR9RUsm)5s|g<;Gz0&@!rEEwyY)lX~4`PTV>@i z{8|1WgwN_*Mr#6&&XGruNTRHfv~PWNG>axinh|vDvpGGjTW`P|wJZmd*pTszJt}D3 zooB5_Fv~gg^&HN4Kd~F`EdNl`y1T&QQbDCdJ(FYfOpa?2sXt>=LijL2qa)4aNYs*7 z?!K(GcfQ5=(Ttf)PUJck-Fve*IXx5H*LZoXPm)aR!{|RKiVHz*6S8$l+=+fR%BHAT z%q9M7h9R6>tc;wT(029t&B8wmvKJ!+Ftsj)C zR6(~r)@Q^DIhr*qD+AghcNW2|2!b`O1iKc%te(cpEv+_{TGO%S%?e1nr)Po$jSfMg z1{5l>V+9o2#Eym_(O4N#qi246VrTJzJyw1M7wTyKtgNSeTCDtlRTuWQfR*%=H*aZN z-Dl;6x6QHgHC8>)%uHWT?-(qhtGrE3S(^|GIMLJnuAZ_MzM{>__gMK6*3MC8s;p;n zB7IWSNKfMw@RGuTN_5y^<@>CB4hFOY_bTdhCP({BhSj0 zS$SU>#84yk5tgZlMXF+tTC9Ae{M-mW$RQ_DB#sbPsHIutv2t3;y63PuC04$M#R)WD z+1E2N!rE0>^(L`Eh;@ls`3WnZXXVSRysvC@s3%|?%~_T;^U`AFCGR4*W6H`Gln-lZ zwx!R?k6C$%UWGNUVI>01SM-TebHx88js1l=3b6>W@?{1OM6PERNGYsdHT;+&rnzfLVBNCD2iN?yTyss=#sHc)gth}SS;DuSj(@L%&wD}_Ot>RhBdVZos{2M7hH`*%@?RuJj zY2ia7Jq111OnpJ~jWxJB!P-OE9K(rcSMx44%`t{>H?ew1gN?6XLGtbLEQAIV7;^0j62DVib(rwW7K zV(lZ=egGFSW$g>By{GjNt-UdR&QYxwPgjN8Yr^b>X#RxrYGt^)Ha6Bl)2rCm=!TjDeofU^kr=U)&I$QN(b=)hEsDMLRCdH- zcGO;;ymlSdZm1F@cGF#|)reJ&rs}gqlDvgFjaapKy0FGom8ifzm+Isd@2DLet6b&P zhlynQHgg!`$Hq%lD88bIj$#PWZRhpw(Wq>ni7q-Wo=v2!slF{%&nD8A$I6!MSt;>w zod-Vq;Y(>Bm-iP7Hv?)2puVc zCQ#-{*+deH>I%2?1Y{=^_OPR893{iyD?$^y*;~>F@4l59%lZ(_a_(mKOF3zzArY>B zUyYE==umO}Y%vD`K0f_wr7x51QU`HA<<@>`bJ{ zZK$}-RX&pr?oasM@q@8b((J>%3DijcfCgC+&^r9?hC0Hr%K+`8<}TNh&sed(es+s|Egj zyu3)iue?kLF0ywFtNJI_AqqEE%6R$IpQO@%l0QkMf58sbPMQ9RG9PLlJz?cNWec*> zJ|_NiEdO4DD@(1A*r2wpb?Gl;@?Nh7Bq*z7an^%u&x3a1%SEou=UNrfIAxw!S$B~3 z0t7TCc>-D zD#4PtBcAadW&7km-$r-yJxJoZGQ3A+f%%AdwowdwJjG8-hTEOt-%xXrNpv?|@YFTU zLyEQPX6#j2D<6c>>?o%hD}FLOCo6}oswkh_w4QpzPEGCzqdecIz*Y$jwZ1d8Rq6SH z#KP-7wHIwxSu=@Et%r_g$hW{w6&Iec7FmXQ49A>@=@itIdg;_kP0#{CPwou+w(!%E zVd;`#5zI86RRNXtxkD|jUF+zx)MCp$JFw3sSbxb%`?G5KWM_?@?meXfq_*?82Z-GQ3ue$fjW{sS~X;;i=>q@|LrT^z>MtcychaU7l7_ z)_B5CP0?#d^IR!%ov;tWLFet0#>)Dv6v+cL?bGdqk?z^&jg80zl0#u{YkxKqPN2tAMItVaqpPl3^c=ce;-0kZvk~)( zPJBGeqGmV?3_`GExl#+^Ekv2|%!<1+E_pt~xeR(UD>1j@&Mad!pJO~@l1=Wk{@$U# zWCujfgo|&0oBK9z*dfO}hOhE%J}{M)F+Q;Xf=Xj;55BhpLK+{97qrt~u%6l79xIm3 zTO{je;%4NzU z`%__e%rOlZAM`a}Py%Z>OWq;4UIVRnkzsSg1&_Nk44zo~=w=8nFu9edUc;wGW4 z5Vcorn4*IEr>uSzhzuHNP#^yzu|SO|po_+owSH$VJ$bm&mR2)F`ZUr}a(=XY+Kib} zaAMw}yqB(d$Xq7-d1}vms-Nbwa5H$jlZjfFcjEZGO2>S4Vrz`%N+B7I;O-u9+o)!>M zwK}Dm$g{tTv26GJ*U3J4OE_fdCDvg))2I=%EP~Wp;ON1A z0c6&|y7j3V$Pr`JKw@2HXke-<;IEJkCenG9K)w#{j zx|5=HZ8(OL_OU@V&X^jg5|uasRX9U_b1JbJ1~#UG9SpJRldw#!Q=2GsMC?$+qqfKu z57@^7bxo<{wumGLR&x7Ti!${xZM@+Ki%|rrw7@6>Y+wPI45`4IM0w_t=-r6;y-3Af zi|QAL>c%RSFA-HQQ_g^<+E;)tZ-6NJ;JqA3qDIE4i|v-Z>BE1VHeV0cE`-4nyKz5R zoXcV9flnmxmZF|`3AK4PDqBVc_tRY2;l7@cEm0@b&tw}6c7Log94|HESTA zE?CECKBf79-HwRkr<~XHsH*JTGRORzZ|fQsz1)=F4)dtk>#*x%&d#2;=YC7nM+QXW z!xODfU%honrB!^ivxMnFEY9RGPlZ=>6fEI2hnz!sR?*~Sc&5b1^{w>`Zv{(O%OR$$ zS&w1Zvld>Xg)PyFtL|wNVoRbK^D~_>{r*x+IG$B3b<|JKJzjO@t@~)-2#Zbxxm9mbEp~s;-uIOC<5VtK4{+>~gu>hk2Y{{CGq4B`4G zaGeQGNbPeCxoTw2+$NgrDre~{UpZcgy%rI-H#@J+#+x(xTh`uE+!inKQ{Ga1{o404 z4-zhAYV@L64cPR7IpxIq=Wn@7+*Ooes}ugpJ0XiOmyeV4%VQ9n$(_;XfFyF?q{b-K z;6*Dr*`Moi8AR45>dji00t`e0TiL&!?!PG28GX)2fvlycr|YGtThnFYD>vhF0K9U2LDoX+->C?5|iz zZEQ{J@TEGotJzt#*2E=eW_96`nJqKF8Wu$AWJ5i-E0wZRA)eD(S*Z~h7PzG+b-Tol z0}zx{=;t2rdvO!&dv3n~b}SQ(Nd-j9^7z6akBAb4Juc`;^orJxxAde+R~h3G2-@iH zQxvtDxke<~(t75u{uau}{xU^DYnm&d>xNb}hsxs*^w$Cm=O_wbwla9T#tygi_b9sh z{PvNasK~+O7xhdU=vL-(^H|x$$U$G3A_6hi{JVf zJ-y6lzLy^Ns}?`=!*ZQW&w+dG>^srkS39 zPfy5F%vU2%oX~&UV$Zwi2{YsQ)AR(HZ#_fLATz=$Jx=CZm!#)w7q8r+r;_>B57JZ4 z^!zwIpZuD|Z~d?IbTU`|3_Xp^xBewP?aXInvwNAjzk{AuW~N0Eh|IjcnI1oLWqE$L zlaYjv(c@+I;?L1j%Y5sv($me{>!+kA^O=7_Pa!kr|AU@!=3Wze2AQ7Ulb+1H{_w+~ z=FBV#^mv(Xy_=p^=I*EH>1Dq4A$rD{o^PY4nz>hl9yjxuPtX%(X7S(CGst}A$LPst zu5+87ATyp{pr?_!&Zp@ynVyk+CUfO~Ej^i;K8(V*Gxz#xda9Yv{84(QnI4y(UZ&^0 z(v!LSX?lj4D}RWdL1vdfO3ygc^WV}FWUl;u^yD-0^VjI9WIl65Pd~FhKTD6B`BqF% zEwdV*p{JA?;r~TXoVoIE)8l7GxbjvW$dS3%*V5x;u3V(2l)3vUdcw?=KO~>YeCxlV zCztt_Pfs;-ukWO1n)%lE)6>cHT&E{H=AWl0$n4HPq{qwj{4;tgnbr7RdZNtTznYbZ zGN1V`=xJx>RiwvF42AU|&(l-ReCEHVC!gt&@s={Ld3YqI%rYFwq>Bs45WL~k{FA)&_&4vV@Uoh@&KfLnmig8OJ>5*ttMrsI z-}=k+v@mj&lB_* z{>`uR0p3ly`n=~HJ=M&0UZ$s&xtHj~h=22M{YBp8GN1WDdIp&*{|$NynJeF-C(exU z7w8#fuJbGO1ev-27Cn{BmH!<*&CF;1Q?4P}G9RH!Pnfy#dwJK*jOPRND2AR%-6}oP z%$2w3$z|^TXXz<1g897ydRm#!{2)DU<})&uX6EicNlzy;=D$zRIMeePdK&zj-)q9V zUS@<}g%!zVt}K?OnYqrNre~5F;VF9hnGsg#X=JWkm+NHi{%7fFXRiF;(KF24{l}yy zbFUlp^fTA_S$a&S=NIYu};*DkJZte=1HBl5pjcIw;T_@31@ zv%0!|xv~0z`tF%4+uQZc-OBdXh5F9Ua~JJjc6PTftnJ!2m+O}=_}li)v+J7|KU8n- zKD)kAf64Y;y0md+$G2~u+g#sWU)xy!c>U}PFFn6?;iIgDsR z7p`otUS4aiUb?b*!G7<|#@0^VTid+2QMWyp>RXrW%a^v-ck41k`~LZ@wTsWMpWj~F ze)W{?THV^LH`nDh$5wZBeRJ({`c>BW`L&(hXSTPu(&^Im%;weg?XAtrEd7gX+v{uR zlf|4}YVG3HwZ^(^Rpw%sF370u2)N7#w=Q1Uu(L=v&o_p^r|n^`TkD2cV~UBl?uhu4WDVIx8xr6&8v1;ndLwB zm2~+|UHI6Q_3iXF&onO}LF-r3LCj_73_G!YVQu4V{lf10Rw_QLJG*PU?|me_rO zBmEPyw0YrjDoiqa#9?bDAqf7~`9(QExG!(bZp?Vk?q1A@#p(tB@>aS8t1n;PUB6tP z-TH$l&DzWL(_6E(IQz=_?gjtc*0by9XYzfC?U?QUsudeiz^j)U+v}UVso2TgUu9b^ zKh4ry*xg!?wpT9(j+Dt!nW^40meS7zu&mAt>Nj}rGAAB0o5w)35d}saT&9(Hq zOzG;S?XAo9(=7bXOiiELdHVF3v(IzU)35H{jHtd^RKR5yqH>uom2+1zT)!E z)eEfQ#rmb0zYs?-Gra3N&5P?Vs|6HMPJ}7l>zB@+I)feAoLO~7!nAg_HtMWWx`S%X zGWKHil}lTVnU~ny-SXMq?6~Hp(XRXluWanDi`bmodTIS){R}3{{$ zvbU&mdUx4aF%;R$f3&{6S>IT2k}|WociIrMnO=}>S=*>zKqu@CS5dFc)J<`>^H);U zUf-t0_0Be8!7Q)u>@?P9hIsYr&gLuW)~LJQLBCYRMZ(dHnS5Vbum@-b15Ot} zH2lg&x+_`RzHD^Qpwm`;X9|eCiwv!8TuE0=hBX`2%wH`EOV(p8Y$q36P+zWVQO8SY z-_|QxTpr0Tm@=L?%|`MIr`9N5WoyR+G`b4$_AbFVhi*<5N|*-g#l z>Y{VqUR$3zS|+rWOFDHg=LEcs`W!$LjjRiULucV7}Y0&{$ zySZoyQFt~GSCo2Q)?&eKUfJaKvum;FsntHaQLm?8!TevXpFDf5bM8P_*Dmk8Y&~_>KD@H?p4A2GAZS&gq`mU0I7a(g z%;gM;tnF^Cr~Qit-LB=gT&ZuTkQT{FV8A(`#_I4AAn`--7f9cXGVjKTm%ies2`|rz5sNd`EuF)<3pLvLp+nc^6DiNaAqPeEv(kd z$fp8T5o-Hs?k)Cfx6c_nlVFdNg=aPnSDH{BpAUGxZvu`mHS_z}jeb5s1GD+0@?>Z8{{wN~TQUFu literal 0 HcmV?d00001 diff --git a/lib/ssl.dll b/lib/ssl.dll new file mode 100644 index 0000000000000000000000000000000000000000..395193b1129ac006d34f724436634cd2a1dd6394 GIT binary patch literal 654250 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 z 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%0DsX%s7)jib-EJ@{@6gXRZE>$EHpZLh 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 J`GiaSKLOo(Ac6n@ literal 0 HcmV?d00001 diff --git a/output/createbase64.bat b/output/createbase64.bat new file mode 100644 index 0000000..2a52202 --- /dev/null +++ b/output/createbase64.bat @@ -0,0 +1 @@ +licenceGenerator.exe -cid=9f544930303030300000000b47015423 -csd=400e00325b5900003a0d7f800a40008d -outputType=base64 -configFileName=licData.xml \ No newline at end of file diff --git a/output/createnew.bat b/output/createnew.bat new file mode 100644 index 0000000..77416ee --- /dev/null +++ b/output/createnew.bat @@ -0,0 +1 @@ +licenceGenerator.exe -cid=9f544930303030300000000b47015423 -csd=400e00325b5900003a0d7f800a40008d -outputType=file -configFileName=licData.xml \ No newline at end of file diff --git a/output/ezlic_eovosv0_vaxvcpalxjx.lic b/output/ezlic_eovosv0_vaxvcpalxjx.lic new file mode 100644 index 0000000000000000000000000000000000000000..37a380e5991b0a62ac43185bf634cac93af25a8c GIT binary patch literal 1004 zcmVqRhD`3q$T8Y6Yk;4avDGfQJnIa!bnz8Hjg0S^`3cAdg zl2{LF6&X;v=h?ts8jIT70WL_&WHHG(^BiJ5+^1CR4azRvj zE>W@>RB1JZWzR_*eI7K4g&6T51t-Cj0Z%?q1)u@oy>MhV4#sz$8;$g=E;*bOTOMc# z=gz^nPpmh8cMOYJrG*RILg`T?kv#;T_|lCwKMaPMJgW^Hvjush9iBc_Vuy6DKD{75aFs{lyc0m<{y1G@gQC= zYJ1XzlhmN}`T}92p!={P&MS^#oOdar$WFZ|*)NOSxBLS61Yg4(*BQ+pI?Zu}T*Mq9 zT6x9+R3cbP8pzjY^S|_Ksm!M07_o{+6(SKtbi_al!2396`db(ZELZIwZM}bS>Mc8l zW@j>@XQ}u1qyz`S!T8k+KaDv)N?N8zTJqr@Y0=0IE#kkq7OrNlnUDurHEtO~VY9aL z3|Ll1%z}L~FAsAh(orPYUnlUv9{h4L!__<2)Pgczdapu!_kln-Fjbpy9P!(cBd{Lw z!BKFi^K0;;oXoTl`;4ycq@e=oWKwW5Cac`3j7Y=Li~0;BMon@%HsW)}E?5Z(q`>FD z3Q*v*)LnwBbQN#hpJ)vCHrmh?h{aA}-b=>7g8^h4g7u0+)S6S=+q)vKjs+Q9IHEu4 z){uh_4XFE76`5ha7Yz16DaPZxgoD%Cw_ThzeedPWCkEr0O*I{&DLPg5(qUa?bG*Q% z4WrjRgS8*Vt5&{=^9A62pZa9Ibj}ibaGu(UsYy&}^KOLi;q^e=P&EK`A+^QgJbx!VHCPNbJCDUT))Uf6iG5>6 zkq-GK@sTxmu3sbZqej`o`@m+72SQa)thbPIYGjUH@{htvMWCd + + WAGO + EOV_OSV + Licence pro EOV_OSV + ceskatrebova + RO1 + \ No newline at end of file diff --git a/output/licenceGenerator b/output/licenceGenerator new file mode 100644 index 0000000000000000000000000000000000000000..bc4dc935a1262e84b6d2e37a83c69d846dbc7167 GIT binary patch literal 657672 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 DFW*8z&#m=M3@>aK8d{4guKel)B8G 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 a$#?xb`TqCeLRSBu|B>`RPjpCpt^Ggr{laAc literal 0 HcmV?d00001 diff --git a/output/licenceGenerator.exe b/output/licenceGenerator.exe new file mode 100644 index 0000000000000000000000000000000000000000..21b79ce0ebe4469c7d8936f88305854d950033ef GIT binary patch literal 1117398 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

gu+^>z};>BxRr1CCbOeE?&bH&;$IQVD5X> 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

7G@Xkao7t?3@Ob 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 z�|a-GrCzBi*cr8{uZWy%?jtvD~k-zcoQ(vx{3P%k^q6|IU}aZCL=d2p`9PXSc@7 z@nLS}HRb&guJfGQLM^>sF~KeMws6ervv^*Obki>>4ICSLTj&9@Xv=!D$*yj0iNfKa zTv%$nXuuawcbHo)zLa}w<34Wv>q>V6TGKm5-OH`_QhZN0;~nMTVB2fM2IRHZ#7DbH zuMLN|EnZJK)h+c}?r=BZwarOxy(b&xmU@H(+_aeExS19L{+h<$d#tpVKhyhd?JqHU zyV)O9?cTxJ00~V}j>SvAR=bZBLf>4$(#U5VC&2D*)@!>iZbG)Q|5Sv7+?2PR?c!E? zvSZ!Umum0cZmG8yCvd!+?&;QiD!yiYUvunXrMET6t^7>M;9<^dsGe@Uci1$}E%$m8 zmZaV&*V9dVt$di<;$>kUx5b+YI=fk~zn|(>dYObSD-GY`ZS`?;-r?VdjjHGf;lYZ{D}KxSbB4b(^;bmxS{KXJ^e2jN zjGOctXj&vKn$YSRAqIkSp!1|0UWRHVDX~f#mz{J>b<-k>Sn#x zfeY1M9`-Hwwn_fM=P)z_k_E+S?}}?)+XM{ zYKU9?po#~Y&a+YOraZf8iN3$$M>ss)8E(eY#jNQKHT%1bvQ_DwLOR(^dv-^<Q0o{L^^Gjc;_HX^#uWin2xdYlzhKLr)hs73Z%Pa&W=U z6>k1gDEzLu)lXZ+t8onsr0xIGK7U<|vuz=5BYxqJXXA}==jB52R^8&sJ`R4xT^Nbq zfnS&C*R=bh@%!-$S-b(iiaGImfAg*Adr|z>bvsU>XXsi2x^xy7&NkwEy}y}@eIAQ{ zf#3JybMTv<6aU8F%*8*C$G^aDiSao_bBf@$znLkzuPA;$)wKaXQG&2wv)z;J;!oqJ z*LV&;x8fH-*+fl(r5|4WFcG40`2X7`$2l{CtG(6jvjN~`-nWR8bYhXfF8Oj7wi5WC z$K<6;@V60frpM3H&{EeD<#*r@{TNNuz*Jf=3xR1t5W=F-08G7wCkIR^{`+zM3g5CJS`(*SP>Jd|^fG!? zFS_ZUB*{X_c#@QeguWG_ndnj~KN_7OsSdG4T6+^F;NcKR5*Dp-z$7i0D}kXr^8L91 zl1fXPE(a!KVg3jh$AW2xrmG3DMbG)biy-p7!1r(uXr(O72Ln@T!HfhZZNZ!gOt}Sf z2{0If^7%uRcAV?+ZFOEkk?l8`p8P%2`CKG~xfS19@{%O_E-?8geb5yrXlT)L92e=L zBzTl!6<*xqB=VBH79l6(H1R9coEgNB>)oV+?)_n4|@>0vIYZO2%+W zqT_VRe=q#=iig=ckEz+yacC3`mUlf2X~!a$%g-EzsC6EOCN*VCwRIupI}bzST`W?H zzd9yLfkEkt|FKrra^`p7PZtlQZ1Dr3HiW^Agf|7nn+{M`&*>LiykqvNiUU zDKjrDzre%L*g|C;w9=wQ+2|LgHDPl31;>w77}ok0TB&>4);DuCTW^nJfdm%Hs=Z2#TB8NSS{ahO&RX|E%g=K5 zdA(p*Ykz>MbF5{y^`>B0YZ9Vf`88`D1Y3G5e<>K&IvaV4^T%GjXdOypr7G;<2ZCX( z;piNd62skCA^*u*(*(m>3n0O7r=Bfy|9Va^thE-B>~E|U9Cz8)sc>3hSZg&TInn9| z&-7L<#}uS6thEY~)XQuOLxF>Ud4+BD@5C6^S_nz?53GeR1%;BdPPELncEa?l zFswBjlIs7mt)2z3aL^}J`C2fnH44*j>Q2@&j|ndehP4K6hyHatYf&ER(YReOto0it zX|c7pQETM(jA5-iAgS5Fwgy0pYvXUZJ1~Z|&W5D%G1l5yRp0x|`rinKwWeXB%YMpQ zn}GLw3u|4rBV$vt$Ik(l80uk zk*Kc1u-1A=8b4-Rg9`leJ-iW#rZBA4AL&rDn6=EdUK9*#9hF2LimhW|OYdJF3Wl}L zMiN!7XItjn_(m|SHLWLXiHGLMZxRe^{dITr?j>vsyA9dfA{f>>p%;3b^snAVt$PH+ zS}l;2{>Zk>W7KJTFov~OLXv!zwP@wQdE{^HiQz+dp|5f1{PDE%GhPC=39jZTKEy`Yfw0T}ItaVf$ z)awh@8igc8lX``1b?(a;)_Mby^xdr0(`akrK8#_lA0SCdy~Y`}9_q&!);fJ(^tgJq zWu9R_5DaUTV|kC$-T4@(<0e$iD_pOi1;bi*?1vnaUU?kwjP6PXY zV9EiEVXbc=DHjjt!Ir*ae4;;NSZfA`_T&PtmwDFvOfal93Y{Z$4{Mow%Hx7ztxiay z`W$Oj8$JA1Fs#)$7~|m`tYsbnjyjMrto0lu$;GT?j^PmpF^0AN4oN~hG;5uDFk@Kj zGf0v$JD6j5J${tl1YMLt;LXJK4+~n&?T|3@(ODWKZG%?^${cq z$wPC!rX0!`*4hY3<1=il3|82JzcnPq7}mN7k{0P-=-7@vZsY{RTB)Ik#-nV@taYzo zSgYM(uq8bO!-2uW`vk*UhYiEX_D{C83R>;(Ulp!l(QwAF){BtTf67|s5qr$xjA5-7 zNK(?j%v$6B$QagYgrrfj*E}!pe*|M#>pDoXAF+oBmLVFupcxg0wdx=#U&mUw2CCqU z8Aqe$NXD?%w4;z?5_z+S{}l{t{rPA_)sj((5sYE2g^<+$$R3(w_?2K-Yw$79TF6>G z5e-z$D_pNdf?=)VW6>6(W$r1H1;bi@hotc-wuQ;V5cwT3{3{G=odHSWVb;PRV({>D z!LZh(azx$|jqe4+T7MpiXxzrOb}`!eMlh^(`Y5!!csLze`mFb{U|8#vV6vpyd~CugNDchP6I`Bq=k|&b|t^SZmOq7{glEL6Td}(dY-Po*O%z z$QahT8yGOF#w#U9%_@+8Kv*1sWX{GM%@BY*a2#<12WkfbcFJnCe|u-4O%)PEap ztN$sCVXZny9EqXX!w#o1hP5gnsh2To8;JyMa5P>M3~TK@#&Iwl=JQD9(rJ*O*$X5! zkSr7lpQlx4=YWgchT-~H?Dxz6>O3tmz69$t@L7ca>em61s>1d90+`7VQTxXt9qF$E z;4fo3pXNBT@I8!Y7htM@3FFxZnAsMdKX{lho@0QSD?H@0U)bmKfvJIbb3FZ~`MCgoWpHV45sE4*@e;czObjFJ9p`{TY}~ zAPbAn5ozSA@R;NLDKIS-o-4*V&K%+C3bgLeR%bZQFBYEbfuY~m!`j^$kMqmGgw^Xj zVCsaY7*_ql@yP(w)xz^8F!dIm4ZtKVJUdQsoaGjtTY>3oXO3(qUSGz*W}pUD-DGseQx`7FoTVBuK^OofG~ z_u0r7BuZEw-UG}G3(s!n;Fksq&kev-TX^V4?{30lj`L(-aN|N~zgPoIQh3a9KIUA< zskQLD1WaEGPoF7{v)ICOBQS$4Jf8zYeK4%QA3PPgYT>yDm=zYD&Xvej;W5Yg7GN4I zJiDHU@mYBGL^46aD-h?)zSC4646E0nSbA3rkJ+CmfuTMa#(>q1(m`{YqT(2ItIQc#p#xo8Wx-KqkJs+*bxgB7_coqS(QFzS$^uHD7b}T%91BMKR z`O_Y!%Vt}6jsvEnh35%iYAifE<3wCH3(ss|7Fu||1ct5!4y)I-IQdg&;o0|g^a8U zfEi=q>3g^8J7GM}0#hM8Ltrt2|EgeU&zE}_;rx%KUe_oBegkJ+CGfaz=D z>3lzOLwL;oj0I+}h364qKC$o&cmT)L7M^E-X%QZCy^elR#D1x&St=cGq4u3C7O z0W;Uavu!9JBB^kE<~ujOQ|7%7w=q z=N4dSObFu{yA;Qs!efrl2f#E~c>c5u$DS6Rr+`^);o12K9D53nxn7q8le6&9-6(Vq z%GUX|I6H!;gHRX(h3-b7dr&$-8jGACoOC@T-Dy&aZHi1Rl4ysOm$%3NpgT>*;42-K z$09r6+jxJcw?%iF(ETNy^O)PVbMSDi)`jjgq5Dg=$zx96s`Y;QPIsEn{Uu%Un0@d~ zFLd8Tssnt6{)_Iu=RcFVBAd*0xV#-hns_Qvytx1#<{6bo?I1L&pRS zf~kf-detVAE#SgF>xvDT`TYm+nLNF<#KhFSDXTf|1OtS?u`5BzkLvIN4`9Hu^STGY-z#j|dJz$zG zm`k69KW?}`U7mwK7R-EL>MWS{&%+-J=3-zAMpyt z7QvY7bvH2GFj0p2v-{t%POxC60#hp(bDR%<6}c)Hvp*jKQ-VoZ`D5m}|23R*5R94U zh}UsmR4`_qqBk(kV^UVO%sg{|DHDvD=fF2ncfpu>J_Dx7f|=QfwtzFrAG58)-a&Rz|;xGoEy8pjbj2mKTa62LaQPPiVJY71u9)##@d%#*;-!Y0ht*mvQN z1@izf)q*kCYvgv zu|gG$xn9W+94BMJEC42F!NmT7^8i@MhPBrMVA6uAL<3`y=M~<%YAxz6m=yN%9)D}c z4`FBfa9fW7Q*Obu{|Iei!OQ}t(SrFLn8Xg@{`}!%_+!Dm0!)nsGd2f*ESUF!NpuVM zXWT#Gj|KBIFf|s;fPcXs3+7f}5<7N{Fppn;FAe2SSnqX*<%wf5$nMFxd1ZmqC&YNbZ9q z6_C6RNk%DpJYPd{cR;fB7dY1xkQ@L>T|jaQBufI4%OQCvAbAjyhXazgA*l~YHbAmG zAnE>Z$9Xy+IT#Wgrse%rbw33X$`SgeBo{-H4M-M1@?t>p3?wT9lJ_B56_Bil#JQDQ z=Nx?T3%6U*o*! z?uD46HOVwcuG^y!Qv*r)%_KohB6}cgem~?G-YXc6*b|Uc*Rs}m(53#M3TwS47}i<~ zNp3!C9SJyDRfV;F6%1>2`w!07Nh_m*2CV}H!&)amvScs9vgATY9zLK@ayKLw9b70` z3dt_R3MKDClKg=r6ra64Z-YL6BN(>jwxFksEaai*RH(w3eSxV*Z58viygUEN(HJ8b z)}kj@sKSyffXTkjJQrc7KC-qkyjO*-zaSXa`W}+{SJ@Vg zM0$MA_>M8G^$H}pJ6P)!Xz4XQWCLSZi=Mxs3QHaWCiOG(%*0OJy7N6_SnC)_vcIyH zInH+phPD1f60tQKwj}AKbyCP>g<-90Ai>L3yi7P8T6#@C77T0c^CNr~t=`bm+oD=9 ztVK^6QH3S+6p^5Wo)8k0(9=JH5_+;nP(n}b2ufau_3{N=uYIsn_i)%o#;`w+LsI=3 zYf%h!t)qWp3~PM|NqP}$Aw>;Ok2wo1qcE)XA4p0?%bd?M|H~NG`U#SH{3pL+k)HVL z7w!dTp=A_?wdk24s<4Ef2NIOfvp#|ndX7g>LeJ<3O6d6;L5aIVYY9C!BZ#4AVgx1c zz~{t5u9q}$9>n!J2z^3fxE8lTlKMMqO+rw7P1ZW@H^#8muaKk{vzCM=VC(8ljA5;9 z5c8BpYoTCRYqvJ5(S)7YuEPM0`i*u(Q7$t+;4q0r(M z@V9;u3~OCd6meQCTD!Dk3~SLn;Ht3XDPU4xv2}Cyp6W7&wSI&o@pZV?f?~$77CoUT zXq}$k5R}l98G;ge>OxRLPgDp>=xGT-2|Z6HD4}N~1SRy`gP??-X%LjqlLvwlda6KB zGUd?Lk|C+qlAI>#+M_k*UTXY&;fT@Q_d&^^tq@g=CK#MBVt41=`A^Q9Hw42xW7|iZ zQqiJRCVf>{>pQ`))@2>g?hS0~H>k)EE;;IUWDILv2}$lY*6PG&@}F$$KZ0Q`x&vJm zmeAehK?yzWCn%w34Fx6i41u78o(~X|(7pdb3EkHpl+ZIwf)aW@Nl-%f^#>(%&wfxs z_u~g8BezBi{=)GwuXb(`3`b)PB&Bz-77b4vOMk0NC&sYW5s)}C&hKZ`x=b*vMfbm} z!V-F(Lr_9@)(0iaz>~V2J*3X2d$>_B%silT#Hkjo8PL*KjOPo6wdnqLRaioI-v=dh zXMIpYPaX(L=&1rh$s@4kNStX}(rfXpVA%S;iHK8KTj~MMfc;Y z!V?A}UpfHSm}q`xz^m1KZ3ua#t=^EZ)@9}giu>jDzGM;;Fu&u4_n3c5!g zZxAYw&^_{aTTp>yEqF$ZWuN)3d3BZsxJV^(XB$Q5)!%T}yx)9`@t)0_!go3nibawE z4iDyZ*(TytVcMsee{*-u4*_O1s*$v6srNH13>z+S^ z@e60>KY^jE1jBebb%{9hg{Rmj!4~uU0T{YUFpOt1Fbgd_w*y0035M~!0nB0x&o{u7 zSa`Z_8*!Eh56y3W({sHB0MkE&ho1(Jfi|@Ot_1TN0^hlu2%fCiGRJT#FsTq*#5D() z1`E#}z>Emt;inTc3eS9mduw(z|H)4$peq1XTVP4&92UUPm!+^Zp*`o=5J>bGz6wkl z9Ve_!{{>7&c+9!_6EKr4JPF*!zQn?_KQL7mo)dssZsEBA724<;+r{DI-7o596 znt9_GHoU@p@CsnE7M>1q$GQ8CIM%c9)Br`QyCE+oThc^L3S7V0pwCjoS z*}^jg7T29D*J}g$9HfLUST$pO<}c+B;x z*c)pk3r`C$DGSfMJ`rcNg{OaCjEBNwj?Wrkau%M8_K7$rSa^2nha9u;ya>z~3(qP0 z;@H8$^DQtFgvY!#zOod@4ybZi|LU^_-Vr=(Cz$7d@d+(3+q41dFd?PSDEIhve zQztywC@4HH4?6(I4i=uPfmv$dSp`gg3s1B^#vcpMAAm_&c&dPT&BC(+m=P8pX8_hV z7M`KNjJEJx4$LPOo>jn1u<*1Wh_#J{=NMorLwNd)pD}gXbX)@?XF&lj7=Jhg=+2;@ z_lkOV2CWz$b!K2S6fAUS(2w}-iq37uB8LS}ntM>XGbja3xJ}1{Tj9F7APK(Fok7#_ zpL$j-G7;!n4MTSZ&EJvl3~G-v);SGBcLrU8ah^`E^0)c}lkCZu zlo2x$n6w3RAut&W<}P4z7R*ZWXZLV_Hj+PrG1u#;1F@D6jJaO3fuUa(!`k#?U`l(1 zV|pHhal?Wc4@|va%s#IH#@Qp>*6{~NoRnb9JP!d=BN%hti-#aL1Y_n&1C!h{+@EKF zNn0@6{Q3+5OwGl<@r&#wn<%ie*TQJCQmQC=p4D?IKThObJDsI*6Z(4>#0}-(^f&@KJ%1dl3qUw zUi&@ctaB%lT3UX)p>OX)>vEBd_dtt9LYQ^HG;Uz)=3ktnM>B@4?*vI{hP7zzc`P6~6OwfS$t*}7IlEBn21t%Or%>`3BrgUeO^^(kT!`5K$;5!9^YIbq zvVdeTBty!3Q9zyq~ppg)Zr$yv2|W|mm;4!$Ju3?(^B~#gyh6$SkQ_IyQ1UV)r8tWAc{=|I z*)pS0vKJ&ro?j@L3dzI^3MDr{GGk_;WGy83R253-U5Bc0E%rJQ>x8cfLv3M>>Jq`Q zR-cpL?UUhJwSr+SdJ|>P`X*qUXP9SS?Btg8w~iUj80NVNlBpLJ*6UG7D&J2O;g z3x>7!IxXUyKZ~?j@=q=D`h5z+pq0q5E%Utdv|yOI&*_NI^Q^TCLas;tEy1wXd1H}v z7F!PrhPCwj6g~zf@he-$1Z}vkyMLN7%tKeptHP2ifJxoPJhTGgtns&g6bx%k9EW48 z1+10yIMoO1zakjc+UpD)Ws5CyoaYLLwZ4R;QsRsO)|>mt8rv!x&luLa6OxuY*+X;d ztP~7ut%D>jjA;A z)=QA2@8Wvlu-)L{XM$m^*hJV8E$Z)n;TY~I7}gpFNy|%Ys~RdrqQ+Wh3Wl}*0!dc1 z%pTq+7}k0TlEiOp3rj4=)og7)i7~7-o+PVS3mxC!;njj+tp_2g5iN7%|1KETS_ess zXeGrv+TdtJ&twd1?F30_jy)V&fc3SO3x>7m9lNTqdKr>Z8U6Z+ z9oi7@&u0v49RNx7BW%mh%0jJ^1jAbAL((YY^C*D1=Dw{51jAbILy{H`%}4ZIE?^96 z9S%ulhCS>;j!EHqRSAZ*?t!H71=ebYd%h-Xy(<{j+5|~jw6L`HBPUz^W-^AgPJ$#= z&$i4lyjU=-bt@$FBqNGkEP}%vLvFkw7}oj~lIjOo%e>CquZl6OH5QWk2U+V>qphn2 z!&;9(lE9Kic{tJ-jdumZTHiyGm3oaZYW2R5F|2hGBpLD0oEtTQVXc=SNj=6Mnj>Fw z5o1`3-kYonOX%I)L5Y4>%a!1%{E=;$J^WrU%zWC#Xp5&=>wFk#$EGBso)Zjf{hz!S zZ^v1ftt|DLCm8lnzhAHD5{zTZxTeEUOYUd>)~kYHo@@S$c3;6-M;Nu-OBusjmq0>~ zFi@FkZubp>VXcYP=y7tig%cfyan-$yF|4%+l2Xw!uVDARoH4Am3=+D#Re5O6mTv{a zTD`9TUb2OHoIdhjBN*2D9Fp|oY->+wkyTZ=4bGU&7}iw}N4NsMR1C*6KY6T9(M)Eg06? z?kZ%jj3nlBxeEouT0372Es3Ey=hq2_wH952_*im&*SU;gt(!=K<3@^H>)-J?@{bCJ zwO)p#{#n+->2$;K>Gsz$hPB2*Qo50~_A*BP62Y+6O~i8-Yf&DuU;fq#!LZhckYv7R zE&T9g$c>$@V+?B@4@pgiwHlx$OLeh&xnNl9K}Zs^ZaLa$Ypq~d%e@|J>=)S95Tn)* z!LZgjkhI8gCC$0ia;k7#ZWRn`y#Pt6%UR`=n1q}8!pz_7 z)>_iGdz|lw&)Ls7H{JoMo`*NgV+>oLej`?=mNBYmK4Vzx21t?;L-U;Ss$f`a6C|Y{ zv4=;(L(V>b>%N;9!&>_N)cPH=ZM&cP$eR(3wd{|-DyQ~f&%P84`*Ym^9CZ?UaG1r~f;XWz;g*6OeTE5^H7%k1H;f?=)QZo~ReY#j?*`rN%#FswCnA#DAF zZJ9^E2Enk_k+-A0#6$D?=RLu&)@gUZLs`%Fgopar^0Hu9tIwSnY2RfJ%^ALJhB2)5 zJtSF6hF^IXV_0k3yOH6IY|EUh&j^OKPFsX}i59i8UazkO!&(kO!LhNdc< zhdbWG7}k0mlH6UaWsc!d_cDgH{sBq-o2)esMsyG7-NzW#8dirHUydugvvc`R_V9VZ zu-1V4kx|dHEwhIw3Wl}LgCs5Mgu`HiE%;jt1;bh|K++=X@IJv_Sj*1M48zGV-`Lq$JFwAB*Eu+|_*DrLs+=NrNn+o}`{Yb_$4``Omf!0LIp zS}?4&i6n9*hIz(6;33Aa);LJ$;dEpn7BRQ-&4OXAExAL#ZO@m`p9k_cSTFr2dq`(0 z^bz~=hZ(~j>QCF)k|ze_QlQTl=Fy+uqCb^Fe^SJOkD#BfW}nA^QTKVBV8m8E##Nb{ zj)NBGh`+VZql{s#*CENs++>~yPkM|oto08_vX~}RyU&BIqI|vS4_m$SamKLLX-m;} zZe=a=(de6kVXcFgA?wz#)+mHxcg>db1Y=n1c}OyEvzEEtXFbUn);eH0e3oe7qAaP6 zzqML0tTpv1^i$C?k0cuf!&(CZ8SwRU}jNYi*sy`uSVdGLQWG3Wl|ghNM)+y5nI>kKyxzVXb{$!1_l#Jiw@RnqXM# zN=V8j8v7Zw-V+RK=}+w#|3|3i3uD^$RGck&;?2E7Tieo~yRz$xXys2h^2?x5%u3R7 zIl-{cTk@-v#sM^VGL`%4@t%{ zk{tSX#<13%kkrdMd}u*!9I4m7uQG(!$>1zSZilUvfr?l`OMoe z!LZhNNNVKV;Bdr&W8iPi5e#eH2T7xhT4zH`AC2D?3~T)gNzP)c=Ua?ntu1*ar)bgVXY4#slJVEndiascNoK3&qC57?Nx5H zRkWHhtaSt=DannrQR{lau$KNbB>jm=Z$YbC>OKR^dYg`Vmod!zIwTpXyE#{fzQ-8W zdIXXhIUlvZu@>(LhPA$dq|u_a-5SQQ)&Y=IKE$#g z7{gjmLQ)>M7DCUT?(Z{(wPr$+5UoRD%P-s;KN1XU>CZ?!^aC(kMw^QTLp=PHr&)id z_$0j+rzbBh2uSG3OSfV%P8p%Hf}XszARwV9FWnZ9JPKQhOPQIUyriz@2Tx=ry5-h> zfWR$JUV@Zr9*YzVM_y3+c~4$S!x36J#v(~?Pw?YySpTJC_+9Eh0W%9r49W=86O;I< zIPtBShu(@E%yNDz&K%*{2=5WTRwell+##D_9)Dd!FmB}(FxBlh?+;$FgXj) zXTU5K9&>!Q`xs9Zu<#5AW`%`k1~3~fJd1%@Y2j%CCf;H5{eqvkl|}EwKjbr#(oj0) za7Vn@GRJTzFo_UbM0)`+O%|Tpf$3r4SqaQ17M@RlDY5Xx|A}>ih39Hu=&3=Q8|$cE ziGN|twD9~Hn3RQQJut=Fgy-tP>(o<&!u+`!n64I{l26oAgTi=L0h6@wjQA8!9b7?{Bpo*tiLT($6A4a{&0&-=j4vG9~MW91+`<}o1y%zO(^w=d8Z z!ej1V&jXXO@J#wQ+Cq5D{@ex35)02-U?vMsPh_}1EbyGN|Cj2iL1Fnb2bdb+G1u!? zU{+fEnYJEJV-p^8z19HJXyF<173Nb5&)vYRweS>wjTj1#xn7fiX}0jJ1ZKH~=ik84 zQ;fpmocIr7XyG{=753D z-yz>&{cPb`3(Q;#&rKUJ)>(Lt{T^#$3(r13V63z7bo>$Hn1$y7VCd;gVeMXqL#}$^ zF}K$nz|hl~!gx;j3FD9O09;UbzUcHb&MaAY8i1kqMTWK4eg9QYXA1M@ufJdn7anuJ z*x^_8bfz$#I$(Yg9&^3=|E8YK6vmSUrg+=%dL6h4Yf(#l9s{PU@L<7NP&m$ga8yjk z?_vHd2Bw$rnETg9z!c;7J&dPYB0ZdAG%=Idc z!e|RU0<&CrdKlxp9GGeg&nLjF z79Mk)I}}BoxfY)NfoT>Vb9~MOhTh{G)?N#N*&saT_IeMP#TK4KJB$eyo(q7fxA3e5 zCXTR#t)q^1qs|Ho&(pwk6rQB9y?PW!odyffpMmKsJm&ap1ZK5`XWCX6e}u=}UI(_1 zIynoE(;@1lEIgM0v);na z!eg#i<#ti0(!%p^V6qmTY1>DgSr(q3foTvPb9`RdA?nPr@XYCkvBknuv}4qnZ{fKd zn4IvK<8vo484J$}V48);T(6GZ(WVxjF~DrF@LUYcatqG_V4UrEzA*dqA}}j0JpTr! zqlKsUPEn`P!czfEHw#ZKFl#M54Z!rW@cax+vxTQ`kEl~>;W-1C4HlkSV1`(DUIvCP zxDFc+e*mV;!n5zrXbTHZ1u!RAcrw6rv+y(lL+`Z@n|C_xg0`^m3#SaA3ky%jJ)+KQ7M_QJnQh@I-xK4!@R;kh5ttea zPX49p7QG5a&%Kpg8?cq)Ne zDLiI>76Vgl;b{V(WxgB%3|%J^7N1$bGz*W}pC^D> zY~g7ErbT$n@#%Rm+SI~x0x-W=c&-A5u5Sse*K@!W?+`v;YyhUg!n5}foO2K!bG@2@ zS#9CD_YXMdVBr~g2TX-%y z0&QX8=~0HYsDQ_l!ZRP3l@^|tfSF_A`4*T);W78q z?T*9w9}CZ5V48%-T(5_K$yj)LmSZhy;W-`{x^^Y3-Dd;SV&Pd03|+et#?xyg<_qC5 zxBF+n(6uXJJawaR&Y@fQd@<~Jw1tJ|BVf8(ct)Lo^FJ1zRlxKR9&>vQ{S)SH3(pE* zN`%LpKYu(C$7mLwMqo-UJZGGQo`&DD!{WRFn86mFzl=s(Sa`NS8DpLBnB#K^Fmw$} zm_MHYGs41i{wX;BW8rCcD#kkDG3Q|eFr^lrtH)qXD?H|U{Q%4m3(py+VNEMM=5~J> zm@*4b-_tSHS$I|ebAp9u#8}Kb7M`iVq%A!2fSD^i=J-4X%w!8s4wzaCPrEecTnkTM zU=~|=P6cMRh39Hu>McC=z|>fH-UDWZg=f!km~$;W7XZ^>;rRuaIt$O`XJBn?;rRiW zr52vE$75}5;dvaGtcB+nVAflB4xfPYKNgfEIoHB7 z3z&|=W9}Ds0n=jPSp`ft3(uFp&^1e8<7(nejF}dm^MRpjmcn>G0H)N!b7%$TTno=) zV1`(DiqFFN9}CZ9V9G2!tAU|wmcr^aPNlB-oO5b zm%#Lu2_W5bhw%^dQ%>~ zu^K<^0rL^AD(hlrow``0hl@q=4JB7g87B~8657MWSMfN8d1)&f&=)I~D#M6zW$9ZE5W-2gQ3+6Up9E_%P^s%|O>AeR`%7Teq0Dml)-oRun znB#$QaMN^{KbHWLvS8}S9}DI!@<%Y{HtjPL=MPitj~R0^FloVH!!U+l3QWd=xd)h> z1#@H-)*C~^{VBc>=d3K4uYk!4#_aPA7ojZ5WQH$Z0jRnDgnB^AC$G~i~ zV7gw1zI+_}W43iXFjW@J4Ztk7U|t7iqXo0w_3#H_3G43%0aGOya}0aeU~CbLxn3^< zQ#>-uj*F2S7R(F4)L1Yh??G-@F#iT7F(%xflkSB-7R)AK=-FW^$INwq z6v{*1_KZsl%8}84Sz*Jf=7cYT77Rv0zFb$Jk=Q%mgMeA>5x;z?54s$1a6G7R)QaG+HnlfJsaY z_h;8-@JBG_JiHp1j0N*OFfD>Hx9Qj?(03+<`|~<5l_3~@9%JdH-tT%&zq2Ncn=!7} zpvg(~_RAPc25c;DCFx%sZzUO6va?8LOstyWIL=^=xk6)Z(U_|==588uN@Jd&F*j?> zl^SzgV=mK}(;9P5W3JGcTY9vPM!Cj3Mq_T$n9~|_v&KAHV;-$BH)_nIHRiP%b6R6Q zL1S*vn9DWh85(ni#$2v3XEo+Bjd_U1T&XdS(3qEN%qfjIt}$0>%w-yLy~aFPV{X`~ zb#7E^%)>S2I*qwhW1gci&(WAu8goWtF4350Z2|KTjk#81PHN1RTfjV6W3JJdyJ^f5 zwt%_6#!Sy~bshRG-y0A6<5Gs8WMEQbuF>LLsxen<%*7h>#_nRv8%1k1=Dr$pmB#F7 z%#9jzMq@6~m@75rjWO|1%@+fgXv}pQb1#j#LSt^xnCEKD^%`?hV@_+#%^LG$jd{7o z+(Tm?tuf~`=D`|sR%7m_F_&x1O&W7tV{XuxyK2m38grw@+`OZ-sh4$)8goKpPHD^y z8uJp3xk+R0s4)-Ln6n!5WQ{qeF&Ashr5f{cjk&MJ+^jLjHRckHxn5&#>DD^VEgG|< zF()hwk}uLU=1%)jg^7}awJbkmqK8gr$_>{Pd2F>chD6B=`^#$2i~7i-KL zH0ENBxkh8&u!Gdpi$+3YZqb+>jd_m7Om}SrtP`&_Cq=QQS=#$2H>FV&a_Ys_mk<|d6ftua?> z%qfkzNn>u*m`7{OB^q;?#=Kf%ZqS&^HReyYYaQoujk!@{&T7nM8uLPpd9=p-n#R0b zV@_$zqc!HV#@wJW*K5p!HRgoIT%j@3y9Gey$SQ6?oyJ_MF~8PTw7hYnQe)0)%o&Zj zL}Q+#F;{8KD>UX>jX9|?57(HhHRk0SbB)H_O=G4fqya`T^rA6GV_vE;&(W9@8uQ9+ zTQk>a%=H>`wZ>emG0)JLYc=L28grG#j7oFey;W|B#+=cZ>on#{jd^3VHS^joBJtu} zr!gmZF60dhVm$hC$S82=%jTt||w_>KJ&;+AVtTE5fn2R;$ z8jYErlM`f4Xv~!wGpTr5DyseGXw38^pCEHLjd`-hys@2VdCb)s^L&jtsWDe*%q<#o zmBvg@RSNoCqA^dub5>(6)0pXHP(hzZYs@1w z=H(i5N@J#H&jy*(8grS(T(2mWW)I&1Po$8n}$B>8QV9z)U_JC=;&-oVRg_Jpmx)<|eogA!FM zSmi2zAc?#QIkkabDZs_?tv zhU3_Q7-ErL_=`%mDsf8{yz`2Na1U_|P)Ds=B8Jwp-) z3*h;()n4_L?wzFf-M}O;eKkx!FAr%JR(UvO+>Gfn#!Z{yCn6u8R_1eqcr+S$w;&yj zQf*X@1##T&HNfOEDnb#^3$;b|Zf=W>X#VyZh}vSqLEIKkX!}V(adwg%XKb{}LkJv- z^UXJMoKJ*Aw?+4{mh|EKSoJ(49%_rdu*y|!v5g@@xHlIVYIJfdtSxG#EoPoIdBXT{ z(3yTNNG9!V zv0mB&jhpY)K{|@_V029t=evSCy>Ap}dPfgThQ^uJ;VS1ROrAV$+L;&lVRpt&pNLLy z<^?L}F&-LPRPPsLF<5v!q_bhFErR>$+m^HikB2j4JT$avC0$|SI2AG;QvcF@qVaI_ znLHkv#~*6Ha0WX&5}58zJJX`=d$%LdWR9*3hiHX(W&ZRGbT@;etxANWhkPYMyrc_oRi>D zvethm15@u|sQ)<5#gOE%s8H5}s|!Mm9a}YFEP6pXwrOunNiIUpiv%0aJn*Eh;MI=a z?k@ooY>VI1m+Rr48dnj7R)za=mGotOPT{o;opGhiF|BR-4I6bruhAohr?5X?Q`1^Y zVTKJ3!%S1-Mh4YYQ7r?yRo(ME!%vYI=4}C1P?SHzhf3r(iy3hWS@3->Ai<_ruc4)3 z7^GCMQ%*UBIB3OZTyFq_UHP&(4DF=xaE^?JEs*GA9re>cKFIy_SuA=7=6MVMP(Mvc zKgEk74TaW+cwLmYKHLFYI*i85nk4sSih|1gLOL2VpOC)X9whqukk&0JS+`)pX(%+V zc0-P-{{D>tp~lth7W8*|ey{59Ra3@KJr@J3-{ZM|m0zK1Z0hg7r+;M;Bh|mCcj$%M zEA}|I*XGC7y$-RDtJx&C1vU)rMQxG2iRZ7)kE>gCF*!G=^7I@S3&?5`E01+$dhgW5PguL(p3l%8e%^H;Ul1UT6&OivMs4{#=898(d$le zZk9N2{tQD};+zDJ?l|?h6q*tTfT-8zXX+&q=XxOZLUE?I;K8lX9`~@sxpMl%^CwK* zXWGQcQ^)(g?hYJ-s5mE$aVERDGxa(Olo^9hle2;JzEY&^X-|p$bWuMwupxjgsxTT=glc8Od}MD zSVVv393NZJm9dmZ>ilYuh)0Qf86|oFKt~9{LUT&;ES^)+NGE*+pzJ;KDIO(;<66Lb zf+YAx*}Hv;M~NnKT`M%F+=>5cPN{_J`guqiNvb8oOTnSfDN$tR6UbgHIZ*eLG&>}q zUT~50g0Jz7(7{5-4rArmL5~fgX+#=>8mqZ!l-}Kdp`Mc4f}Zk*^px|bPn_m0X8exg zj6xn}uG;+EME+C&(}EbOenFB8Ajz?o%vOqr;xhsmC=`_6ldEFObe!wWR%;~>v9NDd zI1g7#9@6So&oRow>a#fyX?8$RTNTQ~2OBvLzei%|ZAy9g^)SxEF2?qvJnW3-R(UwB zl@;}s^03~Lhm>O#3wfk{7>dEQA2Ct>Jd7%<{CQoGxB5%@L+^`(NwinrR(o--!2A8; zUy?snGpc5o&*`<~Gl6(C8u|UA6o#l*88K%}pPtu*Px%}({BA}2sVy?^a9hlQghrxZ zp|)@i=eF4VjFyu)C!wG_PI2D;c8>GrXS9ovhbqo@1s(CeQJm?$leRe1bxq!}=d>AP zE5=QkFnMC(p~$t=2f4@T?n)o@+oBezwjYDg-9xG^^tCh31$6%fwSe&)5uf{lx~h8# zkioH+`{{b=r_`4T9W2yOo1~voyX)gK!C>90&|FXfwp=}=FjvnV zU-+}RjCIa+YUDP~De4r6Vs0a4{k}EQ!qrj z#WL>ejoWCj&mb+P^$zBjo}ANob`T6==^$q3*!8jEr|0E66X~`N4#$o zXX*;JIA1SuuEgn}@da0bD5B96`FuVnjlYQ#>KtH78IxDL2$Jf6Yy2;^+r`6zTV~p zZ9fTU41a8A9$T7?7|MBiS1(n_c_>*HJH*S4_;%|z5cgN1s^_ap2xW25wfBnZ$kTNTRi=zaE? zaRG9y3v^?V$67I{uM}r`Q}AZ9*E{lkLE=1iY~|RolY+;-I2VWUP{n!kBldp4)FXS9 zEm{fs^`d^Rw-@zVA4485oC^|w$QA4|XS31p?Q8d49Bol!` zqiEF>9!1Tg7LB4;7jbTU2Yu?p!9uyQ`!Spw(}O#`Z!|)-NN$*IQEm*8+&CGUdLGiq zM%T2f+_>Lpi*h5o1-bEYFgMhX@&&&ZAA@#J=f{oB=f)|(WVRqT6c4rg=5r&B82vAD zqkIc;BeMm$QMU!TaY;MQji1mK=G?e>3vwg5d-%}}<;G20kQ?7iZalKt+@Lo^Bh=4yqoMR%olxm(>bw4@h+wjX&kP+jHz|$+1P?!LqMaq48&NlE)9cU@|nvc7nqy$Hw8%cyO1bf+X;hZAdjA~01tbIih|qcx&-(H)AG0U#MBH(5$y;)~EcBtYq|82b2RG-&HBTd^<0~**K5{mH0#|o>nk+t z&26&2RI^^ISx;)#SN)HyFW0PRH0yN!IGA;BYt~!ZRQDB{^*YUZsb>A7|B>~qX1!js zK3KEftXbdKrn;}xtS{HBr!?yuH0#cdYQ6CLW|;=fdRDVurdf~Uz$ZA%6t~IxYnt^2 z&3d_Jy_04=(I)GSn)OD_I-QRU=6pBJdbc)NU#(eh(yXU7>q*UevQ5^TH0wFddWB|v zZ_Rp1o2;+ZtT$`c>6hMM(!d|;hObS zo2)l$*6A=I5a<4LH0vWY>t$`SzFxCltXZ$ote>b^FK?6e7R`D>vtFxNKV7pvx=q$M zXx6)F)-#&*Nt*R^o2+lttS2?=b(-}ln)Qk{S^q_|UZPpA*Q{4*)+^g&-NB)BAj1cg zYSx!))-TtrSGCD{T(dq{v!2zg&(*9~x5;|3W<8}@Z_upYtXZGaChHwF>t&ktM$LLg zvtH9C>j}+zxn{jdv;Kf)y|zu(yK2@)Yu0m`^`)BiOq;BC)2yd8>&=?==QQheZL;1& zvtFTDZ_%tbXx8i7WId@_uhgt>)U3blTldZz_uiJz=}j7U&O{vW7nF)At2?O($FL~!CRe`d3q zF^11I4Jh#0tNSG(b?0-H{|D>UpH7$M<7~PDS=D_&6}R%{F@t(>ZsdQv@nb_nY88gJ!*#X1%dZ)~ht@gEi|}&HDD5 z^`*1d85nr-cKoX^8^T!Afbj!XQ1-MtNvBu920He`_21+9=Eh7^X649D6& zS}@I9P0#Gi&dRif-I)fqv5Vc&^Z*B*NEK?TYi8=U|Il4MKQJS_vPA2`qHUO>7@(-I zAe%BzVJeKU84NgrCqg1cpJdvEC{jAo5()cA@hnT!NmiItIKt=eWmaZoW@S}ZS66lR z-5d^>$;y21<;#~ZU%q_#QuM;MHYJgt^3=mtXMr`2RyMvC&~J45lKzM_E~Pms*->at z`u>9jeHUxN3j1}7PMPMdaff1*3)Z+lA!OrgvS*$mX6gTxeGjhBC~WEDIJOLjJ;BLu zrSr-!)4aHWvn^4Y{&$u9A*}ztqz5DZHDCfLGk+eUPEVd`;&9IL^G8tU1BeZM&AVa! zDb#t7^_}W`1U0j`=-N(dhBn^$NIEMMJK-%r=T>DRy}Jj9 z08C1f8TYK1aT4;M$UuH31NrR? zK>pqgq#=`Y1NrR?4Yl#-GOMJdZyKJ1_a$D0$~8 zU*mYmM}GouZfYd~N<^k>UT2DuL#@txC>d*zKSYU;1m5b)C=qj+m;5WA#k<=YoIi?^ zcR^lC;b%}Ha^{;5tMu`Ss4k=@bVhp4z*T4jyj*wu>Tan!3fe?$>ID0O88qy zH4JOXJ3mQ>#Cwa^roJh@BmW^Y>8lj@Ig9 z@8dQcs7tXwj}rW|feDpR7~szjv|fAW8WI#(D7YJu5=E1(`MaDtkS`@5*~yf$7xgObl_{ra7M9rCQn;Wwc~c;`4h z&!Ob=$?CvMrYLza31q37(+>2Y4huM{ZEj2S%=#1 zqvUN3^7o=-tZBBthLSHzZXk`!WHiCe1r72yd=5O6vyvcx6H4BDD(In-*HQAi*3Y^zyO1U&;CMZ~P5tHc2yK{{%`t zua*3Hl?bq6I+wb^}%l5Yo2pkq>w>%=IbAFw(p z`5~0NtHJptln9SBul>)dM1#EjKSQfyzNdQZRg~x&V2F~Z8sxW8B78&~@_$QpwDI~$ zl)MM9DTTj;lB=ic2!8ZuvC3%D@+~O2ui-jC34d3SMu&dB3nlMs<9>mXcQsu9IZ8-B zryToBD0x;JuU|un@Dg*#|2InbJADGzANXIe?f@r9O0eHW$qj9uekV$v)wnu9$=e#P zA47?VYvQ>6DoR8|D=+ywC^^?!{hR+QYyeGK?xKXuGd^Da$!G$lzVVDE&nKwEZFSL$ z2};hNs+|8ZlpJb2{1ue&to5SRzx8vF4Q+JJQ1ZM+&m~H9{`^UlY)Z(UhfK+y2O3q) z|2I)bFZorJJk@Z0`~%cUb{xF+J(Rqs)%lYsc^<5w@4U_rqlB=hw8;kz}CEO2rBaxQBh?399R^5IWj={~( zGYW-7{bSU5Uyi$%+=zM~EajX>gN^?Wbw1Siv-OLhi^VYtTz66OMU9?MphWm`vF-$M zGzfQZiKy4F-8h|wAr3+}4mFPT(2BoODj@$?D7m5W@V}!vSO?Rw_-T~9^JN-k(XXFJ z$)@Z(iZ_1e-@yoKn(YQkelNbHaQ+}l#7>iQ{tzYPOX1vrg%;7C@j0|YXA?euC+g4- z{hR+bAUN7S<-1XGLzB8cN3AqT_&Jn3qs@!oK#6XB{T52TB=rwrefIBSl%J{+?x95N zd^tVWR7d0CXHoL5*6LsWJY-el*e*(*k+MO!j#2X4+9d&HtemLi+@njeb#v7l};QR{eJoi-P z#*JTs4XM%dT__P=2oCXr>S%p`kLqZx{sl^O8T-gDqmG8_K1#;g=$xbEHI4H#l)R1Z6{BHYHF#vc!LUe_T16iQx`eFs;OZxorg zwN_vEtEhvqNG0K;C=rn=oaTQUCEu-Sn?003X(@ew86`JR0v3TOr*YWF6x?`C!}Xo0 zLq9358A{G&zv$cdpyW#$5B~;AKGgd4^&di_o~mPd4<))p9ie1HlQAD9W3APHjgpVZ zF+C0XqiG1;tI_-g)X~?1e~OYXYH)7+@0i^hg(oQaoF<2V2_@WXEk^k#s6=8%*Ejwd zO1Ph2)cN}V19MsOhwb07I^0KH&Sz@%ji~dbr-Bq0Up;>hvs(1AO1q#`N1z=f?L7j#2wRgc33< z)4BW_N)Az$LjDv=NMrFj{N6wQlxsJB-?%~@e&8h@#+ugp5GAzarJVmwln}is&0j{z>mZtX$0gw#e;xB(8^P~F$@3b8 z6O=rCs`BSusw2mX$syRfr{VgisI#f{Yx^Hy-9a5p!vy>DD7mlU>Z0Ubtt6m2+H9Jk zZ)jn}1Qdfb5B_=uEnkYJIP=K$wi z8~0t5Jg@2SLzKLwNsEV)ry74|D50NJ=Ks@7$$yEGLk;qeqvUfM$9@_m?`!mY!xtfA z+Wh)vl>D|Pb+4o3DH~;F%{ z(IEdmlzjTBkZ^A_3L6_Yv^oLmj5V%)8YRTnl&e3C68cF? zegY-WKNZ;7$A5@4b*DESB*WidM6fs$u63V#SCA84cVizrFCN|1jG zCGSWIspQ-L5%`1urlTC7s+n$?%N-jRz1}D)eZ0;rFB7A*dLH zaX7ipQ=D!fJ-!!s^xnn>&qMvOo0IT#98YehEu**}PkWP5?46D#0mxwo;<**Cho$OG zXQRA&(ZD|oy%T>L!o>5M=yTD>pbcn z-+lPdJ80i~kt98X%<;Lm3Vs_Xbz^iN3AWx6~z1PPQ&t z!=H$TFB>fFbM9S2YII(+ccAv~-c4R<>dz<0uTm%Lp@(L7L10C<+Qn0}=!T9Afm6zbMS0i|LyD`3S9B!MQ*2;)x%{ z(@xOd#iDo?pSKSm1fXGVh1NFrF(s-h%8W7yycOVJ&iVoSvwkPY645?F**0`b6nGbD2}7|I~N?Rmk~Rjbw7;*HP-8r256>!XwHc6Y}EVf}DA?cmoo zO7Z8|k0zZ5^a(}n_Cc#n;{fo@qmd)h+C1zB52GL)2B9DzQzmQQfrw$&v%VLOW4VeF z?&2J6ZFzU;NYp!zAn=0nTHq`})qbnf-Nsl#nvWjfH$I$;N=pWcLeZXgbb{FvhSkK- z5ITtcrq>Po$bQlt-S2ewy@w|)RbtnVEZ00sMbZgx7V zjjELBs{I%`Yz4|oV3Iw{S2SDU8||Y9K{5+V)ss*$FLpfgC3x&~(ub7taImc(H%hezfboI78`vt9{tL zMFZdnv7>$`lWfJEHs@CJ16^$$SzMr`rG{02q7pkt738?xevDSF-APCwV5FYHB87PY zld64-wr5ZldnBtXKqBN41UXT|dzjLguhS6o6DFoyMu&KbnJu?`WY?6ob>Q9!_BcbK zcb)M`P@!<7(G|7T>W?n5u{#;fhCOUg?yO>QwIE$pf48wU6NB6+V-rN8U)?x-1D1N+ zx-F-sSYXo~S`{6LjU#q__qdvC8i(l3BlM(E?(IDZuPKmd%*Se#=+r(oGg`e+_NqYy zYCpI`po)04gFcK~aviXhlm@;gV1hnc!G+BUPa&L-{jl>=C0enk+)3IWj32`aXmfqm zI114hPz~2tvT^1nwzQ*bnC7s)b9D%|&wPn@Nr1u!CoAX{?QBAL4*Vd5!v>zm*)V!z z26-aBZM7^8MK4Z;hW3__nU}oIOK_9nH@muK&Wi#z<2w^ShbGsWF+!1x?2Z;(PUj4_ zSB3YeiWcbJ#uyfEp_@af^wWv_V+Zd|qO|vfMeP*leIP6gq9>w@)7HWoIk5{f#1OjHW0f&9MY@>9g-`Km||`iZzsD{ zCnIDb#x;M`U9A(I7`t6(Qk&g3I$?)Oh9VpF+BvlGCvAbVb%e|ar$)m#L~ptX%gH~6 zJ~?`jZ@RGq@8cF(+IP9zq9#x&ZMTyRWhKSk#?F!4(H6%tIa|1A8HN-NUYbWE`UHB! z)|Q;!i=G6)BF16wOSHeC166jYs%}ymf-R_5SXHnQD`GqjyKRhL8k&W|r8!;Hk305$ ztO#deZy_TElD{>N@UqPX4Ul3dx*358cW3d4*{L)q3Pea5748{$AUp#{-L~g?k6&{~ z)@fWE$26#%HP2w3$m|xa^SI}NsKsfBN52%;mNyz_CL|(~?uEQ>uGk_^##0N`@PbCbURLU@H}L zrYr~x5UlXInNu7VYhz^?pUNx8s`S{+KPH1IM7`W(VfUx5%xS>&_9`- zE_oD82V6Af((AJ_T(WmqT3g;R9o6$d?T6Q!?U$-LCbrmB1=@Tj3tJwya zKq;?i3f<#mKIPLSxz(^g;5L}z_j*al$?A~F{xQe?{m}2RnAQ$CA1e7C9-eF>E+XT8 z*z}r!tx)eoZkWA7vdk1ok^o{YC~?ji5@?xWWEtnoMUEDB?wwgt4_%MsjuJTQXn!tA zPNQd(>G6x;Eoy@Mp&gnV$+c6_oAqzys)sP zKndC?inZZzN*>_dFcPgl+KIS0Fs~9($S$7p+kx_Gpnl$7A9UFRdBk6dVnjctkwtt` zR-0b}kV4mr?lrYGdtqXS(r)0ccb%M>WYUP#ExYVml?A=vfjN`St=>}7z>pV2Cmz_N z6OU|)Y(<0!zC3!+u!XE01+EU6>>mVeHNv+i1^@c+L1MtVL9O(C>Bwm$DG|YWHNle9 zH7yMKMsS7LWDg;GH69i#Ls36ih2|xf9*SCKSC#3Oa*1or2V-^>{vLvt@hg%ICO5_1 zlhFiE$Q#gp3I8J#SYDdoJUGIF$(X=ypTxKm*cl>Ss7N~S+LW`0Uje7T5cOU=w;CW& z@DW)#u)}8#k*d)c?B>fh%c9^RU*8}c#+}z7KN>4ZhLZajM&*vB(~)m>ef4o8^!lz&uHm^8F6VFAMYpg93!5;azgQ}h-# zy-wURQAM;iox?>4B_Nj9rhu#T*XKL5b)Zq`dw7X1jQyy;y-DejR=#@~C?{^%>wHS+#PUrBi#NGOlbcsPKlbP46uvnwRZGB1QU{Ah$)Dn@NF^*ji@(Kp zCZ+i~X(cW5>M8IVO{K&yu!!D(suf_9eamL}m4swJ$yUmSsUVAU%IT8zCH%$jPeLW$ zHL?Jw=<5Nu1a%aeqGbbKhPEs)g)-@$Tj>Rj)RmCU3aoZ@4XJa@yUgr&!Xr+F!iz?A zkj&jHbxp%cPa>2(%-2Xtw%}BB%T<@qVJBrgE=ktl6lPH+0cpkgY(@59Nu(?Mj{2`p z#uaxyGY1#VA%HbdIVLTWHhM!2G|Y}wpcCV|iiE#HxvT=0=oi@NM1RlEF0799x{|mK zToeb?Yr!u`jKY~lS7tMH60!}ej95ADRrOn>M-n=t>0Ow>C;HcX_F*}UD?lZBMd$O4 zij0=VNsir0v8sJ-CP=tPcYNgVv6zQOf{{5MwLf(w5>`j1E|`K&SkcX9CzhOV9+T)3 zv`>>)+2&;_mOXY&hr$mhCd;}d>6P=yk(Ie_{7~d0yWhriP2E!bGQ;wLCG6oJb$+ZA zuhL&9^PxnBVAmpAf<)I`oS!P#H52Dk=$ePj)iFPtu{u+o%$TxtN`At2bwViRRgzha zQ?{)KIg&e$m}BmWabBIWXpLxc%_p&|b*;Yy9g-ie#5i|<>ST^<)JWdcZ6{^29;;KO zUXv_~O7yC>?8lP$`XHt>%7`dzv=;Tg7v_RZvmh(pf~pKpZnk8}m9Limtkd}D$II)$;mnz{6B({2{jh7Rvz}f^d39y8stSc} zF7YhNsa{w!x+K5WK>se1oY=Lrs>8ep-3q^(IqoXRs+RAyUexBeJM2!QrfA;FerU+vxKZ7U-4SZsiu=M%aMfT-egz_e7iUZ76chBQ52n6qhvFlKYd#`4lQVER$J_(%XtuSTbv~ zDjL;+D3nNEuJUHw+#JcSSD?8By5=AZC@qV#Di=Xq4VK5nD}bn}Lygc;8JG!8N7OH4p1Zn5>AK6E4@$2iN0J zkYU+1dkaXDTx-}7p(OoE=kyA3%6`H(QC~ikT=z#qD3o5fnWrMNd6Eq}9ZFYQC6gfM z93nwqK~`w@oL^N(U5{v*n%T7)PbpD&Qpzy5B{Z!!OSCGF>q3&?k{aB$T#9EQ0rf!? zG_D|PbUH+Ee6A|ymG!Hk?9qCMnnEH+sGcm+DbY2-Q|MdKy)RojXE8GnKjx4M!3%SK znp?}|@7xtcbEa9PaHcesbV(k#`=$gUi<=r!5LwP}An*|Y3k zlQ`6V)aT?Z=tyHodg00J%sZX+HWUSEpEI=^%}m8F))+Xm z8I_F+ikH49ud>k!+QjpMtE*P4wRPf8qrjWSlW2I>$$fwfb25`Hd1;{8yu=xhZanGf zmei7+cs*#eic7=E(_~Uyg9Z6QsHVm>8rk+qDqa^qC>4(N)S!Y(nWiS4)9N)uCfuL5@lt;c7EgW^p$Y zN5wNbX0g?kgHeZ!C7|Ip(a+s|LWp)#QR%ADm7YPp#Rx}t>*5wR` znm)|e5!RP<%7iQ3omfQ|-Gvk;*ilkX={SLC>65ISlu$Y%#kpFL45uhbkdn127xdD- zDI!2gvs8kB(z%LsSgtl^YUYVLG8V00uX1+#PSjaFS!oO&yVA|7=qR~q4C)*$94c{( zWK_ve-^^yPD78t31Sg`pK!TGsA-G&pj`bi`$%nBX1l5vI!sv?PyKXqGgn_uuvqtTz zLk5qVskw@53`SS6$TaESv7{@=65xc{GIM}IkE?Ypb8CM+=+bU9%7IdE%4g^-6E1JR zjh+D|5w6vB^7SAyb45BsR+)jYUzE;(YQ|dPH=S36jNcH>Aaf#O+N?@X&iMl>?4Iy? z&{@Yl*7fK~!Ie>iz=o|G3Jvmmy@}oNRbO<_I@&kp>rO_09mZUj$Q#Iz3gA@ zk7mQzhGqXe44$Bmk7jt9aN@O(j##a29f(=$@vFRJw~DHDdJ>#LlMasR34jJ(qFf`e z(_?)!21c)A>n3`5I0;Xqt78bE*M7Lq=r@^pKlFRygjH#AZX1L%RuhEevoRRm*-6q^ zR503i4%qjDgX1pihtWRy3~oH`zRD^X3>NK=j_GS_I~YbMC;f05u;G=$erJDjJ&uW3 zoJg_>VwA|5yWIn|n(?Q4nPz{BL(<9;=xSN(_INT1!s&E>G(3&YNG#h&P^e;(mAyaH zMh_pUfI+~~GS@ZWb&GjaZWjSGUB4qOF8obJWB^TiVA{uSLR7}_hez8<*ZAQZ=W)pG*PRN;e`>-FVQ&0OlQ;TiKArYb$-<}H-qjekl4GT}$ z9nB^|sDjP=Br#Yj2xLW{HbH)Zv~?Rpo&1hTABV#@JLIifX{ATFq28)y24S=W?e@u0LB0}W z^00|h8?cnVWoI_j*r?k*K!_j2m_fzeS^*n!d$-S`OhKBDP2Bh0Czc#%N)Ef@t**;{Y_+&2^*WR}$ z;kfSyVJY=JpNr7(@DLx6qHkAJ^o>#^Ipr!?`qpVQ>|v?EO&=_SYe0o_jwCmY9CAb4 zbxJlz;+}JpagI1dNfugm8zwz-W2uu<#UworRn!x6Q4pqdjOVDOYFh9X@|%Qw1E(Ij z+4Ssk2xLDN*K;ij{!etB*Ndj`#|G!cN{^eY3+g;r!N}@#>i2Po7Q^pHv-~TFTFGHo znu!ubh`b99Rf0-}bDpG^1RQcCCBivBvUe09t(mw5SYohvmj@D(>6r!!P7S3lO%f=~Zon1vc#!tq_4h^rRcx-MVxKBTCzK5%wv#umWH57JIXm`2rsS*D3ZP}< zSqorhD;GevMYR^dwpA~JZjEg%f^Th5fI&pO7Qhr$6ewb^twqJE18=V&A((-M61(|9 zwoqdXQ$$*+tSiEuVE-YiLBiIHGqt(hk*Up#Wo=7zlYu6;MiC4Hxdnz!hb>x3_SE`O zVpl_Q@?w-EC``FD+9$WR0$U7x*?>(mR!POYG%SU#v=?*2kfZ>pJ)hG?;Hfp*NDxvh zP(dlF($WSH1e{`+)S+3taaGLf3|^3EG*z%JDoquFjl_^uaM)GACi@1%Wo5BVsSvCb ztLSTuF;224b;3;PTsB$<26+J@aQJEA40T}@Igcqx@HM_OH@#yM}4Fec}mQD||_mzqM7ob$A%e#r4~ z7h9z&KW8CU3Lh5rp)3|-rS`UAOtMeug6ksID($gjI&%3@(d1~?9dnh>skNa{^3c&D zTOz(ms^;}2(KQ##ggLopV;LF+AJ-(RN5o>udAx3Ptr@@c1Hm<6mVO3VWkXhDY?Lwy z7c~~xt7Wys8m2z#xjuqrBdBD5=iRSb7Lk|R!<39_X2_B8Sqm{T zzUdJ~IUo6=X?(N<`0y~I`Son@tPwv3C^Gry0BCwIUcsr*0utZyo8yUGfz|Mhv2%n^zY&qT{Y5NPuTEF-CKFK~X|48X%fQHkfd0 z3`HC)`Mxj~+*V;}YSd`(Ca$Hh81D?7v0(aznaEqRh_U|U>D z-5psPq`Q(}?Wk}~Xi^U8)`X&(j<}58I6UaeP*TP4%-u5c?1Rd6e#2%^)-or@Kt}J) z!=SY};xOo3-&2J3Ahe91UZ-?T9KF(8zn0Y5cEFCE(K?^zS{ci_XmxZ;dRTQ}ReYre zghkw3-0f)qSjcCnJ1&=jq<9~f0i*j54M>adM)x9$+r5Bb`2M!SH*kNq;AN2Xdw&%8 z{WuzgG9MhkVX2))Zz2!Oh+f@1st7^kNF-!P#Vg zjYsHS2hYf&s3grGn`Z$?y4p0ZZ0`yP1#t+lxnj9TMY`?zLt?a2FyfiEqZ1E#twZme zy=fs{Z-6LRKNYnlJAM*Q#m#OD2(^X^Y0JBZT!P+76r*+L;dKk$OrDVdl)SHVAmE*$ zu6KDJ1?Pa<7SG;TfSDEN!9`LaZ{Sa#%mb^}n-7)UioYC9dWFPp^4s%Cy?IdSEzRD@ z7#2GZw2BfgDP~)JdW0N+G3{pk(eNz2%wM+hL*`!&cW<$mgr=Bt4_kLAr6fvblfLKo z$LIb@NKb0CwvKV3{e{_(-Dsz)^R4Z(a7a1W!$W^I4RP%+`yj`55Digv3svLS2L0s4 zffpvD0WP{n!?OzZL!0N8VNX^t7|C7vL-slW74M(>lWB^hRRzf*y}i-e%R;LTZ1?0k z4)0DT{xu!|>W}>R@Bxv$Gl|a5Fn=7pga_ zLn&8Tfu0j<$R<=5en9FTp0JvR`<;Vo)DlN`NWUD9XowgqszKtTa|?@VFzch=`$zk& zU9giB%uX-~*dI(Dc4&?skM0T9$6QRd(x#IjY1rDCo{ui~XA`7ni;uC6(UQ4E?`0%q zNX!u4o$fzAXm`J(OMg&>?X7|e2ZWu0*+ksKML3Dk^|XBy(LCD9d?V!S)Ao)IoIYq2 z2r^rnsE8*rI8{<{Fun0=7~q)%kEV6!9D;M+ZbO?SrSx_LGwgZl6Ini|_FN3w(qW;1 zeOI9DUN9;Jf$Xe?k!1hS+VjKd*3PaMoCF@S>CqEPl*-1ajb}LcOB}7ObL8Z}>qe8w zXfmY{xt+8+Jde6qOS+V=>UJ+=kkqo));@o_jUGpuBIOUVjiYJ{W>qqvT$2ec6mZp; zC{X|$_4u@0)U!epuC*)PXA<*;>x|ZR0w0}N3cgVG9FFIcb`m{d+Nrgx^~Cd|YBQE~ zMkBg9C`D|XT$W3P(;a$+2aTR3rhRQ5jnXInlxdZ<7LU-hQ-xLwoEEA0yOXoo01Lx3 znI6$079oY=`a}Ub22aA`U7v2)hf-`!v3a_SN6^HBXy_ocI2E;(%)9InAY}f3cml&c zWx)E8<(g-yL_6UPL$C0l^0cC*$PfwfjyC21^0vWdOZ(b9npO2FmF-6R#Ly^xs;)_B zKBq+20;jb#@W;g(DRuSKyb);a#^mFfMwG)i9FKx?x$kUd=V3*tjEum#E&O3#;6rB? zZ*FKubA{Y{Hjf#--FPP)`gp96TW%F!euc`${m z*dlHI{8wI*YkI~#d8;QqdTbny^GGmv~w02Pidj(o(X2 zP1`E{sZJ^=(^duWar#Vau4?3VK*Cv(wz?JI!>0t{+)~ zXRzi5{*%xf`_ZIR>3MT{&I?>&03aA!JCyi$5{+@DBVO~kocQB$IH8vncHs5%ugOB> zR$+S=@AZ;-_z0FFD%@cfqWQ7?7+dQeM(fP`oGTO8j>}MgW?e=aooWhCT zAwE)lRtTiJwGNTqg{dxY8b&bW$zSr4ZnM*42e;+Xt9(wF94ja7WON>P?~?-h>g<;? zYV}Rt8oXCc=#;w1a?P`Jb#XFe+8VaJmOA3YQiEc}LqU)5k`lcZWKpaKP^=wpNi4e* zte9j)-YRQWFu6#xGEbq@tarI)WrZa*>%Oj834&d-?rWO$rDZki`u0nV8u)-GDPbzm zVifq~l!_NV2W%hX{pd$9L0X&4-z02_UGEN$A0yKOMg<(r^ zuLmW9GhjsG7u(vz{m3Mejd|`oc9b#SeP{RHUC{x^!xIE8!0KX-z$<1ZAZmoTL*6-$ zl!P8&=8Oo*4|7iq8xs#Rorl2_@wkLH9!>Ge1mgYjJp>mExCmB^QTEhu9xaWO z+$ecIl!EFC4nwd6Dk+^bYf?kFbnUqqFbP%K?SRutbKxnoPtwjjk-{THo=63X$y*B5 zJ&pQ(u>vsn9eh-LM_RhJg2CP;rh-e(J~0^cW*@vHn{spgB)o(!S6@peA(k3K_~&##<0Z|fMsDF8-&o;oRrt;h#t;ZD3}3k{W03@Jih$w-2J!(u25+S<)OrrJqh* zXtby^Qx31>X1R(9#OKbM(zXuVI|KY}OD;1CpOK*QEN4mnD21vDy_dtx^vV>woaPVHkeqa|af zax9mn#X*anQgp7cN2+S8BE^eE*|u3*4N5s?g@*Uie8r(F+%~yZKi8ZMJ%&K51;wft z5}@#*(fN|u7pW&=dHW)qY!wa45|Vwc#XH{AGR)KOGOK)A}tQGMVT(rlMeDhTTXJ??TbTTxW2xIYdY~x*8@n|S#`{+)K_r+E&T3KA=djtQ9<*<+|nea&_K6JH$fP;Agx6^DWpG*(wt#s}R z$II!U==vN-o*)TMr6a`VQ7Ap*bd`1jtA%>_Ld6Li^IAg+NXuDH0xT6JT&PUlx2ql> z$TO4V7@%BL1-8LYmL*{lvhy7}h~Z**l<~HwG<4x~v{kp@5T0F1*&qkDz?E;Qr$9Bj zDu7E~CGoln{DoS~$3#ag!6d{rZJa5NCjOZWea%5+Z7?5?dE6D*$67GJQeEJ{%)ndU z`pjVNe>N?m>nKX+#RJR=HaU=EjZcnhO;g;;+>df}f-D!UpyBGy}L79J>Y*R!H5g^h5MtVB~k zVP|N%p-|LTG7zGLR3MDAED;A88g=TWnwhbanCZjQvwKY6q zC`q8?Bg}C*e=3Df3NOtA*cS^-6N+yb2p>P+7PzNFa>Wr-Opp5Q#G~$nGZtc8^GEf- zJK>4pnWxRH6FRa!Zs%kuvQht8Hfak4XTzl<&Ltbhq4dTHXXo$0?vTZww*zB#Q^5`l z-y5+t7gzvR)k86o4e!9H=Y>14_Ud+E3(z9CM%${fgIW0@!I&m@$ z-gTn9RF-Ks+FVH){C+(Ao!@UwyjgVN17QnJjjVZ;NvU#WX{cjK=PNi|m!}cVg)1dU z^2w1wrm~5Q6)tFPa+gvVn&edKqUgTlG!(5O!3v+732?wMbq>S0PiN&=l^$!SjXPQz zaQmmcws_~}l_9%)hQm2ZCN8eAs99eul@xf{7}E1LQWe{-5oLluEj3lhTjKQ6^JiBb z7Pp2>J-zfqlO11dCwo&k9FoJ%dDRshwsW_lGconR&8R1#LPHuSPoh=MT?+1XSgeh} zhO;EFRXu0wDvy%*=~3CrDSQNBT-i>;&C;|5dLmCF*+DPPEqOj-ob=+v7s-0J zydxZJF_OyH78tO48_W`iZVTMEo6}@IF1j{0=iFD|FscgJ7`sh<`w7=XEHf-X- zpgV=C8v`~?dV!2(=JK?RTaE>+7V=$>LB0vWy_Gpr-nFBBDY9Mjd>6rzs zHHdRZ(L$(p>Y7EfR@sLA&}qLltTMY*Q1KtwZkCK)k~L zqH7Q>?hb`NKk@ygS1Xv)kGx0Qbg_bSqaIKSZ8op(Ug`}ye30zMO4JijnN!ajlC{X+ zFvFDmzVLNM~1ImUP>raQ-O>i2*Zh-xFXqFMR>WRlBX#e zau1~xGU1{GiFE){=#naGrJhB0Lu53>&8b*@bU%$+a5oQ%5h>mVdV#cvl zp7LOSwK&z@IuW#6+RG14Nszp7v|+;mA0D`-7jp-rX)HDkPFRv5#W`xA_iaSg&TnrYarVIxjffkiBxGdPAGBCnIiLsJ3p*zeEW$ zj#(Hsb8E11&HbK2*%d)GTD}PxR8#O-z{uHom-BZ-ZKIxmid-LpGJCjB!Dj&jlr5Q^ zF^$l!1CT;j)>nZ6OOFO=L8;*o)^LB|We|~-A>#m96?(}7_0_`051?0vO!SYv-NLTU*Dt zhVa5{7|=sK(ZOJ$lVX-Y06I`;-n|gO*!q4kT!%u6KDJ1?PZ|yG!$cX6ny_561yg@Gy)5+|@AR&Zd=Dr^v`C}5m~4`1A&6H~pc%Kw*t@1GiPrB*`}(}h3*4W{Q0b5g zg%_1`{*qBU?=6%}pI3lQ=^J;kU}eIh9$a0uTCFVzdKAom43EZ@-(XiPh&sS2)YUis zWLIHgYHnA!;LYJdQTDy@Hs64vuYROEW zSAcC*eapyvqkZGpl)hD0Cp6zP#Mc2%QkU*QwCw@*23hMKQGZ^64Xy7OTDxqwF^z_J zAS)b?0=RV)Q*6a}Wq;-7rM0cSnTs&EqQ21<=n5On&ciD_j(gS8`igbuj^>;IEO_K; zZ!d6=i$a7zVn3fmK#KQtad{h2@zy=oT9PTbnT}$CT!3{|H@{j_fwdct`?kFAxCxI8 zP5DLud$yP{8h1^wWqW{uNF}mfsDf6-0W=Idn9lj+Su)x49)Srbd;<^bW;mJ*e7t9g zU|xEjTD--K)Us(;R*KZpQ*y1CbXM&;j~kJ;nG&H_I}+Iw)dOB5mR_i9z-IcwvB=tq+L|-dwDzJ{8|!Lx$SJm2uioe`5Whqon~*u9_v$C zS5!@*+t}k~%mM3n*`9c)zi@nuJf*rM=GQ5Llf+b}U9#X3btIe&Dm?AVD(QY2gJz{t zKBR2NGRR~V0cClu&z2D^C#m|a6Q-aO%Z6Y{lKTWwho_b!pvNIuItFv<<-^OBs{~)h zsx|0|t_)Y3^}B+beD~@o%aWJ9sj*&Ll^So!f{9ay%_(}C4&&-h3cNGxv zU2G{>G(UwpMs&3bOnynw&`CQP!pGhF%D8-$c260-`erlj$W2|dpa-r& zT~ix%u6dVPjhu|2zUD2jzSy(2wJ6?uq5PZ%3KnUwM=(@>f~&VlotIUgq_b znpb_J5c;r;=H1sdFF~+tUOdgCXx^8UfmufLu5tIo=z$-&{tDBA7OlXK$(mT$Sixo3 zLxeBvB7T8I_;~U4IE0&L*So{xH|S3oAy^4%1B-gMlKavl#EQ_z)I44rf&_=akR+I5 z3lW>bTgdL}d2}cXj?HsR+P#uj6omHh1koFakPZB4+__?A1zooWms%n=O<~SD&?5O_ z?)_n-;+DsG7(79=P83J*fg!mwei;q(eSz(Z#a$Y!Ml5>_Nl={~ExI_8zI93V`S7fU zu3qD~hcaSoTgH_lR(foAfxvuCf&*v@c;v4r89^Kz|RJVM`dJ6 zR8k;`u89n{^j=n~_Ha3MNN%4wJ|9ej+*S%MLox(PDb;17f(jbV#e_+1>5H8zrS4p~ z+1V_+#3rinXt8iP1)9lwioIi(DAJd9na|BCDuNODjTB7wJ~EY0mqN?WW`T9?Y=)Ny zj{zrfjL5f!rDZVoC+wnrM4n;qIc+# zbj&SmE0c+bAlM^vBFQNJWA8Ctq>vqI4uj}}!m_1$12<(+@VPukPy4od%%acWYUQ0O z4c9y$VdhnO)mKO^DciMu=9wzU^?~m^d8H~GU&-B2MuX3y9L7}4G>F|L4&(V0yW^ec z`36-Ut{%D4^Q<)jF4TWRG`q}ZjOGUMD*bih8>DrfnUJ|pgsSqet|YDl7ex}&wcwW| zMsP-1QJDL-zSgvFq}GZwHLT`>P2!3$%Q3{xKDF&wa6lRz zDrkYnznXT(3PKrw>~kD^NOxYq;FJ!9AB|4m%sxy#In3LK;RLXdJ@{VZKCFx~Z@3%E zXf&}EVly<^huvHCKCBqI=sB$-(NKTiO{#nAN6`{9Nk0jq2T{_KAo9IiVt6Tu(}QF0 z`uZ9!dEF~t6Ffm5W$Q>@K0~&SB-KW$2y#A)*6ilI9+A2yAN(_Kh!oTl@G!4nx9YFG ziNk|oCix8_>gfi6N^Pa)0=uO*@a>9|O6IMHxTNUH)|c?1dUfZuIP;)e#c5t}1w-i; z3J&4{$UBmqzIFg>chh>fr~`pMk@<0;ku@)=28IWA8pvGE6@#Y z2_%w-bf&@AG{YsjSi|`kSysYH=*J-fAVw4aEHn&dz%ww zj9l$-4nfj)!k7sqKbuol*7Gc_AdM?Y=M&ohFXE? z@0uhFmrjZ{GBRpgol!FNPuZpdtE<_jK6DL-m+@NZ5w6Cq$!sZ2Xd@gYv(?mJ?0o1J zJO5?s&8K+sc6$#?GD{Jj_ee}CFSQPOy(GHkA_ZYkGV%3g;(Q8S^AKhWVu2>3F;A3j z%e`xQA?jNQ7ZAs?bV`20r{aWA3KSX0Lk{UWUJr64cN{UtJV`LZB%KVHjV9N85+?yt zd>oCJphNP*l^Eyx^qq)|MvdeR*8bE_TvL{4(k2MX=dbl@+s%eiDZO&S;`uu~{_;T1 z9);Om1v@-^Z_;L6U}0NXN5zOXyu+ie7as1kSH8nrge1WwS7vwK7KTgvQTN40_gV|c zZD~T+iKFXr>rrK$ego2#)WHwQ->ysEFNII?jTtV$kEU(*?76z~xLFS75h$h1m4%`X zDxD|MliS8=ixbY}&?Wih$g)()A|r%8=dO347i&G&3n{&}?-TxY?NAbK{8? z^O{*E7}wT7#jqt#bv=J}#h*b&imD#cu}?x zGeGrt(yT6_L&F+}U7}guB^kMmUA(ElijywzTR$t4r_k)-X!hc=b`N8bHYpwiw_FuO z6=Xi9Ex{FesLKw%pd1ST#O$qi2R!WAZWQd;_6 zr#QdOYdIfh`EzoC%WNTVV7xZ<5zc>RN?IffH4>Og%&VxRq3M&*i9Zg!hYVj_5vXqS)8nv0k23=UgSlF`gxFdfMc7 zJ&r2Mk?ES7v`L|x-|8mC(Pls)#Wh!$-sz7n!-;n?nt?qzVwPiTug7k=mQKi#P|~P2 z`xu~H)0OGx!|pZaoC9o?f^fi+r1ddtY-@ z!I~T-EJwX--tQuogIs3F9G*Q!TZ?6VK83D%xRVV#aHQ2zN)(>(dkQ%VClY3{%apb` zR`D)5JN7vO;CVMQ-IJtnsTl{|U|`sJO`=hHQ{T>af!&ujQzZqdCpmS$xbh;;r_ePI z*=my5B;-BFb1owdrftfug~qO<56Uy~ttBe6HzqDyX7B!JP+jiN*6hyhDqJ zXtN1H>1qT$KO4oD5z>eyEqqGJeC%C_r(O=>QB4BI`K>Jcn_ZJYX3?_l8-UN z-pDvpFfWmmYM@|1^oZdUPh6&K%_IEWp_;r^-Z`ZA!KE_jBnUG%^MYtifC41fx`IkFa=%dvv3TVTIHu9`%qW zxz@1HgNE1d^>lWu5U1=Xc3TDhg=KE~FzXuuk#w^bGm)jp)kc5ysMTIOk-S^twHCPq zg9&aakvwrk2#f1yS78RDX{-sz+EC=2N2E*XqRZN_$RtSNP%|4#+>OY19+ zM(K@{$;r|H)7r^4UTbhZlOf1Chl=bY?yR+1c-WS%i??>^9>_7Uc}$m{2{{)JR)9iNB$A5eVt)hW#*zTS($BgDtQbs+6v+ogxuEQ6uhc`;MjiRdfaU z1+hO?x5M%Z@{vn=QvN`}Fnbtzl1HZqm^wT*l3`$!@~S9MHobkZ>+77qLdqSI%dZiLkE)ooXKiPy${8yQDL*&517It^y4|}75=LZ2)h)mDs#r~P9_MqvP0hC8k zW9|3M3DjmQAbEW|c@qPibS!<=BT4UL**E!q?Zi zf=X6MNH=uBR*xb`W+ee>xs`*$T9H|V2e>B3wO#RoQaXbhMN&^s$nBN%M7|GDdr#&d z5k0}7ijWhWvb5ExDi~AYkPcJ4=(O|Nbi%6Aam#f~=PPZPzU(cq_Jw?J^pN7$vFm<- z|E5FIBo1po4k3ZXJt0dGU6}@c-^csyI0>@!27->g{R12q<@BWiJZXQV{Y@iTkPS&5 zZmC38Xxs}=W@p~%#2@p{|DkK$=3Xm5pYU~3fMG;QOiUKw@4KK>Bg z2-mdY@GP9b7}9I8w0pt%WHcP@iAUD(AX>aL@$rIK=iwFJO1o-piXYq%-U$$1$sB$L zB-pbY(6;yLR%>f|J&nVG7xYKLlRJ2yJdOsT7lT+l+}7G;e~m{VtAjv~;Mh{{&q^6ufx zm5xJk&8hS7x&=aVAX}ji*ALYnfh$K4WD{dM%-1>5*G4ZOUb4=d^fIK@keMgAnS7|E^rkjhnC7| zd}*DY_nb-&PQD$)L|NFmLjBDdr}~&m`WUjNd4%9JG<%Dp>`Uiu9%!~sH0BIK<$(u# zOjZbo0m%e=@zn*+9G+JfHj)D?P-voLdD0ditUTG}3SlipZ;R^dQEQj2Wz&crhY!c2 z0Cv4aPYdMRVwL4@j}~L1RY{OOArXa&% zo-rw3kyqd3LpRF2B7awZMV=toqX%HrDX+-iw{@~UIU)nYl%oX=O`9BnCr)Uz&Ccaz zn!N{Bi%{Pqq2A9E>H`RM$2Q)Tg&Mt?i4drjLQW@z?7!>#^M=f(e^=SB#V++4h;^ zA@MAHwyJc_u!{!5Wn;djKnZ!uwiVZG&6l5z_F3Z#t~23*m&ds8^i#FOMDk
    z1xfkOf|taT`#5-}eS=SM>$udwA#ikIms!!#g7OfzjueQb6}d1*(xq^a+uz65@hF{J z3S;>{AR-^%lK{p{XZWDyz^!9mY~xgEm8n*08*!n?Y20+Lp1( z&2;ee*zIa55J}f{tSfk-RYyoix{Y#L%c7peZPkzBw4ussNK)3exh@s?UuGp@@Cy#} zp}WP?Mn-R&y@Uln0eoz^>&>dgJF_mT+uyu(vHbg<8P+zjF0!G{eI8RM!TJ=XUIo&u zZ7q@Xh_20zuMx6=sK(L{QtD926=ZovQmx`lO@L3KA^09on{#HfSxh{~2BD&@ zB%gLod{$aL-#N|MjgicQhh>qQn`gRtuD8YDR(y`ogrmrvh$%FYLFDT*gJ{S{}Bu4x0499;I@DJP3 zNN%b;O4lH{v<#SXm*d1Q@#5Qh5IXoEg2;qE;FcwAyl8ql^MgMF@4k2>7SvoZ#Cj`X5R9OpIqyF z5$%ip4&X=m$1H3l7ry$Uyfcw$E9JdXEQj!bQt0dg`)ZbJvGQvZ4fbJ?rM3K12x~$x ziQxPP5!QoPCCUGK5X3}w*;M~VSJJTZrW4m2h#gq~^(1~@kG|xqurlf2*P{5=dG0&2c2r{|VEL$PI^}sct#Y62$q34`$WbLFT#Mhd!&|sl@9lYU;fjVY3dzMMP zR}3yQwy+fnQv&MXtfJM(7!^zFqo&6v-@Kv)D>tQ_&MmE~nGQ~`3dSxmrN|IRWDoa4 zXOqI!iHc@#g36Y)O-I#a%CiDY4J0HpvB^*{;zvOwbDEY6cQZ%cS$}kb+!sCMy_jyO zB>^kBIic%wAG?W*=!j&!>3RFdkB_{Eo$j&cZ6sGGk+q;lO|OSu+(+UOG*teiN*gAa z{i9>=$V(;jcN5`F)+j#h@{mQ{(@2LIoF|PJgf7*`@&?l49 zf(9PwA4J2mOAndYkl$qpZV-@MD+Tbv}SfJaIs0KFmOPNx1O z9E>i)OcU?;VHfH6`X_$yWMe!HXT8zK8LvN1SZ@X!-m88;f|!JzfqxcKsNl3oHHP`uR@>)fWx+eyEA<>8VZr= z4EJXfq)>=i1qnAC&IWWDnFOvMolN}6wKoJ+gn0~YIzVJ%Ru<4ed}Gyu(V(EB_{wF3 zO#5hvE7nmDnIb5gA3eq;$G!M72LTZ(0#W=q7dMR{lJ9~M(dfiGoehHx%t;I_$YWUt zJyHc5H{#}G4nbScHapPbDGkZx22@;SQISxX9a56i!-Og|CPETfoae#b0O4CK#T4u>RG zU94o3mcdB1i6@(}d*w8ZI8mJdO9$*6J_5vI{{&hEq(HAg9pm3m!pSh~Z*Sqnyoi(x zz6Do4WQUC<{vy2SBc>KsAPnPyvdAV~5*jI4he6{SDgI?Ca&iP%0m z^2QS+Kz0+>@rOw2 z0i%fwNE9p4Ur2cb^Mn+gR!kQNcu*K8jI`T+=kR{}2!`rw-Y~pWC?+Y2s?8X`i}XoM zH9;E2Q)d1kOEJw@0tgS&qUt7<@9G={Rk$3eYs^LIuq=jNuiy75#jqb>YQYeQf+^EW zEFaA1l=>Y!fx~?;h`7SyVue}Wy2W*4bSji1%1j-~Zci1d1l-eNX#(kf#g9?liU|#0)+ENo=Mj_N z97819hE<(f1^!@qhAkJiqgY}Svch3c4mPPAu8AZ)6*wTSKM3{4M;Z%1(n}5%3k9I> zB$H)?EZ&xRvNP$y;*s>9#vzG1ZLy`|S)5<|>LTe365>+x^)_bN2oq3JQcdICI>nxl z%LN(6i`x@&+Ekf-6i*Bb9r}_o;ETbLyYVU@S$3hoANxTRUsLKr0dMAm$nElC$cRC4E0~fjxrj$Z98SFH{az03k6DqN(VA=6ZvZu3=wi7TcR*i-V z3OZTH53%8ZpOo~$;@sBqICz@P(u9sEb&|CA5MzGR#kt zSSfZ1uWmoHa0t2QYG3mWS(&|2jtZy2^uwvQwX^F5Cj_nn`=vKT-;T|5Tvt>5Ei#cr z1_t)Tw;Z?%wol?%Am;`dR!B)1kVX}9#EmUEQ^?#xku^`a&C$ZsawDx3pHnd9u`^I@ z_+%SWf$%IF+ITEwk}>>+tW`jf>eQDzk6!!)Y~g@g!ev~>Ku-rl z)b9#%pXdZ3cndp9vfgm%S5>`p(z99_5xA20csK}VJzDl<+&5uy1Sk55p4rM*`*7F5 zSOSjXaaPU6aE`rufqTyCnghC;n)1=wOo38ZSna`FCc_@Wwe82z&V+eYfS*J3VYan>bSy{KJBVg)!s9Uk59<+yG(NKvKIPDCFw6APKTN1o&NFL(q zG|Q7@VZSL8Seo+;KI9YUZwWFyK?Ie;SAs=n3XfhD{zrRgk+P{sPyQoG#5FU8%a?P_kEXGQ! zpp-|7Y+&?~C}@5PR(f&D&i+qPN!l)aE)3YgnX%jE(`$?<1UgX>wv(|4BnW{PwY2k( z#m5&aE7`PEQQ+7dGG$byZMro$o#BC6MN6E{klO-(R}aQeyj@Fe@e*G=?K(A+pwx=O z8>1h%6E2=MP3~wSFcFp|VnlsBLv)gJ{Ek>Lpr|~W z!rX9TBnHWpr9DyeXV!$Wq39Kye|CAgSvs+Y1D0aO@R*|Hy81cTA<%hQpf?MS+4Nx1=Kh}UM}Q?!3nIzg~un+}74 zi2oxR%sr?Cqy=#pp~UDiGafiD)mz^m(G%O=Y2QEN;YEa1!6S@RF1E6htlyO+V>gLa zy-;`5I+lvY0Y7|ZEQY95IM9%+r?C%10vvA>;zV?2I`)1m_eZ_5)ShU=7~rI?aYObC9mU!|XOO}q+c z1^lg5;V|$ZV>mxd4r*a1D^YQD_{5e0yNk1uM5dZp%5^2tQO;{lr(p +#include +#include +#include "plcLicence.h" +#include "utils.h" +#include + +#define FILEBUFFER 300 +#define TWO_HOURSE_SECONDS 7200 + +void signalHandler(int signum) { + if (signum == SIGSEGV) { + std::cerr << "Caught segmentation fault (SIGSEGV)" << std::endl; + // You can perform some recovery actions here if needed + } +} + +/// @brief hlavní funkce +/// @param argc +/// @param argv parametry pro generování licence +/// 1-cid, 2-csd, 3-stanice 4-rozvadec 5-typ licence +/// @return +int main(int argc, char *argv[]) +{ + +std::signal(SIGSEGV, signalHandler); + +// a segmentation fault +//int* ptr = nullptr; +//*ptr = 42; // This will trigger a segmentation fault + + + //map arguments = mapArguments(argc, argv); + map argumentsString = getArguments(argc, argv); + + // std::cout << "Number of arguments: " << argc << std::endl; + // if (argc > 1) + // { + // for (int i = 1; i < argc; ++i) + // { + // arguments.insert(make_pair(to_string(i), argv[i])); + // } + // } + // else + // cerr << "Invalid arguments count"; + + // for (auto it = argumentsString.begin(); it != argumentsString.end(); ++it) + // { + // std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl; + // } + + // generatePause(); + // return 1; + + // for (int i = 0; i < argc; ++i) + // { + // std::cout << "Argument " << i << ": " << argv[i] << std::endl; + // cout << "size: " << strlen(argv[i]); + // } + + // generatePause(); + // return 1; + + // if (argc >= 5) + // { + // cid = argv[1]; + // csd = argv[2]; + // stationName = argv[3]; + // switchName = argv[4]; + // licenceType = argv[5]; + // } + // else + // { + // cout << "Par count error" << endl; + // } + + // if (argc <= 1) + // { + // cid = "9f544930303030300000000b47015423"; + // csd = "400e00325b5900003a0d7f800a40008d"; + // stationName = "ceskatrebova"; + // switchName = "RO1"; + // licenceType = "2"; + // binaryType = "2"; + // } + // else + // { + // cid = argv[1]; + // csd = argv[2]; + // } + + // cid = "9f544930303030300000000b47015423"; + // csd = "400e00325b5900003a0d7f800a40008d"; + // stationName = "ceskatrebova"; + // switchName = "RO1"; + // licenceType = "2"; + // binaryType = "2"; + + // cout << "binaryType: " << binaryType; + // cout << "CID:" << argumentsString["-cid"]; + + const int cidLength = argumentsString["-cid"].length(); + char cidArg[cidLength] = {}; + getCharsFromString(argumentsString["-cid"], cidArg); + + const int csdLength = argumentsString["-csd"].length(); + char csdArg[csdLength] = {}; + getCharsFromString(argumentsString["-csd"], csdArg); + + + //char cidTest = getCharArray(argumentsString["-cid"]); + + //PlcLicence plcWriteLicence = PlcLicence(argumentsString); + //PlcLicence plcWriteLicence = PlcLicence(cidArg, csdArg, stationName, switchName, licenceType, binaryType, nullptr); + PlcLicence plcWriteLicence = PlcLicence(cidArg, csdArg, argumentsString["-outputType"], argumentsString["-configFileName"]); + // PlcLicence plcWriteLicence = PlcLicence(arguments["-cid"], arguments["-csd"], stationName, switchName, licenceType, binaryType, nullptr); + if (plcWriteLicence.CreateLicence() == false) + { + cerr << "Licence creation failed"; + } + + return EXIT_SUCCESS; +} diff --git a/src/CreateLicence.d b/src/CreateLicence.d new file mode 100644 index 0000000..b115cc8 --- /dev/null +++ b/src/CreateLicence.d @@ -0,0 +1,2 @@ +src/CreateLicence.o: src/CreateLicence.cpp include/plcLicence.h \ + include/utils.h diff --git a/src/CreateLicence.o b/src/CreateLicence.o new file mode 100644 index 0000000000000000000000000000000000000000..d5cb11b40dbafb787479ca9dbfa886bcb9df6bd9 GIT binary patch literal 304024 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 literal 0 HcmV?d00001 diff --git a/src/PlcLicence.cpp b/src/PlcLicence.cpp new file mode 100644 index 0000000..09ccea4 --- /dev/null +++ b/src/PlcLicence.cpp @@ -0,0 +1,943 @@ +#include +#include +#include "plcLicence.h" +#include "utils.h" + +const std::string cEzLic_p78ou3_sdinfofilepath = "/sys/block/mmcblk0/device/"; +const std::string cEzLic_p78ou3_licencfilepath_f21 = "/mnt/mmc/ez_sys/licence/"; +const std::string cEzLic_p78ou3_licencfilepath_f17 = "/home/admin/ez/licence/"; +const string cEzLic_p78ou3_licencfilepath_f10 = "/root/ez_sys/licence/"; +const WORD cEzLic_p78ou3_maxDataToFile = 10000; // velikost datoveho bufferu pro ulozeni dat licence + +const BYTE cEzLic_p78ou3_licMaxCount = 100; +const DWORD cEzLic_p78ou3_CheckLicNumber_ERR = 0xFFFFFFFF; // 16#FFFFFFFF; // chybna identifikace licence +const DWORD cEzLic_p78ou3_CheckLicNumber_EOV1 = 3781234965; // cislo pro overeni licence EOV, OSV verze 1 +const BYTE cEzLic_p78ou3_CheckLicNumberId_ERR = 0; // id licence pro neidentifikovanou licenci +const BYTE cEzLic_p78ou3_CheckLicNumberId_EOV1 = 1; // id licence pro EOV, OSV verze 1 +const BYTE cEzLic_p78ou3_MaxCheckLicNumberId = cEzLic_p78ou3_CheckLicNumberId_EOV1; // pocet identifikatoru licenci +const DWORD cEzLic_p78ou3_CheckLicNumber[] = {cEzLic_p78ou3_CheckLicNumber_ERR, cEzLic_p78ou3_CheckLicNumber_EOV1}; +const WORD cEzLic_p78ou3_LicPrefixType_ELC1 = 1; // prefix typ1 = pouze zasifrovani dat +const WORD cEzLic_p78ou3_HeaderType_10 = 10; // hlavicka kriptovane casti verze 1.0 +const WORD cEzLic_p78ou3_DataType_10 = 10; // data licence verze 1.0 +const WORD cEzLic_p78ou3_SubType_10_10 = 0x0A0A; // subtype - verze hlavicky + verze data -> cEzLic_p78ou3_HeaderType_XX * 256 + cEzLic_p78ou3_DataType_XX +// ID aplikace +const WORD cEzLic_p78ou3_IDType_DDTS = 1; // aplikace DDTS +const WORD cEzLic_p78ou3_IDType_EOVOSV = 2; // aplikace EOV-OSV +const WORD cEzLic_p78ou3_IDType_DRT = 3; // aplikace DRT +std::string cEzLic_p78ou3_IDTypeStrData[] = {"neznamo", "DDTS", "EOV-OSV", "DRT"}; +const BYTE cnibblescount = 32; +std::string cSDMonthStr[] = {"-", "I.", "II.", "III.", "IV.", "V.", "VI.", "VII.", "VIII.", "IX.", "X.", "XI.", "XII.", "-", "-", "-"}; +BYTE cHexNibble_to_No[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 0, 0, 0, 0, 0, 0, 0, + 10, 11, 12, 13, 14, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 10, 11, 12, 13, 14, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +std::string cEzLic_p78ou3_CipherAES = "aes-256-cbc"; // konfigurace kriptovaciho algoritmu + + + +PlcLicence::PlcLicence() +{ +} + +/// @brief process config file +/// @param dataFileName +void PlcLicence::processConfigFile(string &dataFileName) +{ + std::string content; + std::ifstream inputFile(dataFileName); + if (inputFile.is_open()) + { + content.assign((std::istreambuf_iterator(inputFile)), (std::istreambuf_iterator())); + inputFile.close(); + //std::cout << "File content:\n" << content << std::endl; + } + else + { + std::cerr << "Unable to open the file." << std::endl; + } + + string station = getXmlContentFromString(content, "station"); + string distributor = getXmlContentFromString(content, "distributor"); + + // cout << station; + // cout << distributor; + + this->stationName = station; + this->distributor = distributor; + + // char stationCh[station.length()] = {}; + // getCharsFromString(station, stationCh); + + // char distributorCh[distributor.length()] = {}; + // getCharsFromString(distributor, distributorCh); + + // this->stationName = stationCh; + // this->distributor = distributorCh; + + // cout << this->stationName << "\n"; + // cout << this->distributor << "\n"; + + // this->stationName = "ceskatrebova"; + // this->distributor = "RO1"; + + // cout << this->stationName << "\n"; + // cout << this->distributor << "\n"; + +} + +PlcLicence::PlcLicence(map &arguments) +{ + if (arguments.count("-cid") > 0) + { + const int cidLength = arguments["-cid"].length(); + cout << "\n"; + cout << "argument: " << arguments["-cid"] << endl; + cout << "argument delka: " << arguments["-cid"].length() << endl; + char cidArg[cidLength] = {}; + getCharsFromString1(arguments["-cid"], cidArg); + this->cid = cidArg; + cout << "\n" + << "CID 1:" << cid << " delka: " << strlen(cid) << "\n"; + } + + // this->cid = "9f544930303030300000000b47015423"; + // this->csd = "400e00325b5900003a0d7f800a40008d"; + + cout << "\n" + << "CID 2:" + << " delka: " << strlen(cid) << "\n"; + + // if (arguments.count("-csd") > 0) + // { + // const int csdLength = arguments["-csd"].length(); + // char csdArg[csdLength] = {}; + // getCharsFromString(arguments["-csd"], csdArg); + // this->csd = csdArg; + // } + + this->licType = 2; + + if (arguments.count("-outputType") > 0) + { + if (arguments["-outputType"] == "base64") + this->binaryGeneration = BinaryGenerationType::Base64Cout; + else + this->binaryGeneration = BinaryGenerationType::File; + } + else + this->binaryGeneration = BinaryGenerationType::Base64Cout; + +} + +PlcLicence::PlcLicence(string cid, string csd, char *stationName, char *switchName, char *licenceType, char *binaryType, const char *dataFileName) +{ + this->cidString = cid; + this->csdString = csd; + this->stationName = stationName; + this->distributor = switchName; + this->dataFileName = dataFileName; + this->licType = 2; + if (binaryType != nullptr) + { + if (binaryType[0] == '1') + this->binaryGeneration = BinaryGenerationType::Base64Cout; + else + this->binaryGeneration = BinaryGenerationType::File; + } + else + this->binaryGeneration = BinaryGenerationType::Base64Cout; + + + + +} + +void PlcLicence::getSDData() +{ + int length = strlen(cid); // Get the length of the char array + for (int i = 0; i < length; i++) + this->sdData.CID_nibble[i] = (BYTE)cid[i]; + + for (int i = 0; i < cnibblescount / 2; i++) + { + this->sdData.CID[i] = cHexNibble_to_No[this->sdData.CID_nibble[2 * i]] << 4 | cHexNibble_to_No[this->sdData.CID_nibble[2 * i + 1]]; + } + + this->sdData.manufacturerID = this->sdData.CID[0]; + this->sdData.oemID[0] = this->sdData.CID[1]; + this->sdData.oemID[1] = this->sdData.CID[2]; + this->sdData.name[0] = this->sdData.CID[3]; + this->sdData.name[1] = this->sdData.CID[4]; + this->sdData.name[2] = this->sdData.CID[5]; + this->sdData.name[3] = this->sdData.CID[6]; + this->sdData.name[4] = this->sdData.CID[7]; + this->sdData.productRevision_hw = cHexNibble_to_No[this->sdData.CID[16]]; + this->sdData.productRevision_sw = cHexNibble_to_No[this->sdData.CID[17]]; + + if (this->sdData.productRevision_sw < 10) + this->sdData.productRevision = (float)this->sdData.productRevision_hw + ((float)this->sdData.productRevision_sw * 0.1); + else + this->sdData.productRevision = (float)this->sdData.productRevision_hw + ((float)this->sdData.productRevision_sw * 0.01); + + this->sdData.serialNumber = this->sdData.CID[9] << 24 | this->sdData.CID[10] << 16 | this->sdData.CID[11] << 8 | this->sdData.CID[12]; + this->sdData.manufacturerDate_year = cHexNibble_to_No[this->sdData.CID_nibble[27]] * 10 + cHexNibble_to_No[this->sdData.CID_nibble[28]] + 2000; + this->sdData.manufacturerDate_month = cHexNibble_to_No[this->sdData.CID_nibble[29]]; + string date = cSDMonthStr[this->sdData.manufacturerDate_month] + std::to_string(this->sdData.manufacturerDate_year); + + for (int i = 0; i < date.length(); i++) + this->sdData.manufacturerDate[i] = date[i]; + + // CSD + length = strlen(csd); // Get the length of the char array + for (int i = 0; i < length; i++) + this->sdData.CSD_nibble[i] = (BYTE)csd[i]; + + for (int i = 0; i < cnibblescount / 2; i++) + { + // + this->sdData.CSD[i] = cHexNibble_to_No[this->sdData.CSD_nibble[2 * i]] << 4 | cHexNibble_to_No[this->sdData.CSD_nibble[2 * i + 1]]; + } + + if (this->sdData.CSD_nibble[0] == 0x34) + { + this->sdData.cardSize = this->sdData.CSD[7] << 16 | this->sdData.CSD[8] << 8 | this->sdData.CSD[9]; + this->sdData.cardGSize = (this->sdData.cardSize + 1) / 2048; + + if (this->sdData.cardSize > 17200) // TODO result.cardSize + { + } + } + + BYTE sdCrc = 0; + for (int i = 0; i <= 14; i++) + { + BYTE sdChar = this->sdData.CID[i]; + for (int j = 0; j <= 7; j++) + { + sdCrc = sdCrc << 1; + if ((sdChar ^ sdCrc) & 0x80) + sdCrc = sdCrc ^ 0x09; + sdChar = sdChar << 1; + } + sdCrc = sdCrc & 0x7F; + } + + this->sdData.CRCOK = ((sdCrc << 1) | 1) == this->sdData.CID[15]; +} + + + +PlcLicence::PlcLicence(char *cid, char *csd, string binaryType, string dataFileName) +{ + this->cid = cid; + this->csd = csd; + + this->stationName = ""; + this->distributor = ""; + this->licType = 2; + + processConfigFile(dataFileName); + + if (binaryType == "base64") + this->binaryGeneration = BinaryGenerationType::Base64Cout; + else + this->binaryGeneration = BinaryGenerationType::File; +} + +PlcLicence::PlcLicence(char *cid, char *csd, char *stationName, char *switchName, char *licenceType, char *binaryType, const char *dataFileName) +{ + this->cid = cid; + this->csd = csd; + this->stationName = stationName; + this->distributor = switchName; + this->dataFileName = dataFileName; + this->licType = 2; + if (binaryType != nullptr) + { + if (binaryType[0] == '1') + this->binaryGeneration = BinaryGenerationType::Base64Cout; + else + this->binaryGeneration = BinaryGenerationType::File; + } + else + this->binaryGeneration = BinaryGenerationType::Base64Cout; +} + + + +void PlcLicence::initCrypto() +{ + if (this->licType == cEzLic_p78ou3_IDType_EOVOSV) + { + this->cryptData.aesInitVector[0] = this->sdData.CID[10]; + this->cryptData.aesInitVector[1] = this->sdData.CID[12]; + this->cryptData.aesInitVector[2] = this->sdData.CID[11]; + this->cryptData.aesInitVector[3] = this->sdData.CID[9]; + this->cryptData.aesInitVector[4] = this->sdData.CID_nibble[22] - 15; + this->cryptData.aesInitVector[5] = this->sdData.CID_nibble[24] - 15; + this->cryptData.aesInitVector[6] = this->sdData.CID_nibble[25] - 15; + this->cryptData.aesInitVector[7] = this->sdData.CID_nibble[21] - 15; + memcpy(&this->cryptData.aesInitVector[8], &this->cryptData.aesInitVector[0], 8); + + this->cryptData.aesKey[0] = this->sdData.CID[12]; + this->cryptData.aesKey[1] = this->sdData.CID_nibble[23] - 15; + this->cryptData.aesKey[2] = this->sdData.CID_nibble[25] - 15; + this->cryptData.aesKey[3] = this->sdData.CID[11]; + this->cryptData.aesKey[4] = this->sdData.CID[9]; + this->cryptData.aesKey[5] = this->sdData.CID_nibble[21] - 15; + this->cryptData.aesKey[6] = 97 + this->sdData.CID[9] % 25; + this->cryptData.aesKey[7] = this->sdData.CID_nibble[22] - 15; + memcpy(&this->cryptData.aesKey[8], &this->cryptData.aesKey[0], 8); + memcpy(&this->cryptData.aesKey[16], &this->cryptData.aesKey[6], 8); + memcpy(&this->cryptData.aesKey[24], &this->cryptData.aesKey[12], 8); + } +} + +unsigned char *PlcLicence::getLicenceContent() +{ + getSDData(); + initCrypto(); + + // promenne pro praci se soubory a adresari + DWORD sdFileHandle; + DWORD sdDirHandle; + string dirFileName; + string dirFilePath; //: STRING; + string dirInfo; //: DIRECTORY_INFO; - NAJIT + LicenceDataMainELC dataMainToFileELC1; //: tEz_LicenceDataMainELC1; hlavicka urcena pro zapis do souboru - typ ELC1 + LicenceData dataToFile; // tEz_LicenceData_10_10;// data urcena pro sifrovani a zapis do soubotu - verze => hlavicka: 1.0, data: 1.0 + + // pomocne promenne + BYTE dataWriteToFile[cEzLic_p78ou3_maxDataToFile]; // OF BYTE; data zapisovana do souboru + DWORD retDataCount; //: DWORD; // pocty zapisovanych a ctenych dat - navratova hodnota jednotlivych funkci + string licencePostfix; //: STRING; pomocna promenna pro kontrolu postfixu + string mainLicDescription; //: STRING(79); globalni pojmenovani licence v nesifrovane casti licence + + UINT freeDataSize; //: UINT; velikost volne citelnych dat v souboru licenci + UINT cryptDataSize; //: UINT; velikost volne cryptovanych dat v souboru licenci + UINT fullDataSize; //: UINT; celkova velikost souboru licenci + + USINT generation = 2; //: USINT; verze SW pro licence + + PlcData plcData; // = GetPlcData(dataFileName);// "licData.xml"); + plcData.licenceName = "Licence"; + plcData.licenceType = "1"; + plcData.station = stationName; // "Test"; + plcData.distributor = distributor; //"RO1"; + + LicenceSourceData licSourceData; + + if (plcData.licenceType == "EOV" || plcData.licenceType == to_string((int)LicenceType::LicenceEov)) + { + licSourceData.licType = 0x1AA2; // 6818 ... proč ? + licSourceData.licPostfix = 0; + getCharsFromString(plcData.station, licSourceData.licDescription1); + getCharsFromString(plcData.station, dataToFile.header.licDescription1); + getCharsFromString(plcData.distributor, licSourceData.licDescription2); + getCharsFromString(plcData.distributor, dataToFile.header.licDescription2); + } + + LicenceIdent licIdent; + licIdent.licPrefixType = licSourceData.licType >> 12; + licIdent.licHeaderType = licSourceData.licType >> 8 & 0x000F; + licIdent.licDataType = licSourceData.licType >> 4 & 0x000F; + licIdent.licSubType = licIdent.licHeaderType << 8 | licIdent.licHeaderType; + licIdent.licIDType = licSourceData.licType & 0x000F; + + if (licSourceData.licPostfix > 9) + licSourceData.licPostfix = 0; + licencePostfix = to_string(licSourceData.licPostfix); + + string licenseFileName = getLicenceName(0); + licSourceData.licPostfixIdent = right(licencePostfix, 1); + + int sizeOfData = sizeof(dataToFile); + + if (licIdent.licHeaderType == cEzLic_p78ou3_HeaderType_10) + { + if (licIdent.licDataType == cEzLic_p78ou3_DataType_10) + { + dataToFile.id.version = 10; + dataToFile.id.cardSize = this->sdData.cardSize; + + switch (licIdent.licIDType) + { + case cEzLic_p78ou3_IDType_DDTS: + mainLicDescription = "ddts "; + break; + case cEzLic_p78ou3_IDType_EOVOSV: + mainLicDescription = "eov, osv "; + break; + default: + mainLicDescription = "neznama app "; + } + + mainLicDescription += licSourceData.licPostfixIdent; + mainLicDescription += " => "; + + dataToFile.header.licVersion = 10; + dataToFile.header.licType = licIdent.licIDType; + dataToFile.header.licDate = getLicDate(); + mainLicDescription += dataToFile.header.licDescription1; + mainLicDescription += " ["; + mainLicDescription += dataToFile.header.licDescription2; + mainLicDescription += "]"; + + if (licIdent.licIDType == cEzLic_p78ou3_IDType_EOVOSV) + { + if (generation == 1) // stará verze + { + dataToFile.header.licCount = 1; + dataToFile.items[0].licCount = 65535; + dataToFile.items[0].protoId = cEzLic_p78ou3_CheckLicNumberId_EOV1; + dataToFile.items[0].data1 = cEzLic_p78ou3_CheckLicNumber_EOV1; + } + else + { + dataToFile.header.licCount = 1; + dataToFile.items[1].licCount = 65535; + dataToFile.items[1].protoId = cEzLic_p78ou3_CheckLicNumberId_EOV1; + dataToFile.items[1].data1 = cEzLic_p78ou3_CheckLicNumber_EOV1; + } + } + + unsigned char encrypted[10000] = {}; + const int s = sizeof(dataToFile); + unsigned char byteArray[s] = {}; + memcpy(byteArray, &dataToFile, sizeof(dataToFile)); + + dataToFile.crc = calculateCRC16(byteArray, s - sizeof(dataToFile.crc)); // 47535 | 884:38382 + + memcpy(byteArray, &dataToFile, sizeof(dataToFile)); + + int finalEncryptedLength = encrypt(byteArray, sizeof(dataToFile), this->cryptData.aesKey, this->cryptData.aesInitVector, encrypted); + + if (licIdent.licPrefixType == cEzLic_p78ou3_LicPrefixType_ELC1) // typ1 = pouze zasifrovani dat + { + freeDataSize = sizeof(dataMainToFileELC1); // melo by byt 92 + + if (1) // EzLic_p78ou3_CryptoData.aesRetVal > 0 crypto + { + dataMainToFileELC1.prefix = 0x31434C45; + getCharsFromString(mainLicDescription, dataMainToFileELC1.licHeader.description); + dataMainToFileELC1.licHeader.sizeData = finalEncryptedLength; // sizeof(dataToFile); // 884; + dataMainToFileELC1.licHeader.licType = licIdent.licIDType; + dataMainToFileELC1.licHeader.licSubType = licIdent.licHeaderType << 8 | licIdent.licDataType; + } + } + + const int dataMainLength = sizeof(dataMainToFileELC1); + const int dataToFileLength = sizeof(dataToFile); + const int dataEncryptedLength = finalEncryptedLength; + const int totalLength = dataMainLength + dataToFileLength; + const int totalEncryptedLength = dataMainLength + finalEncryptedLength; + + unsigned char bdataMainToFileELC1[dataMainLength] = {}; + memcpy(bdataMainToFileELC1, &dataMainToFileELC1, dataMainLength); + + unsigned char bdataToFile[dataToFileLength] = {}; + memcpy(bdataToFile, &dataToFile, dataToFileLength); + + unsigned char totalEncryptedArray[totalEncryptedLength] = {}; + + for (int i = 0; i < dataMainLength; i++) + totalEncryptedArray[i] = bdataMainToFileELC1[i]; + for (int i = 0; i < finalEncryptedLength; i++) + totalEncryptedArray[i + dataMainLength] = encrypted[i]; + + return totalEncryptedArray; + } + } + + return nullptr; +} + +string PlcLicence::getLicenceName(BYTE licPostfix) +{ + string result = ""; + char prefixChar = 97; + + if (licPostfix > 9) // chyba + { + } + + if (licType == LicenceType::LicenceOther) + { + result = "ezlic_"; + result += prefixChar + (this->sdData.CID[12] % 25); // 14 OK "v" + result += prefixChar + (this->sdData.CID[10] % 25); // 15 OK "a" + result += prefixChar + (this->sdData.CID_nibble[22] % 25); // 16 OK "x" + result += prefixChar + ((this->sdData.CID_nibble[23] * 2) % 25); // 17 OK "v" + result += prefixChar + (this->sdData.CID_nibble[24] % 25); // 18 not ok ... má být c = 99 + result += prefixChar + ((this->sdData.CID_nibble[25] * 3) % 25); // 19 not ok a 112 + result += prefixChar + (this->sdData.CID[9] % 25); // 20 OK + result += prefixChar + (this->sdData.CID[11] % 25); // 21 OK + result += prefixChar + (this->sdData.CID[2] % 25); // 22 OK + result += prefixChar + (this->sdData.CID[1] % 25); // 23 OK + result += prefixChar + (this->sdData.CID[3] % 25); // 24 OK + result += ".lic"; + } + else + { + result = "ezlic_eovosv" + to_string(licPostfix) + "_"; + result += prefixChar + (this->sdData.CID[12] % 25); // 14 OK "v" + result += prefixChar + (this->sdData.CID[10] % 25); // 15 OK "a" + result += prefixChar + (this->sdData.CID_nibble[22] % 25); // 16 OK "x" + result += prefixChar + ((this->sdData.CID_nibble[23] * 2) % 25); // 17 OK "v" + result += prefixChar + (this->sdData.CID_nibble[24] % 25); // 18 not ok ... má být c = 99 + result += prefixChar + ((this->sdData.CID_nibble[25] * 3) % 25); // 19 not ok a 112 + result += prefixChar + (this->sdData.CID[9] % 25); // 20 OK + result += prefixChar + (this->sdData.CID[11] % 25); // 21 OK + result += prefixChar + (this->sdData.CID[2] % 25); // 22 OK + result += prefixChar + (this->sdData.CID[1] % 25); // 23 OK + result += prefixChar + (this->sdData.CID[3] % 25); // 24 OK + result += ".lic"; + } + return result; +} + +struct PlcData GetPlcData(const char *dataFileName) +{ + PlcData result; + result.plcType = "WAGO"; + result.licenceName = "Licence 1"; + result.licenceType = ""; + result.licenceVersion = "1"; + result.station = ""; + result.distributor = ""; + + FILE *fp; + + fp = fopen("licData.xml", "r"); // read mode + fseek(fp, 0, SEEK_END); // seek to end of file + int fileSize = ftell(fp); // get current file pointer + fseek(fp, 0, SEEK_SET); + + if (fp == NULL) + { + perror("Error while opening the file.\n"); + exit(EXIT_FAILURE); + } + + int count = 0; + + cout << "fileSize:" << fileSize << "\n"; + + char fileContent[3000]; + + for (int i = 0; i < fileSize; i++) + { + char c = fgetc(fp); + fileContent[i] = c; + cout << c; + // printf("%c", c);; + count++; + } + + fclose(fp); + + std::string fileContentStr(fileContent, sizeof(fileContent)); + + string typeContentString = getXmlContentFromString(fileContentStr, "type"); + string nameContentString = getXmlContentFromString(fileContentStr, "name"); + string stationContentString = getXmlContentFromString(fileContentStr, "station"); + string switchContentString = getXmlContentFromString(fileContentStr, "switchboard"); + + cout << typeContentString << "\n"; + cout << nameContentString << "\n"; + cout << stationContentString << "\n"; + cout << switchContentString << "\n"; + + if (typeContentString != "") + result.licenceType = typeContentString; + if (nameContentString != "") + result.licenceName = nameContentString; + if (stationContentString != "") + result.station = stationContentString; + if (switchContentString != "") + result.distributor = switchContentString; + return result; +} + +bool PlcLicence::CreateLicence() +{ + getSDData(); + initCrypto(); + + // promenne pro praci se soubory a adresari + DWORD sdFileHandle; + DWORD sdDirHandle; + string dirFileName; + string dirFilePath; + string dirInfo; + LicenceDataMainELC dataMainToFileELC1; //: tEz_LicenceDataMainELC1; hlavicka urcena pro zapis do souboru - typ ELC1 + LicenceData dataToFile; // tEz_LicenceData_10_10; // data urcena pro sifrovani a zapis do soubotu - verze => hlavicka: 1.0, data: 1.0 + + // pomocne promenne + BYTE dataWriteToFile[cEzLic_p78ou3_maxDataToFile]; // OF BYTE; data zapisovana do souboru + DWORD retDataCount; //: DWORD; pocty zapisovanych a ctenych dat - navratova hodnota jednotlivych funkci + string licencePostfix; //: STRING; pomocna promenna pro kontrolu postfixu + string mainLicDescription; //: STRING(79); globalni pojmenovani licence v nesifrovane casti licence + + UINT freeDataSize; //: UINT; velikost volne citelnych dat v souboru licenci + UINT cryptDataSize; //: UINT; velikost volne cryptovanych dat v souboru licenci + UINT fullDataSize; //: UINT; celkova velikost souboru licenci + + USINT generation = 2; //: USINT; verze SW pro licence + + PlcData plcData; + ; // = GetPlcData(dataFileName);// "licData.xml"); + plcData.licenceName = "Licence"; + plcData.licenceType = "1"; + plcData.station = stationName; // "Test"; + plcData.distributor = distributor; //"RO1"; + + LicenceSourceData licSourceData; + + if (plcData.licenceType == "EOV" || plcData.licenceType == to_string((int)LicenceType::LicenceEov)) + { + licSourceData.licType = 0x1AA2; // 6818 ... proč ? + licSourceData.licPostfix = 0; + getCharsFromString(plcData.station, licSourceData.licDescription1); + getCharsFromString(plcData.station, dataToFile.header.licDescription1); + getCharsFromString(plcData.distributor, licSourceData.licDescription2); + getCharsFromString(plcData.distributor, dataToFile.header.licDescription2); + } + + LicenceIdent licIdent; + licIdent.licPrefixType = licSourceData.licType >> 12; + licIdent.licHeaderType = licSourceData.licType >> 8 & 0x000F; + licIdent.licDataType = licSourceData.licType >> 4 & 0x000F; + licIdent.licSubType = licIdent.licHeaderType << 8 | licIdent.licHeaderType; + licIdent.licIDType = licSourceData.licType & 0x000F; + + if (licSourceData.licPostfix > 9) + licSourceData.licPostfix = 0; + licencePostfix = to_string(licSourceData.licPostfix); + + string licenseFileName = getLicenceName(0); + licSourceData.licPostfixIdent = right(licencePostfix, 1); + + int sizeOfData = sizeof(dataToFile); + + if (licIdent.licHeaderType == cEzLic_p78ou3_HeaderType_10) + { + if (licIdent.licDataType == cEzLic_p78ou3_DataType_10) + { + dataToFile.id.version = 10; + dataToFile.id.cardSize = this->sdData.cardSize; + + switch (licIdent.licIDType) + { + case cEzLic_p78ou3_IDType_DDTS: + mainLicDescription = "ddts "; + break; + case cEzLic_p78ou3_IDType_EOVOSV: + mainLicDescription = "eov, osv "; + break; + default: + mainLicDescription = "neznama app "; + } + + mainLicDescription += licSourceData.licPostfixIdent; + mainLicDescription += " => "; + + dataToFile.header.licVersion = 10; + dataToFile.header.licType = licIdent.licIDType; + dataToFile.header.licDate = getLicDate(); + mainLicDescription += dataToFile.header.licDescription1; + mainLicDescription += " ["; + mainLicDescription += dataToFile.header.licDescription2; + mainLicDescription += "]"; + + if (licIdent.licIDType == cEzLic_p78ou3_IDType_EOVOSV) + { + if (generation == 1) // stará verze + { + dataToFile.header.licCount = 1; + dataToFile.items[0].licCount = 65535; + dataToFile.items[0].protoId = cEzLic_p78ou3_CheckLicNumberId_EOV1; + dataToFile.items[0].data1 = cEzLic_p78ou3_CheckLicNumber_EOV1; + } + else + { + dataToFile.header.licCount = 1; + dataToFile.items[1].licCount = 65535; + dataToFile.items[1].protoId = cEzLic_p78ou3_CheckLicNumberId_EOV1; + dataToFile.items[1].data1 = cEzLic_p78ou3_CheckLicNumber_EOV1; + } + } + + unsigned char encrypted[10000] = {}; + const int s = sizeof(dataToFile); + unsigned char byteArray[s] = {}; + memcpy(byteArray, &dataToFile, sizeof(dataToFile)); + + dataToFile.crc = calculateCRC16(byteArray, s - sizeof(dataToFile.crc)); // 47535 | 884:38382 + + memcpy(byteArray, &dataToFile, sizeof(dataToFile)); + + int finalEncryptedLength = encrypt(byteArray, sizeof(dataToFile), this->cryptData.aesKey, this->cryptData.aesInitVector, encrypted); + + if (licIdent.licPrefixType == cEzLic_p78ou3_LicPrefixType_ELC1) // typ1 = pouze zasifrovani dat + { + freeDataSize = sizeof(dataMainToFileELC1); // melo by byt 92 + + if (1) // EzLic_p78ou3_CryptoData.aesRetVal > 0 crypto + { + dataMainToFileELC1.prefix = 0x31434C45; + getCharsFromString(mainLicDescription, dataMainToFileELC1.licHeader.description); + dataMainToFileELC1.licHeader.sizeData = finalEncryptedLength; // sizeof(dataToFile); // 884; + dataMainToFileELC1.licHeader.licType = licIdent.licIDType; + dataMainToFileELC1.licHeader.licSubType = licIdent.licHeaderType << 8 | licIdent.licDataType; + } + } + + const int dataMainLength = sizeof(dataMainToFileELC1); + const int dataToFileLength = sizeof(dataToFile); + const int dataEncryptedLength = finalEncryptedLength; + const int totalLength = dataMainLength + dataToFileLength; + const int totalEncryptedLength = dataMainLength + finalEncryptedLength; + + unsigned char bdataMainToFileELC1[dataMainLength] = {}; + memcpy(bdataMainToFileELC1, &dataMainToFileELC1, dataMainLength); + + unsigned char bdataToFile[dataToFileLength] = {}; + memcpy(bdataToFile, &dataToFile, dataToFileLength); + unsigned char totalEncryptedArray[totalEncryptedLength] = {}; + + for (int i = 0; i < dataMainLength; i++) + totalEncryptedArray[i] = bdataMainToFileELC1[i]; + for (int i = 0; i < finalEncryptedLength; i++) + totalEncryptedArray[i + dataMainLength] = encrypted[i]; + + // char chFileName[licenseFileName.length()]; + char licFileNameToSave[licenseFileName.length()] = {}; + getCharsFromString(licenseFileName, licFileNameToSave); + + int totalFileSize = sizeof(totalEncryptedArray); + + if (binaryGeneration == BinaryGenerationType::File) + { + FILE *fileLicence = fopen(licFileNameToSave, "wb"); + if (fileLicence) + { + size_t r1 = fwrite(&totalEncryptedArray, sizeof(totalEncryptedArray), 1, fileLicence); + //printf("License binary saved.\n"); + fclose(fileLicence); + return true; + } + } + else + { + //cout << "data:text/plain;base64,"; + cout << "data:application/octet-stream;base64,"; + + char encryptedChars[totalFileSize]; + + for (int i = 0; i < totalFileSize; i++) + encryptedChars[i] = static_cast(totalEncryptedArray[i]); + + string strToBase = convertToString(encryptedChars, totalFileSize); + string base64Coded = base64_encode_ai(strToBase); + cout << base64Coded << endl; + + // string decodedBase64 = base64_decode_ai(base64Coded); + // std::ofstream outputFile("outputLicence.txt", std::ios::out | std::ios::binary); + // if (outputFile.is_open()) + // { + // outputFile << decodedBase64; + // outputFile.close(); + // std::cout << "File written successfully." << std::endl; + // } + // else { std::cerr << "Unable to open the file." << std::endl; } + + return true; + + // //file testing + // std::string filename = "source.txt "; + // std::string content; + // std::ifstream inputFile(filename); + // if (inputFile.is_open()) + // { + // content.assign((std::istreambuf_iterator(inputFile)), (std::istreambuf_iterator())); + // inputFile.close(); + // std::cout << "File content:\n" << content << std::endl; + // } + // else + // { + // std::cerr << "Unable to open the file." << std::endl; + // } + + // std::ofstream outputFile("output.txt"); + + // if (outputFile.is_open()) + // { + // string codedBase = base64_decode_ai(content); + // outputFile << "Velikost souboru orig souboru: " << codedBase.length() << "\n" << codedBase; + // outputFile.close(); + // std::cout << "File written successfully." << std::endl; + // } + // else { std::cerr << "Unable to open the file." << std::endl; } + } + } + } + + return false; +} + +bool PlcLicence::ReadLicence(const char *dataFileName, WORD licType, BYTE licPostfix, char *cid, char *csd) +{ + FILE *licenceFile; + char ch; + long lSize; + size_t result; + + licenceFile = fopen(dataFileName, "rb"); // read mode + fseek(licenceFile, 0, SEEK_END); // seek to end of file + const int size = ftell(licenceFile); // get current file pointer + fseek(licenceFile, 0, SEEK_SET); + + if (licenceFile == NULL) + { + perror("Error while opening the file.\n"); + exit(EXIT_FAILURE); + } + + int count = 0; + + unsigned char licenceContent[size]; + + for (int i = 0; i < size; i++) + { + ch = fgetc(licenceFile); + licenceContent[i] = ch; + count++; + } + + fclose(licenceFile); + + this->cid = cid; + this->csd = csd; + + getSDData(); + + string licFileName = getLicenceName(licPostfix); + + LicenceDataMainELC licenceHeader; + LicenceIdent licIdent; + LicenceData licEncryptedData; + + memset(&licenceHeader, 0, sizeof(LicenceDataMainELC)); + memcpy(&licenceHeader, licenceContent, sizeof(LicenceDataMainELC)); + + const int sizeOfEncryptedData = size - sizeof(LicenceDataMainELC); + unsigned char encryptedData[sizeOfEncryptedData] = {}; + for (int i = 0; i < sizeOfEncryptedData; i++) + encryptedData[i] = licenceContent[i + sizeof(LicenceDataMainELC)]; + + // original jsou testy na velikost přečteného file, zatím TODO + + BYTE prefixType = (int)licenceContent[3] - 0x30; + if (prefixType == PrefixType::ELC1) + { + if (licenceHeader.licHeader.sizeData > 0) + { + licIdent.licIDType = licenceHeader.licHeader.licType; + licIdent.licSubType = licenceHeader.licHeader.licSubType; + + if (licenceHeader.licHeader.licSubType == cEzLic_p78ou3_SubType_10_10) // zatim natvrdo + { + initCrypto(); + // CryptData cryptData = initCrypto(sdData, licIdent.licIDType); + unsigned char decrypted[2000] = {}; + int decrypted_len = decrypt(encryptedData, sizeof(encryptedData), cryptData.aesKey, cryptData.aesInitVector, decrypted); + + if (sizeof(licEncryptedData) != decrypted_len) + { + operationErrors = "License size mismatch"; + return false; + } + else + { + memset(&licEncryptedData, 0, sizeof(licEncryptedData)); + memcpy(&licEncryptedData, decrypted, sizeof(licEncryptedData)); + + if (licEncryptedData.id.version == cEzLic_p78ou3_HeaderType_10 && licEncryptedData.header.licVersion == cEzLic_p78ou3_HeaderType_10) + { + if (licEncryptedData.header.licType == cEzLic_p78ou3_IDType_EOVOSV) + { + if (licEncryptedData.id.cardSize != sdData.cardSize) + { + operationErrors = "Size card mismatch"; + return false; + } + + if (licEncryptedData.header.licCount > 0) + { + + if (licType == LicenceType::LicenceOther) + { + // TODO stará + } + else + { + // maxLic := MIN(EzLlic_5rq4_DataFromFile_10_10.header.licCount, cEzLic_p78ou3_licMaxCount); ? + int maxLic = min(licEncryptedData.header.licCount, cEzLic_p78ou3_licMaxCount); + for (int i = 1; i < maxLic; i++) + { + if (licEncryptedData.items[i].protoId > 0 || licEncryptedData.items[i].licCount > 0 || licEncryptedData.items[i].data1 > 0) + { + // EzLlic_5rq4_CheckData.LicId[EzLlic_5rq4_DataFromFile_10_10.items[licId].protoId] := licId; + } + else + { + operationErrors = "Licence items mismatch"; + return false; + } + } + } + } + else + { + operationErrors = "Size card info mismatch"; + return false; + } + } + } + else + { + operationErrors = "Licence mismatch"; + return false; + } + } + } + } + else + { + operationErrors = "Licence error"; + return false; + } + } + else + { + operationErrors = "Licence error"; + return false; + } + + cout << "Licence readed: " << size << "\n"; + return true; +} diff --git a/src/PlcLicence.d b/src/PlcLicence.d new file mode 100644 index 0000000..20d5738 --- /dev/null +++ b/src/PlcLicence.d @@ -0,0 +1 @@ +src/PlcLicence.o: src/PlcLicence.cpp include/plcLicence.h include/utils.h diff --git a/src/PlcLicence.o b/src/PlcLicence.o new file mode 100644 index 0000000000000000000000000000000000000000..39bd07fb12536d9985d7dae7108a97049275d9b5 GIT binary patch literal 444432 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 a`J`RHkw4rhJePjz(Ki11rhK?*{r?B>V_7@^ literal 0 HcmV?d00001 diff --git a/src/licData.xml b/src/licData.xml new file mode 100644 index 0000000..7cdac51 --- /dev/null +++ b/src/licData.xml @@ -0,0 +1,8 @@ + + + WAGO + EOV_OSV + Licence pro EOV_OSV + ceskatrebova + RO1 + \ No newline at end of file diff --git a/src/notes.txt b/src/notes.txt new file mode 100644 index 0000000..cac018a --- /dev/null +++ b/src/notes.txt @@ -0,0 +1,493 @@ + + + WAGO + EOV_OSV + Licence pro EOV_OSV + ceskatrebova + RO1 + + +map getArguments(int argc, char *argv[]) +{ + const char splitChar='='; + map result; + if (argc <= 1) return result; + + for (int i = 1; i < argc; ++i) + { + bool isArgName = true; + int argLength = strlen(argv[i]); + string argName; + string argValue; + char* argValueChar; + + for (int j=0;j hlavicka: 1.0, data: 1.0 *) + + (* pomocne promenne *) + dataWiteToFile: ARRAY [0..cEzLic_p78ou3_maxDataToFile] OF BYTE; (* data zapisovana do souboru *) + retDataCount: DWORD; (* pocty zapisovanych a ctenych dat - navratova hodnota jednotlivych funkci *) + licencePostfix: STRING; (* pomocna promenna pro kontrolu postfixu *) + mainLicDescription: STRING(79); (* globalni pojmenovani licence v nesifrovane casti licence *) + + freeDataSize: UINT; (* velikost volne citelnych dat v souboru licenci *) + cryptDataSize: UINT; (* velikost volne cryptovanych dat v souboru licenci *) + fullDataSize: UINT; (* celkova velikost souboru licenci *) + + generation: USINT; (* verze SW pro licence *) + + (* testCrypt: ARRAY [0..3] OF BYTE := 116,101,115,116; (* test *) *) + testCrypt: ARRAY [0..4] OF BYTE := 107,117,114,118,97; + encTest: ARRAY [0..100] OF BYTE; (* data zapisovana do souboru *) + testByte: BYTE; + + +END_VAR + + +(* +funkce: + - nacte SD kartu a dekoduje informace CID, CSD + - vygeneruje jmena a hesla + - vytvori soubor licence +*) + +fEz_CreateLicenceFile.isDone := FALSE; + +(* nacteni CID a CSD informaci SD karty - pro vsechny verze licencnich souboru STEJNE *) +fEz_CreateLicenceFile := fEz_ReadSD( cEzLic_p78ou3_sdinfofilepath ); +IF fEz_CreateLicenceFile.retCode > 0 THEN + RETURN; +END_IF; + +(* nastaveni dat licence *) +EZlic_LicenceIdent.licPrefixType := SHR( EZlic_sourceLicenceData.licType, 12 ); +EZlic_LicenceIdent.licHeaderType := ( SHR( EZlic_sourceLicenceData.licType, 8 ) AND 16#000F ); +EZlic_LicenceIdent.licDataType := ( SHR( EZlic_sourceLicenceData.licType, 4 ) AND 16#000F ); +EZlic_LicenceIdent.licSubType := SHL(EZlic_LicenceIdent.licHeaderType, 8) OR EZlic_LicenceIdent.licDataType; +EZlic_LicenceIdent.licIDType := EZlic_sourceLicenceData.licType AND 16#000F; + +(* kontrola a nastaveni postfixu *) +IF EZlic_sourceLicenceData.licPostfix > 9 THEN + EZlic_sourceLicenceData.licPostfix := 0; +END_IF; +licencePostfix := BYTE_TO_STRING( EZlic_sourceLicenceData.licPostfix ); +EZlic_sourceLicenceData.licPostfixIdent := RIGHT( licencePostfix, 1 ); + +(* vygenerovani jmena licencniho souboru *) +fEz_CreateLicenceFile := fEz_GetLicenceFileName( EZlic_LicenceIdent.licIDType, EZlic_sourceLicenceData.licPostfix, EZlic_licenceFilePath, generation); +IF fEz_CreateLicenceFile.retCode > 0 THEN + RETURN; +END_IF; + +(* nastaveni dat licence *) +CASE EZlic_LicenceIdent.licHeaderType OF + cEzLic_p78ou3_HeaderType_10: (* hlavicka licence verze 1.0 *) + CASE EZlic_LicenceIdent.licDataType OF + cEzLic_p78ou3_DataType_10: (* verze licencnich dat 1.0 *) + (* hlavicka licence *) + dataToFile_10_10.id.version := 10; + dataToFile_10_10.id.cardSize := EzLic_p78ou3_SD_Data.cardSize; + CASE EZlic_LicenceIdent.licIDType OF + cEzLic_p78ou3_IDType_DDTS: (* ddts *) + mainLicDescription := 'ddts '; + cEzLic_p78ou3_IDType_EOVOSV: (* eov, osv *) + mainLicDescription := 'eov, osv '; + ELSE + mainLicDescription := 'neznama app '; + END_CASE; + mainLicDescription := CONCAT( mainLicDescription, EZlic_sourceLicenceData.licPostfixIdent ); + mainLicDescription := CONCAT( mainLicDescription, ' => ' ); + (* data licence *) + dataToFile_10_10.header.licVersion := 10; + dataToFile_10_10.header.licType := WORD_TO_BYTE( EZlic_LicenceIdent.licIDType ); + dataToFile_10_10.header.licDate := DT_TO_DATE( SysRtcGetTime(TRUE) ); + dataToFile_10_10.header.licDescription1 := EZlic_sourceLicenceData.licDescription1; + dataToFile_10_10.header.licDescription2 := EZlic_sourceLicenceData.licDescription2; + mainLicDescription := CONCAT( mainLicDescription, dataToFile_10_10.header.licDescription1 ); + mainLicDescription := CONCAT( mainLicDescription, ' [' ); + mainLicDescription := CONCAT( mainLicDescription, dataToFile_10_10.header.licDescription2 ); + mainLicDescription := CONCAT( mainLicDescription, ']' ); + CASE EZlic_LicenceIdent.licIDType OF + cEzLic_p78ou3_IDType_EOVOSV: (* eov, osv *) + IF generation = 1 THEN + dataToFile_10_10.header.licCount := 1; + dataToFile_10_10.items[0].licCount := 65535; + dataToFile_10_10.items[0].protoId := cEzLic_p78ou3_CheckLicNumberId_EOV1; + dataToFile_10_10.items[0].data1 := cEzLic_p78ou3_CheckLicNumber_EOV1; + ELSE + dataToFile_10_10.header.licCount := 1; + dataToFile_10_10.items[1].licCount := 65535; + dataToFile_10_10.items[1].protoId := cEzLic_p78ou3_CheckLicNumberId_EOV1; + dataToFile_10_10.items[1].data1 := cEzLic_p78ou3_CheckLicNumber_EOV1; + END_IF; + END_CASE; + (* parametry pro sifrovani a zapis do souboru *) + + (* - dekoment + EzLic_p78ou3_CryptoData.cryptDataAddress := ADR( dataToFile_10_10 ); + EzLic_p78ou3_CryptoData.cryptDataSize := SIZEOF( dataToFile_10_10 ); + *) + + EzLic_p78ou3_CryptoData.cryptDataAddress := ADR( testCrypt ); + EzLic_p78ou3_CryptoData.cryptDataSize := SIZEOF( testCrypt ); + + + (*nastaveni id souboru a vypocet CRC pro hlavicky a licencnich dat *) + dataToFile_10_10.id.version := 10; + dataToFile_10_10.crc := fEz_crc16( ADR( dataToFile_10_10 ), SIZEOF( dataToFile_10_10 ) - SIZEOF( dataToFile_10_10.crc ) ); + dataToFile_10_10.crc := 1000; + ELSE + (* neznama verze licencnich dat *) + fEz_CreateLicenceFile := fEz_SetRetData(cEzLic_p78ou3_error_data, 1); + RETURN; + END_CASE; + ELSE + (* neznama verze hlavicky kriptovanych dat *) + fEz_CreateLicenceFile := fEz_SetRetData(cEzLic_p78ou3_error_header, 1); + RETURN; +END_CASE; + +(* inicializace Ckryptovacich algoritmu, Vektoru a klice *) +fEz_CreateLicenceFile := fEz_InitCrypto(EZlic_LicenceIdent.licIDType); +IF fEz_CreateLicenceFile.retCode > 0 THEN + RETURN; +END_IF; + +(* zpracovani dat licencniho souboru [sifrovani, podpis, komprese, ...] *) +CASE EZlic_LicenceIdent.licPrefixType OF + cEzLic_p78ou3_LicPrefixType_ELC1: (* typ1 = pouze zasifrovani dat *) + freeDataSize := SIZEOF( dataMainToFileELC1 ); + +EzLic_p78ou3_CryptoData.aesRetVal := WCRYPTO_fAesEncrypt( + pabPlain := EzLic_p78ou3_CryptoData.cryptDataAddress, + diPlainLen := EzLic_p78ou3_CryptoData.cryptDataSize, + sCipher := cEzLic_p78ou3_CipherAES, + pIv := ADR(EzLic_p78ou3_CryptoData.aesInitVector), + diIvLen := SIZEOF(EzLic_p78ou3_CryptoData.aesInitVector), + pKey := ADR(EzLic_p78ou3_CryptoData.aesKey), + diKeyLen := SIZEOF(EzLic_p78ou3_CryptoData.aesKey), + (* + pabCiphered := ADR(encTest), + diCipheredLen := SIZEOF(encTest) + *) + pabCiphered := ADR( dataWiteToFile ) + freeDataSize, + diCipheredLen := SIZEOF( dataWiteToFile ) - freeDataSize + ); + + (* EzLic_p78ou3_CryptoData.aesRetVal := SIZEOF(dataToFile_10_10); *) + + IF EzLic_p78ou3_CryptoData.aesRetVal > 0 THEN + SysMemSet( ADR( dataMainToFileELC1.licHeader.description ), 0, SIZEOF( dataMainToFileELC1.licHeader.description ) ); + dataMainToFileELC1.prefix := 16#31434C45; + SysMemCpy( ADR( dataMainToFileELC1.licHeader.description ), ADR( mainLicDescription ), LEN( mainLicDescription ) ); + dataMainToFileELC1.licHeader.sizeData := EzLic_p78ou3_CryptoData.aesRetVal; + dataMainToFileELC1.licHeader.licType := WORD_TO_BYTE( EZlic_LicenceIdent.licIDType ); + dataMainToFileELC1.licHeader.licSubType := SHL( EZlic_LicenceIdent.licHeaderType, 8 ) OR EZlic_LicenceIdent.licDataType; + SysMemCpy(ADR( dataWiteToFile ), ADR( dataMainToFileELC1 ), freeDataSize ); + (* SysMemCpy(ADR(dataWiteToFile) + freeDataSize, ADR(encTest), SIZEOF(encTest)); *) + SysMemCpy(ADR(dataWiteToFile) + freeDataSize, ADR( dataToFile_10_10), SIZEOF( dataToFile_10_10)); + cryptDataSize := DINT_TO_UINT( EzLic_p78ou3_CryptoData.aesRetVal ); + ELSE + (* chyba pri sifrovani *) + fEz_CreateLicenceFile := fEz_SetRetData(cEzLic_p78ou3_error_crypto, EzLic_p78ou3_CryptoData.aesRetVal); + RETURN; + END_IF; + ELSE + (* neznamy prefix licencniho souboru *) + fEz_CreateLicenceFile := fEz_SetRetData(cEzLic_p78ou3_error_prefix, 1); + RETURN; +END_CASE; + +IF EZlic_sourceLicenceData.enInit THEN + (* smazani vsech souboru v adresari licenci - pro vsechny verze licencnich souboru STEJNE *) + sdDirHandle := SysDirOpen( EzLic_p78ou3_licencfilepath ); + WHILE SysDirRead(sdDirHandle, dirFileName, ADR( dirInfo ) ) > 0 DO + IF NOT dirInfo.bDirectory THEN + dirFilePath := CONCAT( EzLic_p78ou3_licencfilepath, dirFileName ); + SysFileDelete( dirFilePath ); + END_IF; + END_WHILE; +ELSE + (* smazani pouze aktualini licence *) + SysFileDelete( EZlic_licenceFilePath ); +END_IF; + +(* zapsani souboru licence na SD kartu - pro vsechny verze licencnich souboru STEJNE *) +fullDataSize := freeDataSize + cryptDataSize; +sdFileHandle := SysFileOpen( EZlic_licenceFilePath, 'w'); +IF sdFileHandle > 0 THEN + retDataCount := SysFileWrite( sdfileHandle, ADR( dataWiteToFile ), fullDataSize ); + SysFileClose( sdFileHandle ); + IF retDataCount <> fullDataSize THEN + (* chyba pri zapisu licence *) + fEz_CreateLicenceFile := fEz_SetRetData(cEzLic_p78ou3_error_write, 0); + RETURN; + END_IF; +END_IF; + +(* korektne vygenerovany soubor licenci *) +fEz_CreateLicenceFile := fEz_SetRetData(cEzLic_p78ou3_error_no, 0); +fEz_CreateLicenceFile.isDone := TRUE; + + + +---------------------------------------------- funkcni -------------------------------------- +(* +funkce: + - nacte SD kartu a dekoduje informace CID, CSD + - vygeneruje jmena a hesla + - vytvori soubor licence +*) + +fEz_CreateLicenceFile.isDone := FALSE; + +(* nacteni CID a CSD informaci SD karty - pro vsechny verze licencnich souboru STEJNE *) +fEz_CreateLicenceFile := fEz_ReadSD( cEzLic_p78ou3_sdinfofilepath ); +IF fEz_CreateLicenceFile.retCode > 0 THEN + RETURN; +END_IF; + +(* nastaveni dat licence *) +EZlic_LicenceIdent.licPrefixType := SHR( EZlic_sourceLicenceData.licType, 12 ); +EZlic_LicenceIdent.licHeaderType := ( SHR( EZlic_sourceLicenceData.licType, 8 ) AND 16#000F ); +EZlic_LicenceIdent.licDataType := ( SHR( EZlic_sourceLicenceData.licType, 4 ) AND 16#000F ); +EZlic_LicenceIdent.licSubType := SHL(EZlic_LicenceIdent.licHeaderType, 8) OR EZlic_LicenceIdent.licDataType; +EZlic_LicenceIdent.licIDType := EZlic_sourceLicenceData.licType AND 16#000F; + +(* kontrola a nastaveni postfixu *) +IF EZlic_sourceLicenceData.licPostfix > 9 THEN + EZlic_sourceLicenceData.licPostfix := 0; +END_IF; +licencePostfix := BYTE_TO_STRING( EZlic_sourceLicenceData.licPostfix ); +EZlic_sourceLicenceData.licPostfixIdent := RIGHT( licencePostfix, 1 ); + +(* vygenerovani jmena licencniho souboru *) +fEz_CreateLicenceFile := fEz_GetLicenceFileName( EZlic_LicenceIdent.licIDType, EZlic_sourceLicenceData.licPostfix, EZlic_licenceFilePath, generation); +IF fEz_CreateLicenceFile.retCode > 0 THEN + RETURN; +END_IF; + +(* nastaveni dat licence *) +CASE EZlic_LicenceIdent.licHeaderType OF + cEzLic_p78ou3_HeaderType_10: (* hlavicka licence verze 1.0 *) + CASE EZlic_LicenceIdent.licDataType OF + cEzLic_p78ou3_DataType_10: (* verze licencnich dat 1.0 *) + (* hlavicka licence *) + dataToFile_10_10.id.version := 10; + dataToFile_10_10.id.cardSize := EzLic_p78ou3_SD_Data.cardSize; + CASE EZlic_LicenceIdent.licIDType OF + cEzLic_p78ou3_IDType_DDTS: (* ddts *) + mainLicDescription := 'ddts '; + cEzLic_p78ou3_IDType_EOVOSV: (* eov, osv *) + mainLicDescription := 'eov, osv '; + ELSE + mainLicDescription := 'neznama app '; + END_CASE; + mainLicDescription := CONCAT( mainLicDescription, EZlic_sourceLicenceData.licPostfixIdent ); + mainLicDescription := CONCAT( mainLicDescription, ' => ' ); + (* data licence *) + dataToFile_10_10.header.licVersion := 10; + dataToFile_10_10.header.licType := WORD_TO_BYTE( EZlic_LicenceIdent.licIDType ); + dataToFile_10_10.header.licDate := DT_TO_DATE( SysRtcGetTime(TRUE) ); + dataToFile_10_10.header.licDescription1 := EZlic_sourceLicenceData.licDescription1; + dataToFile_10_10.header.licDescription2 := EZlic_sourceLicenceData.licDescription2; + mainLicDescription := CONCAT( mainLicDescription, dataToFile_10_10.header.licDescription1 ); + mainLicDescription := CONCAT( mainLicDescription, ' [' ); + mainLicDescription := CONCAT( mainLicDescription, dataToFile_10_10.header.licDescription2 ); + mainLicDescription := CONCAT( mainLicDescription, ']' ); + CASE EZlic_LicenceIdent.licIDType OF + cEzLic_p78ou3_IDType_EOVOSV: (* eov, osv *) + IF generation = 1 THEN + dataToFile_10_10.header.licCount := 1; + dataToFile_10_10.items[0].licCount := 65535; + dataToFile_10_10.items[0].protoId := cEzLic_p78ou3_CheckLicNumberId_EOV1; + dataToFile_10_10.items[0].data1 := cEzLic_p78ou3_CheckLicNumber_EOV1; + ELSE + dataToFile_10_10.header.licCount := 1; + dataToFile_10_10.items[1].licCount := 65535; + dataToFile_10_10.items[1].protoId := cEzLic_p78ou3_CheckLicNumberId_EOV1; + dataToFile_10_10.items[1].data1 := cEzLic_p78ou3_CheckLicNumber_EOV1; + END_IF; + END_CASE; + (* parametry pro sifrovani a zapis do souboru *) + EzLic_p78ou3_CryptoData.cryptDataAddress := ADR( dataToFile_10_10 ); + EzLic_p78ou3_CryptoData.cryptDataSize := SIZEOF( dataToFile_10_10 ); + (*nastaveni id souboru a vypocet CRC pro hlavicky a licencnich dat *) + dataToFile_10_10.id.version := 10; + dataToFile_10_10.crc := fEz_crc16( ADR( dataToFile_10_10 ), SIZEOF( dataToFile_10_10 ) - SIZEOF( dataToFile_10_10.crc ) ); + ELSE + (* neznama verze licencnich dat *) + fEz_CreateLicenceFile := fEz_SetRetData(cEzLic_p78ou3_error_data, 1); + RETURN; + END_CASE; + ELSE + (* neznama verze hlavicky kriptovanych dat *) + fEz_CreateLicenceFile := fEz_SetRetData(cEzLic_p78ou3_error_header, 1); + RETURN; +END_CASE; + +(* inicializace Ckryptovacich algoritmu, Vektoru a klice *) +fEz_CreateLicenceFile := fEz_InitCrypto(EZlic_LicenceIdent.licIDType); +IF fEz_CreateLicenceFile.retCode > 0 THEN + RETURN; +END_IF; + +(* zpracovani dat licencniho souboru [sifrovani, podpis, komprese, ...] *) +CASE EZlic_LicenceIdent.licPrefixType OF + cEzLic_p78ou3_LicPrefixType_ELC1: (* typ1 = pouze zasifrovani dat *) + freeDataSize := SIZEOF( dataMainToFileELC1 ); + EzLic_p78ou3_CryptoData.aesRetVal := WCRYPTO_fAesEncrypt( + pabPlain := EzLic_p78ou3_CryptoData.cryptDataAddress, + diPlainLen := EzLic_p78ou3_CryptoData.cryptDataSize, + sCipher := cEzLic_p78ou3_CipherAES, + pIv := ADR(EzLic_p78ou3_CryptoData.aesInitVector), + diIvLen := SIZEOF(EzLic_p78ou3_CryptoData.aesInitVector), + pKey := ADR(EzLic_p78ou3_CryptoData.aesKey), + diKeyLen := SIZEOF(EzLic_p78ou3_CryptoData.aesKey), + pabCiphered := ADR( dataWiteToFile ) + freeDataSize, + diCipheredLen := SIZEOF( dataWiteToFile ) - freeDataSize ); + + IF EzLic_p78ou3_CryptoData.aesRetVal > 0 THEN + SysMemSet( ADR( dataMainToFileELC1.licHeader.description ), 0, SIZEOF( dataMainToFileELC1.licHeader.description ) ); + dataMainToFileELC1.prefix := 16#31434C45; + SysMemCpy( ADR( dataMainToFileELC1.licHeader.description ), ADR( mainLicDescription ), LEN( mainLicDescription ) ); + dataMainToFileELC1.licHeader.sizeData := EzLic_p78ou3_CryptoData.aesRetVal; + dataMainToFileELC1.licHeader.licType := WORD_TO_BYTE( EZlic_LicenceIdent.licIDType ); + dataMainToFileELC1.licHeader.licSubType := SHL( EZlic_LicenceIdent.licHeaderType, 8 ) OR EZlic_LicenceIdent.licDataType; + SysMemCpy(ADR( dataWiteToFile ), ADR( dataMainToFileELC1 ), freeDataSize ); + cryptDataSize := DINT_TO_UINT( EzLic_p78ou3_CryptoData.aesRetVal ); + ELSE + (* chyba pri sifrovani *) + fEz_CreateLicenceFile := fEz_SetRetData(cEzLic_p78ou3_error_crypto, EzLic_p78ou3_CryptoData.aesRetVal); + RETURN; + END_IF; + ELSE + (* neznamy prefix licencniho souboru *) + fEz_CreateLicenceFile := fEz_SetRetData(cEzLic_p78ou3_error_prefix, 1); + RETURN; +END_CASE; + +IF EZlic_sourceLicenceData.enInit THEN + (* smazani vsech souboru v adresari licenci - pro vsechny verze licencnich souboru STEJNE *) + sdDirHandle := SysDirOpen( EzLic_p78ou3_licencfilepath ); + WHILE SysDirRead(sdDirHandle, dirFileName, ADR( dirInfo ) ) > 0 DO + IF NOT dirInfo.bDirectory THEN + dirFilePath := CONCAT( EzLic_p78ou3_licencfilepath, dirFileName ); + SysFileDelete( dirFilePath ); + END_IF; + END_WHILE; +ELSE + (* smazani pouze aktualini licence *) + SysFileDelete( EZlic_licenceFilePath ); +END_IF; + +(* zapsani souboru licence na SD kartu - pro vsechny verze licencnich souboru STEJNE *) +fullDataSize := freeDataSize + cryptDataSize; +sdFileHandle := SysFileOpen( EZlic_licenceFilePath, 'w'); +IF sdFileHandle > 0 THEN + retDataCount := SysFileWrite( sdfileHandle, ADR( dataWiteToFile ), fullDataSize ); + SysFileClose( sdFileHandle ); + IF retDataCount <> fullDataSize THEN + (* chyba pri zapisu licence *) + fEz_CreateLicenceFile := fEz_SetRetData(cEzLic_p78ou3_error_write, 0); + RETURN; + END_IF; +END_IF; + +(* korektne vygenerovany soubor licenci *) +fEz_CreateLicenceFile := fEz_SetRetData(cEzLic_p78ou3_error_no, 0); +fEz_CreateLicenceFile.isDone := TRUE; +---------------------------------------------------- \ No newline at end of file diff --git a/src/utils.cpp b/src/utils.cpp new file mode 100644 index 0000000..5bf6f40 --- /dev/null +++ b/src/utils.cpp @@ -0,0 +1,791 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// #include +// #include +#include +#include /* errors */ +#include /* core library */ +// #include + +#include "utils.h" + +using namespace std; + +const std::string base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + +const char base64_url_alphabet[] = { + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_'}; + +void TestFunction(int i) +{ + std::cout << i << "\n"; + std::cout << i + 1 << "\n"; +} + +void generatePause() +{ + cin.get(); + // system("pause"); +} + +string getXmlContentFromString(string source, string xmlTag) +{ + int xmlTagSize = xmlTag.length(); + int keyIndexStart = source.find("<" + xmlTag + ">"); + int keyIndexEnd = source.find(""); + std::string keyContentString = source.substr(keyIndexStart + xmlTagSize + 2, (keyIndexEnd - keyIndexStart - xmlTagSize - 2)); + return keyContentString; +} + +string getString(unsigned char *charArray) +{ + std::string fileContent(reinterpret_cast(charArray), sizeof(charArray)); + return fileContent; +} + +void getCharsFromString1(string source, char *charArray) +{ + memset(charArray, 0, sizeof(charArray)); + int length = source.length(); // Length of the string (excluding null character) + // charArray[length]; // Character array to store the string + for (int i = 0; i < length; i++) + { + charArray[i] = source[i]; + } +} + +void getCharsFromString(string source, char *charArray) +{ + memset(charArray, 0, sizeof(charArray)); + int length = source.length(); // Length of the string (excluding null character) + // charArray[length]; // Character array to store the string + for (int i = 0; i < length; i++) + { + charArray[i] = source[i]; + } +} + +float byteArrayToFloat(const BYTE *byteArray) +{ + // Ensure that the byte array has at least 4 elements (32 bits) + if (byteArray == NULL) + { + // Handle error: The pointer is NULL + return 0.0f; // or any appropriate error handling + } + + int sizeArray = sizeof(byteArray); + + // Interpret the byte array as a 32-bit floating-point value + uint32_t intValue = 0; + if (sizeArray > 0) + intValue |= ((uint32_t)byteArray[0] << 24); + if (sizeArray > 1) + intValue |= ((uint32_t)byteArray[1] << 16); + if (sizeArray > 2) + intValue |= ((uint32_t)byteArray[2] << 8); + if (sizeArray > 0) + intValue |= byteArray[3]; + + // Typecast the integer representation to a float + float floatValue; + memcpy(&floatValue, &intValue, sizeof(float)); + + return floatValue; +} + +std::string right(const std::string &sourceString, size_t numChars) +{ + if (numChars >= sourceString.size()) + { + return sourceString; // If numChars is greater or equal to the string size, return the whole string. + } + return sourceString.substr(sourceString.size() - numChars); +} + +std::tm dt_to_date(const std::chrono::system_clock::time_point &tp) +{ + std::time_t time = std::chrono::system_clock::to_time_t(tp); + return *std::localtime(&time); +} + +std::string parseCID(const std::string &cidHex) +{ + // Convert hexadecimal string to binary string + std::string cidBinary; + for (char c : cidHex) + { + std::string binary = "0000"; + int val; + if (c >= '0' && c <= '9') + { + val = c - '0'; + } + else if (c >= 'a' && c <= 'f') + { + val = c - 'a' + 10; + } + else if (c >= 'A' && c <= 'F') + { + val = c - 'A' + 10; + } + else + { + continue; // Ignore non-hex characters + } + for (int i = 3; i >= 0; --i) + { + binary[i] = '0' + (val & 1); + val >>= 1; + } + cidBinary += binary; + } + + // Define the length of individual fields in the CID + const int lengths[] = {8, 16, 40, 8, 32, 12, 7, 4}; + const char *fields[] = {"MID", "OID", "PNM", "PRV", "PSN", "MDT", "CRC", "unused"}; + + // Parse the binary string and print individual fields + int pos = 0; + for (int i = 0; i < 8; ++i) + { + std::string fieldData = cidBinary.substr(pos, lengths[i]); + std::cout << fields[i] << ": " << fieldData << std::endl; + pos += lengths[i]; + } + + return cidBinary; // Optionally, you can return the full binary string +} + +void bitsToCharArray(const std::string &bitsStr, char *charArray) +{ + int bitsLen = bitsStr.length(); + int charArraySize = bitsLen / 8; // Assuming bitsStr.length() is a multiple of 8 + + for (int i = 0; i < charArraySize; i++) + { + std::string byteStr = bitsStr.substr(i * 8, 8); + charArray[i] = std::bitset<8>(byteStr).to_ulong(); + } +} + +uint16_t calculateCRC16(const uint8_t *data, size_t length) +{ + const uint16_t polynomial = 0xA001; // CRC16-CCITT polynomial + uint16_t crc = 0xFFFF; // Initial value + + for (size_t i = 0; i < length; i++) + { + crc ^= data[i]; // XOR with the current data byte + + for (int j = 0; j < 8; j++) + { + if (crc & 0x0001) + { + crc = (crc >> 1) ^ polynomial; + } + else + { + crc = crc >> 1; + } + } + } + + return crc; +} + +uint16_t crc16(const unsigned char *data_p, unsigned char length) +{ + uint16_t x; + uint16_t crc = 0xFFFF; + + while (length--) + { + x = crc >> 8 ^ *data_p++; + x ^= x >> 4; + crc = (crc << 8) ^ ((unsigned short)(x << 12)) ^ ((unsigned short)(x << 5)) ^ ((unsigned short)x); + } + return crc; +} + +void wordToByteArray(uint16_t wordValue, uint8_t byteArray[2]) +{ + byteArray[0] = static_cast(wordValue & 0xFF); // Low byte + byteArray[1] = static_cast((wordValue >> 8) & 0xFF); // High byte +} + +uint16_t calculateCrc(const uint8_t *data, size_t length) +{ + uint16_t crc = 0xFFFF; + uint16_t makeData = 0; + + uint16_t cCrcTable[] = {0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, + 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, + 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, + 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, + 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, + 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, + 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, + 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, + 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, + 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, + 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, + 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, + 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, + 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, + 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, + 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, + 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, + 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, + 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, + 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, + 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, + 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, + 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, + 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, + 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, + 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, + 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, + 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, + 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, + 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, + 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, + 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040}; + + uint8_t byteArray[2]; + + for (int i = 0; i < length; i++) + { + // wordToByteArray(crc, byteArray); + makeData = data[i] ^ (crc); + crc = crc >> 8; + crc = crc ^ cCrcTable[i]; + data = data + 1; + } + + /* orig + crc := 16#FFFF; + +FOR i := 0 TO dataLen - 1 DO + makeData := data^ XOR WORD_TO_BYTE( crc ); + crc := SHR( crc, 8 ); + crc := crc XOR cCrcTable[makeData]; + data := data + 1; +END_FOR; + +fEz_crc16 := crc; + */ + + return crc; +} + +void showCurrentTime() +{ + std::time_t now = std::time(nullptr); + std::cout << "Current time (ctime): " << std::ctime(&now); + + // Using chrono to get the current time + auto currentTime = std::chrono::system_clock::now(); + std::time_t currentTimeT = std::chrono::system_clock::to_time_t(currentTime); + std::cout << "Current time (chrono): " << std::ctime(¤tTimeT); +} + +WORD getCurrentDateAsCODESYSDate() +{ + /* + Bits 0-4: Day (1 to 31) +Bits 5-8: Month (1 to 12) +Bits 9-15: Year (0 to 127, where 0 represents the year 1984) + +date: 2023-07-21 = 0x0A17 ? + +daatum: 060: 80 F9 C6 64 + + */ + std::time_t currentTime = std::time(nullptr); + std::tm *currentTm = std::localtime(¤tTime); + + int year = currentTm->tm_year + 1900; // tm_year represents years since 1900 + int month = currentTm->tm_mon + 1; // tm_mon represents months from 0 to 11 + int day = currentTm->tm_mday; + + uint16_t codesysDate = (static_cast(year - 1984) << 9) | (static_cast(month) << 5) | static_cast(day); + + return codesysDate; +} + +DWORD getCurrentDateAsCODESYSDateDword() +{ + std::time_t currentTime = std::time(nullptr); + std::tm *currentTm = std::localtime(¤tTime); + + int year = currentTm->tm_year + 1900; // tm_year represents years since 1900 + int month = currentTm->tm_mon + 1; // tm_mon represents months from 0 to 11 + int day = currentTm->tm_mday; + + DWORD codesysDate = (static_cast(year - 1984) << 9) | (static_cast(month) << 5) | static_cast(day); + + return codesysDate; +} + +uint16_t convertToCODESYSDate(int day, int month, int year) +{ + return (static_cast(year - 1984) << 9) | (static_cast(month) << 5) | static_cast(day); +} + +uint16_t convertToCODESYSTime(int hour, int minute) +{ + return (static_cast(hour) << 11) | (static_cast(minute) << 5); +} + +DateAndTime getCurrentDateTimeAsCODESYSDateTime() +{ + std::time_t currentTime = std::time(nullptr); + std::tm *currentTm = std::localtime(¤tTime); + + int year = currentTm->tm_year + 1900; // tm_year represents years since 1900 + int month = currentTm->tm_mon + 1; // tm_mon represents months from 0 to 11 + int day = currentTm->tm_mday; + int hour = currentTm->tm_hour; + int minute = currentTm->tm_min; + int second = currentTm->tm_sec; + + uint16_t codesysDate = (static_cast(year - 1984) << 9) | (static_cast(month) << 5) | static_cast(day); + uint16_t codesysTime = (static_cast(hour) << 11) | (static_cast(minute) << 5) | (static_cast(second) >> 1); + + DateAndTime codesysDateTime = {codesysDate, codesysTime}; + return codesysDateTime; +} + +DATE getLicDate() +{ + time_t ttime = time(0); + tm *local_time = localtime(&ttime); + int hoursSeconds = 3600 * local_time->tm_hour; + int minutesSeconds = 60 * local_time->tm_min; + int seconds = 1 * local_time->tm_sec; + int totalSeconds = hoursSeconds + minutesSeconds + seconds; + DATE dateOnly = ttime - totalSeconds + 7200; // 7200 + vteřina za dvě hodiny pro srování + return dateOnly; +} + +std::vector aes256_cbc_encrypt(const std::vector &plaintext, const std::vector &key, const std::vector &iv) +{ + std::vector ciphertext; + EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); + + EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), nullptr, key.data(), iv.data()); + + int ciphertext_len; + int len; + int max_chunk_size = EVP_CIPHER_block_size(EVP_aes_256_cbc()); + + ciphertext.resize(plaintext.size() + max_chunk_size); + + EVP_EncryptUpdate(ctx, ciphertext.data(), &len, plaintext.data(), plaintext.size()); + ciphertext_len = len; + + EVP_EncryptFinal_ex(ctx, ciphertext.data() + len, &len); + ciphertext_len += len; + + EVP_CIPHER_CTX_free(ctx); + + ciphertext.resize(ciphertext_len); + return ciphertext; +} + +void handleErrors(void) +{ + ERR_print_errors_fp(stderr); + abort(); +} + +int encrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key, + unsigned char *iv, unsigned char *ciphertext) +{ + EVP_CIPHER_CTX *ctx; + + int len; + + int ciphertext_len; + + /* Create and initialise the context */ + if (!(ctx = EVP_CIPHER_CTX_new())) + handleErrors(); + + /* + * Initialise the encryption operation. IMPORTANT - ensure you use a key + * and IV size appropriate for your cipher + * In this example we are using 256 bit AES (i.e. a 256 bit key). The + * IV size for *most* modes is the same as the block size. For AES this + * is 128 bits + */ + if (1 != EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv)) + handleErrors(); + + /* + * Provide the message to be encrypted, and obtain the encrypted output. + * EVP_EncryptUpdate can be called multiple times if necessary + */ + if (1 != EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len)) + handleErrors(); + ciphertext_len = len; + + /* + * Finalise the encryption. Further ciphertext bytes may be written at + * this stage. + */ + if (1 != EVP_EncryptFinal_ex(ctx, ciphertext + len, &len)) + handleErrors(); + ciphertext_len += len; + + /* Clean up */ + EVP_CIPHER_CTX_free(ctx); + + return ciphertext_len; +} + +int decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned char *key, + unsigned char *iv, unsigned char *plaintext) +{ + EVP_CIPHER_CTX *ctx; + + int len; + + int plaintext_len; + + /* Create and initialise the context */ + if (!(ctx = EVP_CIPHER_CTX_new())) + handleErrors(); + + /* + * Initialise the decryption operation. IMPORTANT - ensure you use a key + * and IV size appropriate for your cipher + * In this example we are using 256 bit AES (i.e. a 256 bit key). The + * IV size for *most* modes is the same as the block size. For AES this + * is 128 bits + */ + if (1 != EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv)) + handleErrors(); + + /* + * Provide the message to be decrypted, and obtain the plaintext output. + * EVP_DecryptUpdate can be called multiple times if necessary. + */ + if (1 != EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len)) + handleErrors(); + plaintext_len = len; + + /* + * Finalise the decryption. Further plaintext bytes may be written at + * this stage. + */ + if (1 != EVP_DecryptFinal_ex(ctx, plaintext + len, &len)) + handleErrors(); + plaintext_len += len; + + /* Clean up */ + EVP_CIPHER_CTX_free(ctx); + + return plaintext_len; +} + +bool CompareFiles(const char *fileName, const char *fileName1) +{ + + FILE *fp1; + FILE *fp2; + + fp1 = fopen(fileName, "rb"); // read mode + fseek(fp1, 0, SEEK_END); // seek to end of file + int size1 = ftell(fp1); // get current file pointer + fseek(fp1, 0, SEEK_SET); + + fp2 = fopen(fileName1, "rb"); // read mode + fseek(fp2, 0, SEEK_END); // seek to end of file + int size2 = ftell(fp2); // get current file pointer + fseek(fp2, 0, SEEK_SET); + + if (fp1 == NULL || fp2 == NULL) + { + while (1) + { + int byte1 = fgetc(fp1); + int byte2 = fgetc(fp2); + + if (byte1 == EOF || byte2 == EOF) + { + if (byte1 != byte2) + { + return false; // 1 indicates files are different + } + break; + } + + if (byte1 != byte2) + { + return false; // 1 indicates files are different + break; + } + } + } + else + return false; + + fclose(fp1); + fclose(fp2); + + return true; +} + +// converts character array +// to string and returns it +string convertToString(char *a, int size) +{ + int i; + string s = ""; + for (i = 0; i < size; i++) + { + s = s + a[i]; + } + return s; +} + +std::string base64_decode(const std::string &in) +{ + std::string out; + std::vector T(256, -1); + unsigned int i; + for (i = 0; i < 64; i++) + T[base64_url_alphabet[i]] = i; + + int val = 0, valb = -8; + for (i = 0; i < in.length(); i++) + { + unsigned char c = in[i]; + if (T[c] == -1) + break; + val = (val << 6) + T[c]; + valb += 6; + if (valb >= 0) + { + out.push_back(char((val >> valb) & 0xFF)); + valb -= 8; + } + } + return out; +} + +void processCharArray(const unsigned char *arr) +{ + size_t arraySize = sizeof(arr) / sizeof(arr[0]); + for (size_t i = 0; i < arraySize; ++i) + { + std::cout << arr[i] << " "; + } + std::cout << std::endl; +} + +std::string base64_encode(const std::string &in) +{ + std::string out; + int val = 0, valb = -6; + size_t len = in.length(); + unsigned int i = 0; + for (i = 0; i < len; i++) + { + unsigned char c = in[i]; + val = (val << 8) + c; + valb += 8; + while (valb >= 0) + { + out.push_back(base64_url_alphabet[(val >> valb) & 0x3F]); + valb -= 6; + } + } + if (valb > -6) + { + out.push_back(base64_url_alphabet[((val << 8) >> (valb + 8)) & 0x3F]); + } + return out; +} + +std::string base64_encode_array(const unsigned char *source) +{ + size_t arraySize = sizeof(source) / sizeof(source[0]); + std::string out; + int val = 0, valb = -6; + unsigned int i = 0; + for (i = 0; i < arraySize; i++) + { + unsigned char c = source[i]; + val = (val << 8) + c; + valb += 8; + while (valb >= 0) + { + out.push_back(base64_url_alphabet[(val >> valb) & 0x3F]); + valb -= 6; + } + } + if (valb > -6) + { + out.push_back(base64_url_alphabet[((val << 8) >> (valb + 8)) & 0x3F]); + } + return out; +} + +std::string base64_decode_ai(const std::string &encoded) +{ + std::string decoded; + int val = 0, valb = -8; + + for (char c : encoded) + { + if (base64_chars.find(c) == std::string::npos) + break; + + val = (val << 6) + base64_chars.find(c); + valb += 6; + + if (valb >= 0) + { + decoded.push_back(static_cast((val >> valb) & 0xFF)); + valb -= 8; + } + } + + return decoded; +} + +std::string base64_encode_ai(const std::string &input) +{ + std::string encoded; + + size_t input_length = input.length(); + size_t i = 0; + + while (i < input_length) + { + unsigned char input_chunk[3] = {0}; + size_t chunk_size = 0; + + // Fill the input chunk with up to 3 bytes from the input string + for (size_t j = 0; j < 3; ++j) + { + if (i < input_length) + { + input_chunk[j] = input[i++]; + ++chunk_size; + } + } + + // Encode the input chunk into 4 Base64 characters + encoded += base64_chars[(input_chunk[0] & 0xFC) >> 2]; + encoded += base64_chars[((input_chunk[0] & 0x03) << 4) | + ((input_chunk[1] & 0xF0) >> 4)]; + encoded += (chunk_size > 1) + ? base64_chars[((input_chunk[1] & 0x0F) << 2) | + ((input_chunk[2] & 0xC0) >> 6)] + : '='; + encoded += (chunk_size > 2) + ? base64_chars[input_chunk[2] & 0x3F] + : '='; + } + + return encoded; +} + +map getArguments(int argc, char *argv[]) +{ + const char splitChar='='; + map result; + if (argc <= 1) return result; + + for (int i = 1; i < argc; ++i) + { + bool isArgName = true; + int argLength = strlen(argv[i]); + string argName; + string argValue; + + for (int j=0;j mapArguments(int argc, char *argv[]) +{ + const char splitChar='='; + map result; + if (argc <= 1) return result; + + for (int i = 1; i < argc; ++i) + { + bool isArgName = true; + int argLength = strlen(argv[i]); + string argName; + string argValue; + char* argValueChar; + + for (int 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

    |>BO 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Â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 mZ1+8^X#b|s|KV#!@Bi2K|1A0g(r-VB&zwp