xref: /linux/include/crypto/pkcs7.h (revision e68503bd)
12e3fadbfSDavid Howells /* PKCS#7 crypto data parser
22e3fadbfSDavid Howells  *
32e3fadbfSDavid Howells  * Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
42e3fadbfSDavid Howells  * Written by David Howells (dhowells@redhat.com)
52e3fadbfSDavid Howells  *
62e3fadbfSDavid Howells  * This program is free software; you can redistribute it and/or
72e3fadbfSDavid Howells  * modify it under the terms of the GNU General Public Licence
82e3fadbfSDavid Howells  * as published by the Free Software Foundation; either version
92e3fadbfSDavid Howells  * 2 of the Licence, or (at your option) any later version.
102e3fadbfSDavid Howells  */
112e3fadbfSDavid Howells 
1299db4435SDavid Howells #ifndef _CRYPTO_PKCS7_H
1399db4435SDavid Howells #define _CRYPTO_PKCS7_H
1499db4435SDavid Howells 
15*e68503bdSDavid Howells #include <linux/verification.h>
1699db4435SDavid Howells #include <crypto/public_key.h>
1799db4435SDavid Howells 
1808815b62SDavid Howells struct key;
192e3fadbfSDavid Howells struct pkcs7_message;
202e3fadbfSDavid Howells 
212e3fadbfSDavid Howells /*
222e3fadbfSDavid Howells  * pkcs7_parser.c
232e3fadbfSDavid Howells  */
242e3fadbfSDavid Howells extern struct pkcs7_message *pkcs7_parse_message(const void *data,
252e3fadbfSDavid Howells 						 size_t datalen);
262e3fadbfSDavid Howells extern void pkcs7_free_message(struct pkcs7_message *pkcs7);
272e3fadbfSDavid Howells 
282e3fadbfSDavid Howells extern int pkcs7_get_content_data(const struct pkcs7_message *pkcs7,
292e3fadbfSDavid Howells 				  const void **_data, size_t *_datalen,
30*e68503bdSDavid Howells 				  size_t *_headerlen);
31a4730357SDavid Howells 
32a4730357SDavid Howells /*
3308815b62SDavid Howells  * pkcs7_trust.c
3408815b62SDavid Howells  */
3508815b62SDavid Howells extern int pkcs7_validate_trust(struct pkcs7_message *pkcs7,
3608815b62SDavid Howells 				struct key *trust_keyring,
3708815b62SDavid Howells 				bool *_trusted);
3808815b62SDavid Howells 
3908815b62SDavid Howells /*
40a4730357SDavid Howells  * pkcs7_verify.c
41a4730357SDavid Howells  */
4299db4435SDavid Howells extern int pkcs7_verify(struct pkcs7_message *pkcs7,
4399db4435SDavid Howells 			enum key_being_used_for usage);
444ebdb76fSDavid Howells 
454ebdb76fSDavid Howells extern int pkcs7_supply_detached_data(struct pkcs7_message *pkcs7,
464ebdb76fSDavid Howells 				      const void *data, size_t datalen);
4799db4435SDavid Howells 
4899db4435SDavid Howells #endif /* _CRYPTO_PKCS7_H */
49