1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 /******************************************************************************* 20 * 21 * This software is a port of the open source MCUBoot project. 22 * 23 * This file was modified to fit PSoC6-based MCUBoot applications. 24 * 25 * Portions of this software, including source code, documentation and related 26 * materials ("Software"), are owned by Cypress Semiconductor 27 * Corporation or one of its subsidiaries ("Cypress") and is protected by 28 * and subject to worldwide patent protection (United States and foreign), 29 * United States copyright laws and international treaty provisions. 30 * Therefore, you may use this Software only as provided in the license 31 * agreement accompanying the software package from which you 32 * obtained this Software ("EULA"). 33 * 34 * If no EULA applies, Cypress hereby grants you a personal, non- 35 * exclusive, non-transferable license to copy, modify, and compile the 36 * Software source code solely for use in connection with Cypress's 37 * integrated circuit products. Any reproduction, modification, translation, 38 * compilation, or representation of this Software except as specified 39 * above is prohibited without the express written permission of Cypress. 40 * 41 * Disclaimer: THIS SOFTWARE IS PROVIDED AS-IS, WITH NO 42 * WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING, 43 * BUT NOT LIMITED TO, NONINFRINGEMENT, IMPLIED 44 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 45 * PARTICULAR PURPOSE. Cypress reserves the right to make 46 * changes to the Software without notice. Cypress does not assume any 47 * liability arising out of the application or use of the Software or any 48 * product or circuit described in the Software. Cypress does not 49 * authorize its products for use in any products where a malfunction or 50 * failure of the Cypress product may reasonably be expected to result in 51 * significant property damage, injury or death ("High Risk Product"). By 52 * including Cypress's product in a High Risk Product, the manufacturer 53 * of such system or application assumes all risk of such use and in doing 54 * so agrees to indemnify Cypress against all liability. 55 * 56 ********************************************************************************/ 57 #include <bootutil/sign_key.h> 58 #include <mcuboot_config/mcuboot_config.h> 59 60 #if !defined(MCUBOOT_HW_KEY) 61 #if defined(MCUBOOT_SIGN_RSA) 62 const unsigned char rsa_pub_key[] = { 63 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd1, 0x06, 0x08, 64 0x1a, 0x18, 0x44, 0x2c, 0x18, 0xe8, 0xfb, 0xfd, 0xf7, 0x0d, 0xa3, 0x4f, 65 0x1f, 0xbb, 0xee, 0x5e, 0xf9, 0xaa, 0xd2, 0x4b, 0x18, 0xd3, 0x5a, 0xe9, 66 0x6d, 0x18, 0x80, 0x19, 0xf9, 0xf0, 0x9c, 0x34, 0x1b, 0xcb, 0xf3, 0xbc, 67 0x74, 0xdb, 0x42, 0xe7, 0x8c, 0x7f, 0x10, 0x53, 0x7e, 0x43, 0x5e, 0x0d, 68 0x57, 0x2c, 0x44, 0xd1, 0x67, 0x08, 0x0f, 0x0d, 0xbb, 0x5c, 0xee, 0xec, 69 0xb3, 0x99, 0xdf, 0xe0, 0x4d, 0x84, 0x0b, 0xaa, 0x77, 0x41, 0x60, 0xed, 70 0x15, 0x28, 0x49, 0xa7, 0x01, 0xb4, 0x3c, 0x10, 0xe6, 0x69, 0x8c, 0x2f, 71 0x5f, 0xac, 0x41, 0x4d, 0x9e, 0x5c, 0x14, 0xdf, 0xf2, 0xf8, 0xcf, 0x3d, 72 0x1e, 0x6f, 0xe7, 0x5b, 0xba, 0xb4, 0xa9, 0xc8, 0x88, 0x7e, 0x47, 0x3c, 73 0x94, 0xc3, 0x77, 0x67, 0x54, 0x4b, 0xaa, 0x8d, 0x38, 0x35, 0xca, 0x62, 74 0x61, 0x7e, 0xb7, 0xe1, 0x15, 0xdb, 0x77, 0x73, 0xd4, 0xbe, 0x7b, 0x72, 75 0x21, 0x89, 0x69, 0x24, 0xfb, 0xf8, 0x65, 0x6e, 0x64, 0x3e, 0xc8, 0x0e, 76 0xd7, 0x85, 0xd5, 0x5c, 0x4a, 0xe4, 0x53, 0x0d, 0x2f, 0xff, 0xb7, 0xfd, 77 0xf3, 0x13, 0x39, 0x83, 0x3f, 0xa3, 0xae, 0xd2, 0x0f, 0xa7, 0x6a, 0x9d, 78 0xf9, 0xfe, 0xb8, 0xce, 0xfa, 0x2a, 0xbe, 0xaf, 0xb8, 0xe0, 0xfa, 0x82, 79 0x37, 0x54, 0xf4, 0x3e, 0xe1, 0x2b, 0xd0, 0xd3, 0x08, 0x58, 0x18, 0xf6, 80 0x5e, 0x4c, 0xc8, 0x88, 0x81, 0x31, 0xad, 0x5f, 0xb0, 0x82, 0x17, 0xf2, 81 0x8a, 0x69, 0x27, 0x23, 0xf3, 0xab, 0x87, 0x3e, 0x93, 0x1a, 0x1d, 0xfe, 82 0xe8, 0xf8, 0x1a, 0x24, 0x66, 0x59, 0xf8, 0x1c, 0xab, 0xdc, 0xce, 0x68, 83 0x1b, 0x66, 0x64, 0x35, 0xec, 0xfa, 0x0d, 0x11, 0x9d, 0xaf, 0x5c, 0x3a, 84 0xa7, 0xd1, 0x67, 0xc6, 0x47, 0xef, 0xb1, 0x4b, 0x2c, 0x62, 0xe1, 0xd1, 85 0xc9, 0x02, 0x03, 0x01, 0x00, 0x01 86 }; 87 const unsigned int rsa_pub_key_len = 270; 88 #elif defined(MCUBOOT_SIGN_EC256) 89 /* Format of PEM : 90 * -----BEGIN PUBLIC KEY----- 91 * base64encode(DER) 92 * -----END PUBLIC KEY----- */ 93 #if defined(ECC256_KEY_FILE) 94 #include ECC256_KEY_FILE 95 #else 96 #warning "Used default ECC256 ecdsa_pub_key" 97 /* It is OEM_PUB_KEY at this moment for debug purposes */ 98 const unsigned char ecdsa_pub_key[] = { 99 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 100 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 101 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 102 0x42, 0x00, 0x04, 0xbd, 0x59, 0x9d, 0x15, 0xe0, 103 0xff, 0x66, 0x12, 0x37, 0x28, 0xdf, 0x50, 0x38, 104 0xb1, 0x9a, 0x73, 0x9b, 0xbd, 0xd1, 0xb3, 0x8a, 105 0x6f, 0xd2, 0x70, 0xed, 0x7f, 0xdb, 0x57, 0x53, 106 0xde, 0x9e, 0x77, 0x0f, 0x9c, 0x17, 0x22, 0x69, 107 0xa6, 0x75, 0x48, 0x1f, 0xa4, 0xbc, 0x49, 0xe2, 108 0x01, 0xe0, 0x5e, 0x3d, 0xec, 0xa8, 0xc1, 0xca, 109 0xc5, 0x5c, 0xa2, 0xc6, 0xfd, 0xb0, 0x24, 0xb1, 110 0x0a, 0x46, 0xf5, 111 }; 112 const unsigned int ecdsa_pub_key_len = 91; 113 #endif 114 #else 115 #warning "No public key available for given signing algorithm." 116 #endif 117 118 #if defined(MCUBOOT_SIGN_RSA) || \ 119 defined(MCUBOOT_SIGN_EC256) 120 const struct bootutil_key bootutil_keys[] = { 121 #if defined(MCUBOOT_SIGN_RSA) 122 { 123 .key = rsa_pub_key, 124 .len = &rsa_pub_key_len, 125 }, 126 #elif defined(MCUBOOT_SIGN_EC256) 127 { 128 .key = ecdsa_pub_key, 129 .len = &ecdsa_pub_key_len, 130 }, 131 #else 132 { 133 .key = NULL, 134 .len = 0x00, 135 }, 136 #endif 137 }; 138 const int bootutil_key_cnt = 1; 139 #endif 140 #else 141 unsigned int pub_key_len; 142 struct bootutil_key bootutil_keys[1] = { 143 { 144 .key = 0, 145 .len = &pub_key_len, 146 } 147 }; 148 const int bootutil_key_cnt = 1; 149 #endif /* !MCUBOOT_HW_KEY */ 150 151 unsigned char enc_priv_key[] = { 152 0x30, 0x81, 0x87, 0x02, 0x01, 0x00, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 153 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 154 0x03, 0x01, 0x07, 0x04, 0x6d, 0x30, 0x6b, 0x02, 0x01, 0x01, 0x04, 0x20, 155 0xf6, 0x1e, 0x51, 0x9d, 0xf8, 0xfa, 0xdd, 0xa1, 0xb7, 0xd9, 0xa9, 0x64, 156 0x64, 0x3b, 0x54, 0xd0, 0x3d, 0xd0, 0x1f, 0xe5, 0x78, 0xd9, 0x17, 0x98, 157 0xa5, 0x28, 0xca, 0xcc, 0x6b, 0x67, 0x9e, 0x06, 0xa1, 0x44, 0x03, 0x42, 158 0x00, 0x04, 0x8a, 0x44, 0x73, 0x00, 0x94, 0xc9, 0x80, 0x27, 0x31, 0x0d, 159 0x23, 0x36, 0x6b, 0xe9, 0x69, 0x9f, 0xcb, 0xc5, 0x7c, 0xc8, 0x44, 0x1a, 160 0x93, 0xe6, 0xee, 0x7d, 0x86, 0xa6, 0xae, 0x5e, 0x93, 0x72, 0x74, 0xd9, 161 0xe1, 0x5a, 0x1c, 0x9b, 0x65, 0x1a, 0x2b, 0x61, 0x41, 0x28, 0x02, 0x73, 162 0x84, 0x12, 0x97, 0x3a, 0x2d, 0xa2, 0xa0, 0x67, 0x77, 0x02, 0xda, 0x67, 163 0x1a, 0x4b, 0xdd, 0xd7, 0x71, 0xcc, 164 }; 165 static unsigned int enc_priv_key_len = 138; 166 const struct bootutil_key bootutil_enc_key = { 167 .key = enc_priv_key, 168 .len = &enc_priv_key_len, 169 }; 170