diff options
Diffstat (limited to 'scripts/genpadding.sh')
-rwxr-xr-x | scripts/genpadding.sh | 235 |
1 files changed, 0 insertions, 235 deletions
diff --git a/scripts/genpadding.sh b/scripts/genpadding.sh deleted file mode 100755 index baac71bd..00000000 --- a/scripts/genpadding.sh +++ /dev/null @@ -1,235 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2010 The Chromium OS Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -# Script to generate padding.c containing PKCS 1.5 padding byte arrays for -# various combinations of RSA key lengths and message digest algorithms. - -Pad_Preamble="0x00,0x01" - -SHA1_digestinfo="0x30,0x21,0x30,0x09,0x06,0x05,0x2b,0x0e,0x03,0x02,0x1a,0x05"\ -",0x00,0x04,0x14" -SHA256_digestinfo="0x30,0x31,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03"\ -",0x04,0x02,0x01,0x05,0x00,0x04,0x20" -SHA512_digestinfo="0x30,0x51,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03"\ -",0x04,0x02,0x03,0x05,0x00,0x04,0x40" - -RSA1024_Len=128 -RSA2048_Len=256 -RSA4096_Len=512 -RSA8192_Len=1024 - -SHA1_T_Len=35 -SHA256_T_Len=51 -SHA512_T_Len=83 - -HashAlgos=( SHA1 SHA256 SHA512 ) -RSAAlgos=( RSA1024 RSA2048 RSA4096 RSA8192 ) - -function genFFOctets { - count=$1 - while [ $count -gt 0 ]; do - echo -n "0xff," - let count=count-1 - done -} - - -cat <<EOF -/* - * DO NOT MODIFY THIS FILE DIRECTLY. - * - * This file is automatically generated by genpadding.sh and contains padding - * arrays corresponding to various combinations of algorithms for RSA signatures. - */ - -EOF - - -echo '#include "cryptolib.h"' -echo -echo -cat <<EOF -/* - * PKCS 1.5 padding (from the RSA PKCS#1 v2.1 standard) - * - * Depending on the RSA key size and hash function, the padding is calculated - * as follows: - * - * 0x00 || 0x01 || PS || 0x00 || T - * - * T: DER Encoded DigestInfo value which depends on the hash function used. - * - * SHA-1: (0x)30 21 30 09 06 05 2b 0e 03 02 1a 05 00 04 14 || H. - * SHA-256: (0x)30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20 || H. - * SHA-512: (0x)30 51 30 0d 06 09 60 86 48 01 65 03 04 02 03 05 00 04 40 || H. - * - * Length(T) = 35 octets for SHA-1 - * Length(T) = 51 octets for SHA-256 - * Length(T) = 83 octets for SHA-512 - * - * PS: octet string consisting of {Length(RSA Key) - Length(T) - 3} 0xFF - * - */ -EOF -echo -echo - - -# Generate padding arrays. -algorithmcounter=0 - -for rsaalgo in ${RSAAlgos[@]} -do - for hashalgo in ${HashAlgos[@]} - do - echo "/* Algorithm Type $algorithmcounter */" - let algorithmcounter=algorithmcounter+1 - eval rsalen=${rsaalgo}_Len - eval hashlen=${hashalgo}_T_Len - let nums=rsalen-hashlen-3 - echo "const uint8_t padding${rsaalgo}_${hashalgo}[${rsaalgo}NUMBYTES - ${hashalgo}_DIGEST_SIZE] = {" - echo -n $Pad_Preamble, - genFFOctets $nums - echo -n "0x00," - eval digestinfo=\$${hashalgo}_digestinfo - echo $digestinfo - echo "};" - echo - done -done - -echo "const int kNumAlgorithms = $algorithmcounter;"; -echo "#define NUMALGORITHMS $algorithmcounter" -echo - -# Output DigestInfo field lengths. -cat <<EOF -#define SHA1_DIGESTINFO_LEN 15 -#define SHA256_DIGESTINFO_LEN 19 -#define SHA512_DIGESTINFO_LEN 19 -EOF - - -# Generate DigestInfo arrays. -for hashalgo in ${HashAlgos[@]} -do - echo "const uint8_t ${hashalgo}_digestinfo[] = {" - eval digestinfo=\$${hashalgo}_digestinfo - echo $digestinfo - echo "};" - echo -done - -# Generate DigestInfo to size map. -echo "const int digestinfo_size_map[] = {" -for rsaalgo in ${RSAAlgos[@]} -do - for hashalgo in ${HashAlgos[@]} - do - echo ${hashalgo}_DIGESTINFO_LEN, - done -done -echo "};" -echo - -# Generate algorithm signature length map. -echo "const int siglen_map[NUMALGORITHMS] = {" -for rsaalgo in ${RSAAlgos[@]} -do - for hashalgo in ${HashAlgos[@]} - do - echo ${rsaalgo}NUMBYTES, - done -done -echo "};" -echo - -# Generate algorithm padding array map. -echo "const uint8_t* padding_map[NUMALGORITHMS] = {" -for rsaalgo in ${RSAAlgos[@]} -do - for hashalgo in ${HashAlgos[@]} - do - echo padding${rsaalgo}_${hashalgo}, - done -done -echo "};" -echo - -# Generate algorithm padding size map. -echo "const int padding_size_map[NUMALGORITHMS] = {" -for rsaalgo in ${RSAAlgos[@]} -do - for hashalgo in ${HashAlgos[@]} - do - echo ${rsaalgo}NUMBYTES - ${hashalgo}_DIGEST_SIZE, - done -done -echo "};" -echo - -# Generate signature algorithm to messge digest algorithm map. -echo "const int hash_type_map[] = {" -for rsaalgo in ${RSAAlgos[@]} -do - for hashalgo in ${HashAlgos[@]} - do - echo ${hashalgo}_DIGEST_ALGORITHM, - done -done -echo "};" -echo - -# Generate algorithm to message digest's output size map. -echo "const int hash_size_map[NUMALGORITHMS] = {" -for rsaalgo in ${RSAAlgos[@]} -do - for hashalgo in ${HashAlgos[@]} - do - echo ${hashalgo}_DIGEST_SIZE, - done -done -echo "};" -echo - -# Generate algorithm to message digest's input block size map. -echo "const int hash_blocksize_map[NUMALGORITHMS] = {" -for rsaalgo in ${RSAAlgos[@]} -do - for hashalgo in ${HashAlgos[@]} - do - echo ${hashalgo}_BLOCK_SIZE, - done -done -echo "};" -echo - -# Generate algorithm to message's digest ASN.1 DigestInfo map. -echo "const uint8_t* hash_digestinfo_map[NUMALGORITHMS] = {" -for rsaalgo in ${RSAAlgos[@]} -do - for hashalgo in ${HashAlgos[@]} - do - echo ${hashalgo}_digestinfo, - done -done -echo "};" -echo - - -# Generate algorithm description strings. -echo "const char* algo_strings[NUMALGORITHMS] = {" -for rsaalgo in ${RSAAlgos[@]} -do - for hashalgo in ${HashAlgos[@]} - do - echo \"${rsaalgo} ${hashalgo}\", - done -done -echo "};" -echo - -#echo "#endif /* VBOOT_REFERENCE_PADDING_H_ */" |