|
#define | EACCES_NON_SIGNING __einfo_error ( EINFO_EACCES_NON_SIGNING ) |
|
#define | EINFO_EACCES_NON_SIGNING __einfo_uniqify ( EINFO_EACCES, 0x01, "Not a signing certificate" ) |
|
#define | EACCES_NON_CODE_SIGNING __einfo_error ( EINFO_EACCES_NON_CODE_SIGNING ) |
|
#define | EINFO_EACCES_NON_CODE_SIGNING __einfo_uniqify ( EINFO_EACCES, 0x02, "Not a code-signing certificate" ) |
|
#define | EACCES_WRONG_NAME __einfo_error ( EINFO_EACCES_WRONG_NAME ) |
|
#define | EINFO_EACCES_WRONG_NAME __einfo_uniqify ( EINFO_EACCES, 0x04, "Incorrect certificate name" ) |
|
#define | EACCES_NO_SIGNATURES __einfo_error ( EINFO_EACCES_NO_SIGNATURES ) |
|
#define | EINFO_EACCES_NO_SIGNATURES __einfo_uniqify ( EINFO_EACCES, 0x05, "No signatures present" ) |
|
#define | EINVAL_DIGEST __einfo_error ( EINFO_EINVAL_DIGEST ) |
|
#define | EINFO_EINVAL_DIGEST __einfo_uniqify ( EINFO_EINVAL, 0x01, "Not a digest algorithm" ) |
|
#define | EINVAL_PUBKEY __einfo_error ( EINFO_EINVAL_PUBKEY ) |
|
#define | EINFO_EINVAL_PUBKEY __einfo_uniqify ( EINFO_EINVAL, 0x02, "Not a public-key algorithm" ) |
|
#define | ENOTSUP_SIGNEDDATA __einfo_error ( EINFO_ENOTSUP_SIGNEDDATA ) |
|
#define | EINFO_ENOTSUP_SIGNEDDATA __einfo_uniqify ( EINFO_ENOTSUP, 0x01, "Not a digital signature" ) |
|
|
| FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) |
|
static int | cms_parse_content_type (struct cms_signature *sig, const struct asn1_cursor *raw) |
| Parse CMS signature content type. More...
|
|
static int | cms_parse_certificates (struct cms_signature *sig, const struct asn1_cursor *raw) |
| Parse CMS signature certificate list. More...
|
|
static struct x509_certificate * | cms_find_issuer_serial (struct cms_signature *sig, const struct asn1_cursor *issuer, const struct asn1_cursor *serial) |
| Identify CMS signature certificate by issuer and serial number. More...
|
|
static int | cms_parse_signer_identifier (struct cms_signature *sig, struct cms_signer_info *info, const struct asn1_cursor *raw) |
| Parse CMS signature signer identifier. More...
|
|
static int | cms_parse_digest_algorithm (struct cms_signature *sig, struct cms_signer_info *info, const struct asn1_cursor *raw) |
| Parse CMS signature digest algorithm. More...
|
|
static int | cms_parse_signature_algorithm (struct cms_signature *sig, struct cms_signer_info *info, const struct asn1_cursor *raw) |
| Parse CMS signature algorithm. More...
|
|
static int | cms_parse_signature_value (struct cms_signature *sig, struct cms_signer_info *info, const struct asn1_cursor *raw) |
| Parse CMS signature value. More...
|
|
static int | cms_parse_signer_info (struct cms_signature *sig, struct cms_signer_info *info, const struct asn1_cursor *raw) |
| Parse CMS signature signer information. More...
|
|
static int | cms_parse (struct cms_signature *sig, const struct asn1_cursor *raw) |
| Parse CMS signature from ASN.1 data. More...
|
|
static void | cms_free (struct refcnt *refcnt) |
| Free CMS signature. More...
|
|
int | cms_signature (const void *data, size_t len, struct cms_signature **sig) |
| Create CMS signature. More...
|
|
static void | cms_digest (struct cms_signature *sig, struct cms_signer_info *info, userptr_t data, size_t len, void *out) |
| Calculate digest of CMS-signed data. More...
|
|
static int | cms_verify_digest (struct cms_signature *sig, struct cms_signer_info *info, struct x509_certificate *cert, userptr_t data, size_t len) |
| Verify digest of CMS-signed data. More...
|
|
static int | cms_verify_signer_info (struct cms_signature *sig, struct cms_signer_info *info, userptr_t data, size_t len, time_t time, struct x509_chain *store, struct x509_root *root) |
| Verify CMS signature signer information. More...
|
|
int | cms_verify (struct cms_signature *sig, userptr_t data, size_t len, const char *name, time_t time, struct x509_chain *store, struct x509_root *root) |
| Verify CMS signature. More...
|
|
Cryptographic Message Syntax (PKCS #7)
The format of CMS messages is defined in RFC 5652.
Definition in file cms.c.
Parse CMS signature content type.
- Parameters
-
sig | CMS signature |
raw | ASN.1 cursor |
- Return values
-
Definition at line 88 of file cms.c.
93 memcpy ( &cursor,
raw,
sizeof ( cursor ) );
98 DBGC (
sig,
"CMS %p does not contain signedData:\n",
sig );
103 DBGC (
sig,
"CMS %p contains signedData\n",
sig );
int asn1_compare(const struct asn1_cursor *cursor1, const struct asn1_cursor *cursor2)
Compare two ASN.1 objects.
int asn1_enter(struct asn1_cursor *cursor, unsigned int type)
Enter ASN.1 object.
#define ENOTSUP_SIGNEDDATA
void * memcpy(void *dest, const void *src, size_t len) __nonnull
static struct asn1_cursor oid_signeddata_cursor
"pkcs7-signedData" object identifier cursor
#define ASN1_OID
ASN.1 object identifier.
References asn1_compare(), asn1_enter(), ASN1_OID, DBGC, DBGC_HDA, ENOTSUP_SIGNEDDATA, memcpy(), oid_signeddata_cursor, raw, and sig.
Referenced by cms_parse().
Parse CMS signature certificate list.
- Parameters
-
sig | CMS signature |
raw | ASN.1 cursor |
- Return values
-
Definition at line 114 of file cms.c.
121 memcpy ( &cursor,
raw,
sizeof ( cursor ) );
125 while ( cursor.len ) {
129 cursor.len ) ) != 0 ) {
130 DBGC (
sig,
"CMS %p could not append certificate: %s\n",
136 DBGC (
sig,
"CMS %p found certificate %s\n",
struct arbelprm_rc_send_wqe rc
int asn1_enter(struct asn1_cursor *cursor, unsigned int type)
Enter ASN.1 object.
int x509_append_raw(struct x509_chain *chain, const void *data, size_t len)
Append X.509 certificate to X.509 certificate chain.
int asn1_skip_any(struct asn1_cursor *cursor)
Skip ASN.1 object of any type.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
static struct x509_certificate * x509_last(struct x509_chain *chain)
Get last certificate in X.509 certificate chain.
char * strerror(int errno)
Retrieve string representation of error number.
const char * x509_name(struct x509_certificate *cert)
Get X.509 certificate display name.
#define ASN1_EXPLICIT_TAG(number)
ASN.1 explicit tag.
References asn1_enter(), ASN1_EXPLICIT_TAG, asn1_skip_any(), asn1_cursor::data, DBGC, DBGC_HDA, asn1_cursor::len, memcpy(), raw, rc, sig, strerror(), x509_append_raw(), x509_last(), and x509_name().
Referenced by cms_parse().
Identify CMS signature certificate by issuer and serial number.
- Parameters
-
sig | CMS signature |
issuer | Issuer |
serial | Serial number |
- Return values
-
cert | X.509 certificate, or NULL if not found |
Definition at line 155 of file cms.c.
struct asn1_cursor raw
Raw issuer.
int asn1_compare(const struct asn1_cursor *cursor1, const struct asn1_cursor *cursor2)
Compare two ASN.1 objects.
struct x509_issuer issuer
Issuer.
struct asn1_cursor raw
Raw serial number.
#define list_for_each_entry(pos, head, member)
Iterate over entries in a list.
u32 link
Link to next descriptor.
A link in an X.509 certificate chain.
struct x509_serial serial
Serial number.
uint64_t serial
Serial number.
#define NULL
NULL pointer (VOID *)
References asn1_compare(), x509_certificate::issuer, link, list_for_each_entry, NULL, x509_serial::raw, x509_issuer::raw, serial, x509_certificate::serial, and sig.
Referenced by cms_parse_signer_identifier().
Parse CMS signature signer identifier.
- Parameters
-
sig | CMS signature |
info | Signer information to fill in |
raw | ASN.1 cursor |
- Return values
-
Definition at line 182 of file cms.c.
192 memcpy ( &cursor,
raw,
sizeof ( cursor ) );
198 DBGC (
sig,
"CMS %p/%p could not locate issuer: %s\n",
210 DBGC (
sig,
"CMS %p/%p could not locate serialNumber: %s\n",
221 DBGC (
sig,
"CMS %p/%p could not identify signer's " 228 DBGC (
sig,
"CMS %p/%p could not append certificate: %s\n",
235 sig->certificates ) ) != 0 ) {
236 DBGC (
sig,
"CMS %p/%p could not append certificates: %s\n",
static struct x509_certificate * cms_find_issuer_serial(struct cms_signature *sig, const struct asn1_cursor *issuer, const struct asn1_cursor *serial)
Identify CMS signature certificate by issuer and serial number.
struct arbelprm_rc_send_wqe rc
int asn1_enter(struct asn1_cursor *cursor, unsigned int type)
Enter ASN.1 object.
struct x509_issuer issuer
Issuer.
int x509_append(struct x509_chain *chain, struct x509_certificate *cert)
Append X.509 certificate to X.509 certificate chain.
#define ENOENT
No such file or directory.
int asn1_skip_any(struct asn1_cursor *cursor)
Skip ASN.1 object of any type.
int asn1_shrink(struct asn1_cursor *cursor, unsigned int type)
Shrink ASN.1 cursor to fit object.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
char * strerror(int errno)
Retrieve string representation of error number.
uint64_t serial
Serial number.
#define ASN1_SEQUENCE
ASN.1 sequence.
#define ASN1_INTEGER
ASN.1 integer.
int x509_auto_append(struct x509_chain *chain, struct x509_chain *certs)
Append X.509 certificates to X.509 certificate chain.
References asn1_enter(), ASN1_INTEGER, ASN1_SEQUENCE, asn1_shrink(), asn1_skip_any(), cms_find_issuer_serial(), DBGC, DBGC_HDA, ENOENT, info, x509_certificate::issuer, memcpy(), raw, rc, serial, sig, strerror(), x509_append(), and x509_auto_append().
Referenced by cms_parse_signer_info().
Parse CMS signature digest algorithm.
- Parameters
-
sig | CMS signature |
info | Signer information to fill in |
raw | ASN.1 cursor |
- Return values
-
Definition at line 252 of file cms.c.
260 DBGC (
sig,
"CMS %p/%p could not identify digest algorithm: " 268 DBGC (
sig,
"CMS %p/%p digest algorithm is %s\n",
An ASN.1 OID-identified algorithm.
struct arbelprm_rc_send_wqe rc
int asn1_digest_algorithm(const struct asn1_cursor *cursor, struct asn1_algorithm **algorithm)
Parse ASN.1 OID-identified digest algorithm.
char * strerror(int errno)
Retrieve string representation of error number.
u16 algorithm
Authentication algorithm (Open System or Shared Key)
References algorithm, asn1_digest_algorithm(), DBGC, DBGC_HDA, info, raw, rc, sig, and strerror().
Referenced by cms_parse_signer_info().
Parse CMS signature algorithm.
- Parameters
-
sig | CMS signature |
info | Signer information to fill in |
raw | ASN.1 cursor |
- Return values
-
Definition at line 282 of file cms.c.
290 DBGC (
sig,
"CMS %p/%p could not identify public-key " 298 DBGC (
sig,
"CMS %p/%p public-key algorithm is %s\n",
An ASN.1 OID-identified algorithm.
struct arbelprm_rc_send_wqe rc
char * strerror(int errno)
Retrieve string representation of error number.
int asn1_pubkey_algorithm(const struct asn1_cursor *cursor, struct asn1_algorithm **algorithm)
Parse ASN.1 OID-identified public-key algorithm.
u16 algorithm
Authentication algorithm (Open System or Shared Key)
References algorithm, asn1_pubkey_algorithm(), DBGC, DBGC_HDA, info, raw, rc, sig, and strerror().
Referenced by cms_parse_signer_info().
Parse CMS signature value.
- Parameters
-
sig | CMS signature |
info | Signer information to fill in |
raw | ASN.1 cursor |
- Return values
-
Definition at line 312 of file cms.c.
319 memcpy ( &cursor,
raw,
sizeof ( cursor ) );
321 DBGC (
sig,
"CMS %p/%p could not locate signature:\n",
328 info->signature_len = cursor.len;
330 if ( !
info->signature )
struct arbelprm_rc_send_wqe rc
int asn1_enter(struct asn1_cursor *cursor, unsigned int type)
Enter ASN.1 object.
#define ENOMEM
Not enough space.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
void * malloc(size_t size)
Allocate memory.
#define ASN1_OCTET_STRING
ASN.1 octet string.
References asn1_enter(), ASN1_OCTET_STRING, asn1_cursor::data, DBGC, DBGC_HDA, ENOMEM, info, asn1_cursor::len, malloc(), memcpy(), raw, rc, and sig.
Referenced by cms_parse_signer_info().
Parse CMS signature signer information.
- Parameters
-
sig | CMS signature |
info | Signer information to fill in |
raw | ASN.1 cursor |
- Return values
-
Definition at line 347 of file cms.c.
354 memcpy ( &cursor,
raw,
sizeof ( cursor ) );
struct arbelprm_rc_send_wqe rc
int asn1_enter(struct asn1_cursor *cursor, unsigned int type)
Enter ASN.1 object.
static int cms_parse_signer_identifier(struct cms_signature *sig, struct cms_signer_info *info, const struct asn1_cursor *raw)
Parse CMS signature signer identifier.
int asn1_skip_any(struct asn1_cursor *cursor)
Skip ASN.1 object of any type.
static int cms_parse_signature_algorithm(struct cms_signature *sig, struct cms_signer_info *info, const struct asn1_cursor *raw)
Parse CMS signature algorithm.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
static int cms_parse_digest_algorithm(struct cms_signature *sig, struct cms_signer_info *info, const struct asn1_cursor *raw)
Parse CMS signature digest algorithm.
#define ASN1_SEQUENCE
ASN.1 sequence.
#define ASN1_INTEGER
ASN.1 integer.
static int cms_parse_signature_value(struct cms_signature *sig, struct cms_signer_info *info, const struct asn1_cursor *raw)
Parse CMS signature value.
int asn1_skip_if_exists(struct asn1_cursor *cursor, unsigned int type)
Skip ASN.1 object if present.
int asn1_skip(struct asn1_cursor *cursor, unsigned int type)
Skip ASN.1 object.
#define ASN1_EXPLICIT_TAG(number)
ASN.1 explicit tag.
References asn1_enter(), ASN1_EXPLICIT_TAG, ASN1_INTEGER, ASN1_SEQUENCE, asn1_skip(), asn1_skip_any(), asn1_skip_if_exists(), cms_parse_digest_algorithm(), cms_parse_signature_algorithm(), cms_parse_signature_value(), cms_parse_signer_identifier(), info, memcpy(), raw, rc, and sig.
Referenced by cms_parse().
Parse CMS signature from ASN.1 data.
- Parameters
-
sig | CMS signature |
raw | ASN.1 cursor |
- Return values
-
Definition at line 392 of file cms.c.
399 memcpy ( &cursor,
raw,
sizeof ( cursor ) );
437 while ( cursor.len ) {
struct arbelprm_rc_send_wqe rc
static int cms_parse_content_type(struct cms_signature *sig, const struct asn1_cursor *raw)
Parse CMS signature content type.
int asn1_enter(struct asn1_cursor *cursor, unsigned int type)
Enter ASN.1 object.
#define list_add(new, head)
Add a new entry to the head of a list.
static int cms_parse_certificates(struct cms_signature *sig, const struct asn1_cursor *raw)
Parse CMS signature certificate list.
struct x509_chain * x509_alloc_chain(void)
Allocate X.509 certificate chain.
int asn1_skip_any(struct asn1_cursor *cursor)
Skip ASN.1 object of any type.
#define ASN1_SET
ASN.1 set.
#define ENOMEM
Not enough space.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
void * zalloc(size_t size)
Allocate cleared memory.
static int cms_parse_signer_info(struct cms_signature *sig, struct cms_signer_info *info, const struct asn1_cursor *raw)
Parse CMS signature signer information.
#define ASN1_SEQUENCE
ASN.1 sequence.
#define ASN1_INTEGER
ASN.1 integer.
int asn1_skip_if_exists(struct asn1_cursor *cursor, unsigned int type)
Skip ASN.1 object if present.
int asn1_skip(struct asn1_cursor *cursor, unsigned int type)
Skip ASN.1 object.
#define ASN1_EXPLICIT_TAG(number)
ASN.1 explicit tag.
References asn1_enter(), ASN1_EXPLICIT_TAG, ASN1_INTEGER, ASN1_SEQUENCE, ASN1_SET, asn1_skip(), asn1_skip_any(), asn1_skip_if_exists(), cms_parse_certificates(), cms_parse_content_type(), cms_parse_signer_info(), ENOMEM, info, asn1_cursor::len, list_add, memcpy(), raw, rc, sig, x509_alloc_chain(), and zalloc().
Referenced by cms_signature().
Create CMS signature.
- Parameters
-
data | Raw signature data |
len | Length of raw data |
- Return values
-
sig | CMS signature |
rc | Return status code |
On success, the caller holds a reference to the CMS signature, and is responsible for ultimately calling cms_put().
Definition at line 492 of file cms.c.
507 if ( ! (*sig)->certificates ) {
509 goto err_alloc_chain;
struct arbelprm_rc_send_wqe rc
#define ref_init(refcnt, free)
Initialise a reference counter.
static void cms_put(struct cms_signature *sig)
Drop reference to CMS signature.
struct x509_chain * x509_alloc_chain(void)
Allocate X.509 certificate chain.
#define ENOMEM
Not enough space.
static int cms_parse(struct cms_signature *sig, const struct asn1_cursor *raw)
Parse CMS signature from ASN.1 data.
void * zalloc(size_t size)
Allocate cleared memory.
int asn1_shrink_any(struct asn1_cursor *cursor)
Shrink ASN.1 object of any type.
static void cms_free(struct refcnt *refcnt)
Free CMS signature.
#define INIT_LIST_HEAD(list)
Initialise a list head.
uint8_t data[48]
Additional event data.
References asn1_shrink_any(), cms_free(), cms_parse(), cms_put(), asn1_cursor::data, data, ENOMEM, INIT_LIST_HEAD, len, asn1_cursor::len, rc, ref_init, sig, x509_alloc_chain(), and zalloc().
Calculate digest of CMS-signed data.
- Parameters
-
sig | CMS signature |
info | Signer information |
data | Signed data |
len | Length of signed data |
out | Digest output |
Definition at line 539 of file cms.c.
554 if ( frag_len >
sizeof (
block ) )
555 frag_len =
sizeof (
block );
static void digest_update(struct digest_algorithm *digest, void *ctx, const void *data, size_t len)
static void digest_final(struct digest_algorithm *digest, void *ctx, void *out)
static __always_inline void copy_from_user(void *dest, userptr_t src, off_t src_off, size_t len)
Copy data from user buffer.
struct golan_eq_context ctx
struct md4_digest digest
Digest of data already processed.
static userptr_t size_t offset
Offset of the first segment within the content.
static void digest_init(struct digest_algorithm *digest, void *ctx)
A message digest algorithm.
uint8_t data[48]
Additional event data.
References block, copy_from_user(), ctx, data, DBGC, DBGC_HDA, digest, digest_final(), digest_init(), digest_update(), info, len, offset, out, and sig.
Referenced by cms_verify_digest().
Verify digest of CMS-signed data.
- Parameters
-
sig | CMS signature |
info | Signer information |
cert | Corresponding certificate |
data | Signed data |
len | Length of signed data |
- Return values
-
Definition at line 579 of file cms.c.
595 public_key->
raw.
len ) ) != 0 ) {
596 DBGC (
sig,
"CMS %p/%p could not initialise public key: %s\n",
604 info->signature_len ) ) != 0 ) {
605 DBGC (
sig,
"CMS %p/%p signature verification failed: %s\n",
struct asn1_cursor raw
Raw public key information.
struct arbelprm_rc_send_wqe rc
static void cms_digest(struct cms_signature *sig, struct cms_signer_info *info, userptr_t data, size_t len, void *out)
Calculate digest of CMS-signed data.
const void * data
Start of data.
struct golan_eq_context ctx
struct md4_digest digest
Digest of data already processed.
size_t ctxsize
Context size.
size_t len
Length of data.
static int pubkey_verify(struct pubkey_algorithm *pubkey, void *ctx, struct digest_algorithm *digest, const void *value, const void *signature, size_t signature_len)
An X.509 certificate public key.
struct x509_public_key public_key
Public key information.
char * strerror(int errno)
Retrieve string representation of error number.
struct x509_subject subject
Subject.
A message digest algorithm.
uint8_t data[48]
Additional event data.
static void pubkey_final(struct pubkey_algorithm *pubkey, void *ctx)
static int pubkey_init(struct pubkey_algorithm *pubkey, void *ctx, const void *key, size_t key_len)
References cms_digest(), ctx, pubkey_algorithm::ctxsize, data, asn1_cursor::data, DBGC, digest, info, len, asn1_cursor::len, pubkey_final(), pubkey_init(), pubkey_verify(), x509_subject::public_key, x509_public_key::raw, rc, sig, strerror(), and x509_certificate::subject.
Referenced by cms_verify_signer_info().
Verify CMS signature signer information.
- Parameters
-
sig | CMS signature |
info | Signer information |
data | Signed data |
len | Length of signed data |
time | Time at which to validate certificates |
store | Certificate store, or NULL to use default |
root | Root certificate list, or NULL to use default |
- Return values
-
Definition at line 628 of file cms.c.
639 DBGC (
sig,
"CMS %p/%p could not validate chain: %s\n",
650 DBGC (
sig,
"CMS %p/%p certificate cannot create signatures\n",
657 DBGC (
sig,
"CMS %p/%p certificate is not code-signing\n",
struct arbelprm_rc_send_wqe rc
struct x509_extended_key_usage ext_usage
Extended key usage.
struct stp_switch root
Root switch.
unsigned int bits
Usage bits.
static int cms_verify_digest(struct cms_signature *sig, struct cms_signer_info *info, struct x509_certificate *cert, userptr_t data, size_t len)
Verify digest of CMS-signed data.
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
#define EACCES_NON_SIGNING
int x509_validate_chain(struct x509_chain *chain, time_t time, struct x509_chain *store, struct x509_root *root)
Validate X.509 certificate chain.
char * strerror(int errno)
Retrieve string representation of error number.
#define EACCES_NON_CODE_SIGNING
unsigned int bits
Usage bits.
static struct x509_certificate * x509_first(struct x509_chain *chain)
Get first certificate in X.509 certificate chain.
struct x509_link store
Link in certificate store.
uint8_t data[48]
Additional event data.
struct x509_key_usage usage
Key usage.
uint64_t time
Current time.
#define NULL
NULL pointer (VOID *)
struct x509_extensions extensions
Extensions.
References assert(), x509_key_usage::bits, x509_extended_key_usage::bits, cms_verify_digest(), data, DBGC, EACCES_NON_CODE_SIGNING, EACCES_NON_SIGNING, x509_extensions::ext_usage, x509_certificate::extensions, info, len, NULL, rc, root, sig, x509_certificate::store, strerror(), time, x509_extensions::usage, X509_CODE_SIGNING, X509_DIGITAL_SIGNATURE, x509_first(), and x509_validate_chain().
Referenced by cms_verify().
Verify CMS signature.
- Parameters
-
sig | CMS signature |
data | Signed data |
len | Length of signed data |
name | Required common name, or NULL to check all signatures |
time | Time at which to validate certificates |
store | Certificate store, or NULL to use default |
root | Root certificate list, or NULL to use default |
- Return values
-
Definition at line 681 of file cms.c.
703 DBGC (
sig,
"CMS %p had no signatures matching name " 707 DBGC (
sig,
"CMS %p had no signatures\n",
sig );
struct arbelprm_rc_send_wqe rc
#define EACCES_NO_SIGNATURES
#define EACCES_WRONG_NAME
struct stp_switch root
Root switch.
int x509_check_name(struct x509_certificate *cert, const char *name)
Check X.509 certificate name.
#define list_for_each_entry(pos, head, member)
Iterate over entries in a list.
static struct x509_certificate * x509_first(struct x509_chain *chain)
Get first certificate in X.509 certificate chain.
uint16_t count
Number of entries.
struct x509_link store
Link in certificate store.
uint8_t data[48]
Additional event data.
static int cms_verify_signer_info(struct cms_signature *sig, struct cms_signer_info *info, userptr_t data, size_t len, time_t time, struct x509_chain *store, struct x509_root *root)
Verify CMS signature signer information.
uint64_t time
Current time.
References cms_verify_signer_info(), count, data, DBGC, EACCES_NO_SIGNATURES, EACCES_WRONG_NAME, info, len, list_for_each_entry, name, rc, root, sig, x509_certificate::store, time, x509_check_name(), and x509_first().
Referenced by cms_verify_fail_okx(), cms_verify_okx(), and imgverify().