pax_global_header00006660000000000000000000000064147017764110014522gustar00rootroot0000000000000052 comment=12116e850a3b5276b4d7c714ef2482e73b247e44 libstb-secvar-main/000077500000000000000000000000001470177641100145505ustar00rootroot00000000000000libstb-secvar-main/.github/000077500000000000000000000000001470177641100161105ustar00rootroot00000000000000libstb-secvar-main/.github/workflows/000077500000000000000000000000001470177641100201455ustar00rootroot00000000000000libstb-secvar-main/.github/workflows/tests.yml000066400000000000000000000014131470177641100220310ustar00rootroot00000000000000name: tests on: ['push', 'pull_request'] jobs: unit-tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: install test dependencies run: sudo apt update && sudo apt install -y libssl-dev - name: build libraries run: make - name: build tests run: make tests - name: run tests run: make check static-analysis: runs-on: ubuntu-latest needs: unit-tests steps: - uses: actions/checkout@v2 - name: install dependencies run: sudo apt update && sudo apt install -y libssl-dev cppcheck clang-tools clang valgrind - name: run scan-build run: make clean && scan-build make - name: run cppcheck run: make cppcheck - name: run valgrind run: make memcheck libstb-secvar-main/.gitignore000066400000000000000000000000341470177641100165350ustar00rootroot00000000000000lib/ obj/ test/bin/ report/ libstb-secvar-main/CMakeLists.txt000066400000000000000000000011361470177641100173110ustar00rootroot00000000000000# SPDX-License-Identifier: BSD-2-Clause # Copyright 2023 IBM Corp. cmake_minimum_required( VERSION 3.12 ) project( libstb-secvar C ) add_library ( stb-secvar-openssl STATIC ) target_sources ( stb-secvar-openssl PRIVATE src/phyp.c src/authentication_2.c src/crypto_openssl.c src/crypto_util.c src/esl.c src/pseries.c src/update.c src/log.c ) target_include_directories ( stb-secvar-openssl AFTER PRIVATE ./ include/ include/secvar/ external/ external/edk2/ ) target_compile_definitions ( stb-secvar-openssl PRIVATE SECVAR_CRYPTO_OPENSSL # TODO: add crypto-specific builds ) libstb-secvar-main/LICENSE000066400000000000000000000024501470177641100155560ustar00rootroot00000000000000BSD 2-Clause License Copyright (c) 2023, International Business Machines 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. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 THE COPYRIGHT HOLDER 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. libstb-secvar-main/Makefile000066400000000000000000000100721470177641100162100ustar00rootroot00000000000000# SPDX-License-Identifier: BSD-2-Clause # Copyright 2023 IBM Corp. CC = gcc AR = ar LD = gcc _CFLAGS = -Wall -Werror -MMD -ggdb3 -fPIC CFLAGS = LDFLAGS = SRC_DIR = ./src OBJ_DIR = ./obj LIB_DIR = ./lib TEST_DIR = ./test INCLUDE = -I./include -I./ -I./external DEBUG ?= 0 ifeq ($(strip $(DEBUG)), 1) _CFLAGS += -g else _LDFLAGS += -s endif # Handle coverage generator preference, only supports lcov/gcovr via the Makefile # consider using the `make coverage` target and manually running your if not supported ifeq ($(strip $(PREFER_LCOV)), 1) COVERER = lcov else ifeq ($(strip $(PREFER_GCOVR)), 1) COVERER = gcovr else # Default to preferring gcovr if it exists, fallback to lcov if not ifneq ($(strip $(shell which gcovr)),) COVERER = gcovr else ifneq ($(strip $(shell which lcov)),) COVERER = lcov else endif endif SRCS = esl.c \ authentication_2.c \ update.c \ pseries.c \ crypto_util.c \ log.c \ phyp.c #By default, build with openssl as crypto library CRYPTO_LIB = openssl CRYPTO_LIB_OPTIONS = openssl ifeq ($(filter $(CRYPTO_LIB),$(CRYPTO_LIB_OPTIONS)),) $(error CRYPTO_LIB must be set to one of: $(CRYPTO_LIB_OPTIONS)) endif ifeq ($(CRYPTO_LIB), openssl) SRCS += crypto_openssl.c CRYPTO_ARG = OPENSSL=1 _CFLAGS += -DSECVAR_CRYPTO_OPENSSL endif SRCS := $(addprefix $(SRC_DIR)/,$(SRCS)) OBJS = $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS)) COV_OBJS = $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.gcov.o,$(SRCS)) _CFLAGS += $(CFLAGS) $(INCLUDE) _LDFLAGS += $(LDFLAGS) all: $(LIB_DIR)/libstb-secvar-$(CRYPTO_LIB).a $(LIB_DIR)/libstb-secvar-$(CRYPTO_LIB).so -include $(OBJS:.o=.d) $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c @mkdir -p $(OBJ_DIR) $(CC) $(_CFLAGS) $< -o $@ -c # Coverage objects $(OBJ_DIR)/%.gcov.o: $(SRC_DIR)/%.c @mkdir -p $(OBJ_DIR) $(CC) $(_CFLAGS) -Wall -Werror -g -O0 --coverage -DNO_PRLOG $< -o $@ -c $(LIB_DIR)/libstb-secvar-$(CRYPTO_LIB).a: $(OBJS) @mkdir -p $(LIB_DIR) $(AR) -rcs $@ $^ $(_LDFLAGS) $(LIB_DIR)/libstb-secvar-$(CRYPTO_LIB).gcov.a: $(COV_OBJS) @mkdir -p $(LIB_DIR) $(AR) -rcs $@ $^ $(_LDFLAGS) $(LIB_DIR)/libstb-secvar-$(CRYPTO_LIB).so: $(OBJS) @mkdir -p $(LIB_DIR) $(LD) $(_LDFLAGS) -shared $^ -o $@ tests: $(LIB_DIR)/libstb-secvar-$(CRYPTO_LIB).a @$(MAKE) -C $(TEST_DIR) $(CRYPTO_ARG) check: $(LIB_DIR)/libstb-secvar-$(CRYPTO_LIB).a @$(MAKE) -C $(TEST_DIR) $(CRYPTO_ARG) check memcheck: $(LIB_DIR)/libstb-secvar-$(CRYPTO_LIB).a @$(MAKE) -C $(TEST_DIR) memcheck coverage: $(LIB_DIR)/libstb-secvar-$(CRYPTO_LIB).gcov.a @$(MAKE) -C $(TEST_DIR) coverage coverage-report: coverage ifeq ($(COVERER),) $(error Neither lcov nor gcovr appear to be installed, please install one of them to use this target) endif ifeq ($(PERSIST_REPORT),) rm -rf report endif @mkdir -p report ifeq ($(COVERER),lcov) @echo "Using lcov to generate report" @lcov --no-external --capture --directory . --output-file report/test.info @genhtml report/test.info --legend --output-directory=report else ifeq ($(COVERER),gcovr) @echo "Using gcovr to generate report" @gcovr --html-details report/index.html --delete endif TEST_SRCS = $(wildcard test/*.c) # variableScope: avoid reducing variable scope to maintain C compatibility # missingInclude: TODO: ideally rework all includes to make this unnecessary # unusedFunction: not all functions provided in the library might be used # TODO: should be removed when test coverage improves CPPCHECK_ARGS = --enable=all --force \ --suppress=variableScope \ --suppress=missingInclude \ --suppress=unusedFunction \ --error-exitcode=1 -q cppcheck: cppcheck $(CPPCHECK_ARGS) \ -D__BYTE_ORDER__=__LITTLE_ENDIAN__ \ $(INCLUDE) $(SRCS) $(TEST_SRCS) cppcheck-be: cppcheck $(CPPCHECK_ARGS) \ -D__BYTE_ORDER__=__BIG_ENDIAN__ \ $(INCLUDE) $(SRCS) $(TEST_SRCS) clean: @$(MAKE) -C $(TEST_DIR) clean rm -rf $(OBJ_DIR) $(LIB_DIR) rm -rf report/ .PHONY: all check cppcheck cppcheck-be clean tests coverage coverage-report libstb-secvar-main/README.md000066400000000000000000000067061470177641100160400ustar00rootroot00000000000000libstb-secvar ============== Linux on Power LPAR Secure Boot Authenticated Variable Processing Library What is libstb-secvar --------------------- This library makes it easier to process data from variable authentication files and to update variables' data in the platform keystore with a timestamp. It is supporting the following 9 predefined secure boot variables and an arbitrary variables. Secure Boot Variables: 1. PK 2. KEK 3. db 4. dbx 5. grubdb 6. grubdbx 7. sbat 8. moduledb 9. trustedcadb Moreover, it makes it easier to update and append variables, delete variables using PK, and delete keys using KEK. Metadata for Auth file ----------------------- Variables auth file is generated by secvarct tool, which will be pushed by user to platform keystore. Also, providing that a variable update with no data (with the append Header zero) represents deletion of the variable. The auth file data format is: |-----------------------------------| | | | Append Header | | (8 bytes) | |-----------------------------------| | | | Auth Info | | | | |-------------------------------| | | Auth Header | | | (40 byte) | | |-------------------------------| | | PKCS7 data | |---|-------------------------------| | | | Variable Info | | | | |-------------------------------| | | ESL Header | | | (44 byte) | | |-------------------------------| | | ESL Data | |-----------------------------------| Metadata for signed variables at Platform Keystore -------------------------------------------------- Variables have replay/rollback protection via a timestamp which is stored with the variable. It will be used by firmware and grub to verify the signed grub and kernel respectively. The signed variable format is: |-----------------------------------| | | | timesatamp | | (8 bytes) | |-----------------------------------| | | | Variable Data | | |-------------------------------| | | ESL Datas | |-----------------------------------| Quick Start ----------- ``` Build: cd libstb-secvar make UnitTest: make test make check Note:- after building libstb-secvar, the library file is placed in the lib directory. libstb-secvar/lib ``` Copyright --------- All code in this repository is Copyright IBM, and provided under the BSD 2-Clause license, with the exception of code included in the `external/` directory. Externally sourced source files have their respective licenses provided in the containing directory. libstb-secvar-main/external/000077500000000000000000000000001470177641100163725ustar00rootroot00000000000000libstb-secvar-main/external/ccan/000077500000000000000000000000001470177641100172765ustar00rootroot00000000000000libstb-secvar-main/external/ccan/endian/000077500000000000000000000000001470177641100205345ustar00rootroot00000000000000libstb-secvar-main/external/ccan/endian/LICENSE000066400000000000000000000143571470177641100215530ustar00rootroot00000000000000Statement of Purpose The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. 1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; moral rights retained by the original author(s) and/or performer(s); publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; rights protecting the extraction, dissemination, use and reuse of data in a Work; database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. 2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. 3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. 4. Limitations and Disclaimers. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. libstb-secvar-main/external/ccan/endian/endian.h000066400000000000000000000226701470177641100221520ustar00rootroot00000000000000/* CC0 (Public domain) - see LICENSE file for details */ #ifndef CCAN_ENDIAN_H #define CCAN_ENDIAN_H #include #include "config.h" /** * BSWAP_16 - reverse bytes in a constant uint16_t value. * @val: constant value whose bytes to swap. * * Designed to be usable in constant-requiring initializers. * * Example: * struct mystruct { * char buf[BSWAP_16(0x1234)]; * }; */ #define BSWAP_16(val) \ ((((uint16_t)(val) & 0x00ff) << 8) \ | (((uint16_t)(val) & 0xff00) >> 8)) /** * BSWAP_32 - reverse bytes in a constant uint32_t value. * @val: constant value whose bytes to swap. * * Designed to be usable in constant-requiring initializers. * * Example: * struct mystruct { * char buf[BSWAP_32(0xff000000)]; * }; */ #define BSWAP_32(val) \ ((((uint32_t)(val) & 0x000000ff) << 24) \ | (((uint32_t)(val) & 0x0000ff00) << 8) \ | (((uint32_t)(val) & 0x00ff0000) >> 8) \ | (((uint32_t)(val) & 0xff000000) >> 24)) /** * BSWAP_64 - reverse bytes in a constant uint64_t value. * @val: constantvalue whose bytes to swap. * * Designed to be usable in constant-requiring initializers. * * Example: * struct mystruct { * char buf[BSWAP_64(0xff00000000000000ULL)]; * }; */ #define BSWAP_64(val) \ ((((uint64_t)(val) & 0x00000000000000ffULL) << 56) \ | (((uint64_t)(val) & 0x000000000000ff00ULL) << 40) \ | (((uint64_t)(val) & 0x0000000000ff0000ULL) << 24) \ | (((uint64_t)(val) & 0x00000000ff000000ULL) << 8) \ | (((uint64_t)(val) & 0x000000ff00000000ULL) >> 8) \ | (((uint64_t)(val) & 0x0000ff0000000000ULL) >> 24) \ | (((uint64_t)(val) & 0x00ff000000000000ULL) >> 40) \ | (((uint64_t)(val) & 0xff00000000000000ULL) >> 56)) #if HAVE_BYTESWAP_H #include #else /** * bswap_16 - reverse bytes in a uint16_t value. * @val: value whose bytes to swap. * * Example: * // Output contains "1024 is 4 as two bytes reversed" * printf("1024 is %u as two bytes reversed\n", bswap_16(1024)); */ static inline uint16_t bswap_16(uint16_t val) { return BSWAP_16(val); } /** * bswap_32 - reverse bytes in a uint32_t value. * @val: value whose bytes to swap. * * Example: * // Output contains "1024 is 262144 as four bytes reversed" * printf("1024 is %u as four bytes reversed\n", bswap_32(1024)); */ static inline uint32_t bswap_32(uint32_t val) { return BSWAP_32(val); } #endif /* !HAVE_BYTESWAP_H */ #if !HAVE_BSWAP_64 /** * bswap_64 - reverse bytes in a uint64_t value. * @val: value whose bytes to swap. * * Example: * // Output contains "1024 is 1125899906842624 as eight bytes reversed" * printf("1024 is %llu as eight bytes reversed\n", * (unsigned long long)bswap_64(1024)); */ static inline uint64_t bswap_64(uint64_t val) { return BSWAP_64(val); } #endif /* Needed for Glibc like endiness check */ #define __LITTLE_ENDIAN 1234 #define __BIG_ENDIAN 4321 /* Sanity check the defines. We don't handle weird endianness. */ #if !HAVE_LITTLE_ENDIAN && !HAVE_BIG_ENDIAN #error "Unknown endian" #elif HAVE_LITTLE_ENDIAN && HAVE_BIG_ENDIAN #error "Can't compile for both big and little endian." #elif HAVE_LITTLE_ENDIAN #ifndef __BYTE_ORDER #define __BYTE_ORDER __LITTLE_ENDIAN #elif __BYTE_ORDER != __LITTLE_ENDIAN #error "__BYTE_ORDER already defined, but not equal to __LITTLE_ENDIAN" #endif #elif HAVE_BIG_ENDIAN #ifndef __BYTE_ORDER #define __BYTE_ORDER __BIG_ENDIAN #elif __BYTE_ORDER != __BIG_ENDIAN #error "__BYTE_ORDER already defined, but not equal to __BIG_ENDIAN" #endif #endif #ifdef __CHECKER__ /* sparse needs forcing to remove bitwise attribute from ccan/short_types */ #define ENDIAN_CAST __attribute__((force)) #define ENDIAN_TYPE __attribute__((bitwise)) #else #define ENDIAN_CAST #define ENDIAN_TYPE #endif typedef uint64_t ENDIAN_TYPE leint64_t; typedef uint64_t ENDIAN_TYPE beint64_t; typedef uint32_t ENDIAN_TYPE leint32_t; typedef uint32_t ENDIAN_TYPE beint32_t; typedef uint16_t ENDIAN_TYPE leint16_t; typedef uint16_t ENDIAN_TYPE beint16_t; #if HAVE_LITTLE_ENDIAN /** * CPU_TO_LE64 - convert a constant uint64_t value to little-endian * @native: constant to convert */ #define CPU_TO_LE64(native) ((ENDIAN_CAST leint64_t)(native)) /** * CPU_TO_LE32 - convert a constant uint32_t value to little-endian * @native: constant to convert */ #define CPU_TO_LE32(native) ((ENDIAN_CAST leint32_t)(native)) /** * CPU_TO_LE16 - convert a constant uint16_t value to little-endian * @native: constant to convert */ #define CPU_TO_LE16(native) ((ENDIAN_CAST leint16_t)(native)) /** * LE64_TO_CPU - convert a little-endian uint64_t constant * @le_val: little-endian constant to convert */ #define LE64_TO_CPU(le_val) ((ENDIAN_CAST uint64_t)(le_val)) /** * LE32_TO_CPU - convert a little-endian uint32_t constant * @le_val: little-endian constant to convert */ #define LE32_TO_CPU(le_val) ((ENDIAN_CAST uint32_t)(le_val)) /** * LE16_TO_CPU - convert a little-endian uint16_t constant * @le_val: little-endian constant to convert */ #define LE16_TO_CPU(le_val) ((ENDIAN_CAST uint16_t)(le_val)) #else /* ... HAVE_BIG_ENDIAN */ #define CPU_TO_LE64(native) ((ENDIAN_CAST leint64_t)BSWAP_64(native)) #define CPU_TO_LE32(native) ((ENDIAN_CAST leint32_t)BSWAP_32(native)) #define CPU_TO_LE16(native) ((ENDIAN_CAST leint16_t)BSWAP_16(native)) #define LE64_TO_CPU(le_val) BSWAP_64((ENDIAN_CAST uint64_t)le_val) #define LE32_TO_CPU(le_val) BSWAP_32((ENDIAN_CAST uint32_t)le_val) #define LE16_TO_CPU(le_val) BSWAP_16((ENDIAN_CAST uint16_t)le_val) #endif /* HAVE_BIG_ENDIAN */ #if HAVE_BIG_ENDIAN /** * CPU_TO_BE64 - convert a constant uint64_t value to big-endian * @native: constant to convert */ #define CPU_TO_BE64(native) ((ENDIAN_CAST beint64_t)(native)) /** * CPU_TO_BE32 - convert a constant uint32_t value to big-endian * @native: constant to convert */ #define CPU_TO_BE32(native) ((ENDIAN_CAST beint32_t)(native)) /** * CPU_TO_BE16 - convert a constant uint16_t value to big-endian * @native: constant to convert */ #define CPU_TO_BE16(native) ((ENDIAN_CAST beint16_t)(native)) /** * BE64_TO_CPU - convert a big-endian uint64_t constant * @le_val: big-endian constant to convert */ #define BE64_TO_CPU(le_val) ((ENDIAN_CAST uint64_t)(le_val)) /** * BE32_TO_CPU - convert a big-endian uint32_t constant * @le_val: big-endian constant to convert */ #define BE32_TO_CPU(le_val) ((ENDIAN_CAST uint32_t)(le_val)) /** * BE16_TO_CPU - convert a big-endian uint16_t constant * @le_val: big-endian constant to convert */ #define BE16_TO_CPU(le_val) ((ENDIAN_CAST uint16_t)(le_val)) #else /* ... HAVE_LITTLE_ENDIAN */ #define CPU_TO_BE64(native) ((ENDIAN_CAST beint64_t)BSWAP_64(native)) #define CPU_TO_BE32(native) ((ENDIAN_CAST beint32_t)BSWAP_32(native)) #define CPU_TO_BE16(native) ((ENDIAN_CAST beint16_t)BSWAP_16(native)) #define BE64_TO_CPU(le_val) BSWAP_64((ENDIAN_CAST uint64_t)le_val) #define BE32_TO_CPU(le_val) BSWAP_32((ENDIAN_CAST uint32_t)le_val) #define BE16_TO_CPU(le_val) BSWAP_16((ENDIAN_CAST uint16_t)le_val) #endif /* HAVE_LITTE_ENDIAN */ /** * cpu_to_le64 - convert a uint64_t value to little-endian * @native: value to convert */ static inline leint64_t cpu_to_le64(uint64_t native) { return CPU_TO_LE64(native); } /** * cpu_to_le32 - convert a uint32_t value to little-endian * @native: value to convert */ static inline leint32_t cpu_to_le32(uint32_t native) { return CPU_TO_LE32(native); } /** * cpu_to_le16 - convert a uint16_t value to little-endian * @native: value to convert */ static inline leint16_t cpu_to_le16(uint16_t native) { return CPU_TO_LE16(native); } /** * le64_to_cpu - convert a little-endian uint64_t value * @le_val: little-endian value to convert */ static inline uint64_t le64_to_cpu(leint64_t le_val) { return LE64_TO_CPU(le_val); } /** * le32_to_cpu - convert a little-endian uint32_t value * @le_val: little-endian value to convert */ static inline uint32_t le32_to_cpu(leint32_t le_val) { return LE32_TO_CPU(le_val); } /** * le16_to_cpu - convert a little-endian uint16_t value * @le_val: little-endian value to convert */ static inline uint16_t le16_to_cpu(leint16_t le_val) { return LE16_TO_CPU(le_val); } /** * cpu_to_be64 - convert a uint64_t value to big endian. * @native: value to convert */ static inline beint64_t cpu_to_be64(uint64_t native) { return CPU_TO_BE64(native); } /** * cpu_to_be32 - convert a uint32_t value to big endian. * @native: value to convert */ static inline beint32_t cpu_to_be32(uint32_t native) { return CPU_TO_BE32(native); } /** * cpu_to_be16 - convert a uint16_t value to big endian. * @native: value to convert */ static inline beint16_t cpu_to_be16(uint16_t native) { return CPU_TO_BE16(native); } /** * be64_to_cpu - convert a big-endian uint64_t value * @be_val: big-endian value to convert */ static inline uint64_t be64_to_cpu(beint64_t be_val) { return BE64_TO_CPU(be_val); } /** * be32_to_cpu - convert a big-endian uint32_t value * @be_val: big-endian value to convert */ static inline uint32_t be32_to_cpu(beint32_t be_val) { return BE32_TO_CPU(be_val); } /** * be16_to_cpu - convert a big-endian uint16_t value * @be_val: big-endian value to convert */ static inline uint16_t be16_to_cpu(beint16_t be_val) { return BE16_TO_CPU(be_val); } /* Whichever they include first, they get these definitions. */ #ifdef CCAN_SHORT_TYPES_H /** * be64/be32/be16 - 64/32/16 bit big-endian representation. */ typedef beint64_t be64; typedef beint32_t be32; typedef beint16_t be16; /** * le64/le32/le16 - 64/32/16 bit little-endian representation. */ typedef leint64_t le64; typedef leint32_t le32; typedef leint16_t le16; #endif #endif /* CCAN_ENDIAN_H */ libstb-secvar-main/external/edk2/000077500000000000000000000000001470177641100172175ustar00rootroot00000000000000libstb-secvar-main/external/edk2/LICENSE000066400000000000000000000052541470177641100202320ustar00rootroot00000000000000Copyright (c) 2019, TianoCore and contributors. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent 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. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Subject to the terms and conditions of this license, each copyright holder and contributor hereby grants to those receiving rights under this license a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except for failure to satisfy the conditions of this license) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer this software, where such license applies only to those patent claims, already acquired or hereafter acquired, licensable by such copyright holder or contributor that are necessarily infringed by: (a) their Contribution(s) (the licensed copyrights of copyright holders and non-copyrightable additions of contributors, in source or binary form) alone; or (b) combination of their Contribution(s) with the work of authorship to which such Contribution(s) was added by such copyright holder or contributor, if, at the time the Contribution is added, such addition causes such combination to be necessarily infringed. The patent license shall not apply to any other combinations which include the Contribution. Except as expressly stated above, no rights or licenses from any copyright holder or contributor is granted under this license, whether expressly, by implication, estoppel or otherwise. DISCLAIMER THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 THE COPYRIGHT HOLDERS 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. libstb-secvar-main/external/edk2/common.h000066400000000000000000000327551470177641100206740ustar00rootroot00000000000000/* * Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved. This * program and the accompanying materials are licensed and made available * under the terms and conditions of the 2-Clause BSD License which * accompanies this distribution. * * 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. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 THE COPYRIGHT HOLDER 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. * * * https://github.com/tianocore/edk2-staging (edk2-staging repo of tianocore), * these are the files under it, and here's the copyright and license. * * MdePkg/Include/Guid/GlobalVariable.h * MdePkg/Include/Guid/WinCertificate.h * MdePkg/Include/Uefi/UefiMultiPhase.h * MdePkg/Include/Uefi/UefiBaseType.h * MdePkg/Include/Guid/ImageAuthentication.h * * * Copyright 2023 IBM Corp. * SPDX-License-Identifier: BSD-2-Clause-Patent */ #ifndef __LIBSTB_SECVAR_COMMON_H #define __LIBSTB_SECVAR_COMMON_H #include #include #include "config.h" #include "ccan/endian/endian.h" #define MAX_HASH_SIZE 32 #define UUID_SIZE 16 #define SV_CERT_TYPE_PKCS_SIGNED_DATA 0x0002 /* * Attributes of Authenticated Variable * It is derived from EFI_VARIABLE_APPEND_WRITE * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Uefi/UefiMultiPhase.h */ #define SV_VARIABLE_APPEND_WRITE 0x00000040 /* * It is derived from EFI_CERT_TYPE_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/WinCertificate.h */ #define AUTH_CERT_TYPE_GUID 0x0ef1 #define SV_PACKED __attribute__ ((packed)) /* The structure of a UUID.*/ typedef struct { uint8_t b[UUID_SIZE]; } uuid_t; /* * It is derived from EFI_GLOBAL_VARIABLE_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/GlobalVariable.h */ static const uuid_t SV_GLOBAL_VARIABLE_GUID = { { 0x61, 0xDF, 0xe4, 0x8b, 0xca, 0x93, 0xd2, 0x11, 0xaa, 0x0d, 0x00, 0xe0, 0x98, 0x03, 0x2b, 0x8c } }; /* * It is derived from EFI_IMAGE_SECURITY_DATABASE_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ static const uuid_t SV_IMAGE_SECURITY_DATABASE_GUID = { { 0xcb, 0xb2, 0x19, 0xd7, 0x3a, 0x3d, 0x96, 0x45, 0xa3, 0xbc, 0xda, 0xd0, 0x0e, 0x67, 0x65, 0x6f } }; /* * It is derived from EFI_CERT_TYPE_PKCS7_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ static const uuid_t AUTH_CERT_TYPE_PKCS7_GUID = { { 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7 } }; /* * It is derived from EFI_CERT_X509_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ static const uuid_t PKS_CERT_X509_GUID = { { 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72 } }; /* * It is derived from EFI_CERT_SHA1_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ static const uuid_t PKS_CERT_SHA1_GUID = { { 0x12, 0xa5, 0x6c, 0x82, 0x10, 0xcf, 0xc9, 0x4a, 0xb1, 0x87, 0xbe, 0x01, 0x49, 0x66, 0x31, 0xbd } }; /* * It is derived from EFI_CERT_SHA224_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ static const uuid_t PKS_CERT_SHA224_GUID = { { 0x33, 0x52, 0x6e, 0x0b, 0x5c, 0xa6, 0xc9, 0x44, 0x94, 0x07, 0xd9, 0xab, 0x83, 0xbf, 0xc8, 0xbd } }; /* * It is derived from EFI_CERT_SHA256_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ static const uuid_t PKS_CERT_SHA256_GUID = { { 0x26, 0x16, 0xc4, 0xc1, 0x4c, 0x50, 0x92, 0x40, 0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28 } }; /* * It is derived from EFI_CERT_SHA384_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ static const uuid_t PKS_CERT_SHA384_GUID = { { 0x07, 0x53, 0x3e, 0xff, 0xd0, 0x9f, 0xc9, 0x48, 0x85, 0xf1, 0x8a, 0xd5, 0x6c, 0x70, 0x1e, 0x01 } }; /* * It is derived from EFI_CERT_SHA512_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ static const uuid_t PKS_CERT_SHA512_GUID = { { 0xae, 0x0f, 0x3e, 0x09, 0xc4, 0xa6, 0x50, 0x4f, 0x9f, 0x1b, 0xd4, 0x1e, 0x2b, 0x89, 0xc1, 0x9a } }; /* * It is derived from EFI_CERT_RSA2048_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ static const uuid_t PKS_CERT_RSA2048_GUID = { { 0xe8, 0x66, 0x57, 0x3c, 0x9c, 0x26, 0x34, 0x4e, 0xaa, 0x14, 0xed, 0x77, 0x6e, 0x85, 0xb3, 0xb6 } }; /* * It is derived from EFI_CERT_X509_SHA256_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ static const uuid_t PKS_CERT_X509_SHA256_GUID = { { 0x92, 0xa4, 0xd2, 0x3b, 0xc0, 0x96, 0x79, 0x40, 0xb4, 0x20, 0xfc, 0xf9, 0x8e, 0xf1, 0x03, 0xed } }; /* * It is derived from EFI_CERT_X509_SHA384_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ static const uuid_t PKS_CERT_X509_SHA384_GUID = { { 0x6e, 0x87, 0x76, 0x70, 0xc2, 0x80, 0xe6, 0x4e, 0xaa, 0xd2, 0x28, 0xb3, 0x49, 0xa6, 0x86, 0x5b } }; /* * It is derived from EFI_CERT_X509_SHA512_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ static const uuid_t PKS_CERT_X509_SHA512_GUID = { { 0x63, 0xbf, 0x6d, 0x44, 0x02, 0x25, 0xda, 0x4c, 0xbc, 0xfa, 0x24, 0x65, 0xd2, 0xb0, 0xfe, 0x9d } }; static const uuid_t PKS_CERT_SBAT_GUID = { { 0x50, 0xab, 0x5d, 0x60, 0x46, 0xe0, 0x0, 0x43, 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23 } }; /* * It is derived from EFI_SIGNATURE_DATA * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ struct sv_esd { uuid_t signature_owner; /* An identifier which identifies the agent which added the signature to the list */ uint8_t signature_data[];/* The format of the signature is defined by the SignatureType. */ } SV_PACKED; /* * It is derived from EFI_SIGNATURE_LIST * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/ImageAuthentication.h */ struct sv_esl { uuid_t signature_type; /* Type of the signature. */ uint32_t signature_list_size; /* Total size of the signature list, including this header */ uint32_t signature_header_size;/* Size of the signature header which precedes the array of signatures */ uint32_t signature_size; /* Size of each signature.*/ } SV_PACKED; typedef struct sv_esd sv_esd_t; typedef struct sv_esl sv_esl_t; /* * It is derived from WIN_CERTIFICATE * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/WinCertificate.h */ struct auth_header { leint32_t da_length; /* The length of the entire certificate */ leint16_t a_revision; /* The revision level of the AUTH_CERTIFICATE structure */ leint16_t a_certificate_type; /* The certificate type */ } SV_PACKED; typedef struct auth_header auth_header_t; /* * Certificate which encapsulates a GUID-specific digital signature * It is derived from WIN_CERTIFICATE_UEFI_GUID * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Guid/WinCertificate.h */ struct auth_cert { auth_header_t hdr; /* This is the standard auth_certificate header, where a_certificate_type is set to AUTH_CERT_TYPE_GUID */ uuid_t cert_type; /* This is the unique id which determines the format of the cert_data */ uint8_t cert_data[0]; /* the certificate data */ } SV_PACKED; typedef struct auth_cert auth_cert_t; /* * Timestamp Abstraction: * Year: 1900 - 9999 * Month: 1 - 12 * Day: 1 - 31 * Hour: 0 - 23 * Minute: 0 - 59 * Second: 0 - 59 * Nanosecond: 0 - 999,999,999 * TimeZone: -1440 to 1440 or 2047 * * It is derived from EFI_TIME * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Uefi/UefiBaseType.h */ struct sv_timestamp { leint16_t year; uint8_t month; uint8_t day; uint8_t hour; uint8_t minute; uint8_t second; uint8_t pad1; leint32_t nanosecond; leint16_t timezone; uint8_t daylight; uint8_t pad2; } SV_PACKED; typedef struct sv_timestamp timestamp_t; /* * It is derived from EFI_VARIABLE_AUTHENTICATION_2 * https://github.com/tianocore/edk2-staging/blob/master/MdePkg/Include/Uefi/UefiMultiPhase.h */ struct auth_info { timestamp_t timestamp; /* For the TimeStamp value, components Pad1, Nanosecond, TimeZone, Daylight and Pad2 shall be set to 0 */ auth_cert_t auth_cert; /* Only a CertType of AUTH_CERT_TYPE_PKCS7_GUID is accepted */ } SV_PACKED; typedef struct auth_info auth_info_t; enum sv_variable_update_flags { SV_VARIABLE_UPDATE_NO_FLAGS = 0, SV_VARIABLE_UPDATE_SKIP_VERIFICATION = 1 << 0, SV_AUTH_VERIFIED_BY_PK = 1 << 1, SV_AUTH_VERIFIED_BY_KEK = 1 << 2, }; typedef enum sv_variable_update_flags sv_flag_t; struct auth_database { const uint8_t *pk; /* Platform Key database */ const uint8_t *kek; /* Key Exchange Key database */ size_t pk_size; /* size of Platform Key database */ size_t kek_size; /* size of Key Exchange Key database */ }; typedef struct auth_database auth_db_t; struct update_request { bool allow_unauthenticated; /* allow an unauthenticated PK update */ bool append_update; /* append update flag*/ const uint8_t *label; /* secure boot variable name */ size_t label_size; /* size of secure boot variable name */ const uint8_t *update_data; /* auth message from user */ const uint8_t *current_data; /* current secure boot variable data */ size_t update_data_size; /* size of auth message */ size_t current_data_size; /* size of current secure boot variable data */ auth_db_t auth_db; /* PK and KEK database */ }; struct auth_data { sv_flag_t flag; /* the signature validation flag */ const uuid_t *vendor; /* GUID of the variable update */ uint32_t attributes; /* Update variable attributes in CPU endian */ const uint16_t *name; /* secure boot variable name */ const uint8_t *auth_msg; /* auth message from user */ size_t auth_msg_size; /* size of auth message */ const uint8_t *current_esl_data;/* current variable esl data */ size_t current_esl_data_size; /* size of current variable esl data */ timestamp_t *current_time; /* current variable timestamp */ auth_db_t auth_db; /* PK and KEK database */ }; typedef struct auth_data auth_data_t; typedef struct update_request update_req_t; static const char defined_sb_variables [9] [12] = { "PK", "KEK", "db", "dbx", "grubdb", "grubdbx", "sbat", "moduledb", "trustedcadb" }; static const int defined_sb_variable_len = 9; #endif libstb-secvar-main/include/000077500000000000000000000000001470177641100161735ustar00rootroot00000000000000libstb-secvar-main/include/config.h000066400000000000000000000020331470177641100176070ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #ifndef __LIBSTB_SECVAR_CONFIG_H #define __LIBSTB_SECVAR_CONFIG_H /* * This is the libstb-secvar config file. You will need to * update this to your deployment platform (e.g. local test, * qemu, other product.) * * This version is for phyp. * * You must provide the following things: * - endian conversion functions in the style of endian.h * - definitions (either #define or static inline functions) for libstb_zalloc * and libstb_free * * Optionally, you may define your crypto library here too. */ #if defined(__BYTE_ORDER__) #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ #define HAVE_LITTLE_ENDIAN 1 #else #define HAVE_BIG_ENDIAN 1 #endif #else #error __BYTE_ORDER__ is undefined, edit config.h #endif #include #include #include static inline void * libstb_zalloc (size_t size) { return OPENSSL_zalloc (size); } static inline void libstb_free (void *ptr) { OPENSSL_free (ptr); } #endif libstb-secvar-main/include/libstb-secvar-errors.h000066400000000000000000000057051470177641100224250ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #ifndef __LIBSTB_SECVAR_ERRORS_H #define __LIBSTB_SECVAR_ERRORS_H #define APPEND_HEADER_LEN 8 enum _sv_errors { SV_SUCCESS = 0, SV_BUF_INSUFFICIENT_DATA = 1, /* a buffer is too small for the data it is supposed to contain */ SV_ESL_SIZE_INVALID, /* a size field in the ESL is invalid. */ SV_ESL_WRONG_TYPE, /* an ESL didn't contain a SignatureType we expect */ SV_AUTH_INVALID_FIXED_VALUE, /* e.g. timestamp with some non-zeros where they aren't supposed to be, w_cert_type != 0xef1 */ SV_AUTH_SIZE_INVALID, /* a size field in the auth structure is invalid */ SV_AUTH_UNSUPPORTED_REVISION, /* w_revision != 0x0200 */ SV_OUT_BUF_TOO_SMALL, /* output buffer too small for the data */ SV_TOO_MUCH_DATA, /* e.g. ESL doesn't fit in 32-bit size */ SV_TIMESTAMP_IN_PAST, /* attempted to apply an update from the past TODO RENAME NOT_IN_FUTURE */ SV_ALLOCATION_FAILED, /* libstb_zalloc returned NULL */ /* crypto */ SV_PKCS7_PARSE_ERROR = 0x100, /* failed to parse a PKCS#7 message from DER. */ SV_PKCS7_ERROR, /* the message parsed but we couldn't extract some key part of it */ SV_UNEXPECTED_PKCS7_ALGO, /* a PKCS7 signature is not made with SHA-256 */ SV_X509_PARSE_ERROR, /* failed to parse an x509 cert from DER */ SV_X509_ERROR, /* the certificate parsed but we couldn't extract some key part from it, or it is not v3 */ SV_UNEXPECTED_CERT_ALGO, /* a cert we were given to verify a signature is not RSA */ SV_UNEXPECTED_CERT_SIZE, /* as above, but the cert is not [RSA-]2048/4096 */ SV_UNEXPECTED_CRYPTO_ERROR, /* something unspecific went wrong in cryptoland */ SV_CRYPTO_USAGE_BUG, /* the programmer called a crypto function in a way they shouldn't have done */ SV_FAILED_TO_VERIFY_SIGNATURE,/* no trusted key verified the signature */ /* pseries specific */ /* * label size is odd or there is an embedded u16 nul. We don't strictly require UCS-2, * but that would be wise */ SV_LABEL_IS_NOT_WIDE_CHARACTERS = 0x200, SV_UNPACK_ERROR, /* when unpacking a signed variable, it was too small somehow */ SV_UNPACK_VERSION_ERROR, /* unpacking a non-v0 signed var */ SV_CANNOT_APPEND_TO_PK, /* you tried to append to PK. Don't do that. */ SV_DELETE_EVERYTHING, /* A signed PK update + allow unauth PK update + WIPE_SB_MAGIC was sent */ SV_INVALID_PK_UPDATE, /* you tried to update the PK but it wasn't an ESL containing a single RSA-2048/4096 cert */ /* * you tried to update the KEK but the resultant variable it wasn't either empty or * a set of ESLs containing RSA-2048/4096 certs. */ SV_INVALID_KEK_UPDATE, SV_INVALID_TRUSTEDCADB_UPDATE, /* currently unused, untested and broken auth file write support */ SV_INVALID_FILE = 0xff00, }; typedef enum _sv_errors sv_err_t; #endif libstb-secvar-main/include/libstb-secvar.h000066400000000000000000000030261470177641100211050ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #ifndef __LIBSTB_SECVAR_H #define __LIBSTB_SECVAR_H #include #include #include #include "libstb-secvar-errors.h" /* * Apply an update based on phyp rules. * * @label/@label_size: variable name * @current_data/@current_data_size: current var contents, or NULL/0 * @update_data: message data * @update_data_size: message data length * @allow_unauthenticated_pk_update: allow an unauthenticated PK update? * @append_update: is this an append? * @pk_data/@pk_data_size: the current contents of the PK variable, or NULL/0 * @kek_data/@kek_data_size: contents of KEK variable or NULL/0 * @new_data/@new_data_size: out * @log_data: out - single uint64_t of trace data * * If new_data_size is 0, new_data will be NULL. This represents variable deletion. * return code: SUCCESS if the update was valid, otherwise an error code. * * Lifetime: new_data is a fresh allocation if rc = SUCCESS. Caller must free with libstb_free(). */ int update_var_from_auth (const uint8_t *label, size_t label_size, const uint8_t *update_data, size_t update_data_size, const uint8_t *current_data, size_t current_data_size, bool allow_unauthenticated_pk_update, bool append_update, const uint8_t *pk_data, size_t pk_data_size, const uint8_t *kek_data, size_t kek_data_size, uint8_t **new_data, size_t *new_data_size, uint64_t *log_data); #endif libstb-secvar-main/include/log.h000066400000000000000000000016041470177641100171260ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #ifndef __LIBSTB_SECVAR_LOG_H #define __LIBSTB_SECVAR_LOG_H #define PR_EMERG 0 #define PR_ALERT 1 #define PR_CRIT 2 #define PR_ERR 3 #define PR_WARNING 4 #define PR_NOTICE 5 #define PR_PRINTF PR_NOTICE #define PR_INFO 6 #define PR_DEBUG 7 #define PR_TRACE 8 #define PR_INSANE 9 #define MAXLEVEL PR_INSANE extern int libstb_log_level; #ifndef NO_PRLOG #define prlog(l, ...) \ do \ { \ if (l <= libstb_log_level) \ fprintf ((l <= PR_ERR) ? stderr : stdout, ##__VA_ARGS__); \ } \ while (0) #else #define prlog(l, ...) #endif #endif libstb-secvar-main/include/phyp.h000066400000000000000000000030001470177641100173150ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #ifndef __LIBSTB_SECVAR_PHYP_H #define __LIBSTB_SECVAR_PHYP_H #include #include #include /* * Apply an update based on phyp rules. * * @label/@label_size: variable name * @current_data/@current_data_size: current var contents, or NULL/0 * @update_data: message data * @update_data_size: message data length * @allow_unauthenticated_pk_update: allow an unauthenticated PK update? * @append_update: is this an append? * @pk_data/@pk_data_size: the current contents of the PK variable, or NULL/0 * @kek_data/@kek_data_size: contents of KEK variable or NULL/0 * @new_data/@new_data_size: out * @log_data: out - single uint64_t of trace data * * If new_data_size is 0, new_data will be NULL. This represents variable deletion. * return code: SUCCESS if the update was valid, otherwise an error code. * * Lifetime: new_data is a fresh allocation if rc = SUCCESS. Caller must free with libstb_free(). */ int update_var_from_auth (const uint8_t *label, size_t label_size, const uint8_t *update_data, size_t update_data_size, const uint8_t *current_data, size_t current_data_size, bool allow_unauthenticated_pk_update, bool append_update, const uint8_t *pk_data, size_t pk_data_size, const uint8_t *kek_data, size_t kek_data_size, uint8_t **new_data, size_t *new_data_size, uint64_t *log_data); #endif libstb-secvar-main/include/secvar/000077500000000000000000000000001470177641100174565ustar00rootroot00000000000000libstb-secvar-main/include/secvar/authentication_2.h000066400000000000000000000041151470177641100230700ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #ifndef __LIBSTB_SECVAR_AUTHENTICATION_2_H #define __LIBSTB_SECVAR_AUTHENTICATION_2_H #include #include #include #include "libstb-secvar-errors.h" /* * Unpack an authenticated variable update into: * - a validated the EFI timestamp (in that the fixed bytes are zero * TODO enforce limits on D,M,Y,H,M,S) * - a PKCS#7 message * - the data over which the signature is made. * * The result shall be either an error code describing the way in which the data * is unsuitable, or a set of data structures ready for signature verification. * * Successful return of the function implies that the authentication_2 structure * is valid but does not say anything about the PKCS#7 message. * * NB: it is possible for *data to point just past the end of buf and have * data_size = 0! * * Lifetime: outputs are just pointers into the input buffer, so they have the * same lifetime as the underlying buffer. */ sv_err_t unpack_authenticated_variable (const auth_data_t *auth_data, timestamp_t *timestamp, const uint8_t **cert_data, size_t *cert_size, const uint8_t **data, size_t *data_size); /* * generate a hash for comparison with an auth2 signed structure * * @data: data portion of the message or NULL if there is no data * @data_size: size of the data if present. * * @hash: out: buffer containing the hash. Allocated inside function * * Returns: 0 on success, otherwise an error from the crypto library * (e.g. out of memory) * * Lifetime: output is expected to be storage managed by the caller. * * It isn't clear that SHA-256 should be the only supported hash algo but * construction of the authentication_2 structure makes it clear that only * SHA-256 is acceptable, so this generates a SHA-256 hash unconditionally. */ sv_err_t construct_auth2_hash (const auth_data_t *auth_data, const timestamp_t *timestamp, const uint8_t *data, const size_t data_size, uint8_t **hash); #endif libstb-secvar-main/include/secvar/crypto.h000066400000000000000000000241651470177641100211570ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #ifndef LIBSTB_SECVAR_CRYPTO_H #define LIBSTB_SECVAR_CRYPTO_H #include #ifdef SECVAR_CRYPTO_OPENSSL #include #include #include #include #define OPENSSL_SUCCESS 0 #define CRYPTO_SUCCESS OPENSSL_SUCCESS #define CRYPTO_MD_SHA1 NID_sha1 #define CRYPTO_MD_SHA224 NID_sha224 #define CRYPTO_MD_SHA256 NID_sha256 #define CRYPTO_MD_SHA384 NID_sha384 #define CRYPTO_MD_SHA512 NID_sha512 typedef PKCS7 crypto_pkcs7_t; typedef X509 crypto_x509_t; typedef EVP_MD_CTX crypto_md_ctx_t; #else #error Crypto Library not defined! Define SECVAR_CRYPTO_OPENSSL #endif /**====================PKCS7 Functions ====================**/ /* * free's the memory allocated for a pkcs7 structure * @param pkcs7 , a pointer to either a pkcs7 struct */ void crypto_pkcs7_free (crypto_pkcs7_t *pkcs7); /* *parses a buffer into a pointer to a pkcs7 struct. struct allocation is done internally to this func, but not dealloc *@param buf, buffer of data containg pkcs7 data or pkcs7 signed data *@param buflen, length of buf *@return if successful, a pointer to a pkcs7 struct. else returns NULL *NOTE: if successful (returns not NULL), remember to call crypto_free_pkcs7 to unalloc. */ crypto_pkcs7_t *crypto_pkcs7_parse_der (const unsigned char *buf, const int buflen); /* * checks the pkcs7 struct for using SHA256 as the message digest * @param pkcs7 , a pointer to either a pkcs7 struct * @return CRYPTO_SUCCESS if message digest is SHA256 else return errno */ int crypto_pkcs7_md_is_sha256 (crypto_pkcs7_t *pkcs7); /* * returns one signing ceritficate from the PKKCS7 signing certificate chain * @param pkcs7 , a pointer to a pkcs7 struct * @param cert_num , the index (starts at 0) of the signing certificate to retrieve * @return a pointer to an X509 struct * NOTE: The returned pointer need not be freed, since it is a reference to memory in pkcs7 */ crypto_x509_t *crypto_pkcs7_get_signing_cert (crypto_pkcs7_t *pkcs7, int cert_num); /* * generates a PKCS7 and create signature with private and public keys * @param pkcs7, the resulting PKCS7 DER buff, newData not appended, NOTE: REMEMBER TO UNALLOC THIS MEMORY * @param pkcs7_size, the length of pkcs7 * @param new_data, data to be added to be used in digest * @param new_data_size , length of newData * @param crt_files, array of file paths to public keys to sign with(PEM) * @param key_files, array of file paths to private keys to sign with * @param key_pairs, array length of key/crtFiles * @param hash_funct, hash function to use in digest, see crypto_hash_funct for values * @return CRYPTO_SUCCESS or err number */ int crypto_pkcs7_generate_w_signature (unsigned char **pkcs7, size_t *pkcs7_size, const unsigned char *new_data, size_t new_data_size, const char **crt_files, const char **key_files, int key_pairs, int hash_funct); /* * generates a PKCS7 with given signed data * @param pkcs7, the resulting PKCS7, newData not appended, NOTE: REMEMBER TO UNALLOC THIS MEMORY * @param pkcs7Size, the length of pkcs7 * @param newData, data to be added to be used in digest * @param dataSize , length of newData * @param crtFiles, array of file paths to public keys that were used in signing with(PEM) * @param sigFiles, array of file paths to raw signed data files * @param keyPairs, array length of crt/signatures * @param hashFunct, hash function to use in digest, see crypto_hash_funct for values * @return CRYPTO_SUCCESS or err number * NOTE: This is not supported on openssl builds */ int crypto_pkcs7_generate_w_already_signed_data (unsigned char **pkcs7, size_t *pkcs7_size, const unsigned char *new_data, size_t new_data_size, const char **crt_files, const char **sig_files, int key_pairs, int hash_funct); /* * determines if signed data in pkcs7 is correctly signed by x509 by signing the hash with the * pk and comparing the resulting signature with that in the pkcs7 * @param pkcs7 , a pointer to a pkcs7 struct * @param x509 , a pointer to an x509 struct * @param hash , the expected hash * @param hash_len , the length of expected hash (ex: SHA256 = 32), if 0 then asssumptions are made based on md in pkcs7 * @return CRYPTO_SUCCESS or error number if resulting hashes are not equal */ int crypto_pkcs7_signed_hash_verify (crypto_pkcs7_t *pkcs7, crypto_x509_t *x509, unsigned char *hash, int hash_len); /**====================X509 Functions ====================**/ /* * checks if the x509 is a CA certificate * @param x509 , reference to the x509 * @return true if CA, otherwise false */ bool crypto_x509_is_CA (crypto_x509_t *x509); /* * gets the DER length of the x509 structure * @param x509 , reference to the x509 * @return length in bytes or negative value on error */ int crypto_x509_get_der_len (crypto_x509_t *x509); /* * gets the length of the to-be-signed buffer * @param x509 , reference to the x509 * @return length in bytes or negative value on error */ int crypto_x509_get_tbs_der_len (crypto_x509_t *x509); /* * gets the length of the signature * @param x509 , reference to the x509 * @return length in bytes or negative value on error */ int crypto_x509_get_sig_len (crypto_x509_t *x509); /* * gets the length in bits of the signature * @param x509, reference to the x509 * @return length in bits or negative value on error */ int crypto_x509_get_pk_bit_len (crypto_x509_t *x509); int crypto_x509_get_version (crypto_x509_t *x509); bool crypto_x509_is_RSA (crypto_x509_t *x509); /* * returns CRYPTO_SUCCESS if oid is sha256 */ int crypto_x509_oid_is_pkcs1_sha256(crypto_x509_t *x509); /* * unallocates x509 struct and memory * @param x509 , a pointer to an x509 struct */ void crypto_x509_free (crypto_x509_t *x509); /* *parses a buffer into a pointer to an x509 struct. struct allocation is done internally to this func, but not dealloc *@param buf, buffer of data containing x509 data in DER *@param buflen, length of buf *@return if successful, a pointer to an x509 struct. else returns NULL *NOTE: if successful (returns not NULL), remember to call crypto_x509_free to unalloc. */ crypto_x509_t *crypto_x509_parse_der (const unsigned char *data, size_t data_len); /* return CRYPTO_SUCCESS if md of cert is sha256 */ int crypto_x509_md_is_sha256 (crypto_x509_t *x509); /* * returns a short string describing the x509 message digest and encryption algorithms * @param x509, a pointer to an x509 struct * @param short_desc , already alloc'd pointer to output string * @param max_len , number of bytes allocated to short_desc arg */ void crypto_x509_get_short_info (crypto_x509_t *x509, char *short_desc, size_t max_len); /* * parses the x509 struct into a human readable informational string * @param x509_info , already alloc-d pointer to output string * @param max_len , number of bytes allocated to x509_info * @param delim , eachline will start with this, usually indent, when using openssl, the length of this value is the number of 8 spaced tabs * @param x509 , a pointer to an x509 struct * @return number of bytes written to x509_info */ int crypto_x509_get_long_desc (char *x509_info, size_t max_len, const char *delim, crypto_x509_t *x509); /**====================Hashing Functions ====================**/ /* * Initializes and returns hashing context for the hashing function identified * @param ctx , the returned hashing context * @param md_id , the id of the hahsing function see above for possible values (CRYPTO_MD_xxx ) * @return CRYPTO_SUCCESS or err if the digest context setup failed */ int crypto_md_ctx_init (crypto_md_ctx_t **ctx, int md_id); /* * can be repeatedly called to add data to be hashed by ctx * @param ctx , a pointer to either a hashing context * @param data , data to be hashed * @param data_len , length of data to be hashed * @return CRYPTO_SUCCESS or err if additional data could not be added to context */ int crypto_md_update (crypto_md_ctx_t *ctx, const unsigned char *data, size_t data_len); /* * runs the hash over the supplied data (given with crypto_md_update) and returns it in hash * @param ctx , a pointer to a hashing context * @param hash, an allocated data blob where the returned hash will be stored * @return CRYPTO_SUCCESS or err if the hash generation was successful */ int crypto_md_finish (crypto_md_ctx_t *ctx, unsigned char *hash); /* * frees the memory allocated for the hashing context * @param ctx , a pointer to a hashing context */ void crypto_md_free (crypto_md_ctx_t *ctx); /* * given a data buffer, generate the desired hash * @param data, data to be hashed * @param size , length of buff * @param hash_funct, crypto_md_funct, message digest type * @param out_hash , the resulting hash, currently unalloc'd NOTE: REMEMBER TO UNALLOC THIS MEMORY * @param out_hash_size, should be alg->size * @return CRYPTO_SUCCESS or err number * NOTE: out_hash is allocated inside this function and must be unallocated sometime after calling */ int crypto_md_generate_hash (const unsigned char *data, size_t size, int hash_funct, unsigned char **out_hash, size_t *out_hash_size); /**====================General Functions ====================**/ /* * accepts an error code from crypto backend and returns a string describing it * @param rc , the error code * @param out_str , an already allocated string, will be filled with string describing the error code * @out_max_len , the number of bytes allocated to out_str */ void crypto_strerror (int rc, char *out_str, size_t out_max_len); /* * attempts to convert PEM data buffer into DER data buffer * @param input , PEM data buffer * @param ilen , length of input data * @param output , pointer to output DER data, not yet allocated * @param olen , pointer to length of output data * @return CRYPTO_SUCCESS or errno if conversion failed * Note: Remember to unallocate the output data! */ int crypto_convert_pem_to_der (const unsigned char *input, size_t ilen, unsigned char **output, size_t *olen); #endif libstb-secvar-main/include/secvar/crypto_util.h000066400000000000000000000003471470177641100222100ustar00rootroot00000000000000#ifndef CRYPTO_UTIL_H #define CRYPTO_UTIL_H #include "crypto.h" int validate_x509_certificate (crypto_x509_t *x509); int get_pkcs7_certificate (const uint8_t *cert_data, size_t cert_data_len, crypto_pkcs7_t **pkcs7_cert); #endiflibstb-secvar-main/include/secvar/esl.h000066400000000000000000000106031470177641100204120ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #ifndef __LIBSTB_SECVAR_ESL_H #define __LIBSTB_SECVAR_ESL_H #include #include #include #include "libstb-secvar-errors.h" /* * If you have two certificates with the same size, should we combine them * into 1 ESL w/ 2 ESDs, or 2 ESLs each w/ 1 ESD? * * Certificates will 'normally' be in their own ESLs, but ESLs can sometimes * contain multiple. * Skiboot and skiboot derived tools cannot handle cert ESLs with multiple ESDs. */ #define DO_NOT_MERGE_CERTIFICATE_ESLS /* * next_esl_from_buffer: given the current ESL or NULL, what's the next * valid and complete ESL within the buffer? * * @buf: input buffer * @buf_size: how big is @buf? * * @esl: pointer to pointer to esl data. * in: pointer to the current ESL or NULL if you're at the beginning. * out: pointer to the next ESL or NULL if there's no subsequent ESL. * * @esl_size: out: size of the next esl * * Returns: 0 on success, otherwise an error code. * * Lifetimes: esl is a pointer into buf, so the lifetime is that of the * containing buffer. */ sv_err_t next_esl_from_buffer (const uint8_t *buf, size_t buf_size, const uint8_t **esl, size_t *esl_size); /* * next_esd_from_esl_buffer: given the current ESD or NULL, what's the next * valid and complete ESD within the buffer? * * @esl: input buffer, containing a valid and complete ESL - that is, containing * at least as many bytes as declared in the ESL. * * @esd_data: pointer to pointer to esd signature data. * in: pointer to the current data or NULL if you're at the beginning. * out: pointer to the next ESD data or NULL if there's no subsequent ESD. * * @esd_data_size: out: size of the next esd *data* (exclusive of UUID) * * @esd_owner: out: SignatureOwner, set if there's a valid ESD. * * Returns: 0 on success, otherwise an error code. * * Lifetimes: esd_data is a pointer into esl, so the lifetime is that of the * containing buffer. */ sv_err_t next_esd_from_esl (const uint8_t *esl, const uint8_t **esd_data, size_t *esd_data_size, uuid_t *esd_owner); /* * next_cert_from_esls_buffer: given the current certificate or NULL, what's the * next certificate within the buffer of ESLs? * * @buf: input buffer, expected to contain ESLs of EFI_CERT_X509_GUID. * @buf_size: how big is @buf? * * @cert: pointer to pointer to certificate data. * in: pointer to the current cert or NULL if you're at the beginning. * out: pointer to the next cert or NULL if there's no subsequent cert. * * @cert_size: out: size of the next esl * * @cert_owner: out: UUID representing certificate owner. * * @esl: in/out: opaque storage for internal state. Pass in storage for 1 * uint8_t pointer. * * Returns: 0 on success, otherwise an error code. * * Lifetimes: cert is a pointer into buf, so the lifetime is that of the * containing buffer. */ sv_err_t next_cert_from_esls_buf (const uint8_t *buf, size_t buf_size, const uint8_t **cert, size_t *cert_size, uuid_t *cert_owner, const uint8_t **esl); /* * Merge 2 ESL buffers * Applying an append update is not as trivial as the name suggests for an * EFI_IMAGE_SECURITY_DATABASE variable (db, dbx) because we're supposed to * de-duplicate entries: s 8.2.2: * * For variables with the GUID EFI_IMAGE_SECURITY_DATABASE_GUID (i.e. where the * data buffer is formatted as EFI_SIGNATURE_LIST), the driver shall not * perform an append of EFI_SIGNATURE_DATA values that are already part of the * existing variable value. * * @cur_buf: current variable data, expected to be a series of ESLs. * @cur_buf_size: size * @update_buf: update data, expected to be a series of ESLs. * @update_buf_size: size * @out_buf: out: buffer to write data to or NULL, see Notes * @out_buf_size: in: size of buffer * out: bytes written/required (see Notes) * Notes: If called with a NULL out buffer, sets out size and return success * without copying data. Otherwise, updates out_buf_size with the number of bytes * written. * * Returns: 0 on success, otherwise an error code. * * Lifetime: copies data from inputs to output, no internal allocations. */ sv_err_t merge_esls (const uint8_t *cur_buf, size_t cur_buf_size, const uint8_t *update_buf, size_t update_buf_size, uint8_t *out_buf, size_t *out_buf_size); #endif libstb-secvar-main/include/secvar/pseries.h000066400000000000000000000125611470177641100213060ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ /* * Here we wrap the EDK2-like primitives in something that has the pseries quirks. Quirks such as: * * - UUIDs are determined by looking at the name. The names PK, KEK, db, dbx * and get their UUIDs from existing implementations and the * shim respectively. Other variables are all inside a single UUID namespace. * * - The attributes are always 0x27 or 0x67. (NV BS RT TBAW and optionally * APPEND). There is no PKS policy bit for these so will need to come via a * separate input (e.g. the first byte of the data submitted to the kernel). * * - There's no setup mode but rather a magic switch that allows you to do * unauthenticated PK updates only. * * - We have a special thing you can pass in to PK, which _must_ be called with * the unauthenticated PK update switch on, which tells the upper layer to * delete all signed variables. This is for migrating back towards a system * that doesn't support signed variables. * * - We do not allow PK to be empty (except in the case above). We require PK to * contain 1 and only 1 ESL, containing 1 certificate. * * - We do not allow append updates to PK. (That would break the 1 certificate * rule.) * * - This means that the following pieces of info fully determine SB state: * - ibm,secure-boot: is SB enforced or not * - SB_VERSION: are static keys or dynamic keys used for SB? * * - Names come to us uint8_t sequences + length - unlike EDK2 where they are * UCS-2 character strings - that is 16-bits per character and with a 0-valued * character terminator (C strings but with "char" being 16-bit). We therefore * have to deal with: * * - PKS labels may have odd-numbered bytes: reject attempt * to create such a signed var. * * - PKS labels may contain any number of consecutive embedded nul/0 bytes: * reject a name that contains an embedded 16-bit nul character - e.g. * P\0\0\0K\0 (but permit P\0\0K). * * - PKS objects representing signed variables come wrapped in a metadata * structure in order to store their timestamps. The current value of the * variable being updated, and the PK and KEK variables passed to this function * are expected to include this metadata, and the resulting data from this * function will include metadata (unless the variable is being deleted). * * - We require that PK and KEK contain only RSA-2048 or RSA-4096 certificates, * otherwise we reject the update. (This is enforced at time of use in * update.c; this checks it at time of update too.) * */ #ifndef __LIBSTB_SECVAR_PSERIES_H #define __LIBSTB_SECVAR_PSERIES_H #include #include #include #include #include "crypto.h" #include "libstb-secvar-errors.h" /* UUID('36fd7583-986a-4b15-8228-041664342d51') */ static const uuid_t POWER_VENDOR_GUID = { { 0x83, 0x75, 0xfd, 0x36, 0x6a, 0x98, 0x15, 0x4b, 0x82, 0x28, 0x04, 0x16, 0x64, 0x34, 0x2d, 0x51 } }; #define SECVAR_ATTRIBUTES 39 #define WIPE_SB_MAGIC \ "Yes, I want to delete all secure variables and reset secure boot to " \ "static keys.\n" struct var_hdr_timestamp { leint16_t year; uint8_t month; uint8_t day; uint8_t hour; uint8_t minute; uint8_t second; } SV_PACKED; struct signed_variable_header { uint8_t version; /* must be 0 */ struct var_hdr_timestamp timestamp; } SV_PACKED; /* derive our vendor GUID */ uuid_t * get_guid (uint16_t *name); /* Apply an update based on pseries rules. * * If new_data_size is 0, new_data will be NULL. This represents variable deletion. * return code: SUCCESS if the update was valid, otherwise an error code. * * Lifetime: new_data is a fresh allocation if SUCCESS. Caller must free with libstb_free(). */ sv_err_t pseries_update_variable (const update_req_t *updatereq, uint8_t **new_data, size_t *new_data_size); /* * Given a variable update, determine if it is validly signed, and apply it. * Validates signature and timestamp. If the variable is a EFI_IMAGE_SECURITY_DATABASE * (i.e. db, dbx) and the append attribute is set, performs an ESL merge with current data. * * Beyond that, no verification is done: * - no verification of initial writes to db/dbx * - no verification for db/dbx that ESL GUIDs make sense for the variable * - no verification at all on the contents of any other variable. * * If new_esl_data_size is 0, new_esl_data will be NULL. This represents variable deletion. * return code: SUCCESS if the update was valid, otherwise an error code. * * Lifetime: new_esl_data is a fresh allocation if rc = SUCCESS. * Caller must free with libstb_free(). */ sv_err_t pseries_apply_update (const auth_data_t *auth_data, uint8_t **new_esl_data, size_t *new_esl_data_size, timestamp_t *new_time, sv_flag_t *verified_flag); /* * Given a variable update from a EDK2 EFI_VARIABLE_AUTHENTICATION_2 format * message, determine if it is validly signed. */ sv_err_t verify_signature (const auth_data_t *auth_data, const timestamp_t *timestamp, const uint8_t *cert_data, const size_t cert_data_size, const uint8_t *esl_data, const size_t esl_data_size, sv_flag_t *verified_flag); #endif libstb-secvar-main/include/secvar/util.h000066400000000000000000000012461470177641100206070ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #ifndef __LIBSTB_SECVAR_UTIL_H #define __LIBSTB_SECVAR_UTIL_H #include "config.h" #include #include #include static inline bool uuid_equals (const uuid_t *a, const uuid_t *b) { return (memcmp (a, b, UUID_SIZE) == 0); } static inline size_t wide_strlen (const uint16_t *a) { size_t i = 0; while (a[i]) i++; return i; } static inline bool wide_str_equals (const uint16_t *a, const uint16_t *b) { size_t alen, blen; alen = wide_strlen (a); blen = wide_strlen (b); return (alen == blen && memcmp (a, b, alen * 2) == 0); } #endif libstb-secvar-main/src/000077500000000000000000000000001470177641100153375ustar00rootroot00000000000000libstb-secvar-main/src/authentication_2.c000066400000000000000000000132571470177641100207530ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #include #include #include "log.h" #include "secvar/util.h" #include "secvar/crypto.h" #include "secvar/authentication_2.h" /* * Unpack an authenticated variable update into: * - a validated the EFI timestamp (in that the fixed bytes are zero * TODO enforce limits on D,M,Y,H,M,S) * - a PKCS#7 message * - the data over which the signature is made. * * The result shall be either an error code describing the way in which the data * is unsuitable, or a set of data structures ready for signature verification. * * Successful return of the function implies that the authentication_2 structure * is valid but does not say anything about the PKCS#7 message. * * NB: it is possible for *data to point just past the end of buf and have * data_size = 0! * * Lifetime: outputs are just pointers into the input buffer, so they have the * same lifetime as the underlying buffer. */ sv_err_t unpack_authenticated_variable (const auth_data_t *auth_data, timestamp_t *timestamp, const uint8_t **cert_data, size_t *cert_size, const uint8_t **data, size_t *data_size) { const auth_info_t *auth = NULL; size_t da_length = 0, left = 0; if (auth_data->auth_msg_size < sizeof (auth_info_t)) { prlog (PR_ERR, "Buffer too small for an auth2 header - got %lu bytes.\n", (unsigned long) auth_data->auth_msg_size); return SV_BUF_INSUFFICIENT_DATA; } auth = (auth_info_t *) auth_data->auth_msg; if (auth->timestamp.pad1 != 0 || auth->timestamp.nanosecond != 0 || auth->timestamp.timezone != 0 || auth->timestamp.daylight != 0 || auth->timestamp.pad2 != 0) { prlog (PR_ERR, "Timestamp reserved bytes were not NULL\n"); return SV_AUTH_INVALID_FIXED_VALUE; } *timestamp = auth->timestamp; /* * avoiding under and overflow properly here is a bit tricky: * we know that we can fit the fixed bits, so left >= 0 now */ left = auth_data->auth_msg_size - sizeof (auth_info_t); da_length = le32_to_cpu (auth->auth_cert.hdr.da_length); /* * da_length includes the header and should include the uuid in the * outer structure also */ if (da_length <= sizeof (auth_cert_t)) { prlog (PR_ERR, "da_length in auth header too short for fixed data - %lu bytes\n", (unsigned long) da_length); return SV_AUTH_SIZE_INVALID; } if (da_length - sizeof (auth_cert_t) > left) { prlog (PR_ERR, "da_length in auth header would run past the end of the buffer\n"); return SV_AUTH_SIZE_INVALID; } /* * at this point we have that we can consume dw_length bytes * Check the other fields */ if (auth->auth_cert.hdr.a_revision != CPU_TO_LE16 (0x0200)) return SV_AUTH_UNSUPPORTED_REVISION; if (auth->auth_cert.hdr.a_certificate_type != CPU_TO_LE16 (AUTH_CERT_TYPE_GUID)) { prlog (PR_ERR, "a_certificate_type in auth header is not AUTH_CERT_TYPE_EFI_GUID, instead got 0x%x\n", auth->auth_cert.hdr.a_certificate_type); return SV_AUTH_INVALID_FIXED_VALUE; } if (!uuid_equals (&auth->auth_cert.cert_type, &AUTH_CERT_TYPE_PKCS7_GUID)) { prlog (PR_ERR, "Expecting a AUTH_CERT_TYPE_PKCS7_GUID in auth2 header, " "got something else.\n"); return SV_AUTH_INVALID_FIXED_VALUE; } /*auth certificate */ *cert_data = auth->auth_cert.cert_data; *cert_size = da_length - sizeof (auth_cert_t); /* esl data */ left -= *cert_size; *data = auth_data->auth_msg + sizeof (auth_info_t) + *cert_size; *data_size = left; return SV_SUCCESS; } /* * generate a hash for comparison with an auth2 signed structure * * @data: data portion of the message or NULL if there is no data * @data_size: size of the data if present. * * @hash: out: buffer containing the hash. To be allocated * * Returns: 0 on success, otherwise an error from the crypto library * (e.g. out of memory) * * Lifetime: output is expected to be storage managed by the caller. * * It isn't clear that SHA-256 should be the only supported hash algo but * construction of the authentication_2 structure makes it clear that only * SHA-256 is acceptable, so this generates a SHA-256 hash unconditionally. */ sv_err_t construct_auth2_hash (const auth_data_t *auth_data, const timestamp_t *timestamp, const uint8_t *data, const size_t data_size, uint8_t **hash) { sv_err_t rc = SV_SUCCESS; size_t name_len = 0, hash_len = 0, len = 0; uint8_t *auth_msg = NULL; uint32_t le_attributes = cpu_to_le32 (auth_data->attributes); /* don't rely on anyone being able to provide us with a wchar typed strlen */ while (auth_data->name[name_len] != 0) name_len++; len = (name_len * 2) + sizeof (uuid_t) + sizeof (uint32_t) + sizeof (timestamp_t) + data_size; auth_msg = (uint8_t *) libstb_zalloc (len); if (auth_msg == NULL) return SV_ALLOCATION_FAILED; len = 0; memcpy (auth_msg + len, (uint8_t *) auth_data->name, name_len * 2); len += name_len * 2; memcpy (auth_msg + len, (uint8_t *) auth_data->vendor, sizeof (uuid_t)); len += sizeof (uuid_t); memcpy (auth_msg + len, (uint8_t *) &le_attributes, sizeof (uint32_t)); len += sizeof (uint32_t); memcpy (auth_msg + len, (uint8_t *) timestamp, sizeof (timestamp_t)); len += sizeof (timestamp_t); if (data != NULL) { memcpy (auth_msg + len, data, data_size); len += data_size; } rc = crypto_md_generate_hash (auth_msg, len, CRYPTO_MD_SHA256, hash, &hash_len); if (rc != SV_SUCCESS) { prlog (PR_ERR, "auth2 hash generation failed\n"); } libstb_free (auth_msg); return rc; } libstb-secvar-main/src/crypto_openssl.c000066400000000000000000000533241470177641100205750ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #include "log.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include "secvar/crypto.h" /* X509 */ bool crypto_x509_is_CA (crypto_x509_t *x509) { return !!X509_check_ca (x509); } int crypto_x509_get_der_len (crypto_x509_t *x509) { return i2d_X509 (x509, NULL); } int crypto_x509_get_tbs_der_len (crypto_x509_t *x509) { return i2d_re_X509_tbs (x509, NULL); } int crypto_x509_get_version (crypto_x509_t *x509) { /* * add one because function return one less than actual certificate version, * see https://www.openssl.org/docs/man1.1.0/man3/X509_get_version.html */ return X509_get_version (x509) + 1; } bool crypto_x509_is_RSA (crypto_x509_t *x509) { int pk_type; EVP_PKEY *pub = NULL; pub = X509_get_pubkey (x509); if (!pub) { prlog (PR_ERR, "ERROR: Failed to extract public key from x509\n"); return false; } pk_type = EVP_PKEY_base_id (pub); if (pk_type == NID_undef) prlog (PR_ERR, "ERROR: Failed to extract key type from x509\n"); EVP_PKEY_free (pub); return pk_type == EVP_PKEY_RSA; } int crypto_x509_get_pk_bit_len (crypto_x509_t *x509) { EVP_PKEY *pub = NULL; int length, rc; pub = X509_get_pubkey (x509); if (!pub) { prlog (PR_ERR, "ERROR: Failed to extract public key from x509\n"); rc = ERR_get_error(); rc = !rc ? ERR_PACK(ERR_LIB_X509, 0, X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY) : rc; // make sure negative return rc > 0 ? rc * -1 : rc; } #if !defined(OPENSSL_VERSION_MAJOR) || OPENSSL_VERSION_MAJOR < 3 RSA *rsa = NULL; rsa = EVP_PKEY_get1_RSA (pub); if (!rsa) { prlog (PR_ERR, "ERROR: Failed to extract RSA information from public key " "of x509\n"); EVP_PKEY_free(pub); goto err_out; } length = RSA_bits (rsa); RSA_free (rsa); #else if (EVP_PKEY_get_base_id (pub) != EVP_PKEY_RSA) { prlog (PR_ERR, "ERROR: Public key of x509 is not of type RSA\n"); EVP_PKEY_free (pub); EVP_PKEY_free(pub); goto err_out; } length = EVP_PKEY_get_bits (pub); #endif if (!length) { prlog (PR_ERR, "ERROR: Failed to extract key length from RSA public key " "of x509\n"); EVP_PKEY_free(pub); goto err_out; } EVP_PKEY_free (pub); return length; err_out: rc = ERR_get_error(); // if no error then make a reasonable one rc = !rc ? ERR_PACK(ERR_LIB_X509, 0, X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY) : rc; // make sure negative return rc > 0 ? rc * -1 : rc; } int crypto_x509_get_sig_len (crypto_x509_t *x509) { int rc; ASN1_BIT_STRING *sig; sig = X509_get0_pubkey_bitstr (x509); if (!sig) { prlog (PR_ERR, "ERROR: Could not extract signature length from x509\n"); rc = ERR_get_error (); rc = !rc ? ERR_PACK (ERR_LIB_X509, 0, X509_R_INVALID_FIELD_NAME) : rc; if (rc >= 0) rc *= -1; return rc; } return sig->length; } int crypto_x509_oid_is_pkcs1_sha256 (crypto_x509_t *x509) { int rc; const X509_ALGOR *alg = NULL; alg = X509_get0_tbs_sigalg (x509); if (!alg) { prlog (PR_ERR, "ERROR: Could not extract algorithm from X509\n"); rc = ERR_get_error (); return !rc ? ERR_PACK (ERR_LIB_X509, 0, X509_R_UNSUPPORTED_ALGORITHM) : rc; } if (OBJ_obj2nid (alg->algorithm) != NID_sha256WithRSAEncryption) { rc = ERR_get_error (); return !rc ? ERR_PACK (ERR_LIB_X509, 0, X509_R_UNSUPPORTED_ALGORITHM) : rc; } return OPENSSL_SUCCESS; } void crypto_x509_free (crypto_x509_t *x509) { X509_free (x509); } crypto_pkcs7_t *crypto_pkcs7_parse_der (const unsigned char *buf, const int buflen) { PKCS7 *pkcs7; pkcs7 = d2i_PKCS7 (NULL, &buf, buflen); if (!pkcs7) { PKCS7_SIGNED *signed_data; /* * Something could be wrong, or it could be that we've been * given a signedData instead of a full message. */ signed_data = d2i_PKCS7_SIGNED (NULL, &buf, buflen); if (!signed_data) { prlog (PR_ERR, "ERROR: parsing PKCS7 with OpenSSL failed\n"); return NULL; } /* allocate PKCS7 for signed data to be stored in */ pkcs7 = PKCS7_new(); if (!pkcs7) { prlog (PR_ERR, "ERROR: PKCS7 allocation failed\n"); PKCS7_SIGNED_free(signed_data); return NULL; } pkcs7->type = OBJ_nid2obj(NID_pkcs7_signed); pkcs7->d.sign = signed_data; } /* make sure it contains signed data, openssl supports other types */ if (!PKCS7_type_is_signed (pkcs7)) { prlog (PR_ERR, "ERROR: PKCS7 does not contain signed data\n"); PKCS7_free (pkcs7); return NULL; } return pkcs7; } int crypto_pkcs7_md_is_sha256 (crypto_pkcs7_t *pkcs7) { int rc; X509_ALGOR *alg; /* * extract signer algorithms from pkcs7 * we successfully parsed the PKCS#7 message so we do not expect * this to fail */ alg = sk_X509_ALGOR_value (pkcs7->d.sign->md_algs, 0); if (!alg) { prlog (PR_ERR, "ERROR: Could not extract message digest identifiers from " "PKCS7\n"); rc = ERR_get_error(); return !rc ? ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_UNKNOWN_DIGEST_TYPE) : rc; } /* extract nid from algorithms and ensure it is the same nid as SHA256 */ if (OBJ_obj2nid (alg->algorithm) == NID_sha256) return OPENSSL_SUCCESS; rc = ERR_get_error(); return !rc ? ERR_PACK(ERR_LIB_PKCS7, 0,PKCS7_R_DIGEST_FAILURE) : rc; } void crypto_pkcs7_free (crypto_pkcs7_t *pkcs7) { PKCS7_free (pkcs7); } crypto_x509_t *crypto_pkcs7_get_signing_cert (crypto_pkcs7_t *pkcs7, int cert_num) { X509 *pkcs7_cert = NULL; pkcs7_cert = sk_X509_value (pkcs7->d.sign->cert, cert_num); return pkcs7_cert; } /* * currently this function works and the mbedtls version currently perform the following steps * 1. the hash, md context and given x509 are used to generated a signature * 2. all of the signatures in the pkcs7 are compared to the signature generated by the x509 * 3. if any of the signatures in the pkcs7 match the genrated signature then return SV_SUCCESS */ int crypto_pkcs7_signed_hash_verify (crypto_pkcs7_t *pkcs7, crypto_x509_t *x509, unsigned char *hash, int hash_len) { int exp_size, md_nid, num_signers, rc = ERR_R_INTERNAL_ERROR; unsigned char *exp_sig; EVP_PKEY *pk; EVP_PKEY_CTX *pk_ctx; X509_ALGOR *alg; const EVP_MD *evp_md; PKCS7_SIGNER_INFO *signer_info; /* generate a signature with the x509 */ pk = X509_get_pubkey (x509); pk_ctx = EVP_PKEY_CTX_new (pk, NULL); if (pk == NULL || pk_ctx == NULL) { prlog (PR_ERR, "ERROR: Failed to create public key context from x509\n"); rc = ERR_get_error(); return !rc ? ERR_R_INTERNAL_ERROR : rc; } if (EVP_PKEY_verify_init (pk_ctx) <= 0) { prlog (PR_ERR, "ERROR: Failed to initialize pk context for x509 pk \n"); rc = ERR_get_error(); goto out; } if (EVP_PKEY_CTX_set_rsa_padding (pk_ctx, RSA_PKCS1_PADDING) <= 0) { prlog (PR_ERR, "ERROR: Failed to setup pk context with RSA padding\n"); rc = ERR_get_error(); goto out; } /* extract signer algorithms from pkcs7 */ alg = sk_X509_ALGOR_value (pkcs7->d.sign->md_algs, 0); if (!alg) { prlog (PR_ERR, "ERROR: Could not extract message digest identifiers from " "PKCS7\n"); rc = ERR_get_error(); goto out; } /* extract nid from algorithms */ md_nid = OBJ_obj2nid (alg->algorithm); /* set signature md depending on md in pkcs7 */ evp_md = EVP_get_digestbynid (md_nid); if (!evp_md) { prlog (PR_ERR, "ERROR: Unknown NID (%d) for MD found in PKCS7\n", md_nid); rc = ERR_get_error();; goto out; } if (EVP_PKEY_CTX_set_signature_md (pk_ctx, evp_md) <= 0) { prlog (PR_ERR, "ERROR: Failed to set signature md for pk ctx\n"); rc = ERR_get_error(); goto out; } //assume hash length if none given if (hash_len == 0) hash_len = EVP_MD_size(evp_md); /* verify on all signatures in pkcs7 */ num_signers = sk_PKCS7_SIGNER_INFO_num (PKCS7_get_signer_info (pkcs7)); if (num_signers == 0) { prlog (PR_ERR, "ERROR: no signers to verify"); goto out; } else if (num_signers < 0) { prlog(PR_ERR, "ERROR: pkcs7->signer_info was NULL"); goto out; } for (int s = 0; s < num_signers; s++) { /* make sure we can get the signature data */ signer_info = sk_PKCS7_SIGNER_INFO_value (PKCS7_get_signer_info (pkcs7), s); if (!signer_info) { prlog (PR_ERR, "ERROR: Could not get PKCS7 signer information\n"); rc = ERR_get_error(); goto out; } exp_size = signer_info->enc_digest->length; exp_sig = signer_info->enc_digest->data; if (exp_size <= 0 || !exp_sig) { prlog (PR_ERR, "ERROR: No data found in PKCS7\n"); rc = ERR_get_error(); goto out; } rc = EVP_PKEY_verify (pk_ctx, exp_sig, exp_size, hash, hash_len); /* * returns 1 on success * if successfull then exit */ if (rc == 1) goto out; rc = ERR_get_error(); } out: EVP_PKEY_free (pk); EVP_PKEY_CTX_free (pk_ctx); if (rc == 1) return OPENSSL_SUCCESS; return !rc ? ERR_R_INTERNAL_ERROR : rc; } void crypto_strerror (int rc, char *out_str, size_t out_max_len) { ERR_error_string_n (rc, out_str, out_max_len); } crypto_x509_t *crypto_x509_parse_der (const unsigned char *data, size_t data_len) { return d2i_X509 (NULL, &data, data_len); } int crypto_x509_md_is_sha256 (crypto_x509_t *x509) { int rc; const X509_ALGOR *alg = NULL; alg = X509_get0_tbs_sigalg (x509); if (!alg) { prlog (PR_ERR, "ERROR: Could not extract algorithm from X509\n"); rc = ERR_get_error (); return !rc ? ERR_PACK (ERR_LIB_X509, 0, X509_R_INVALID_FIELD_NAME) : rc; } if (OBJ_obj2nid (alg->algorithm) == NID_sha256WithRSAEncryption) return OPENSSL_SUCCESS; else { prlog (PR_ERR, "ERROR: Certificate NID is not SHA256, expected %d found %d\n", NID_sha256, OBJ_obj2nid (alg->algorithm)); rc = ERR_get_error (); return !rc ? ERR_PACK (ERR_LIB_X509, 0, X509_R_UNSUPPORTED_ALGORITHM) : rc; } } void crypto_x509_get_short_info (crypto_x509_t *x509, char *short_desc, size_t max_len) { const X509_ALGOR *alg = NULL; alg = X509_get0_tbs_sigalg (x509); /* unlikely failure */ if (!alg) { prlog (PR_ERR, "ERROR: Could not extract algorithm from X509\n"); return; } /* last arg set as ZERO to get short description in string */ OBJ_obj2txt (short_desc, max_len, alg->algorithm, 0); } int crypto_x509_get_long_desc (char *x509_info, size_t max_len, const char *delim, crypto_x509_t *x509) { int rc; long actual_mem_len; BIO *bio = BIO_new (BIO_s_mem ()); char *tmp = NULL; rc = X509_print_ex (bio, x509, XN_FLAG_MULTILINE, X509_FLAG_COMPAT | X509_FLAG_NO_PUBKEY | X509_FLAG_NO_SIGDUMP); if (rc < 0) { prlog (PR_ERR, "ERROR: could not get BIO data on X509, openssl err#%d\n", rc); return rc; } /* returns total data avialable */ actual_mem_len = BIO_get_mem_data (bio, &tmp); /* check to make sure we do not overflow the allocated mem */ actual_mem_len = max_len > actual_mem_len ? actual_mem_len : max_len - 1; memcpy (x509_info, tmp, actual_mem_len); BIO_free (bio); return actual_mem_len; } int crypto_convert_pem_to_der (const unsigned char *input, size_t ilen, unsigned char **output, size_t *olen) { int rc; /* these variables are not needed on return, just needed to properly call the function */ char *header = NULL, *name = NULL; BIO *bio; bio = BIO_new_mem_buf (input, ilen); /* returns 1 on success so flip result*/ rc = !PEM_read_bio (bio, &name, &header, output, (long int *) olen); if (header) OPENSSL_free (header); if (name) OPENSSL_free (name); BIO_free (bio); return rc; } int crypto_pkcs7_generate_w_signature (unsigned char **pkcs7, size_t *pkcs7_size, const unsigned char *new_data, size_t new_data_size, const char **crt_files, const char **key_files, int key_pairs, int hash_funct) { int rc; PKCS7 *gen_pkcs7_struct = NULL; BIO *bio = NULL, *out_bio = NULL; FILE *fp; EVP_PKEY *evp_pkey = NULL; const EVP_MD *evp_md = NULL; crypto_x509_t *x509 = NULL; long pkcs7_out_len; unsigned char *key = NULL, *key_tmp, *crt = NULL, *out_bio_der = NULL; char *unnecessary_hdr = NULL, *unnecessary_name = NULL; long int key_size, crt_size; if (key_pairs == 0) { prlog (PR_ERR, "ERROR: No signers given, cannot generate PKCS7\n"); return ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_PKCS7_ADD_SIGNER_ERROR); } evp_md = EVP_get_digestbynid (hash_funct); if (!evp_md) { prlog (PR_ERR, "ERROR: Unknown NID (%d) for MD found in PKCS7\n", hash_funct); rc = ERR_get_error(); return !rc ? ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_PKCS7_ADD_SIGNER_ERROR) : rc; } bio = BIO_new_mem_buf (new_data, new_data_size); if (!bio) { prlog (PR_ERR, "ERROR: Failed to initialize new data BIO structure\n"); rc = ERR_get_error(); rc = !rc ? ERR_R_MALLOC_FAILURE : rc; goto out; } gen_pkcs7_struct = PKCS7_sign (NULL, NULL, NULL, bio, PKCS7_PARTIAL | PKCS7_DETACHED); if (!gen_pkcs7_struct) { prlog (PR_ERR, "ERROR: Failed to initialize pkcs7 structure\n"); rc = ERR_get_error(); rc = !rc ? ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_PKCS7_ADD_SIGNER_ERROR) : rc; goto out; } /* for every key pair get the data and add the signer to the pkcs7 */ for (int i = 0; i < key_pairs; i++) { /* get data of private keys */ fp = fopen (key_files[i], "r"); if (fp == NULL) { prlog (PR_ERR, "ERROR: failed to open file %s: %s\n", key_files[i], strerror (errno)); rc = ERR_PACK(ERR_LIB_PKCS7, 0 ,PKCS7_R_NO_CONTENT); goto out; } rc = PEM_read (fp, &unnecessary_name, &unnecessary_hdr, &key, &key_size); OPENSSL_free (unnecessary_name); OPENSSL_free (unnecessary_hdr); fclose (fp); /* returns 1 on success */ if (rc != 1) { prlog (PR_ERR, "ERROR: failed to get data from priv key file %s\n", key_files[i]); rc = ERR_get_error(); rc = !rc ? ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_PKCS7_ADD_SIGNER_ERROR) : rc; goto out; } /* get data from crt */ fp = fopen (crt_files[i], "r"); if (fp == NULL) { prlog (PR_ERR, "ERROR: failed to open file %s: %s\n", crt_files[i], strerror (errno)); rc = ERR_get_error(); rc = !rc ? ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_PKCS7_ADD_SIGNER_ERROR) : rc; goto out; } rc = PEM_read (fp, &unnecessary_name, &unnecessary_hdr, &crt, &crt_size); OPENSSL_free (unnecessary_name); OPENSSL_free (unnecessary_hdr); fclose (fp); /* returns 1 on success */ if (rc != 1) { prlog (PR_ERR, "ERROR: failed to get data from cert file %s\n", crt_files[i]); rc = ERR_get_error(); rc = !rc ? ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_PKCS7_ADD_SIGNER_ERROR) : rc; goto out; } /* get private key from private key DER buff */ key_tmp = key; evp_pkey = d2i_AutoPrivateKey (NULL, (const unsigned char **) &key_tmp, key_size); if (!evp_pkey) { prlog (PR_ERR, "ERROR: Failed to parse private key into EVP_PKEY " "openssl struct\n"); rc = ERR_get_error(); rc = !rc ? ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_PKCS7_ADD_SIGNER_ERROR) : rc; goto out; } /* get x509 from cert DER buff */ x509 = crypto_x509_parse_der (crt, crt_size); if (!x509) { prlog (PR_ERR, "ERROR: Failed to parse certificate into x509 openssl " "struct\n"); rc = ERR_get_error(); rc = !rc ? ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_PKCS7_ADD_SIGNER_ERROR) : rc; goto out; } /* * add the signature to the pkcs7 * returns NULL is failure */ if (!PKCS7_sign_add_signer (gen_pkcs7_struct, x509, evp_pkey, evp_md, PKCS7_NOATTR)) { prlog (PR_ERR, "ERROR: Failed to add signer to the pkcs7 structure\n"); rc = ERR_get_error(); rc = !rc ? ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_PKCS7_ADD_SIGNER_ERROR) : rc; goto out; } /* reset mem */ OPENSSL_free (key); key = NULL; EVP_PKEY_free (evp_pkey); evp_pkey = NULL; OPENSSL_free (crt); crt = NULL; X509_free (x509); x509 = NULL; } /* finalize the struct, runs hashing and signatures */ rc = PKCS7_final (gen_pkcs7_struct, bio, PKCS7_BINARY); if (rc != 1) { prlog (PR_ERR, "ERROR: Failed to finalize openssl pkcs7 struct\n"); rc = ERR_get_error(); rc = !rc ? ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_PKCS7_ADD_SIGNER_ERROR) : rc; goto out; } /* convert to DER */ out_bio = BIO_new (BIO_s_mem ()); if (!out_bio) { prlog (PR_ERR, "ERROR: Failed to initialize openssl BIO \n"); rc = ERR_get_error(); rc = !rc ? ERR_R_MALLOC_FAILURE : rc; goto out; } /* returns 1 for success */ rc = i2d_PKCS7_bio (out_bio, gen_pkcs7_struct); if (!rc) { prlog (PR_ERR, "ERROR: Failed to convert PKCS7 Struct to DER\n"); rc = ERR_get_error(); rc = !rc ? ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_PKCS7_ADD_SIGNER_ERROR) : rc; goto out; } /* get data out of BIO and into return values */ pkcs7_out_len = BIO_get_mem_data (out_bio, &out_bio_der); /* returns number of bytes decoded or error */ if (pkcs7_out_len <= 0) { prlog (PR_ERR, "ERROR: Failed to extract PKCS7 DER data from openssl BIO\n"); rc = ERR_get_error(); rc = !rc ? ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_PKCS7_ADD_SIGNER_ERROR) : rc; goto out; } *pkcs7 = OPENSSL_malloc (pkcs7_out_len); if (!*pkcs7) { prlog (PR_ERR, "ERROR: Failed to allocate memory\n"); rc = ERR_get_error(); rc = !rc ? ERR_R_MALLOC_FAILURE : rc; goto out; } *pkcs7_size = pkcs7_out_len; /* copy memory over so it is persistent */ memcpy (*pkcs7, out_bio_der, *pkcs7_size); /* if here then successfull generation */ rc = OPENSSL_SUCCESS; out: if (key) OPENSSL_free (key); if (crt) OPENSSL_free (crt); if (evp_pkey) EVP_PKEY_free (evp_pkey); if (x509) X509_free (x509); if (gen_pkcs7_struct) PKCS7_free (gen_pkcs7_struct); BIO_free (bio); BIO_free (out_bio); return rc; } int crypto_pkcs7_generate_w_already_signed_data (unsigned char **pkcs7, size_t *pkcs7_size, const unsigned char *new_data, size_t new_data_size, const char **crt_files, const char **sig_files, int key_pairs, int hash_funct) { prlog (PR_ERR, "ERROR: Currently unable to support generation of PKCS7 with " "externally generated signatures when compiling with OpenSSL\n"); return ERR_PACK(ERR_LIB_PKCS7, 0, PKCS7_R_UNKNOWN_OPERATION); } int crypto_md_ctx_init (crypto_md_ctx_t **ctx, int md_id) { int rc; const EVP_MD *md; md = EVP_get_digestbynid (md_id); if (!md) { prlog (PR_ERR, "ERROR: Invalid MD NID\n"); rc = ERR_get_error(); return !rc ? ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_DIGEST) : rc; } *ctx = EVP_MD_CTX_new (); if (!*ctx) { prlog (PR_ERR, "ERROR: failed to allocate memory\n"); rc = ERR_get_error(); return !rc ? ERR_R_MALLOC_FAILURE : rc; } return !EVP_DigestInit_ex ((EVP_MD_CTX *) *ctx, md, NULL); } int crypto_md_update (crypto_md_ctx_t *ctx, const unsigned char *data, size_t data_len) { /* returns 1 on success and 0 for fail */ return !EVP_DigestUpdate (ctx, data, data_len); } int crypto_md_finish (crypto_md_ctx_t *ctx, unsigned char *hash) { /* returns 1 on success and 0 on fail */ return !EVP_DigestFinal_ex (ctx, hash, NULL); } void crypto_md_free (crypto_md_ctx_t *ctx) { EVP_MD_CTX_free (ctx); } int crypto_md_generate_hash (const unsigned char *data, size_t size, int hash_funct, unsigned char **out_hash, size_t *out_hash_size) { int rc; crypto_md_ctx_t *ctx = NULL; size_t hash_len = 0; rc = crypto_md_ctx_init (&ctx, hash_funct); if (rc) return rc; rc = crypto_md_update (ctx, data, size); if (rc) goto out; switch (hash_funct) { case CRYPTO_MD_SHA1: hash_len = SHA_DIGEST_LENGTH; break; case CRYPTO_MD_SHA224: hash_len = SHA224_DIGEST_LENGTH; break; case CRYPTO_MD_SHA256: hash_len = SHA256_DIGEST_LENGTH; break; case CRYPTO_MD_SHA384: hash_len = SHA384_DIGEST_LENGTH; break; case CRYPTO_MD_SHA512: hash_len = SHA512_DIGEST_LENGTH; break; default: prlog (PR_ERR, "ERROR: Unknown NID (%d)\n", hash_funct); rc = ERR_PACK(ERR_LIB_EVP, 0, EVP_R_INVALID_DIGEST); goto out; } *out_hash = OPENSSL_malloc (hash_len); if (!*out_hash) { prlog (PR_ERR, "ERROR: Failed to allocate data\n"); rc = ERR_R_MALLOC_FAILURE; goto out; } rc = crypto_md_finish (ctx, *out_hash); if (rc) { OPENSSL_free (*out_hash); *out_hash = NULL; goto out; } *out_hash_size = hash_len; out: crypto_md_free (ctx); return rc; } libstb-secvar-main/src/crypto_util.c000066400000000000000000000026551470177641100200700ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #include #include #include "secvar/crypto_util.h" #include "secvar/crypto.h" #include "libstb-secvar-errors.h" int validate_x509_certificate (crypto_x509_t *x509) { int len = 0; if (x509 == NULL) return SV_UNEXPECTED_CERT_SIZE; len = crypto_x509_get_der_len (x509); if (len <= 0) return SV_UNEXPECTED_CRYPTO_ERROR; len = crypto_x509_get_tbs_der_len (x509); if (len <= 0) return SV_UNEXPECTED_CRYPTO_ERROR; if (crypto_x509_get_version (x509) != 3) return SV_X509_ERROR; if (!crypto_x509_is_RSA (x509)) return SV_UNEXPECTED_CERT_ALGO; len = crypto_x509_get_sig_len (x509); if (len <= 0) /* dont want to accidentally return 0 (SUCCESS) */ return len ? len : SV_UNEXPECTED_CRYPTO_ERROR; len = crypto_x509_get_pk_bit_len (x509); if (len != 2048 && len != 3072 && len != 4096) return SV_UNEXPECTED_CERT_SIZE; return SV_SUCCESS; } int get_pkcs7_certificate (const uint8_t *cert_data, size_t cert_data_len, crypto_pkcs7_t **pkcs7_cert) { crypto_pkcs7_t *pkcs7; pkcs7 = crypto_pkcs7_parse_der (cert_data, cert_data_len); if (!pkcs7) return SV_PKCS7_PARSE_ERROR; /* make sure digest alg is sha256 */ if (crypto_pkcs7_md_is_sha256 (pkcs7) != CRYPTO_SUCCESS) { crypto_pkcs7_free(pkcs7); return SV_UNEXPECTED_PKCS7_ALGO; } *pkcs7_cert = pkcs7; return SV_SUCCESS; } libstb-secvar-main/src/esl.c000066400000000000000000000466011470177641100162750ustar00rootroot00000000000000/* *SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #include #include #include #include "secvar/esl.h" #include "secvar/util.h" #include "log.h" #include "libstb-secvar-errors.h" /* * do the internal sizes reported by an ESL make sense? * - does total size = sizeof(ESL) + signature header + n * (signature size)? * for n >= 1 * - does signature size fit an ESD? * * Assumes ESL->signature_list_size fits within the buffer! */ static bool esl_internal_sizes_sensible (const sv_esl_t *esl) { size_t claimed_size, sighdr_size, sig_size; claimed_size = le32_to_cpu (esl->signature_list_size); sighdr_size = le32_to_cpu (esl->signature_header_size); sig_size = le32_to_cpu (esl->signature_size); if (sighdr_size > claimed_size - sizeof (sv_esl_t)) return false; else if (sig_size > claimed_size - sizeof (sv_esl_t) - sighdr_size) return false; /* use <= to require at least 1 byte of sig! */ else if (sig_size <= sizeof (sv_esd_t)) return false; else if ((claimed_size - sizeof (sv_esl_t) - sighdr_size) % sig_size != 0) return false; return true; } /* * next_esl_from_buffer: given the current ESL or NULL, what's the next * valid and complete ESL within the buffer? * * @buf: input buffer * @buf_size: how big is @buf? * * @esl: pointer to pointer to esl data. * in: pointer to the current ESL or NULL if you're at the beginning. * out: pointer to the next ESL or NULL if there's no subsequent ESL. * * @esl_size: out: size of the next esl * * Returns: 0 on success, otherwise an error code. * * Lifetimes: esl is a pointer into buf, so the lifetime is that of the * containing buffer. */ sv_err_t next_esl_from_buffer (const uint8_t *buf, size_t buf_size, const uint8_t **esl, size_t *esl_size) { const uint8_t *pos; size_t left, claimed_size; const sv_esl_t *cur, *next; bool first; if (buf == NULL || esl == NULL || esl_size == NULL) return SV_BUF_INSUFFICIENT_DATA; if (*esl != NULL && ((*esl < buf) || (*esl > (buf + buf_size)))) return SV_BUF_INSUFFICIENT_DATA; first = (*esl == NULL); if (first) { pos = buf; left = buf_size; } else { pos = *esl; left = buf_size - (*esl - buf); } *esl = NULL; if (left < sizeof (sv_esl_t)) { prlog (PR_ERR, "Not enough space left for an ESL when unpacking buffer: %lu bytes remain\n", (unsigned long) left); return SV_BUF_INSUFFICIENT_DATA; } /* Attempt to read the current ESL */ cur = (sv_esl_t *) pos; claimed_size = le32_to_cpu (cur->signature_list_size); if (claimed_size < sizeof (sv_esl_t)) { prlog (PR_ERR, "ESL's claimed size is too small for the fixed contents: %lu bytes\n", (unsigned long) claimed_size); return SV_ESL_SIZE_INVALID; } else if (claimed_size > left) { prlog (PR_ERR, "ESL's claimed size is bigger than the data left in the buffer: %lu vs %lu\n", (unsigned long) claimed_size, (unsigned long) left); return SV_BUF_INSUFFICIENT_DATA; } if (!esl_internal_sizes_sensible (cur)) { prlog (PR_ERR, "ESL's internal sizes are not OK\n"); return SV_ESL_SIZE_INVALID; } /* * If we want the first ESL, we are done. Otherwise we need to skip * over the current ESL to the next one. */ if (first) { *esl = pos; *esl_size = claimed_size; return SV_SUCCESS; } pos += claimed_size; left -= claimed_size; /* * We only return NULL and success if we use up all the data * exactly. If there's any trailing data, we return an error. */ if (left == 0) { /* esl NULLed out above */ return SV_SUCCESS; } else if (left < sizeof (sv_esl_t)) { prlog (PR_ERR, "Trailing data in buffer, not enough for an ESL\n"); return SV_BUF_INSUFFICIENT_DATA; } next = (sv_esl_t *) pos; claimed_size = le32_to_cpu (next->signature_list_size); if (claimed_size < sizeof (sv_esl_t)) { prlog (PR_ERR, "ESL's claimed size is too small for the fixed contents: %lu bytes\n", (unsigned long) claimed_size); return SV_ESL_SIZE_INVALID; } else if (claimed_size > left) { prlog (PR_ERR, "ESL's claimed size is bigger than the data left in the buffer: %lu vs %lu\n", (unsigned long) claimed_size, (unsigned long) left); return SV_BUF_INSUFFICIENT_DATA; } if (!esl_internal_sizes_sensible (next)) { prlog (PR_ERR, "ESL's internal sizes are not OK\n"); return SV_ESL_SIZE_INVALID; } *esl = pos; *esl_size = claimed_size; return SV_SUCCESS; } /* * next_esd_from_esl_buffer: given the current ESD or NULL, what's the next * valid and complete ESD within the buffer? * * @esl: input buffer, containing a valid and complete ESL - that is, containing * at least as many bytes as declared in the ESL. * * @esd_data: pointer to pointer to esd signature data. * in: pointer to the current data or NULL if you're at the beginning. * out: pointer to the next ESD data or NULL if there's no subsequent ESD. * * @esd_data_size: out: size of the next esd *data* (exclusive of UUID) * @esd_owner: out: signature_owner, set if there's a valid ESD. * * Returns: 0 on success, otherwise an error code. * * Lifetimes: esd_data is a pointer into esl, so the lifetime is that of the * containing buffer. */ sv_err_t next_esd_from_esl (const uint8_t *esl, const uint8_t **esd_data, size_t *esd_data_size, uuid_t *esd_owner) { sv_esl_t *esl_struct; sv_esd_t *cur, *next; bool first; const uint8_t *posp; size_t pos, left, esl_size, esd_size, esl_shs; if (esl == NULL) return SV_BUF_INSUFFICIENT_DATA; esl_struct = (sv_esl_t *) esl; esl_size = le32_to_cpu (esl_struct->signature_list_size); esd_size = le32_to_cpu (esl_struct->signature_size); esl_shs = le32_to_cpu (esl_struct->signature_header_size); if (esd_data == NULL || esd_data_size == NULL) return SV_BUF_INSUFFICIENT_DATA; if (*esd_data != NULL && ((*esd_data < esl) || (*esd_data > (esl + esl_size)))) return SV_BUF_INSUFFICIENT_DATA; first = (*esd_data == NULL); if (first) { posp = esl + sizeof (sv_esl_t) + esl_shs; pos = sizeof (sv_esl_t) + esl_shs; } else { /* reverse to start of ESD */ posp = *esd_data - sizeof (sv_esd_t); pos = posp - esl; } left = esl_size - pos; /* this _should_ be safe given the checks before but just in case */ if (left < esd_size) { prlog (PR_ERR, "Not enough space in ESL for an ESD\n"); return SV_ESL_SIZE_INVALID; } *esd_data = NULL; cur = (sv_esd_t *) posp; if (first) { *esd_data = cur->signature_data; *esd_data_size = esd_size - sizeof (sv_esd_t); *esd_owner = cur->signature_owner; return SV_SUCCESS; } posp += esd_size; left -= esd_size; /* do not allow trailing data */ if (left == 0) { /* nulled out esd_data above */ return SV_SUCCESS; } /* this _should_ be safe given the checks before but just in case */ else if (left < esd_size) { prlog (PR_ERR, "Trailing bytes but not enough space for another ESD."); return SV_ESL_SIZE_INVALID; } next = (sv_esd_t *) posp; *esd_data = next->signature_data; *esd_data_size = esd_size - sizeof (sv_esd_t); *esd_owner = next->signature_owner; return SV_SUCCESS; } /* * next_cert_from_esls_buffer: given the current certificate or NULL, what's the * next certificate within the buffer of ESLs? * * @buf: input buffer, expected to contain ESLs of PKS_CERT_X509_GUID. * @buf_size: how big is @buf? * * @cert: pointer to pointer to certificate data. * in: pointer to the current cert or NULL if you're at the beginning. * out: pointer to the next cert or NULL if there's no subsequent cert. * * @cert_size: out: size of the next esl * * @cert_owner: out: UUID representing certificate owner. * * @esl: in/out: opaque storage for internal state. Pass in storage for 1 * uint8_t pointer. * * Returns: 0 on success, otherwise an error code. * * Lifetimes: cert is a pointer into buf, so the lifetime is that of the * containing buffer. */ sv_err_t next_cert_from_esls_buf (const uint8_t *buf, size_t buf_size, const uint8_t **cert, size_t *cert_size, uuid_t *cert_owner, const uint8_t **esl) { const sv_esl_t *esl_struct; size_t esl_size; sv_err_t rc; bool first; if (!buf || !cert || !cert_size || !cert_owner || !esl) return SV_BUF_INSUFFICIENT_DATA; first = (*cert == NULL); /* * try to fetch the next ESD from the ESL. There will probably never * be 2 of the same size in a single ESD, but it _could_ happen. */ if (first) { *esl = NULL; } else { rc = next_esd_from_esl (*esl, cert, cert_size, cert_owner); if (rc) { /* trust function to log themselves */ return rc; } } /* * we have reached the end of the ESL (or we are at the start and haven't * got our first ESL yet.) */ if (*cert == NULL) { rc = next_esl_from_buffer (buf, buf_size, esl, &esl_size); if (rc) return rc; if (!*esl) { *cert = NULL; return SV_SUCCESS; } esl_struct = (sv_esl_t *) *esl; if (!uuid_equals (&esl_struct->signature_type, &PKS_CERT_X509_GUID)) { prlog (PR_ERR, "Found ESL, but it's not an PKS_CERT_X509_GUID\n"); return SV_ESL_WRONG_TYPE; } } rc = next_esd_from_esl (*esl, cert, cert_size, cert_owner); return rc; } /* * Helper function. We have found 2 ESLs with matching signature type, copy/size the merge. */ static sv_err_t merge_esds_in_esl (const uint8_t *cur_esl_data, size_t cur_esl_data_size, const uint8_t *update_esl_data, uint8_t *out_buf, size_t *out_buf_size) { /* quadratic in ESD count, see merge_esls */ sv_err_t rc; uuid_t update_esd_owner, cur_esd_owner; const uint8_t *update_esd_data, *cur_esd_data; size_t update_esd_data_size, cur_esd_data_size; size_t new_data_size = 0; uint8_t *out_ptr = out_buf; sv_esl_t *out_esl = (sv_esl_t *) out_buf; /* copy the current ESL to the output */ new_data_size = cur_esl_data_size; if (out_buf) { if (*out_buf_size < cur_esl_data_size) { prlog (PR_ERR, "output buffer too small for current ESL data"); return SV_OUT_BUF_TOO_SMALL; } memcpy (out_buf, cur_esl_data, cur_esl_data_size); out_ptr += cur_esl_data_size; } /* * for each ESD in the update * ... for each ESD in current * ... ... do they match? * ... if no match, copy it to the output */ update_esd_data = NULL; rc = next_esd_from_esl (update_esl_data, &update_esd_data, &update_esd_data_size, &update_esd_owner); while (rc == SV_SUCCESS && update_esd_data) { bool found_esd = false; cur_esd_data = NULL; rc = next_esd_from_esl (cur_esl_data, &cur_esd_data, &cur_esd_data_size, &cur_esd_owner); while (rc == SV_SUCCESS && cur_esd_data) { if (cur_esd_data_size == update_esd_data_size && uuid_equals (&cur_esd_owner, &update_esd_owner) && memcmp (cur_esd_data, update_esd_data, cur_esd_data_size) == 0) { found_esd = true; break; } rc = next_esd_from_esl (cur_esl_data, &cur_esd_data, &cur_esd_data_size, &cur_esd_owner); } if (rc != SV_SUCCESS) { prlog (PR_ERR, "Error enumerating ESDs\n"); return rc; } if (!found_esd) { new_data_size += sizeof (sv_esd_t) + update_esd_data_size; if (out_buf) { sv_esd_t *esd; if (*out_buf_size < new_data_size) { prlog (PR_ERR, "output buffer too small for new ESD data"); return SV_OUT_BUF_TOO_SMALL; } esd = (sv_esd_t *) out_ptr; memcpy (&esd->signature_owner, &update_esd_owner, sizeof (uuid_t)); memcpy (&esd->signature_data, update_esd_data, update_esd_data_size); out_ptr += sizeof (sv_esd_t) + update_esd_data_size; } } rc = next_esd_from_esl (update_esl_data, &update_esd_data, &update_esd_data_size, &update_esd_owner); } if (rc != SV_SUCCESS) { prlog (PR_ERR, "Error enumerating ESDs\n"); return rc; } *out_buf_size = new_data_size; if (new_data_size > 0xffffffffUL) { prlog (PR_ERR, "Resultant ESL would be too large to store in " "signature_list_size\n"); return SV_TOO_MUCH_DATA; } if (out_buf) out_esl->signature_list_size = cpu_to_le32 (new_data_size); return SV_SUCCESS; } /* handle DO_NOT_MERGE_CERTIFICATE_ESLS while preserving append(x, x) == x */ static inline bool can_merge_esls (const sv_esl_t *a, const sv_esl_t *b) { bool result = uuid_equals (&a->signature_type, &b->signature_type); #ifdef DO_NOT_MERGE_CERTIFICATE_ESLS if (result && uuid_equals (&a->signature_type, &PKS_CERT_X509_GUID)) { result = (a->signature_list_size == b->signature_list_size && memcmp ((const uint8_t *) a, (const uint8_t *) b, le32_to_cpu (a->signature_list_size)) == 0); } #endif return result; } /* * Merge 2 ESL buffers * Applying an append update is not as trivial as the name suggests for an * EFI_IMAGE_SECURITY_DATABASE variable (db, dbx) because we're supposed to * de-duplicate entries: s 8.2.2: * * For variables with the GUID EFI_IMAGE_SECURITY_DATABASE_GUID (i.e. where the * data buffer is formatted as sv_esl_t), the driver shall not * perform an append of sv_esd_t values that are already part of the * existing variable value. * * @cur_buf: current variable data, expected to be a series of ESLs. * @cur_buf_size: size * @update_buf: update data, expected to be a series of ESLs. * @update_buf_size: size * @out_buf: out: buffer to write data to or NULL, see Notes * @out_buf_size: in: size of buffer * out: bytes written/required (see Notes) * Notes: If called with a NULL out buffer, sets out size and return success * without copying data. Otherwise, updates out_buf_size with the number of bytes * written. * * Returns: 0 on success, otherwise an error code. * * Lifetime: copies data from inputs to output, no internal allocations. */ sv_err_t merge_esls (const uint8_t *cur_buf, size_t cur_buf_size, const uint8_t *update_buf, size_t update_buf_size, uint8_t *out_buf, size_t *out_buf_size) { /* * This is quadratic in the number of ESLs and ESDs. That shouldn't matter * given the limitations on how many we can feasibly have, and allows us * to avoid a bunch of internal allocations. But beware if things suddenly scale. */ size_t new_data_size = 0; sv_err_t rc; const uint8_t *update_esl_data, *cur_esl_data; size_t update_esl_size, cur_esl_size; const sv_esl_t *cur_esl, *update_esl; uint8_t *out_ptr = out_buf; /* * this is a bit inefficient but it doesn't require * dynamic allocations and we expect the data set to be small. * * for each ESL in current * ... for each ESL in the update * ... ... do they match? * ... if match, so merge to output * ... if no match, copy it to the output * * for each ESL in the update * ... for each ESL in current * ... ... do they match? * ... if no match, copy it to the output */ cur_esl_data = NULL; rc = next_esl_from_buffer (cur_buf, cur_buf_size, &cur_esl_data, &cur_esl_size); /* for each ESL in current */ while (rc == SV_SUCCESS && cur_esl_data) { bool found_esl = false; cur_esl = (sv_esl_t *) cur_esl_data; update_esl_data = NULL; rc = next_esl_from_buffer (update_buf, update_buf_size, &update_esl_data, &update_esl_size); /* for each update */ while (rc == SV_SUCCESS && update_esl_data) { update_esl = (sv_esl_t *) update_esl_data; if (can_merge_esls (cur_esl, update_esl)) { /* we've found a matching ESL. merge in updated */ found_esl = true; break; } rc = next_esl_from_buffer (update_buf, update_buf_size, &update_esl_data, &update_esl_size); } if (rc != SV_SUCCESS) { prlog (PR_ERR, "Error enumerating ESLs\n"); return rc; } if (found_esl) { /* merge in */ size_t req_size = *out_buf_size - new_data_size; rc = merge_esds_in_esl (cur_esl_data, cur_esl_size, update_esl_data, out_ptr, &req_size); if (rc != SV_SUCCESS) return rc; new_data_size += req_size; if (out_buf) out_ptr += req_size; } else { /* copy across */ new_data_size += cur_esl_size; if (out_buf) { if (new_data_size > *out_buf_size) { prlog (PR_ERR, "Not enough space in output buffer to copy ESL in.\n"); return SV_OUT_BUF_TOO_SMALL; } memcpy (out_ptr, cur_esl_data, cur_esl_size); out_ptr += cur_esl_size; } } rc = next_esl_from_buffer (cur_buf, cur_buf_size, &cur_esl_data, &cur_esl_size); } if (rc != SV_SUCCESS) { prlog (PR_ERR, "Error enumerating ESLs"); return rc; } /* copy in any ESLs from the update that are not in current */ update_esl_data = NULL; rc = next_esl_from_buffer (update_buf, update_buf_size, &update_esl_data, &update_esl_size); /* for each update */ while (rc == SV_SUCCESS && update_esl_data) { /* is there a current ESL with the same GUID? */ bool found_esl = false; update_esl = (sv_esl_t *) update_esl_data; cur_esl_data = NULL; rc = next_esl_from_buffer (cur_buf, cur_buf_size, &cur_esl_data, &cur_esl_size); while (rc == SV_SUCCESS && cur_esl_data) { cur_esl = (sv_esl_t *) cur_esl_data; if (can_merge_esls (cur_esl, update_esl)) { /* we've found a matching ESL. we have already copied/merged, ignore. */ found_esl = true; break; } rc = next_esl_from_buffer (cur_buf, cur_buf_size, &cur_esl_data, &cur_esl_size); } if (rc != SV_SUCCESS) { prlog (PR_ERR, "Error enumerating ESLs"); return rc; } /* an ESL only in update. copy in. */ if (!found_esl) { new_data_size += update_esl_size; if (out_buf) { if (*out_buf_size < new_data_size) { prlog (PR_ERR, "Not enough space in output buffer to copy in ESL.\n"); return SV_OUT_BUF_TOO_SMALL; } memcpy (out_ptr, update_esl_data, update_esl_size); out_ptr += update_esl_size; } } rc = next_esl_from_buffer (update_buf, update_buf_size, &update_esl_data, &update_esl_size); } if (rc != SV_SUCCESS) { prlog (PR_ERR, "Error enumerating ESLs"); return rc; } *out_buf_size = new_data_size; return SV_SUCCESS; } libstb-secvar-main/src/log.c000066400000000000000000000000631470177641100162630ustar00rootroot00000000000000#include int libstb_log_level = MAXLEVEL; libstb-secvar-main/src/phyp.c000066400000000000000000000044101470177641100164620ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #include "phyp.h" #include "string.h" #include "secvar/pseries.h" static uint64_t phyp_trace_val = 0; /* * Apply an update based on phyp rules. * * @label/@label_size: variable name * @current_data/@current_data_size: current var contents, or NULL/0 * @update_data: message data * @update_data_size: message data length * @allow_unauthenticated_pk_update: allow an unauthenticated PK update? * @append_update: is this an append? * @pk_data/@pk_data_size: the current contents of the PK variable, or NULL/0 * @kek_data/@kek_data_size: contents of KEK variable or NULL/0 * @new_data/@new_data_size: out * @log_data: out - single uint64_t of trace data * * If new_data_size is 0, new_data will be NULL. This represents variable deletion. * return code: SUCCESS if the update was valid, otherwise an error code. * * Lifetime: new_data is a fresh allocation if rc = SUCCESS. Caller must free with libstb_free(). */ int update_var_from_auth (const uint8_t *label, size_t label_size, const uint8_t *update_data, size_t update_data_size, const uint8_t *current_data, size_t current_data_size, bool allow_unauthenticated_pk_update, bool append_update, const uint8_t *pk_data, size_t pk_data_size, const uint8_t *kek_data, size_t kek_data_size, uint8_t **new_data, size_t *new_data_size, uint64_t *log_data) { sv_err_t rc; phyp_trace_val = 0; update_req_t update_req = { 0 }; /* variable update request message */ update_req.allow_unauthenticated = allow_unauthenticated_pk_update; update_req.append_update = append_update; update_req.label = label; update_req.label_size = label_size; update_req.update_data = update_data; update_req.update_data_size = update_data_size; update_req.current_data = current_data; update_req.current_data_size = current_data_size; /* authentication certificate database */ update_req.auth_db.pk = pk_data; update_req.auth_db.pk_size = pk_data_size; update_req.auth_db.kek = kek_data; update_req.auth_db.kek_size = kek_data_size; rc = pseries_update_variable (&update_req, new_data, new_data_size); *log_data = phyp_trace_val; return rc; } libstb-secvar-main/src/pseries.c000066400000000000000000000354761470177641100171740ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #include #include #include "log.h" #include "config.h" #include "secvar/crypto.h" #include "secvar/crypto_util.h" #include "secvar/util.h" #include "secvar/esl.h" #include "secvar/pseries.h" #define ESL_HEADER_SIZE 44 /* * PK and KEK */ const uint8_t global_variable[2][20] = {"P\0K\0\0\0", "K\0E\0K\0\0\0"}; /* * 1. db * 2. dbx * 3. grubdb * 4. grubdbx * 5. sbat * 6. moduledb * 7. trustedcadb */ const uint8_t security_variable[7][30] = {"d\0b\0\0\0", "d\0b\0x\0\0\0", "g\0r\0u\0b\0d\0b\0\0\0", "g\0r\0u\0b\0d\0b\0x\0\0\0", "s\0b\0a\0t\0\0\0", "m\0o\0d\0u\0l\0e\0d\0b\0\0\0", "t\0r\0u\0s\0t\0e\0d\0c\0a\0d\0b\0\0\0"}; /* lifetime: out-data is a pointer into in-data */ static sv_err_t unpack_signed_var (const uint8_t *in, size_t in_size, const uint8_t **out_data, size_t *out_size, timestamp_t *timestamp) { const struct signed_variable_header *signed_var; timestamp_t ts = { 0 }; /* do not permit negative */ if (in_size < sizeof (struct signed_variable_header)) return SV_UNPACK_ERROR; signed_var = (const struct signed_variable_header *) in; if (signed_var->version != 0) return SV_UNPACK_VERSION_ERROR; ts.year = signed_var->timestamp.year; ts.month = signed_var->timestamp.month; ts.day = signed_var->timestamp.day; ts.hour = signed_var->timestamp.hour; ts.minute = signed_var->timestamp.minute; ts.second = signed_var->timestamp.second; *timestamp = ts; *out_data = in + sizeof (struct signed_variable_header); *out_size = in_size - sizeof (struct signed_variable_header); return SV_SUCCESS; } static sv_err_t pack_signed_var (const uint8_t *data, const size_t size, const timestamp_t *time, uint8_t **packed_data, size_t *packed_size) { struct signed_variable_header *signed_var; /* a PKS object has its size stored in a 16-bit so make sure we don't overflow that */ if (size > 0xffffUL - sizeof (struct signed_variable_header)) return SV_TOO_MUCH_DATA; *packed_size = size + sizeof (struct signed_variable_header); *packed_data = (uint8_t *) libstb_zalloc (*packed_size); if (!*packed_data) return SV_ALLOCATION_FAILED; signed_var = (struct signed_variable_header *) *packed_data; signed_var->version = 0; signed_var->timestamp.year = time->year; signed_var->timestamp.month = time->month; signed_var->timestamp.day = time->day; signed_var->timestamp.hour = time->hour; signed_var->timestamp.minute = time->minute; signed_var->timestamp.second = time->second; if (data != NULL && size != 0) memcpy (*packed_data + sizeof (struct signed_variable_header), data, size); return SV_SUCCESS; } static bool cert_parses_as_good_RSA (const uint8_t *cert_data, size_t cert_size, const bool check_CA) { int rc; crypto_x509_t *cert; cert = crypto_x509_parse_der (cert_data, cert_size); if (!cert) return false; /* must be RSA-2048/4096 */ rc = validate_x509_certificate (cert); if (rc != SV_SUCCESS) { prlog (PR_ERR, "certificate validation failed (%d)\n", rc); crypto_x509_free (cert); return false; } if (check_CA && !crypto_x509_is_CA (cert)) { prlog (PR_ERR, "it is not CA certificate\n"); crypto_x509_free (cert); return false; } crypto_x509_free (cert); return true; } /* convert label to a wide character name */ static sv_err_t convert_to_ucs2 (const update_req_t *update_req, uint16_t **name) { if (update_req->label_size % 2 != 0) { prlog (PR_ERR, "label has an odd number of bytes: %lu\n", (unsigned long) update_req->label_size); return SV_LABEL_IS_NOT_WIDE_CHARACTERS; } /* zero-terminate the name */ *name = (uint16_t *) libstb_zalloc (update_req->label_size + 2); if (*name == NULL) { prlog (PR_ERR, "failed to allocate memory for UCS-2 name!"); return SV_ALLOCATION_FAILED; } memcpy (*name, update_req->label, update_req->label_size); return SV_SUCCESS; } /* * unpack our variables. if something goes wrong in unpacking this is fatal, * unless we happen to be replacing the variable */ static sv_err_t unpack_current_var (const update_req_t *update_req, auth_data_t *auth_data) { sv_err_t rc = SV_SUCCESS; if (update_req->current_data != NULL && update_req->current_data_size != 0) { rc = unpack_signed_var (update_req->current_data, update_req->current_data_size, &auth_data->current_esl_data, &auth_data->current_esl_data_size, auth_data->current_time); if (rc != SV_SUCCESS) { prlog (PR_WARNING, "Cannot unpack current variable SV\n"); if (!update_req->append_update) { auth_data->current_esl_data = NULL; auth_data->current_esl_data_size = 0; auth_data->current_time = NULL; rc = SV_SUCCESS; } } } return rc; } static sv_err_t unpack_authdb (const update_req_t *update_req, const uint16_t *name, auth_data_t *auth_data) { sv_err_t rc = SV_SUCCESS; timestamp_t dummy_time = { 0 }; auth_db_t *auth_db = (auth_db_t *) &update_req->auth_db; if (auth_db->pk != NULL && auth_db->pk_size != 0) { rc = unpack_signed_var (auth_db->pk, auth_db->pk_size, &auth_data->auth_db.pk, &auth_data->auth_db.pk_size, &dummy_time); if (rc != SV_SUCCESS) { prlog (PR_WARNING, "Cannot unpack PK SV\n"); if (wide_str_equals (name, (const uint16_t *) &global_variable[0]) && update_req->allow_unauthenticated) { /* we permit this as a recovery technique */ auth_data->auth_db.pk = NULL; rc = SV_SUCCESS; } else return rc; } } if (auth_db->kek != NULL && auth_db->kek_size != 0) { rc = unpack_signed_var (auth_db->kek, auth_db->kek_size, &auth_data->auth_db.kek, &auth_data->auth_db.kek_size, &dummy_time); if (rc != SV_SUCCESS) { prlog (PR_WARNING, "Cannot unpack KEK SV\n"); if (wide_str_equals (name, (const uint16_t *) &global_variable[1]) && !update_req->append_update) { auth_data->auth_db.kek = NULL; rc = SV_SUCCESS; } else return rc; } } return rc; } static bool is_global_variable (const uint16_t *name) { int i = 0; size_t len = sizeof (global_variable) / sizeof (global_variable[0]); for (i = 0; i < len; i++) { if (wide_str_equals (name, (const uint16_t *) &global_variable[i])) return true; } return false; } static bool is_security_variable (uint16_t *name) { int i = 0; size_t len = sizeof (security_variable) / sizeof (security_variable[0]); for (i = 0; i < len; i++) { if (wide_str_equals (name, (const uint16_t *) &security_variable[i])) return true; } return false; } /* derive our vendor GUID */ uuid_t * get_guid (uint16_t *name) { if (is_global_variable (name)) return (uuid_t *) &SV_GLOBAL_VARIABLE_GUID; else if (is_security_variable (name)) return (uuid_t *) &SV_IMAGE_SECURITY_DATABASE_GUID; return (uuid_t *) &POWER_VENDOR_GUID; } /* special wipe update */ static sv_err_t is_wipe_update (const bool allow_unauthenticated, const uint8_t *new_esl_data, const size_t new_esl_data_size, const bool is_pk) { sv_err_t rc = SV_SUCCESS; if (is_pk && (new_esl_data_size - ESL_HEADER_SIZE) == strlen (WIPE_SB_MAGIC) && memcmp (new_esl_data + ESL_HEADER_SIZE, WIPE_SB_MAGIC, (new_esl_data_size - ESL_HEADER_SIZE)) == 0) { if (allow_unauthenticated) rc = SV_DELETE_EVERYTHING; else { prlog (PR_ERR, "Will not wipe variables unless allow unauthenticated " "PK update is set.\n"); rc = SV_INVALID_PK_UPDATE; } } return rc; } static sv_err_t validate_cert (const uint8_t *new_esl_data, const size_t new_esl_data_size, const bool check_CA, const bool is_pk) { sv_err_t rc = SV_SUCCESS; const uint8_t *cert_data = NULL, *tmp = NULL; size_t cert_size = 0; uuid_t cert_owner = { 0 }; /* this may be either nothing or a list of RSA-2048 certs in ESLs */ rc = next_cert_from_esls_buf (new_esl_data, new_esl_data_size, &cert_data, &cert_size, &cert_owner, &tmp); while (rc == SV_SUCCESS && cert_data != NULL) { if (!cert_parses_as_good_RSA (cert_data, cert_size, check_CA)) return SV_X509_ERROR; rc = next_cert_from_esls_buf (new_esl_data, new_esl_data_size, &cert_data, &cert_size, &cert_owner, &tmp); if (is_pk && (rc != SV_SUCCESS || cert_data != NULL)) { prlog (PR_ERR, "it contained multiple certs or trailing data\n"); return SV_INVALID_PK_UPDATE; } } return rc; } static sv_err_t validate_trustedcadb_cert (const uint8_t *new_esl_data, const size_t new_esl_data_size, const uint16_t *name) { sv_err_t rc = SV_SUCCESS; if (!wide_str_equals (name, (const uint16_t *) &security_variable[6])) return rc; if (new_esl_data_size != 0) { rc = validate_cert (new_esl_data, new_esl_data_size, true, false); if (rc != SV_SUCCESS) { prlog (PR_ERR, "trustedcadb update failed (%d)\n", rc); return SV_INVALID_TRUSTEDCADB_UPDATE; } } return rc; } /* * If PK, verify that this is an ESL with an RSA-2048 cert */ static sv_err_t validate_pk_cert (const uint8_t *new_esl_data, const size_t new_esl_data_size, const bool is_pk) { sv_err_t rc = SV_SUCCESS; if (!is_pk) return SV_INVALID_PK_UPDATE; if (new_esl_data_size != 0) { rc = validate_cert (new_esl_data, new_esl_data_size, false, is_pk); if (rc != SV_SUCCESS) { prlog (PR_ERR, "PK update failed (%d)\n", rc); return SV_INVALID_PK_UPDATE; } } return rc; } /* * If KEK, verify that this is empty or a set of ESLs with RSA-2048 certs */ static sv_err_t validate_kek_cert (const uint8_t *new_esl_data, const size_t new_esl_data_size, const uint16_t *name) { sv_err_t rc = SV_SUCCESS; if (!wide_str_equals (name, (const uint16_t *) &global_variable[1])) return rc; if (new_esl_data_size != 0) { rc = validate_cert (new_esl_data, new_esl_data_size, false, false); if (rc != SV_SUCCESS) { prlog (PR_ERR, "KEK update failed (%d)\n", rc); return SV_INVALID_KEK_UPDATE; } } return rc; } /* * Apply an update based on pseries rules. * * @label/@label_size: variable name * @allow_unauthenticated_pk_update: allow an unauthenticated PK update? * @append_update: is this an append? * @update_data: message data * @update_data_size: message data length * @current_data/@current_data_size: current var contents, or NULL/0 * @pk_data/@pk_data_size: the current contents of the PK variable, or NULL/0 * @kek_data/@kek_data_size: contents of KEK variable or NULL/0 * @new_data/@new_esl_data_size: out * * If new_esl_data_size is 0, new_data will be NULL. This represents variable deletion. * return code: SUCCESS if the update was valid, otherwise an error code. * * Lifetime: new_data is a fresh allocation if rc = SUCCESS. Caller must free with libstb_free(). */ sv_err_t pseries_update_variable (const update_req_t *update_req, uint8_t **new_esl_data, size_t *new_esl_data_size) { sv_err_t rc = SV_SUCCESS; bool is_pk = false; uint16_t *name = NULL; uint8_t *esl_data = NULL; size_t esl_data_size = 0; auth_data_t auth_data = { 0 }; timestamp_t new_time = { 0 }, current_time = { 0 }; sv_flag_t verified_flag; rc = convert_to_ucs2 (update_req, &name); if (rc != SV_SUCCESS) return rc; /* * verify that there are no embedded nuls. This is important because otherwise * the hash validation will take place on only a prefix of the name! */ if (wide_strlen (name) * 2 != update_req->label_size) { prlog (PR_ERR, "label seems to have embedded UCS-2 nul\n"); rc = SV_LABEL_IS_NOT_WIDE_CHARACTERS; } /* verify that PK does not get an update */ else if ((is_pk = wide_str_equals (name, (const uint16_t *) &global_variable[0])) && update_req->append_update) rc = SV_CANNOT_APPEND_TO_PK; else { auth_data.current_time = ¤t_time; rc = unpack_current_var (update_req, &auth_data); if (rc == SV_SUCCESS) rc = unpack_authdb (update_req, name, &auth_data); } if (rc != SV_SUCCESS) { libstb_free (name); return rc; } auth_data.name = name; auth_data.vendor = get_guid (name); auth_data.attributes = SECVAR_ATTRIBUTES | (update_req->append_update ? SV_VARIABLE_APPEND_WRITE : 0); auth_data.flag = (update_req->allow_unauthenticated && is_pk ? SV_VARIABLE_UPDATE_SKIP_VERIFICATION : SV_VARIABLE_UPDATE_NO_FLAGS); auth_data.auth_msg = update_req->update_data; auth_data.auth_msg_size = update_req->update_data_size; if (auth_data.current_esl_data == NULL) auth_data.current_time = NULL; /* apply the update */ rc = pseries_apply_update (&auth_data, &esl_data, &esl_data_size, &new_time, &verified_flag); if (rc == SV_SUCCESS) { if ((verified_flag & SV_AUTH_VERIFIED_BY_PK) && esl_data_size != 0) { rc = is_wipe_update (update_req->allow_unauthenticated, esl_data, esl_data_size, is_pk); if (rc == SV_SUCCESS) { rc = validate_pk_cert (esl_data, esl_data_size, is_pk); if (rc != SV_SUCCESS) rc = validate_kek_cert (esl_data, esl_data_size, name); } } else if (esl_data_size == 0) { *new_esl_data = NULL; *new_esl_data_size = 0; } if ((rc == SV_SUCCESS && (verified_flag & SV_AUTH_VERIFIED_BY_KEK) && esl_data_size == 0) || (rc == SV_SUCCESS && esl_data_size != 0)) { rc = validate_trustedcadb_cert (esl_data, esl_data_size, name); if (rc == SV_SUCCESS) { /* pack it */ rc = pack_signed_var (esl_data, esl_data_size, &new_time, new_esl_data, new_esl_data_size); if (rc != SV_SUCCESS) prlog (PR_ERR, "Error packing new variable.\n"); } } } else prlog (PR_ERR, "Failed to apply variable update.\n"); libstb_free (esl_data); libstb_free (name); return rc; } libstb-secvar-main/src/update.c000066400000000000000000000265501470177641100167750ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #include #include #include #include "log.h" #include "config.h" #include "secvar/esl.h" #include "secvar/crypto.h" #include "secvar/crypto_util.h" #include "secvar/util.h" #include "secvar/pseries.h" #include "secvar/authentication_2.h" /* * Can this update be verified by the KEK? * Updates that _cannot_ be verified by KEK: PK & KEK under * SV_GLOBAL_VARIABLE_GUID. Anything else is fair game. * Assumes that _elsewhere_ you verify that no-one is sticking other variables * in the SV_GLOBAL_VARIABLE_GUID space! */ static bool kek_can_verify (const auth_data_t *auth_data) { if (!uuid_equals (auth_data->vendor, &SV_GLOBAL_VARIABLE_GUID)) return true; return false; } /* verify against PK keys */ static sv_err_t verify_aginst_pk (const auth_db_t *auth_db, crypto_pkcs7_t *pkcs7, uint8_t *hash, sv_flag_t *verified_flag) { sv_err_t rc = SV_FAILED_TO_VERIFY_SIGNATURE; const uint8_t *tmp = NULL; uuid_t cert_owner = { 0 }; const uint8_t *cert = NULL; size_t cert_size = 0; crypto_x509_t *pk; if (auth_db->pk != NULL && auth_db->pk_size != 0) { rc = next_cert_from_esls_buf (auth_db->pk, auth_db->pk_size, &cert, &cert_size, &cert_owner, &tmp); if (rc != SV_SUCCESS) { prlog (PR_ERR, "Error parsing PK ESL for cert.\n"); return rc; } pk = crypto_x509_parse_der (cert, cert_size); if (!pk) { prlog (PR_ERR, "Error parsing PK cert to X.509 structure"); return SV_X509_PARSE_ERROR; } /* * TODO maybe this is too harsh? - we could try a KEK? * you can recover by doing an unauthenticated PK update */ rc = validate_x509_certificate (pk); if (rc != SV_SUCCESS) { prlog (PR_ERR, "PK cert is not a good RSA cert.\n"); crypto_x509_free (pk); return rc; } /* * we are safe to pass 32 here because we verified that it was * sha256 above. */ rc = crypto_pkcs7_signed_hash_verify (pkcs7, pk, hash, MAX_HASH_SIZE); crypto_x509_free (pk); if (rc != CRYPTO_SUCCESS) return SV_FAILED_TO_VERIFY_SIGNATURE; else *verified_flag = SV_AUTH_VERIFIED_BY_PK; rc = SV_SUCCESS; } return rc; } /* verify against KEK keys */ static sv_err_t verify_aginst_kek (const auth_db_t *auth_db, crypto_pkcs7_t *pkcs7, uint8_t *hash, sv_flag_t *verified_flag) { sv_err_t rc = SV_FAILED_TO_VERIFY_SIGNATURE; const uint8_t *tmp = NULL; uuid_t cert_owner = { 0 }; const uint8_t *cert = NULL; size_t cert_size = 0; crypto_x509_t *kek; if (auth_db->kek != NULL && auth_db->kek_size) { rc = next_cert_from_esls_buf (auth_db->kek, auth_db->kek_size, &cert, &cert_size, &cert_owner, &tmp); while (rc == SV_SUCCESS && cert != NULL) { /* * We take a pretty hard-line approach here: * if a KEK fails to parse or be RSA-2048, we bail, * even if a later KEK might work. */ kek = crypto_x509_parse_der (cert, cert_size); if (!kek) { prlog (PR_ERR, "Error parsing KEK cert to X.509 structure"); return SV_X509_PARSE_ERROR; } rc = validate_x509_certificate (kek); if (rc != SV_SUCCESS) { prlog (PR_ERR, "KEK cert is not a good RSA cert.\n"); crypto_x509_free (kek); return rc; } rc = crypto_pkcs7_signed_hash_verify (pkcs7, kek, hash, MAX_HASH_SIZE); crypto_x509_free (kek); if (rc == CRYPTO_SUCCESS) { *verified_flag = SV_AUTH_VERIFIED_BY_KEK; return SV_SUCCESS; } rc = next_cert_from_esls_buf (auth_db->kek, auth_db->kek_size, &cert, &cert_size, &cert_owner, &tmp); } if (rc != SV_SUCCESS) prlog (PR_ERR, "Error parsing KEK ESLs for cert, or trailing data\n"); } return rc; } /* * Given a variable update from a EDK2 EFI_VARIABLE_AUTHENTICATION_2 format * message, determine if it is validly signed. */ sv_err_t verify_signature (const auth_data_t *auth_data, const timestamp_t *timestamp, const uint8_t *cert_data, const size_t cert_data_size, const uint8_t *esl_data, const size_t esl_data_size, sv_flag_t *verified_flag) { sv_err_t rc = SV_SUCCESS; uint8_t *hash = NULL; crypto_pkcs7_t *pkcs7 = NULL; /* convert cert into PKCS#7 structure */ rc = get_pkcs7_certificate (cert_data, cert_data_size, &pkcs7); if (rc != SV_SUCCESS) { prlog (PR_ERR, "PKCS#7 message failed to parse as DER.\n"); return rc; } /* Only SHA-256 is permitted */ rc = crypto_pkcs7_md_is_sha256 (pkcs7); if (rc != CRYPTO_SUCCESS) { prlog (PR_ERR, "PKCS#7 message wasn't SHA-256.\n"); rc = SV_UNEXPECTED_PKCS7_ALGO; } else { /* generate hash */ rc = construct_auth2_hash (auth_data, timestamp, esl_data, esl_data_size, &hash); if (rc != SV_SUCCESS) prlog (PR_ERR, "Error constructing auth2 hash.\n"); else { rc = verify_aginst_pk (&auth_data->auth_db, pkcs7, hash, verified_flag); if (rc == SV_FAILED_TO_VERIFY_SIGNATURE && kek_can_verify (auth_data)) rc = verify_aginst_kek (&auth_data->auth_db, pkcs7, hash, verified_flag); if (rc != SV_SUCCESS) { rc = SV_FAILED_TO_VERIFY_SIGNATURE; prlog (PR_ERR, "Could not verify PKCS#7 signature against trusted key\n"); } } } crypto_pkcs7_free (pkcs7); free (hash); return rc; } /* * Is timestamp A after timestamp B? * @a: timestamp 1 * @b: timestamp 2 * returns: a > b * assumes that the usual fields are nulled out! */ static bool is_after (const timestamp_t *a, const timestamp_t *b) { if (le16_to_cpu (a->year) != le16_to_cpu (b->year)) return le16_to_cpu (a->year) > le16_to_cpu (b->year); if (a->month != b->month) return a->month > b->month; if (a->day != b->day) return a->day > b->day; if (a->hour != b->hour) return a->hour > b->hour; if (a->minute != b->minute) return a->minute > b->minute; if (a->second != b->second) return a->second > b->second; return false; } /* append new esl */ static sv_err_t append_update (const auth_data_t *auth_data, const uint8_t *esl_data, const size_t esl_data_size, uint8_t **new_esl_data, size_t *new_esl_data_size) { sv_err_t rc = SV_SUCCESS; if (uuid_equals (auth_data->vendor, &SV_IMAGE_SECURITY_DATABASE_GUID)) { rc = merge_esls (auth_data->current_esl_data, auth_data->current_esl_data_size, esl_data, esl_data_size, NULL, new_esl_data_size); if (rc != SV_SUCCESS) { prlog (PR_ERR, "Error calculating size for merging ESLs\n"); return rc; } *new_esl_data = (uint8_t *) libstb_zalloc (*new_esl_data_size); if (*new_esl_data == NULL) { prlog (PR_ERR, "Allocation for new esl data failed\n"); return SV_ALLOCATION_FAILED; } rc = merge_esls (auth_data->current_esl_data, auth_data->current_esl_data_size, esl_data, esl_data_size, *new_esl_data, new_esl_data_size); if (rc != SV_SUCCESS) { prlog (PR_ERR, "Error merging ESLs!\n"); libstb_free (*new_esl_data); return rc; } } else { *new_esl_data_size = auth_data->current_esl_data_size + esl_data_size; *new_esl_data = (uint8_t *) libstb_zalloc (*new_esl_data_size); if (*new_esl_data == NULL) { prlog (PR_ERR, "Allocation for new esl data failed\n"); return SV_ALLOCATION_FAILED; } memcpy (*new_esl_data, auth_data->current_esl_data, auth_data->current_esl_data_size); memcpy (*new_esl_data + auth_data->current_esl_data_size, esl_data, esl_data_size); } return rc; } /* * Given a variable update, determine if it is validly signed, and apply it. * Validates signature and timestamp. If the variable is a EFI_IMAGE_SECURITY_DATABASE * (i.e. db, dbx) and the append attribute is set, performs an ESL merge with current data. * * Beyond that, no verification is done: * - no verification of initial writes to db/dbx * - no verification for db/dbx that ESL GUIDs make sense for the variable * - no verification at all on the contents of any other variable. * * If new_esl_data_size is 0, new_esl_data will be NULL. This represents variable deletion. * return code: SUCCESS if the update was valid, otherwise an error code. * * Lifetime: new_esl_data is a fresh allocation if rc = SUCCESS. Caller must free with libstb_free(). */ sv_err_t pseries_apply_update (const auth_data_t *auth_data, uint8_t **new_esl_data, size_t *new_esl_data_size, timestamp_t *new_time, sv_flag_t *verified_flag) { sv_err_t rc = SV_SUCCESS; timestamp_t update_time = { 0 }; const uint8_t *cert_data = NULL, *esl_data = NULL; size_t cert_data_size = 0, esl_data_size = 0; bool is_append = auth_data->attributes & SV_VARIABLE_APPEND_WRITE; /* the auth data must parse as valid auth data */ rc = unpack_authenticated_variable (auth_data, &update_time, &cert_data, &cert_data_size, &esl_data, &esl_data_size); if (rc != SV_SUCCESS) { prlog (PR_ERR, "Error unpacking update's auth2 structure.\n"); return rc; } /* the signature must pass validation */ if (!(auth_data->flag & SV_VARIABLE_UPDATE_SKIP_VERIFICATION)) { rc = verify_signature (auth_data, &update_time, cert_data, cert_data_size, esl_data, esl_data_size, verified_flag); if (rc != SV_SUCCESS) return rc; } else *verified_flag = SV_AUTH_VERIFIED_BY_PK; /* * unless: * - there is no current variable or * - we are skipping verification or * - this is an append update * then the time must be ahead */ if (!((auth_data->current_time == NULL) || (auth_data->flag & SV_VARIABLE_UPDATE_SKIP_VERIFICATION) || is_append)) { if (!is_after (&update_time, auth_data->current_time)) return SV_TIMESTAMP_IN_PAST; } if (is_append && auth_data->current_esl_data != NULL && auth_data->current_esl_data_size != 0) { rc = append_update (auth_data, esl_data, esl_data_size, new_esl_data, new_esl_data_size); if (rc == SV_SUCCESS) { if (auth_data->current_time == NULL || is_after (&update_time, auth_data->current_time)) *new_time = update_time; else *new_time = *auth_data->current_time; } } else { *new_esl_data_size = esl_data_size; if (esl_data_size != 0) { *new_esl_data = (uint8_t *) libstb_zalloc (*new_esl_data_size); if (*new_esl_data == NULL) { prlog (PR_ERR, "Allocation for new data failed\n"); return SV_ALLOCATION_FAILED; } memcpy (*new_esl_data, esl_data, esl_data_size); } else { *new_esl_data = NULL; } *new_time = update_time; } return SV_SUCCESS; } libstb-secvar-main/test/000077500000000000000000000000001470177641100155275ustar00rootroot00000000000000libstb-secvar-main/test/Makefile000066400000000000000000000026231470177641100171720ustar00rootroot00000000000000# SPDX-License-Identifier: BSD-2-Clause # Copyright 2022-2023 IBM Corp. CC = gcc _CFLAGS = -Wall -Werror -MMD -ggdb3 -fPIC CFLAGS = LDFLAGS = SRC_DIR = ../src BIN_DIR =./bin LIB_DIR =../lib INCLUDE = -I../include -I../ -I../external TEST_SRCS = test_esl.c \ test_auth2.c \ test_update.c \ test_pseries.c \ test_phyp.c _LDFLAGS = $(LDFLAGS) _CFLAGS += $(CFLAGS) $(INCLUDE) #By default, build with openssl as crypto library CRYPTO_LIB = openssl ifeq ($(CRYPTO_LIB), openssl) _LDFLAGS += -lcrypto _CFLAGS += -DSECVAR_CRYPTO_OPENSSL endif BINS = $(patsubst %.c,$(BIN_DIR)/%,$(TEST_SRCS)) all: $(BINS) check: $(patsubst test_%.c,%-check,$(TEST_SRCS)) memcheck: $(patsubst test_%.c,%-memcheck,$(TEST_SRCS)) coverage: $(patsubst test_%.c,%-coverage,$(TEST_SRCS)) %-check: $(BIN_DIR)/test_% @$< %-memcheck: $(BIN_DIR)/test_% @valgrind --leak-check=full --error-exitcode=1 -q $< %-coverage: $(BIN_DIR)/test_gcov_% @$< .PRECIOUS: $(BIN_DIR)/test_% $(BIN_DIR)/test_%: test_%.c $(LIB_DIR)/libstb-secvar-$(CRYPTO_LIB).a @mkdir -p $(BIN_DIR) $(CC) -o $@ $^ $(_LDFLAGS) $(_CFLAGS) .PRECIOUS: $(BIN_DIR)/test_gcov_% $(BIN_DIR)/test_gcov_%: test_%.c $(LIB_DIR)/libstb-secvar-$(CRYPTO_LIB).gcov.a @mkdir -p $(BIN_DIR) $(CC) -o $@ $^ $(_LDFLAGS) $(_CFLAGS) -Wall -Werror -g -O0 --coverage clean: rm -rf $(BIN_DIR) .PHONY: all check cppcheck cppecheck-be clean coverage libstb-secvar-main/test/data/000077500000000000000000000000001470177641100164405ustar00rootroot00000000000000libstb-secvar-main/test/data/KEK_by_PK_auth.h000066400000000000000000000317731470177641100213430ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char KEK_by_PK_auth[] = { 0xe6, 0x07, 0x02, 0x1c, 0x01, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x04, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x04, 0xd0, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x04, 0xc1, 0x30, 0x82, 0x04, 0xbd, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x03, 0x2d, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xcf, 0xf3, 0x6e, 0xc9, 0xaf, 0x12, 0x42, 0xdb, 0xa9, 0x59, 0x6d, 0xef, 0xf6, 0x0e, 0x54, 0xe8, 0x21, 0x57, 0xc4, 0x78, 0x3f, 0x6d, 0x83, 0x37, 0x1a, 0x29, 0x10, 0xd2, 0xb8, 0xb7, 0x24, 0x49, 0x5f, 0x5f, 0x32, 0xc9, 0x39, 0xdc, 0x40, 0xa4, 0x5d, 0xea, 0x7b, 0xb7, 0xb3, 0x42, 0xab, 0x43, 0x47, 0x3d, 0x91, 0x6e, 0xf1, 0x5d, 0x3f, 0xf9, 0x2d, 0x9e, 0x88, 0xc4, 0x05, 0x73, 0x9b, 0x0a, 0xa8, 0xf7, 0xb2, 0x8e, 0x24, 0x69, 0x13, 0xf0, 0xbc, 0x5d, 0xde, 0x32, 0x40, 0x42, 0x31, 0x58, 0x9e, 0x48, 0x76, 0x1f, 0x6b, 0x10, 0x19, 0x1c, 0x4e, 0x45, 0x82, 0x19, 0xc0, 0xed, 0xfc, 0x5c, 0x7c, 0x19, 0xfd, 0x85, 0x13, 0x2b, 0xf0, 0x38, 0x83, 0x7b, 0xe5, 0x1d, 0x86, 0x70, 0xed, 0x8f, 0x52, 0x16, 0x60, 0x14, 0xfb, 0xaf, 0x23, 0x19, 0xa5, 0x45, 0x44, 0x91, 0x54, 0xd0, 0xe8, 0x79, 0x34, 0xbe, 0x4f, 0xb3, 0x8c, 0x56, 0x8c, 0x7c, 0xbf, 0x6a, 0xa2, 0x44, 0x04, 0x51, 0xe5, 0x0f, 0x30, 0x04, 0xe9, 0x90, 0xb1, 0x8a, 0xe3, 0x9b, 0x95, 0xb1, 0xd6, 0xde, 0x9e, 0x98, 0x14, 0x07, 0x63, 0xbd, 0x88, 0x94, 0x54, 0xb6, 0x03, 0x8d, 0xf5, 0x8e, 0xca, 0x82, 0xc8, 0xb1, 0x78, 0xba, 0xb4, 0x21, 0x45, 0x6f, 0xd4, 0x0c, 0xda, 0xcb, 0x81, 0x1a, 0x9b, 0xb2, 0x0c, 0xa9, 0x7c, 0x48, 0x84, 0xc8, 0xbd, 0xce, 0x46, 0x1b, 0x8b, 0x38, 0xe2, 0x67, 0x50, 0x3c, 0x3e, 0x3e, 0x32, 0xec, 0x0b, 0x39, 0xc7, 0xe0, 0xd5, 0x00, 0xc5, 0x7a, 0xd3, 0x1c, 0xd1, 0xfb, 0x0a, 0xc7, 0x5b, 0x1d, 0x21, 0x3d, 0x50, 0x53, 0x87, 0xa1, 0xb4, 0x16, 0x5b, 0x1e, 0x80, 0x80, 0xaa, 0xe5, 0xf9, 0x69, 0x6c, 0x48, 0xab, 0x45, 0x66, 0x05, 0x04, 0xc7, 0xad, 0xc1, 0x24, 0x4a, 0xde, 0xad, 0x14, 0x55, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x99, 0xdd, 0xbb, 0x72, 0xf5, 0x8e, 0xdc, 0x7b, 0xe7, 0x9c, 0x6d, 0x47, 0x37, 0x01, 0xc9, 0xc2, 0xc9, 0x90, 0x01, 0x5d, 0x26, 0x80, 0xce, 0x2b, 0xd3, 0xdd, 0x26, 0x67, 0x2a, 0x77, 0x41, 0x06, 0x78, 0xed, 0xe7, 0xb0, 0x58, 0x93, 0x44, 0xe5, 0x79, 0xc0, 0xa6, 0x52, 0x1d, 0x2c, 0x10, 0x16, 0xaa, 0xee, 0x97, 0x05, 0x80, 0x6d, 0xba, 0x45, 0xd8, 0xd3, 0xf5, 0x98, 0x8d, 0xd1, 0x66, 0x9a, 0x1c, 0x96, 0xf5, 0x2e, 0xb4, 0x4d, 0xa3, 0x79, 0x5f, 0x81, 0xb9, 0x5c, 0xcd, 0x45, 0x80, 0xa4, 0x15, 0xb3, 0x3e, 0x05, 0xf9, 0x12, 0x62, 0x41, 0x7b, 0x97, 0x08, 0x90, 0x13, 0xd3, 0x1a, 0xe7, 0xe5, 0x68, 0x1d, 0x24, 0xdb, 0x7c, 0x78, 0xd7, 0x3a, 0x4a, 0x5d, 0x7c, 0xb7, 0xf8, 0x5d, 0xa4, 0xe2, 0x40, 0x86, 0x26, 0xc0, 0x45, 0x00, 0x80, 0x16, 0x88, 0x97, 0x3e, 0x8c, 0x5c, 0x38, 0x6b, 0xa6, 0x3f, 0x7d, 0x80, 0xb4, 0xec, 0x1f, 0x89, 0x0a, 0xd3, 0x64, 0x3a, 0x85, 0xab, 0xd7, 0x0b, 0x17, 0x68, 0xc1, 0x41, 0xfc, 0xe6, 0xa0, 0x2d, 0xc8, 0x0e, 0xfd, 0xf0, 0x28, 0xf3, 0xe0, 0xb7, 0x98, 0xf3, 0xc9, 0x93, 0x97, 0xeb, 0x7f, 0x81, 0x13, 0x86, 0x95, 0x17, 0x45, 0x0d, 0x3e, 0x0d, 0x35, 0x5d, 0x2d, 0xa4, 0xa4, 0x04, 0xaa, 0x22, 0x7b, 0x40, 0x47, 0xc7, 0x31, 0x88, 0x99, 0x03, 0xaf, 0xf7, 0xe6, 0x14, 0x1b, 0xcf, 0xf7, 0x3b, 0x5d, 0xc6, 0x48, 0x24, 0x42, 0xcf, 0xfe, 0x10, 0x10, 0xc0, 0x2b, 0x23, 0x28, 0xb8, 0x4a, 0x3a, 0xff, 0x21, 0xd4, 0xa3, 0x15, 0x51, 0xbc, 0xd4, 0xd2, 0x09, 0x77, 0x77, 0x3e, 0x65, 0xb4, 0x3d, 0x1e, 0xd6, 0xc0, 0xe9, 0x3b, 0x0e, 0xee, 0xa8, 0x68, 0x46, 0x25, 0x47, 0x57, 0x08, 0x2e, 0x80, 0x99, 0x9b, 0x49, 0xfb, 0xd9, 0xc5, 0x46, 0xd7, 0x31, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x63, 0x02, 0x01, 0x01, 0x30, 0x3c, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x32, 0x88, 0xab, 0x78, 0xb0, 0xa6, 0xfb, 0x19, 0x29, 0x16, 0x93, 0x52, 0x27, 0xce, 0x76, 0x76, 0x79, 0xd2, 0xdd, 0x7b, 0x9a, 0xd7, 0xc4, 0x1a, 0x3f, 0x89, 0xe4, 0xbd, 0x9a, 0xb1, 0x0d, 0x66, 0x42, 0xad, 0xda, 0xc2, 0x24, 0x9c, 0xde, 0xb1, 0xcf, 0xfe, 0x77, 0x3f, 0x05, 0x94, 0x4f, 0x5d, 0x98, 0x50, 0xf9, 0xd0, 0x4c, 0x38, 0x79, 0xd9, 0x50, 0x0a, 0xc6, 0x8a, 0xbd, 0x0a, 0x83, 0x4b, 0x4c, 0xcf, 0x2f, 0x45, 0x3b, 0x69, 0xb5, 0x7e, 0x96, 0xef, 0x21, 0xe5, 0xea, 0x11, 0xc5, 0x10, 0xec, 0x70, 0xa0, 0xdd, 0x22, 0x75, 0x61, 0x98, 0xc2, 0xd0, 0xde, 0x17, 0x45, 0xae, 0x3f, 0x49, 0xc3, 0xa7, 0x1c, 0x66, 0xc1, 0x5d, 0xf8, 0xad, 0x9e, 0x9e, 0x3c, 0xb2, 0x96, 0x79, 0x58, 0x9f, 0xa9, 0x49, 0xac, 0x6a, 0xb4, 0x9e, 0x7f, 0xe2, 0x8e, 0x70, 0x4b, 0x3a, 0x5f, 0xee, 0xbe, 0x72, 0xcc, 0x8c, 0x57, 0x91, 0x1f, 0xb8, 0x86, 0x7e, 0x6e, 0xdb, 0x14, 0xcb, 0xe9, 0x06, 0x70, 0xb7, 0xff, 0x25, 0xce, 0x97, 0x65, 0x57, 0xfb, 0x50, 0x25, 0x6f, 0xca, 0x17, 0x75, 0x42, 0x0f, 0x9f, 0x40, 0x87, 0xe6, 0x6c, 0x91, 0x58, 0xbb, 0x00, 0x21, 0xba, 0xef, 0xfc, 0x9e, 0x5e, 0xff, 0xac, 0x81, 0xa3, 0xae, 0x40, 0xb9, 0x4c, 0xc8, 0xdc, 0xca, 0xf4, 0xb4, 0xb8, 0xd6, 0x10, 0x99, 0x1f, 0x54, 0xf4, 0xdc, 0x3c, 0x92, 0x48, 0xf0, 0xe9, 0x0b, 0x23, 0x86, 0x96, 0xab, 0x35, 0x2d, 0x76, 0x50, 0xfc, 0xee, 0xc9, 0xff, 0xf1, 0x73, 0xbc, 0x3c, 0xd4, 0x4e, 0xfc, 0x03, 0xf9, 0x1e, 0xc1, 0xb6, 0x67, 0xb9, 0x50, 0x68, 0xf0, 0x76, 0xf1, 0x6b, 0xbc, 0x83, 0x6e, 0xfd, 0x71, 0xcb, 0xc2, 0x58, 0x09, 0x0a, 0x25, 0x67, 0x38, 0xf1, 0xab, 0x0e, 0xe0, 0xf7, 0x54, 0xc3, 0x4d, 0xbb, 0xc7, 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72, 0x59, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x52, 0x14, 0xdf, 0x84, 0x5c, 0x98, 0xf8, 0x1d, 0xca, 0xe4, 0x20, 0x45, 0x74, 0xb6, 0x11, 0xec, 0x30, 0xb8, 0xbf, 0xcd, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf2, 0x78, 0x86, 0xc0, 0xe9, 0x0b, 0x63, 0xd2, 0xc2, 0xb8, 0xb3, 0xb2, 0xcb, 0xc7, 0x52, 0x73, 0xf5, 0xfa, 0x2e, 0x1f, 0xf6, 0x8f, 0x53, 0xf7, 0x11, 0x98, 0xe4, 0x18, 0x3b, 0x1c, 0x8a, 0x60, 0x05, 0x3f, 0xba, 0x14, 0xf1, 0xd4, 0x40, 0x66, 0xcc, 0x46, 0x38, 0xc1, 0x1d, 0x62, 0x60, 0xee, 0x9a, 0x27, 0x03, 0x0c, 0x10, 0x7b, 0xb5, 0x9a, 0x2c, 0x90, 0xd4, 0x16, 0x4a, 0xb7, 0x28, 0x29, 0x75, 0xd9, 0xc6, 0x76, 0xe4, 0xbc, 0x56, 0xd4, 0x0d, 0xa7, 0x89, 0x82, 0xc6, 0xbd, 0xab, 0xe3, 0x1c, 0xe0, 0x2d, 0x83, 0x65, 0xc6, 0xba, 0xf8, 0x8c, 0xbe, 0x39, 0xf6, 0x58, 0x4f, 0xcd, 0xc0, 0x04, 0xa4, 0xe5, 0xbe, 0xb9, 0xcf, 0xe5, 0x6b, 0x5b, 0xfa, 0xa8, 0x3e, 0x85, 0x3d, 0x8b, 0xd5, 0x79, 0x05, 0x96, 0x9c, 0x02, 0xea, 0x75, 0x7f, 0xcb, 0x92, 0x04, 0x91, 0x47, 0xe4, 0xc9, 0x94, 0x05, 0xef, 0xe2, 0x44, 0xbc, 0xc7, 0x1a, 0x00, 0x93, 0x40, 0x49, 0x77, 0x55, 0xc1, 0xa1, 0xb0, 0xb2, 0xcf, 0x50, 0x87, 0x80, 0x17, 0x11, 0xf6, 0x84, 0xf5, 0xea, 0x6c, 0xc3, 0xfa, 0xe4, 0xeb, 0x20, 0x24, 0x20, 0x81, 0xf3, 0x1a, 0x98, 0x71, 0x69, 0x33, 0x3a, 0x8e, 0x34, 0x6a, 0x40, 0x13, 0x83, 0x87, 0x8d, 0xa1, 0xf6, 0x8b, 0x20, 0x39, 0x76, 0x41, 0x0f, 0x3b, 0x3a, 0xec, 0x73, 0xe0, 0xca, 0x29, 0x83, 0xa0, 0xd7, 0x17, 0x4d, 0xf8, 0xe9, 0x93, 0x24, 0xb3, 0xf3, 0xf0, 0x01, 0xe4, 0x25, 0x20, 0x78, 0x55, 0x60, 0x1d, 0xed, 0x54, 0x54, 0x7b, 0x91, 0x5d, 0x7d, 0x6c, 0x62, 0x0a, 0xb7, 0xb4, 0xea, 0x15, 0xc7, 0xbd, 0xb5, 0xda, 0xfb, 0x23, 0x0a, 0x45, 0xbc, 0xb2, 0x63, 0xda, 0xb4, 0x09, 0xbe, 0x0b, 0x5d, 0x1c, 0x80, 0xfb, 0x7e, 0x6a, 0x72, 0x11, 0x22, 0x9f, 0xb5, 0xc9, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x89, 0x01, 0xe1, 0x2a, 0x0f, 0x43, 0x6b, 0xb0, 0xc5, 0x87, 0x21, 0xba, 0xed, 0xdf, 0x49, 0x4c, 0x6e, 0x66, 0xda, 0x23, 0x34, 0x1d, 0xc7, 0x5f, 0x68, 0xdb, 0x9b, 0x74, 0xd5, 0xd9, 0x68, 0x39, 0x91, 0x63, 0xd4, 0x34, 0x24, 0xbe, 0xa9, 0x03, 0x47, 0x6e, 0x99, 0x99, 0x34, 0x75, 0x69, 0x3b, 0xbc, 0x25, 0x38, 0xed, 0x38, 0xda, 0x59, 0x8d, 0x3c, 0xd6, 0xd8, 0x0f, 0x9b, 0x06, 0x5c, 0xa3, 0x39, 0xdc, 0xea, 0x27, 0xf6, 0x97, 0x4f, 0xf3, 0x61, 0xdf, 0xef, 0x79, 0x21, 0xf3, 0x81, 0xd2, 0x78, 0xb3, 0x08, 0xef, 0xa8, 0x69, 0xfb, 0x99, 0x0b, 0x75, 0x4a, 0x59, 0xbf, 0x1a, 0xa8, 0x53, 0xd5, 0x88, 0x3a, 0x72, 0xf8, 0xb6, 0xef, 0xa6, 0xec, 0x9d, 0xfa, 0x86, 0x2d, 0x0a, 0x10, 0xde, 0xb5, 0x03, 0x1f, 0x56, 0x8e, 0x5e, 0xaa, 0x3f, 0x41, 0x4f, 0x4d, 0x1e, 0xd1, 0x3c, 0x15, 0xf6, 0x2d, 0xd6, 0x0f, 0xc2, 0x09, 0xd8, 0x50, 0x69, 0x53, 0x56, 0x5a, 0x93, 0x72, 0xa6, 0x91, 0x69, 0x89, 0x9f, 0x5c, 0xac, 0xca, 0xfa, 0xa5, 0xa7, 0x98, 0xc6, 0xeb, 0xe3, 0xb3, 0x76, 0xd7, 0x36, 0x1a, 0x90, 0x94, 0x97, 0xf4, 0x77, 0xc7, 0xf2, 0xcc, 0x55, 0xcd, 0x65, 0x38, 0x3b, 0x0b, 0x14, 0xc2, 0xb9, 0x43, 0xb3, 0x31, 0x7b, 0xe5, 0x78, 0xa4, 0xde, 0xd8, 0x55, 0x21, 0x00, 0x58, 0x64, 0xd6, 0x43, 0xe9, 0x20, 0xee, 0x82, 0xa8, 0x65, 0xd3, 0x29, 0x79, 0xe1, 0xe5, 0x9d, 0x6e, 0x9d, 0xc0, 0xfa, 0x0a, 0xa1, 0xac, 0xeb, 0x97, 0x69, 0x80, 0xc6, 0xa0, 0xb7, 0x7e, 0x88, 0x4e, 0x12, 0xf0, 0x0d, 0xf7, 0xe5, 0xf8, 0x60, 0x5f, 0x24, 0x50, 0xe9, 0x92, 0x1a, 0xbb, 0xd4, 0xa9, 0xde, 0xa6, 0x7a, 0x15, 0xea, 0xcc, 0x8a, 0xe3, 0x56, 0x3c, 0xa9, 0xf5, 0x31, 0x3d, 0x33, 0x2e, 0xf2 }; unsigned int KEK_by_PK_auth_len = 2133; libstb-secvar-main/test/data/PK_sv.h000066400000000000000000000125361470177641100176420ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char PK_sv[] = { 0x00, 0xe6, 0x07, 0x02, 0x1c, 0x0b, 0x1d, 0x07, 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72, 0x59, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xcf, 0xf3, 0x6e, 0xc9, 0xaf, 0x12, 0x42, 0xdb, 0xa9, 0x59, 0x6d, 0xef, 0xf6, 0x0e, 0x54, 0xe8, 0x21, 0x57, 0xc4, 0x78, 0x3f, 0x6d, 0x83, 0x37, 0x1a, 0x29, 0x10, 0xd2, 0xb8, 0xb7, 0x24, 0x49, 0x5f, 0x5f, 0x32, 0xc9, 0x39, 0xdc, 0x40, 0xa4, 0x5d, 0xea, 0x7b, 0xb7, 0xb3, 0x42, 0xab, 0x43, 0x47, 0x3d, 0x91, 0x6e, 0xf1, 0x5d, 0x3f, 0xf9, 0x2d, 0x9e, 0x88, 0xc4, 0x05, 0x73, 0x9b, 0x0a, 0xa8, 0xf7, 0xb2, 0x8e, 0x24, 0x69, 0x13, 0xf0, 0xbc, 0x5d, 0xde, 0x32, 0x40, 0x42, 0x31, 0x58, 0x9e, 0x48, 0x76, 0x1f, 0x6b, 0x10, 0x19, 0x1c, 0x4e, 0x45, 0x82, 0x19, 0xc0, 0xed, 0xfc, 0x5c, 0x7c, 0x19, 0xfd, 0x85, 0x13, 0x2b, 0xf0, 0x38, 0x83, 0x7b, 0xe5, 0x1d, 0x86, 0x70, 0xed, 0x8f, 0x52, 0x16, 0x60, 0x14, 0xfb, 0xaf, 0x23, 0x19, 0xa5, 0x45, 0x44, 0x91, 0x54, 0xd0, 0xe8, 0x79, 0x34, 0xbe, 0x4f, 0xb3, 0x8c, 0x56, 0x8c, 0x7c, 0xbf, 0x6a, 0xa2, 0x44, 0x04, 0x51, 0xe5, 0x0f, 0x30, 0x04, 0xe9, 0x90, 0xb1, 0x8a, 0xe3, 0x9b, 0x95, 0xb1, 0xd6, 0xde, 0x9e, 0x98, 0x14, 0x07, 0x63, 0xbd, 0x88, 0x94, 0x54, 0xb6, 0x03, 0x8d, 0xf5, 0x8e, 0xca, 0x82, 0xc8, 0xb1, 0x78, 0xba, 0xb4, 0x21, 0x45, 0x6f, 0xd4, 0x0c, 0xda, 0xcb, 0x81, 0x1a, 0x9b, 0xb2, 0x0c, 0xa9, 0x7c, 0x48, 0x84, 0xc8, 0xbd, 0xce, 0x46, 0x1b, 0x8b, 0x38, 0xe2, 0x67, 0x50, 0x3c, 0x3e, 0x3e, 0x32, 0xec, 0x0b, 0x39, 0xc7, 0xe0, 0xd5, 0x00, 0xc5, 0x7a, 0xd3, 0x1c, 0xd1, 0xfb, 0x0a, 0xc7, 0x5b, 0x1d, 0x21, 0x3d, 0x50, 0x53, 0x87, 0xa1, 0xb4, 0x16, 0x5b, 0x1e, 0x80, 0x80, 0xaa, 0xe5, 0xf9, 0x69, 0x6c, 0x48, 0xab, 0x45, 0x66, 0x05, 0x04, 0xc7, 0xad, 0xc1, 0x24, 0x4a, 0xde, 0xad, 0x14, 0x55, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x99, 0xdd, 0xbb, 0x72, 0xf5, 0x8e, 0xdc, 0x7b, 0xe7, 0x9c, 0x6d, 0x47, 0x37, 0x01, 0xc9, 0xc2, 0xc9, 0x90, 0x01, 0x5d, 0x26, 0x80, 0xce, 0x2b, 0xd3, 0xdd, 0x26, 0x67, 0x2a, 0x77, 0x41, 0x06, 0x78, 0xed, 0xe7, 0xb0, 0x58, 0x93, 0x44, 0xe5, 0x79, 0xc0, 0xa6, 0x52, 0x1d, 0x2c, 0x10, 0x16, 0xaa, 0xee, 0x97, 0x05, 0x80, 0x6d, 0xba, 0x45, 0xd8, 0xd3, 0xf5, 0x98, 0x8d, 0xd1, 0x66, 0x9a, 0x1c, 0x96, 0xf5, 0x2e, 0xb4, 0x4d, 0xa3, 0x79, 0x5f, 0x81, 0xb9, 0x5c, 0xcd, 0x45, 0x80, 0xa4, 0x15, 0xb3, 0x3e, 0x05, 0xf9, 0x12, 0x62, 0x41, 0x7b, 0x97, 0x08, 0x90, 0x13, 0xd3, 0x1a, 0xe7, 0xe5, 0x68, 0x1d, 0x24, 0xdb, 0x7c, 0x78, 0xd7, 0x3a, 0x4a, 0x5d, 0x7c, 0xb7, 0xf8, 0x5d, 0xa4, 0xe2, 0x40, 0x86, 0x26, 0xc0, 0x45, 0x00, 0x80, 0x16, 0x88, 0x97, 0x3e, 0x8c, 0x5c, 0x38, 0x6b, 0xa6, 0x3f, 0x7d, 0x80, 0xb4, 0xec, 0x1f, 0x89, 0x0a, 0xd3, 0x64, 0x3a, 0x85, 0xab, 0xd7, 0x0b, 0x17, 0x68, 0xc1, 0x41, 0xfc, 0xe6, 0xa0, 0x2d, 0xc8, 0x0e, 0xfd, 0xf0, 0x28, 0xf3, 0xe0, 0xb7, 0x98, 0xf3, 0xc9, 0x93, 0x97, 0xeb, 0x7f, 0x81, 0x13, 0x86, 0x95, 0x17, 0x45, 0x0d, 0x3e, 0x0d, 0x35, 0x5d, 0x2d, 0xa4, 0xa4, 0x04, 0xaa, 0x22, 0x7b, 0x40, 0x47, 0xc7, 0x31, 0x88, 0x99, 0x03, 0xaf, 0xf7, 0xe6, 0x14, 0x1b, 0xcf, 0xf7, 0x3b, 0x5d, 0xc6, 0x48, 0x24, 0x42, 0xcf, 0xfe, 0x10, 0x10, 0xc0, 0x2b, 0x23, 0x28, 0xb8, 0x4a, 0x3a, 0xff, 0x21, 0xd4, 0xa3, 0x15, 0x51, 0xbc, 0xd4, 0xd2, 0x09, 0x77, 0x77, 0x3e, 0x65, 0xb4, 0x3d, 0x1e, 0xd6, 0xc0, 0xe9, 0x3b, 0x0e, 0xee, 0xa8, 0x68, 0x46, 0x25, 0x47, 0x57, 0x08, 0x2e, 0x80, 0x99, 0x9b, 0x49, 0xfb, 0xd9, 0xc5, 0x46, 0xd7 }; unsigned int PK_sv_len = 865; libstb-secvar-main/test/data/db_by_KEK_auth.h000066400000000000000000000317731470177641100214160ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char db_by_KEK_auth[] = { 0xe6, 0x07, 0x02, 0x1c, 0x01, 0x1a, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x04, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x04, 0xd0, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x04, 0xc1, 0x30, 0x82, 0x04, 0xbd, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x03, 0x2d, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x52, 0x14, 0xdf, 0x84, 0x5c, 0x98, 0xf8, 0x1d, 0xca, 0xe4, 0x20, 0x45, 0x74, 0xb6, 0x11, 0xec, 0x30, 0xb8, 0xbf, 0xcd, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf2, 0x78, 0x86, 0xc0, 0xe9, 0x0b, 0x63, 0xd2, 0xc2, 0xb8, 0xb3, 0xb2, 0xcb, 0xc7, 0x52, 0x73, 0xf5, 0xfa, 0x2e, 0x1f, 0xf6, 0x8f, 0x53, 0xf7, 0x11, 0x98, 0xe4, 0x18, 0x3b, 0x1c, 0x8a, 0x60, 0x05, 0x3f, 0xba, 0x14, 0xf1, 0xd4, 0x40, 0x66, 0xcc, 0x46, 0x38, 0xc1, 0x1d, 0x62, 0x60, 0xee, 0x9a, 0x27, 0x03, 0x0c, 0x10, 0x7b, 0xb5, 0x9a, 0x2c, 0x90, 0xd4, 0x16, 0x4a, 0xb7, 0x28, 0x29, 0x75, 0xd9, 0xc6, 0x76, 0xe4, 0xbc, 0x56, 0xd4, 0x0d, 0xa7, 0x89, 0x82, 0xc6, 0xbd, 0xab, 0xe3, 0x1c, 0xe0, 0x2d, 0x83, 0x65, 0xc6, 0xba, 0xf8, 0x8c, 0xbe, 0x39, 0xf6, 0x58, 0x4f, 0xcd, 0xc0, 0x04, 0xa4, 0xe5, 0xbe, 0xb9, 0xcf, 0xe5, 0x6b, 0x5b, 0xfa, 0xa8, 0x3e, 0x85, 0x3d, 0x8b, 0xd5, 0x79, 0x05, 0x96, 0x9c, 0x02, 0xea, 0x75, 0x7f, 0xcb, 0x92, 0x04, 0x91, 0x47, 0xe4, 0xc9, 0x94, 0x05, 0xef, 0xe2, 0x44, 0xbc, 0xc7, 0x1a, 0x00, 0x93, 0x40, 0x49, 0x77, 0x55, 0xc1, 0xa1, 0xb0, 0xb2, 0xcf, 0x50, 0x87, 0x80, 0x17, 0x11, 0xf6, 0x84, 0xf5, 0xea, 0x6c, 0xc3, 0xfa, 0xe4, 0xeb, 0x20, 0x24, 0x20, 0x81, 0xf3, 0x1a, 0x98, 0x71, 0x69, 0x33, 0x3a, 0x8e, 0x34, 0x6a, 0x40, 0x13, 0x83, 0x87, 0x8d, 0xa1, 0xf6, 0x8b, 0x20, 0x39, 0x76, 0x41, 0x0f, 0x3b, 0x3a, 0xec, 0x73, 0xe0, 0xca, 0x29, 0x83, 0xa0, 0xd7, 0x17, 0x4d, 0xf8, 0xe9, 0x93, 0x24, 0xb3, 0xf3, 0xf0, 0x01, 0xe4, 0x25, 0x20, 0x78, 0x55, 0x60, 0x1d, 0xed, 0x54, 0x54, 0x7b, 0x91, 0x5d, 0x7d, 0x6c, 0x62, 0x0a, 0xb7, 0xb4, 0xea, 0x15, 0xc7, 0xbd, 0xb5, 0xda, 0xfb, 0x23, 0x0a, 0x45, 0xbc, 0xb2, 0x63, 0xda, 0xb4, 0x09, 0xbe, 0x0b, 0x5d, 0x1c, 0x80, 0xfb, 0x7e, 0x6a, 0x72, 0x11, 0x22, 0x9f, 0xb5, 0xc9, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x89, 0x01, 0xe1, 0x2a, 0x0f, 0x43, 0x6b, 0xb0, 0xc5, 0x87, 0x21, 0xba, 0xed, 0xdf, 0x49, 0x4c, 0x6e, 0x66, 0xda, 0x23, 0x34, 0x1d, 0xc7, 0x5f, 0x68, 0xdb, 0x9b, 0x74, 0xd5, 0xd9, 0x68, 0x39, 0x91, 0x63, 0xd4, 0x34, 0x24, 0xbe, 0xa9, 0x03, 0x47, 0x6e, 0x99, 0x99, 0x34, 0x75, 0x69, 0x3b, 0xbc, 0x25, 0x38, 0xed, 0x38, 0xda, 0x59, 0x8d, 0x3c, 0xd6, 0xd8, 0x0f, 0x9b, 0x06, 0x5c, 0xa3, 0x39, 0xdc, 0xea, 0x27, 0xf6, 0x97, 0x4f, 0xf3, 0x61, 0xdf, 0xef, 0x79, 0x21, 0xf3, 0x81, 0xd2, 0x78, 0xb3, 0x08, 0xef, 0xa8, 0x69, 0xfb, 0x99, 0x0b, 0x75, 0x4a, 0x59, 0xbf, 0x1a, 0xa8, 0x53, 0xd5, 0x88, 0x3a, 0x72, 0xf8, 0xb6, 0xef, 0xa6, 0xec, 0x9d, 0xfa, 0x86, 0x2d, 0x0a, 0x10, 0xde, 0xb5, 0x03, 0x1f, 0x56, 0x8e, 0x5e, 0xaa, 0x3f, 0x41, 0x4f, 0x4d, 0x1e, 0xd1, 0x3c, 0x15, 0xf6, 0x2d, 0xd6, 0x0f, 0xc2, 0x09, 0xd8, 0x50, 0x69, 0x53, 0x56, 0x5a, 0x93, 0x72, 0xa6, 0x91, 0x69, 0x89, 0x9f, 0x5c, 0xac, 0xca, 0xfa, 0xa5, 0xa7, 0x98, 0xc6, 0xeb, 0xe3, 0xb3, 0x76, 0xd7, 0x36, 0x1a, 0x90, 0x94, 0x97, 0xf4, 0x77, 0xc7, 0xf2, 0xcc, 0x55, 0xcd, 0x65, 0x38, 0x3b, 0x0b, 0x14, 0xc2, 0xb9, 0x43, 0xb3, 0x31, 0x7b, 0xe5, 0x78, 0xa4, 0xde, 0xd8, 0x55, 0x21, 0x00, 0x58, 0x64, 0xd6, 0x43, 0xe9, 0x20, 0xee, 0x82, 0xa8, 0x65, 0xd3, 0x29, 0x79, 0xe1, 0xe5, 0x9d, 0x6e, 0x9d, 0xc0, 0xfa, 0x0a, 0xa1, 0xac, 0xeb, 0x97, 0x69, 0x80, 0xc6, 0xa0, 0xb7, 0x7e, 0x88, 0x4e, 0x12, 0xf0, 0x0d, 0xf7, 0xe5, 0xf8, 0x60, 0x5f, 0x24, 0x50, 0xe9, 0x92, 0x1a, 0xbb, 0xd4, 0xa9, 0xde, 0xa6, 0x7a, 0x15, 0xea, 0xcc, 0x8a, 0xe3, 0x56, 0x3c, 0xa9, 0xf5, 0x31, 0x3d, 0x33, 0x2e, 0xf2, 0x31, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x63, 0x02, 0x01, 0x01, 0x30, 0x3c, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x02, 0x14, 0x52, 0x14, 0xdf, 0x84, 0x5c, 0x98, 0xf8, 0x1d, 0xca, 0xe4, 0x20, 0x45, 0x74, 0xb6, 0x11, 0xec, 0x30, 0xb8, 0xbf, 0xcd, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x59, 0x91, 0x73, 0x57, 0xeb, 0xf7, 0xf2, 0x1b, 0xe9, 0x72, 0xe5, 0x0b, 0xde, 0x89, 0xea, 0xf8, 0xa2, 0x2c, 0x0e, 0x51, 0x92, 0x8f, 0xb3, 0xc4, 0x20, 0x1d, 0x3b, 0xbe, 0x66, 0xf8, 0x60, 0x59, 0x3b, 0xeb, 0xb8, 0x0e, 0xf7, 0x69, 0xa0, 0x24, 0xe5, 0x47, 0xf0, 0x95, 0xb9, 0x35, 0xe4, 0x6e, 0x33, 0x92, 0x87, 0x0c, 0x6e, 0x4d, 0x91, 0xf0, 0xba, 0x72, 0x75, 0x6e, 0xfe, 0x61, 0x82, 0xf2, 0xb4, 0xe2, 0x7f, 0x85, 0x57, 0x2b, 0x65, 0x6b, 0xf0, 0xaa, 0xfa, 0x95, 0x63, 0xe8, 0xe7, 0x4d, 0x5f, 0x61, 0x50, 0x65, 0xc8, 0x3a, 0xb5, 0x6d, 0x26, 0x5a, 0x64, 0x51, 0x64, 0x52, 0x6a, 0xa0, 0x13, 0xef, 0xb5, 0xaa, 0xa1, 0x53, 0x1b, 0xea, 0xbf, 0xf1, 0x2a, 0xbc, 0xd6, 0xb5, 0xf1, 0x74, 0x88, 0x1c, 0x3d, 0x55, 0xca, 0x4e, 0xa7, 0xe4, 0x6d, 0x1b, 0x21, 0x30, 0x6d, 0x8e, 0x76, 0xc1, 0xe4, 0x67, 0xed, 0xe1, 0x3d, 0x6c, 0x6e, 0xfc, 0x5f, 0x46, 0xa7, 0x91, 0xfe, 0x38, 0x73, 0x0f, 0x80, 0x9c, 0x7c, 0x37, 0xd7, 0x76, 0x94, 0xf1, 0xcf, 0x44, 0x21, 0x64, 0x8b, 0x52, 0xad, 0xec, 0x78, 0xf1, 0xa1, 0x42, 0x22, 0xb0, 0x3c, 0xad, 0x1b, 0x4d, 0xbf, 0x88, 0x6a, 0xec, 0x77, 0x59, 0x32, 0x19, 0x09, 0x19, 0xa2, 0x47, 0x36, 0x64, 0x38, 0xf6, 0x94, 0x92, 0xa0, 0xd9, 0x1b, 0x18, 0x00, 0xa2, 0xea, 0x4d, 0x90, 0x27, 0x44, 0x98, 0x39, 0xee, 0x5b, 0xcc, 0x62, 0xde, 0x07, 0xb1, 0xbe, 0x88, 0x19, 0xac, 0x08, 0xf3, 0x9c, 0x28, 0x9a, 0xc5, 0x2a, 0x7e, 0x2e, 0x9f, 0x5c, 0x0a, 0x94, 0x7f, 0xdb, 0x00, 0xe9, 0xf7, 0xd8, 0x62, 0xeb, 0xb9, 0x13, 0x7c, 0x86, 0xcd, 0x93, 0xdb, 0x38, 0xde, 0xaa, 0xe0, 0x18, 0x96, 0x03, 0xd9, 0xb1, 0xcf, 0x6e, 0x7a, 0xa9, 0x09, 0x83, 0xc2, 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72, 0x59, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x7b, 0xc8, 0x7c, 0x4c, 0x21, 0x80, 0x83, 0x3a, 0x6d, 0x0a, 0x81, 0xc1, 0x80, 0x03, 0xeb, 0xe6, 0x59, 0xd2, 0xb1, 0x60, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xba, 0x6d, 0x75, 0x87, 0x63, 0x40, 0xc7, 0x20, 0x0a, 0x7f, 0xc6, 0xbd, 0xa1, 0x7a, 0x0a, 0x08, 0x77, 0xc7, 0x1a, 0x1d, 0xfd, 0x29, 0x2a, 0x95, 0x08, 0xb3, 0xf1, 0x5e, 0xe4, 0xca, 0x4f, 0x74, 0xcf, 0x4e, 0xc7, 0xd0, 0x6d, 0x87, 0x12, 0x8a, 0x79, 0xb3, 0x7e, 0x80, 0xa5, 0xdb, 0x45, 0x2d, 0x4c, 0x4e, 0x74, 0x7d, 0x6b, 0xc7, 0xcb, 0xd4, 0x78, 0xc0, 0x33, 0x9a, 0x56, 0x38, 0xb7, 0x48, 0x61, 0xc8, 0x39, 0xc7, 0x4d, 0x80, 0x2e, 0x93, 0x0f, 0xbf, 0x66, 0x7f, 0x98, 0x13, 0xff, 0x85, 0xc7, 0xba, 0xac, 0x16, 0x66, 0xe9, 0xa6, 0x23, 0xbe, 0xd1, 0x57, 0x93, 0xe2, 0x7c, 0x4c, 0x1d, 0x44, 0xfd, 0xf9, 0x32, 0xf6, 0x5e, 0x48, 0x9a, 0xf4, 0x49, 0x7a, 0x6f, 0x93, 0xdb, 0x16, 0xf3, 0x0b, 0xe3, 0x31, 0x59, 0x5b, 0xff, 0x60, 0x35, 0x40, 0x90, 0x19, 0xaf, 0x9a, 0x51, 0xa3, 0x93, 0x3f, 0x68, 0x32, 0xf1, 0x49, 0x17, 0x6e, 0xb8, 0x3f, 0xe5, 0x7e, 0x27, 0x4f, 0x27, 0x47, 0x93, 0x3b, 0x10, 0x06, 0x25, 0x65, 0x97, 0x5d, 0xe4, 0xe1, 0x71, 0x2f, 0x3d, 0x39, 0x09, 0xe6, 0xed, 0x6e, 0x6d, 0xf1, 0x3d, 0x0f, 0xc2, 0xbc, 0xee, 0xb9, 0x81, 0xa4, 0x47, 0xa9, 0xaf, 0x9b, 0xc4, 0x2f, 0x78, 0xba, 0x32, 0xbc, 0x9c, 0xfe, 0xde, 0x69, 0x1c, 0x82, 0x02, 0x39, 0x2c, 0x18, 0x6c, 0x91, 0x77, 0xce, 0x95, 0xa6, 0x28, 0x9e, 0xa3, 0x40, 0x65, 0x59, 0x05, 0x27, 0x2e, 0x73, 0x2a, 0x7e, 0xde, 0xc1, 0x59, 0x75, 0x3e, 0x76, 0xd1, 0x65, 0x6b, 0x4b, 0x6b, 0x72, 0xb2, 0x25, 0xc6, 0x54, 0x61, 0xd1, 0xd1, 0x30, 0xd2, 0x6f, 0x83, 0xe2, 0xf1, 0x1c, 0x6b, 0xc8, 0x83, 0x01, 0xff, 0xb8, 0x27, 0x37, 0x0f, 0x57, 0x17, 0x53, 0x64, 0x58, 0x79, 0x7f, 0xee, 0x83, 0x89, 0x91, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xc3, 0x4b, 0x48, 0x29, 0xa1, 0x4a, 0xec, 0x14, 0x2b, 0xdd, 0xcd, 0xa2, 0xd2, 0xa6, 0xe9, 0x1e, 0x54, 0xae, 0x24, 0x08, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xc3, 0x4b, 0x48, 0x29, 0xa1, 0x4a, 0xec, 0x14, 0x2b, 0xdd, 0xcd, 0xa2, 0xd2, 0xa6, 0xe9, 0x1e, 0x54, 0xae, 0x24, 0x08, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x7e, 0xb2, 0x18, 0x69, 0xf0, 0x2e, 0xe0, 0x28, 0x56, 0x72, 0xfc, 0xe2, 0xf7, 0x30, 0x14, 0x0a, 0xf4, 0xb1, 0x92, 0xa4, 0x7e, 0xd8, 0xfd, 0xa2, 0x7f, 0x80, 0xd9, 0x45, 0xde, 0x2a, 0x70, 0xf0, 0x44, 0xde, 0xb8, 0xce, 0xe6, 0xd5, 0x40, 0x80, 0xc9, 0x97, 0x47, 0x3e, 0xed, 0x04, 0x61, 0xaf, 0x7d, 0x4e, 0x2d, 0x9b, 0x12, 0x3e, 0xed, 0x0c, 0x81, 0xf4, 0xa3, 0x5d, 0xfd, 0x18, 0xa0, 0x7a, 0xbc, 0xb5, 0x5a, 0x0a, 0xaa, 0xb7, 0x04, 0xc1, 0x24, 0xee, 0xc8, 0xe3, 0x11, 0x33, 0x2a, 0xa4, 0x13, 0x1b, 0xc3, 0x43, 0xf0, 0x82, 0xa9, 0x6c, 0x67, 0x83, 0x56, 0x5c, 0x31, 0xa3, 0x0a, 0x69, 0xc6, 0xf7, 0x2a, 0x1b, 0xa6, 0xde, 0x55, 0xeb, 0x2d, 0xe2, 0x71, 0x4f, 0xa5, 0x44, 0x67, 0xef, 0xe2, 0x60, 0xcf, 0x6a, 0xb6, 0x73, 0x56, 0x4e, 0x80, 0x2a, 0xfb, 0x99, 0x19, 0xfe, 0x64, 0x49, 0x10, 0x73, 0x02, 0x9b, 0x60, 0xb2, 0x25, 0x7f, 0x7b, 0x4f, 0x6d, 0x0c, 0x04, 0xcc, 0xd1, 0x93, 0x00, 0x64, 0x9e, 0xc1, 0xaa, 0x71, 0x9b, 0xb7, 0x13, 0x49, 0xb7, 0x3c, 0xe0, 0x99, 0x3a, 0xe9, 0xce, 0xca, 0x36, 0x3e, 0x5e, 0x1a, 0x47, 0x18, 0x9a, 0x74, 0x77, 0x76, 0x8e, 0x99, 0xc3, 0x24, 0x44, 0x14, 0x0b, 0xb8, 0x9c, 0x14, 0x5f, 0xb6, 0xb4, 0x05, 0x7d, 0xd1, 0x0e, 0xfd, 0xd6, 0x7a, 0x84, 0x52, 0x8e, 0xb7, 0xe1, 0xb4, 0xbf, 0x5a, 0x09, 0xc6, 0xb5, 0xb3, 0x25, 0x86, 0x24, 0x0c, 0xc9, 0x13, 0x96, 0x8f, 0x79, 0x04, 0x14, 0x65, 0x7e, 0xe1, 0x0a, 0x74, 0x4c, 0xcf, 0x03, 0x54, 0xdd, 0x7d, 0x69, 0x77, 0x54, 0x5e, 0x85, 0x7e, 0x4d, 0xf4, 0x1e, 0xb4, 0x13, 0x08, 0x33, 0x72, 0x8d, 0x03, 0xdd, 0xc7, 0x0a, 0x37, 0x2c, 0x9e, 0xf2, 0x58, 0x17, 0xef, 0x31, 0xa3, 0xfe, 0xda }; unsigned int db_by_KEK_auth_len = 2133; libstb-secvar-main/test/data/dbx_1_auth.h000066400000000000000000000202571470177641100206350ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char dbx_1_auth[] = { 0xe6, 0x07, 0x02, 0x1c, 0x0c, 0x31, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x04, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x04, 0xbd, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x03, 0x2d, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x52, 0x14, 0xdf, 0x84, 0x5c, 0x98, 0xf8, 0x1d, 0xca, 0xe4, 0x20, 0x45, 0x74, 0xb6, 0x11, 0xec, 0x30, 0xb8, 0xbf, 0xcd, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf2, 0x78, 0x86, 0xc0, 0xe9, 0x0b, 0x63, 0xd2, 0xc2, 0xb8, 0xb3, 0xb2, 0xcb, 0xc7, 0x52, 0x73, 0xf5, 0xfa, 0x2e, 0x1f, 0xf6, 0x8f, 0x53, 0xf7, 0x11, 0x98, 0xe4, 0x18, 0x3b, 0x1c, 0x8a, 0x60, 0x05, 0x3f, 0xba, 0x14, 0xf1, 0xd4, 0x40, 0x66, 0xcc, 0x46, 0x38, 0xc1, 0x1d, 0x62, 0x60, 0xee, 0x9a, 0x27, 0x03, 0x0c, 0x10, 0x7b, 0xb5, 0x9a, 0x2c, 0x90, 0xd4, 0x16, 0x4a, 0xb7, 0x28, 0x29, 0x75, 0xd9, 0xc6, 0x76, 0xe4, 0xbc, 0x56, 0xd4, 0x0d, 0xa7, 0x89, 0x82, 0xc6, 0xbd, 0xab, 0xe3, 0x1c, 0xe0, 0x2d, 0x83, 0x65, 0xc6, 0xba, 0xf8, 0x8c, 0xbe, 0x39, 0xf6, 0x58, 0x4f, 0xcd, 0xc0, 0x04, 0xa4, 0xe5, 0xbe, 0xb9, 0xcf, 0xe5, 0x6b, 0x5b, 0xfa, 0xa8, 0x3e, 0x85, 0x3d, 0x8b, 0xd5, 0x79, 0x05, 0x96, 0x9c, 0x02, 0xea, 0x75, 0x7f, 0xcb, 0x92, 0x04, 0x91, 0x47, 0xe4, 0xc9, 0x94, 0x05, 0xef, 0xe2, 0x44, 0xbc, 0xc7, 0x1a, 0x00, 0x93, 0x40, 0x49, 0x77, 0x55, 0xc1, 0xa1, 0xb0, 0xb2, 0xcf, 0x50, 0x87, 0x80, 0x17, 0x11, 0xf6, 0x84, 0xf5, 0xea, 0x6c, 0xc3, 0xfa, 0xe4, 0xeb, 0x20, 0x24, 0x20, 0x81, 0xf3, 0x1a, 0x98, 0x71, 0x69, 0x33, 0x3a, 0x8e, 0x34, 0x6a, 0x40, 0x13, 0x83, 0x87, 0x8d, 0xa1, 0xf6, 0x8b, 0x20, 0x39, 0x76, 0x41, 0x0f, 0x3b, 0x3a, 0xec, 0x73, 0xe0, 0xca, 0x29, 0x83, 0xa0, 0xd7, 0x17, 0x4d, 0xf8, 0xe9, 0x93, 0x24, 0xb3, 0xf3, 0xf0, 0x01, 0xe4, 0x25, 0x20, 0x78, 0x55, 0x60, 0x1d, 0xed, 0x54, 0x54, 0x7b, 0x91, 0x5d, 0x7d, 0x6c, 0x62, 0x0a, 0xb7, 0xb4, 0xea, 0x15, 0xc7, 0xbd, 0xb5, 0xda, 0xfb, 0x23, 0x0a, 0x45, 0xbc, 0xb2, 0x63, 0xda, 0xb4, 0x09, 0xbe, 0x0b, 0x5d, 0x1c, 0x80, 0xfb, 0x7e, 0x6a, 0x72, 0x11, 0x22, 0x9f, 0xb5, 0xc9, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x89, 0x01, 0xe1, 0x2a, 0x0f, 0x43, 0x6b, 0xb0, 0xc5, 0x87, 0x21, 0xba, 0xed, 0xdf, 0x49, 0x4c, 0x6e, 0x66, 0xda, 0x23, 0x34, 0x1d, 0xc7, 0x5f, 0x68, 0xdb, 0x9b, 0x74, 0xd5, 0xd9, 0x68, 0x39, 0x91, 0x63, 0xd4, 0x34, 0x24, 0xbe, 0xa9, 0x03, 0x47, 0x6e, 0x99, 0x99, 0x34, 0x75, 0x69, 0x3b, 0xbc, 0x25, 0x38, 0xed, 0x38, 0xda, 0x59, 0x8d, 0x3c, 0xd6, 0xd8, 0x0f, 0x9b, 0x06, 0x5c, 0xa3, 0x39, 0xdc, 0xea, 0x27, 0xf6, 0x97, 0x4f, 0xf3, 0x61, 0xdf, 0xef, 0x79, 0x21, 0xf3, 0x81, 0xd2, 0x78, 0xb3, 0x08, 0xef, 0xa8, 0x69, 0xfb, 0x99, 0x0b, 0x75, 0x4a, 0x59, 0xbf, 0x1a, 0xa8, 0x53, 0xd5, 0x88, 0x3a, 0x72, 0xf8, 0xb6, 0xef, 0xa6, 0xec, 0x9d, 0xfa, 0x86, 0x2d, 0x0a, 0x10, 0xde, 0xb5, 0x03, 0x1f, 0x56, 0x8e, 0x5e, 0xaa, 0x3f, 0x41, 0x4f, 0x4d, 0x1e, 0xd1, 0x3c, 0x15, 0xf6, 0x2d, 0xd6, 0x0f, 0xc2, 0x09, 0xd8, 0x50, 0x69, 0x53, 0x56, 0x5a, 0x93, 0x72, 0xa6, 0x91, 0x69, 0x89, 0x9f, 0x5c, 0xac, 0xca, 0xfa, 0xa5, 0xa7, 0x98, 0xc6, 0xeb, 0xe3, 0xb3, 0x76, 0xd7, 0x36, 0x1a, 0x90, 0x94, 0x97, 0xf4, 0x77, 0xc7, 0xf2, 0xcc, 0x55, 0xcd, 0x65, 0x38, 0x3b, 0x0b, 0x14, 0xc2, 0xb9, 0x43, 0xb3, 0x31, 0x7b, 0xe5, 0x78, 0xa4, 0xde, 0xd8, 0x55, 0x21, 0x00, 0x58, 0x64, 0xd6, 0x43, 0xe9, 0x20, 0xee, 0x82, 0xa8, 0x65, 0xd3, 0x29, 0x79, 0xe1, 0xe5, 0x9d, 0x6e, 0x9d, 0xc0, 0xfa, 0x0a, 0xa1, 0xac, 0xeb, 0x97, 0x69, 0x80, 0xc6, 0xa0, 0xb7, 0x7e, 0x88, 0x4e, 0x12, 0xf0, 0x0d, 0xf7, 0xe5, 0xf8, 0x60, 0x5f, 0x24, 0x50, 0xe9, 0x92, 0x1a, 0xbb, 0xd4, 0xa9, 0xde, 0xa6, 0x7a, 0x15, 0xea, 0xcc, 0x8a, 0xe3, 0x56, 0x3c, 0xa9, 0xf5, 0x31, 0x3d, 0x33, 0x2e, 0xf2, 0x31, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x63, 0x02, 0x01, 0x01, 0x30, 0x3c, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x02, 0x14, 0x52, 0x14, 0xdf, 0x84, 0x5c, 0x98, 0xf8, 0x1d, 0xca, 0xe4, 0x20, 0x45, 0x74, 0xb6, 0x11, 0xec, 0x30, 0xb8, 0xbf, 0xcd, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0xcf, 0x5c, 0xac, 0xfa, 0x51, 0x3f, 0xce, 0xaa, 0xdb, 0x8a, 0x7d, 0x10, 0xf3, 0x12, 0x02, 0x3c, 0xcb, 0xa5, 0x4a, 0x8c, 0x21, 0x05, 0xec, 0xf7, 0xcf, 0xc1, 0xbe, 0xc7, 0xde, 0x18, 0x92, 0x3d, 0x58, 0x08, 0x6a, 0x56, 0x41, 0x3c, 0x63, 0xf8, 0xac, 0xd1, 0x8c, 0x25, 0x86, 0x1d, 0xfb, 0xe1, 0x65, 0x16, 0xa4, 0xd6, 0xc2, 0x93, 0x96, 0x46, 0x2d, 0x7a, 0xc2, 0x26, 0xb6, 0xa7, 0x1f, 0x77, 0xad, 0x95, 0x08, 0x00, 0xad, 0xdc, 0xe1, 0x10, 0xdd, 0xb1, 0x64, 0xc2, 0x2b, 0xd0, 0x41, 0xfb, 0xf8, 0x9f, 0xda, 0x3c, 0x3e, 0x7a, 0x89, 0xa5, 0x0f, 0xe2, 0x11, 0x96, 0x38, 0x3f, 0x36, 0x51, 0x33, 0x3d, 0x97, 0x81, 0x81, 0x9e, 0xd4, 0xef, 0x47, 0x14, 0x0b, 0x65, 0x8e, 0xa4, 0x9a, 0x97, 0x8e, 0x90, 0xaa, 0xdf, 0x8c, 0x0f, 0xfd, 0x84, 0x49, 0x5c, 0xcd, 0xe6, 0x77, 0xc7, 0x97, 0x35, 0xbc, 0x5c, 0xf8, 0x42, 0x98, 0x5c, 0x03, 0x10, 0xeb, 0x0d, 0x6f, 0xe6, 0xc2, 0x0b, 0xa6, 0xcb, 0xce, 0x63, 0xef, 0x0e, 0x27, 0x3b, 0x7d, 0xa0, 0x52, 0xd8, 0x99, 0x1b, 0x3a, 0xc4, 0x1f, 0x77, 0xfe, 0x24, 0x93, 0x46, 0x78, 0x92, 0x51, 0x6e, 0xe6, 0xf3, 0x6d, 0x46, 0xc8, 0xe9, 0xa3, 0x8c, 0xe0, 0x4e, 0x4b, 0x37, 0x97, 0x9d, 0x87, 0xdb, 0x4e, 0x5e, 0x0e, 0xc4, 0x5a, 0xf1, 0xc6, 0xcf, 0x00, 0x81, 0xae, 0x5e, 0x07, 0xb6, 0xc4, 0x18, 0xf7, 0x89, 0x31, 0x27, 0x35, 0x62, 0x4a, 0x8c, 0x7e, 0x78, 0x67, 0x58, 0xae, 0x74, 0x58, 0x05, 0xd1, 0xe0, 0x8f, 0xc9, 0x77, 0x58, 0x76, 0xb6, 0x82, 0xf5, 0x50, 0xa3, 0x40, 0x34, 0x5a, 0x0c, 0x81, 0x7f, 0x66, 0xe8, 0x86, 0xad, 0xe2, 0x74, 0xec, 0x1b, 0x0d, 0x8a, 0xf7, 0x1f, 0xf4, 0x62, 0x49, 0xbf, 0x25, 0x4a, 0x37, 0x42, 0x0a, 0x98, 0x26, 0x16, 0xc4, 0xc1, 0x4c, 0x50, 0x92, 0x40, 0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf8, 0x61, 0x97, 0x2f, 0x52, 0xe6, 0xf3, 0x1c, 0x8b, 0x1b, 0x70, 0x9a, 0xbb, 0x36, 0xd8, 0xdb, 0x01, 0x78, 0xc6, 0x16, 0x32, 0x09, 0x96, 0xe1, 0x35, 0x57, 0x8a, 0x60, 0x58, 0x0b, 0xc4 }; unsigned int dbx_1_auth_len = 1333; libstb-secvar-main/test/data/dbx_256_a_esl.h000066400000000000000000000011531470177641100211250ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char dbx_256_a_esl[] = { 0x26, 0x16, 0xc4, 0xc1, 0x4c, 0x50, 0x92, 0x40, 0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xf8, 0x61, 0x97, 0x2f, 0x52, 0xe6, 0xf3, 0x1c, 0x8b, 0x1b, 0x70, 0x9a, 0xbb, 0x36, 0xd8, 0xdb, 0x01, 0x78, 0xc6, 0x16, 0x32, 0x09, 0x96, 0xe1, 0x35, 0x57, 0x8a, 0x60, 0x58, 0x0b, 0xc4 }; unsigned int dbx_256_a_esl_len = 76; libstb-secvar-main/test/data/dbx_256_b_esl.h000066400000000000000000000011531470177641100211260ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char dbx_256_b_esl[] = { 0x26, 0x16, 0xc4, 0xc1, 0x4c, 0x50, 0x92, 0x40, 0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xdf, 0x35, 0x2e, 0x65, 0xaa, 0x69, 0x10, 0x08, 0xe0, 0x3d, 0x79, 0x0c, 0x41, 0x61, 0x25, 0x03, 0xa0, 0xc4, 0x0e, 0x32, 0x72, 0xe3, 0xf5, 0x18, 0x55, 0x4c, 0x68, 0xe7, 0x98, 0x7e, 0xe7 }; unsigned int dbx_256_b_esl_len = 76; libstb-secvar-main/test/data/dbx_2_auth.h000066400000000000000000000205631470177641100206360ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char dbx_2_auth[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x04, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x04, 0xbd, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x03, 0x2d, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xcf, 0xf3, 0x6e, 0xc9, 0xaf, 0x12, 0x42, 0xdb, 0xa9, 0x59, 0x6d, 0xef, 0xf6, 0x0e, 0x54, 0xe8, 0x21, 0x57, 0xc4, 0x78, 0x3f, 0x6d, 0x83, 0x37, 0x1a, 0x29, 0x10, 0xd2, 0xb8, 0xb7, 0x24, 0x49, 0x5f, 0x5f, 0x32, 0xc9, 0x39, 0xdc, 0x40, 0xa4, 0x5d, 0xea, 0x7b, 0xb7, 0xb3, 0x42, 0xab, 0x43, 0x47, 0x3d, 0x91, 0x6e, 0xf1, 0x5d, 0x3f, 0xf9, 0x2d, 0x9e, 0x88, 0xc4, 0x05, 0x73, 0x9b, 0x0a, 0xa8, 0xf7, 0xb2, 0x8e, 0x24, 0x69, 0x13, 0xf0, 0xbc, 0x5d, 0xde, 0x32, 0x40, 0x42, 0x31, 0x58, 0x9e, 0x48, 0x76, 0x1f, 0x6b, 0x10, 0x19, 0x1c, 0x4e, 0x45, 0x82, 0x19, 0xc0, 0xed, 0xfc, 0x5c, 0x7c, 0x19, 0xfd, 0x85, 0x13, 0x2b, 0xf0, 0x38, 0x83, 0x7b, 0xe5, 0x1d, 0x86, 0x70, 0xed, 0x8f, 0x52, 0x16, 0x60, 0x14, 0xfb, 0xaf, 0x23, 0x19, 0xa5, 0x45, 0x44, 0x91, 0x54, 0xd0, 0xe8, 0x79, 0x34, 0xbe, 0x4f, 0xb3, 0x8c, 0x56, 0x8c, 0x7c, 0xbf, 0x6a, 0xa2, 0x44, 0x04, 0x51, 0xe5, 0x0f, 0x30, 0x04, 0xe9, 0x90, 0xb1, 0x8a, 0xe3, 0x9b, 0x95, 0xb1, 0xd6, 0xde, 0x9e, 0x98, 0x14, 0x07, 0x63, 0xbd, 0x88, 0x94, 0x54, 0xb6, 0x03, 0x8d, 0xf5, 0x8e, 0xca, 0x82, 0xc8, 0xb1, 0x78, 0xba, 0xb4, 0x21, 0x45, 0x6f, 0xd4, 0x0c, 0xda, 0xcb, 0x81, 0x1a, 0x9b, 0xb2, 0x0c, 0xa9, 0x7c, 0x48, 0x84, 0xc8, 0xbd, 0xce, 0x46, 0x1b, 0x8b, 0x38, 0xe2, 0x67, 0x50, 0x3c, 0x3e, 0x3e, 0x32, 0xec, 0x0b, 0x39, 0xc7, 0xe0, 0xd5, 0x00, 0xc5, 0x7a, 0xd3, 0x1c, 0xd1, 0xfb, 0x0a, 0xc7, 0x5b, 0x1d, 0x21, 0x3d, 0x50, 0x53, 0x87, 0xa1, 0xb4, 0x16, 0x5b, 0x1e, 0x80, 0x80, 0xaa, 0xe5, 0xf9, 0x69, 0x6c, 0x48, 0xab, 0x45, 0x66, 0x05, 0x04, 0xc7, 0xad, 0xc1, 0x24, 0x4a, 0xde, 0xad, 0x14, 0x55, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x99, 0xdd, 0xbb, 0x72, 0xf5, 0x8e, 0xdc, 0x7b, 0xe7, 0x9c, 0x6d, 0x47, 0x37, 0x01, 0xc9, 0xc2, 0xc9, 0x90, 0x01, 0x5d, 0x26, 0x80, 0xce, 0x2b, 0xd3, 0xdd, 0x26, 0x67, 0x2a, 0x77, 0x41, 0x06, 0x78, 0xed, 0xe7, 0xb0, 0x58, 0x93, 0x44, 0xe5, 0x79, 0xc0, 0xa6, 0x52, 0x1d, 0x2c, 0x10, 0x16, 0xaa, 0xee, 0x97, 0x05, 0x80, 0x6d, 0xba, 0x45, 0xd8, 0xd3, 0xf5, 0x98, 0x8d, 0xd1, 0x66, 0x9a, 0x1c, 0x96, 0xf5, 0x2e, 0xb4, 0x4d, 0xa3, 0x79, 0x5f, 0x81, 0xb9, 0x5c, 0xcd, 0x45, 0x80, 0xa4, 0x15, 0xb3, 0x3e, 0x05, 0xf9, 0x12, 0x62, 0x41, 0x7b, 0x97, 0x08, 0x90, 0x13, 0xd3, 0x1a, 0xe7, 0xe5, 0x68, 0x1d, 0x24, 0xdb, 0x7c, 0x78, 0xd7, 0x3a, 0x4a, 0x5d, 0x7c, 0xb7, 0xf8, 0x5d, 0xa4, 0xe2, 0x40, 0x86, 0x26, 0xc0, 0x45, 0x00, 0x80, 0x16, 0x88, 0x97, 0x3e, 0x8c, 0x5c, 0x38, 0x6b, 0xa6, 0x3f, 0x7d, 0x80, 0xb4, 0xec, 0x1f, 0x89, 0x0a, 0xd3, 0x64, 0x3a, 0x85, 0xab, 0xd7, 0x0b, 0x17, 0x68, 0xc1, 0x41, 0xfc, 0xe6, 0xa0, 0x2d, 0xc8, 0x0e, 0xfd, 0xf0, 0x28, 0xf3, 0xe0, 0xb7, 0x98, 0xf3, 0xc9, 0x93, 0x97, 0xeb, 0x7f, 0x81, 0x13, 0x86, 0x95, 0x17, 0x45, 0x0d, 0x3e, 0x0d, 0x35, 0x5d, 0x2d, 0xa4, 0xa4, 0x04, 0xaa, 0x22, 0x7b, 0x40, 0x47, 0xc7, 0x31, 0x88, 0x99, 0x03, 0xaf, 0xf7, 0xe6, 0x14, 0x1b, 0xcf, 0xf7, 0x3b, 0x5d, 0xc6, 0x48, 0x24, 0x42, 0xcf, 0xfe, 0x10, 0x10, 0xc0, 0x2b, 0x23, 0x28, 0xb8, 0x4a, 0x3a, 0xff, 0x21, 0xd4, 0xa3, 0x15, 0x51, 0xbc, 0xd4, 0xd2, 0x09, 0x77, 0x77, 0x3e, 0x65, 0xb4, 0x3d, 0x1e, 0xd6, 0xc0, 0xe9, 0x3b, 0x0e, 0xee, 0xa8, 0x68, 0x46, 0x25, 0x47, 0x57, 0x08, 0x2e, 0x80, 0x99, 0x9b, 0x49, 0xfb, 0xd9, 0xc5, 0x46, 0xd7, 0x31, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x63, 0x02, 0x01, 0x01, 0x30, 0x3c, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x4c, 0x76, 0x8c, 0xac, 0x31, 0x1f, 0xc0, 0x89, 0x83, 0xfe, 0x68, 0xec, 0x12, 0x5a, 0x17, 0x06, 0x0a, 0xce, 0x1c, 0xd1, 0xce, 0x1e, 0x80, 0x7b, 0xf5, 0xe6, 0xbb, 0xe3, 0x8f, 0x54, 0x97, 0x0f, 0x28, 0xf9, 0x21, 0x1f, 0x0a, 0xb9, 0xc2, 0x54, 0x17, 0x45, 0xcb, 0x4a, 0x3c, 0x7e, 0xa2, 0x48, 0xbf, 0xe4, 0x0e, 0xcb, 0xd4, 0xa0, 0x04, 0xc6, 0x91, 0x1c, 0x06, 0xf2, 0xc5, 0x87, 0xec, 0x2d, 0xd1, 0x56, 0x97, 0x3a, 0x49, 0x71, 0xc8, 0xc4, 0x92, 0x7f, 0x14, 0x83, 0x9a, 0x39, 0xeb, 0xec, 0x3a, 0xbd, 0x86, 0x3e, 0xc3, 0xc8, 0x62, 0x0a, 0x25, 0x29, 0x2b, 0x17, 0xdc, 0x59, 0xac, 0xd7, 0xe3, 0x16, 0x00, 0xc4, 0xcc, 0xb7, 0x57, 0xf3, 0x3e, 0xa8, 0x25, 0x13, 0x47, 0xb0, 0xaf, 0x09, 0x34, 0xb7, 0xd9, 0x2c, 0xeb, 0x92, 0x45, 0x54, 0xea, 0x53, 0x38, 0x8b, 0x57, 0xe3, 0x5a, 0x50, 0xab, 0x0c, 0x64, 0xb7, 0x4c, 0x61, 0xe3, 0xde, 0x3d, 0x17, 0x76, 0xf7, 0x46, 0xf2, 0xce, 0xed, 0x03, 0x20, 0x00, 0x86, 0xb0, 0x4e, 0x84, 0xf5, 0x29, 0x18, 0xd4, 0xef, 0x57, 0xa2, 0xba, 0x5a, 0x21, 0x17, 0x17, 0x73, 0xff, 0x15, 0x8b, 0xae, 0x3f, 0xb8, 0xa3, 0xdf, 0x83, 0x08, 0x22, 0x61, 0x47, 0xee, 0x75, 0x72, 0xd6, 0x9d, 0xac, 0x7a, 0x17, 0xaa, 0xf1, 0x3c, 0x49, 0x5f, 0xf6, 0x11, 0x23, 0xe9, 0x52, 0x25, 0x40, 0x0e, 0x3c, 0x46, 0x24, 0xf6, 0xce, 0x52, 0x2d, 0x82, 0x19, 0x37, 0x5e, 0x7e, 0xe2, 0x49, 0x4b, 0xd1, 0xdc, 0xdc, 0x87, 0x00, 0x2b, 0xca, 0xe6, 0x71, 0xc1, 0x91, 0xbf, 0xc8, 0x68, 0xf5, 0x2d, 0x50, 0x63, 0x5b, 0xfb, 0x6a, 0x33, 0x4a, 0x4f, 0xd0, 0xd3, 0x0b, 0xc8, 0x22, 0x84, 0xbe, 0x65, 0xfd, 0x1c, 0xc5, 0x42, 0x33, 0xbb, 0x28, 0x2a, 0xe0, 0xe1, 0xb7, 0xae, 0x0f, 0x3e, 0x09, 0xc4, 0xa6, 0x50, 0x4f, 0x9f, 0x1b, 0xd4, 0x1e, 0x2b, 0x89, 0xc1, 0x9a, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x0f, 0x0a, 0xeb, 0x33, 0xc2, 0xad, 0xde, 0x6e, 0x45, 0x7b, 0x48, 0x6b, 0xe6, 0x31, 0xb9, 0x5c, 0x2d, 0x3f, 0xb4, 0x4d, 0x02, 0xba, 0x6e, 0xf5, 0x2d, 0x45, 0x54, 0x34, 0x1b, 0xaf, 0x6f, 0x9e, 0xaf, 0xb4, 0x06, 0x36, 0xc3, 0xf4, 0x10, 0x56, 0x45, 0xf5, 0x06, 0xac, 0x32, 0x3e, 0xaf, 0x97, 0x1c, 0x45, 0x72, 0x9c, 0xdc, 0x54, 0x30, 0x78, 0xcb, 0xce, 0x62, 0xf1, 0xe7, 0xc3, 0x8c }; unsigned int dbx_2_auth_len = 1365; libstb-secvar-main/test/data/dbx_512_a_esl.h000066400000000000000000000014601470177641100211210ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char dbx_512_a_esl[] = { 0xae, 0x0f, 0x3e, 0x09, 0xc4, 0xa6, 0x50, 0x4f, 0x9f, 0x1b, 0xd4, 0x1e, 0x2b, 0x89, 0xc1, 0x9a, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x11, 0x5b, 0xa3, 0x67, 0x6a, 0x65, 0x2a, 0xe7, 0xee, 0xc8, 0x00, 0x7f, 0x9a, 0xcf, 0xa2, 0x80, 0xd1, 0x42, 0xbf, 0x3f, 0x44, 0xfd, 0x1d, 0x0b, 0x53, 0x00, 0xb8, 0x4f, 0x68, 0x7d, 0xaf, 0x29, 0x87, 0xe7, 0x41, 0x2f, 0x07, 0xa3, 0xa9, 0x1d, 0xed, 0x38, 0x39, 0x74, 0x2e, 0xae, 0xe0, 0x79, 0x5e, 0x37, 0x9f, 0xb3, 0x25, 0x12, 0x58, 0xb0, 0x63, 0x09, 0x50, 0xf6, 0xe1, 0x6b, 0xd5 }; unsigned int dbx_512_a_esl_len = 108; libstb-secvar-main/test/data/dbx_512_b_esl.h000066400000000000000000000014601470177641100211220ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char dbx_512_b_esl[] = { 0xae, 0x0f, 0x3e, 0x09, 0xc4, 0xa6, 0x50, 0x4f, 0x9f, 0x1b, 0xd4, 0x1e, 0x2b, 0x89, 0xc1, 0x9a, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x0f, 0x0a, 0xeb, 0x33, 0xc2, 0xad, 0xde, 0x6e, 0x45, 0x7b, 0x48, 0x6b, 0xe6, 0x31, 0xb9, 0x5c, 0x2d, 0x3f, 0xb4, 0x4d, 0x02, 0xba, 0x6e, 0xf5, 0x2d, 0x45, 0x54, 0x34, 0x1b, 0xaf, 0x6f, 0x9e, 0xaf, 0xb4, 0x06, 0x36, 0xc3, 0xf4, 0x10, 0x56, 0x45, 0xf5, 0x06, 0xac, 0x32, 0x3e, 0xaf, 0x97, 0x1c, 0x45, 0x72, 0x9c, 0xdc, 0x54, 0x30, 0x78, 0xcb, 0xce, 0x62, 0xf1, 0xe7, 0xc3, 0x8c }; unsigned int dbx_512_b_esl_len = 108; libstb-secvar-main/test/data/delete_db_by_kek_sesl_auth.h000066400000000000000000000173711470177641100241240ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char delete_db_by_kek_sesl_auth[] = { 0xe6, 0x07, 0x04, 0x0e, 0x0a, 0x01, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x04, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x04, 0xbd, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x03, 0x2d, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x52, 0x14, 0xdf, 0x84, 0x5c, 0x98, 0xf8, 0x1d, 0xca, 0xe4, 0x20, 0x45, 0x74, 0xb6, 0x11, 0xec, 0x30, 0xb8, 0xbf, 0xcd, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf2, 0x78, 0x86, 0xc0, 0xe9, 0x0b, 0x63, 0xd2, 0xc2, 0xb8, 0xb3, 0xb2, 0xcb, 0xc7, 0x52, 0x73, 0xf5, 0xfa, 0x2e, 0x1f, 0xf6, 0x8f, 0x53, 0xf7, 0x11, 0x98, 0xe4, 0x18, 0x3b, 0x1c, 0x8a, 0x60, 0x05, 0x3f, 0xba, 0x14, 0xf1, 0xd4, 0x40, 0x66, 0xcc, 0x46, 0x38, 0xc1, 0x1d, 0x62, 0x60, 0xee, 0x9a, 0x27, 0x03, 0x0c, 0x10, 0x7b, 0xb5, 0x9a, 0x2c, 0x90, 0xd4, 0x16, 0x4a, 0xb7, 0x28, 0x29, 0x75, 0xd9, 0xc6, 0x76, 0xe4, 0xbc, 0x56, 0xd4, 0x0d, 0xa7, 0x89, 0x82, 0xc6, 0xbd, 0xab, 0xe3, 0x1c, 0xe0, 0x2d, 0x83, 0x65, 0xc6, 0xba, 0xf8, 0x8c, 0xbe, 0x39, 0xf6, 0x58, 0x4f, 0xcd, 0xc0, 0x04, 0xa4, 0xe5, 0xbe, 0xb9, 0xcf, 0xe5, 0x6b, 0x5b, 0xfa, 0xa8, 0x3e, 0x85, 0x3d, 0x8b, 0xd5, 0x79, 0x05, 0x96, 0x9c, 0x02, 0xea, 0x75, 0x7f, 0xcb, 0x92, 0x04, 0x91, 0x47, 0xe4, 0xc9, 0x94, 0x05, 0xef, 0xe2, 0x44, 0xbc, 0xc7, 0x1a, 0x00, 0x93, 0x40, 0x49, 0x77, 0x55, 0xc1, 0xa1, 0xb0, 0xb2, 0xcf, 0x50, 0x87, 0x80, 0x17, 0x11, 0xf6, 0x84, 0xf5, 0xea, 0x6c, 0xc3, 0xfa, 0xe4, 0xeb, 0x20, 0x24, 0x20, 0x81, 0xf3, 0x1a, 0x98, 0x71, 0x69, 0x33, 0x3a, 0x8e, 0x34, 0x6a, 0x40, 0x13, 0x83, 0x87, 0x8d, 0xa1, 0xf6, 0x8b, 0x20, 0x39, 0x76, 0x41, 0x0f, 0x3b, 0x3a, 0xec, 0x73, 0xe0, 0xca, 0x29, 0x83, 0xa0, 0xd7, 0x17, 0x4d, 0xf8, 0xe9, 0x93, 0x24, 0xb3, 0xf3, 0xf0, 0x01, 0xe4, 0x25, 0x20, 0x78, 0x55, 0x60, 0x1d, 0xed, 0x54, 0x54, 0x7b, 0x91, 0x5d, 0x7d, 0x6c, 0x62, 0x0a, 0xb7, 0xb4, 0xea, 0x15, 0xc7, 0xbd, 0xb5, 0xda, 0xfb, 0x23, 0x0a, 0x45, 0xbc, 0xb2, 0x63, 0xda, 0xb4, 0x09, 0xbe, 0x0b, 0x5d, 0x1c, 0x80, 0xfb, 0x7e, 0x6a, 0x72, 0x11, 0x22, 0x9f, 0xb5, 0xc9, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x89, 0x01, 0xe1, 0x2a, 0x0f, 0x43, 0x6b, 0xb0, 0xc5, 0x87, 0x21, 0xba, 0xed, 0xdf, 0x49, 0x4c, 0x6e, 0x66, 0xda, 0x23, 0x34, 0x1d, 0xc7, 0x5f, 0x68, 0xdb, 0x9b, 0x74, 0xd5, 0xd9, 0x68, 0x39, 0x91, 0x63, 0xd4, 0x34, 0x24, 0xbe, 0xa9, 0x03, 0x47, 0x6e, 0x99, 0x99, 0x34, 0x75, 0x69, 0x3b, 0xbc, 0x25, 0x38, 0xed, 0x38, 0xda, 0x59, 0x8d, 0x3c, 0xd6, 0xd8, 0x0f, 0x9b, 0x06, 0x5c, 0xa3, 0x39, 0xdc, 0xea, 0x27, 0xf6, 0x97, 0x4f, 0xf3, 0x61, 0xdf, 0xef, 0x79, 0x21, 0xf3, 0x81, 0xd2, 0x78, 0xb3, 0x08, 0xef, 0xa8, 0x69, 0xfb, 0x99, 0x0b, 0x75, 0x4a, 0x59, 0xbf, 0x1a, 0xa8, 0x53, 0xd5, 0x88, 0x3a, 0x72, 0xf8, 0xb6, 0xef, 0xa6, 0xec, 0x9d, 0xfa, 0x86, 0x2d, 0x0a, 0x10, 0xde, 0xb5, 0x03, 0x1f, 0x56, 0x8e, 0x5e, 0xaa, 0x3f, 0x41, 0x4f, 0x4d, 0x1e, 0xd1, 0x3c, 0x15, 0xf6, 0x2d, 0xd6, 0x0f, 0xc2, 0x09, 0xd8, 0x50, 0x69, 0x53, 0x56, 0x5a, 0x93, 0x72, 0xa6, 0x91, 0x69, 0x89, 0x9f, 0x5c, 0xac, 0xca, 0xfa, 0xa5, 0xa7, 0x98, 0xc6, 0xeb, 0xe3, 0xb3, 0x76, 0xd7, 0x36, 0x1a, 0x90, 0x94, 0x97, 0xf4, 0x77, 0xc7, 0xf2, 0xcc, 0x55, 0xcd, 0x65, 0x38, 0x3b, 0x0b, 0x14, 0xc2, 0xb9, 0x43, 0xb3, 0x31, 0x7b, 0xe5, 0x78, 0xa4, 0xde, 0xd8, 0x55, 0x21, 0x00, 0x58, 0x64, 0xd6, 0x43, 0xe9, 0x20, 0xee, 0x82, 0xa8, 0x65, 0xd3, 0x29, 0x79, 0xe1, 0xe5, 0x9d, 0x6e, 0x9d, 0xc0, 0xfa, 0x0a, 0xa1, 0xac, 0xeb, 0x97, 0x69, 0x80, 0xc6, 0xa0, 0xb7, 0x7e, 0x88, 0x4e, 0x12, 0xf0, 0x0d, 0xf7, 0xe5, 0xf8, 0x60, 0x5f, 0x24, 0x50, 0xe9, 0x92, 0x1a, 0xbb, 0xd4, 0xa9, 0xde, 0xa6, 0x7a, 0x15, 0xea, 0xcc, 0x8a, 0xe3, 0x56, 0x3c, 0xa9, 0xf5, 0x31, 0x3d, 0x33, 0x2e, 0xf2, 0x31, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x63, 0x02, 0x01, 0x01, 0x30, 0x3c, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x02, 0x14, 0x52, 0x14, 0xdf, 0x84, 0x5c, 0x98, 0xf8, 0x1d, 0xca, 0xe4, 0x20, 0x45, 0x74, 0xb6, 0x11, 0xec, 0x30, 0xb8, 0xbf, 0xcd, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0xd6, 0x32, 0x6f, 0xbc, 0xbf, 0x82, 0x22, 0x46, 0x3c, 0xa9, 0x03, 0xf2, 0x08, 0xac, 0x3b, 0xfa, 0x70, 0x49, 0xfa, 0x40, 0x95, 0x90, 0x2a, 0x3d, 0xdb, 0xaf, 0x58, 0x02, 0x68, 0x6e, 0x1f, 0x42, 0x5e, 0xd9, 0xa3, 0x5d, 0x2e, 0x74, 0x1f, 0x0e, 0xa9, 0x9b, 0x31, 0x7f, 0x53, 0x3d, 0x9d, 0x89, 0x47, 0xd5, 0x52, 0x92, 0xf3, 0x73, 0xba, 0x29, 0x1d, 0x20, 0x38, 0x5e, 0xdb, 0x17, 0x10, 0x7d, 0xfc, 0x04, 0xdc, 0x93, 0xdb, 0x56, 0x28, 0x29, 0x3f, 0x75, 0xe7, 0x47, 0xeb, 0x07, 0x57, 0xad, 0x36, 0x6f, 0xe9, 0xf8, 0x08, 0x47, 0x67, 0xbf, 0xa8, 0x91, 0x81, 0x2a, 0xa6, 0xe1, 0xa6, 0xf1, 0x0e, 0xcf, 0x0b, 0x51, 0x38, 0x42, 0xcd, 0x8f, 0xad, 0xc7, 0xe8, 0x8f, 0x3b, 0x87, 0x15, 0x2d, 0x31, 0xad, 0xc1, 0xcb, 0x7c, 0x49, 0x5a, 0xf3, 0x5f, 0xa6, 0x3e, 0x31, 0x4e, 0xb4, 0x6d, 0x18, 0x29, 0x59, 0x5b, 0x45, 0xec, 0x51, 0xf5, 0x6c, 0x49, 0x32, 0x2f, 0xe4, 0xd0, 0xb1, 0x61, 0x49, 0xe6, 0x1a, 0xfb, 0xc6, 0xa5, 0x96, 0xe9, 0x73, 0x3a, 0x4b, 0xd2, 0xc8, 0x64, 0x72, 0x4b, 0x6a, 0x95, 0x92, 0x0e, 0x7c, 0xea, 0xcf, 0x37, 0x95, 0x8c, 0x7f, 0x4a, 0xf9, 0x4a, 0x9b, 0xd1, 0x98, 0x10, 0xf6, 0xc5, 0x10, 0x3d, 0xea, 0x4a, 0x6a, 0xf7, 0x49, 0xcc, 0xbc, 0x88, 0xf0, 0x0b, 0x89, 0xe4, 0x26, 0x84, 0xd1, 0xfa, 0x23, 0x40, 0xf0, 0x7f, 0x40, 0xbd, 0x98, 0x91, 0x41, 0x19, 0xc6, 0x6a, 0x79, 0xe0, 0xa2, 0x5d, 0x1d, 0xab, 0x40, 0x85, 0x1b, 0x4e, 0xac, 0x3f, 0xbe, 0xa6, 0x19, 0x9b, 0xc1, 0xac, 0x5b, 0x14, 0x53, 0x0b, 0xb3, 0x5b, 0xe7, 0x91, 0xca, 0x4a, 0x5d, 0x5e, 0x2a, 0x8e, 0xe7, 0x03, 0xb0, 0x5e, 0x33, 0x7f, 0x9d, 0x14, 0xd0, 0x0d, 0xaf, 0xde, 0xe0, 0x8d, 0x7a }; unsigned int delete_db_by_kek_sesl_auth_len = 1257; libstb-secvar-main/test/data/delete_pk_sbvs_auth.h000066400000000000000000000175411470177641100226330ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char delete_pk_sbvs_auth[] = { 0x7a, 0x00, 0x01, 0x15, 0x00, 0x2c, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x04, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x04, 0xd0, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x04, 0xc1, 0x30, 0x82, 0x04, 0xbd, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x03, 0x2d, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xcf, 0xf3, 0x6e, 0xc9, 0xaf, 0x12, 0x42, 0xdb, 0xa9, 0x59, 0x6d, 0xef, 0xf6, 0x0e, 0x54, 0xe8, 0x21, 0x57, 0xc4, 0x78, 0x3f, 0x6d, 0x83, 0x37, 0x1a, 0x29, 0x10, 0xd2, 0xb8, 0xb7, 0x24, 0x49, 0x5f, 0x5f, 0x32, 0xc9, 0x39, 0xdc, 0x40, 0xa4, 0x5d, 0xea, 0x7b, 0xb7, 0xb3, 0x42, 0xab, 0x43, 0x47, 0x3d, 0x91, 0x6e, 0xf1, 0x5d, 0x3f, 0xf9, 0x2d, 0x9e, 0x88, 0xc4, 0x05, 0x73, 0x9b, 0x0a, 0xa8, 0xf7, 0xb2, 0x8e, 0x24, 0x69, 0x13, 0xf0, 0xbc, 0x5d, 0xde, 0x32, 0x40, 0x42, 0x31, 0x58, 0x9e, 0x48, 0x76, 0x1f, 0x6b, 0x10, 0x19, 0x1c, 0x4e, 0x45, 0x82, 0x19, 0xc0, 0xed, 0xfc, 0x5c, 0x7c, 0x19, 0xfd, 0x85, 0x13, 0x2b, 0xf0, 0x38, 0x83, 0x7b, 0xe5, 0x1d, 0x86, 0x70, 0xed, 0x8f, 0x52, 0x16, 0x60, 0x14, 0xfb, 0xaf, 0x23, 0x19, 0xa5, 0x45, 0x44, 0x91, 0x54, 0xd0, 0xe8, 0x79, 0x34, 0xbe, 0x4f, 0xb3, 0x8c, 0x56, 0x8c, 0x7c, 0xbf, 0x6a, 0xa2, 0x44, 0x04, 0x51, 0xe5, 0x0f, 0x30, 0x04, 0xe9, 0x90, 0xb1, 0x8a, 0xe3, 0x9b, 0x95, 0xb1, 0xd6, 0xde, 0x9e, 0x98, 0x14, 0x07, 0x63, 0xbd, 0x88, 0x94, 0x54, 0xb6, 0x03, 0x8d, 0xf5, 0x8e, 0xca, 0x82, 0xc8, 0xb1, 0x78, 0xba, 0xb4, 0x21, 0x45, 0x6f, 0xd4, 0x0c, 0xda, 0xcb, 0x81, 0x1a, 0x9b, 0xb2, 0x0c, 0xa9, 0x7c, 0x48, 0x84, 0xc8, 0xbd, 0xce, 0x46, 0x1b, 0x8b, 0x38, 0xe2, 0x67, 0x50, 0x3c, 0x3e, 0x3e, 0x32, 0xec, 0x0b, 0x39, 0xc7, 0xe0, 0xd5, 0x00, 0xc5, 0x7a, 0xd3, 0x1c, 0xd1, 0xfb, 0x0a, 0xc7, 0x5b, 0x1d, 0x21, 0x3d, 0x50, 0x53, 0x87, 0xa1, 0xb4, 0x16, 0x5b, 0x1e, 0x80, 0x80, 0xaa, 0xe5, 0xf9, 0x69, 0x6c, 0x48, 0xab, 0x45, 0x66, 0x05, 0x04, 0xc7, 0xad, 0xc1, 0x24, 0x4a, 0xde, 0xad, 0x14, 0x55, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x99, 0xdd, 0xbb, 0x72, 0xf5, 0x8e, 0xdc, 0x7b, 0xe7, 0x9c, 0x6d, 0x47, 0x37, 0x01, 0xc9, 0xc2, 0xc9, 0x90, 0x01, 0x5d, 0x26, 0x80, 0xce, 0x2b, 0xd3, 0xdd, 0x26, 0x67, 0x2a, 0x77, 0x41, 0x06, 0x78, 0xed, 0xe7, 0xb0, 0x58, 0x93, 0x44, 0xe5, 0x79, 0xc0, 0xa6, 0x52, 0x1d, 0x2c, 0x10, 0x16, 0xaa, 0xee, 0x97, 0x05, 0x80, 0x6d, 0xba, 0x45, 0xd8, 0xd3, 0xf5, 0x98, 0x8d, 0xd1, 0x66, 0x9a, 0x1c, 0x96, 0xf5, 0x2e, 0xb4, 0x4d, 0xa3, 0x79, 0x5f, 0x81, 0xb9, 0x5c, 0xcd, 0x45, 0x80, 0xa4, 0x15, 0xb3, 0x3e, 0x05, 0xf9, 0x12, 0x62, 0x41, 0x7b, 0x97, 0x08, 0x90, 0x13, 0xd3, 0x1a, 0xe7, 0xe5, 0x68, 0x1d, 0x24, 0xdb, 0x7c, 0x78, 0xd7, 0x3a, 0x4a, 0x5d, 0x7c, 0xb7, 0xf8, 0x5d, 0xa4, 0xe2, 0x40, 0x86, 0x26, 0xc0, 0x45, 0x00, 0x80, 0x16, 0x88, 0x97, 0x3e, 0x8c, 0x5c, 0x38, 0x6b, 0xa6, 0x3f, 0x7d, 0x80, 0xb4, 0xec, 0x1f, 0x89, 0x0a, 0xd3, 0x64, 0x3a, 0x85, 0xab, 0xd7, 0x0b, 0x17, 0x68, 0xc1, 0x41, 0xfc, 0xe6, 0xa0, 0x2d, 0xc8, 0x0e, 0xfd, 0xf0, 0x28, 0xf3, 0xe0, 0xb7, 0x98, 0xf3, 0xc9, 0x93, 0x97, 0xeb, 0x7f, 0x81, 0x13, 0x86, 0x95, 0x17, 0x45, 0x0d, 0x3e, 0x0d, 0x35, 0x5d, 0x2d, 0xa4, 0xa4, 0x04, 0xaa, 0x22, 0x7b, 0x40, 0x47, 0xc7, 0x31, 0x88, 0x99, 0x03, 0xaf, 0xf7, 0xe6, 0x14, 0x1b, 0xcf, 0xf7, 0x3b, 0x5d, 0xc6, 0x48, 0x24, 0x42, 0xcf, 0xfe, 0x10, 0x10, 0xc0, 0x2b, 0x23, 0x28, 0xb8, 0x4a, 0x3a, 0xff, 0x21, 0xd4, 0xa3, 0x15, 0x51, 0xbc, 0xd4, 0xd2, 0x09, 0x77, 0x77, 0x3e, 0x65, 0xb4, 0x3d, 0x1e, 0xd6, 0xc0, 0xe9, 0x3b, 0x0e, 0xee, 0xa8, 0x68, 0x46, 0x25, 0x47, 0x57, 0x08, 0x2e, 0x80, 0x99, 0x9b, 0x49, 0xfb, 0xd9, 0xc5, 0x46, 0xd7, 0x31, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x63, 0x02, 0x01, 0x01, 0x30, 0x3c, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x7c, 0x58, 0x50, 0xd2, 0x9c, 0xea, 0x3d, 0x31, 0x03, 0xf9, 0x9c, 0xe2, 0x6f, 0x4b, 0x1c, 0x78, 0x70, 0xa5, 0x02, 0x9d, 0x0b, 0x06, 0xf7, 0x74, 0x49, 0x49, 0x8c, 0x08, 0x37, 0x8e, 0x50, 0x99, 0x61, 0xce, 0x8c, 0xd8, 0x2c, 0x41, 0xc5, 0x74, 0xef, 0x1f, 0x9a, 0x33, 0xf2, 0xa6, 0x7e, 0xca, 0x57, 0xb1, 0x15, 0xfb, 0xb4, 0x43, 0xdf, 0x39, 0xbc, 0x9a, 0x9b, 0xd8, 0xaa, 0xfd, 0x0a, 0xce, 0x15, 0x62, 0xf2, 0xaa, 0x02, 0x8f, 0xe9, 0xf5, 0x80, 0x38, 0xdd, 0x9f, 0x45, 0x9d, 0x72, 0xc3, 0x3d, 0xba, 0xc6, 0x71, 0x8d, 0xce, 0x83, 0x41, 0xb5, 0x65, 0xbe, 0x63, 0x69, 0x74, 0x16, 0xa2, 0xa3, 0xbc, 0xd4, 0xe5, 0x53, 0x08, 0xa8, 0x32, 0x39, 0xbb, 0x0b, 0x2c, 0xb4, 0x7b, 0xc5, 0x90, 0x2c, 0x60, 0x6c, 0xd9, 0xea, 0xce, 0xe3, 0xed, 0xca, 0x3f, 0x23, 0x07, 0xce, 0x51, 0x67, 0x90, 0x82, 0xf2, 0x29, 0x79, 0xcb, 0xf5, 0x14, 0x4d, 0x1e, 0x91, 0x79, 0x22, 0xd1, 0x32, 0x82, 0xfd, 0xce, 0xc0, 0x25, 0x21, 0x2a, 0x07, 0x0b, 0x00, 0xea, 0xfa, 0x8f, 0xeb, 0x38, 0x93, 0xe3, 0xae, 0x51, 0x29, 0x8b, 0xa7, 0x0e, 0xd3, 0x2e, 0xcd, 0x62, 0xf4, 0x55, 0x42, 0x2f, 0x75, 0x90, 0xd3, 0x56, 0x28, 0x76, 0x1f, 0x1f, 0x2f, 0x26, 0x58, 0x61, 0xd1, 0xb7, 0x87, 0x9d, 0xd9, 0x37, 0x65, 0x5f, 0x18, 0x29, 0x30, 0x34, 0xce, 0xbd, 0xf0, 0x9a, 0x54, 0x37, 0x57, 0x55, 0x0a, 0xef, 0x09, 0x4b, 0x14, 0xc9, 0x93, 0xea, 0x89, 0xed, 0x96, 0x75, 0x29, 0xd0, 0x27, 0x65, 0x91, 0x74, 0xaa, 0x58, 0x41, 0x13, 0x35, 0xe0, 0x21, 0x0c, 0x2a, 0x27, 0x54, 0x65, 0xd3, 0x2f, 0x17, 0x7c, 0xac, 0x08, 0x35, 0x2b, 0xf3, 0x43, 0x53, 0xd5, 0x75, 0xc4, 0xf4, 0xee, 0xa3, 0xf4, 0x35, 0xf8, 0xf6 }; unsigned int delete_pk_sbvs_auth_len = 1276; libstb-secvar-main/test/data/delete_pk_sesl_auth.h000066400000000000000000000173531470177641100226250ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char delete_pk_sesl_auth[] = { 0xe6, 0x07, 0x02, 0x15, 0x0b, 0x2c, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x04, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x04, 0xbd, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x03, 0x2d, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xcf, 0xf3, 0x6e, 0xc9, 0xaf, 0x12, 0x42, 0xdb, 0xa9, 0x59, 0x6d, 0xef, 0xf6, 0x0e, 0x54, 0xe8, 0x21, 0x57, 0xc4, 0x78, 0x3f, 0x6d, 0x83, 0x37, 0x1a, 0x29, 0x10, 0xd2, 0xb8, 0xb7, 0x24, 0x49, 0x5f, 0x5f, 0x32, 0xc9, 0x39, 0xdc, 0x40, 0xa4, 0x5d, 0xea, 0x7b, 0xb7, 0xb3, 0x42, 0xab, 0x43, 0x47, 0x3d, 0x91, 0x6e, 0xf1, 0x5d, 0x3f, 0xf9, 0x2d, 0x9e, 0x88, 0xc4, 0x05, 0x73, 0x9b, 0x0a, 0xa8, 0xf7, 0xb2, 0x8e, 0x24, 0x69, 0x13, 0xf0, 0xbc, 0x5d, 0xde, 0x32, 0x40, 0x42, 0x31, 0x58, 0x9e, 0x48, 0x76, 0x1f, 0x6b, 0x10, 0x19, 0x1c, 0x4e, 0x45, 0x82, 0x19, 0xc0, 0xed, 0xfc, 0x5c, 0x7c, 0x19, 0xfd, 0x85, 0x13, 0x2b, 0xf0, 0x38, 0x83, 0x7b, 0xe5, 0x1d, 0x86, 0x70, 0xed, 0x8f, 0x52, 0x16, 0x60, 0x14, 0xfb, 0xaf, 0x23, 0x19, 0xa5, 0x45, 0x44, 0x91, 0x54, 0xd0, 0xe8, 0x79, 0x34, 0xbe, 0x4f, 0xb3, 0x8c, 0x56, 0x8c, 0x7c, 0xbf, 0x6a, 0xa2, 0x44, 0x04, 0x51, 0xe5, 0x0f, 0x30, 0x04, 0xe9, 0x90, 0xb1, 0x8a, 0xe3, 0x9b, 0x95, 0xb1, 0xd6, 0xde, 0x9e, 0x98, 0x14, 0x07, 0x63, 0xbd, 0x88, 0x94, 0x54, 0xb6, 0x03, 0x8d, 0xf5, 0x8e, 0xca, 0x82, 0xc8, 0xb1, 0x78, 0xba, 0xb4, 0x21, 0x45, 0x6f, 0xd4, 0x0c, 0xda, 0xcb, 0x81, 0x1a, 0x9b, 0xb2, 0x0c, 0xa9, 0x7c, 0x48, 0x84, 0xc8, 0xbd, 0xce, 0x46, 0x1b, 0x8b, 0x38, 0xe2, 0x67, 0x50, 0x3c, 0x3e, 0x3e, 0x32, 0xec, 0x0b, 0x39, 0xc7, 0xe0, 0xd5, 0x00, 0xc5, 0x7a, 0xd3, 0x1c, 0xd1, 0xfb, 0x0a, 0xc7, 0x5b, 0x1d, 0x21, 0x3d, 0x50, 0x53, 0x87, 0xa1, 0xb4, 0x16, 0x5b, 0x1e, 0x80, 0x80, 0xaa, 0xe5, 0xf9, 0x69, 0x6c, 0x48, 0xab, 0x45, 0x66, 0x05, 0x04, 0xc7, 0xad, 0xc1, 0x24, 0x4a, 0xde, 0xad, 0x14, 0x55, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x99, 0xdd, 0xbb, 0x72, 0xf5, 0x8e, 0xdc, 0x7b, 0xe7, 0x9c, 0x6d, 0x47, 0x37, 0x01, 0xc9, 0xc2, 0xc9, 0x90, 0x01, 0x5d, 0x26, 0x80, 0xce, 0x2b, 0xd3, 0xdd, 0x26, 0x67, 0x2a, 0x77, 0x41, 0x06, 0x78, 0xed, 0xe7, 0xb0, 0x58, 0x93, 0x44, 0xe5, 0x79, 0xc0, 0xa6, 0x52, 0x1d, 0x2c, 0x10, 0x16, 0xaa, 0xee, 0x97, 0x05, 0x80, 0x6d, 0xba, 0x45, 0xd8, 0xd3, 0xf5, 0x98, 0x8d, 0xd1, 0x66, 0x9a, 0x1c, 0x96, 0xf5, 0x2e, 0xb4, 0x4d, 0xa3, 0x79, 0x5f, 0x81, 0xb9, 0x5c, 0xcd, 0x45, 0x80, 0xa4, 0x15, 0xb3, 0x3e, 0x05, 0xf9, 0x12, 0x62, 0x41, 0x7b, 0x97, 0x08, 0x90, 0x13, 0xd3, 0x1a, 0xe7, 0xe5, 0x68, 0x1d, 0x24, 0xdb, 0x7c, 0x78, 0xd7, 0x3a, 0x4a, 0x5d, 0x7c, 0xb7, 0xf8, 0x5d, 0xa4, 0xe2, 0x40, 0x86, 0x26, 0xc0, 0x45, 0x00, 0x80, 0x16, 0x88, 0x97, 0x3e, 0x8c, 0x5c, 0x38, 0x6b, 0xa6, 0x3f, 0x7d, 0x80, 0xb4, 0xec, 0x1f, 0x89, 0x0a, 0xd3, 0x64, 0x3a, 0x85, 0xab, 0xd7, 0x0b, 0x17, 0x68, 0xc1, 0x41, 0xfc, 0xe6, 0xa0, 0x2d, 0xc8, 0x0e, 0xfd, 0xf0, 0x28, 0xf3, 0xe0, 0xb7, 0x98, 0xf3, 0xc9, 0x93, 0x97, 0xeb, 0x7f, 0x81, 0x13, 0x86, 0x95, 0x17, 0x45, 0x0d, 0x3e, 0x0d, 0x35, 0x5d, 0x2d, 0xa4, 0xa4, 0x04, 0xaa, 0x22, 0x7b, 0x40, 0x47, 0xc7, 0x31, 0x88, 0x99, 0x03, 0xaf, 0xf7, 0xe6, 0x14, 0x1b, 0xcf, 0xf7, 0x3b, 0x5d, 0xc6, 0x48, 0x24, 0x42, 0xcf, 0xfe, 0x10, 0x10, 0xc0, 0x2b, 0x23, 0x28, 0xb8, 0x4a, 0x3a, 0xff, 0x21, 0xd4, 0xa3, 0x15, 0x51, 0xbc, 0xd4, 0xd2, 0x09, 0x77, 0x77, 0x3e, 0x65, 0xb4, 0x3d, 0x1e, 0xd6, 0xc0, 0xe9, 0x3b, 0x0e, 0xee, 0xa8, 0x68, 0x46, 0x25, 0x47, 0x57, 0x08, 0x2e, 0x80, 0x99, 0x9b, 0x49, 0xfb, 0xd9, 0xc5, 0x46, 0xd7, 0x31, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x63, 0x02, 0x01, 0x01, 0x30, 0x3c, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x0f, 0xaa, 0xd8, 0x51, 0x20, 0x2f, 0x32, 0x22, 0x92, 0x6d, 0xce, 0xaa, 0xc4, 0x35, 0x3e, 0xc7, 0x95, 0x6c, 0xd3, 0xac, 0x40, 0x8a, 0x99, 0xd4, 0xe9, 0x34, 0x30, 0xb3, 0x3e, 0xb1, 0x70, 0xcd, 0xae, 0x58, 0x33, 0x21, 0x1f, 0xe5, 0x15, 0x2c, 0x96, 0x4a, 0x3f, 0x57, 0x2d, 0xc8, 0x8a, 0x17, 0xad, 0x53, 0xc5, 0xb0, 0x9e, 0x7b, 0x7d, 0xdd, 0x23, 0xcf, 0x52, 0xa1, 0x04, 0x27, 0x47, 0xe7, 0xbd, 0x0f, 0x25, 0x11, 0x7c, 0x19, 0xc0, 0x9a, 0x23, 0x42, 0xd3, 0x7d, 0x49, 0x2b, 0xdd, 0x0d, 0xea, 0xe5, 0xcc, 0xd0, 0xdb, 0x8b, 0x12, 0xcd, 0xdb, 0x34, 0x63, 0xf0, 0x8f, 0x00, 0xa0, 0x0c, 0xdf, 0xf0, 0x19, 0xa1, 0x76, 0xeb, 0xfb, 0xbc, 0xc5, 0xa3, 0x55, 0x71, 0x42, 0x76, 0x0c, 0x00, 0x58, 0x64, 0xc8, 0x6f, 0x8f, 0xd8, 0x86, 0x39, 0x78, 0x45, 0x22, 0x5a, 0x5d, 0x58, 0x3c, 0xc4, 0x72, 0xe2, 0x0b, 0x03, 0x79, 0x3f, 0x64, 0x38, 0xe3, 0x7d, 0x50, 0xa0, 0xa6, 0x9f, 0x1c, 0xa1, 0xc1, 0x64, 0xbd, 0xc9, 0xcf, 0x57, 0xd9, 0x05, 0x3e, 0xfd, 0xe2, 0x43, 0xa3, 0xbc, 0xe4, 0x4a, 0xb0, 0x5e, 0x8f, 0x32, 0x6e, 0x46, 0x57, 0xe9, 0xa7, 0x86, 0x02, 0x8d, 0x88, 0x76, 0x63, 0x2d, 0xe3, 0x45, 0xa7, 0xb1, 0x92, 0xde, 0x8c, 0x22, 0x28, 0x36, 0x83, 0xed, 0x30, 0x18, 0x6b, 0xc2, 0x4e, 0x6a, 0xfb, 0x97, 0xea, 0x55, 0xc3, 0x2a, 0x91, 0x29, 0x97, 0x4c, 0x31, 0xe1, 0x1e, 0x2c, 0xcc, 0xa4, 0x38, 0xd5, 0x39, 0xfb, 0xa9, 0x05, 0x87, 0xf0, 0xf2, 0x25, 0xde, 0x0a, 0x62, 0x62, 0xe7, 0x1b, 0xf3, 0x87, 0x64, 0xc5, 0xd9, 0xd2, 0x2c, 0x50, 0xa1, 0x4b, 0x89, 0xb3, 0x3a, 0x3a, 0xe9, 0xcc, 0xc2, 0x78, 0x0e, 0x06, 0xcd, 0xac, 0xd7, 0x66, 0x6e, 0x40, 0x0b, 0x0c, 0x5f, 0xb9 }; unsigned int delete_pk_sesl_auth_len = 1257; libstb-secvar-main/test/data/kek_esl.h000066400000000000000000000124601470177641100202310ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char kek_esl[] = { 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72, 0x59, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x52, 0x14, 0xdf, 0x84, 0x5c, 0x98, 0xf8, 0x1d, 0xca, 0xe4, 0x20, 0x45, 0x74, 0xb6, 0x11, 0xec, 0x30, 0xb8, 0xbf, 0xcd, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf2, 0x78, 0x86, 0xc0, 0xe9, 0x0b, 0x63, 0xd2, 0xc2, 0xb8, 0xb3, 0xb2, 0xcb, 0xc7, 0x52, 0x73, 0xf5, 0xfa, 0x2e, 0x1f, 0xf6, 0x8f, 0x53, 0xf7, 0x11, 0x98, 0xe4, 0x18, 0x3b, 0x1c, 0x8a, 0x60, 0x05, 0x3f, 0xba, 0x14, 0xf1, 0xd4, 0x40, 0x66, 0xcc, 0x46, 0x38, 0xc1, 0x1d, 0x62, 0x60, 0xee, 0x9a, 0x27, 0x03, 0x0c, 0x10, 0x7b, 0xb5, 0x9a, 0x2c, 0x90, 0xd4, 0x16, 0x4a, 0xb7, 0x28, 0x29, 0x75, 0xd9, 0xc6, 0x76, 0xe4, 0xbc, 0x56, 0xd4, 0x0d, 0xa7, 0x89, 0x82, 0xc6, 0xbd, 0xab, 0xe3, 0x1c, 0xe0, 0x2d, 0x83, 0x65, 0xc6, 0xba, 0xf8, 0x8c, 0xbe, 0x39, 0xf6, 0x58, 0x4f, 0xcd, 0xc0, 0x04, 0xa4, 0xe5, 0xbe, 0xb9, 0xcf, 0xe5, 0x6b, 0x5b, 0xfa, 0xa8, 0x3e, 0x85, 0x3d, 0x8b, 0xd5, 0x79, 0x05, 0x96, 0x9c, 0x02, 0xea, 0x75, 0x7f, 0xcb, 0x92, 0x04, 0x91, 0x47, 0xe4, 0xc9, 0x94, 0x05, 0xef, 0xe2, 0x44, 0xbc, 0xc7, 0x1a, 0x00, 0x93, 0x40, 0x49, 0x77, 0x55, 0xc1, 0xa1, 0xb0, 0xb2, 0xcf, 0x50, 0x87, 0x80, 0x17, 0x11, 0xf6, 0x84, 0xf5, 0xea, 0x6c, 0xc3, 0xfa, 0xe4, 0xeb, 0x20, 0x24, 0x20, 0x81, 0xf3, 0x1a, 0x98, 0x71, 0x69, 0x33, 0x3a, 0x8e, 0x34, 0x6a, 0x40, 0x13, 0x83, 0x87, 0x8d, 0xa1, 0xf6, 0x8b, 0x20, 0x39, 0x76, 0x41, 0x0f, 0x3b, 0x3a, 0xec, 0x73, 0xe0, 0xca, 0x29, 0x83, 0xa0, 0xd7, 0x17, 0x4d, 0xf8, 0xe9, 0x93, 0x24, 0xb3, 0xf3, 0xf0, 0x01, 0xe4, 0x25, 0x20, 0x78, 0x55, 0x60, 0x1d, 0xed, 0x54, 0x54, 0x7b, 0x91, 0x5d, 0x7d, 0x6c, 0x62, 0x0a, 0xb7, 0xb4, 0xea, 0x15, 0xc7, 0xbd, 0xb5, 0xda, 0xfb, 0x23, 0x0a, 0x45, 0xbc, 0xb2, 0x63, 0xda, 0xb4, 0x09, 0xbe, 0x0b, 0x5d, 0x1c, 0x80, 0xfb, 0x7e, 0x6a, 0x72, 0x11, 0x22, 0x9f, 0xb5, 0xc9, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x89, 0x01, 0xe1, 0x2a, 0x0f, 0x43, 0x6b, 0xb0, 0xc5, 0x87, 0x21, 0xba, 0xed, 0xdf, 0x49, 0x4c, 0x6e, 0x66, 0xda, 0x23, 0x34, 0x1d, 0xc7, 0x5f, 0x68, 0xdb, 0x9b, 0x74, 0xd5, 0xd9, 0x68, 0x39, 0x91, 0x63, 0xd4, 0x34, 0x24, 0xbe, 0xa9, 0x03, 0x47, 0x6e, 0x99, 0x99, 0x34, 0x75, 0x69, 0x3b, 0xbc, 0x25, 0x38, 0xed, 0x38, 0xda, 0x59, 0x8d, 0x3c, 0xd6, 0xd8, 0x0f, 0x9b, 0x06, 0x5c, 0xa3, 0x39, 0xdc, 0xea, 0x27, 0xf6, 0x97, 0x4f, 0xf3, 0x61, 0xdf, 0xef, 0x79, 0x21, 0xf3, 0x81, 0xd2, 0x78, 0xb3, 0x08, 0xef, 0xa8, 0x69, 0xfb, 0x99, 0x0b, 0x75, 0x4a, 0x59, 0xbf, 0x1a, 0xa8, 0x53, 0xd5, 0x88, 0x3a, 0x72, 0xf8, 0xb6, 0xef, 0xa6, 0xec, 0x9d, 0xfa, 0x86, 0x2d, 0x0a, 0x10, 0xde, 0xb5, 0x03, 0x1f, 0x56, 0x8e, 0x5e, 0xaa, 0x3f, 0x41, 0x4f, 0x4d, 0x1e, 0xd1, 0x3c, 0x15, 0xf6, 0x2d, 0xd6, 0x0f, 0xc2, 0x09, 0xd8, 0x50, 0x69, 0x53, 0x56, 0x5a, 0x93, 0x72, 0xa6, 0x91, 0x69, 0x89, 0x9f, 0x5c, 0xac, 0xca, 0xfa, 0xa5, 0xa7, 0x98, 0xc6, 0xeb, 0xe3, 0xb3, 0x76, 0xd7, 0x36, 0x1a, 0x90, 0x94, 0x97, 0xf4, 0x77, 0xc7, 0xf2, 0xcc, 0x55, 0xcd, 0x65, 0x38, 0x3b, 0x0b, 0x14, 0xc2, 0xb9, 0x43, 0xb3, 0x31, 0x7b, 0xe5, 0x78, 0xa4, 0xde, 0xd8, 0x55, 0x21, 0x00, 0x58, 0x64, 0xd6, 0x43, 0xe9, 0x20, 0xee, 0x82, 0xa8, 0x65, 0xd3, 0x29, 0x79, 0xe1, 0xe5, 0x9d, 0x6e, 0x9d, 0xc0, 0xfa, 0x0a, 0xa1, 0xac, 0xeb, 0x97, 0x69, 0x80, 0xc6, 0xa0, 0xb7, 0x7e, 0x88, 0x4e, 0x12, 0xf0, 0x0d, 0xf7, 0xe5, 0xf8, 0x60, 0x5f, 0x24, 0x50, 0xe9, 0x92, 0x1a, 0xbb, 0xd4, 0xa9, 0xde, 0xa6, 0x7a, 0x15, 0xea, 0xcc, 0x8a, 0xe3, 0x56, 0x3c, 0xa9, 0xf5, 0x31, 0x3d, 0x33, 0x2e, 0xf2 }; unsigned int kek_esl_len = 857; libstb-secvar-main/test/data/one_esl.h000066400000000000000000000124601470177641100202400ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char one_esl[] = { 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72, 0x59, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xcf, 0xf3, 0x6e, 0xc9, 0xaf, 0x12, 0x42, 0xdb, 0xa9, 0x59, 0x6d, 0xef, 0xf6, 0x0e, 0x54, 0xe8, 0x21, 0x57, 0xc4, 0x78, 0x3f, 0x6d, 0x83, 0x37, 0x1a, 0x29, 0x10, 0xd2, 0xb8, 0xb7, 0x24, 0x49, 0x5f, 0x5f, 0x32, 0xc9, 0x39, 0xdc, 0x40, 0xa4, 0x5d, 0xea, 0x7b, 0xb7, 0xb3, 0x42, 0xab, 0x43, 0x47, 0x3d, 0x91, 0x6e, 0xf1, 0x5d, 0x3f, 0xf9, 0x2d, 0x9e, 0x88, 0xc4, 0x05, 0x73, 0x9b, 0x0a, 0xa8, 0xf7, 0xb2, 0x8e, 0x24, 0x69, 0x13, 0xf0, 0xbc, 0x5d, 0xde, 0x32, 0x40, 0x42, 0x31, 0x58, 0x9e, 0x48, 0x76, 0x1f, 0x6b, 0x10, 0x19, 0x1c, 0x4e, 0x45, 0x82, 0x19, 0xc0, 0xed, 0xfc, 0x5c, 0x7c, 0x19, 0xfd, 0x85, 0x13, 0x2b, 0xf0, 0x38, 0x83, 0x7b, 0xe5, 0x1d, 0x86, 0x70, 0xed, 0x8f, 0x52, 0x16, 0x60, 0x14, 0xfb, 0xaf, 0x23, 0x19, 0xa5, 0x45, 0x44, 0x91, 0x54, 0xd0, 0xe8, 0x79, 0x34, 0xbe, 0x4f, 0xb3, 0x8c, 0x56, 0x8c, 0x7c, 0xbf, 0x6a, 0xa2, 0x44, 0x04, 0x51, 0xe5, 0x0f, 0x30, 0x04, 0xe9, 0x90, 0xb1, 0x8a, 0xe3, 0x9b, 0x95, 0xb1, 0xd6, 0xde, 0x9e, 0x98, 0x14, 0x07, 0x63, 0xbd, 0x88, 0x94, 0x54, 0xb6, 0x03, 0x8d, 0xf5, 0x8e, 0xca, 0x82, 0xc8, 0xb1, 0x78, 0xba, 0xb4, 0x21, 0x45, 0x6f, 0xd4, 0x0c, 0xda, 0xcb, 0x81, 0x1a, 0x9b, 0xb2, 0x0c, 0xa9, 0x7c, 0x48, 0x84, 0xc8, 0xbd, 0xce, 0x46, 0x1b, 0x8b, 0x38, 0xe2, 0x67, 0x50, 0x3c, 0x3e, 0x3e, 0x32, 0xec, 0x0b, 0x39, 0xc7, 0xe0, 0xd5, 0x00, 0xc5, 0x7a, 0xd3, 0x1c, 0xd1, 0xfb, 0x0a, 0xc7, 0x5b, 0x1d, 0x21, 0x3d, 0x50, 0x53, 0x87, 0xa1, 0xb4, 0x16, 0x5b, 0x1e, 0x80, 0x80, 0xaa, 0xe5, 0xf9, 0x69, 0x6c, 0x48, 0xab, 0x45, 0x66, 0x05, 0x04, 0xc7, 0xad, 0xc1, 0x24, 0x4a, 0xde, 0xad, 0x14, 0x55, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x99, 0xdd, 0xbb, 0x72, 0xf5, 0x8e, 0xdc, 0x7b, 0xe7, 0x9c, 0x6d, 0x47, 0x37, 0x01, 0xc9, 0xc2, 0xc9, 0x90, 0x01, 0x5d, 0x26, 0x80, 0xce, 0x2b, 0xd3, 0xdd, 0x26, 0x67, 0x2a, 0x77, 0x41, 0x06, 0x78, 0xed, 0xe7, 0xb0, 0x58, 0x93, 0x44, 0xe5, 0x79, 0xc0, 0xa6, 0x52, 0x1d, 0x2c, 0x10, 0x16, 0xaa, 0xee, 0x97, 0x05, 0x80, 0x6d, 0xba, 0x45, 0xd8, 0xd3, 0xf5, 0x98, 0x8d, 0xd1, 0x66, 0x9a, 0x1c, 0x96, 0xf5, 0x2e, 0xb4, 0x4d, 0xa3, 0x79, 0x5f, 0x81, 0xb9, 0x5c, 0xcd, 0x45, 0x80, 0xa4, 0x15, 0xb3, 0x3e, 0x05, 0xf9, 0x12, 0x62, 0x41, 0x7b, 0x97, 0x08, 0x90, 0x13, 0xd3, 0x1a, 0xe7, 0xe5, 0x68, 0x1d, 0x24, 0xdb, 0x7c, 0x78, 0xd7, 0x3a, 0x4a, 0x5d, 0x7c, 0xb7, 0xf8, 0x5d, 0xa4, 0xe2, 0x40, 0x86, 0x26, 0xc0, 0x45, 0x00, 0x80, 0x16, 0x88, 0x97, 0x3e, 0x8c, 0x5c, 0x38, 0x6b, 0xa6, 0x3f, 0x7d, 0x80, 0xb4, 0xec, 0x1f, 0x89, 0x0a, 0xd3, 0x64, 0x3a, 0x85, 0xab, 0xd7, 0x0b, 0x17, 0x68, 0xc1, 0x41, 0xfc, 0xe6, 0xa0, 0x2d, 0xc8, 0x0e, 0xfd, 0xf0, 0x28, 0xf3, 0xe0, 0xb7, 0x98, 0xf3, 0xc9, 0x93, 0x97, 0xeb, 0x7f, 0x81, 0x13, 0x86, 0x95, 0x17, 0x45, 0x0d, 0x3e, 0x0d, 0x35, 0x5d, 0x2d, 0xa4, 0xa4, 0x04, 0xaa, 0x22, 0x7b, 0x40, 0x47, 0xc7, 0x31, 0x88, 0x99, 0x03, 0xaf, 0xf7, 0xe6, 0x14, 0x1b, 0xcf, 0xf7, 0x3b, 0x5d, 0xc6, 0x48, 0x24, 0x42, 0xcf, 0xfe, 0x10, 0x10, 0xc0, 0x2b, 0x23, 0x28, 0xb8, 0x4a, 0x3a, 0xff, 0x21, 0xd4, 0xa3, 0x15, 0x51, 0xbc, 0xd4, 0xd2, 0x09, 0x77, 0x77, 0x3e, 0x65, 0xb4, 0x3d, 0x1e, 0xd6, 0xc0, 0xe9, 0x3b, 0x0e, 0xee, 0xa8, 0x68, 0x46, 0x25, 0x47, 0x57, 0x08, 0x2e, 0x80, 0x99, 0x9b, 0x49, 0xfb, 0xd9, 0xc5, 0x46, 0xd7 }; unsigned int one_esl_len = 857; libstb-secvar-main/test/data/pk_3k_auth.h000066400000000000000000000432571470177641100206540ustar00rootroot00000000000000unsigned char pk_3k_auth[] = { 0xe4, 0x07, 0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x06, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x06, 0xaa, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x06, 0x9b, 0x30, 0x82, 0x06, 0x97, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x04, 0x69, 0x30, 0x82, 0x04, 0x65, 0x30, 0x82, 0x02, 0xcd, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x5a, 0x4b, 0x8d, 0x4a, 0xf8, 0xe3, 0x15, 0x44, 0x9f, 0x7a, 0x98, 0x49, 0xa7, 0x93, 0x2c, 0xa8, 0x81, 0xa8, 0x71, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x39, 0x30, 0x36, 0x31, 0x36, 0x31, 0x32, 0x30, 0x31, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x31, 0x30, 0x30, 0x36, 0x31, 0x36, 0x31, 0x32, 0x30, 0x31, 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x82, 0x01, 0xa2, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x8f, 0x00, 0x30, 0x82, 0x01, 0x8a, 0x02, 0x82, 0x01, 0x81, 0x00, 0xc1, 0x22, 0xa7, 0x47, 0x5b, 0xa2, 0xab, 0x83, 0x59, 0x2b, 0x72, 0x2c, 0x2e, 0xed, 0x01, 0x27, 0xc5, 0x74, 0x59, 0x92, 0x7e, 0xa3, 0x47, 0xb4, 0x0b, 0xfc, 0xa1, 0xf0, 0xdc, 0x71, 0x67, 0x58, 0x8d, 0x73, 0xf0, 0xfe, 0x83, 0xc1, 0x8f, 0xc7, 0x82, 0xf2, 0x76, 0xb1, 0x48, 0x52, 0x92, 0x49, 0xbe, 0x23, 0xac, 0x66, 0x46, 0x31, 0xa7, 0xa4, 0x2c, 0x8b, 0x60, 0xda, 0xcc, 0x6a, 0xdb, 0xd6, 0xe8, 0x46, 0xfd, 0x4a, 0x32, 0x67, 0x8c, 0xf7, 0x6e, 0xf5, 0xcb, 0xf2, 0x57, 0x1a, 0xaf, 0x02, 0xe5, 0x7d, 0xe1, 0x6c, 0xab, 0x35, 0x5a, 0x41, 0xda, 0x8f, 0xf2, 0x2b, 0x8b, 0x46, 0xa3, 0x44, 0xa6, 0xcf, 0x2d, 0xcb, 0x06, 0x59, 0x04, 0xac, 0xe4, 0xd5, 0x9b, 0xa0, 0x11, 0x2c, 0x8e, 0x33, 0x9a, 0x1a, 0xee, 0xb9, 0x0e, 0x3d, 0xaf, 0x25, 0x2d, 0xea, 0x75, 0x61, 0xd1, 0xc1, 0x76, 0xc4, 0x6a, 0xf6, 0x7d, 0x55, 0x2f, 0xc5, 0x14, 0x86, 0x35, 0xd5, 0x6f, 0xf3, 0x8b, 0x2f, 0x94, 0x75, 0x92, 0xec, 0x11, 0x2a, 0xe7, 0x75, 0xea, 0xf0, 0x1d, 0x51, 0xdf, 0x91, 0xfa, 0x5d, 0x10, 0xb8, 0xff, 0xdc, 0x39, 0x20, 0x9b, 0xb3, 0x48, 0xe4, 0xc2, 0x0b, 0x3c, 0x83, 0x48, 0xaf, 0x74, 0xbf, 0xc9, 0xf8, 0x3a, 0x6e, 0x77, 0x1d, 0xb3, 0xf0, 0x35, 0x71, 0xaf, 0x60, 0x5c, 0xb9, 0x38, 0x22, 0x57, 0xe1, 0x28, 0xb9, 0x3e, 0xa9, 0xab, 0x35, 0xc9, 0x61, 0x3e, 0xfd, 0x73, 0x08, 0xf4, 0x1e, 0x20, 0xdb, 0xf3, 0xe0, 0x6c, 0x08, 0xae, 0xd3, 0x66, 0x20, 0x4b, 0xf6, 0x16, 0x83, 0x2e, 0x36, 0x4b, 0xee, 0x96, 0xa4, 0xbc, 0x12, 0x98, 0x63, 0x22, 0xc9, 0x00, 0x2b, 0x8a, 0x9a, 0x20, 0x79, 0xa6, 0x7a, 0x74, 0x34, 0x41, 0x31, 0x92, 0x6b, 0xb7, 0xc3, 0xf3, 0x92, 0x16, 0x53, 0xbd, 0xaa, 0x7b, 0xd7, 0x8f, 0x10, 0xf8, 0x78, 0x84, 0xec, 0x5a, 0x6a, 0x25, 0x25, 0xaa, 0x8b, 0xa9, 0x95, 0x02, 0xa1, 0x3f, 0x04, 0xb2, 0xd5, 0x08, 0x36, 0xda, 0x66, 0x0b, 0xff, 0xf1, 0xc1, 0xa0, 0x9a, 0xaf, 0x58, 0x3f, 0x5f, 0xa4, 0xf4, 0x78, 0x72, 0xd6, 0x17, 0xa6, 0xc6, 0x71, 0x58, 0x1e, 0x53, 0x6a, 0x56, 0x64, 0xb8, 0xf9, 0x0d, 0xc0, 0x17, 0xbb, 0x37, 0x49, 0xf0, 0x39, 0x89, 0x76, 0x8a, 0xcf, 0xf9, 0x96, 0x7d, 0x22, 0x33, 0xa9, 0x17, 0x40, 0xac, 0x44, 0xd0, 0x05, 0xcf, 0x63, 0x70, 0xe3, 0xc5, 0x16, 0xa6, 0x0e, 0xdc, 0xfe, 0xe4, 0x89, 0xeb, 0x14, 0x4b, 0xcc, 0x7c, 0x91, 0x17, 0xdf, 0xbb, 0xd6, 0xa1, 0xf8, 0xc1, 0x06, 0x98, 0x55, 0xb1, 0x4f, 0xde, 0x07, 0xbb, 0x5a, 0x79, 0x10, 0x3e, 0x48, 0xef, 0xa4, 0xd9, 0x7a, 0xf9, 0x63, 0x4e, 0x88, 0x8c, 0x21, 0x63, 0x33, 0x29, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x4f, 0x21, 0x33, 0x2c, 0xdf, 0x8c, 0x56, 0x37, 0xf8, 0x70, 0xa6, 0x5a, 0x82, 0x5e, 0x0d, 0xb4, 0x0a, 0x94, 0x95, 0x3f, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4f, 0x21, 0x33, 0x2c, 0xdf, 0x8c, 0x56, 0x37, 0xf8, 0x70, 0xa6, 0x5a, 0x82, 0x5e, 0x0d, 0xb4, 0x0a, 0x94, 0x95, 0x3f, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x81, 0x00, 0x63, 0xcc, 0x6f, 0x61, 0xd6, 0xb8, 0x14, 0x77, 0xe8, 0x0a, 0x4a, 0x05, 0x50, 0x9c, 0xcc, 0x74, 0x8f, 0x50, 0x5f, 0x1d, 0xdb, 0x02, 0xa7, 0x47, 0x04, 0xf9, 0x82, 0x00, 0x9b, 0x46, 0x4a, 0x11, 0x21, 0xe8, 0x7f, 0x0c, 0x74, 0xe9, 0x51, 0xa8, 0x86, 0x99, 0x3a, 0x60, 0x0c, 0x22, 0xa2, 0xb5, 0x04, 0x20, 0x4a, 0xe3, 0xf6, 0x8c, 0x8d, 0x27, 0x3b, 0xff, 0x50, 0xac, 0x27, 0x38, 0xbc, 0x24, 0x56, 0x41, 0x48, 0xe4, 0xf8, 0x85, 0x67, 0x24, 0x92, 0xcb, 0xb9, 0xc3, 0x04, 0x97, 0x6b, 0xfc, 0xd2, 0x54, 0xb8, 0x61, 0x8a, 0x87, 0xde, 0x3c, 0x84, 0xd9, 0x3f, 0xcf, 0x58, 0xba, 0xad, 0x01, 0x30, 0x0b, 0x26, 0x2b, 0xc6, 0x36, 0x5d, 0x45, 0x00, 0x45, 0x42, 0x79, 0x52, 0x93, 0xe0, 0x19, 0x4a, 0x24, 0xe2, 0xfe, 0x0c, 0x9c, 0xf4, 0xbc, 0xb3, 0xd3, 0x9e, 0xe8, 0xf6, 0x72, 0xa4, 0xa8, 0x72, 0xf8, 0xd9, 0x18, 0xd0, 0x07, 0x63, 0x15, 0xac, 0xf1, 0x0e, 0x76, 0x0a, 0xcc, 0xf1, 0x2d, 0x91, 0xe7, 0x26, 0x11, 0x4a, 0x91, 0x56, 0x79, 0x1c, 0x86, 0xcf, 0x00, 0xcb, 0x19, 0xea, 0x2e, 0xd5, 0x7d, 0x01, 0xee, 0x67, 0x8a, 0xb7, 0x4c, 0x71, 0x22, 0x63, 0xf4, 0xed, 0xf8, 0x57, 0x93, 0x70, 0xd9, 0xff, 0x1a, 0x45, 0x11, 0x90, 0xce, 0x2f, 0xe7, 0x07, 0xda, 0x31, 0xb6, 0xc1, 0xb6, 0xb0, 0x1b, 0x41, 0x22, 0x92, 0x17, 0xbb, 0x3a, 0x91, 0x80, 0x63, 0x19, 0x72, 0x55, 0xd4, 0x8c, 0x5c, 0xd9, 0x5f, 0x27, 0xb0, 0x5f, 0x3b, 0x4b, 0x47, 0xb7, 0x8f, 0x4f, 0x1d, 0x17, 0xbb, 0x45, 0xab, 0x2a, 0xac, 0xf3, 0x05, 0x19, 0xda, 0xbb, 0x18, 0x10, 0xff, 0xc2, 0x37, 0xd1, 0x3e, 0x51, 0xf7, 0xfc, 0x72, 0x23, 0xd4, 0xd5, 0x7f, 0xdb, 0xfd, 0x48, 0x0f, 0xdf, 0x59, 0x63, 0x62, 0xa2, 0xcf, 0xd9, 0x72, 0xfe, 0xd2, 0xca, 0x41, 0xe4, 0x03, 0x83, 0x97, 0xff, 0x40, 0xd0, 0x5b, 0xb2, 0x84, 0x71, 0x8d, 0xdc, 0x24, 0x20, 0x1d, 0x13, 0xd7, 0x6a, 0x5f, 0xd3, 0xcc, 0xbf, 0x9b, 0xa6, 0xc8, 0xb0, 0x8b, 0xed, 0x61, 0xf0, 0x9f, 0xa4, 0xd1, 0x17, 0x56, 0x15, 0x7a, 0x26, 0xc2, 0xee, 0x22, 0xe7, 0x66, 0x85, 0xcc, 0xe5, 0x5f, 0xd0, 0x84, 0x0b, 0x19, 0x26, 0xfc, 0xc2, 0x1d, 0x7e, 0x3d, 0xe1, 0xac, 0xbd, 0xce, 0xd4, 0x8d, 0x0a, 0xd2, 0xab, 0x88, 0xf1, 0x06, 0x88, 0xb6, 0xc9, 0x16, 0x6d, 0xe3, 0x7f, 0x19, 0x1b, 0xaf, 0xcf, 0xef, 0xac, 0x45, 0xa8, 0x92, 0x90, 0x52, 0xae, 0x75, 0x2f, 0x8a, 0x84, 0xa0, 0x7b, 0xf1, 0x18, 0x5c, 0x43, 0xa3, 0x63, 0xaf, 0xd4, 0x75, 0x5a, 0xd1, 0xb1, 0x01, 0x4c, 0x88, 0x36, 0x9f, 0xd2, 0xd6, 0xee, 0x47, 0x0a, 0x41, 0x46, 0x61, 0x40, 0x31, 0x82, 0x02, 0x05, 0x30, 0x82, 0x02, 0x01, 0x02, 0x01, 0x01, 0x30, 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x02, 0x14, 0x5a, 0x4b, 0x8d, 0x4a, 0xf8, 0xe3, 0x15, 0x44, 0x9f, 0x7a, 0x98, 0x49, 0xa7, 0x93, 0x2c, 0xa8, 0x81, 0xa8, 0x71, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x80, 0x50, 0xc9, 0x5d, 0x23, 0xcb, 0x79, 0xee, 0x30, 0x06, 0xd5, 0x13, 0xc0, 0x65, 0x5e, 0x05, 0xfe, 0x1e, 0x82, 0x6a, 0x22, 0x8e, 0x35, 0xcd, 0xb3, 0x75, 0x46, 0x47, 0xf8, 0x37, 0x67, 0x4e, 0x4b, 0xa6, 0xe8, 0x26, 0xa0, 0x39, 0xa8, 0x1f, 0x49, 0x31, 0xb2, 0xaa, 0xcf, 0x35, 0xc1, 0x3d, 0x2f, 0xe8, 0xde, 0x0c, 0x27, 0xc9, 0xdb, 0x03, 0xd2, 0xef, 0xa1, 0x58, 0x77, 0x1c, 0x53, 0xa4, 0x5d, 0x9f, 0x61, 0xc9, 0x25, 0x7e, 0xd6, 0x8c, 0x5b, 0x42, 0x69, 0x07, 0xc5, 0x99, 0x74, 0x29, 0xcb, 0x52, 0x97, 0x3d, 0xec, 0x67, 0x9d, 0xb9, 0x51, 0x75, 0x5d, 0x08, 0xea, 0xb5, 0xd1, 0xb8, 0x3e, 0x8c, 0xaf, 0x71, 0xf3, 0xcd, 0x40, 0x06, 0xb9, 0x4c, 0x54, 0xc4, 0xff, 0x49, 0x5d, 0x3a, 0x7e, 0xa7, 0x2d, 0xbd, 0xa7, 0xa9, 0xf2, 0x5b, 0x83, 0x43, 0x30, 0xe9, 0xf8, 0x15, 0x8c, 0x0e, 0x59, 0xf6, 0x53, 0x62, 0xae, 0xcf, 0x77, 0x93, 0x6d, 0x59, 0xea, 0xbe, 0xb4, 0xf9, 0x32, 0xb0, 0x84, 0x18, 0xa8, 0xa2, 0xd2, 0x63, 0x22, 0xf7, 0xea, 0x0a, 0x44, 0x2f, 0x70, 0xa6, 0xf3, 0x09, 0xff, 0x0d, 0x05, 0x05, 0x2e, 0x78, 0x22, 0x15, 0x44, 0x9f, 0x62, 0x25, 0xca, 0x4b, 0xf7, 0x25, 0xa4, 0x8b, 0x57, 0x26, 0x9b, 0x21, 0x4c, 0x63, 0xf5, 0x10, 0x0d, 0xc3, 0x10, 0x5c, 0xcf, 0x9e, 0x02, 0x95, 0xce, 0x32, 0x02, 0xd4, 0x89, 0xb5, 0x72, 0x2b, 0xc8, 0x42, 0x72, 0x23, 0x17, 0x0c, 0x4a, 0x4f, 0x2f, 0xbe, 0x5b, 0x13, 0x8f, 0x86, 0xc0, 0x17, 0x6e, 0x31, 0x33, 0xa5, 0x07, 0xa1, 0x03, 0x90, 0xd7, 0xcc, 0xb5, 0x99, 0x5e, 0x0c, 0x14, 0x2a, 0x18, 0xf6, 0x77, 0x72, 0x4b, 0xab, 0x20, 0x8c, 0x24, 0x06, 0x83, 0xa8, 0x10, 0x2e, 0x22, 0x11, 0x39, 0x28, 0x62, 0x54, 0x84, 0x20, 0xab, 0xf5, 0xa0, 0x85, 0x06, 0xc2, 0xfd, 0xf9, 0x6e, 0x31, 0xae, 0xd9, 0x16, 0x02, 0xa0, 0x6a, 0x6a, 0x0f, 0xa5, 0xc0, 0x23, 0x46, 0x25, 0xac, 0x3f, 0x5e, 0x99, 0x27, 0x69, 0xd6, 0x64, 0xc0, 0x62, 0x3a, 0x48, 0x5a, 0x7a, 0xa4, 0xcc, 0x1c, 0xa9, 0xf5, 0x13, 0x61, 0x22, 0x0c, 0x30, 0x67, 0x92, 0x80, 0xa6, 0x18, 0x34, 0xaa, 0xcf, 0x39, 0xc7, 0x78, 0x1c, 0x52, 0x3a, 0x2a, 0x96, 0x42, 0x98, 0x27, 0xb6, 0x93, 0xbc, 0xb8, 0xa7, 0xef, 0x7f, 0x4f, 0x07, 0x5a, 0xf2, 0x0b, 0x80, 0xfb, 0x06, 0xa3, 0x75, 0xc2, 0x39, 0x24, 0x6a, 0x28, 0xb5, 0x83, 0x13, 0x42, 0x3e, 0x5d, 0x99, 0x84, 0x52, 0xe7, 0x1c, 0xcc, 0xa5, 0x03, 0xf6, 0xf3, 0xf5, 0x8f, 0xdd, 0xa0, 0xe4, 0xf3, 0xf5, 0x7f, 0x27, 0x41, 0xe8, 0xc3, 0x2f, 0xcc, 0x66, 0x9a, 0x64, 0x63, 0x0d, 0x5a, 0x22, 0xa8, 0xd3, 0x5e, 0x22, 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72, 0x95, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x04, 0x65, 0x30, 0x82, 0x02, 0xcd, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x5a, 0x4b, 0x8d, 0x4a, 0xf8, 0xe3, 0x15, 0x44, 0x9f, 0x7a, 0x98, 0x49, 0xa7, 0x93, 0x2c, 0xa8, 0x81, 0xa8, 0x71, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x39, 0x30, 0x36, 0x31, 0x36, 0x31, 0x32, 0x30, 0x31, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x31, 0x30, 0x30, 0x36, 0x31, 0x36, 0x31, 0x32, 0x30, 0x31, 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x82, 0x01, 0xa2, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x8f, 0x00, 0x30, 0x82, 0x01, 0x8a, 0x02, 0x82, 0x01, 0x81, 0x00, 0xc1, 0x22, 0xa7, 0x47, 0x5b, 0xa2, 0xab, 0x83, 0x59, 0x2b, 0x72, 0x2c, 0x2e, 0xed, 0x01, 0x27, 0xc5, 0x74, 0x59, 0x92, 0x7e, 0xa3, 0x47, 0xb4, 0x0b, 0xfc, 0xa1, 0xf0, 0xdc, 0x71, 0x67, 0x58, 0x8d, 0x73, 0xf0, 0xfe, 0x83, 0xc1, 0x8f, 0xc7, 0x82, 0xf2, 0x76, 0xb1, 0x48, 0x52, 0x92, 0x49, 0xbe, 0x23, 0xac, 0x66, 0x46, 0x31, 0xa7, 0xa4, 0x2c, 0x8b, 0x60, 0xda, 0xcc, 0x6a, 0xdb, 0xd6, 0xe8, 0x46, 0xfd, 0x4a, 0x32, 0x67, 0x8c, 0xf7, 0x6e, 0xf5, 0xcb, 0xf2, 0x57, 0x1a, 0xaf, 0x02, 0xe5, 0x7d, 0xe1, 0x6c, 0xab, 0x35, 0x5a, 0x41, 0xda, 0x8f, 0xf2, 0x2b, 0x8b, 0x46, 0xa3, 0x44, 0xa6, 0xcf, 0x2d, 0xcb, 0x06, 0x59, 0x04, 0xac, 0xe4, 0xd5, 0x9b, 0xa0, 0x11, 0x2c, 0x8e, 0x33, 0x9a, 0x1a, 0xee, 0xb9, 0x0e, 0x3d, 0xaf, 0x25, 0x2d, 0xea, 0x75, 0x61, 0xd1, 0xc1, 0x76, 0xc4, 0x6a, 0xf6, 0x7d, 0x55, 0x2f, 0xc5, 0x14, 0x86, 0x35, 0xd5, 0x6f, 0xf3, 0x8b, 0x2f, 0x94, 0x75, 0x92, 0xec, 0x11, 0x2a, 0xe7, 0x75, 0xea, 0xf0, 0x1d, 0x51, 0xdf, 0x91, 0xfa, 0x5d, 0x10, 0xb8, 0xff, 0xdc, 0x39, 0x20, 0x9b, 0xb3, 0x48, 0xe4, 0xc2, 0x0b, 0x3c, 0x83, 0x48, 0xaf, 0x74, 0xbf, 0xc9, 0xf8, 0x3a, 0x6e, 0x77, 0x1d, 0xb3, 0xf0, 0x35, 0x71, 0xaf, 0x60, 0x5c, 0xb9, 0x38, 0x22, 0x57, 0xe1, 0x28, 0xb9, 0x3e, 0xa9, 0xab, 0x35, 0xc9, 0x61, 0x3e, 0xfd, 0x73, 0x08, 0xf4, 0x1e, 0x20, 0xdb, 0xf3, 0xe0, 0x6c, 0x08, 0xae, 0xd3, 0x66, 0x20, 0x4b, 0xf6, 0x16, 0x83, 0x2e, 0x36, 0x4b, 0xee, 0x96, 0xa4, 0xbc, 0x12, 0x98, 0x63, 0x22, 0xc9, 0x00, 0x2b, 0x8a, 0x9a, 0x20, 0x79, 0xa6, 0x7a, 0x74, 0x34, 0x41, 0x31, 0x92, 0x6b, 0xb7, 0xc3, 0xf3, 0x92, 0x16, 0x53, 0xbd, 0xaa, 0x7b, 0xd7, 0x8f, 0x10, 0xf8, 0x78, 0x84, 0xec, 0x5a, 0x6a, 0x25, 0x25, 0xaa, 0x8b, 0xa9, 0x95, 0x02, 0xa1, 0x3f, 0x04, 0xb2, 0xd5, 0x08, 0x36, 0xda, 0x66, 0x0b, 0xff, 0xf1, 0xc1, 0xa0, 0x9a, 0xaf, 0x58, 0x3f, 0x5f, 0xa4, 0xf4, 0x78, 0x72, 0xd6, 0x17, 0xa6, 0xc6, 0x71, 0x58, 0x1e, 0x53, 0x6a, 0x56, 0x64, 0xb8, 0xf9, 0x0d, 0xc0, 0x17, 0xbb, 0x37, 0x49, 0xf0, 0x39, 0x89, 0x76, 0x8a, 0xcf, 0xf9, 0x96, 0x7d, 0x22, 0x33, 0xa9, 0x17, 0x40, 0xac, 0x44, 0xd0, 0x05, 0xcf, 0x63, 0x70, 0xe3, 0xc5, 0x16, 0xa6, 0x0e, 0xdc, 0xfe, 0xe4, 0x89, 0xeb, 0x14, 0x4b, 0xcc, 0x7c, 0x91, 0x17, 0xdf, 0xbb, 0xd6, 0xa1, 0xf8, 0xc1, 0x06, 0x98, 0x55, 0xb1, 0x4f, 0xde, 0x07, 0xbb, 0x5a, 0x79, 0x10, 0x3e, 0x48, 0xef, 0xa4, 0xd9, 0x7a, 0xf9, 0x63, 0x4e, 0x88, 0x8c, 0x21, 0x63, 0x33, 0x29, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x4f, 0x21, 0x33, 0x2c, 0xdf, 0x8c, 0x56, 0x37, 0xf8, 0x70, 0xa6, 0x5a, 0x82, 0x5e, 0x0d, 0xb4, 0x0a, 0x94, 0x95, 0x3f, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4f, 0x21, 0x33, 0x2c, 0xdf, 0x8c, 0x56, 0x37, 0xf8, 0x70, 0xa6, 0x5a, 0x82, 0x5e, 0x0d, 0xb4, 0x0a, 0x94, 0x95, 0x3f, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x81, 0x00, 0x63, 0xcc, 0x6f, 0x61, 0xd6, 0xb8, 0x14, 0x77, 0xe8, 0x0a, 0x4a, 0x05, 0x50, 0x9c, 0xcc, 0x74, 0x8f, 0x50, 0x5f, 0x1d, 0xdb, 0x02, 0xa7, 0x47, 0x04, 0xf9, 0x82, 0x00, 0x9b, 0x46, 0x4a, 0x11, 0x21, 0xe8, 0x7f, 0x0c, 0x74, 0xe9, 0x51, 0xa8, 0x86, 0x99, 0x3a, 0x60, 0x0c, 0x22, 0xa2, 0xb5, 0x04, 0x20, 0x4a, 0xe3, 0xf6, 0x8c, 0x8d, 0x27, 0x3b, 0xff, 0x50, 0xac, 0x27, 0x38, 0xbc, 0x24, 0x56, 0x41, 0x48, 0xe4, 0xf8, 0x85, 0x67, 0x24, 0x92, 0xcb, 0xb9, 0xc3, 0x04, 0x97, 0x6b, 0xfc, 0xd2, 0x54, 0xb8, 0x61, 0x8a, 0x87, 0xde, 0x3c, 0x84, 0xd9, 0x3f, 0xcf, 0x58, 0xba, 0xad, 0x01, 0x30, 0x0b, 0x26, 0x2b, 0xc6, 0x36, 0x5d, 0x45, 0x00, 0x45, 0x42, 0x79, 0x52, 0x93, 0xe0, 0x19, 0x4a, 0x24, 0xe2, 0xfe, 0x0c, 0x9c, 0xf4, 0xbc, 0xb3, 0xd3, 0x9e, 0xe8, 0xf6, 0x72, 0xa4, 0xa8, 0x72, 0xf8, 0xd9, 0x18, 0xd0, 0x07, 0x63, 0x15, 0xac, 0xf1, 0x0e, 0x76, 0x0a, 0xcc, 0xf1, 0x2d, 0x91, 0xe7, 0x26, 0x11, 0x4a, 0x91, 0x56, 0x79, 0x1c, 0x86, 0xcf, 0x00, 0xcb, 0x19, 0xea, 0x2e, 0xd5, 0x7d, 0x01, 0xee, 0x67, 0x8a, 0xb7, 0x4c, 0x71, 0x22, 0x63, 0xf4, 0xed, 0xf8, 0x57, 0x93, 0x70, 0xd9, 0xff, 0x1a, 0x45, 0x11, 0x90, 0xce, 0x2f, 0xe7, 0x07, 0xda, 0x31, 0xb6, 0xc1, 0xb6, 0xb0, 0x1b, 0x41, 0x22, 0x92, 0x17, 0xbb, 0x3a, 0x91, 0x80, 0x63, 0x19, 0x72, 0x55, 0xd4, 0x8c, 0x5c, 0xd9, 0x5f, 0x27, 0xb0, 0x5f, 0x3b, 0x4b, 0x47, 0xb7, 0x8f, 0x4f, 0x1d, 0x17, 0xbb, 0x45, 0xab, 0x2a, 0xac, 0xf3, 0x05, 0x19, 0xda, 0xbb, 0x18, 0x10, 0xff, 0xc2, 0x37, 0xd1, 0x3e, 0x51, 0xf7, 0xfc, 0x72, 0x23, 0xd4, 0xd5, 0x7f, 0xdb, 0xfd, 0x48, 0x0f, 0xdf, 0x59, 0x63, 0x62, 0xa2, 0xcf, 0xd9, 0x72, 0xfe, 0xd2, 0xca, 0x41, 0xe4, 0x03, 0x83, 0x97, 0xff, 0x40, 0xd0, 0x5b, 0xb2, 0x84, 0x71, 0x8d, 0xdc, 0x24, 0x20, 0x1d, 0x13, 0xd7, 0x6a, 0x5f, 0xd3, 0xcc, 0xbf, 0x9b, 0xa6, 0xc8, 0xb0, 0x8b, 0xed, 0x61, 0xf0, 0x9f, 0xa4, 0xd1, 0x17, 0x56, 0x15, 0x7a, 0x26, 0xc2, 0xee, 0x22, 0xe7, 0x66, 0x85, 0xcc, 0xe5, 0x5f, 0xd0, 0x84, 0x0b, 0x19, 0x26, 0xfc, 0xc2, 0x1d, 0x7e, 0x3d, 0xe1, 0xac, 0xbd, 0xce, 0xd4, 0x8d, 0x0a, 0xd2, 0xab, 0x88, 0xf1, 0x06, 0x88, 0xb6, 0xc9, 0x16, 0x6d, 0xe3, 0x7f, 0x19, 0x1b, 0xaf, 0xcf, 0xef, 0xac, 0x45, 0xa8, 0x92, 0x90, 0x52, 0xae, 0x75, 0x2f, 0x8a, 0x84, 0xa0, 0x7b, 0xf1, 0x18, 0x5c, 0x43, 0xa3, 0x63, 0xaf, 0xd4, 0x75, 0x5a, 0xd1, 0xb1, 0x01, 0x4c, 0x88, 0x36, 0x9f, 0xd2, 0xd6, 0xee, 0x47, 0x0a, 0x41, 0x46, 0x61, 0x40 }; unsigned int pk_3k_auth_len = 2923; libstb-secvar-main/test/data/pk_3k_esl.h000066400000000000000000000162051470177641100204670ustar00rootroot00000000000000unsigned char pk_3k_esl[] = { 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72, 0x95, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x04, 0x65, 0x30, 0x82, 0x02, 0xcd, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x5a, 0x4b, 0x8d, 0x4a, 0xf8, 0xe3, 0x15, 0x44, 0x9f, 0x7a, 0x98, 0x49, 0xa7, 0x93, 0x2c, 0xa8, 0x81, 0xa8, 0x71, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x39, 0x30, 0x36, 0x31, 0x36, 0x31, 0x32, 0x30, 0x31, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x31, 0x30, 0x30, 0x36, 0x31, 0x36, 0x31, 0x32, 0x30, 0x31, 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x82, 0x01, 0xa2, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x8f, 0x00, 0x30, 0x82, 0x01, 0x8a, 0x02, 0x82, 0x01, 0x81, 0x00, 0xc1, 0x22, 0xa7, 0x47, 0x5b, 0xa2, 0xab, 0x83, 0x59, 0x2b, 0x72, 0x2c, 0x2e, 0xed, 0x01, 0x27, 0xc5, 0x74, 0x59, 0x92, 0x7e, 0xa3, 0x47, 0xb4, 0x0b, 0xfc, 0xa1, 0xf0, 0xdc, 0x71, 0x67, 0x58, 0x8d, 0x73, 0xf0, 0xfe, 0x83, 0xc1, 0x8f, 0xc7, 0x82, 0xf2, 0x76, 0xb1, 0x48, 0x52, 0x92, 0x49, 0xbe, 0x23, 0xac, 0x66, 0x46, 0x31, 0xa7, 0xa4, 0x2c, 0x8b, 0x60, 0xda, 0xcc, 0x6a, 0xdb, 0xd6, 0xe8, 0x46, 0xfd, 0x4a, 0x32, 0x67, 0x8c, 0xf7, 0x6e, 0xf5, 0xcb, 0xf2, 0x57, 0x1a, 0xaf, 0x02, 0xe5, 0x7d, 0xe1, 0x6c, 0xab, 0x35, 0x5a, 0x41, 0xda, 0x8f, 0xf2, 0x2b, 0x8b, 0x46, 0xa3, 0x44, 0xa6, 0xcf, 0x2d, 0xcb, 0x06, 0x59, 0x04, 0xac, 0xe4, 0xd5, 0x9b, 0xa0, 0x11, 0x2c, 0x8e, 0x33, 0x9a, 0x1a, 0xee, 0xb9, 0x0e, 0x3d, 0xaf, 0x25, 0x2d, 0xea, 0x75, 0x61, 0xd1, 0xc1, 0x76, 0xc4, 0x6a, 0xf6, 0x7d, 0x55, 0x2f, 0xc5, 0x14, 0x86, 0x35, 0xd5, 0x6f, 0xf3, 0x8b, 0x2f, 0x94, 0x75, 0x92, 0xec, 0x11, 0x2a, 0xe7, 0x75, 0xea, 0xf0, 0x1d, 0x51, 0xdf, 0x91, 0xfa, 0x5d, 0x10, 0xb8, 0xff, 0xdc, 0x39, 0x20, 0x9b, 0xb3, 0x48, 0xe4, 0xc2, 0x0b, 0x3c, 0x83, 0x48, 0xaf, 0x74, 0xbf, 0xc9, 0xf8, 0x3a, 0x6e, 0x77, 0x1d, 0xb3, 0xf0, 0x35, 0x71, 0xaf, 0x60, 0x5c, 0xb9, 0x38, 0x22, 0x57, 0xe1, 0x28, 0xb9, 0x3e, 0xa9, 0xab, 0x35, 0xc9, 0x61, 0x3e, 0xfd, 0x73, 0x08, 0xf4, 0x1e, 0x20, 0xdb, 0xf3, 0xe0, 0x6c, 0x08, 0xae, 0xd3, 0x66, 0x20, 0x4b, 0xf6, 0x16, 0x83, 0x2e, 0x36, 0x4b, 0xee, 0x96, 0xa4, 0xbc, 0x12, 0x98, 0x63, 0x22, 0xc9, 0x00, 0x2b, 0x8a, 0x9a, 0x20, 0x79, 0xa6, 0x7a, 0x74, 0x34, 0x41, 0x31, 0x92, 0x6b, 0xb7, 0xc3, 0xf3, 0x92, 0x16, 0x53, 0xbd, 0xaa, 0x7b, 0xd7, 0x8f, 0x10, 0xf8, 0x78, 0x84, 0xec, 0x5a, 0x6a, 0x25, 0x25, 0xaa, 0x8b, 0xa9, 0x95, 0x02, 0xa1, 0x3f, 0x04, 0xb2, 0xd5, 0x08, 0x36, 0xda, 0x66, 0x0b, 0xff, 0xf1, 0xc1, 0xa0, 0x9a, 0xaf, 0x58, 0x3f, 0x5f, 0xa4, 0xf4, 0x78, 0x72, 0xd6, 0x17, 0xa6, 0xc6, 0x71, 0x58, 0x1e, 0x53, 0x6a, 0x56, 0x64, 0xb8, 0xf9, 0x0d, 0xc0, 0x17, 0xbb, 0x37, 0x49, 0xf0, 0x39, 0x89, 0x76, 0x8a, 0xcf, 0xf9, 0x96, 0x7d, 0x22, 0x33, 0xa9, 0x17, 0x40, 0xac, 0x44, 0xd0, 0x05, 0xcf, 0x63, 0x70, 0xe3, 0xc5, 0x16, 0xa6, 0x0e, 0xdc, 0xfe, 0xe4, 0x89, 0xeb, 0x14, 0x4b, 0xcc, 0x7c, 0x91, 0x17, 0xdf, 0xbb, 0xd6, 0xa1, 0xf8, 0xc1, 0x06, 0x98, 0x55, 0xb1, 0x4f, 0xde, 0x07, 0xbb, 0x5a, 0x79, 0x10, 0x3e, 0x48, 0xef, 0xa4, 0xd9, 0x7a, 0xf9, 0x63, 0x4e, 0x88, 0x8c, 0x21, 0x63, 0x33, 0x29, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x4f, 0x21, 0x33, 0x2c, 0xdf, 0x8c, 0x56, 0x37, 0xf8, 0x70, 0xa6, 0x5a, 0x82, 0x5e, 0x0d, 0xb4, 0x0a, 0x94, 0x95, 0x3f, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4f, 0x21, 0x33, 0x2c, 0xdf, 0x8c, 0x56, 0x37, 0xf8, 0x70, 0xa6, 0x5a, 0x82, 0x5e, 0x0d, 0xb4, 0x0a, 0x94, 0x95, 0x3f, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x81, 0x00, 0x63, 0xcc, 0x6f, 0x61, 0xd6, 0xb8, 0x14, 0x77, 0xe8, 0x0a, 0x4a, 0x05, 0x50, 0x9c, 0xcc, 0x74, 0x8f, 0x50, 0x5f, 0x1d, 0xdb, 0x02, 0xa7, 0x47, 0x04, 0xf9, 0x82, 0x00, 0x9b, 0x46, 0x4a, 0x11, 0x21, 0xe8, 0x7f, 0x0c, 0x74, 0xe9, 0x51, 0xa8, 0x86, 0x99, 0x3a, 0x60, 0x0c, 0x22, 0xa2, 0xb5, 0x04, 0x20, 0x4a, 0xe3, 0xf6, 0x8c, 0x8d, 0x27, 0x3b, 0xff, 0x50, 0xac, 0x27, 0x38, 0xbc, 0x24, 0x56, 0x41, 0x48, 0xe4, 0xf8, 0x85, 0x67, 0x24, 0x92, 0xcb, 0xb9, 0xc3, 0x04, 0x97, 0x6b, 0xfc, 0xd2, 0x54, 0xb8, 0x61, 0x8a, 0x87, 0xde, 0x3c, 0x84, 0xd9, 0x3f, 0xcf, 0x58, 0xba, 0xad, 0x01, 0x30, 0x0b, 0x26, 0x2b, 0xc6, 0x36, 0x5d, 0x45, 0x00, 0x45, 0x42, 0x79, 0x52, 0x93, 0xe0, 0x19, 0x4a, 0x24, 0xe2, 0xfe, 0x0c, 0x9c, 0xf4, 0xbc, 0xb3, 0xd3, 0x9e, 0xe8, 0xf6, 0x72, 0xa4, 0xa8, 0x72, 0xf8, 0xd9, 0x18, 0xd0, 0x07, 0x63, 0x15, 0xac, 0xf1, 0x0e, 0x76, 0x0a, 0xcc, 0xf1, 0x2d, 0x91, 0xe7, 0x26, 0x11, 0x4a, 0x91, 0x56, 0x79, 0x1c, 0x86, 0xcf, 0x00, 0xcb, 0x19, 0xea, 0x2e, 0xd5, 0x7d, 0x01, 0xee, 0x67, 0x8a, 0xb7, 0x4c, 0x71, 0x22, 0x63, 0xf4, 0xed, 0xf8, 0x57, 0x93, 0x70, 0xd9, 0xff, 0x1a, 0x45, 0x11, 0x90, 0xce, 0x2f, 0xe7, 0x07, 0xda, 0x31, 0xb6, 0xc1, 0xb6, 0xb0, 0x1b, 0x41, 0x22, 0x92, 0x17, 0xbb, 0x3a, 0x91, 0x80, 0x63, 0x19, 0x72, 0x55, 0xd4, 0x8c, 0x5c, 0xd9, 0x5f, 0x27, 0xb0, 0x5f, 0x3b, 0x4b, 0x47, 0xb7, 0x8f, 0x4f, 0x1d, 0x17, 0xbb, 0x45, 0xab, 0x2a, 0xac, 0xf3, 0x05, 0x19, 0xda, 0xbb, 0x18, 0x10, 0xff, 0xc2, 0x37, 0xd1, 0x3e, 0x51, 0xf7, 0xfc, 0x72, 0x23, 0xd4, 0xd5, 0x7f, 0xdb, 0xfd, 0x48, 0x0f, 0xdf, 0x59, 0x63, 0x62, 0xa2, 0xcf, 0xd9, 0x72, 0xfe, 0xd2, 0xca, 0x41, 0xe4, 0x03, 0x83, 0x97, 0xff, 0x40, 0xd0, 0x5b, 0xb2, 0x84, 0x71, 0x8d, 0xdc, 0x24, 0x20, 0x1d, 0x13, 0xd7, 0x6a, 0x5f, 0xd3, 0xcc, 0xbf, 0x9b, 0xa6, 0xc8, 0xb0, 0x8b, 0xed, 0x61, 0xf0, 0x9f, 0xa4, 0xd1, 0x17, 0x56, 0x15, 0x7a, 0x26, 0xc2, 0xee, 0x22, 0xe7, 0x66, 0x85, 0xcc, 0xe5, 0x5f, 0xd0, 0x84, 0x0b, 0x19, 0x26, 0xfc, 0xc2, 0x1d, 0x7e, 0x3d, 0xe1, 0xac, 0xbd, 0xce, 0xd4, 0x8d, 0x0a, 0xd2, 0xab, 0x88, 0xf1, 0x06, 0x88, 0xb6, 0xc9, 0x16, 0x6d, 0xe3, 0x7f, 0x19, 0x1b, 0xaf, 0xcf, 0xef, 0xac, 0x45, 0xa8, 0x92, 0x90, 0x52, 0xae, 0x75, 0x2f, 0x8a, 0x84, 0xa0, 0x7b, 0xf1, 0x18, 0x5c, 0x43, 0xa3, 0x63, 0xaf, 0xd4, 0x75, 0x5a, 0xd1, 0xb1, 0x01, 0x4c, 0x88, 0x36, 0x9f, 0xd2, 0xd6, 0xee, 0x47, 0x0a, 0x41, 0x46, 0x61, 0x40 }; unsigned int pk_3k_esl_len = 1173; libstb-secvar-main/test/data/pk_4k_auth.h000066400000000000000000000530311470177641100206440ustar00rootroot00000000000000unsigned char pk_4k_auth[] = { 0xe4, 0x07, 0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x08, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x08, 0x2a, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x08, 0x1b, 0x30, 0x82, 0x08, 0x17, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x05, 0x69, 0x30, 0x82, 0x05, 0x65, 0x30, 0x82, 0x03, 0x4d, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x2e, 0xfa, 0xc4, 0xc7, 0xb1, 0x50, 0x32, 0x10, 0x46, 0xa4, 0xd8, 0x64, 0xb5, 0x1e, 0xd2, 0x45, 0xb7, 0x67, 0x37, 0x3a, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x39, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x31, 0x31, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x31, 0x30, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x31, 0x31, 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xa6, 0xb7, 0xda, 0x82, 0xb7, 0x9c, 0x7a, 0x90, 0xc4, 0x73, 0x16, 0x95, 0x7a, 0x09, 0x79, 0x47, 0xf5, 0x48, 0x85, 0xfc, 0x01, 0xe2, 0x64, 0xc5, 0xfd, 0xdc, 0xb3, 0xc6, 0x9a, 0x1b, 0x3f, 0xf9, 0xc6, 0x3b, 0xe6, 0x29, 0x8e, 0x10, 0x3e, 0xf8, 0x93, 0xfc, 0xd3, 0x6f, 0xa7, 0x7c, 0x93, 0x40, 0x07, 0x4d, 0xbc, 0x51, 0xd4, 0xe5, 0xa3, 0x1f, 0x9c, 0x72, 0xdf, 0x79, 0xee, 0xec, 0x03, 0xeb, 0xe5, 0x44, 0x11, 0x90, 0x5a, 0xfb, 0x23, 0x8e, 0x19, 0x09, 0xeb, 0x68, 0x29, 0xf4, 0x74, 0xcb, 0xcf, 0xd2, 0xe5, 0x90, 0x34, 0xcb, 0xb5, 0xbf, 0xf3, 0x74, 0xb0, 0xf5, 0xbe, 0x19, 0x5c, 0xac, 0x96, 0x3b, 0xa6, 0xd6, 0x4e, 0x6f, 0x30, 0x36, 0x80, 0x14, 0x7a, 0x29, 0xb3, 0x55, 0x94, 0x2d, 0xa0, 0x4b, 0x1c, 0x33, 0xd1, 0x41, 0x29, 0xe2, 0x51, 0x7f, 0x31, 0x0a, 0x11, 0xef, 0xdb, 0x3d, 0xc2, 0x1b, 0x33, 0x67, 0x6e, 0xd5, 0x90, 0xc7, 0xf7, 0x1b, 0xac, 0x98, 0xc0, 0xd9, 0x33, 0x66, 0x8c, 0x56, 0xa2, 0x0d, 0x79, 0xfa, 0x0d, 0xc9, 0x89, 0x10, 0xa7, 0xea, 0x94, 0xcc, 0x3f, 0xdc, 0xd3, 0xaf, 0xbd, 0xe5, 0x57, 0x33, 0xd6, 0x64, 0xb4, 0x23, 0x61, 0x7d, 0xa4, 0x7e, 0x4c, 0x7d, 0xa0, 0x89, 0xeb, 0x4f, 0x55, 0x02, 0x0c, 0xf4, 0xfa, 0x84, 0xd1, 0x5d, 0x2b, 0x5f, 0x25, 0xbb, 0xbb, 0xb7, 0xaa, 0x76, 0xbc, 0xa1, 0x89, 0xc2, 0xc4, 0xd0, 0xaf, 0x3d, 0xbd, 0x34, 0x5a, 0xe6, 0x09, 0x0d, 0x6e, 0xea, 0x85, 0x11, 0x91, 0xec, 0xad, 0xca, 0xf8, 0x86, 0x0e, 0x87, 0xca, 0x75, 0xc3, 0xb6, 0xcf, 0x8c, 0x4f, 0x3b, 0x98, 0x69, 0x9d, 0x66, 0xd3, 0x8a, 0xfc, 0xf1, 0xc0, 0x09, 0xd6, 0x46, 0xf4, 0x0e, 0x68, 0x2c, 0x77, 0xb4, 0xc8, 0x06, 0x19, 0x94, 0x70, 0x6b, 0x18, 0x30, 0xfc, 0x55, 0xa2, 0x53, 0x7e, 0x81, 0x58, 0xc8, 0x77, 0xfb, 0x57, 0x2d, 0x71, 0xc3, 0x37, 0x3a, 0x50, 0x07, 0xe1, 0x44, 0xab, 0x4d, 0x76, 0x06, 0x81, 0xa3, 0xd6, 0x5e, 0x0e, 0xc3, 0x30, 0x08, 0x70, 0x89, 0xd4, 0x96, 0x45, 0x43, 0x8c, 0x49, 0x93, 0x71, 0x57, 0xde, 0xbe, 0x9b, 0x3a, 0x8b, 0xde, 0x3d, 0xb9, 0xdb, 0xb2, 0xaa, 0x4e, 0x0f, 0x7d, 0xb6, 0x7e, 0xf8, 0x63, 0xd0, 0x1d, 0x1e, 0x41, 0xa2, 0x4a, 0x5d, 0xc0, 0x57, 0x05, 0x33, 0x34, 0x84, 0xa1, 0x62, 0x77, 0x99, 0x5a, 0x37, 0x90, 0x03, 0x1f, 0x5f, 0xc0, 0x87, 0xf5, 0x6d, 0xce, 0xf0, 0x61, 0x6e, 0x89, 0xca, 0xd4, 0xfc, 0xe2, 0xce, 0x59, 0x1b, 0x34, 0x70, 0xf6, 0xd3, 0x2c, 0x6f, 0xf5, 0x71, 0xdc, 0x96, 0x6d, 0xf5, 0xe4, 0x80, 0x19, 0x56, 0x5d, 0xbc, 0x7a, 0x92, 0x45, 0x94, 0xab, 0x76, 0x98, 0x28, 0x45, 0x79, 0x3b, 0xcf, 0x7d, 0x7c, 0x7d, 0x82, 0xf5, 0x67, 0x77, 0x3f, 0xd8, 0xc1, 0x87, 0x1e, 0x55, 0x73, 0x13, 0x71, 0x36, 0x43, 0x21, 0xb1, 0x76, 0x98, 0x04, 0x3c, 0xf6, 0x2a, 0x03, 0x62, 0xef, 0x09, 0x98, 0x85, 0x25, 0x5f, 0xc5, 0xf3, 0x68, 0x47, 0xd9, 0x01, 0xa0, 0x22, 0x48, 0x31, 0xc2, 0xb5, 0x62, 0x01, 0x5a, 0x95, 0xa9, 0x1c, 0x99, 0xb5, 0x82, 0x79, 0x6b, 0xbf, 0x83, 0xe8, 0x9e, 0x3a, 0xf2, 0xd3, 0x9a, 0xac, 0x67, 0xf1, 0xc8, 0x6f, 0xd3, 0xfc, 0x3d, 0x20, 0xc1, 0x67, 0xce, 0xc3, 0xf9, 0x62, 0xf4, 0x99, 0xab, 0x87, 0xb5, 0x29, 0x82, 0xab, 0x4a, 0x14, 0xe0, 0x27, 0x21, 0x71, 0x0b, 0xf2, 0xcc, 0x47, 0x94, 0x1a, 0xba, 0x57, 0x0a, 0x07, 0x72, 0x14, 0xe7, 0xdd, 0x1c, 0x3c, 0x37, 0x3e, 0xb2, 0xa3, 0x05, 0xd9, 0x08, 0xd4, 0x75, 0xdd, 0xa0, 0xf8, 0x54, 0x62, 0xd2, 0x6d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x31, 0x8d, 0xc1, 0x8c, 0x8e, 0x69, 0x84, 0xa2, 0xed, 0x71, 0x79, 0x0e, 0x9c, 0xc5, 0xf3, 0xc1, 0xc1, 0x5d, 0xf1, 0x52, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x31, 0x8d, 0xc1, 0x8c, 0x8e, 0x69, 0x84, 0xa2, 0xed, 0x71, 0x79, 0x0e, 0x9c, 0xc5, 0xf3, 0xc1, 0xc1, 0x5d, 0xf1, 0x52, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x96, 0xee, 0xa7, 0x85, 0x54, 0x65, 0xc3, 0x0f, 0x2f, 0x24, 0x1b, 0xfb, 0x07, 0x55, 0xe6, 0x0a, 0xd4, 0xdf, 0xd4, 0x1c, 0xc2, 0xd4, 0xe8, 0x36, 0xb0, 0x4e, 0x7b, 0x5a, 0x5b, 0x68, 0x24, 0xbb, 0x22, 0x33, 0x19, 0x56, 0x46, 0x5b, 0x9e, 0x29, 0x90, 0xbd, 0x2a, 0x6b, 0x88, 0x3f, 0xbf, 0xf4, 0x40, 0xc1, 0xe0, 0xd2, 0xd8, 0xd0, 0xda, 0x69, 0x88, 0xc0, 0x14, 0xe2, 0x54, 0x67, 0xfc, 0x96, 0xbe, 0xb9, 0x54, 0xdf, 0x92, 0x4a, 0xfe, 0x8b, 0xe9, 0xb7, 0x36, 0xb2, 0xc5, 0x9a, 0xf5, 0x11, 0x98, 0xd4, 0x40, 0x28, 0xb7, 0x1a, 0x7d, 0xb4, 0x33, 0xf9, 0x38, 0xd0, 0x87, 0x7e, 0xb9, 0x68, 0x88, 0x69, 0x4b, 0xb0, 0x49, 0x72, 0x6a, 0x9e, 0x52, 0xc1, 0xdd, 0x02, 0xad, 0x09, 0x9a, 0x55, 0xd3, 0x0a, 0x32, 0x46, 0xe1, 0x03, 0x3b, 0x9a, 0xaf, 0x0b, 0xd5, 0x4d, 0x91, 0xe9, 0xd7, 0x65, 0x91, 0x90, 0x49, 0x5a, 0xc4, 0x72, 0x4e, 0xfe, 0xa1, 0xc8, 0x04, 0x12, 0x2e, 0x21, 0x56, 0xe5, 0xe3, 0xf7, 0xb8, 0xa5, 0x06, 0x97, 0x32, 0x3c, 0xb7, 0xb4, 0xfa, 0xf8, 0xb7, 0xc3, 0x5b, 0x93, 0x06, 0xd8, 0x56, 0x0e, 0x8f, 0xca, 0x97, 0x50, 0xc6, 0x3d, 0xbc, 0xb6, 0x3e, 0x07, 0xc1, 0xf3, 0xda, 0xd1, 0x8d, 0xeb, 0xec, 0xab, 0x1e, 0x24, 0xba, 0x8a, 0x4c, 0x59, 0xa4, 0x8b, 0xc8, 0x01, 0xa9, 0x49, 0xaa, 0x4e, 0x93, 0xba, 0x5e, 0xaf, 0xfe, 0x02, 0xce, 0xbd, 0xc3, 0x91, 0x24, 0x5f, 0xbd, 0x48, 0x80, 0x86, 0x64, 0x40, 0xf6, 0x55, 0xa7, 0x1b, 0x1d, 0xe5, 0x30, 0x22, 0xf9, 0x31, 0x79, 0xcd, 0x0f, 0x23, 0x36, 0xb0, 0x8b, 0x2d, 0x44, 0xb1, 0xad, 0xaa, 0x3b, 0x92, 0xd0, 0x15, 0x72, 0x80, 0x23, 0x1f, 0xa6, 0x20, 0x50, 0x3b, 0x8c, 0x69, 0xbf, 0xe7, 0x05, 0x3c, 0x67, 0xda, 0xf7, 0x42, 0x68, 0x3d, 0xe5, 0x82, 0xac, 0x6d, 0xa6, 0x79, 0x8e, 0xbf, 0x46, 0x2d, 0x74, 0xa5, 0x0f, 0x26, 0xe8, 0x87, 0x95, 0xf4, 0x13, 0x92, 0xbf, 0x54, 0xfd, 0x23, 0xb6, 0x43, 0x10, 0xe5, 0xe6, 0xa7, 0x1f, 0x44, 0x4f, 0x41, 0x25, 0xe3, 0x56, 0xb0, 0xe1, 0xc4, 0x5a, 0xf5, 0xaa, 0x64, 0x9e, 0xd4, 0xa0, 0xff, 0x65, 0x1b, 0x3e, 0x8e, 0x8e, 0x6d, 0x84, 0x96, 0x2e, 0xf7, 0xe2, 0xe8, 0xad, 0xd2, 0x7c, 0x1e, 0xb9, 0xed, 0x41, 0x04, 0xd3, 0x0b, 0xae, 0xc6, 0xc3, 0x8c, 0x25, 0x16, 0x4b, 0x67, 0x0a, 0x5c, 0x70, 0xfc, 0xbf, 0x5b, 0xa5, 0xaf, 0x9c, 0xc8, 0xb6, 0x9a, 0x79, 0x14, 0xa5, 0x99, 0xc9, 0xf7, 0x3c, 0x75, 0xab, 0xd1, 0x5a, 0x78, 0xf9, 0x07, 0x38, 0xc0, 0x5e, 0xc5, 0xc4, 0x5e, 0x34, 0x4c, 0xb9, 0xd9, 0xe5, 0x69, 0xb9, 0xd2, 0x86, 0xb1, 0x33, 0x6b, 0x67, 0xf5, 0x24, 0x5c, 0x2d, 0x09, 0x32, 0x33, 0x99, 0x30, 0x48, 0x93, 0x26, 0xed, 0xb4, 0x5e, 0x7e, 0xc1, 0x8a, 0x3f, 0xb4, 0xc5, 0xd0, 0x7f, 0xcd, 0x6e, 0x4a, 0x02, 0x7f, 0xc8, 0x84, 0x16, 0x22, 0x0e, 0x2b, 0x1c, 0x6d, 0x34, 0x5e, 0x03, 0x77, 0xf6, 0x49, 0x71, 0x95, 0xb7, 0x25, 0xc5, 0xaa, 0x82, 0xb9, 0xa6, 0x0d, 0xa5, 0x5e, 0x97, 0xff, 0x20, 0x84, 0x14, 0x82, 0xda, 0x7b, 0x9a, 0xf1, 0x2c, 0x50, 0xf5, 0xfd, 0x21, 0x50, 0x74, 0x4a, 0x54, 0xac, 0xea, 0xd0, 0x22, 0xf7, 0x83, 0xf0, 0xf7, 0xa4, 0xf1, 0x94, 0x61, 0xa8, 0x29, 0xb7, 0x91, 0xc3, 0x55, 0x61, 0xa8, 0x96, 0xc4, 0x12, 0x19, 0x85, 0x5e, 0x0a, 0x7f, 0xda, 0xf8, 0x3b, 0x77, 0x14, 0x90, 0xef, 0x85, 0x3d, 0xee, 0x94, 0xe6, 0x03, 0x81, 0xde, 0x09, 0x2c, 0x0f, 0xc5, 0x8b, 0x31, 0xba, 0xad, 0x68, 0x80, 0x2c, 0x58, 0xbd, 0x31, 0x82, 0x02, 0x85, 0x30, 0x82, 0x02, 0x81, 0x02, 0x01, 0x01, 0x30, 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x02, 0x14, 0x2e, 0xfa, 0xc4, 0xc7, 0xb1, 0x50, 0x32, 0x10, 0x46, 0xa4, 0xd8, 0x64, 0xb5, 0x1e, 0xd2, 0x45, 0xb7, 0x67, 0x37, 0x3a, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x02, 0x00, 0x32, 0x59, 0x44, 0x77, 0xa5, 0x2d, 0xaa, 0x7b, 0x6b, 0x05, 0x2d, 0xda, 0x0b, 0x3f, 0x9e, 0x9a, 0x2c, 0x3c, 0x45, 0x29, 0xc2, 0x40, 0xa3, 0x3f, 0x76, 0x7d, 0x15, 0x5e, 0xd1, 0xd1, 0x08, 0xd3, 0x35, 0xd7, 0x9f, 0x9d, 0x10, 0xca, 0x2e, 0xdd, 0x9d, 0x1c, 0x2b, 0x74, 0x80, 0xbc, 0x4b, 0x8e, 0x63, 0xe6, 0x72, 0x19, 0xda, 0x86, 0xe9, 0x2d, 0xb4, 0x82, 0x46, 0x3e, 0x37, 0xbb, 0xf9, 0x81, 0xe9, 0x09, 0x02, 0x0c, 0xb0, 0xd2, 0x23, 0xe7, 0x6e, 0x80, 0xf1, 0x2f, 0x50, 0x5a, 0xe4, 0xde, 0x85, 0x53, 0xb3, 0x5b, 0x69, 0xe4, 0xd8, 0xe1, 0xbc, 0x45, 0x80, 0xa5, 0x1e, 0x66, 0xb7, 0x08, 0x44, 0xe2, 0xe8, 0x3e, 0xe9, 0x46, 0x0f, 0x0c, 0x1d, 0xb8, 0xee, 0xab, 0xee, 0x7e, 0x58, 0x46, 0xf7, 0xbc, 0xf0, 0xea, 0xcd, 0x33, 0xdd, 0x11, 0xfe, 0x7f, 0x80, 0xd3, 0xeb, 0x42, 0xa6, 0x62, 0xaa, 0x62, 0x0d, 0xea, 0x7d, 0x3b, 0xb6, 0x72, 0x7e, 0xe4, 0x37, 0x54, 0x8d, 0x4a, 0x74, 0x6b, 0x8b, 0x0f, 0xa3, 0x91, 0xd9, 0xfd, 0xd6, 0x7e, 0xfd, 0xde, 0xa1, 0x62, 0xba, 0xdf, 0x45, 0x0d, 0xa4, 0xc6, 0x50, 0xdf, 0x93, 0x14, 0x69, 0xed, 0x4d, 0x19, 0x80, 0x06, 0x57, 0xa2, 0xa6, 0x9c, 0x58, 0x22, 0x0f, 0x8d, 0xca, 0x27, 0x14, 0x9c, 0xe9, 0x7f, 0x34, 0xb6, 0x20, 0x6b, 0x0d, 0x9e, 0x4d, 0x7f, 0x7f, 0xa3, 0x71, 0x6f, 0xa1, 0xbb, 0x2f, 0x8a, 0xf6, 0x4e, 0x7f, 0x0b, 0xed, 0xeb, 0xa6, 0x09, 0x74, 0xd4, 0x3f, 0x63, 0xcd, 0xa9, 0xc5, 0x31, 0x86, 0x9c, 0x91, 0xfe, 0xbc, 0xf8, 0x28, 0x0c, 0xd8, 0xf9, 0xc8, 0xa2, 0x1c, 0xc7, 0x18, 0x74, 0x12, 0x9d, 0x4b, 0x53, 0x3d, 0x5e, 0xfd, 0x0d, 0xd7, 0x3f, 0x78, 0x89, 0xb9, 0x17, 0xd6, 0x50, 0x6d, 0xf9, 0x90, 0x25, 0x58, 0x99, 0x33, 0x9f, 0xa6, 0xdb, 0x30, 0xec, 0xaf, 0xf6, 0x49, 0xea, 0x96, 0x9b, 0xdf, 0xa5, 0xa9, 0x70, 0x10, 0x8a, 0x42, 0x05, 0x84, 0x7e, 0x09, 0xa8, 0xa6, 0x48, 0x5b, 0xaf, 0x81, 0xa6, 0x29, 0xf9, 0x29, 0x00, 0x35, 0x9e, 0x99, 0xa8, 0xcb, 0xd4, 0x39, 0x9e, 0xa4, 0x2f, 0xc9, 0x62, 0x58, 0xbc, 0xd5, 0x25, 0xdf, 0x72, 0x6c, 0x4f, 0x6f, 0xd1, 0x52, 0x88, 0xe3, 0x21, 0x4d, 0x18, 0xdf, 0xa8, 0xf6, 0x99, 0xf2, 0xfa, 0xb6, 0x2a, 0xeb, 0x3d, 0x51, 0x65, 0x1c, 0xcf, 0xbb, 0x13, 0x2f, 0xc9, 0x98, 0x0a, 0x2b, 0x43, 0x97, 0x2f, 0xca, 0x85, 0xce, 0xff, 0x45, 0xd6, 0xb1, 0x30, 0x6f, 0x3d, 0x18, 0xf0, 0x28, 0x7b, 0x4f, 0xe1, 0x73, 0xca, 0x1a, 0xe0, 0x37, 0xd3, 0x3b, 0xe5, 0x7a, 0x15, 0xf4, 0x92, 0xb7, 0xf2, 0x7e, 0x36, 0x2b, 0xa7, 0xac, 0xbb, 0x13, 0x23, 0x4f, 0x56, 0xb8, 0x2b, 0x4e, 0xc0, 0x72, 0x7e, 0xee, 0x24, 0x12, 0x2f, 0x97, 0x9d, 0x45, 0xe4, 0xb1, 0x81, 0x41, 0x05, 0x28, 0xc1, 0x5a, 0xae, 0x44, 0xc5, 0x26, 0xe4, 0x75, 0x23, 0x77, 0x83, 0xc9, 0xdb, 0x48, 0x9e, 0x65, 0x07, 0x58, 0x4b, 0xef, 0x60, 0xeb, 0x7b, 0xfa, 0x37, 0x8f, 0xb0, 0xa0, 0xf0, 0x2b, 0xa2, 0xed, 0x67, 0xa0, 0xb9, 0x03, 0x9f, 0x84, 0x2d, 0xb8, 0x4b, 0x06, 0x3e, 0xb6, 0x39, 0xf3, 0x44, 0x69, 0x5d, 0xe3, 0x6c, 0x93, 0x75, 0xe7, 0xef, 0x20, 0x7a, 0xdb, 0xdc, 0x11, 0xca, 0xed, 0x9d, 0x2d, 0x24, 0xa0, 0x3f, 0xe6, 0x26, 0x97, 0xe3, 0x8d, 0x64, 0x03, 0xfe, 0x10, 0xce, 0xf7, 0xb9, 0xed, 0xeb, 0xfb, 0x35, 0x2e, 0xcc, 0xe9, 0x84, 0x74, 0x2b, 0xc4, 0x48, 0x61, 0x44, 0x57, 0x7f, 0xda, 0x21, 0x6e, 0xdc, 0x8c, 0x50, 0x2a, 0x2d, 0xcb, 0xa9, 0xdb, 0x7f, 0xdf, 0x80, 0x9d, 0x4e, 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72, 0x95, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x05, 0x65, 0x30, 0x82, 0x03, 0x4d, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x2e, 0xfa, 0xc4, 0xc7, 0xb1, 0x50, 0x32, 0x10, 0x46, 0xa4, 0xd8, 0x64, 0xb5, 0x1e, 0xd2, 0x45, 0xb7, 0x67, 0x37, 0x3a, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x39, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x31, 0x31, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x31, 0x30, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x31, 0x31, 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xa6, 0xb7, 0xda, 0x82, 0xb7, 0x9c, 0x7a, 0x90, 0xc4, 0x73, 0x16, 0x95, 0x7a, 0x09, 0x79, 0x47, 0xf5, 0x48, 0x85, 0xfc, 0x01, 0xe2, 0x64, 0xc5, 0xfd, 0xdc, 0xb3, 0xc6, 0x9a, 0x1b, 0x3f, 0xf9, 0xc6, 0x3b, 0xe6, 0x29, 0x8e, 0x10, 0x3e, 0xf8, 0x93, 0xfc, 0xd3, 0x6f, 0xa7, 0x7c, 0x93, 0x40, 0x07, 0x4d, 0xbc, 0x51, 0xd4, 0xe5, 0xa3, 0x1f, 0x9c, 0x72, 0xdf, 0x79, 0xee, 0xec, 0x03, 0xeb, 0xe5, 0x44, 0x11, 0x90, 0x5a, 0xfb, 0x23, 0x8e, 0x19, 0x09, 0xeb, 0x68, 0x29, 0xf4, 0x74, 0xcb, 0xcf, 0xd2, 0xe5, 0x90, 0x34, 0xcb, 0xb5, 0xbf, 0xf3, 0x74, 0xb0, 0xf5, 0xbe, 0x19, 0x5c, 0xac, 0x96, 0x3b, 0xa6, 0xd6, 0x4e, 0x6f, 0x30, 0x36, 0x80, 0x14, 0x7a, 0x29, 0xb3, 0x55, 0x94, 0x2d, 0xa0, 0x4b, 0x1c, 0x33, 0xd1, 0x41, 0x29, 0xe2, 0x51, 0x7f, 0x31, 0x0a, 0x11, 0xef, 0xdb, 0x3d, 0xc2, 0x1b, 0x33, 0x67, 0x6e, 0xd5, 0x90, 0xc7, 0xf7, 0x1b, 0xac, 0x98, 0xc0, 0xd9, 0x33, 0x66, 0x8c, 0x56, 0xa2, 0x0d, 0x79, 0xfa, 0x0d, 0xc9, 0x89, 0x10, 0xa7, 0xea, 0x94, 0xcc, 0x3f, 0xdc, 0xd3, 0xaf, 0xbd, 0xe5, 0x57, 0x33, 0xd6, 0x64, 0xb4, 0x23, 0x61, 0x7d, 0xa4, 0x7e, 0x4c, 0x7d, 0xa0, 0x89, 0xeb, 0x4f, 0x55, 0x02, 0x0c, 0xf4, 0xfa, 0x84, 0xd1, 0x5d, 0x2b, 0x5f, 0x25, 0xbb, 0xbb, 0xb7, 0xaa, 0x76, 0xbc, 0xa1, 0x89, 0xc2, 0xc4, 0xd0, 0xaf, 0x3d, 0xbd, 0x34, 0x5a, 0xe6, 0x09, 0x0d, 0x6e, 0xea, 0x85, 0x11, 0x91, 0xec, 0xad, 0xca, 0xf8, 0x86, 0x0e, 0x87, 0xca, 0x75, 0xc3, 0xb6, 0xcf, 0x8c, 0x4f, 0x3b, 0x98, 0x69, 0x9d, 0x66, 0xd3, 0x8a, 0xfc, 0xf1, 0xc0, 0x09, 0xd6, 0x46, 0xf4, 0x0e, 0x68, 0x2c, 0x77, 0xb4, 0xc8, 0x06, 0x19, 0x94, 0x70, 0x6b, 0x18, 0x30, 0xfc, 0x55, 0xa2, 0x53, 0x7e, 0x81, 0x58, 0xc8, 0x77, 0xfb, 0x57, 0x2d, 0x71, 0xc3, 0x37, 0x3a, 0x50, 0x07, 0xe1, 0x44, 0xab, 0x4d, 0x76, 0x06, 0x81, 0xa3, 0xd6, 0x5e, 0x0e, 0xc3, 0x30, 0x08, 0x70, 0x89, 0xd4, 0x96, 0x45, 0x43, 0x8c, 0x49, 0x93, 0x71, 0x57, 0xde, 0xbe, 0x9b, 0x3a, 0x8b, 0xde, 0x3d, 0xb9, 0xdb, 0xb2, 0xaa, 0x4e, 0x0f, 0x7d, 0xb6, 0x7e, 0xf8, 0x63, 0xd0, 0x1d, 0x1e, 0x41, 0xa2, 0x4a, 0x5d, 0xc0, 0x57, 0x05, 0x33, 0x34, 0x84, 0xa1, 0x62, 0x77, 0x99, 0x5a, 0x37, 0x90, 0x03, 0x1f, 0x5f, 0xc0, 0x87, 0xf5, 0x6d, 0xce, 0xf0, 0x61, 0x6e, 0x89, 0xca, 0xd4, 0xfc, 0xe2, 0xce, 0x59, 0x1b, 0x34, 0x70, 0xf6, 0xd3, 0x2c, 0x6f, 0xf5, 0x71, 0xdc, 0x96, 0x6d, 0xf5, 0xe4, 0x80, 0x19, 0x56, 0x5d, 0xbc, 0x7a, 0x92, 0x45, 0x94, 0xab, 0x76, 0x98, 0x28, 0x45, 0x79, 0x3b, 0xcf, 0x7d, 0x7c, 0x7d, 0x82, 0xf5, 0x67, 0x77, 0x3f, 0xd8, 0xc1, 0x87, 0x1e, 0x55, 0x73, 0x13, 0x71, 0x36, 0x43, 0x21, 0xb1, 0x76, 0x98, 0x04, 0x3c, 0xf6, 0x2a, 0x03, 0x62, 0xef, 0x09, 0x98, 0x85, 0x25, 0x5f, 0xc5, 0xf3, 0x68, 0x47, 0xd9, 0x01, 0xa0, 0x22, 0x48, 0x31, 0xc2, 0xb5, 0x62, 0x01, 0x5a, 0x95, 0xa9, 0x1c, 0x99, 0xb5, 0x82, 0x79, 0x6b, 0xbf, 0x83, 0xe8, 0x9e, 0x3a, 0xf2, 0xd3, 0x9a, 0xac, 0x67, 0xf1, 0xc8, 0x6f, 0xd3, 0xfc, 0x3d, 0x20, 0xc1, 0x67, 0xce, 0xc3, 0xf9, 0x62, 0xf4, 0x99, 0xab, 0x87, 0xb5, 0x29, 0x82, 0xab, 0x4a, 0x14, 0xe0, 0x27, 0x21, 0x71, 0x0b, 0xf2, 0xcc, 0x47, 0x94, 0x1a, 0xba, 0x57, 0x0a, 0x07, 0x72, 0x14, 0xe7, 0xdd, 0x1c, 0x3c, 0x37, 0x3e, 0xb2, 0xa3, 0x05, 0xd9, 0x08, 0xd4, 0x75, 0xdd, 0xa0, 0xf8, 0x54, 0x62, 0xd2, 0x6d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x31, 0x8d, 0xc1, 0x8c, 0x8e, 0x69, 0x84, 0xa2, 0xed, 0x71, 0x79, 0x0e, 0x9c, 0xc5, 0xf3, 0xc1, 0xc1, 0x5d, 0xf1, 0x52, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x31, 0x8d, 0xc1, 0x8c, 0x8e, 0x69, 0x84, 0xa2, 0xed, 0x71, 0x79, 0x0e, 0x9c, 0xc5, 0xf3, 0xc1, 0xc1, 0x5d, 0xf1, 0x52, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x96, 0xee, 0xa7, 0x85, 0x54, 0x65, 0xc3, 0x0f, 0x2f, 0x24, 0x1b, 0xfb, 0x07, 0x55, 0xe6, 0x0a, 0xd4, 0xdf, 0xd4, 0x1c, 0xc2, 0xd4, 0xe8, 0x36, 0xb0, 0x4e, 0x7b, 0x5a, 0x5b, 0x68, 0x24, 0xbb, 0x22, 0x33, 0x19, 0x56, 0x46, 0x5b, 0x9e, 0x29, 0x90, 0xbd, 0x2a, 0x6b, 0x88, 0x3f, 0xbf, 0xf4, 0x40, 0xc1, 0xe0, 0xd2, 0xd8, 0xd0, 0xda, 0x69, 0x88, 0xc0, 0x14, 0xe2, 0x54, 0x67, 0xfc, 0x96, 0xbe, 0xb9, 0x54, 0xdf, 0x92, 0x4a, 0xfe, 0x8b, 0xe9, 0xb7, 0x36, 0xb2, 0xc5, 0x9a, 0xf5, 0x11, 0x98, 0xd4, 0x40, 0x28, 0xb7, 0x1a, 0x7d, 0xb4, 0x33, 0xf9, 0x38, 0xd0, 0x87, 0x7e, 0xb9, 0x68, 0x88, 0x69, 0x4b, 0xb0, 0x49, 0x72, 0x6a, 0x9e, 0x52, 0xc1, 0xdd, 0x02, 0xad, 0x09, 0x9a, 0x55, 0xd3, 0x0a, 0x32, 0x46, 0xe1, 0x03, 0x3b, 0x9a, 0xaf, 0x0b, 0xd5, 0x4d, 0x91, 0xe9, 0xd7, 0x65, 0x91, 0x90, 0x49, 0x5a, 0xc4, 0x72, 0x4e, 0xfe, 0xa1, 0xc8, 0x04, 0x12, 0x2e, 0x21, 0x56, 0xe5, 0xe3, 0xf7, 0xb8, 0xa5, 0x06, 0x97, 0x32, 0x3c, 0xb7, 0xb4, 0xfa, 0xf8, 0xb7, 0xc3, 0x5b, 0x93, 0x06, 0xd8, 0x56, 0x0e, 0x8f, 0xca, 0x97, 0x50, 0xc6, 0x3d, 0xbc, 0xb6, 0x3e, 0x07, 0xc1, 0xf3, 0xda, 0xd1, 0x8d, 0xeb, 0xec, 0xab, 0x1e, 0x24, 0xba, 0x8a, 0x4c, 0x59, 0xa4, 0x8b, 0xc8, 0x01, 0xa9, 0x49, 0xaa, 0x4e, 0x93, 0xba, 0x5e, 0xaf, 0xfe, 0x02, 0xce, 0xbd, 0xc3, 0x91, 0x24, 0x5f, 0xbd, 0x48, 0x80, 0x86, 0x64, 0x40, 0xf6, 0x55, 0xa7, 0x1b, 0x1d, 0xe5, 0x30, 0x22, 0xf9, 0x31, 0x79, 0xcd, 0x0f, 0x23, 0x36, 0xb0, 0x8b, 0x2d, 0x44, 0xb1, 0xad, 0xaa, 0x3b, 0x92, 0xd0, 0x15, 0x72, 0x80, 0x23, 0x1f, 0xa6, 0x20, 0x50, 0x3b, 0x8c, 0x69, 0xbf, 0xe7, 0x05, 0x3c, 0x67, 0xda, 0xf7, 0x42, 0x68, 0x3d, 0xe5, 0x82, 0xac, 0x6d, 0xa6, 0x79, 0x8e, 0xbf, 0x46, 0x2d, 0x74, 0xa5, 0x0f, 0x26, 0xe8, 0x87, 0x95, 0xf4, 0x13, 0x92, 0xbf, 0x54, 0xfd, 0x23, 0xb6, 0x43, 0x10, 0xe5, 0xe6, 0xa7, 0x1f, 0x44, 0x4f, 0x41, 0x25, 0xe3, 0x56, 0xb0, 0xe1, 0xc4, 0x5a, 0xf5, 0xaa, 0x64, 0x9e, 0xd4, 0xa0, 0xff, 0x65, 0x1b, 0x3e, 0x8e, 0x8e, 0x6d, 0x84, 0x96, 0x2e, 0xf7, 0xe2, 0xe8, 0xad, 0xd2, 0x7c, 0x1e, 0xb9, 0xed, 0x41, 0x04, 0xd3, 0x0b, 0xae, 0xc6, 0xc3, 0x8c, 0x25, 0x16, 0x4b, 0x67, 0x0a, 0x5c, 0x70, 0xfc, 0xbf, 0x5b, 0xa5, 0xaf, 0x9c, 0xc8, 0xb6, 0x9a, 0x79, 0x14, 0xa5, 0x99, 0xc9, 0xf7, 0x3c, 0x75, 0xab, 0xd1, 0x5a, 0x78, 0xf9, 0x07, 0x38, 0xc0, 0x5e, 0xc5, 0xc4, 0x5e, 0x34, 0x4c, 0xb9, 0xd9, 0xe5, 0x69, 0xb9, 0xd2, 0x86, 0xb1, 0x33, 0x6b, 0x67, 0xf5, 0x24, 0x5c, 0x2d, 0x09, 0x32, 0x33, 0x99, 0x30, 0x48, 0x93, 0x26, 0xed, 0xb4, 0x5e, 0x7e, 0xc1, 0x8a, 0x3f, 0xb4, 0xc5, 0xd0, 0x7f, 0xcd, 0x6e, 0x4a, 0x02, 0x7f, 0xc8, 0x84, 0x16, 0x22, 0x0e, 0x2b, 0x1c, 0x6d, 0x34, 0x5e, 0x03, 0x77, 0xf6, 0x49, 0x71, 0x95, 0xb7, 0x25, 0xc5, 0xaa, 0x82, 0xb9, 0xa6, 0x0d, 0xa5, 0x5e, 0x97, 0xff, 0x20, 0x84, 0x14, 0x82, 0xda, 0x7b, 0x9a, 0xf1, 0x2c, 0x50, 0xf5, 0xfd, 0x21, 0x50, 0x74, 0x4a, 0x54, 0xac, 0xea, 0xd0, 0x22, 0xf7, 0x83, 0xf0, 0xf7, 0xa4, 0xf1, 0x94, 0x61, 0xa8, 0x29, 0xb7, 0x91, 0xc3, 0x55, 0x61, 0xa8, 0x96, 0xc4, 0x12, 0x19, 0x85, 0x5e, 0x0a, 0x7f, 0xda, 0xf8, 0x3b, 0x77, 0x14, 0x90, 0xef, 0x85, 0x3d, 0xee, 0x94, 0xe6, 0x03, 0x81, 0xde, 0x09, 0x2c, 0x0f, 0xc5, 0x8b, 0x31, 0xba, 0xad, 0x68, 0x80, 0x2c, 0x58, 0xbd }; unsigned int pk_4k_auth_len = 3563; libstb-secvar-main/test/data/pk_4k_esl.h000066400000000000000000000212611470177641100204660ustar00rootroot00000000000000unsigned char pk_4k_esl[] = { 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72, 0x95, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x05, 0x65, 0x30, 0x82, 0x03, 0x4d, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x2e, 0xfa, 0xc4, 0xc7, 0xb1, 0x50, 0x32, 0x10, 0x46, 0xa4, 0xd8, 0x64, 0xb5, 0x1e, 0xd2, 0x45, 0xb7, 0x67, 0x37, 0x3a, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x39, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x31, 0x31, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x31, 0x30, 0x30, 0x36, 0x31, 0x36, 0x32, 0x36, 0x31, 0x31, 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x58, 0x58, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x0c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x13, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x4c, 0x74, 0x64, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xa6, 0xb7, 0xda, 0x82, 0xb7, 0x9c, 0x7a, 0x90, 0xc4, 0x73, 0x16, 0x95, 0x7a, 0x09, 0x79, 0x47, 0xf5, 0x48, 0x85, 0xfc, 0x01, 0xe2, 0x64, 0xc5, 0xfd, 0xdc, 0xb3, 0xc6, 0x9a, 0x1b, 0x3f, 0xf9, 0xc6, 0x3b, 0xe6, 0x29, 0x8e, 0x10, 0x3e, 0xf8, 0x93, 0xfc, 0xd3, 0x6f, 0xa7, 0x7c, 0x93, 0x40, 0x07, 0x4d, 0xbc, 0x51, 0xd4, 0xe5, 0xa3, 0x1f, 0x9c, 0x72, 0xdf, 0x79, 0xee, 0xec, 0x03, 0xeb, 0xe5, 0x44, 0x11, 0x90, 0x5a, 0xfb, 0x23, 0x8e, 0x19, 0x09, 0xeb, 0x68, 0x29, 0xf4, 0x74, 0xcb, 0xcf, 0xd2, 0xe5, 0x90, 0x34, 0xcb, 0xb5, 0xbf, 0xf3, 0x74, 0xb0, 0xf5, 0xbe, 0x19, 0x5c, 0xac, 0x96, 0x3b, 0xa6, 0xd6, 0x4e, 0x6f, 0x30, 0x36, 0x80, 0x14, 0x7a, 0x29, 0xb3, 0x55, 0x94, 0x2d, 0xa0, 0x4b, 0x1c, 0x33, 0xd1, 0x41, 0x29, 0xe2, 0x51, 0x7f, 0x31, 0x0a, 0x11, 0xef, 0xdb, 0x3d, 0xc2, 0x1b, 0x33, 0x67, 0x6e, 0xd5, 0x90, 0xc7, 0xf7, 0x1b, 0xac, 0x98, 0xc0, 0xd9, 0x33, 0x66, 0x8c, 0x56, 0xa2, 0x0d, 0x79, 0xfa, 0x0d, 0xc9, 0x89, 0x10, 0xa7, 0xea, 0x94, 0xcc, 0x3f, 0xdc, 0xd3, 0xaf, 0xbd, 0xe5, 0x57, 0x33, 0xd6, 0x64, 0xb4, 0x23, 0x61, 0x7d, 0xa4, 0x7e, 0x4c, 0x7d, 0xa0, 0x89, 0xeb, 0x4f, 0x55, 0x02, 0x0c, 0xf4, 0xfa, 0x84, 0xd1, 0x5d, 0x2b, 0x5f, 0x25, 0xbb, 0xbb, 0xb7, 0xaa, 0x76, 0xbc, 0xa1, 0x89, 0xc2, 0xc4, 0xd0, 0xaf, 0x3d, 0xbd, 0x34, 0x5a, 0xe6, 0x09, 0x0d, 0x6e, 0xea, 0x85, 0x11, 0x91, 0xec, 0xad, 0xca, 0xf8, 0x86, 0x0e, 0x87, 0xca, 0x75, 0xc3, 0xb6, 0xcf, 0x8c, 0x4f, 0x3b, 0x98, 0x69, 0x9d, 0x66, 0xd3, 0x8a, 0xfc, 0xf1, 0xc0, 0x09, 0xd6, 0x46, 0xf4, 0x0e, 0x68, 0x2c, 0x77, 0xb4, 0xc8, 0x06, 0x19, 0x94, 0x70, 0x6b, 0x18, 0x30, 0xfc, 0x55, 0xa2, 0x53, 0x7e, 0x81, 0x58, 0xc8, 0x77, 0xfb, 0x57, 0x2d, 0x71, 0xc3, 0x37, 0x3a, 0x50, 0x07, 0xe1, 0x44, 0xab, 0x4d, 0x76, 0x06, 0x81, 0xa3, 0xd6, 0x5e, 0x0e, 0xc3, 0x30, 0x08, 0x70, 0x89, 0xd4, 0x96, 0x45, 0x43, 0x8c, 0x49, 0x93, 0x71, 0x57, 0xde, 0xbe, 0x9b, 0x3a, 0x8b, 0xde, 0x3d, 0xb9, 0xdb, 0xb2, 0xaa, 0x4e, 0x0f, 0x7d, 0xb6, 0x7e, 0xf8, 0x63, 0xd0, 0x1d, 0x1e, 0x41, 0xa2, 0x4a, 0x5d, 0xc0, 0x57, 0x05, 0x33, 0x34, 0x84, 0xa1, 0x62, 0x77, 0x99, 0x5a, 0x37, 0x90, 0x03, 0x1f, 0x5f, 0xc0, 0x87, 0xf5, 0x6d, 0xce, 0xf0, 0x61, 0x6e, 0x89, 0xca, 0xd4, 0xfc, 0xe2, 0xce, 0x59, 0x1b, 0x34, 0x70, 0xf6, 0xd3, 0x2c, 0x6f, 0xf5, 0x71, 0xdc, 0x96, 0x6d, 0xf5, 0xe4, 0x80, 0x19, 0x56, 0x5d, 0xbc, 0x7a, 0x92, 0x45, 0x94, 0xab, 0x76, 0x98, 0x28, 0x45, 0x79, 0x3b, 0xcf, 0x7d, 0x7c, 0x7d, 0x82, 0xf5, 0x67, 0x77, 0x3f, 0xd8, 0xc1, 0x87, 0x1e, 0x55, 0x73, 0x13, 0x71, 0x36, 0x43, 0x21, 0xb1, 0x76, 0x98, 0x04, 0x3c, 0xf6, 0x2a, 0x03, 0x62, 0xef, 0x09, 0x98, 0x85, 0x25, 0x5f, 0xc5, 0xf3, 0x68, 0x47, 0xd9, 0x01, 0xa0, 0x22, 0x48, 0x31, 0xc2, 0xb5, 0x62, 0x01, 0x5a, 0x95, 0xa9, 0x1c, 0x99, 0xb5, 0x82, 0x79, 0x6b, 0xbf, 0x83, 0xe8, 0x9e, 0x3a, 0xf2, 0xd3, 0x9a, 0xac, 0x67, 0xf1, 0xc8, 0x6f, 0xd3, 0xfc, 0x3d, 0x20, 0xc1, 0x67, 0xce, 0xc3, 0xf9, 0x62, 0xf4, 0x99, 0xab, 0x87, 0xb5, 0x29, 0x82, 0xab, 0x4a, 0x14, 0xe0, 0x27, 0x21, 0x71, 0x0b, 0xf2, 0xcc, 0x47, 0x94, 0x1a, 0xba, 0x57, 0x0a, 0x07, 0x72, 0x14, 0xe7, 0xdd, 0x1c, 0x3c, 0x37, 0x3e, 0xb2, 0xa3, 0x05, 0xd9, 0x08, 0xd4, 0x75, 0xdd, 0xa0, 0xf8, 0x54, 0x62, 0xd2, 0x6d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x31, 0x8d, 0xc1, 0x8c, 0x8e, 0x69, 0x84, 0xa2, 0xed, 0x71, 0x79, 0x0e, 0x9c, 0xc5, 0xf3, 0xc1, 0xc1, 0x5d, 0xf1, 0x52, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x31, 0x8d, 0xc1, 0x8c, 0x8e, 0x69, 0x84, 0xa2, 0xed, 0x71, 0x79, 0x0e, 0x9c, 0xc5, 0xf3, 0xc1, 0xc1, 0x5d, 0xf1, 0x52, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x96, 0xee, 0xa7, 0x85, 0x54, 0x65, 0xc3, 0x0f, 0x2f, 0x24, 0x1b, 0xfb, 0x07, 0x55, 0xe6, 0x0a, 0xd4, 0xdf, 0xd4, 0x1c, 0xc2, 0xd4, 0xe8, 0x36, 0xb0, 0x4e, 0x7b, 0x5a, 0x5b, 0x68, 0x24, 0xbb, 0x22, 0x33, 0x19, 0x56, 0x46, 0x5b, 0x9e, 0x29, 0x90, 0xbd, 0x2a, 0x6b, 0x88, 0x3f, 0xbf, 0xf4, 0x40, 0xc1, 0xe0, 0xd2, 0xd8, 0xd0, 0xda, 0x69, 0x88, 0xc0, 0x14, 0xe2, 0x54, 0x67, 0xfc, 0x96, 0xbe, 0xb9, 0x54, 0xdf, 0x92, 0x4a, 0xfe, 0x8b, 0xe9, 0xb7, 0x36, 0xb2, 0xc5, 0x9a, 0xf5, 0x11, 0x98, 0xd4, 0x40, 0x28, 0xb7, 0x1a, 0x7d, 0xb4, 0x33, 0xf9, 0x38, 0xd0, 0x87, 0x7e, 0xb9, 0x68, 0x88, 0x69, 0x4b, 0xb0, 0x49, 0x72, 0x6a, 0x9e, 0x52, 0xc1, 0xdd, 0x02, 0xad, 0x09, 0x9a, 0x55, 0xd3, 0x0a, 0x32, 0x46, 0xe1, 0x03, 0x3b, 0x9a, 0xaf, 0x0b, 0xd5, 0x4d, 0x91, 0xe9, 0xd7, 0x65, 0x91, 0x90, 0x49, 0x5a, 0xc4, 0x72, 0x4e, 0xfe, 0xa1, 0xc8, 0x04, 0x12, 0x2e, 0x21, 0x56, 0xe5, 0xe3, 0xf7, 0xb8, 0xa5, 0x06, 0x97, 0x32, 0x3c, 0xb7, 0xb4, 0xfa, 0xf8, 0xb7, 0xc3, 0x5b, 0x93, 0x06, 0xd8, 0x56, 0x0e, 0x8f, 0xca, 0x97, 0x50, 0xc6, 0x3d, 0xbc, 0xb6, 0x3e, 0x07, 0xc1, 0xf3, 0xda, 0xd1, 0x8d, 0xeb, 0xec, 0xab, 0x1e, 0x24, 0xba, 0x8a, 0x4c, 0x59, 0xa4, 0x8b, 0xc8, 0x01, 0xa9, 0x49, 0xaa, 0x4e, 0x93, 0xba, 0x5e, 0xaf, 0xfe, 0x02, 0xce, 0xbd, 0xc3, 0x91, 0x24, 0x5f, 0xbd, 0x48, 0x80, 0x86, 0x64, 0x40, 0xf6, 0x55, 0xa7, 0x1b, 0x1d, 0xe5, 0x30, 0x22, 0xf9, 0x31, 0x79, 0xcd, 0x0f, 0x23, 0x36, 0xb0, 0x8b, 0x2d, 0x44, 0xb1, 0xad, 0xaa, 0x3b, 0x92, 0xd0, 0x15, 0x72, 0x80, 0x23, 0x1f, 0xa6, 0x20, 0x50, 0x3b, 0x8c, 0x69, 0xbf, 0xe7, 0x05, 0x3c, 0x67, 0xda, 0xf7, 0x42, 0x68, 0x3d, 0xe5, 0x82, 0xac, 0x6d, 0xa6, 0x79, 0x8e, 0xbf, 0x46, 0x2d, 0x74, 0xa5, 0x0f, 0x26, 0xe8, 0x87, 0x95, 0xf4, 0x13, 0x92, 0xbf, 0x54, 0xfd, 0x23, 0xb6, 0x43, 0x10, 0xe5, 0xe6, 0xa7, 0x1f, 0x44, 0x4f, 0x41, 0x25, 0xe3, 0x56, 0xb0, 0xe1, 0xc4, 0x5a, 0xf5, 0xaa, 0x64, 0x9e, 0xd4, 0xa0, 0xff, 0x65, 0x1b, 0x3e, 0x8e, 0x8e, 0x6d, 0x84, 0x96, 0x2e, 0xf7, 0xe2, 0xe8, 0xad, 0xd2, 0x7c, 0x1e, 0xb9, 0xed, 0x41, 0x04, 0xd3, 0x0b, 0xae, 0xc6, 0xc3, 0x8c, 0x25, 0x16, 0x4b, 0x67, 0x0a, 0x5c, 0x70, 0xfc, 0xbf, 0x5b, 0xa5, 0xaf, 0x9c, 0xc8, 0xb6, 0x9a, 0x79, 0x14, 0xa5, 0x99, 0xc9, 0xf7, 0x3c, 0x75, 0xab, 0xd1, 0x5a, 0x78, 0xf9, 0x07, 0x38, 0xc0, 0x5e, 0xc5, 0xc4, 0x5e, 0x34, 0x4c, 0xb9, 0xd9, 0xe5, 0x69, 0xb9, 0xd2, 0x86, 0xb1, 0x33, 0x6b, 0x67, 0xf5, 0x24, 0x5c, 0x2d, 0x09, 0x32, 0x33, 0x99, 0x30, 0x48, 0x93, 0x26, 0xed, 0xb4, 0x5e, 0x7e, 0xc1, 0x8a, 0x3f, 0xb4, 0xc5, 0xd0, 0x7f, 0xcd, 0x6e, 0x4a, 0x02, 0x7f, 0xc8, 0x84, 0x16, 0x22, 0x0e, 0x2b, 0x1c, 0x6d, 0x34, 0x5e, 0x03, 0x77, 0xf6, 0x49, 0x71, 0x95, 0xb7, 0x25, 0xc5, 0xaa, 0x82, 0xb9, 0xa6, 0x0d, 0xa5, 0x5e, 0x97, 0xff, 0x20, 0x84, 0x14, 0x82, 0xda, 0x7b, 0x9a, 0xf1, 0x2c, 0x50, 0xf5, 0xfd, 0x21, 0x50, 0x74, 0x4a, 0x54, 0xac, 0xea, 0xd0, 0x22, 0xf7, 0x83, 0xf0, 0xf7, 0xa4, 0xf1, 0x94, 0x61, 0xa8, 0x29, 0xb7, 0x91, 0xc3, 0x55, 0x61, 0xa8, 0x96, 0xc4, 0x12, 0x19, 0x85, 0x5e, 0x0a, 0x7f, 0xda, 0xf8, 0x3b, 0x77, 0x14, 0x90, 0xef, 0x85, 0x3d, 0xee, 0x94, 0xe6, 0x03, 0x81, 0xde, 0x09, 0x2c, 0x0f, 0xc5, 0x8b, 0x31, 0xba, 0xad, 0x68, 0x80, 0x2c, 0x58, 0xbd }; unsigned int pk_4k_esl_len = 1429; libstb-secvar-main/test/data/pk_auth.h000066400000000000000000000330151470177641100202460ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char pk_auth[] = { 0xe6, 0x07, 0x01, 0x0e, 0x0d, 0x10, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x05, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x05, 0x28, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x03, 0x2d, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xcf, 0xf3, 0x6e, 0xc9, 0xaf, 0x12, 0x42, 0xdb, 0xa9, 0x59, 0x6d, 0xef, 0xf6, 0x0e, 0x54, 0xe8, 0x21, 0x57, 0xc4, 0x78, 0x3f, 0x6d, 0x83, 0x37, 0x1a, 0x29, 0x10, 0xd2, 0xb8, 0xb7, 0x24, 0x49, 0x5f, 0x5f, 0x32, 0xc9, 0x39, 0xdc, 0x40, 0xa4, 0x5d, 0xea, 0x7b, 0xb7, 0xb3, 0x42, 0xab, 0x43, 0x47, 0x3d, 0x91, 0x6e, 0xf1, 0x5d, 0x3f, 0xf9, 0x2d, 0x9e, 0x88, 0xc4, 0x05, 0x73, 0x9b, 0x0a, 0xa8, 0xf7, 0xb2, 0x8e, 0x24, 0x69, 0x13, 0xf0, 0xbc, 0x5d, 0xde, 0x32, 0x40, 0x42, 0x31, 0x58, 0x9e, 0x48, 0x76, 0x1f, 0x6b, 0x10, 0x19, 0x1c, 0x4e, 0x45, 0x82, 0x19, 0xc0, 0xed, 0xfc, 0x5c, 0x7c, 0x19, 0xfd, 0x85, 0x13, 0x2b, 0xf0, 0x38, 0x83, 0x7b, 0xe5, 0x1d, 0x86, 0x70, 0xed, 0x8f, 0x52, 0x16, 0x60, 0x14, 0xfb, 0xaf, 0x23, 0x19, 0xa5, 0x45, 0x44, 0x91, 0x54, 0xd0, 0xe8, 0x79, 0x34, 0xbe, 0x4f, 0xb3, 0x8c, 0x56, 0x8c, 0x7c, 0xbf, 0x6a, 0xa2, 0x44, 0x04, 0x51, 0xe5, 0x0f, 0x30, 0x04, 0xe9, 0x90, 0xb1, 0x8a, 0xe3, 0x9b, 0x95, 0xb1, 0xd6, 0xde, 0x9e, 0x98, 0x14, 0x07, 0x63, 0xbd, 0x88, 0x94, 0x54, 0xb6, 0x03, 0x8d, 0xf5, 0x8e, 0xca, 0x82, 0xc8, 0xb1, 0x78, 0xba, 0xb4, 0x21, 0x45, 0x6f, 0xd4, 0x0c, 0xda, 0xcb, 0x81, 0x1a, 0x9b, 0xb2, 0x0c, 0xa9, 0x7c, 0x48, 0x84, 0xc8, 0xbd, 0xce, 0x46, 0x1b, 0x8b, 0x38, 0xe2, 0x67, 0x50, 0x3c, 0x3e, 0x3e, 0x32, 0xec, 0x0b, 0x39, 0xc7, 0xe0, 0xd5, 0x00, 0xc5, 0x7a, 0xd3, 0x1c, 0xd1, 0xfb, 0x0a, 0xc7, 0x5b, 0x1d, 0x21, 0x3d, 0x50, 0x53, 0x87, 0xa1, 0xb4, 0x16, 0x5b, 0x1e, 0x80, 0x80, 0xaa, 0xe5, 0xf9, 0x69, 0x6c, 0x48, 0xab, 0x45, 0x66, 0x05, 0x04, 0xc7, 0xad, 0xc1, 0x24, 0x4a, 0xde, 0xad, 0x14, 0x55, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x99, 0xdd, 0xbb, 0x72, 0xf5, 0x8e, 0xdc, 0x7b, 0xe7, 0x9c, 0x6d, 0x47, 0x37, 0x01, 0xc9, 0xc2, 0xc9, 0x90, 0x01, 0x5d, 0x26, 0x80, 0xce, 0x2b, 0xd3, 0xdd, 0x26, 0x67, 0x2a, 0x77, 0x41, 0x06, 0x78, 0xed, 0xe7, 0xb0, 0x58, 0x93, 0x44, 0xe5, 0x79, 0xc0, 0xa6, 0x52, 0x1d, 0x2c, 0x10, 0x16, 0xaa, 0xee, 0x97, 0x05, 0x80, 0x6d, 0xba, 0x45, 0xd8, 0xd3, 0xf5, 0x98, 0x8d, 0xd1, 0x66, 0x9a, 0x1c, 0x96, 0xf5, 0x2e, 0xb4, 0x4d, 0xa3, 0x79, 0x5f, 0x81, 0xb9, 0x5c, 0xcd, 0x45, 0x80, 0xa4, 0x15, 0xb3, 0x3e, 0x05, 0xf9, 0x12, 0x62, 0x41, 0x7b, 0x97, 0x08, 0x90, 0x13, 0xd3, 0x1a, 0xe7, 0xe5, 0x68, 0x1d, 0x24, 0xdb, 0x7c, 0x78, 0xd7, 0x3a, 0x4a, 0x5d, 0x7c, 0xb7, 0xf8, 0x5d, 0xa4, 0xe2, 0x40, 0x86, 0x26, 0xc0, 0x45, 0x00, 0x80, 0x16, 0x88, 0x97, 0x3e, 0x8c, 0x5c, 0x38, 0x6b, 0xa6, 0x3f, 0x7d, 0x80, 0xb4, 0xec, 0x1f, 0x89, 0x0a, 0xd3, 0x64, 0x3a, 0x85, 0xab, 0xd7, 0x0b, 0x17, 0x68, 0xc1, 0x41, 0xfc, 0xe6, 0xa0, 0x2d, 0xc8, 0x0e, 0xfd, 0xf0, 0x28, 0xf3, 0xe0, 0xb7, 0x98, 0xf3, 0xc9, 0x93, 0x97, 0xeb, 0x7f, 0x81, 0x13, 0x86, 0x95, 0x17, 0x45, 0x0d, 0x3e, 0x0d, 0x35, 0x5d, 0x2d, 0xa4, 0xa4, 0x04, 0xaa, 0x22, 0x7b, 0x40, 0x47, 0xc7, 0x31, 0x88, 0x99, 0x03, 0xaf, 0xf7, 0xe6, 0x14, 0x1b, 0xcf, 0xf7, 0x3b, 0x5d, 0xc6, 0x48, 0x24, 0x42, 0xcf, 0xfe, 0x10, 0x10, 0xc0, 0x2b, 0x23, 0x28, 0xb8, 0x4a, 0x3a, 0xff, 0x21, 0xd4, 0xa3, 0x15, 0x51, 0xbc, 0xd4, 0xd2, 0x09, 0x77, 0x77, 0x3e, 0x65, 0xb4, 0x3d, 0x1e, 0xd6, 0xc0, 0xe9, 0x3b, 0x0e, 0xee, 0xa8, 0x68, 0x46, 0x25, 0x47, 0x57, 0x08, 0x2e, 0x80, 0x99, 0x9b, 0x49, 0xfb, 0xd9, 0xc5, 0x46, 0xd7, 0x31, 0x82, 0x01, 0xd2, 0x30, 0x82, 0x01, 0xce, 0x02, 0x01, 0x01, 0x30, 0x3c, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0xa0, 0x69, 0x30, 0x18, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x03, 0x31, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0x30, 0x1c, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x05, 0x31, 0x0f, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x32, 0x31, 0x34, 0x31, 0x33, 0x31, 0x36, 0x32, 0x36, 0x5a, 0x30, 0x2f, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x04, 0x31, 0x22, 0x04, 0x20, 0x37, 0x54, 0xfc, 0x21, 0x20, 0x21, 0x11, 0x40, 0xe8, 0x31, 0xc4, 0xe1, 0xa8, 0x70, 0x57, 0x22, 0x50, 0xc0, 0x67, 0x94, 0xf7, 0xa1, 0x82, 0xb3, 0x7e, 0x57, 0x07, 0xc0, 0x97, 0x1a, 0x15, 0x04, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x58, 0x86, 0xce, 0x5c, 0xde, 0x4a, 0x5a, 0x52, 0x69, 0x18, 0x53, 0xf5, 0xdc, 0xfc, 0xf6, 0xd3, 0x7a, 0x18, 0x46, 0x79, 0xe4, 0x26, 0xd8, 0xaa, 0x3b, 0x2c, 0x4e, 0xc6, 0xb7, 0xaf, 0x68, 0x10, 0x18, 0x1a, 0x4e, 0x1a, 0x5a, 0x37, 0x14, 0xeb, 0xe5, 0x6d, 0xba, 0x21, 0x71, 0x80, 0xa9, 0x25, 0x86, 0x00, 0x4e, 0xd4, 0xd8, 0x8b, 0x89, 0x59, 0x0b, 0x06, 0x5f, 0x9f, 0x8f, 0x41, 0x58, 0xc3, 0x9a, 0x62, 0xd7, 0x92, 0xd9, 0x4a, 0xa6, 0x24, 0x37, 0x05, 0x20, 0xc5, 0xf7, 0x7b, 0x4d, 0xdc, 0x23, 0x4f, 0x7c, 0x82, 0xfb, 0x76, 0x8e, 0x92, 0xcd, 0x4f, 0x31, 0x24, 0x5c, 0xaa, 0x61, 0xbe, 0x1c, 0x1b, 0xad, 0x87, 0x4e, 0xa3, 0xa4, 0xff, 0xba, 0x37, 0xee, 0x47, 0x0d, 0x51, 0xb8, 0x95, 0xae, 0x15, 0x0a, 0x42, 0x5a, 0x7b, 0xad, 0x65, 0xd5, 0x95, 0x17, 0x1e, 0x72, 0x7a, 0x5d, 0x24, 0xf1, 0x07, 0x3d, 0xd5, 0xb9, 0x22, 0xb5, 0xdb, 0xdb, 0x83, 0xda, 0xa4, 0x9c, 0x50, 0x7f, 0xa6, 0x9d, 0x47, 0x3d, 0x64, 0xe6, 0xdf, 0x1b, 0xa0, 0x1a, 0x28, 0x58, 0x58, 0xa8, 0x69, 0x21, 0xad, 0xcc, 0x66, 0x10, 0x4c, 0x81, 0xa6, 0xa8, 0x9a, 0x18, 0x41, 0x99, 0xf0, 0xed, 0xea, 0xaf, 0xaa, 0xe7, 0xe4, 0x32, 0xce, 0xe1, 0xf0, 0x0e, 0xcc, 0xdd, 0x74, 0x7d, 0xe9, 0xe7, 0xb9, 0xc8, 0xe9, 0x22, 0x2b, 0x66, 0xd9, 0x61, 0xb9, 0x71, 0x0e, 0xff, 0x7d, 0xd9, 0x47, 0x6d, 0x9c, 0x2e, 0xec, 0xa5, 0xd4, 0xbf, 0xa1, 0x1d, 0xdf, 0xa3, 0x11, 0xd0, 0x80, 0x81, 0x13, 0xfc, 0xd6, 0x25, 0xff, 0x6d, 0x9e, 0x47, 0x75, 0xe0, 0x29, 0xcd, 0x06, 0x35, 0x2c, 0x19, 0x4f, 0xce, 0x80, 0x26, 0x0d, 0x5d, 0xf7, 0xd8, 0x4a, 0xc2, 0x76, 0x97, 0xc7, 0xab, 0x9f, 0x49, 0xb0, 0x2b, 0x51, 0x75, 0xfd, 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72, 0x59, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xcf, 0xf3, 0x6e, 0xc9, 0xaf, 0x12, 0x42, 0xdb, 0xa9, 0x59, 0x6d, 0xef, 0xf6, 0x0e, 0x54, 0xe8, 0x21, 0x57, 0xc4, 0x78, 0x3f, 0x6d, 0x83, 0x37, 0x1a, 0x29, 0x10, 0xd2, 0xb8, 0xb7, 0x24, 0x49, 0x5f, 0x5f, 0x32, 0xc9, 0x39, 0xdc, 0x40, 0xa4, 0x5d, 0xea, 0x7b, 0xb7, 0xb3, 0x42, 0xab, 0x43, 0x47, 0x3d, 0x91, 0x6e, 0xf1, 0x5d, 0x3f, 0xf9, 0x2d, 0x9e, 0x88, 0xc4, 0x05, 0x73, 0x9b, 0x0a, 0xa8, 0xf7, 0xb2, 0x8e, 0x24, 0x69, 0x13, 0xf0, 0xbc, 0x5d, 0xde, 0x32, 0x40, 0x42, 0x31, 0x58, 0x9e, 0x48, 0x76, 0x1f, 0x6b, 0x10, 0x19, 0x1c, 0x4e, 0x45, 0x82, 0x19, 0xc0, 0xed, 0xfc, 0x5c, 0x7c, 0x19, 0xfd, 0x85, 0x13, 0x2b, 0xf0, 0x38, 0x83, 0x7b, 0xe5, 0x1d, 0x86, 0x70, 0xed, 0x8f, 0x52, 0x16, 0x60, 0x14, 0xfb, 0xaf, 0x23, 0x19, 0xa5, 0x45, 0x44, 0x91, 0x54, 0xd0, 0xe8, 0x79, 0x34, 0xbe, 0x4f, 0xb3, 0x8c, 0x56, 0x8c, 0x7c, 0xbf, 0x6a, 0xa2, 0x44, 0x04, 0x51, 0xe5, 0x0f, 0x30, 0x04, 0xe9, 0x90, 0xb1, 0x8a, 0xe3, 0x9b, 0x95, 0xb1, 0xd6, 0xde, 0x9e, 0x98, 0x14, 0x07, 0x63, 0xbd, 0x88, 0x94, 0x54, 0xb6, 0x03, 0x8d, 0xf5, 0x8e, 0xca, 0x82, 0xc8, 0xb1, 0x78, 0xba, 0xb4, 0x21, 0x45, 0x6f, 0xd4, 0x0c, 0xda, 0xcb, 0x81, 0x1a, 0x9b, 0xb2, 0x0c, 0xa9, 0x7c, 0x48, 0x84, 0xc8, 0xbd, 0xce, 0x46, 0x1b, 0x8b, 0x38, 0xe2, 0x67, 0x50, 0x3c, 0x3e, 0x3e, 0x32, 0xec, 0x0b, 0x39, 0xc7, 0xe0, 0xd5, 0x00, 0xc5, 0x7a, 0xd3, 0x1c, 0xd1, 0xfb, 0x0a, 0xc7, 0x5b, 0x1d, 0x21, 0x3d, 0x50, 0x53, 0x87, 0xa1, 0xb4, 0x16, 0x5b, 0x1e, 0x80, 0x80, 0xaa, 0xe5, 0xf9, 0x69, 0x6c, 0x48, 0xab, 0x45, 0x66, 0x05, 0x04, 0xc7, 0xad, 0xc1, 0x24, 0x4a, 0xde, 0xad, 0x14, 0x55, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x99, 0xdd, 0xbb, 0x72, 0xf5, 0x8e, 0xdc, 0x7b, 0xe7, 0x9c, 0x6d, 0x47, 0x37, 0x01, 0xc9, 0xc2, 0xc9, 0x90, 0x01, 0x5d, 0x26, 0x80, 0xce, 0x2b, 0xd3, 0xdd, 0x26, 0x67, 0x2a, 0x77, 0x41, 0x06, 0x78, 0xed, 0xe7, 0xb0, 0x58, 0x93, 0x44, 0xe5, 0x79, 0xc0, 0xa6, 0x52, 0x1d, 0x2c, 0x10, 0x16, 0xaa, 0xee, 0x97, 0x05, 0x80, 0x6d, 0xba, 0x45, 0xd8, 0xd3, 0xf5, 0x98, 0x8d, 0xd1, 0x66, 0x9a, 0x1c, 0x96, 0xf5, 0x2e, 0xb4, 0x4d, 0xa3, 0x79, 0x5f, 0x81, 0xb9, 0x5c, 0xcd, 0x45, 0x80, 0xa4, 0x15, 0xb3, 0x3e, 0x05, 0xf9, 0x12, 0x62, 0x41, 0x7b, 0x97, 0x08, 0x90, 0x13, 0xd3, 0x1a, 0xe7, 0xe5, 0x68, 0x1d, 0x24, 0xdb, 0x7c, 0x78, 0xd7, 0x3a, 0x4a, 0x5d, 0x7c, 0xb7, 0xf8, 0x5d, 0xa4, 0xe2, 0x40, 0x86, 0x26, 0xc0, 0x45, 0x00, 0x80, 0x16, 0x88, 0x97, 0x3e, 0x8c, 0x5c, 0x38, 0x6b, 0xa6, 0x3f, 0x7d, 0x80, 0xb4, 0xec, 0x1f, 0x89, 0x0a, 0xd3, 0x64, 0x3a, 0x85, 0xab, 0xd7, 0x0b, 0x17, 0x68, 0xc1, 0x41, 0xfc, 0xe6, 0xa0, 0x2d, 0xc8, 0x0e, 0xfd, 0xf0, 0x28, 0xf3, 0xe0, 0xb7, 0x98, 0xf3, 0xc9, 0x93, 0x97, 0xeb, 0x7f, 0x81, 0x13, 0x86, 0x95, 0x17, 0x45, 0x0d, 0x3e, 0x0d, 0x35, 0x5d, 0x2d, 0xa4, 0xa4, 0x04, 0xaa, 0x22, 0x7b, 0x40, 0x47, 0xc7, 0x31, 0x88, 0x99, 0x03, 0xaf, 0xf7, 0xe6, 0x14, 0x1b, 0xcf, 0xf7, 0x3b, 0x5d, 0xc6, 0x48, 0x24, 0x42, 0xcf, 0xfe, 0x10, 0x10, 0xc0, 0x2b, 0x23, 0x28, 0xb8, 0x4a, 0x3a, 0xff, 0x21, 0xd4, 0xa3, 0x15, 0x51, 0xbc, 0xd4, 0xd2, 0x09, 0x77, 0x77, 0x3e, 0x65, 0xb4, 0x3d, 0x1e, 0xd6, 0xc0, 0xe9, 0x3b, 0x0e, 0xee, 0xa8, 0x68, 0x46, 0x25, 0x47, 0x57, 0x08, 0x2e, 0x80, 0x99, 0x9b, 0x49, 0xfb, 0xd9, 0xc5, 0x46, 0xd7 }; unsigned int pk_auth_len = 2221; libstb-secvar-main/test/data/priv_auth.h000066400000000000000000000175371470177641100206270ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char priv_auth[] = { 0xe6, 0x07, 0x02, 0x1c, 0x11, 0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x04, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x04, 0xbd, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x03, 0x2d, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x52, 0x14, 0xdf, 0x84, 0x5c, 0x98, 0xf8, 0x1d, 0xca, 0xe4, 0x20, 0x45, 0x74, 0xb6, 0x11, 0xec, 0x30, 0xb8, 0xbf, 0xcd, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf2, 0x78, 0x86, 0xc0, 0xe9, 0x0b, 0x63, 0xd2, 0xc2, 0xb8, 0xb3, 0xb2, 0xcb, 0xc7, 0x52, 0x73, 0xf5, 0xfa, 0x2e, 0x1f, 0xf6, 0x8f, 0x53, 0xf7, 0x11, 0x98, 0xe4, 0x18, 0x3b, 0x1c, 0x8a, 0x60, 0x05, 0x3f, 0xba, 0x14, 0xf1, 0xd4, 0x40, 0x66, 0xcc, 0x46, 0x38, 0xc1, 0x1d, 0x62, 0x60, 0xee, 0x9a, 0x27, 0x03, 0x0c, 0x10, 0x7b, 0xb5, 0x9a, 0x2c, 0x90, 0xd4, 0x16, 0x4a, 0xb7, 0x28, 0x29, 0x75, 0xd9, 0xc6, 0x76, 0xe4, 0xbc, 0x56, 0xd4, 0x0d, 0xa7, 0x89, 0x82, 0xc6, 0xbd, 0xab, 0xe3, 0x1c, 0xe0, 0x2d, 0x83, 0x65, 0xc6, 0xba, 0xf8, 0x8c, 0xbe, 0x39, 0xf6, 0x58, 0x4f, 0xcd, 0xc0, 0x04, 0xa4, 0xe5, 0xbe, 0xb9, 0xcf, 0xe5, 0x6b, 0x5b, 0xfa, 0xa8, 0x3e, 0x85, 0x3d, 0x8b, 0xd5, 0x79, 0x05, 0x96, 0x9c, 0x02, 0xea, 0x75, 0x7f, 0xcb, 0x92, 0x04, 0x91, 0x47, 0xe4, 0xc9, 0x94, 0x05, 0xef, 0xe2, 0x44, 0xbc, 0xc7, 0x1a, 0x00, 0x93, 0x40, 0x49, 0x77, 0x55, 0xc1, 0xa1, 0xb0, 0xb2, 0xcf, 0x50, 0x87, 0x80, 0x17, 0x11, 0xf6, 0x84, 0xf5, 0xea, 0x6c, 0xc3, 0xfa, 0xe4, 0xeb, 0x20, 0x24, 0x20, 0x81, 0xf3, 0x1a, 0x98, 0x71, 0x69, 0x33, 0x3a, 0x8e, 0x34, 0x6a, 0x40, 0x13, 0x83, 0x87, 0x8d, 0xa1, 0xf6, 0x8b, 0x20, 0x39, 0x76, 0x41, 0x0f, 0x3b, 0x3a, 0xec, 0x73, 0xe0, 0xca, 0x29, 0x83, 0xa0, 0xd7, 0x17, 0x4d, 0xf8, 0xe9, 0x93, 0x24, 0xb3, 0xf3, 0xf0, 0x01, 0xe4, 0x25, 0x20, 0x78, 0x55, 0x60, 0x1d, 0xed, 0x54, 0x54, 0x7b, 0x91, 0x5d, 0x7d, 0x6c, 0x62, 0x0a, 0xb7, 0xb4, 0xea, 0x15, 0xc7, 0xbd, 0xb5, 0xda, 0xfb, 0x23, 0x0a, 0x45, 0xbc, 0xb2, 0x63, 0xda, 0xb4, 0x09, 0xbe, 0x0b, 0x5d, 0x1c, 0x80, 0xfb, 0x7e, 0x6a, 0x72, 0x11, 0x22, 0x9f, 0xb5, 0xc9, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x89, 0x01, 0xe1, 0x2a, 0x0f, 0x43, 0x6b, 0xb0, 0xc5, 0x87, 0x21, 0xba, 0xed, 0xdf, 0x49, 0x4c, 0x6e, 0x66, 0xda, 0x23, 0x34, 0x1d, 0xc7, 0x5f, 0x68, 0xdb, 0x9b, 0x74, 0xd5, 0xd9, 0x68, 0x39, 0x91, 0x63, 0xd4, 0x34, 0x24, 0xbe, 0xa9, 0x03, 0x47, 0x6e, 0x99, 0x99, 0x34, 0x75, 0x69, 0x3b, 0xbc, 0x25, 0x38, 0xed, 0x38, 0xda, 0x59, 0x8d, 0x3c, 0xd6, 0xd8, 0x0f, 0x9b, 0x06, 0x5c, 0xa3, 0x39, 0xdc, 0xea, 0x27, 0xf6, 0x97, 0x4f, 0xf3, 0x61, 0xdf, 0xef, 0x79, 0x21, 0xf3, 0x81, 0xd2, 0x78, 0xb3, 0x08, 0xef, 0xa8, 0x69, 0xfb, 0x99, 0x0b, 0x75, 0x4a, 0x59, 0xbf, 0x1a, 0xa8, 0x53, 0xd5, 0x88, 0x3a, 0x72, 0xf8, 0xb6, 0xef, 0xa6, 0xec, 0x9d, 0xfa, 0x86, 0x2d, 0x0a, 0x10, 0xde, 0xb5, 0x03, 0x1f, 0x56, 0x8e, 0x5e, 0xaa, 0x3f, 0x41, 0x4f, 0x4d, 0x1e, 0xd1, 0x3c, 0x15, 0xf6, 0x2d, 0xd6, 0x0f, 0xc2, 0x09, 0xd8, 0x50, 0x69, 0x53, 0x56, 0x5a, 0x93, 0x72, 0xa6, 0x91, 0x69, 0x89, 0x9f, 0x5c, 0xac, 0xca, 0xfa, 0xa5, 0xa7, 0x98, 0xc6, 0xeb, 0xe3, 0xb3, 0x76, 0xd7, 0x36, 0x1a, 0x90, 0x94, 0x97, 0xf4, 0x77, 0xc7, 0xf2, 0xcc, 0x55, 0xcd, 0x65, 0x38, 0x3b, 0x0b, 0x14, 0xc2, 0xb9, 0x43, 0xb3, 0x31, 0x7b, 0xe5, 0x78, 0xa4, 0xde, 0xd8, 0x55, 0x21, 0x00, 0x58, 0x64, 0xd6, 0x43, 0xe9, 0x20, 0xee, 0x82, 0xa8, 0x65, 0xd3, 0x29, 0x79, 0xe1, 0xe5, 0x9d, 0x6e, 0x9d, 0xc0, 0xfa, 0x0a, 0xa1, 0xac, 0xeb, 0x97, 0x69, 0x80, 0xc6, 0xa0, 0xb7, 0x7e, 0x88, 0x4e, 0x12, 0xf0, 0x0d, 0xf7, 0xe5, 0xf8, 0x60, 0x5f, 0x24, 0x50, 0xe9, 0x92, 0x1a, 0xbb, 0xd4, 0xa9, 0xde, 0xa6, 0x7a, 0x15, 0xea, 0xcc, 0x8a, 0xe3, 0x56, 0x3c, 0xa9, 0xf5, 0x31, 0x3d, 0x33, 0x2e, 0xf2, 0x31, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x63, 0x02, 0x01, 0x01, 0x30, 0x3c, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x02, 0x14, 0x52, 0x14, 0xdf, 0x84, 0x5c, 0x98, 0xf8, 0x1d, 0xca, 0xe4, 0x20, 0x45, 0x74, 0xb6, 0x11, 0xec, 0x30, 0xb8, 0xbf, 0xcd, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x90, 0x40, 0x18, 0x92, 0x81, 0x3d, 0xea, 0x15, 0x41, 0xab, 0x02, 0xca, 0xd4, 0xab, 0xb7, 0x04, 0x33, 0x7d, 0x4d, 0x59, 0xeb, 0xbe, 0x45, 0x36, 0x97, 0x5b, 0x3a, 0x44, 0x76, 0xe4, 0x87, 0xef, 0x61, 0x9d, 0xbe, 0xb1, 0x49, 0x74, 0x3e, 0xb8, 0xcd, 0xcf, 0xe5, 0xf7, 0x16, 0x7e, 0xcd, 0xc8, 0x39, 0x63, 0x1a, 0x08, 0xd6, 0x85, 0x22, 0xe2, 0x43, 0x20, 0x9d, 0xe7, 0xde, 0xa2, 0xee, 0xd2, 0x50, 0xb5, 0xf4, 0x69, 0x37, 0x26, 0x2a, 0xf9, 0x73, 0xe7, 0x12, 0xad, 0xbb, 0xb7, 0xee, 0xa0, 0xf7, 0x80, 0x43, 0x41, 0xc3, 0xe6, 0x4d, 0x87, 0x3c, 0xe4, 0x7a, 0xfd, 0x24, 0x1b, 0xe0, 0xd0, 0x23, 0x85, 0x3f, 0x06, 0x3b, 0x35, 0x09, 0xf5, 0x64, 0x30, 0x9c, 0xfa, 0x0f, 0x54, 0x7c, 0x2b, 0xa9, 0x05, 0x56, 0xb9, 0xf8, 0x15, 0xe8, 0x74, 0x19, 0x40, 0x3c, 0xf6, 0x79, 0x50, 0xd6, 0xac, 0x7b, 0x9a, 0xe1, 0x1c, 0x02, 0x5c, 0xd9, 0x02, 0x01, 0xd5, 0xb3, 0xd3, 0x04, 0x94, 0x24, 0xa8, 0x47, 0x7b, 0xe5, 0xca, 0xe1, 0x9b, 0xb6, 0x62, 0x44, 0xb5, 0x34, 0x94, 0xe2, 0x29, 0x33, 0xa1, 0x32, 0x65, 0xea, 0x73, 0x93, 0xc3, 0x7f, 0xf9, 0x78, 0x1f, 0xc7, 0xde, 0xb8, 0x52, 0x34, 0xce, 0x24, 0xde, 0x08, 0x84, 0x5b, 0x20, 0xdf, 0x21, 0xfa, 0xd0, 0xe2, 0x5e, 0x9a, 0x1b, 0x91, 0x26, 0x08, 0xc0, 0x3f, 0x1f, 0x05, 0x7b, 0x4b, 0x05, 0x32, 0xb1, 0x10, 0xf4, 0x7a, 0xca, 0xf7, 0x18, 0x28, 0x5c, 0xde, 0xca, 0xcc, 0x6f, 0x55, 0x97, 0xd7, 0xac, 0x4c, 0xa6, 0x4b, 0x66, 0xc1, 0x99, 0xd2, 0xb2, 0xe6, 0x67, 0x1e, 0x70, 0x9d, 0x60, 0x08, 0xa0, 0x6c, 0x12, 0xcc, 0x1f, 0xd4, 0x5d, 0x48, 0x75, 0x99, 0xb3, 0x24, 0xce, 0xd5, 0x74, 0xf1, 0x4a, 0xd3, 0xcf, 0x4f, 0x65, 0xda, 0xcd, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x0a }; unsigned int priv_auth_len = 1279; libstb-secvar-main/test/data/svc_db_by_PK_auth.h000066400000000000000000000320011470177641100221520ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char svc_db_by_PK_auth[] = { 0xe4, 0x07, 0x0a, 0x10, 0x0f, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x04, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x04, 0xd0, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x04, 0xc1, 0x30, 0x82, 0x04, 0xbd, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x03, 0x2d, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xcf, 0xf3, 0x6e, 0xc9, 0xaf, 0x12, 0x42, 0xdb, 0xa9, 0x59, 0x6d, 0xef, 0xf6, 0x0e, 0x54, 0xe8, 0x21, 0x57, 0xc4, 0x78, 0x3f, 0x6d, 0x83, 0x37, 0x1a, 0x29, 0x10, 0xd2, 0xb8, 0xb7, 0x24, 0x49, 0x5f, 0x5f, 0x32, 0xc9, 0x39, 0xdc, 0x40, 0xa4, 0x5d, 0xea, 0x7b, 0xb7, 0xb3, 0x42, 0xab, 0x43, 0x47, 0x3d, 0x91, 0x6e, 0xf1, 0x5d, 0x3f, 0xf9, 0x2d, 0x9e, 0x88, 0xc4, 0x05, 0x73, 0x9b, 0x0a, 0xa8, 0xf7, 0xb2, 0x8e, 0x24, 0x69, 0x13, 0xf0, 0xbc, 0x5d, 0xde, 0x32, 0x40, 0x42, 0x31, 0x58, 0x9e, 0x48, 0x76, 0x1f, 0x6b, 0x10, 0x19, 0x1c, 0x4e, 0x45, 0x82, 0x19, 0xc0, 0xed, 0xfc, 0x5c, 0x7c, 0x19, 0xfd, 0x85, 0x13, 0x2b, 0xf0, 0x38, 0x83, 0x7b, 0xe5, 0x1d, 0x86, 0x70, 0xed, 0x8f, 0x52, 0x16, 0x60, 0x14, 0xfb, 0xaf, 0x23, 0x19, 0xa5, 0x45, 0x44, 0x91, 0x54, 0xd0, 0xe8, 0x79, 0x34, 0xbe, 0x4f, 0xb3, 0x8c, 0x56, 0x8c, 0x7c, 0xbf, 0x6a, 0xa2, 0x44, 0x04, 0x51, 0xe5, 0x0f, 0x30, 0x04, 0xe9, 0x90, 0xb1, 0x8a, 0xe3, 0x9b, 0x95, 0xb1, 0xd6, 0xde, 0x9e, 0x98, 0x14, 0x07, 0x63, 0xbd, 0x88, 0x94, 0x54, 0xb6, 0x03, 0x8d, 0xf5, 0x8e, 0xca, 0x82, 0xc8, 0xb1, 0x78, 0xba, 0xb4, 0x21, 0x45, 0x6f, 0xd4, 0x0c, 0xda, 0xcb, 0x81, 0x1a, 0x9b, 0xb2, 0x0c, 0xa9, 0x7c, 0x48, 0x84, 0xc8, 0xbd, 0xce, 0x46, 0x1b, 0x8b, 0x38, 0xe2, 0x67, 0x50, 0x3c, 0x3e, 0x3e, 0x32, 0xec, 0x0b, 0x39, 0xc7, 0xe0, 0xd5, 0x00, 0xc5, 0x7a, 0xd3, 0x1c, 0xd1, 0xfb, 0x0a, 0xc7, 0x5b, 0x1d, 0x21, 0x3d, 0x50, 0x53, 0x87, 0xa1, 0xb4, 0x16, 0x5b, 0x1e, 0x80, 0x80, 0xaa, 0xe5, 0xf9, 0x69, 0x6c, 0x48, 0xab, 0x45, 0x66, 0x05, 0x04, 0xc7, 0xad, 0xc1, 0x24, 0x4a, 0xde, 0xad, 0x14, 0x55, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x99, 0xdd, 0xbb, 0x72, 0xf5, 0x8e, 0xdc, 0x7b, 0xe7, 0x9c, 0x6d, 0x47, 0x37, 0x01, 0xc9, 0xc2, 0xc9, 0x90, 0x01, 0x5d, 0x26, 0x80, 0xce, 0x2b, 0xd3, 0xdd, 0x26, 0x67, 0x2a, 0x77, 0x41, 0x06, 0x78, 0xed, 0xe7, 0xb0, 0x58, 0x93, 0x44, 0xe5, 0x79, 0xc0, 0xa6, 0x52, 0x1d, 0x2c, 0x10, 0x16, 0xaa, 0xee, 0x97, 0x05, 0x80, 0x6d, 0xba, 0x45, 0xd8, 0xd3, 0xf5, 0x98, 0x8d, 0xd1, 0x66, 0x9a, 0x1c, 0x96, 0xf5, 0x2e, 0xb4, 0x4d, 0xa3, 0x79, 0x5f, 0x81, 0xb9, 0x5c, 0xcd, 0x45, 0x80, 0xa4, 0x15, 0xb3, 0x3e, 0x05, 0xf9, 0x12, 0x62, 0x41, 0x7b, 0x97, 0x08, 0x90, 0x13, 0xd3, 0x1a, 0xe7, 0xe5, 0x68, 0x1d, 0x24, 0xdb, 0x7c, 0x78, 0xd7, 0x3a, 0x4a, 0x5d, 0x7c, 0xb7, 0xf8, 0x5d, 0xa4, 0xe2, 0x40, 0x86, 0x26, 0xc0, 0x45, 0x00, 0x80, 0x16, 0x88, 0x97, 0x3e, 0x8c, 0x5c, 0x38, 0x6b, 0xa6, 0x3f, 0x7d, 0x80, 0xb4, 0xec, 0x1f, 0x89, 0x0a, 0xd3, 0x64, 0x3a, 0x85, 0xab, 0xd7, 0x0b, 0x17, 0x68, 0xc1, 0x41, 0xfc, 0xe6, 0xa0, 0x2d, 0xc8, 0x0e, 0xfd, 0xf0, 0x28, 0xf3, 0xe0, 0xb7, 0x98, 0xf3, 0xc9, 0x93, 0x97, 0xeb, 0x7f, 0x81, 0x13, 0x86, 0x95, 0x17, 0x45, 0x0d, 0x3e, 0x0d, 0x35, 0x5d, 0x2d, 0xa4, 0xa4, 0x04, 0xaa, 0x22, 0x7b, 0x40, 0x47, 0xc7, 0x31, 0x88, 0x99, 0x03, 0xaf, 0xf7, 0xe6, 0x14, 0x1b, 0xcf, 0xf7, 0x3b, 0x5d, 0xc6, 0x48, 0x24, 0x42, 0xcf, 0xfe, 0x10, 0x10, 0xc0, 0x2b, 0x23, 0x28, 0xb8, 0x4a, 0x3a, 0xff, 0x21, 0xd4, 0xa3, 0x15, 0x51, 0xbc, 0xd4, 0xd2, 0x09, 0x77, 0x77, 0x3e, 0x65, 0xb4, 0x3d, 0x1e, 0xd6, 0xc0, 0xe9, 0x3b, 0x0e, 0xee, 0xa8, 0x68, 0x46, 0x25, 0x47, 0x57, 0x08, 0x2e, 0x80, 0x99, 0x9b, 0x49, 0xfb, 0xd9, 0xc5, 0x46, 0xd7, 0x31, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x63, 0x02, 0x01, 0x01, 0x30, 0x3c, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x52, 0x36, 0x24, 0xc4, 0x4b, 0x44, 0x3b, 0xa3, 0xb4, 0xee, 0x76, 0xbf, 0xaf, 0x33, 0xc7, 0x41, 0x00, 0xb8, 0x92, 0xfb, 0xd6, 0x6a, 0xf5, 0xc4, 0x55, 0xae, 0x94, 0x54, 0xe4, 0x38, 0xfd, 0x36, 0x58, 0x8b, 0x9c, 0xef, 0xf6, 0x45, 0x6f, 0x7b, 0xa4, 0xc5, 0x82, 0xbf, 0x5b, 0x75, 0x34, 0xe5, 0xab, 0x88, 0xf1, 0x1f, 0x39, 0x1d, 0xc4, 0xb4, 0x3b, 0x74, 0xc1, 0xc0, 0xd4, 0xc8, 0xfc, 0xff, 0x64, 0x36, 0x91, 0x5b, 0xb2, 0x0b, 0x13, 0x4e, 0x69, 0x6f, 0x1f, 0x32, 0xd3, 0x3c, 0xcb, 0x58, 0xd4, 0xb3, 0x90, 0x50, 0xb9, 0xe9, 0x80, 0x26, 0xaf, 0xc6, 0x7c, 0x9e, 0xd1, 0x73, 0xd1, 0xe4, 0xd3, 0x65, 0x4d, 0x59, 0xd7, 0x76, 0xa4, 0x8d, 0x79, 0xa6, 0x08, 0x30, 0x47, 0x0a, 0xd7, 0x72, 0x90, 0x58, 0x53, 0x15, 0x20, 0x3b, 0x0a, 0xc3, 0xfd, 0xb3, 0x74, 0x5f, 0x06, 0xcf, 0x36, 0x53, 0x66, 0x8d, 0xa1, 0x84, 0xe6, 0x71, 0x98, 0x99, 0x2b, 0x73, 0x42, 0x3b, 0x08, 0xff, 0x9b, 0x37, 0x59, 0xa9, 0x3a, 0x9f, 0x49, 0xc7, 0x66, 0x13, 0xb4, 0x4d, 0x31, 0x81, 0x9a, 0x11, 0xcc, 0x0a, 0x00, 0x46, 0x38, 0xec, 0x44, 0xc8, 0xfd, 0x3e, 0x98, 0x7e, 0x8b, 0xfe, 0x35, 0x5a, 0x4c, 0x74, 0x9e, 0x13, 0x5c, 0x7d, 0x5a, 0x5a, 0x40, 0x00, 0x27, 0xcb, 0xec, 0x92, 0x7a, 0x48, 0x39, 0xa0, 0x0a, 0xd9, 0x24, 0x78, 0x88, 0x18, 0xc2, 0xdd, 0x18, 0xc4, 0xa7, 0xd1, 0x2d, 0x77, 0x30, 0x49, 0xb7, 0x1f, 0x00, 0x5a, 0x3b, 0x66, 0x17, 0xa7, 0x03, 0x55, 0xd9, 0x0e, 0x6e, 0x1c, 0xde, 0xcb, 0x52, 0x88, 0xfe, 0x44, 0x46, 0x60, 0xe8, 0xb7, 0xc3, 0xac, 0x69, 0x7d, 0x07, 0x37, 0x26, 0x9f, 0xd2, 0xc5, 0x5f, 0xd9, 0x0a, 0x9d, 0x04, 0x60, 0xba, 0x7c, 0x53, 0xe3, 0x24, 0x18, 0x06, 0xd4, 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72, 0x59, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x23, 0x47, 0x63, 0xd4, 0xd8, 0x7e, 0x4f, 0x72, 0xdc, 0x78, 0x23, 0x0f, 0x45, 0x88, 0x6b, 0x86, 0xb9, 0xb8, 0x23, 0x5b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x36, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x36, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbf, 0x26, 0xdc, 0x11, 0xa4, 0xfc, 0xbe, 0xea, 0x1d, 0x0a, 0x8e, 0x23, 0x26, 0x60, 0xe8, 0xc4, 0x88, 0x2b, 0xf4, 0xd3, 0x98, 0x7f, 0xc3, 0x07, 0x7f, 0x4a, 0xc5, 0xa2, 0x6f, 0xa0, 0x7b, 0xee, 0x5b, 0x20, 0xdd, 0x0f, 0x96, 0x56, 0x9c, 0x74, 0xf3, 0x37, 0x4f, 0x47, 0x17, 0x4d, 0x90, 0x0b, 0x0e, 0xb5, 0xf0, 0xc7, 0x6a, 0xb6, 0x88, 0x48, 0xa4, 0xe9, 0x6e, 0xcf, 0xfa, 0x71, 0xaf, 0x74, 0xd4, 0x37, 0x66, 0xd7, 0x57, 0x83, 0xc9, 0x64, 0xb1, 0xd2, 0xa0, 0xba, 0xcd, 0xed, 0x95, 0xf9, 0x17, 0x1c, 0x05, 0x5c, 0x3e, 0x6f, 0x1d, 0x82, 0x20, 0x15, 0x5d, 0x20, 0xca, 0xbf, 0xc3, 0x8c, 0x8a, 0x48, 0x35, 0xfc, 0xa4, 0xf5, 0x88, 0x4b, 0x60, 0x6e, 0x9e, 0x26, 0x0f, 0x26, 0x6b, 0x97, 0x8b, 0xb2, 0x92, 0x76, 0x6b, 0xc6, 0x86, 0xc8, 0xb2, 0xf9, 0xbd, 0x31, 0x3e, 0x6e, 0xcd, 0x0a, 0xd3, 0x0a, 0x1c, 0xce, 0x41, 0xca, 0xc3, 0x6b, 0x37, 0xfd, 0xdb, 0xae, 0x0f, 0x18, 0xce, 0x83, 0xaa, 0x2f, 0x0e, 0x1a, 0x10, 0x7a, 0x93, 0xc3, 0x92, 0xae, 0xa2, 0xce, 0xb5, 0xf3, 0xa0, 0xd4, 0x5c, 0x11, 0xa3, 0x0c, 0x16, 0x7b, 0xdd, 0x72, 0x78, 0x89, 0x12, 0x0b, 0x64, 0xf7, 0xe5, 0x56, 0xa1, 0x14, 0x9a, 0xf5, 0x51, 0x45, 0xd9, 0xc2, 0x45, 0xdb, 0x0c, 0xb1, 0xea, 0xb2, 0x03, 0x65, 0xd7, 0xc9, 0xa4, 0x74, 0x0c, 0x71, 0x08, 0x11, 0x81, 0xf6, 0xa2, 0x0d, 0x37, 0xab, 0xe8, 0x2f, 0x37, 0x7a, 0x15, 0xf0, 0x22, 0x23, 0x50, 0xff, 0x93, 0xfd, 0xba, 0x08, 0xd2, 0x90, 0xe2, 0x65, 0x72, 0x44, 0x74, 0x94, 0xe4, 0xc6, 0xfc, 0xed, 0x24, 0xd5, 0xad, 0x32, 0x1d, 0x4a, 0x62, 0x7b, 0x45, 0xcd, 0x64, 0xd6, 0xfa, 0x91, 0x4c, 0x0a, 0xfb, 0x49, 0x21, 0x5d, 0xb9, 0xbb, 0xbb, 0x93, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x52, 0x48, 0x00, 0xfb, 0xf6, 0x7e, 0xe8, 0x24, 0x81, 0xb1, 0x8d, 0x50, 0x51, 0x7f, 0x7a, 0xe1, 0xb4, 0x96, 0xa1, 0x08, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x52, 0x48, 0x00, 0xfb, 0xf6, 0x7e, 0xe8, 0x24, 0x81, 0xb1, 0x8d, 0x50, 0x51, 0x7f, 0x7a, 0xe1, 0xb4, 0x96, 0xa1, 0x08, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x05, 0xc9, 0x4e, 0x07, 0xb5, 0x18, 0xbf, 0xb6, 0x5e, 0x00, 0x7c, 0xd7, 0x59, 0x7b, 0x57, 0x0b, 0x87, 0xf9, 0x2d, 0x63, 0xda, 0xd0, 0x95, 0xd5, 0x55, 0x86, 0xf4, 0x49, 0x5d, 0x3d, 0xb9, 0xae, 0x0a, 0xc8, 0x29, 0x14, 0x72, 0x8b, 0x3c, 0x41, 0x7e, 0x0a, 0x11, 0xee, 0x21, 0x81, 0x1b, 0x47, 0x10, 0x2a, 0xd9, 0xca, 0x97, 0x62, 0x46, 0xce, 0x15, 0x71, 0x28, 0x3f, 0xf1, 0x94, 0x66, 0x2f, 0x37, 0x7b, 0x17, 0x46, 0x59, 0x3e, 0xac, 0x78, 0xb6, 0x23, 0x75, 0x18, 0x06, 0x17, 0xe6, 0xe7, 0x02, 0xe5, 0x7b, 0x86, 0xaf, 0x95, 0x51, 0x60, 0x72, 0xdb, 0x1e, 0x7e, 0xba, 0x67, 0x94, 0xf2, 0x95, 0x0e, 0x18, 0xa1, 0xb9, 0xee, 0x23, 0x5b, 0xbd, 0x75, 0x4a, 0x2a, 0xc4, 0x94, 0x91, 0xdc, 0x67, 0xc5, 0x7b, 0x92, 0xb2, 0xce, 0x8c, 0x94, 0xba, 0xe1, 0xa0, 0x07, 0xf5, 0xf5, 0x60, 0x8e, 0xa8, 0x69, 0xff, 0x51, 0x39, 0xa0, 0x0d, 0x98, 0xf2, 0xd2, 0xf2, 0x30, 0x4d, 0x93, 0xb7, 0x62, 0xb3, 0x1f, 0xa9, 0xa1, 0x44, 0xeb, 0x2f, 0x30, 0x99, 0x6f, 0x4f, 0xca, 0xce, 0x47, 0x97, 0x83, 0x5c, 0x00, 0xdc, 0xc9, 0xd8, 0x77, 0x97, 0xe3, 0xd3, 0x68, 0xd4, 0x9f, 0xd9, 0x48, 0xb5, 0xaf, 0x02, 0x23, 0x4c, 0xc2, 0x14, 0xfb, 0xb6, 0xaf, 0x80, 0x9e, 0x17, 0xb4, 0xc1, 0xa7, 0x8e, 0xb6, 0x4f, 0x1b, 0x86, 0xe4, 0x45, 0x85, 0x93, 0x04, 0xf1, 0xf4, 0x8a, 0x47, 0x0b, 0x94, 0x4d, 0x0a, 0x00, 0x19, 0xe3, 0xc0, 0x96, 0xf4, 0x75, 0x96, 0x63, 0x64, 0x64, 0x5b, 0x74, 0x7f, 0xb9, 0x83, 0x32, 0x97, 0xb3, 0xe4, 0x46, 0x94, 0x7f, 0xc0, 0x7a, 0x2f, 0xad, 0xd8, 0x26, 0xe1, 0xf3, 0x3b, 0x36, 0xca, 0xc3, 0x26, 0x7a, 0x37, 0xbc, 0x01, 0x5b, 0xc0, 0xfd, 0x62, 0x97, 0x5d, 0x7f, 0xd5 }; unsigned int svc_db_by_PK_auth_len = 2133; libstb-secvar-main/test/data/svc_dbx_by_KEK_auth.h000066400000000000000000000204651470177641100224550ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char svc_dbx_by_KEK_auth[] = { 0xe4, 0x07, 0x0a, 0x10, 0x0f, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x04, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x04, 0xd0, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x04, 0xc1, 0x30, 0x82, 0x04, 0xbd, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x03, 0x2d, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x52, 0x14, 0xdf, 0x84, 0x5c, 0x98, 0xf8, 0x1d, 0xca, 0xe4, 0x20, 0x45, 0x74, 0xb6, 0x11, 0xec, 0x30, 0xb8, 0xbf, 0xcd, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf2, 0x78, 0x86, 0xc0, 0xe9, 0x0b, 0x63, 0xd2, 0xc2, 0xb8, 0xb3, 0xb2, 0xcb, 0xc7, 0x52, 0x73, 0xf5, 0xfa, 0x2e, 0x1f, 0xf6, 0x8f, 0x53, 0xf7, 0x11, 0x98, 0xe4, 0x18, 0x3b, 0x1c, 0x8a, 0x60, 0x05, 0x3f, 0xba, 0x14, 0xf1, 0xd4, 0x40, 0x66, 0xcc, 0x46, 0x38, 0xc1, 0x1d, 0x62, 0x60, 0xee, 0x9a, 0x27, 0x03, 0x0c, 0x10, 0x7b, 0xb5, 0x9a, 0x2c, 0x90, 0xd4, 0x16, 0x4a, 0xb7, 0x28, 0x29, 0x75, 0xd9, 0xc6, 0x76, 0xe4, 0xbc, 0x56, 0xd4, 0x0d, 0xa7, 0x89, 0x82, 0xc6, 0xbd, 0xab, 0xe3, 0x1c, 0xe0, 0x2d, 0x83, 0x65, 0xc6, 0xba, 0xf8, 0x8c, 0xbe, 0x39, 0xf6, 0x58, 0x4f, 0xcd, 0xc0, 0x04, 0xa4, 0xe5, 0xbe, 0xb9, 0xcf, 0xe5, 0x6b, 0x5b, 0xfa, 0xa8, 0x3e, 0x85, 0x3d, 0x8b, 0xd5, 0x79, 0x05, 0x96, 0x9c, 0x02, 0xea, 0x75, 0x7f, 0xcb, 0x92, 0x04, 0x91, 0x47, 0xe4, 0xc9, 0x94, 0x05, 0xef, 0xe2, 0x44, 0xbc, 0xc7, 0x1a, 0x00, 0x93, 0x40, 0x49, 0x77, 0x55, 0xc1, 0xa1, 0xb0, 0xb2, 0xcf, 0x50, 0x87, 0x80, 0x17, 0x11, 0xf6, 0x84, 0xf5, 0xea, 0x6c, 0xc3, 0xfa, 0xe4, 0xeb, 0x20, 0x24, 0x20, 0x81, 0xf3, 0x1a, 0x98, 0x71, 0x69, 0x33, 0x3a, 0x8e, 0x34, 0x6a, 0x40, 0x13, 0x83, 0x87, 0x8d, 0xa1, 0xf6, 0x8b, 0x20, 0x39, 0x76, 0x41, 0x0f, 0x3b, 0x3a, 0xec, 0x73, 0xe0, 0xca, 0x29, 0x83, 0xa0, 0xd7, 0x17, 0x4d, 0xf8, 0xe9, 0x93, 0x24, 0xb3, 0xf3, 0xf0, 0x01, 0xe4, 0x25, 0x20, 0x78, 0x55, 0x60, 0x1d, 0xed, 0x54, 0x54, 0x7b, 0x91, 0x5d, 0x7d, 0x6c, 0x62, 0x0a, 0xb7, 0xb4, 0xea, 0x15, 0xc7, 0xbd, 0xb5, 0xda, 0xfb, 0x23, 0x0a, 0x45, 0xbc, 0xb2, 0x63, 0xda, 0xb4, 0x09, 0xbe, 0x0b, 0x5d, 0x1c, 0x80, 0xfb, 0x7e, 0x6a, 0x72, 0x11, 0x22, 0x9f, 0xb5, 0xc9, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x89, 0x01, 0xe1, 0x2a, 0x0f, 0x43, 0x6b, 0xb0, 0xc5, 0x87, 0x21, 0xba, 0xed, 0xdf, 0x49, 0x4c, 0x6e, 0x66, 0xda, 0x23, 0x34, 0x1d, 0xc7, 0x5f, 0x68, 0xdb, 0x9b, 0x74, 0xd5, 0xd9, 0x68, 0x39, 0x91, 0x63, 0xd4, 0x34, 0x24, 0xbe, 0xa9, 0x03, 0x47, 0x6e, 0x99, 0x99, 0x34, 0x75, 0x69, 0x3b, 0xbc, 0x25, 0x38, 0xed, 0x38, 0xda, 0x59, 0x8d, 0x3c, 0xd6, 0xd8, 0x0f, 0x9b, 0x06, 0x5c, 0xa3, 0x39, 0xdc, 0xea, 0x27, 0xf6, 0x97, 0x4f, 0xf3, 0x61, 0xdf, 0xef, 0x79, 0x21, 0xf3, 0x81, 0xd2, 0x78, 0xb3, 0x08, 0xef, 0xa8, 0x69, 0xfb, 0x99, 0x0b, 0x75, 0x4a, 0x59, 0xbf, 0x1a, 0xa8, 0x53, 0xd5, 0x88, 0x3a, 0x72, 0xf8, 0xb6, 0xef, 0xa6, 0xec, 0x9d, 0xfa, 0x86, 0x2d, 0x0a, 0x10, 0xde, 0xb5, 0x03, 0x1f, 0x56, 0x8e, 0x5e, 0xaa, 0x3f, 0x41, 0x4f, 0x4d, 0x1e, 0xd1, 0x3c, 0x15, 0xf6, 0x2d, 0xd6, 0x0f, 0xc2, 0x09, 0xd8, 0x50, 0x69, 0x53, 0x56, 0x5a, 0x93, 0x72, 0xa6, 0x91, 0x69, 0x89, 0x9f, 0x5c, 0xac, 0xca, 0xfa, 0xa5, 0xa7, 0x98, 0xc6, 0xeb, 0xe3, 0xb3, 0x76, 0xd7, 0x36, 0x1a, 0x90, 0x94, 0x97, 0xf4, 0x77, 0xc7, 0xf2, 0xcc, 0x55, 0xcd, 0x65, 0x38, 0x3b, 0x0b, 0x14, 0xc2, 0xb9, 0x43, 0xb3, 0x31, 0x7b, 0xe5, 0x78, 0xa4, 0xde, 0xd8, 0x55, 0x21, 0x00, 0x58, 0x64, 0xd6, 0x43, 0xe9, 0x20, 0xee, 0x82, 0xa8, 0x65, 0xd3, 0x29, 0x79, 0xe1, 0xe5, 0x9d, 0x6e, 0x9d, 0xc0, 0xfa, 0x0a, 0xa1, 0xac, 0xeb, 0x97, 0x69, 0x80, 0xc6, 0xa0, 0xb7, 0x7e, 0x88, 0x4e, 0x12, 0xf0, 0x0d, 0xf7, 0xe5, 0xf8, 0x60, 0x5f, 0x24, 0x50, 0xe9, 0x92, 0x1a, 0xbb, 0xd4, 0xa9, 0xde, 0xa6, 0x7a, 0x15, 0xea, 0xcc, 0x8a, 0xe3, 0x56, 0x3c, 0xa9, 0xf5, 0x31, 0x3d, 0x33, 0x2e, 0xf2, 0x31, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x63, 0x02, 0x01, 0x01, 0x30, 0x3c, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x02, 0x14, 0x52, 0x14, 0xdf, 0x84, 0x5c, 0x98, 0xf8, 0x1d, 0xca, 0xe4, 0x20, 0x45, 0x74, 0xb6, 0x11, 0xec, 0x30, 0xb8, 0xbf, 0xcd, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x7e, 0x47, 0x6c, 0x41, 0xb2, 0x94, 0x23, 0x75, 0x3e, 0xef, 0xdd, 0x8c, 0xb2, 0x18, 0xff, 0xeb, 0xb0, 0x5f, 0xee, 0x5e, 0xc2, 0xec, 0x55, 0x26, 0x2d, 0x85, 0x1b, 0x9f, 0x08, 0x47, 0xa3, 0x7f, 0xf7, 0x6a, 0x02, 0xac, 0x08, 0xcf, 0xbe, 0xd0, 0x56, 0x92, 0x72, 0x3e, 0x61, 0xe2, 0xf0, 0xde, 0xe5, 0x00, 0x96, 0xe4, 0x7a, 0x1d, 0xc7, 0x34, 0x66, 0xf6, 0xb0, 0xad, 0x7a, 0xe8, 0xfa, 0xb7, 0x47, 0x6d, 0xbc, 0x77, 0x70, 0x99, 0xe3, 0x2b, 0x15, 0x7d, 0x13, 0x2a, 0x67, 0xea, 0x8f, 0x34, 0x33, 0x46, 0xcc, 0x86, 0x9d, 0x91, 0x17, 0x17, 0xa1, 0x78, 0x84, 0x1c, 0x19, 0x52, 0x44, 0xa9, 0xff, 0x7d, 0x6b, 0x38, 0x2e, 0xc9, 0x5b, 0x32, 0x2c, 0x48, 0xb8, 0xc0, 0x65, 0xa1, 0xd6, 0x20, 0x34, 0x16, 0xb0, 0x94, 0x08, 0xfe, 0x7b, 0x81, 0xcf, 0x65, 0xca, 0x3a, 0x70, 0x34, 0x15, 0x6a, 0xdb, 0x5c, 0xb5, 0xe7, 0x06, 0xd5, 0x6f, 0x1c, 0x82, 0x0b, 0xbe, 0xd9, 0x01, 0x9b, 0x4d, 0x1a, 0x73, 0x24, 0xfa, 0xcd, 0x95, 0x29, 0x6c, 0x4e, 0xf0, 0xa8, 0x2b, 0xea, 0x82, 0x0d, 0xac, 0xe0, 0xbe, 0x29, 0x73, 0x75, 0x54, 0x96, 0xc5, 0xbf, 0x59, 0xde, 0x01, 0x66, 0x95, 0x11, 0xed, 0x92, 0xa5, 0x88, 0x1a, 0xdc, 0x63, 0x5a, 0xa3, 0x0a, 0xf3, 0xba, 0xd7, 0x31, 0xdc, 0x7a, 0x67, 0xf4, 0xc2, 0x5c, 0xaf, 0x8a, 0x2f, 0xb9, 0x74, 0xb8, 0x5e, 0x28, 0x09, 0xa7, 0xda, 0x8b, 0x8e, 0xaa, 0xd6, 0x10, 0x4f, 0x61, 0x9b, 0x9e, 0x23, 0x1e, 0x6a, 0x6e, 0xc4, 0xf1, 0x36, 0x26, 0x12, 0x6d, 0x14, 0xf4, 0xc9, 0x2a, 0x1d, 0xd5, 0x34, 0x52, 0x7f, 0xc0, 0x03, 0xc8, 0xf0, 0x50, 0x2c, 0xc3, 0xa0, 0x3a, 0x6b, 0x75, 0x01, 0xa5, 0xb0, 0x44, 0xf7, 0xb2, 0x09, 0xf6, 0xb1, 0x08, 0x30, 0x61, 0x26, 0x16, 0xc4, 0xc1, 0x4c, 0x50, 0x92, 0x40, 0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x50, 0xab, 0x5d, 0x60, 0x46, 0xe0, 0x00, 0x43, 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23, 0x4d, 0x90, 0x14, 0x06, 0xd5, 0x2c, 0xf1, 0xa1, 0xd4, 0x60, 0x9a, 0xac, 0xa4, 0x46, 0x2f, 0xf0, 0xa5, 0xae, 0xee, 0x9a, 0x34, 0x93, 0x7e, 0x12, 0x59, 0xe4, 0xc8, 0x2b, 0xd6, 0xa9, 0x54, 0x26 }; unsigned int svc_dbx_by_KEK_auth_len = 1352; libstb-secvar-main/test/data/two_esl.h000066400000000000000000000247251470177641100202770ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char two_esl[] = { 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72, 0x59, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xcf, 0xf3, 0x6e, 0xc9, 0xaf, 0x12, 0x42, 0xdb, 0xa9, 0x59, 0x6d, 0xef, 0xf6, 0x0e, 0x54, 0xe8, 0x21, 0x57, 0xc4, 0x78, 0x3f, 0x6d, 0x83, 0x37, 0x1a, 0x29, 0x10, 0xd2, 0xb8, 0xb7, 0x24, 0x49, 0x5f, 0x5f, 0x32, 0xc9, 0x39, 0xdc, 0x40, 0xa4, 0x5d, 0xea, 0x7b, 0xb7, 0xb3, 0x42, 0xab, 0x43, 0x47, 0x3d, 0x91, 0x6e, 0xf1, 0x5d, 0x3f, 0xf9, 0x2d, 0x9e, 0x88, 0xc4, 0x05, 0x73, 0x9b, 0x0a, 0xa8, 0xf7, 0xb2, 0x8e, 0x24, 0x69, 0x13, 0xf0, 0xbc, 0x5d, 0xde, 0x32, 0x40, 0x42, 0x31, 0x58, 0x9e, 0x48, 0x76, 0x1f, 0x6b, 0x10, 0x19, 0x1c, 0x4e, 0x45, 0x82, 0x19, 0xc0, 0xed, 0xfc, 0x5c, 0x7c, 0x19, 0xfd, 0x85, 0x13, 0x2b, 0xf0, 0x38, 0x83, 0x7b, 0xe5, 0x1d, 0x86, 0x70, 0xed, 0x8f, 0x52, 0x16, 0x60, 0x14, 0xfb, 0xaf, 0x23, 0x19, 0xa5, 0x45, 0x44, 0x91, 0x54, 0xd0, 0xe8, 0x79, 0x34, 0xbe, 0x4f, 0xb3, 0x8c, 0x56, 0x8c, 0x7c, 0xbf, 0x6a, 0xa2, 0x44, 0x04, 0x51, 0xe5, 0x0f, 0x30, 0x04, 0xe9, 0x90, 0xb1, 0x8a, 0xe3, 0x9b, 0x95, 0xb1, 0xd6, 0xde, 0x9e, 0x98, 0x14, 0x07, 0x63, 0xbd, 0x88, 0x94, 0x54, 0xb6, 0x03, 0x8d, 0xf5, 0x8e, 0xca, 0x82, 0xc8, 0xb1, 0x78, 0xba, 0xb4, 0x21, 0x45, 0x6f, 0xd4, 0x0c, 0xda, 0xcb, 0x81, 0x1a, 0x9b, 0xb2, 0x0c, 0xa9, 0x7c, 0x48, 0x84, 0xc8, 0xbd, 0xce, 0x46, 0x1b, 0x8b, 0x38, 0xe2, 0x67, 0x50, 0x3c, 0x3e, 0x3e, 0x32, 0xec, 0x0b, 0x39, 0xc7, 0xe0, 0xd5, 0x00, 0xc5, 0x7a, 0xd3, 0x1c, 0xd1, 0xfb, 0x0a, 0xc7, 0x5b, 0x1d, 0x21, 0x3d, 0x50, 0x53, 0x87, 0xa1, 0xb4, 0x16, 0x5b, 0x1e, 0x80, 0x80, 0xaa, 0xe5, 0xf9, 0x69, 0x6c, 0x48, 0xab, 0x45, 0x66, 0x05, 0x04, 0xc7, 0xad, 0xc1, 0x24, 0x4a, 0xde, 0xad, 0x14, 0x55, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x99, 0xdd, 0xbb, 0x72, 0xf5, 0x8e, 0xdc, 0x7b, 0xe7, 0x9c, 0x6d, 0x47, 0x37, 0x01, 0xc9, 0xc2, 0xc9, 0x90, 0x01, 0x5d, 0x26, 0x80, 0xce, 0x2b, 0xd3, 0xdd, 0x26, 0x67, 0x2a, 0x77, 0x41, 0x06, 0x78, 0xed, 0xe7, 0xb0, 0x58, 0x93, 0x44, 0xe5, 0x79, 0xc0, 0xa6, 0x52, 0x1d, 0x2c, 0x10, 0x16, 0xaa, 0xee, 0x97, 0x05, 0x80, 0x6d, 0xba, 0x45, 0xd8, 0xd3, 0xf5, 0x98, 0x8d, 0xd1, 0x66, 0x9a, 0x1c, 0x96, 0xf5, 0x2e, 0xb4, 0x4d, 0xa3, 0x79, 0x5f, 0x81, 0xb9, 0x5c, 0xcd, 0x45, 0x80, 0xa4, 0x15, 0xb3, 0x3e, 0x05, 0xf9, 0x12, 0x62, 0x41, 0x7b, 0x97, 0x08, 0x90, 0x13, 0xd3, 0x1a, 0xe7, 0xe5, 0x68, 0x1d, 0x24, 0xdb, 0x7c, 0x78, 0xd7, 0x3a, 0x4a, 0x5d, 0x7c, 0xb7, 0xf8, 0x5d, 0xa4, 0xe2, 0x40, 0x86, 0x26, 0xc0, 0x45, 0x00, 0x80, 0x16, 0x88, 0x97, 0x3e, 0x8c, 0x5c, 0x38, 0x6b, 0xa6, 0x3f, 0x7d, 0x80, 0xb4, 0xec, 0x1f, 0x89, 0x0a, 0xd3, 0x64, 0x3a, 0x85, 0xab, 0xd7, 0x0b, 0x17, 0x68, 0xc1, 0x41, 0xfc, 0xe6, 0xa0, 0x2d, 0xc8, 0x0e, 0xfd, 0xf0, 0x28, 0xf3, 0xe0, 0xb7, 0x98, 0xf3, 0xc9, 0x93, 0x97, 0xeb, 0x7f, 0x81, 0x13, 0x86, 0x95, 0x17, 0x45, 0x0d, 0x3e, 0x0d, 0x35, 0x5d, 0x2d, 0xa4, 0xa4, 0x04, 0xaa, 0x22, 0x7b, 0x40, 0x47, 0xc7, 0x31, 0x88, 0x99, 0x03, 0xaf, 0xf7, 0xe6, 0x14, 0x1b, 0xcf, 0xf7, 0x3b, 0x5d, 0xc6, 0x48, 0x24, 0x42, 0xcf, 0xfe, 0x10, 0x10, 0xc0, 0x2b, 0x23, 0x28, 0xb8, 0x4a, 0x3a, 0xff, 0x21, 0xd4, 0xa3, 0x15, 0x51, 0xbc, 0xd4, 0xd2, 0x09, 0x77, 0x77, 0x3e, 0x65, 0xb4, 0x3d, 0x1e, 0xd6, 0xc0, 0xe9, 0x3b, 0x0e, 0xee, 0xa8, 0x68, 0x46, 0x25, 0x47, 0x57, 0x08, 0x2e, 0x80, 0x99, 0x9b, 0x49, 0xfb, 0xd9, 0xc5, 0x46, 0xd7, 0xa1, 0x59, 0xc0, 0xa5, 0xe4, 0x94, 0xa7, 0x4a, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72, 0x59, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x52, 0x14, 0xdf, 0x84, 0x5c, 0x98, 0xf8, 0x1d, 0xca, 0xe4, 0x20, 0x45, 0x74, 0xb6, 0x11, 0xec, 0x30, 0xb8, 0xbf, 0xcd, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xf2, 0x78, 0x86, 0xc0, 0xe9, 0x0b, 0x63, 0xd2, 0xc2, 0xb8, 0xb3, 0xb2, 0xcb, 0xc7, 0x52, 0x73, 0xf5, 0xfa, 0x2e, 0x1f, 0xf6, 0x8f, 0x53, 0xf7, 0x11, 0x98, 0xe4, 0x18, 0x3b, 0x1c, 0x8a, 0x60, 0x05, 0x3f, 0xba, 0x14, 0xf1, 0xd4, 0x40, 0x66, 0xcc, 0x46, 0x38, 0xc1, 0x1d, 0x62, 0x60, 0xee, 0x9a, 0x27, 0x03, 0x0c, 0x10, 0x7b, 0xb5, 0x9a, 0x2c, 0x90, 0xd4, 0x16, 0x4a, 0xb7, 0x28, 0x29, 0x75, 0xd9, 0xc6, 0x76, 0xe4, 0xbc, 0x56, 0xd4, 0x0d, 0xa7, 0x89, 0x82, 0xc6, 0xbd, 0xab, 0xe3, 0x1c, 0xe0, 0x2d, 0x83, 0x65, 0xc6, 0xba, 0xf8, 0x8c, 0xbe, 0x39, 0xf6, 0x58, 0x4f, 0xcd, 0xc0, 0x04, 0xa4, 0xe5, 0xbe, 0xb9, 0xcf, 0xe5, 0x6b, 0x5b, 0xfa, 0xa8, 0x3e, 0x85, 0x3d, 0x8b, 0xd5, 0x79, 0x05, 0x96, 0x9c, 0x02, 0xea, 0x75, 0x7f, 0xcb, 0x92, 0x04, 0x91, 0x47, 0xe4, 0xc9, 0x94, 0x05, 0xef, 0xe2, 0x44, 0xbc, 0xc7, 0x1a, 0x00, 0x93, 0x40, 0x49, 0x77, 0x55, 0xc1, 0xa1, 0xb0, 0xb2, 0xcf, 0x50, 0x87, 0x80, 0x17, 0x11, 0xf6, 0x84, 0xf5, 0xea, 0x6c, 0xc3, 0xfa, 0xe4, 0xeb, 0x20, 0x24, 0x20, 0x81, 0xf3, 0x1a, 0x98, 0x71, 0x69, 0x33, 0x3a, 0x8e, 0x34, 0x6a, 0x40, 0x13, 0x83, 0x87, 0x8d, 0xa1, 0xf6, 0x8b, 0x20, 0x39, 0x76, 0x41, 0x0f, 0x3b, 0x3a, 0xec, 0x73, 0xe0, 0xca, 0x29, 0x83, 0xa0, 0xd7, 0x17, 0x4d, 0xf8, 0xe9, 0x93, 0x24, 0xb3, 0xf3, 0xf0, 0x01, 0xe4, 0x25, 0x20, 0x78, 0x55, 0x60, 0x1d, 0xed, 0x54, 0x54, 0x7b, 0x91, 0x5d, 0x7d, 0x6c, 0x62, 0x0a, 0xb7, 0xb4, 0xea, 0x15, 0xc7, 0xbd, 0xb5, 0xda, 0xfb, 0x23, 0x0a, 0x45, 0xbc, 0xb2, 0x63, 0xda, 0xb4, 0x09, 0xbe, 0x0b, 0x5d, 0x1c, 0x80, 0xfb, 0x7e, 0x6a, 0x72, 0x11, 0x22, 0x9f, 0xb5, 0xc9, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x0d, 0xab, 0x43, 0x70, 0xe4, 0x55, 0x04, 0x3e, 0x91, 0xe0, 0x06, 0x4a, 0x06, 0x91, 0x09, 0x0d, 0x05, 0xe7, 0x59, 0xfb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x89, 0x01, 0xe1, 0x2a, 0x0f, 0x43, 0x6b, 0xb0, 0xc5, 0x87, 0x21, 0xba, 0xed, 0xdf, 0x49, 0x4c, 0x6e, 0x66, 0xda, 0x23, 0x34, 0x1d, 0xc7, 0x5f, 0x68, 0xdb, 0x9b, 0x74, 0xd5, 0xd9, 0x68, 0x39, 0x91, 0x63, 0xd4, 0x34, 0x24, 0xbe, 0xa9, 0x03, 0x47, 0x6e, 0x99, 0x99, 0x34, 0x75, 0x69, 0x3b, 0xbc, 0x25, 0x38, 0xed, 0x38, 0xda, 0x59, 0x8d, 0x3c, 0xd6, 0xd8, 0x0f, 0x9b, 0x06, 0x5c, 0xa3, 0x39, 0xdc, 0xea, 0x27, 0xf6, 0x97, 0x4f, 0xf3, 0x61, 0xdf, 0xef, 0x79, 0x21, 0xf3, 0x81, 0xd2, 0x78, 0xb3, 0x08, 0xef, 0xa8, 0x69, 0xfb, 0x99, 0x0b, 0x75, 0x4a, 0x59, 0xbf, 0x1a, 0xa8, 0x53, 0xd5, 0x88, 0x3a, 0x72, 0xf8, 0xb6, 0xef, 0xa6, 0xec, 0x9d, 0xfa, 0x86, 0x2d, 0x0a, 0x10, 0xde, 0xb5, 0x03, 0x1f, 0x56, 0x8e, 0x5e, 0xaa, 0x3f, 0x41, 0x4f, 0x4d, 0x1e, 0xd1, 0x3c, 0x15, 0xf6, 0x2d, 0xd6, 0x0f, 0xc2, 0x09, 0xd8, 0x50, 0x69, 0x53, 0x56, 0x5a, 0x93, 0x72, 0xa6, 0x91, 0x69, 0x89, 0x9f, 0x5c, 0xac, 0xca, 0xfa, 0xa5, 0xa7, 0x98, 0xc6, 0xeb, 0xe3, 0xb3, 0x76, 0xd7, 0x36, 0x1a, 0x90, 0x94, 0x97, 0xf4, 0x77, 0xc7, 0xf2, 0xcc, 0x55, 0xcd, 0x65, 0x38, 0x3b, 0x0b, 0x14, 0xc2, 0xb9, 0x43, 0xb3, 0x31, 0x7b, 0xe5, 0x78, 0xa4, 0xde, 0xd8, 0x55, 0x21, 0x00, 0x58, 0x64, 0xd6, 0x43, 0xe9, 0x20, 0xee, 0x82, 0xa8, 0x65, 0xd3, 0x29, 0x79, 0xe1, 0xe5, 0x9d, 0x6e, 0x9d, 0xc0, 0xfa, 0x0a, 0xa1, 0xac, 0xeb, 0x97, 0x69, 0x80, 0xc6, 0xa0, 0xb7, 0x7e, 0x88, 0x4e, 0x12, 0xf0, 0x0d, 0xf7, 0xe5, 0xf8, 0x60, 0x5f, 0x24, 0x50, 0xe9, 0x92, 0x1a, 0xbb, 0xd4, 0xa9, 0xde, 0xa6, 0x7a, 0x15, 0xea, 0xcc, 0x8a, 0xe3, 0x56, 0x3c, 0xa9, 0xf5, 0x31, 0x3d, 0x33, 0x2e, 0xf2 }; unsigned int two_esl_len = 1714; libstb-secvar-main/test/data/wipe_by_PK_auth.h000066400000000000000000000212151470177641100216630ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ unsigned char wipe_by_PK_auth[] = { 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xe7, 0x07, 0x03, 0x19, 0x11, 0x31, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x04, 0x00, 0x00, 0x00, 0x02, 0xf1, 0x0e, 0x9d, 0xd2, 0xaf, 0x4a, 0xdf, 0x68, 0xee, 0x49, 0x8a, 0xa9, 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7, 0x30, 0x82, 0x04, 0xd0, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x04, 0xc1, 0x30, 0x82, 0x04, 0xbd, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x03, 0x2d, 0x30, 0x82, 0x03, 0x29, 0x30, 0x82, 0x02, 0x11, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x31, 0x36, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x31, 0x31, 0x35, 0x31, 0x39, 0x30, 0x38, 0x30, 0x35, 0x5a, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xcf, 0xf3, 0x6e, 0xc9, 0xaf, 0x12, 0x42, 0xdb, 0xa9, 0x59, 0x6d, 0xef, 0xf6, 0x0e, 0x54, 0xe8, 0x21, 0x57, 0xc4, 0x78, 0x3f, 0x6d, 0x83, 0x37, 0x1a, 0x29, 0x10, 0xd2, 0xb8, 0xb7, 0x24, 0x49, 0x5f, 0x5f, 0x32, 0xc9, 0x39, 0xdc, 0x40, 0xa4, 0x5d, 0xea, 0x7b, 0xb7, 0xb3, 0x42, 0xab, 0x43, 0x47, 0x3d, 0x91, 0x6e, 0xf1, 0x5d, 0x3f, 0xf9, 0x2d, 0x9e, 0x88, 0xc4, 0x05, 0x73, 0x9b, 0x0a, 0xa8, 0xf7, 0xb2, 0x8e, 0x24, 0x69, 0x13, 0xf0, 0xbc, 0x5d, 0xde, 0x32, 0x40, 0x42, 0x31, 0x58, 0x9e, 0x48, 0x76, 0x1f, 0x6b, 0x10, 0x19, 0x1c, 0x4e, 0x45, 0x82, 0x19, 0xc0, 0xed, 0xfc, 0x5c, 0x7c, 0x19, 0xfd, 0x85, 0x13, 0x2b, 0xf0, 0x38, 0x83, 0x7b, 0xe5, 0x1d, 0x86, 0x70, 0xed, 0x8f, 0x52, 0x16, 0x60, 0x14, 0xfb, 0xaf, 0x23, 0x19, 0xa5, 0x45, 0x44, 0x91, 0x54, 0xd0, 0xe8, 0x79, 0x34, 0xbe, 0x4f, 0xb3, 0x8c, 0x56, 0x8c, 0x7c, 0xbf, 0x6a, 0xa2, 0x44, 0x04, 0x51, 0xe5, 0x0f, 0x30, 0x04, 0xe9, 0x90, 0xb1, 0x8a, 0xe3, 0x9b, 0x95, 0xb1, 0xd6, 0xde, 0x9e, 0x98, 0x14, 0x07, 0x63, 0xbd, 0x88, 0x94, 0x54, 0xb6, 0x03, 0x8d, 0xf5, 0x8e, 0xca, 0x82, 0xc8, 0xb1, 0x78, 0xba, 0xb4, 0x21, 0x45, 0x6f, 0xd4, 0x0c, 0xda, 0xcb, 0x81, 0x1a, 0x9b, 0xb2, 0x0c, 0xa9, 0x7c, 0x48, 0x84, 0xc8, 0xbd, 0xce, 0x46, 0x1b, 0x8b, 0x38, 0xe2, 0x67, 0x50, 0x3c, 0x3e, 0x3e, 0x32, 0xec, 0x0b, 0x39, 0xc7, 0xe0, 0xd5, 0x00, 0xc5, 0x7a, 0xd3, 0x1c, 0xd1, 0xfb, 0x0a, 0xc7, 0x5b, 0x1d, 0x21, 0x3d, 0x50, 0x53, 0x87, 0xa1, 0xb4, 0x16, 0x5b, 0x1e, 0x80, 0x80, 0xaa, 0xe5, 0xf9, 0x69, 0x6c, 0x48, 0xab, 0x45, 0x66, 0x05, 0x04, 0xc7, 0xad, 0xc1, 0x24, 0x4a, 0xde, 0xad, 0x14, 0x55, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x69, 0x73, 0x3b, 0xcc, 0xa5, 0x2b, 0x5b, 0xd1, 0xfe, 0xe9, 0x73, 0xa3, 0xcb, 0x90, 0x84, 0x0a, 0xa3, 0x60, 0x5f, 0xbb, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x99, 0xdd, 0xbb, 0x72, 0xf5, 0x8e, 0xdc, 0x7b, 0xe7, 0x9c, 0x6d, 0x47, 0x37, 0x01, 0xc9, 0xc2, 0xc9, 0x90, 0x01, 0x5d, 0x26, 0x80, 0xce, 0x2b, 0xd3, 0xdd, 0x26, 0x67, 0x2a, 0x77, 0x41, 0x06, 0x78, 0xed, 0xe7, 0xb0, 0x58, 0x93, 0x44, 0xe5, 0x79, 0xc0, 0xa6, 0x52, 0x1d, 0x2c, 0x10, 0x16, 0xaa, 0xee, 0x97, 0x05, 0x80, 0x6d, 0xba, 0x45, 0xd8, 0xd3, 0xf5, 0x98, 0x8d, 0xd1, 0x66, 0x9a, 0x1c, 0x96, 0xf5, 0x2e, 0xb4, 0x4d, 0xa3, 0x79, 0x5f, 0x81, 0xb9, 0x5c, 0xcd, 0x45, 0x80, 0xa4, 0x15, 0xb3, 0x3e, 0x05, 0xf9, 0x12, 0x62, 0x41, 0x7b, 0x97, 0x08, 0x90, 0x13, 0xd3, 0x1a, 0xe7, 0xe5, 0x68, 0x1d, 0x24, 0xdb, 0x7c, 0x78, 0xd7, 0x3a, 0x4a, 0x5d, 0x7c, 0xb7, 0xf8, 0x5d, 0xa4, 0xe2, 0x40, 0x86, 0x26, 0xc0, 0x45, 0x00, 0x80, 0x16, 0x88, 0x97, 0x3e, 0x8c, 0x5c, 0x38, 0x6b, 0xa6, 0x3f, 0x7d, 0x80, 0xb4, 0xec, 0x1f, 0x89, 0x0a, 0xd3, 0x64, 0x3a, 0x85, 0xab, 0xd7, 0x0b, 0x17, 0x68, 0xc1, 0x41, 0xfc, 0xe6, 0xa0, 0x2d, 0xc8, 0x0e, 0xfd, 0xf0, 0x28, 0xf3, 0xe0, 0xb7, 0x98, 0xf3, 0xc9, 0x93, 0x97, 0xeb, 0x7f, 0x81, 0x13, 0x86, 0x95, 0x17, 0x45, 0x0d, 0x3e, 0x0d, 0x35, 0x5d, 0x2d, 0xa4, 0xa4, 0x04, 0xaa, 0x22, 0x7b, 0x40, 0x47, 0xc7, 0x31, 0x88, 0x99, 0x03, 0xaf, 0xf7, 0xe6, 0x14, 0x1b, 0xcf, 0xf7, 0x3b, 0x5d, 0xc6, 0x48, 0x24, 0x42, 0xcf, 0xfe, 0x10, 0x10, 0xc0, 0x2b, 0x23, 0x28, 0xb8, 0x4a, 0x3a, 0xff, 0x21, 0xd4, 0xa3, 0x15, 0x51, 0xbc, 0xd4, 0xd2, 0x09, 0x77, 0x77, 0x3e, 0x65, 0xb4, 0x3d, 0x1e, 0xd6, 0xc0, 0xe9, 0x3b, 0x0e, 0xee, 0xa8, 0x68, 0x46, 0x25, 0x47, 0x57, 0x08, 0x2e, 0x80, 0x99, 0x9b, 0x49, 0xfb, 0xd9, 0xc5, 0x46, 0xd7, 0x31, 0x82, 0x01, 0x67, 0x30, 0x82, 0x01, 0x63, 0x02, 0x01, 0x01, 0x30, 0x3c, 0x30, 0x24, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x4e, 0x43, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x72, 0x70, 0x02, 0x14, 0x6b, 0x7b, 0x12, 0xf0, 0xc6, 0x66, 0x78, 0x78, 0xa1, 0xa2, 0xe8, 0x79, 0x4b, 0x31, 0xa5, 0xa8, 0x9e, 0x58, 0x7a, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0xb1, 0x13, 0x03, 0x6a, 0xd3, 0x94, 0x3d, 0x9f, 0x8f, 0x29, 0x08, 0x73, 0xe7, 0xe6, 0x0c, 0xdf, 0x12, 0xf9, 0xb0, 0xa8, 0x47, 0x7a, 0x3d, 0x8e, 0x4e, 0x2a, 0xb9, 0x60, 0xd8, 0x3d, 0x63, 0x37, 0x57, 0x44, 0xce, 0xa1, 0x67, 0xa3, 0xdb, 0xc0, 0x70, 0x3b, 0x9d, 0x46, 0x9e, 0x28, 0x17, 0x9d, 0xd7, 0x86, 0xa4, 0x2d, 0xf1, 0x2c, 0x9a, 0xb7, 0x3d, 0xd1, 0x34, 0x30, 0x84, 0x0a, 0xc3, 0x2a, 0x07, 0x4c, 0xde, 0xf9, 0x77, 0xbc, 0x83, 0xf4, 0x4c, 0x86, 0x86, 0x10, 0xae, 0x00, 0xf5, 0xfd, 0x57, 0x76, 0xa1, 0x1d, 0x29, 0x15, 0xad, 0x25, 0xeb, 0x10, 0xb1, 0xce, 0x09, 0x11, 0xe0, 0xa9, 0x76, 0x13, 0x00, 0x25, 0x52, 0x84, 0x2d, 0x1b, 0x62, 0x76, 0x17, 0x91, 0xc2, 0xec, 0xa3, 0x1f, 0xe2, 0x6f, 0xa1, 0xcd, 0x0b, 0xa4, 0xb4, 0x49, 0x30, 0xd7, 0x98, 0xca, 0x0e, 0x11, 0x4d, 0x8d, 0x78, 0xff, 0x5b, 0x1c, 0x8c, 0x48, 0x7c, 0xce, 0x45, 0x95, 0x37, 0x25, 0x6e, 0x7d, 0xb9, 0x37, 0xc2, 0x50, 0x40, 0x57, 0x89, 0xb3, 0x94, 0x2a, 0xa3, 0x56, 0x12, 0x11, 0x56, 0xce, 0xfd, 0x6f, 0x72, 0x0a, 0x81, 0x71, 0xc6, 0x58, 0xf0, 0x8d, 0x51, 0xf8, 0xb6, 0xb2, 0xed, 0x7d, 0x10, 0x4b, 0x35, 0xb8, 0x3e, 0x42, 0x0a, 0x5b, 0xb2, 0x1e, 0x9d, 0x5d, 0xbf, 0xb5, 0xc3, 0x3a, 0x04, 0x5b, 0xbb, 0x0e, 0x77, 0x3b, 0x06, 0x25, 0x75, 0x6d, 0x24, 0xd9, 0xcb, 0x01, 0xde, 0x3e, 0x2f, 0xbe, 0x05, 0x2a, 0x21, 0xec, 0xc1, 0x87, 0x58, 0x5c, 0x37, 0x76, 0xbd, 0xa9, 0xee, 0xa4, 0x05, 0xcd, 0xb6, 0x7d, 0xf7, 0x72, 0x03, 0x81, 0xbf, 0x67, 0x16, 0x86, 0xb2, 0x2e, 0x33, 0x52, 0x7d, 0x97, 0xd0, 0xf9, 0x1b, 0x42, 0x23, 0x19, 0xf0, 0xea, 0x42, 0xdc, 0xf1, 0x7c, 0x7d, 0x67, 0x1c, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x65, 0x73, 0x2c, 0x20, 0x49, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x20, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x62, 0x6f, 0x6f, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x0a }; unsigned int wipe_by_PK_auth_len = 1409; libstb-secvar-main/test/test_auth2.c000066400000000000000000000055721470177641100177660ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #include "secvar/authentication_2.h" #include "secvar/pseries.h" #include #include "data/pk_auth.h" #include "data/delete_pk_sbvs_auth.h" #include "data/delete_pk_sesl_auth.h" #include "data/svc_dbx_by_KEK_auth.h" #include #include "test_utils.h" __attribute__((unused)) static const uint16_t *DBX_NAME = (const uint16_t *)"d\0b\0x\0\0\0"; int main (int argc, char **argv) { auth_data_t auth_data = { 0 }; const uint8_t *cert, *data; size_t cert_size, data_size; sv_err_t rc; timestamp_t timestamp; uint8_t *hash = NULL; printf ("testing authenticated variables unpack..."); auth_data.auth_msg = pk_auth; auth_data.auth_msg_size = pk_auth_len; rc = unpack_authenticated_variable (&auth_data, ×tamp, &cert, &cert_size, &data, &data_size); assert_rc (SV_SUCCESS); assert (cert_size > 0); assert (cert_size < pk_auth_len); assert (data_size == 857); assert (data == pk_auth + pk_auth_len - data_size); assert (le16_to_cpu(timestamp.year) == 2022); auth_data.auth_msg = delete_pk_sbvs_auth; auth_data.auth_msg_size = delete_pk_sbvs_auth_len; rc = unpack_authenticated_variable (&auth_data, ×tamp, &cert, &cert_size, &data, &data_size); assert_rc (SV_SUCCESS); assert (cert_size < delete_pk_sbvs_auth_len); assert (data_size == 0); assert (le16_to_cpu (timestamp.year) == 2022 - 1900); auth_data.auth_msg = delete_pk_sesl_auth; auth_data.auth_msg_size = delete_pk_sesl_auth_len; rc = unpack_authenticated_variable (&auth_data, ×tamp, &cert, &cert_size, &data, &data_size); assert_rc (SV_SUCCESS); assert (cert_size > 0); assert (cert_size < delete_pk_sesl_auth_len); assert (data_size == 0); assert (le16_to_cpu (timestamp.year) == 2022); auth_data.auth_msg = svc_dbx_by_KEK_auth; auth_data.auth_msg_size = svc_dbx_by_KEK_auth_len; rc = unpack_authenticated_variable (&auth_data, ×tamp, &cert, &cert_size, &data, &data_size); assert_rc (SV_SUCCESS); assert (cert_size > 0); assert (cert_size < svc_dbx_by_KEK_auth_len); assert (data_size > 0); assert (data_size < svc_dbx_by_KEK_auth_len); assert (le16_to_cpu (timestamp.year) == 2020); auth_data.name = (uint16_t *) DBX_NAME; auth_data.vendor = (uuid_t *) &SV_IMAGE_SECURITY_DATABASE_GUID; auth_data.attributes = SECVAR_ATTRIBUTES; rc = construct_auth2_hash (&auth_data, ×tamp, data, data_size, &hash); /* * 6b:bb:47:0b:52:59:f6:9e:02:07:94:39:93:ea:4b:25:8b:51:0e:df:c5:1f: * a5:bd:ba:df:9f:ba:92:4e:4b:82 */ assert_rc (SV_SUCCESS); assert (hash[0] == 0x6b); assert (hash[1] == 0xbb); assert (hash[30] == 0x4b); assert (hash[31] == 0x82); free (hash); printf("PASS\n"); return 0; } libstb-secvar-main/test/test_esl.c000066400000000000000000000060441470177641100175210ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #include "external/edk2/common.h" #include "secvar/esl.h" #include "data/one_esl.h" #include "data/kek_esl.h" #include "data/two_esl.h" #include "data/dbx_256_a_esl.h" #include "data/dbx_256_b_esl.h" #include "data/dbx_512_a_esl.h" #include "data/dbx_512_b_esl.h" #include "libstb-secvar-errors.h" #include #include #include #include #include #include "test_utils.h" int main (int argc, char **argv) { const uint8_t *tmp; sv_err_t rc; const uint8_t *cert = NULL, *cert1; uint8_t *merge; size_t cert_size, merge_size; uuid_t owner; libstb_log_level = 0; printf ("testing esl merge..."); rc = next_cert_from_esls_buf (one_esl, one_esl_len, &cert, &cert_size, &owner, &tmp); assert_rc (SV_SUCCESS); assert (cert != NULL); assert (cert_size == 813); rc = next_cert_from_esls_buf (one_esl, one_esl_len, &cert, &cert_size, &owner, &tmp); assert_rc (SV_SUCCESS); assert (cert == NULL); rc = next_cert_from_esls_buf (two_esl, two_esl_len, &cert, &cert_size, &owner, &tmp); assert_rc (SV_SUCCESS); assert (cert != NULL); assert (cert_size == 813); cert1 = cert; rc = next_cert_from_esls_buf (two_esl, two_esl_len, &cert, &cert_size, &owner, &tmp); assert_rc (SV_SUCCESS); assert (cert != NULL); assert (cert_size == 813); assert (cert > cert1); rc = next_cert_from_esls_buf (two_esl, two_esl_len, &cert, &cert_size, &owner, &tmp); assert_rc (SV_SUCCESS); assert (cert == NULL); rc = merge_esls (one_esl, one_esl_len, kek_esl, kek_esl_len, NULL, &merge_size); assert_rc (SV_SUCCESS); assert (cert == NULL); assert (merge_size > one_esl_len); assert (merge_size > kek_esl_len); #ifdef DO_NOT_MERGE_CERTIFICATE_ESLS assert (merge_size == one_esl_len + kek_esl_len); #else assert (merge_size == one_esl_len + kek_esl_len - sizeof (sv_esl_t)); #endif merge = malloc (merge_size); assert (merge); rc = merge_esls (one_esl, one_esl_len, kek_esl, kek_esl_len, merge, &merge_size); assert_rc (SV_SUCCESS); assert (merge_size > one_esl_len && merge_size > kek_esl_len); #ifdef DO_NOT_MERGE_CERTIFICATE_ESLS assert (merge_size == one_esl_len + kek_esl_len); assert (memcmp (one_esl, merge, one_esl_len) == 0); assert (memcmp (kek_esl, merge + one_esl_len, kek_esl_len) == 0); #else assert (merge_size == one_esl_len + kek_esl_len - sizeof (sv_esl_t)); assert (memcmp (one_esl + sizeof (sv_esl_t), merge + sizeof (sv_esl_t), one_esl_len - sizeof (sv_esl_t)) == 0); #endif free (merge); rc = merge_esls (dbx_256_a_esl, dbx_256_a_esl_len, dbx_256_b_esl, dbx_256_b_esl_len, NULL, &merge_size); assert_rc (SV_SUCCESS); assert(merge_size == dbx_256_a_esl_len + dbx_256_b_esl_len - sizeof (sv_esl_t)); rc = merge_esls (dbx_256_a_esl, dbx_256_a_esl_len, dbx_512_b_esl, dbx_512_b_esl_len, NULL, &merge_size); assert_rc (SV_SUCCESS); assert(merge_size == dbx_256_a_esl_len + dbx_512_b_esl_len); printf("PASS\n"); return 0; } libstb-secvar-main/test/test_phyp.c000066400000000000000000000136531470177641100177220ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #include "secvar/util.h" #include #include #include #include #include #include #include "secvar/pseries.h" #include "libstb-secvar.h" #include "data/PK_sv.h" #include "data/KEK_by_PK_auth.h" #include "data/db_by_KEK_auth.h" #include "data/svc_db_by_PK_auth.h" #include "data/kek_esl.h" #include "data/dbx_1_auth.h" #include "data/dbx_2_auth.h" #include "data/dbx_256_a_esl.h" #include "data/dbx_512_b_esl.h" #include "data/wipe_by_PK_auth.h" #include "data/priv_auth.h" #include "libstb-secvar-errors.h" #include #include "test_utils.h" #define PK_LABEL (uint8_t *)"P\0K\0" #define KEK_LABEL (uint8_t *)"K\0E\0K\0" #define DB_LABEL (uint8_t *)"d\0b\0" #define DBX_LABEL (uint8_t *)"d\0b\0x\0" int main (int argc, char **argv) { uint8_t *KEK = NULL, *db = NULL, *dbx = NULL, *tmp = NULL; size_t KEK_size = 0, db_size = 0, dbx_size = 0, tmp_size = 0; sv_err_t rc; uint64_t log_data; libstb_log_level = 0; printf ("testing phyp variable update..."); /* load a KEK */ rc = update_var_from_auth (KEK_LABEL, 6, KEK_by_PK_auth, KEK_by_PK_auth_len, NULL, 0, false, false, PK_sv, PK_sv_len, NULL, 0, &KEK, &KEK_size, &log_data); // printf ("1 log_data: 0x%lx\n", log_data); assert_rc (SV_SUCCESS); assert (KEK_size == kek_esl_len + 8); /* sizeof(pks_signed_var) == 8 */ assert (memcmp (KEK + 8, kek_esl, kek_esl_len) == 0); /* try a db by KEK */ rc = update_var_from_auth (DB_LABEL, 4, db_by_KEK_auth, db_by_KEK_auth_len, NULL, 0, false, false, PK_sv, PK_sv_len, KEK, KEK_size, &db, &db_size, &log_data); // printf ("2 log_data: 0x%lx\n", log_data); assert_rc (SV_SUCCESS); /* this update should fail as being too old */ rc = update_var_from_auth (DB_LABEL, 4, svc_db_by_PK_auth, svc_db_by_PK_auth_len, db, db_size, false, false, PK_sv, PK_sv_len, KEK, KEK_size, &tmp, &tmp_size, &log_data); // printf ("3 log_data: 0x%lx\n", log_data); assert_rc (SV_TIMESTAMP_IN_PAST); assert (tmp == NULL); assert (tmp_size == 0); libstb_free (db); /* try a dbx */ rc = update_var_from_auth (DBX_LABEL, 6, dbx_1_auth, dbx_1_auth_len, NULL, 0, false, false, PK_sv, PK_sv_len, KEK, KEK_size, &dbx, &dbx_size, &log_data); // printf ("4 log_data: 0x%lx\n", log_data); assert_rc (SV_SUCCESS); assert (dbx_size == dbx_256_a_esl_len + 8); assert (memcmp (dbx + 8, dbx_256_a_esl, dbx_256_a_esl_len) == 0); /* append another dbx */ rc = update_var_from_auth (DBX_LABEL, 6, dbx_2_auth, dbx_2_auth_len, dbx, dbx_size, false, true, PK_sv, PK_sv_len, KEK, KEK_size, &tmp, &tmp_size, &log_data); // printf ("5 log_data: 0x%lx\n", log_data); assert_rc (SV_SUCCESS); assert (tmp_size == dbx_size + dbx_512_b_esl_len); assert (memcmp (tmp + 8 + dbx_256_a_esl_len, dbx_512_b_esl, dbx_512_b_esl_len) == 0); libstb_free (dbx); dbx = tmp; dbx_size = tmp_size; tmp = NULL; tmp_size = 0; /* * try an impermissible KEK update with allow unsigned PK updates * should still fail */ rc = update_var_from_auth (KEK_LABEL, 6, KEK_by_PK_auth, KEK_by_PK_auth_len, KEK, KEK_size, true, false, PK_sv, PK_sv_len, KEK, KEK_size, &tmp, &tmp_size, &log_data); // printf ("6 log_data: 0x%lx\n", log_data); assert_rc (SV_TIMESTAMP_IN_PAST); assert (tmp == NULL); /* try an otherwise bad PK update with auPu */ rc = update_var_from_auth (PK_LABEL, 4, KEK_by_PK_auth, KEK_by_PK_auth_len, PK_sv, PK_sv_len, true, false, PK_sv, PK_sv_len, KEK, KEK_size, &tmp, &tmp_size, &log_data); // printf ("7 log_data: 0x%lx\n", log_data); assert_rc (SV_SUCCESS); assert (tmp_size == KEK_size); assert (memcmp (tmp, KEK, KEK_size) == 0); libstb_free (tmp); tmp = NULL; tmp_size = 0; /* * try the wipe * .. validly signed, but allow unsigned PK updates is not set. */ rc = update_var_from_auth (PK_LABEL, 4, wipe_by_PK_auth + APPEND_HEADER_LEN, wipe_by_PK_auth_len - APPEND_HEADER_LEN, PK_sv, PK_sv_len, false, false, PK_sv, PK_sv_len, KEK, KEK_size, &tmp, &tmp_size, &log_data); // printf ("8 log_data: 0x%lx\n", log_data); assert_rc (SV_INVALID_PK_UPDATE); rc = update_var_from_auth (PK_LABEL, 4, wipe_by_PK_auth + APPEND_HEADER_LEN, wipe_by_PK_auth_len - APPEND_HEADER_LEN, PK_sv, PK_sv_len, true, false, PK_sv, PK_sv_len, KEK, KEK_size, &tmp, &tmp_size, &log_data); // printf ("9 log_data: 0x%lx\n", log_data); assert_rc (SV_DELETE_EVERYTHING); /* user defined variable signed by PK */ rc = update_var_from_auth ((const uint8_t *) "P\0o\0w\0e\0r\0P\0r\0i\0v\0a\0t" "\0e\0V\0a\0r\0", 30, priv_auth, priv_auth_len, NULL, 0, false, false, PK_sv, PK_sv_len, KEK, KEK_size, &tmp, &tmp_size, &log_data); // printf ("10 log_data: 0x%lx\n", log_data); assert_rc (SV_SUCCESS); assert (memcmp (tmp + 8, "private variable data\n", tmp_size - 8) == 0); libstb_free (tmp); /* bad name - odd bytes */ rc = update_var_from_auth ((const uint8_t *) "P\0o\0w\0e\0r\0P\0r\0i\0v\0a\0t" "\0e\0V\0a\0r", 29, priv_auth, priv_auth_len, NULL, 0, false, false, PK_sv, PK_sv_len, KEK, KEK_size, &tmp, &tmp_size, &log_data); // printf ("11 log_data: 0x%lx\n", log_data); assert_rc (SV_LABEL_IS_NOT_WIDE_CHARACTERS); libstb_free (KEK); libstb_free (dbx); printf("PASS\n"); return 0; } libstb-secvar-main/test/test_pseries.c000066400000000000000000000216121470177641100204060ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #include "secvar/util.h" #include #include #include #include #include #include #include "secvar/pseries.h" #include "data/PK_sv.h" #include "data/KEK_by_PK_auth.h" #include "data/db_by_KEK_auth.h" #include "data/svc_db_by_PK_auth.h" #include "data/kek_esl.h" #include "data/dbx_1_auth.h" #include "data/dbx_2_auth.h" #include "data/dbx_256_a_esl.h" #include "data/dbx_512_b_esl.h" #include "data/wipe_by_PK_auth.h" #include "data/priv_auth.h" #include "data/delete_db_by_kek_sesl_auth.h" #include "libstb-secvar-errors.h" #include #include "test_utils.h" #define PK_LABEL (uint8_t *)"P\0K\0" #define KEK_LABEL (uint8_t *)"K\0E\0K\0" #define DB_LABEL (uint8_t *)"d\0b\0" #define DBX_LABEL (uint8_t *)"d\0b\0x\0" int main (int argc, char **argv) { update_req_t update_req = { 0 }; uint8_t *KEK = NULL, *db = NULL, *dbx = NULL, *tmp = NULL; size_t KEK_size = 0, db_size = 0, dbx_size = 0, tmp_size = 0; sv_err_t rc; libstb_log_level = 0; printf ("testing pseries variable update request..."); update_req.label = KEK_LABEL; update_req.label_size = 6; update_req.allow_unauthenticated = false; update_req.append_update = false; update_req.update_data = KEK_by_PK_auth; update_req.update_data_size = KEK_by_PK_auth_len; update_req.auth_db.pk = PK_sv; update_req.auth_db.pk_size = PK_sv_len; /* load a KEK */ rc = pseries_update_variable (&update_req, &KEK, &KEK_size); assert_rc (SV_SUCCESS); assert (KEK_size == kek_esl_len + 8); assert (memcmp (KEK + 8, kek_esl, kek_esl_len) == 0); memset (&update_req, 0x00, sizeof (update_req_t)); update_req.label = DB_LABEL; update_req.label_size = 4; update_req.allow_unauthenticated = false; update_req.append_update = false; update_req.update_data = db_by_KEK_auth; update_req.update_data_size = db_by_KEK_auth_len; update_req.auth_db.pk = PK_sv; update_req.auth_db.pk_size = PK_sv_len; update_req.auth_db.kek = KEK; update_req.auth_db.kek_size = KEK_size; /* try a db by KEK */ rc = pseries_update_variable (&update_req, &db, &db_size); assert_rc (SV_SUCCESS); memset (&update_req, 0x00, sizeof (update_req_t)); update_req.label = DB_LABEL; update_req.label_size = 4; update_req.allow_unauthenticated = false; update_req.append_update = false; update_req.update_data = svc_db_by_PK_auth; update_req.update_data_size = svc_db_by_PK_auth_len; update_req.current_data = db; update_req.current_data_size = db_size; update_req.auth_db.pk = PK_sv; update_req.auth_db.pk_size = PK_sv_len; update_req.auth_db.kek = KEK; update_req.auth_db.kek_size = KEK_size; /* this update should fail as being too old */ rc = pseries_update_variable (&update_req, &tmp, &tmp_size); assert_rc (SV_TIMESTAMP_IN_PAST); assert (tmp == NULL); assert (tmp_size == 0); memset (&update_req, 0x00, sizeof (update_req_t)); update_req.label = DB_LABEL; update_req.label_size = 4; update_req.allow_unauthenticated = false; update_req.append_update = false; update_req.update_data = delete_db_by_kek_sesl_auth; update_req.update_data_size = delete_db_by_kek_sesl_auth_len; update_req.current_data = db; update_req.current_data_size = db_size; update_req.auth_db.pk = PK_sv; update_req.auth_db.pk_size = PK_sv_len; update_req.auth_db.kek = KEK; update_req.auth_db.kek_size = KEK_size; /* deleting keys on db using KEK*/ rc = pseries_update_variable (&update_req, &tmp, &tmp_size); assert_rc (SV_SUCCESS); assert (tmp != NULL); assert (tmp_size == 8); libstb_free (tmp); libstb_free (db); memset (&update_req, 0x00, sizeof (update_req_t)); update_req.label = DBX_LABEL; update_req.label_size = 6; update_req.allow_unauthenticated = false; update_req.append_update = false; update_req.update_data = dbx_1_auth; update_req.update_data_size = dbx_1_auth_len; update_req.current_data = NULL; update_req.current_data_size = 0; update_req.auth_db.pk = PK_sv; update_req.auth_db.pk_size = PK_sv_len; update_req.auth_db.kek = KEK; update_req.auth_db.kek_size = KEK_size; /* try a dbx */ rc = pseries_update_variable (&update_req, &dbx, &dbx_size); assert_rc (SV_SUCCESS); assert (dbx_size == dbx_256_a_esl_len + 8); assert (memcmp (dbx + 8, dbx_256_a_esl, dbx_256_a_esl_len) == 0); memset (&update_req, 0x00, sizeof (update_req_t)); update_req.label = DBX_LABEL; update_req.label_size = 6; update_req.allow_unauthenticated = false; update_req.append_update = true; update_req.update_data = dbx_2_auth; update_req.update_data_size = dbx_2_auth_len; update_req.current_data = dbx; update_req.current_data_size = dbx_size; update_req.auth_db.pk = PK_sv; update_req.auth_db.pk_size = PK_sv_len; update_req.auth_db.kek = KEK; update_req.auth_db.kek_size = KEK_size; /* append another dbx */ rc = pseries_update_variable (&update_req, &tmp, &tmp_size); assert_rc (SV_SUCCESS); assert (tmp_size == dbx_size + dbx_512_b_esl_len); assert (memcmp (tmp + 8 + dbx_256_a_esl_len, dbx_512_b_esl, dbx_512_b_esl_len) == 0); libstb_free (dbx); dbx = tmp; dbx_size = tmp_size; tmp = NULL; tmp_size = 0; memset (&update_req, 0x00, sizeof (update_req_t)); update_req.label = KEK_LABEL; update_req.label_size = 6; update_req.allow_unauthenticated = true; update_req.append_update = false; update_req.update_data = KEK_by_PK_auth; update_req.update_data_size = KEK_by_PK_auth_len; update_req.current_data = KEK; update_req.current_data_size = KEK_size; update_req.auth_db.pk = PK_sv; update_req.auth_db.pk_size = PK_sv_len; update_req.auth_db.kek = KEK; update_req.auth_db.kek_size = KEK_size; /* * try an impermissible KEK update with allow unsigned PK updates * should still fail */ rc = pseries_update_variable (&update_req, &tmp, &tmp_size); assert_rc (SV_TIMESTAMP_IN_PAST); assert (tmp == NULL); memset (&update_req, 0x00, sizeof (update_req_t)); update_req.label = PK_LABEL; update_req.label_size = 4; update_req.allow_unauthenticated = true; update_req.append_update = false; update_req.update_data = KEK_by_PK_auth; update_req.update_data_size = KEK_by_PK_auth_len; update_req.current_data = PK_sv; update_req.current_data_size = PK_sv_len; update_req.auth_db.pk = PK_sv; update_req.auth_db.pk_size = PK_sv_len; update_req.auth_db.kek = KEK; update_req.auth_db.kek_size = KEK_size; /* try an otherwise bad PK update with auPu */ rc = pseries_update_variable (&update_req, &tmp, &tmp_size); assert_rc (SV_SUCCESS); assert (tmp_size == KEK_size); assert (memcmp (tmp, KEK, KEK_size) == 0); libstb_free (tmp); tmp = NULL; tmp_size = 0; memset (&update_req, 0x00, sizeof (update_req_t)); update_req.label = PK_LABEL; update_req.label_size = 4; update_req.allow_unauthenticated = false; update_req.append_update = false; update_req.update_data = wipe_by_PK_auth + APPEND_HEADER_LEN; update_req.update_data_size = wipe_by_PK_auth_len - APPEND_HEADER_LEN; update_req.current_data = PK_sv; update_req.current_data_size = PK_sv_len; update_req.auth_db.pk = PK_sv; update_req.auth_db.pk_size = PK_sv_len; update_req.auth_db.kek = KEK; update_req.auth_db.kek_size = KEK_size; /* * try the wipe *.. validly signed, but allow unsigned PK updates is not set. */ rc = pseries_update_variable (&update_req, &tmp, &tmp_size); assert_rc (SV_INVALID_PK_UPDATE); memset (&update_req, 0x00, sizeof (update_req_t)); update_req.label = PK_LABEL; update_req.label_size = 4; update_req.allow_unauthenticated = true; update_req.append_update = false; update_req.update_data = wipe_by_PK_auth + APPEND_HEADER_LEN; update_req.update_data_size = wipe_by_PK_auth_len - APPEND_HEADER_LEN; update_req.current_data = PK_sv; update_req.current_data_size = PK_sv_len; update_req.auth_db.pk = PK_sv; update_req.auth_db.pk_size = PK_sv_len; update_req.auth_db.kek = KEK; update_req.auth_db.kek_size = KEK_size; rc = pseries_update_variable (&update_req, &tmp, &tmp_size); assert_rc (SV_DELETE_EVERYTHING); memset (&update_req, 0x00, sizeof (update_req_t)); update_req.label = (uint8_t *) "P\0o\0w\0e\0r\0P\0r\0i\0v" "\0a\0t\0e\0V\0a\0r\0"; update_req.label_size = 30; update_req.allow_unauthenticated = false; update_req.append_update = false; update_req.update_data = priv_auth; update_req.update_data_size = priv_auth_len; update_req.current_data = NULL; update_req.current_data_size = 0; update_req.auth_db.pk = PK_sv; update_req.auth_db.pk_size = PK_sv_len; update_req.auth_db.kek = KEK; update_req.auth_db.kek_size = KEK_size; /* user defined variable signed by PK */ rc = pseries_update_variable (&update_req, &tmp, &tmp_size); assert_rc (SV_SUCCESS); assert (memcmp (tmp + 8, "private variable data\n", tmp_size - 8) == 0); libstb_free (tmp); libstb_free (KEK); libstb_free (dbx); printf ("PASS\n"); return 0; } libstb-secvar-main/test/test_update.c000066400000000000000000000207641470177641100202250ustar00rootroot00000000000000/* * SPDX-License-Identifier: BSD-2-Clause * Copyright 2023 IBM Corp. */ #include "edk2/common.h" #include "secvar/pseries.h" #include "secvar/authentication_2.h" #include "secvar/util.h" #include #include "data/pk_auth.h" #include "data/delete_pk_sbvs_auth.h" #include "data/delete_pk_sesl_auth.h" #include "data/one_esl.h" #include "data/kek_esl.h" #include "data/svc_db_by_PK_auth.h" #include "data/svc_dbx_by_KEK_auth.h" #include "data/pk_3k_esl.h" #include "data/pk_3k_auth.h" #include "data/pk_4k_esl.h" #include "data/pk_4k_auth.h" #include "libstb-secvar-errors.h" #include #include #include #include "test_utils.h" static const uint16_t *PK_NAME = (const uint16_t *)"P\0K\0\0\0"; static const uint16_t *DB_NAME = (const uint16_t *)"d\0b\0\0\0"; static const uint16_t *DBX_NAME = (const uint16_t *)"d\0b\0x\0\0\0"; int main (int argc, char **argv) { auth_data_t auth_data = { 0 }; const uint8_t *cert, *data; size_t cert_size, data_size; sv_err_t rc; timestamp_t timestamp, new_timestamp, new_timestamp2; uint8_t *new_data, *new_data2; size_t new_data_size, new_data2_size; sv_flag_t verified_flag; libstb_log_level = 0; printf ("testing variable update..."); auth_data.auth_msg = svc_db_by_PK_auth; auth_data.auth_msg_size = svc_db_by_PK_auth_len; auth_data.name = (uint16_t *) DB_NAME; auth_data.vendor = (uuid_t *) &SV_IMAGE_SECURITY_DATABASE_GUID; auth_data.attributes = SECVAR_ATTRIBUTES; auth_data.auth_db.pk = one_esl; auth_data.auth_db.pk_size = one_esl_len; rc = unpack_authenticated_variable (&auth_data, ×tamp, &cert, &cert_size, &data, &data_size); assert_rc (SV_SUCCESS); rc = verify_signature (&auth_data, ×tamp, cert, cert_size, data, data_size, &verified_flag); assert_rc (SV_SUCCESS); /* Test 3k key sizes */ auth_data.auth_msg = pk_3k_auth; auth_data.auth_msg_size = pk_3k_auth_len; auth_data.name = (uint16_t *) PK_NAME; auth_data.vendor = (uuid_t *) &SV_GLOBAL_VARIABLE_GUID; auth_data.attributes = SECVAR_ATTRIBUTES; auth_data.auth_db.pk = pk_3k_esl; auth_data.auth_db.pk_size = pk_3k_esl_len; rc = unpack_authenticated_variable (&auth_data, ×tamp, &cert, &cert_size, &data, &data_size); assert_rc (SV_SUCCESS); rc = verify_signature (&auth_data, ×tamp, cert, cert_size, data, data_size, &verified_flag); assert_rc (SV_SUCCESS); /* Test 4k key sizes */ auth_data.auth_msg = pk_4k_auth; auth_data.auth_msg_size = pk_4k_auth_len; auth_data.name = (uint16_t *) PK_NAME; auth_data.vendor = (uuid_t *) &SV_GLOBAL_VARIABLE_GUID; auth_data.attributes = SECVAR_ATTRIBUTES; auth_data.auth_db.pk = pk_4k_esl; auth_data.auth_db.pk_size = pk_4k_esl_len; rc = unpack_authenticated_variable (&auth_data, ×tamp, &cert, &cert_size, &data, &data_size); assert_rc (SV_SUCCESS); rc = verify_signature (&auth_data, ×tamp, cert, cert_size, data, data_size, &verified_flag); assert_rc (SV_SUCCESS); memset (&auth_data, 0x00, sizeof (auth_data_t)); auth_data.auth_msg = svc_dbx_by_KEK_auth; auth_data.auth_msg_size = svc_dbx_by_KEK_auth_len; auth_data.name = (uint16_t *) DBX_NAME; auth_data.vendor = (uuid_t *) &SV_IMAGE_SECURITY_DATABASE_GUID; auth_data.attributes = SECVAR_ATTRIBUTES; auth_data.auth_db.pk = one_esl; auth_data.auth_db.pk_size = one_esl_len; rc = unpack_authenticated_variable (&auth_data, ×tamp, &cert, &cert_size, &data, &data_size); assert_rc (SV_SUCCESS); rc = verify_signature (&auth_data, ×tamp, cert, cert_size, data, data_size, &verified_flag); assert_rc (SV_FAILED_TO_VERIFY_SIGNATURE); auth_data.auth_db.kek = kek_esl; auth_data.auth_db.kek_size = kek_esl_len; rc = verify_signature (&auth_data, ×tamp, cert, cert_size, data, data_size, &verified_flag); assert_rc (SV_SUCCESS); memset (&auth_data, 0x00, sizeof (auth_data_t)); auth_data.auth_msg = delete_pk_sbvs_auth; auth_data.auth_msg_size = delete_pk_sbvs_auth_len; auth_data.name = (uint16_t *) PK_NAME; auth_data.vendor = (uuid_t *) &SV_GLOBAL_VARIABLE_GUID; auth_data.attributes = 0x27; auth_data.auth_db.pk = one_esl; auth_data.auth_db.pk_size = one_esl_len; auth_data.auth_db.kek = kek_esl; auth_data.auth_db.kek_size = kek_esl_len; rc = unpack_authenticated_variable (&auth_data, ×tamp, &cert, &cert_size, &data, &data_size); assert_rc (SV_SUCCESS); rc = verify_signature (&auth_data, ×tamp, cert, cert_size, data, data_size, &verified_flag); assert_rc (SV_SUCCESS); memset (&auth_data, 0x00, sizeof (auth_data_t)); auth_data.auth_msg = delete_pk_sesl_auth; auth_data.auth_msg_size = delete_pk_sesl_auth_len; auth_data.name = (uint16_t *) PK_NAME; auth_data.vendor = (uuid_t *) &SV_GLOBAL_VARIABLE_GUID; auth_data.attributes = 0x27; auth_data.auth_db.pk = one_esl; auth_data.auth_db.pk_size = one_esl_len; auth_data.auth_db.kek = kek_esl; auth_data.auth_db.kek_size = kek_esl_len; rc = unpack_authenticated_variable (&auth_data, ×tamp, &cert, &cert_size, &data, &data_size); assert_rc (SV_SUCCESS); rc = verify_signature (&auth_data, ×tamp, cert, cert_size, data, data_size, &verified_flag); assert_rc (SV_SUCCESS); memset (&auth_data, 0x00, sizeof (auth_data_t)); auth_data.name = (uint16_t *) DB_NAME; auth_data.vendor = (uuid_t *) &SV_IMAGE_SECURITY_DATABASE_GUID; auth_data.attributes = SECVAR_ATTRIBUTES; auth_data.flag = SV_VARIABLE_UPDATE_NO_FLAGS; auth_data.auth_msg = svc_db_by_PK_auth; auth_data.auth_msg_size = svc_db_by_PK_auth_len; auth_data.auth_db.pk = one_esl; auth_data.auth_db.pk_size = one_esl_len; rc = pseries_apply_update (&auth_data, &new_data, &new_data_size, &new_timestamp, &verified_flag); assert_rc (SV_SUCCESS); memset (&auth_data, 0x00, sizeof (auth_data_t)); auth_data.name = (uint16_t *) DBX_NAME; auth_data.vendor = (uuid_t *) &SV_IMAGE_SECURITY_DATABASE_GUID; auth_data.attributes = SECVAR_ATTRIBUTES; auth_data.flag = SV_VARIABLE_UPDATE_NO_FLAGS; auth_data.auth_msg = svc_db_by_PK_auth; auth_data.auth_msg_size = svc_db_by_PK_auth_len; auth_data.auth_db.pk = one_esl; auth_data.auth_db.pk_size = one_esl_len; rc = unpack_authenticated_variable (&auth_data, ×tamp, &cert, &cert_size, &data, &data_size); assert (rc == SV_SUCCESS); assert (new_data_size == data_size); assert (memcmp (new_data, data, data_size) == 0); assert (memcmp (×tamp, &new_timestamp, sizeof (timestamp_t)) == 0); /* attempt to apply to the wrong variable - sig mismatch */ rc = pseries_apply_update (&auth_data, &new_data, &new_data_size, &new_timestamp, &verified_flag); assert_rc (SV_FAILED_TO_VERIFY_SIGNATURE); memset (&auth_data, 0x00, sizeof (auth_data_t)); auth_data.name = (uint16_t *) DB_NAME; auth_data.vendor = (uuid_t *) &SV_IMAGE_SECURITY_DATABASE_GUID; auth_data.attributes = SECVAR_ATTRIBUTES; auth_data.flag = SV_VARIABLE_UPDATE_NO_FLAGS; auth_data.auth_msg = svc_db_by_PK_auth; auth_data.auth_msg_size = svc_db_by_PK_auth_len - data_size - 1; auth_data.auth_db.pk = one_esl; auth_data.auth_db.pk_size = one_esl_len; /* truncated update */ rc = pseries_apply_update (&auth_data, &new_data, &new_data_size, &new_timestamp, &verified_flag); assert_rc (SV_AUTH_SIZE_INVALID); memset (&auth_data, 0x00, sizeof (auth_data_t)); auth_data.name = (uint16_t *) DB_NAME; auth_data.vendor = (uuid_t *) &SV_IMAGE_SECURITY_DATABASE_GUID; auth_data.attributes = SECVAR_ATTRIBUTES; auth_data.flag = SV_VARIABLE_UPDATE_NO_FLAGS; auth_data.auth_msg = svc_db_by_PK_auth; auth_data.auth_msg_size = svc_db_by_PK_auth_len; auth_data.current_time = &new_timestamp; auth_data.current_esl_data = new_data; auth_data.current_esl_data_size = new_data_size; auth_data.auth_db.pk = one_esl; auth_data.auth_db.pk_size = one_esl_len; /* not in future */ rc = pseries_apply_update (&auth_data, &new_data2, &new_data2_size, &new_timestamp2, &verified_flag); assert_rc (SV_TIMESTAMP_IN_PAST); /* but permitted if we skip authentication */ libstb_free (new_data); printf("PASS\n"); return 0; } libstb-secvar-main/test/test_utils.h000066400000000000000000000036021470177641100201000ustar00rootroot00000000000000#ifndef _TEST_UTILS_H_ #define _TEST_UTILS_H_ #include #include #define _ERROR_ROW(a) [a] = #a const char *_error_table[] = { _ERROR_ROW(SV_SUCCESS), _ERROR_ROW(SV_BUF_INSUFFICIENT_DATA), _ERROR_ROW(SV_ESL_SIZE_INVALID), _ERROR_ROW(SV_ESL_WRONG_TYPE), _ERROR_ROW(SV_AUTH_INVALID_FIXED_VALUE), _ERROR_ROW(SV_AUTH_SIZE_INVALID), _ERROR_ROW(SV_AUTH_UNSUPPORTED_REVISION), _ERROR_ROW(SV_OUT_BUF_TOO_SMALL), _ERROR_ROW(SV_TOO_MUCH_DATA), _ERROR_ROW(SV_TIMESTAMP_IN_PAST), _ERROR_ROW(SV_ALLOCATION_FAILED), _ERROR_ROW(SV_PKCS7_PARSE_ERROR), _ERROR_ROW(SV_PKCS7_ERROR), _ERROR_ROW(SV_UNEXPECTED_PKCS7_ALGO), _ERROR_ROW(SV_X509_PARSE_ERROR), _ERROR_ROW(SV_X509_ERROR), _ERROR_ROW(SV_UNEXPECTED_CERT_ALGO), _ERROR_ROW(SV_UNEXPECTED_CERT_SIZE), _ERROR_ROW(SV_UNEXPECTED_CRYPTO_ERROR), _ERROR_ROW(SV_CRYPTO_USAGE_BUG), _ERROR_ROW(SV_FAILED_TO_VERIFY_SIGNATURE), _ERROR_ROW(SV_LABEL_IS_NOT_WIDE_CHARACTERS), _ERROR_ROW(SV_UNPACK_ERROR), _ERROR_ROW(SV_UNPACK_VERSION_ERROR), _ERROR_ROW(SV_CANNOT_APPEND_TO_PK), _ERROR_ROW(SV_DELETE_EVERYTHING), _ERROR_ROW(SV_INVALID_PK_UPDATE), _ERROR_ROW(SV_INVALID_KEK_UPDATE), }; #define code_to_string(code) (_error_table[code]) // Print an error message before throwing an assert #define assert_msg(expr, ...) do { if (!(expr)) { fprintf (stderr, ##__VA_ARGS__); assert (expr); } } while (0); // Compare a return code with an expected value. Should use the enum from libstb-secvar-error.h // Will print out the expected error as a string against the received error as a string #define assert_error(rc, code) do { if (rc != code) { fprintf (stderr, "Expected return code %d (%s), got %d (%s)\n", rc, code_to_string(rc), code, code_to_string(code)); assert(rc == code); } } while (0); // Helper for the above that assumes the variable named "rc" #define assert_rc(code) assert_error(rc,code) #endif