/* Construct an asymmetric key ID from a pair of binary blobs.  */
struct asymmetric_key_id* asymmetric_key_generate_id(const void *val_1, size_t len_1, const void *val_2, size_t len_2)
/* Construct an asymmetric key ID from a pair of binary blobs.  */
struct asymmetric_key_id* asymmetric_key_generate_id(const void *val_1, size_t len_1, const void *val_2, size_t len_2)
{
	struct asymmetric_key_id *kid;
	kid = kmalloc(sizeof(struct asymmetric_key_id) + len_1 + len_2,
		      GFP_KERNEL);
	if (!kid)
		return ERR_PTR(-ENOMEM);
	kid->len = len_1 + len_2;
	memcpy(kid->data, val_1, len_1);
	memcpy(kid->data + len_1, val_2, len_2);
	return kid;
}