Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(80)

Side by Side Diff: vboot_firmware/lib/cryptolib/include/rsa.h

Issue 2745007: Major refactoring of structures, with unit tests. (Closed) Base URL: ssh://gitrw.chromium.org/vboot_reference.git
Patch Set: Implemented LoadFirmware2() Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be 2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file. 3 * found in the LICENSE file.
4 */ 4 */
5 5
6 #ifndef VBOOT_REFERENCE_RSA_H_ 6 #ifndef VBOOT_REFERENCE_RSA_H_
7 #define VBOOT_REFERENCE_RSA_H_ 7 #define VBOOT_REFERENCE_RSA_H_
8 8
9 #ifndef VBOOT_REFERENCE_CRYPTOLIB_H_ 9 #ifndef VBOOT_REFERENCE_CRYPTOLIB_H_
10 #error "Do not include this file directly. Use cryptolib.h instead." 10 #error "Do not include this file directly. Use cryptolib.h instead."
11 #endif 11 #endif
12 12
13 #include <stdint.h> 13 #include <stdint.h>
14 14
15 #define RSA1024NUMBYTES 128 /* 1024 bit key length */ 15 #define RSA1024NUMBYTES 128 /* 1024 bit key length */
16 #define RSA2048NUMBYTES 256 /* 2048 bit key length */ 16 #define RSA2048NUMBYTES 256 /* 2048 bit key length */
17 #define RSA4096NUMBYTES 512 /* 4096 bit key length */ 17 #define RSA4096NUMBYTES 512 /* 4096 bit key length */
18 #define RSA8192NUMBYTES 1024 /* 8192 bit key length */ 18 #define RSA8192NUMBYTES 1024 /* 8192 bit key length */
19 19
20 #define RSA1024NUMWORDS (RSA1024NUMBYTES / sizeof(uint32_t)) 20 #define RSA1024NUMWORDS (RSA1024NUMBYTES / sizeof(uint32_t))
21 #define RSA2048NUMWORDS (RSA2048NUMBYTES / sizeof(uint32_t)) 21 #define RSA2048NUMWORDS (RSA2048NUMBYTES / sizeof(uint32_t))
22 #define RSA4096NUMWORDS (RSA4096NUMBYTES / sizeof(uint32_t)) 22 #define RSA4096NUMWORDS (RSA4096NUMBYTES / sizeof(uint32_t))
23 #define RSA8192NUMWORDS (RSA8192NUMBYTES / sizeof(uint32_t)) 23 #define RSA8192NUMWORDS (RSA8192NUMBYTES / sizeof(uint32_t))
24 24
25 typedef struct RSAPublicKey { 25 typedef struct RSAPublicKey {
26 int len; /* Length of n[] in number of uint32_t */ 26 uint32_t len; /* Length of n[] in number of uint32_t */
27 uint32_t n0inv; /* -1 / n[0] mod 2^32 */ 27 uint32_t n0inv; /* -1 / n[0] mod 2^32 */
28 uint32_t* n; /* modulus as little endian array */ 28 uint32_t* n; /* modulus as little endian array */
29 uint32_t* rr; /* R^2 as little endian array */ 29 uint32_t* rr; /* R^2 as little endian array */
30 int algorithm; /* Algorithm to use when verifying binaries with the key */
30 } RSAPublicKey; 31 } RSAPublicKey;
31 32
32 /* Verify a RSA PKCS1.5 signature [sig] of [sig_type] and length [sig_len] 33 /* Verify a RSA PKCS1.5 signature [sig] of [sig_type] and length [sig_len]
33 * against an expected [hash] using [key]. Returns 0 on failure, 1 on success. 34 * against an expected [hash] using [key]. Returns 0 on failure, 1 on success.
34 */ 35 */
35 int RSAVerify(const RSAPublicKey *key, 36 int RSAVerify(const RSAPublicKey *key,
36 const uint8_t* sig, 37 const uint8_t* sig,
37 const int sig_len, 38 const int sig_len,
38 const uint8_t sig_type, 39 const uint8_t sig_type,
39 const uint8_t* hash); 40 const uint8_t* hash);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 83
83 /* Create a RSAPublic key structure from binary blob [buf] of length 84 /* Create a RSAPublic key structure from binary blob [buf] of length
84 * [len]. 85 * [len].
85 * 86 *
86 * Caller owns the returned key and must free it. 87 * Caller owns the returned key and must free it.
87 */ 88 */
88 RSAPublicKey* RSAPublicKeyFromBuf(const uint8_t* buf, int len); 89 RSAPublicKey* RSAPublicKeyFromBuf(const uint8_t* buf, int len);
89 90
90 91
91 #endif /* VBOOT_REFERENCE_RSA_H_ */ 92 #endif /* VBOOT_REFERENCE_RSA_H_ */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698