blob: 4dbd5afea5f9ea04bf852024d9c439ab46c0fd3d [file] [log] [blame]
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +02001/*
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
David Vincze03368b82020-04-01 12:53:53 +020060#if !defined(MCUBOOT_HW_KEY)
Roman Okhrimenko89ecdac2020-02-28 17:05:55 +020061#if defined(MCUBOOT_SIGN_RSA)
62const 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};
87const unsigned int rsa_pub_key_len = 270;
88#elif defined(MCUBOOT_SIGN_EC)
89/* Format of PEM :
90 * -----BEGIN PUBLIC KEY-----
91 * base64encode(DER)
92 * -----END PUBLIC KEY----- */
93#if defined(ECC224_KEY_FILE)
94#include ECC224_KEY_FILE
95#else
96#warning "Used default ECC224 ecdsa_pub_key"
97/* It is OEM_PUB_KEY at this moment for debug purposes */
98/* Autogenerated by imgtool.py, do not edit. */
99const unsigned char ecdsa_pub_key[] = {
100 0x30, 0x4e, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86,
101 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x05, 0x2b,
102 0x81, 0x04, 0x00, 0x21, 0x03, 0x3a, 0x00, 0x04,
103 0xa5, 0x8b, 0x18, 0xa4, 0x60, 0x37, 0xf7, 0x0d,
104 0x2b, 0x06, 0xba, 0x4b, 0x4c, 0xd7, 0x8d, 0xec,
105 0x2a, 0x32, 0x5a, 0x0e, 0x52, 0xf4, 0x1b, 0x7c,
106 0x99, 0xec, 0x68, 0x5d, 0x05, 0xc3, 0x6b, 0x7b,
107 0x40, 0x9c, 0xaa, 0xac, 0x90, 0xf4, 0xfc, 0xbe,
108 0x98, 0xe5, 0x3e, 0x86, 0x3d, 0x37, 0xbf, 0x45,
109 0x78, 0x92, 0x27, 0xca, 0x69, 0xe6, 0xf2, 0xc5,
110};
111const unsigned int ecdsa_pub_key_len = 80;
112#endif
113#elif defined(MCUBOOT_SIGN_EC256)
114/* Format of PEM :
115 * -----BEGIN PUBLIC KEY-----
116 * base64encode(DER)
117 * -----END PUBLIC KEY----- */
118#if defined(ECC256_KEY_FILE)
119#include ECC256_KEY_FILE
120#else
121#warning "Used default ECC256 ecdsa_pub_key"
122/* It is OEM_PUB_KEY at this moment for debug purposes */
123const unsigned char ecdsa_pub_key[] = {
124 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86,
125 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a,
126 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03,
127 0x42, 0x00, 0x04, 0xbd, 0x59, 0x9d, 0x15, 0xe0,
128 0xff, 0x66, 0x12, 0x37, 0x28, 0xdf, 0x50, 0x38,
129 0xb1, 0x9a, 0x73, 0x9b, 0xbd, 0xd1, 0xb3, 0x8a,
130 0x6f, 0xd2, 0x70, 0xed, 0x7f, 0xdb, 0x57, 0x53,
131 0xde, 0x9e, 0x77, 0x0f, 0x9c, 0x17, 0x22, 0x69,
132 0xa6, 0x75, 0x48, 0x1f, 0xa4, 0xbc, 0x49, 0xe2,
133 0x01, 0xe0, 0x5e, 0x3d, 0xec, 0xa8, 0xc1, 0xca,
134 0xc5, 0x5c, 0xa2, 0xc6, 0xfd, 0xb0, 0x24, 0xb1,
135 0x0a, 0x46, 0xf5,
136};
137const unsigned int ecdsa_pub_key_len = 91;
138#endif
139#else
140#warning "No public key available for given signing algorithm."
141#endif
142
143#if defined(MCUBOOT_SIGN_RSA) || \
144 defined(MCUBOOT_SIGN_EC) || \
145 defined(MCUBOOT_SIGN_EC256)
146const struct bootutil_key bootutil_keys[] = {
147#if defined(MCUBOOT_SIGN_RSA)
148 {
149 .key = rsa_pub_key,
150 .len = &rsa_pub_key_len,
151 },
152#elif defined(MCUBOOT_SIGN_EC) || \
153 defined(MCUBOOT_SIGN_EC256)
154 {
155 .key = ecdsa_pub_key,
156 .len = &ecdsa_pub_key_len,
157 },
158#else
159 {
160 .key = NULL,
161 .len = 0x00,
162 },
163#endif
164};
165const int bootutil_key_cnt = 1;
166#endif
David Vincze03368b82020-04-01 12:53:53 +0200167#else
168unsigned int pub_key_len;
169struct bootutil_key bootutil_keys[1] = {
170 {
171 .key = 0,
172 .len = &pub_key_len,
173 }
174};
175const int bootutil_key_cnt = 1;
176#endif /* !MCUBOOT_HW_KEY */
Bohdan Kovalchukde518072020-11-30 22:10:48 +0200177
178unsigned char enc_priv_key[] = {
179 0x30, 0x81, 0x87, 0x02, 0x01, 0x00, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86,
180 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,
181 0x03, 0x01, 0x07, 0x04, 0x6d, 0x30, 0x6b, 0x02, 0x01, 0x01, 0x04, 0x20,
182 0xf6, 0x1e, 0x51, 0x9d, 0xf8, 0xfa, 0xdd, 0xa1, 0xb7, 0xd9, 0xa9, 0x64,
183 0x64, 0x3b, 0x54, 0xd0, 0x3d, 0xd0, 0x1f, 0xe5, 0x78, 0xd9, 0x17, 0x98,
184 0xa5, 0x28, 0xca, 0xcc, 0x6b, 0x67, 0x9e, 0x06, 0xa1, 0x44, 0x03, 0x42,
185 0x00, 0x04, 0x8a, 0x44, 0x73, 0x00, 0x94, 0xc9, 0x80, 0x27, 0x31, 0x0d,
186 0x23, 0x36, 0x6b, 0xe9, 0x69, 0x9f, 0xcb, 0xc5, 0x7c, 0xc8, 0x44, 0x1a,
187 0x93, 0xe6, 0xee, 0x7d, 0x86, 0xa6, 0xae, 0x5e, 0x93, 0x72, 0x74, 0xd9,
188 0xe1, 0x5a, 0x1c, 0x9b, 0x65, 0x1a, 0x2b, 0x61, 0x41, 0x28, 0x02, 0x73,
189 0x84, 0x12, 0x97, 0x3a, 0x2d, 0xa2, 0xa0, 0x67, 0x77, 0x02, 0xda, 0x67,
190 0x1a, 0x4b, 0xdd, 0xd7, 0x71, 0xcc,
191};
192static unsigned int enc_priv_key_len = 138;
193const struct bootutil_key bootutil_enc_key = {
194 .key = enc_priv_key,
195 .len = &enc_priv_key_len,
196};