~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/u-boot/lib/rsa/rsa-checksum.c

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 2013, Andreas Oetken.
 
3
 *
 
4
 * SPDX-License-Identifier:    GPL-2.0+
 
5
 */
 
6
 
 
7
#ifndef USE_HOSTCC
 
8
#include <common.h>
 
9
#include <fdtdec.h>
 
10
#include <asm/byteorder.h>
 
11
#include <asm/errno.h>
 
12
#include <asm/unaligned.h>
 
13
#else
 
14
#include "fdt_host.h"
 
15
#endif
 
16
#include <rsa.h>
 
17
#include <sha1.h>
 
18
#include <sha256.h>
 
19
 
 
20
/* PKCS 1.5 paddings as described in the RSA PKCS#1 v2.1 standard. */
 
21
 
 
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,
 
40
0x00, 0x04, 0x20
 
41
};
 
42
 
 
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
 
74
};
 
75
 
 
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
 
137
};
 
138
 
 
139
void sha1_calculate(const struct image_region region[], int region_count,
 
140
                    uint8_t *checksum)
 
141
{
 
142
        sha1_context ctx;
 
143
        uint32_t i;
 
144
        i = 0;
 
145
 
 
146
        sha1_starts(&ctx);
 
147
        for (i = 0; i < region_count; i++)
 
148
                sha1_update(&ctx, region[i].data, region[i].size);
 
149
        sha1_finish(&ctx, checksum);
 
150
}
 
151
 
 
152
void sha256_calculate(const struct image_region region[], int region_count,
 
153
                      uint8_t *checksum)
 
154
{
 
155
        sha256_context ctx;
 
156
        uint32_t i;
 
157
        i = 0;
 
158
 
 
159
        sha256_starts(&ctx);
 
160
        for (i = 0; i < region_count; i++)
 
161
                sha256_update(&ctx, region[i].data, region[i].size);
 
162
        sha256_finish(&ctx, checksum);
 
163
}