0001
0002
0003
0004
0005
0006
0007
0008 #include <linux/oid_registry.h>
0009 #include <crypto/pkcs7.h>
0010 #include "x509_parser.h"
0011
0012 #define kenter(FMT, ...) \
0013 pr_devel("==> %s("FMT")\n", __func__, ##__VA_ARGS__)
0014 #define kleave(FMT, ...) \
0015 pr_devel("<== %s()"FMT"\n", __func__, ##__VA_ARGS__)
0016
0017 struct pkcs7_signed_info {
0018 struct pkcs7_signed_info *next;
0019 struct x509_certificate *signer;
0020 unsigned index;
0021 bool unsupported_crypto;
0022 bool blacklisted;
0023
0024
0025 const void *msgdigest;
0026 unsigned msgdigest_len;
0027
0028
0029 unsigned authattrs_len;
0030 const void *authattrs;
0031 unsigned long aa_set;
0032 #define sinfo_has_content_type 0
0033 #define sinfo_has_signing_time 1
0034 #define sinfo_has_message_digest 2
0035 #define sinfo_has_smime_caps 3
0036 #define sinfo_has_ms_opus_info 4
0037 #define sinfo_has_ms_statement_type 5
0038 time64_t signing_time;
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049 struct public_key_signature *sig;
0050 };
0051
0052 struct pkcs7_message {
0053 struct x509_certificate *certs;
0054 struct x509_certificate *crl;
0055 struct pkcs7_signed_info *signed_infos;
0056 u8 version;
0057 bool have_authattrs;
0058
0059
0060 enum OID data_type;
0061 size_t data_len;
0062 size_t data_hdrlen;
0063 const void *data;
0064 };