|
@@ -382,3 +382,28 @@ int pkcs7_verify(struct pkcs7_message *pkcs7)
|
|
|
return enopkg;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(pkcs7_verify);
|
|
|
+
|
|
|
+/**
|
|
|
+ * pkcs7_supply_detached_data - Supply the data needed to verify a PKCS#7 message
|
|
|
+ * @pkcs7: The PKCS#7 message
|
|
|
+ * @data: The data to be verified
|
|
|
+ * @datalen: The amount of data
|
|
|
+ *
|
|
|
+ * Supply the detached data needed to verify a PKCS#7 message. Note that no
|
|
|
+ * attempt to retain/pin the data is made. That is left to the caller. The
|
|
|
+ * data will not be modified by pkcs7_verify() and will not be freed when the
|
|
|
+ * PKCS#7 message is freed.
|
|
|
+ *
|
|
|
+ * Returns -EINVAL if data is already supplied in the message, 0 otherwise.
|
|
|
+ */
|
|
|
+int pkcs7_supply_detached_data(struct pkcs7_message *pkcs7,
|
|
|
+ const void *data, size_t datalen)
|
|
|
+{
|
|
|
+ if (pkcs7->data) {
|
|
|
+ pr_debug("Data already supplied\n");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+ pkcs7->data = data;
|
|
|
+ pkcs7->data_len = datalen;
|
|
|
+ return 0;
|
|
|
+}
|