Home | History | Annotate | Download | only in include
      1 /* Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
      2  * Use of this source code is governed by a BSD-style license that can be
      3  * found in the LICENSE file.
      4  *
      5  * Host-side misc functions for verified boot.
      6  */
      7 
      8 #ifndef VBOOT_REFERENCE_UTIL_MISC_H_
      9 #define VBOOT_REFERENCE_UTIL_MISC_H_
     10 
     11 #include "vboot_struct.h"
     12 struct rsa_st;
     13 
     14 /* Prints the sha1sum of the given VbPublicKey to stdout. */
     15 void PrintPubKeySha1Sum(VbPublicKey* key);
     16 
     17 /*
     18  * Our packed RSBPublicKey buffer (historically in files ending with ".keyb",
     19  * but also the part of VbPublicKey and struct vb2_packed_key that is
     20  * referenced by .key_offset) has this binary format:
     21  *
     22  *   struct {
     23  *       uint32_t nwords;            // size of RSA key in 32-bit words
     24  *       uint32_t N0inv;             // -1 / N[0] mod 2^32
     25  *       uint32_t modulus[nwords];   // modulus as a little endian array
     26  *       uint32_t R2[nwords];        // R^2  as little endian array
     27  *   };
     28  *
     29  * This function allocates and extracts that binary structure directly
     30  * from the RSA private key, rather than from a file.
     31  *
     32  * @param rsa_private_key     RSA private key (duh)
     33  * @param keyb_data	      Pointer to newly allocated binary blob
     34  * @param keyb_size	      Size of newly allocated binary blob
     35  *
     36  * @return 0 on success, non-zero if unable to allocate enough memory.
     37  */
     38 int vb_keyb_from_rsa(struct rsa_st *rsa_private_key,
     39 		     uint8_t **keyb_data, uint32_t *keyb_size);
     40 
     41 #endif  /* VBOOT_REFERENCE_UTIL_MISC_H_ */
     42