2
* Copyright (c) 2013, Andreas Oetken.
4
* SPDX-License-Identifier: GPL-2.0+
10
#include <asm/byteorder.h>
11
#include <asm/errno.h>
12
#include <asm/unaligned.h>
20
/* PKCS 1.5 paddings as described in the RSA PKCS#1 v2.1 standard. */
22
const uint8_t padding_sha256_rsa2048[RSA2048_BYTES - SHA256_SUM_LEN] = {
23
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
24
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
25
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
26
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
27
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
28
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
29
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
30
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
31
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
32
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
33
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
34
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
35
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
36
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
37
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
38
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x30, 0x31, 0x30,
39
0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05,
43
const uint8_t padding_sha1_rsa2048[RSA2048_BYTES - SHA1_SUM_LEN] = {
44
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
45
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
46
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
47
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
48
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
49
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
50
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
51
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
52
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
53
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
54
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
55
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
56
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
57
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
58
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
59
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
60
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
61
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
62
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
63
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
64
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
65
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
66
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
67
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
68
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
69
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
70
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
71
0xff, 0xff, 0xff, 0xff, 0x00, 0x30, 0x21, 0x30,
72
0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a,
73
0x05, 0x00, 0x04, 0x14
76
const uint8_t padding_sha256_rsa4096[RSA4096_BYTES - SHA256_SUM_LEN] = {
77
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
78
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
79
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
80
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
81
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
82
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
83
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
84
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
85
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
86
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
87
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
88
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
89
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
90
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
91
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
92
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
93
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
94
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
95
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
96
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
97
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
98
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
99
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
100
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
101
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
102
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
103
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
104
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
105
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
106
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
107
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
108
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
109
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
110
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
111
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
112
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
113
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
114
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
115
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
116
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
117
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
118
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
119
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
120
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
121
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
122
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
123
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
124
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
125
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
126
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
127
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
128
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
129
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
130
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
131
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
132
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
133
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
134
0xff, 0xff, 0xff, 0xff, 0x00, 0x30, 0x31, 0x30,
135
0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65,
136
0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20
139
void sha1_calculate(const struct image_region region[], int region_count,
147
for (i = 0; i < region_count; i++)
148
sha1_update(&ctx, region[i].data, region[i].size);
149
sha1_finish(&ctx, checksum);
152
void sha256_calculate(const struct image_region region[], int region_count,
160
for (i = 0; i < region_count; i++)
161
sha256_update(&ctx, region[i].data, region[i].size);
162
sha256_finish(&ctx, checksum);