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