Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/crypto/asymmetric_keys/pkcs7_parser.h
26285 views
1
/* SPDX-License-Identifier: GPL-2.0-or-later */
2
/* PKCS#7 crypto data parser internal definitions
3
*
4
* Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
5
* Written by David Howells ([email protected])
6
*/
7
8
#include <linux/oid_registry.h>
9
#include <crypto/pkcs7.h>
10
#include "x509_parser.h"
11
12
#define kenter(FMT, ...) \
13
pr_devel("==> %s("FMT")\n", __func__, ##__VA_ARGS__)
14
#define kleave(FMT, ...) \
15
pr_devel("<== %s()"FMT"\n", __func__, ##__VA_ARGS__)
16
17
struct pkcs7_signed_info {
18
struct pkcs7_signed_info *next;
19
struct x509_certificate *signer; /* Signing certificate (in msg->certs) */
20
unsigned index;
21
bool unsupported_crypto; /* T if not usable due to missing crypto */
22
bool blacklisted;
23
24
/* Message digest - the digest of the Content Data (or NULL) */
25
const void *msgdigest;
26
unsigned msgdigest_len;
27
28
/* Authenticated Attribute data (or NULL) */
29
unsigned authattrs_len;
30
const void *authattrs;
31
unsigned long aa_set;
32
#define sinfo_has_content_type 0
33
#define sinfo_has_signing_time 1
34
#define sinfo_has_message_digest 2
35
#define sinfo_has_smime_caps 3
36
#define sinfo_has_ms_opus_info 4
37
#define sinfo_has_ms_statement_type 5
38
time64_t signing_time;
39
40
/* Message signature.
41
*
42
* This contains the generated digest of _either_ the Content Data or
43
* the Authenticated Attributes [RFC2315 9.3]. If the latter, one of
44
* the attributes contains the digest of the Content Data within it.
45
*
46
* This also contains the issuing cert serial number and issuer's name
47
* [PKCS#7 or CMS ver 1] or issuing cert's SKID [CMS ver 3].
48
*/
49
struct public_key_signature *sig;
50
};
51
52
struct pkcs7_message {
53
struct x509_certificate *certs; /* Certificate list */
54
struct x509_certificate *crl; /* Revocation list */
55
struct pkcs7_signed_info *signed_infos;
56
u8 version; /* Version of cert (1 -> PKCS#7 or CMS; 3 -> CMS) */
57
bool have_authattrs; /* T if have authattrs */
58
59
/* Content Data (or NULL) */
60
enum OID data_type; /* Type of Data */
61
size_t data_len; /* Length of Data */
62
size_t data_hdrlen; /* Length of Data ASN.1 header */
63
const void *data; /* Content Data (or 0) */
64
};
65
66