avb_vbmeta_image.c revision 0155e6b158bdc5b3a442f16a5dc124d5dee9c71c
121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen/* 221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen * Copyright (C) 2016 The Android Open Source Project 321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen * 4c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * Permission is hereby granted, free of charge, to any person 5c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * obtaining a copy of this software and associated documentation 6c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * files (the "Software"), to deal in the Software without 7c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * restriction, including without limitation the rights to use, copy, 8c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * modify, merge, publish, distribute, sublicense, and/or sell copies 9c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * of the Software, and to permit persons to whom the Software is 10c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * furnished to do so, subject to the following conditions: 1121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen * 12c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * The above copyright notice and this permission notice shall be 13c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * included in all copies or substantial portions of the Software. 1421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen * 15c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 19c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 20c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22c612e2e353444f6ad714e43702c2afd057516254David Zeuthen * SOFTWARE. 2321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen */ 2421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 2521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen#include "avb_vbmeta_image.h" 2621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen#include "avb_rsa.h" 2721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen#include "avb_sha.h" 2821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen#include "avb_util.h" 2921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 3021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen/* NOTE: The PKC1-v1.5 padding is a blob of binary DER of ASN.1 and is 3121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen * obtained from section 5.2.2 of RFC 4880. 3221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen */ 3321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 3421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthenstatic const uint8_t 3521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen padding_RSA2048_SHA256[AVB_RSA2048_NUM_BYTES - AVB_SHA256_DIGEST_SIZE] = { 3621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 3721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 3821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 3921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 4021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 4121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 4221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 4321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 4421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 4521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 4621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 4721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 4821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 4921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 5021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 5121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 5221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 5321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x00, 0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 5421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20}; 5521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 5621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthenstatic const uint8_t 5721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen padding_RSA4096_SHA256[AVB_RSA4096_NUM_BYTES - AVB_SHA256_DIGEST_SIZE] = { 5821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 5921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 8021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 8121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 8221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 8321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 8421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 8521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 8621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 8721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 8821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 8921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 9021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 9121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 9221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 9321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 9421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 9521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 9621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0x00, 0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 9721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20}; 9821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 9921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthenstatic const uint8_t 10021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen padding_RSA8192_SHA256[AVB_RSA8192_NUM_BYTES - AVB_SHA256_DIGEST_SIZE] = { 10121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 10221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 10321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 10421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 10521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 10621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 10721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 10821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 10921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 11021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 11121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 11221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 11321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 11421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 11521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 11621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 11721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 11821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 11921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 12021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 12121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 12221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 12321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 12421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 12521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 12621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 12721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 12821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 12921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 13021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 13121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 13221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 13321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 13421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 13521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 13621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 13721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 13821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 13921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 14021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 14121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 14221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 14321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 14421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 14521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 14621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 14721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 14821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 14921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 15021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 15121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 15221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 15321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 15421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 15521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 15621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 15721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 15821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 15921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 16021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 16121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 16221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 16321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 16421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 16521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 16621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 16721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 16821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 16921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 17021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 17121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 17221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 17321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 17421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 17521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 17621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 17721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 17821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 17921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 18021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 18121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 18221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x00, 0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 18321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20}; 18421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 18521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthenstatic const uint8_t 18621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen padding_RSA2048_SHA512[AVB_RSA2048_NUM_BYTES - AVB_SHA512_DIGEST_SIZE] = { 18721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 18821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 18921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0x00, 0x30, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x60, 20221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, 0x05, 0x00, 0x04, 0x40}; 20321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 20421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthenstatic const uint8_t 20521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen padding_RSA4096_SHA512[AVB_RSA4096_NUM_BYTES - AVB_SHA512_DIGEST_SIZE] = { 20621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 23021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 23121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 23221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 23321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 23421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 23521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 23621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 23721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 23821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 23921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 24021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 24121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x30, 0x51, 0x30, 24221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, 24321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x05, 0x00, 0x04, 0x40}; 24421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 24521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthenstatic const uint8_t 24621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen padding_RSA8192_SHA512[AVB_RSA8192_NUM_BYTES - AVB_SHA512_DIGEST_SIZE] = { 24721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 24821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 24921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 25021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 25121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 25221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 25321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 25421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 25521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 25621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 25721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 25821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 25921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 26021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 26121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 26221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 26321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 26421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 26521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 26621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 26721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 26821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 26921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 31021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 31121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 31221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 31321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 31421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 31521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 31621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 31721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 31821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 31921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 32021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 32121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 32221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 32321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 32421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 32521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0xff, 0xff, 0xff, 0xff, 0x00, 0x30, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x60, 32621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, 0x05, 0x00, 0x04, 0x40}; 32721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 32821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthentypedef struct { 32921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen const uint8_t* padding; 33021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen size_t padding_len; 33121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen size_t hash_len; 33221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen} AvbAlgorithmData; 33321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 33421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthenstatic AvbAlgorithmData algorithm_data[_AVB_ALGORITHM_NUM_TYPES] = { 33521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* AVB_ALGORITHM_TYPE_NONE */ 33621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen {.padding = NULL, .padding_len = 0, .hash_len = 0}, 33721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* AVB_ALGORITHM_TYPE_SHA256_RSA2048 */ 33821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen {.padding = padding_RSA2048_SHA256, 33921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen .padding_len = sizeof(padding_RSA2048_SHA256), 34021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen .hash_len = AVB_SHA256_DIGEST_SIZE}, 34121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* AVB_ALGORITHM_TYPE_SHA256_RSA4096 */ 34221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen {.padding = padding_RSA4096_SHA256, 34321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen .padding_len = sizeof(padding_RSA4096_SHA256), 34421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen .hash_len = AVB_SHA256_DIGEST_SIZE}, 34521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* AVB_ALGORITHM_TYPE_SHA256_RSA8192 */ 34621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen {.padding = padding_RSA8192_SHA256, 34721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen .padding_len = sizeof(padding_RSA8192_SHA256), 34821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen .hash_len = AVB_SHA256_DIGEST_SIZE}, 34921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* AVB_ALGORITHM_TYPE_SHA512_RSA2048 */ 35021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen {.padding = padding_RSA2048_SHA512, 35121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen .padding_len = sizeof(padding_RSA2048_SHA512), 35221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen .hash_len = AVB_SHA512_DIGEST_SIZE}, 35321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* AVB_ALGORITHM_TYPE_SHA512_RSA4096 */ 35421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen {.padding = padding_RSA4096_SHA512, 35521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen .padding_len = sizeof(padding_RSA4096_SHA512), 35621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen .hash_len = AVB_SHA512_DIGEST_SIZE}, 35721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* AVB_ALGORITHM_TYPE_SHA512_RSA8192 */ 35821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen {.padding = padding_RSA8192_SHA512, 35921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen .padding_len = sizeof(padding_RSA8192_SHA512), 36021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen .hash_len = AVB_SHA512_DIGEST_SIZE}, 36121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen}; 36221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 36321e95266704e572ced1c633bbc4aea9f42afa0a5David ZeuthenAvbVBMetaVerifyResult avb_vbmeta_image_verify( 36421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen const uint8_t* data, size_t length, const uint8_t** out_public_key_data, 36521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen size_t* out_public_key_length) { 36621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen AvbVBMetaVerifyResult ret; 36721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen AvbVBMetaImageHeader h; 36821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen uint8_t* computed_hash; 36921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen AvbAlgorithmData* algorithm; 37021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen AvbSHA256Ctx sha256_ctx; 37121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen AvbSHA512Ctx sha512_ctx; 37221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen const uint8_t* header_block; 37321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen const uint8_t* authentication_block; 37421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen const uint8_t* auxiliary_block; 37521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen int verification_result; 37621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 37721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen ret = AVB_VBMETA_VERIFY_RESULT_INVALID_VBMETA_HEADER; 37821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 3790155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen if (out_public_key_data != NULL) { 3800155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen *out_public_key_data = NULL; 3810155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen } 3820155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen if (out_public_key_length != NULL) { 3830155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen *out_public_key_length = 0; 3840155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen } 38521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 38621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* Ensure magic is correct. */ 38721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (avb_safe_memcmp(data, AVB_MAGIC, AVB_MAGIC_LEN) != 0) { 38821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("Magic is incorrect.\n"); 38921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 39021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 39121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 39221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* Before we byteswap, ensure length is long enough. */ 39321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (length < sizeof(AvbVBMetaImageHeader)) { 39421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("Length is smaller than header.\n"); 39521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 39621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 39721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_vbmeta_image_header_to_host_byte_order((const AvbVBMetaImageHeader*)data, 39821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen &h); 39921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 40021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* Ensure we don't attempt to access any fields if the major version 40121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen * is not supported. 40221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen */ 40321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (h.header_version_major > AVB_MAJOR_VERSION) { 40421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("No support for given major version.\n"); 40521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 40621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 40721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 40821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* Ensure inner block sizes are multiple of 64. */ 40921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if ((h.authentication_data_block_size & 0x3f) != 0 || 41021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen (h.auxiliary_data_block_size & 0x3f) != 0) { 41121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("Block size is not a multiple of 64.\n"); 41221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 41321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 41421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 41521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* Ensure block sizes all add up to at most |length|. */ 41621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen uint64_t block_total = sizeof(AvbVBMetaImageHeader); 41721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (!avb_safe_add_to(&block_total, h.authentication_data_block_size) || 41821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen !avb_safe_add_to(&block_total, h.auxiliary_data_block_size)) { 41921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("Overflow while computing size of boot image.\n"); 42021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 42121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 42221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (block_total > length) { 42321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("Block sizes add up to more than given length.\n"); 42421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 42521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 42621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 42721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen uintptr_t data_ptr = (uintptr_t)data; 42821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* Ensure passed in memory doesn't wrap. */ 42921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (!avb_safe_add(NULL, (uint64_t)data_ptr, length)) { 43021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("Boot image location and length mismatch.\n"); 43121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 43221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 43321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 43421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* Ensure hash and signature are entirely in the Authentication data block. */ 43521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen uint64_t hash_end; 43621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (!avb_safe_add(&hash_end, h.hash_offset, h.hash_size) || 43721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen hash_end > h.authentication_data_block_size) { 43821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("Hash is not entirely in its block.\n"); 43921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 44021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 44121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen uint64_t signature_end; 44221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (!avb_safe_add(&signature_end, h.signature_offset, h.signature_size) || 44321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen signature_end > h.authentication_data_block_size) { 44421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("Signature is not entirely in its block.\n"); 44521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 44621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 44721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 44821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* Ensure public key is entirely in the Auxiliary data block. */ 44921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen uint64_t pubkey_end; 45021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (!avb_safe_add(&pubkey_end, h.public_key_offset, h.public_key_size) || 45121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen pubkey_end > h.auxiliary_data_block_size) { 45221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("Public key is not entirely in its block.\n"); 45321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 45421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 45521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 45618666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen /* Ensure public key metadata (if set) is entirely in the Auxiliary 45718666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen * data block. */ 45818666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen if (h.public_key_metadata_size > 0) { 45918666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen uint64_t pubkey_md_end; 46018666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen if (!avb_safe_add(&pubkey_md_end, h.public_key_metadata_offset, 46118666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen h.public_key_metadata_size) || 46218666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen pubkey_md_end > h.auxiliary_data_block_size) { 46318666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen avb_error("Public key metadata is not entirely in its block.\n"); 46418666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen goto out; 46518666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen } 46618666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen } 46718666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen 46821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* Ensure algorithm field is supported. */ 46921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (h.algorithm_type >= _AVB_ALGORITHM_NUM_TYPES) { 47021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("Invalid or unknown algorithm.\n"); 47121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 47221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 47321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen algorithm = &algorithm_data[h.algorithm_type]; 47421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 47521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* Bail early if there's no hash or signature. */ 47621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (h.algorithm_type == AVB_ALGORITHM_TYPE_NONE) { 47721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen ret = AVB_VBMETA_VERIFY_RESULT_OK_NOT_SIGNED; 47821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 47921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 48021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 48121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* Bail if the embedded hash size doesn't match the chosen algorithm. */ 48221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (h.hash_size != algorithm->hash_len) { 48321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("Embedded hash has wrong size.\n"); 48421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 48521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 48621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 48721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* No overflow checks needed from here-on after since all block 48821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen * sizes and offsets have been verified above. 48921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen */ 49021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 49121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen header_block = data; 49221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen authentication_block = header_block + sizeof(AvbVBMetaImageHeader); 49321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen auxiliary_block = authentication_block + h.authentication_data_block_size; 49421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 49521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen switch (h.algorithm_type) { 49621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* Explicit fall-through: */ 49721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen case AVB_ALGORITHM_TYPE_SHA256_RSA2048: 49821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen case AVB_ALGORITHM_TYPE_SHA256_RSA4096: 49921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen case AVB_ALGORITHM_TYPE_SHA256_RSA8192: 50021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_sha256_init(&sha256_ctx); 50121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_sha256_update(&sha256_ctx, header_block, 50221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen sizeof(AvbVBMetaImageHeader)); 50321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_sha256_update(&sha256_ctx, auxiliary_block, 50421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen h.auxiliary_data_block_size); 50521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen computed_hash = avb_sha256_final(&sha256_ctx); 50621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen break; 50721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen /* Explicit fall-through: */ 50821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen case AVB_ALGORITHM_TYPE_SHA512_RSA2048: 50921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen case AVB_ALGORITHM_TYPE_SHA512_RSA4096: 51021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen case AVB_ALGORITHM_TYPE_SHA512_RSA8192: 51121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_sha512_init(&sha512_ctx); 51221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_sha512_update(&sha512_ctx, header_block, 51321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen sizeof(AvbVBMetaImageHeader)); 51421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_sha512_update(&sha512_ctx, auxiliary_block, 51521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen h.auxiliary_data_block_size); 51621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen computed_hash = avb_sha512_final(&sha512_ctx); 51721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen break; 51821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen default: 51921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("Unknown algorithm.\n"); 52021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 52121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 52221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 52321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (avb_safe_memcmp(authentication_block + h.hash_offset, computed_hash, 52421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen h.hash_size) != 0) { 52521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_error("Hash does not match!\n"); 52621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen ret = AVB_VBMETA_VERIFY_RESULT_HASH_MISMATCH; 52721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 52821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 52921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 53021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen verification_result = 53121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_rsa_verify(auxiliary_block + h.public_key_offset, h.public_key_size, 53221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen authentication_block + h.signature_offset, 53321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen h.signature_size, authentication_block + h.hash_offset, 53421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen h.hash_size, algorithm->padding, algorithm->padding_len); 53521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 53621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen if (verification_result == 0) { 53721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen ret = AVB_VBMETA_VERIFY_RESULT_SIGNATURE_MISMATCH; 53821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen goto out; 53921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen } 54021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 5410155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen if (h.public_key_size > 0) { 5420155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen if (out_public_key_data != NULL) { 5430155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen *out_public_key_data = auxiliary_block + h.public_key_offset; 5440155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen } 5450155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen if (out_public_key_length != NULL) { 5460155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen *out_public_key_length = h.public_key_size; 5470155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen } 5480155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen } 54921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 55021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen ret = AVB_VBMETA_VERIFY_RESULT_OK; 55121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 55221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthenout: 55321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen return ret; 55421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen} 55521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 55621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthenvoid avb_vbmeta_image_header_to_host_byte_order(const AvbVBMetaImageHeader* src, 55721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen AvbVBMetaImageHeader* dest) { 55821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_memcpy(dest, src, sizeof(AvbVBMetaImageHeader)); 55921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 56021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->header_version_major = avb_be32toh(dest->header_version_major); 56121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->header_version_minor = avb_be32toh(dest->header_version_minor); 56221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 56321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->authentication_data_block_size = 56421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_be64toh(dest->authentication_data_block_size); 56521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->auxiliary_data_block_size = 56621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen avb_be64toh(dest->auxiliary_data_block_size); 56721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 56821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->algorithm_type = avb_be32toh(dest->algorithm_type); 56921e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 57021e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->hash_offset = avb_be64toh(dest->hash_offset); 57121e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->hash_size = avb_be64toh(dest->hash_size); 57221e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 57321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->signature_offset = avb_be64toh(dest->signature_offset); 57421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->signature_size = avb_be64toh(dest->signature_size); 57521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 57621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->public_key_offset = avb_be64toh(dest->public_key_offset); 57721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->public_key_size = avb_be64toh(dest->public_key_size); 57821e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 57918666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen dest->public_key_metadata_offset = 58018666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen avb_be64toh(dest->public_key_metadata_offset); 58118666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen dest->public_key_metadata_size = avb_be64toh(dest->public_key_metadata_size); 58218666abc5d8276a743111e6c3608e66f6c85fb51David Zeuthen 58321e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->descriptors_offset = avb_be64toh(dest->descriptors_offset); 58421e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->descriptors_size = avb_be64toh(dest->descriptors_size); 58521e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen 58621e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen dest->rollback_index = avb_be64toh(dest->rollback_index); 58721e95266704e572ced1c633bbc4aea9f42afa0a5David Zeuthen} 5880155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen 5890155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthenconst char* avb_vbmeta_verify_result_to_string(AvbVBMetaVerifyResult result) { 5900155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen const char* ret = NULL; 5910155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen 5920155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen switch (result) { 5930155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen case AVB_VBMETA_VERIFY_RESULT_OK: 5940155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen ret = "OK"; 5950155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen break; 5960155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen case AVB_VBMETA_VERIFY_RESULT_OK_NOT_SIGNED: 5970155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen ret = "OK_NOT_SIGNED"; 5980155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen break; 5990155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen case AVB_VBMETA_VERIFY_RESULT_INVALID_VBMETA_HEADER: 6000155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen ret = "INVALID_VBMETA_HEADER"; 6010155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen break; 6020155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen case AVB_VBMETA_VERIFY_RESULT_HASH_MISMATCH: 6030155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen ret = "HASH_MISMATCH"; 6040155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen break; 6050155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen case AVB_VBMETA_VERIFY_RESULT_SIGNATURE_MISMATCH: 6060155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen ret = "SIGNATURE_MISMATCH"; 6070155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen break; 6080155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen /* Do not add a 'default:' case here because of -Wswitch. */ 6090155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen } 6100155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen 6110155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen if (ret == NULL) { 6120155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen avb_error("Unknown AvbVBMetaVerifyResult value.\n"); 6130155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen ret = "(unknown)"; 6140155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen } 6150155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen 6160155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen return ret; 6170155e6b158bdc5b3a442f16a5dc124d5dee9c71cDavid Zeuthen} 618