On 10/09/2015 07:46 PM, Jimmy Zhang wrote:
Create new configuration keywords:
RsaKeyModulusFile: pubkey modulus
RsaPssSigBlFile: bootloader rsa pss signature
RsaPssSigBctFile: bct rsa pss signature
Sample Configuration file update_bl_sig.cfg
RsaKeyModulusFile = pubkey.mod;
RsaPssSigBlFile = bl.sig;
where pubkey.mod and bl.sig are files that contain the public key
modulus and bootloader's rsa-pss signature respectively.
public key modulus and signature are created through utilities
outside cbootimage.
Command line example:
$ cbootimage -s tegra210 -u update_bl_sig.cfg image.bin image.bin-bl-signed
Above three new keywords added in this CL are only implemented support
for T210.
I'd like to see a changelog per patch so I don't have to refer back to
the cover letter each time.
diff --git a/src/crypto.c b/src/crypto.c
+void
+swap_endianness(
Nit: It's more like "byte order" (serialization) rather than endianness,
although they're related concepts.
+ u_int8_t *out,
+ u_int8_t *in,
Nit: You could make "in" const to since it's not written.
+ const u_int32_t size)
... certainly that'd be more useful than making size const.
+{
+ u_int32_t i;
+
+ for (i = 0; i < size / 2; i++) {
+ u_int8_t b1 = in[i];
+ u_int8_t b2 = in[size - 1 - i];
+ out[i] = b2;
+ out[size - 1 - i] = b1;
Nit: It'd be nice to put "size - 1 - i" into a variable rather than
duplicate the calculation.
diff --git a/src/set.c b/src/set.c
+int
+set_rsa_param(build_image_context *context, parse_token token,
+ char *filename)
+{
+ int result;
+ u_int8_t *rsa_storage; /* Holds the rsa param after reading */
+ u_int32_t size; /* Bytes to read */
+ u_int32_t actual_size; /* In bytes */
+
+ if (g_soc_config->get_value_size == NULL) {
+ printf("Error: get_value_size() is not supported.\n");
I think code that calls that function should be able to assume the
function pointer is non-NULL. This could be achieved by either having
each SoC-specific file provide an implementation of that function. For
the SoCs that don't support this, you could share a common dummy
implementation that always returns an error.
diff --git a/src/parse.h b/src/parse.h
/*
+ * Get the size of specified bct field
+ *
+ * @param id The parse token
+ * @param data Return size from bct field
+ * @param bct Bct pointer
+ * @return 0 and -ENODATA for success and failure
+ */
+ int (*get_value_size)(parse_token id,
+ void *data,
+ u_int8_t *bct);
The existing get/set functions use a void* since they can operate on
different fields with different data types. However, the result of
retrieving a field's size is always a size_t. The "bct" parameter also
doesn't seem to be used; do you think there could ever be a use for it?
I think the following prototype should be used so that we can get as
much type safety as possible:
// Returns >0 for size, -ve for error, never returns 0.
size_t (*get_value_size)(parse_token id);
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html