1322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah#!/bin/bash 2322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 3322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah# Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 4322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah# Use of this source code is governed by a BSD-style license that can be 5322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah# found in the LICENSE file. 6322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 7322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah# Script to generate padding.c containing PKCS 1.5 padding byte arrays for 8322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah# various combinations of RSA key lengths and message digest algorithms. 9322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 10322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav ShahPad_Preamble="0x00,0x01" 11322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 128bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav ShahSHA1_digestinfo="0x30,0x21,0x30,0x09,0x06,0x05,0x2b,0x0e,0x03,0x02,0x1a,0x05"\ 13322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah",0x00,0x04,0x14" 148bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav ShahSHA256_digestinfo="0x30,0x31,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03"\ 15322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah",0x04,0x02,0x01,0x05,0x00,0x04,0x20" 168bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav ShahSHA512_digestinfo="0x30,0x51,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03"\ 17322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah",0x04,0x02,0x03,0x05,0x00,0x04,0x40" 18322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 19322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav ShahRSA1024_Len=128 20322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav ShahRSA2048_Len=256 21322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav ShahRSA4096_Len=512 22322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav ShahRSA8192_Len=1024 23322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 24322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav ShahSHA1_T_Len=35 25322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav ShahSHA256_T_Len=51 26322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav ShahSHA512_T_Len=83 27322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 28322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav ShahHashAlgos=( SHA1 SHA256 SHA512 ) 29322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav ShahRSAAlgos=( RSA1024 RSA2048 RSA4096 RSA8192 ) 30322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 31322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahfunction genFFOctets { 32322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah count=$1 33322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah while [ $count -gt 0 ]; do 34322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah echo -n "0xff," 35322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah let count=count-1 36322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah done 37322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah} 38322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 39322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 40322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahcat <<EOF 41322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah/* 42322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * DO NOT MODIFY THIS FILE DIRECTLY. 43322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * 44322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * This file is automatically generated by genpadding.sh and contains padding 45322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * arrays corresponding to various combinations of algorithms for RSA signatures. 46322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah */ 47322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 48322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav ShahEOF 49322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 50322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 515411c7a9f03f91bf2c1cd1cf852db9d4585a05c9Gaurav Shahecho '#include "cryptolib.h"' 52322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho 53322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho 54322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahcat <<EOF 55322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah/* 56322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * PKCS 1.5 padding (from the RSA PKCS#1 v2.1 standard) 57322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * 58322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * Depending on the RSA key size and hash function, the padding is calculated 59322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * as follows: 60322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * 61322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * 0x00 || 0x01 || PS || 0x00 || T 62322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * 63322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * T: DER Encoded DigestInfo value which depends on the hash function used. 64322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * 65322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * SHA-1: (0x)30 21 30 09 06 05 2b 0e 03 02 1a 05 00 04 14 || H. 66322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * SHA-256: (0x)30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20 || H. 67322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * SHA-512: (0x)30 51 30 0d 06 09 60 86 48 01 65 03 04 02 03 05 00 04 40 || H. 68322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * 69322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * Length(T) = 35 octets for SHA-1 70322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * Length(T) = 51 octets for SHA-256 71322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * Length(T) = 83 octets for SHA-512 72322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * 73322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * PS: octet string consisting of {Length(RSA Key) - Length(T) - 3} 0xFF 74322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah * 75322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah */ 76322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav ShahEOF 77322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho 78322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho 79322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 80322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 81322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah# Generate padding arrays. 82322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahalgorithmcounter=0 83322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 84322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahfor rsaalgo in ${RSAAlgos[@]} 85322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahdo 86322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah for hashalgo in ${HashAlgos[@]} 87322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah do 88322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah echo "/* Algorithm Type $algorithmcounter */" 89322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah let algorithmcounter=algorithmcounter+1 90322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah eval rsalen=${rsaalgo}_Len 91322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah eval hashlen=${hashalgo}_T_Len 92322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah let nums=rsalen-hashlen-3 93322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah echo "const uint8_t padding${rsaalgo}_${hashalgo}[${rsaalgo}NUMBYTES - ${hashalgo}_DIGEST_SIZE] = {" 94322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah echo -n $Pad_Preamble, 95322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah genFFOctets $nums 96322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah echo -n "0x00," 978bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah eval digestinfo=\$${hashalgo}_digestinfo 988bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah echo $digestinfo 99322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah echo "};" 100322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah echo 101322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah done 102322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahdone 103322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 104322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho "const int kNumAlgorithms = $algorithmcounter;"; 105322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho "#define NUMALGORITHMS $algorithmcounter" 106322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho 107322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 1088bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah# Output DigestInfo field lengths. 1098bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahcat <<EOF 1108bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah#define SHA1_DIGESTINFO_LEN 15 1118bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah#define SHA256_DIGESTINFO_LEN 19 1128bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah#define SHA512_DIGESTINFO_LEN 19 1138bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav ShahEOF 1148bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah 1158bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah 1168bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah# Generate DigestInfo arrays. 1178bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahfor hashalgo in ${HashAlgos[@]} 1188bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahdo 1198bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah echo "const uint8_t ${hashalgo}_digestinfo[] = {" 1208bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah eval digestinfo=\$${hashalgo}_digestinfo 1218bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah echo $digestinfo 1228bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah echo "};" 1238bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah echo 1248bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahdone 1258bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah 1268bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah# Generate DigestInfo to size map. 1278bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahecho "const int digestinfo_size_map[] = {" 1288bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahfor rsaalgo in ${RSAAlgos[@]} 1298bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahdo 1308bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah for hashalgo in ${HashAlgos[@]} 1318bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah do 1328bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah echo ${hashalgo}_DIGESTINFO_LEN, 1338bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah done 1348bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahdone 1358bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahecho "};" 1368bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahecho 1378bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah 1388bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah# Generate algorithm signature length map. 139322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho "const int siglen_map[NUMALGORITHMS] = {" 140322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahfor rsaalgo in ${RSAAlgos[@]} 141322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahdo 142322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah for hashalgo in ${HashAlgos[@]} 143322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah do 144cae5fa613a947288262a63a2b89d1ffbb633f673Gaurav Shah echo ${rsaalgo}NUMBYTES, 145322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah done 146322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahdone 147322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho "};" 148322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho 149322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 1508bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah# Generate algorithm padding array map. 151322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho "const uint8_t* padding_map[NUMALGORITHMS] = {" 152322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahfor rsaalgo in ${RSAAlgos[@]} 153322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahdo 154322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah for hashalgo in ${HashAlgos[@]} 155322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah do 156322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah echo padding${rsaalgo}_${hashalgo}, 157322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah done 158322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahdone 159322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho "};" 160322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho 161322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 1628bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah# Generate algorithm padding size map. 163322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho "const int padding_size_map[NUMALGORITHMS] = {" 164322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahfor rsaalgo in ${RSAAlgos[@]} 165322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahdo 166322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah for hashalgo in ${HashAlgos[@]} 167322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah do 168322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah echo ${rsaalgo}NUMBYTES - ${hashalgo}_DIGEST_SIZE, 169322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah done 170322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahdone 171322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho "};" 172322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho 173322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 1745411c7a9f03f91bf2c1cd1cf852db9d4585a05c9Gaurav Shah# Generate signature algorithm to messge digest algorithm map. 1755411c7a9f03f91bf2c1cd1cf852db9d4585a05c9Gaurav Shahecho "const int hash_type_map[] = {" 1765411c7a9f03f91bf2c1cd1cf852db9d4585a05c9Gaurav Shahfor rsaalgo in ${RSAAlgos[@]} 1775411c7a9f03f91bf2c1cd1cf852db9d4585a05c9Gaurav Shahdo 1785411c7a9f03f91bf2c1cd1cf852db9d4585a05c9Gaurav Shah for hashalgo in ${HashAlgos[@]} 1795411c7a9f03f91bf2c1cd1cf852db9d4585a05c9Gaurav Shah do 1805411c7a9f03f91bf2c1cd1cf852db9d4585a05c9Gaurav Shah echo ${hashalgo}_DIGEST_ALGORITHM, 1815411c7a9f03f91bf2c1cd1cf852db9d4585a05c9Gaurav Shah done 1825411c7a9f03f91bf2c1cd1cf852db9d4585a05c9Gaurav Shahdone 1835411c7a9f03f91bf2c1cd1cf852db9d4585a05c9Gaurav Shahecho "};" 1845411c7a9f03f91bf2c1cd1cf852db9d4585a05c9Gaurav Shahecho 1855411c7a9f03f91bf2c1cd1cf852db9d4585a05c9Gaurav Shah 1868bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah# Generate algorithm to message digest's output size map. 1878bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahecho "const int hash_size_map[NUMALGORITHMS] = {" 1888bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahfor rsaalgo in ${RSAAlgos[@]} 1898bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahdo 1908bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah for hashalgo in ${HashAlgos[@]} 1918bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah do 1928bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah echo ${hashalgo}_DIGEST_SIZE, 1938bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah done 1948bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahdone 1958bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahecho "};" 1968bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahecho 1978bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah 1988bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah# Generate algorithm to message digest's input block size map. 199322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho "const int hash_blocksize_map[NUMALGORITHMS] = {" 200322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahfor rsaalgo in ${RSAAlgos[@]} 201322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahdo 202322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah for hashalgo in ${HashAlgos[@]} 203322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah do 204322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah echo ${hashalgo}_BLOCK_SIZE, 205322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah done 206322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahdone 207322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho "};" 208322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho 209322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 2108bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah# Generate algorithm to message's digest ASN.1 DigestInfo map. 2118bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahecho "const uint8_t* hash_digestinfo_map[NUMALGORITHMS] = {" 2128bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahfor rsaalgo in ${RSAAlgos[@]} 2138bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahdo 2148bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah for hashalgo in ${HashAlgos[@]} 2158bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah do 2168bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah echo ${hashalgo}_digestinfo, 2178bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah done 2188bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahdone 2198bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahecho "};" 2208bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shahecho 2218bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah 2228bf29d8ea10392c03f8d11561a4e63182f6211a3Gaurav Shah 223322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah# Generate algorithm description strings. 224322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho "const char* algo_strings[NUMALGORITHMS] = {" 225322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahfor rsaalgo in ${RSAAlgos[@]} 226322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahdo 227322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah for hashalgo in ${HashAlgos[@]} 228322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah do 229322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah echo \"${rsaalgo} ${hashalgo}\", 230322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah done 231322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahdone 232322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho "};" 233322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shahecho 234322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah 235322536d2f9d30f42218cc9f2ab40574557da8a9Gaurav Shah#echo "#endif /* VBOOT_REFERENCE_PADDING_H_ */" 236