[crypto] Hold CMS message as a single ASN.1 object

Reduce the number of dynamic allocations required to parse a CMS
message by retaining the ASN.1 cursor returned from image_asn1() for
the lifetime of the CMS message.  This allows embedded ASN.1 cursors
to be used for parsed objects within the message, such as embedded
signatures.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2024-08-23 12:25:36 +01:00
parent 46937a9df6
commit bdb5b4aef4
2 changed files with 15 additions and 29 deletions

View File

@@ -48,15 +48,15 @@ struct cms_participant {
struct pubkey_algorithm *pubkey;
/** Signature or key value */
void *value;
/** Length of signature or key value */
size_t len;
struct asn1_cursor value;
};
/** A CMS message */
struct cms_message {
/** Reference count */
struct refcnt refcnt;
/** Raw ASN.1 data */
struct asn1_cursor *raw;
/** Message type */
struct cms_type *type;