2019-05-20 19:08:01 +02:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
2012-09-24 17:11:48 +01:00
/* X.509 certificate parser internal definitions
*
* Copyright ( C ) 2012 Red Hat , Inc . All Rights Reserved .
* Written by David Howells ( dhowells @ redhat . com )
*/
2013-08-30 16:16:34 +01:00
# include <linux/time.h>
2012-09-24 17:11:48 +01:00
# include <crypto/public_key.h>
2015-10-21 14:04:48 +01:00
# include <keys/asymmetric-type.h>
2012-09-24 17:11:48 +01:00
struct x509_certificate {
struct x509_certificate * next ;
2014-07-01 16:40:19 +01:00
struct x509_certificate * signer ; /* Certificate that signed this one */
2012-09-24 17:11:48 +01:00
struct public_key * pub ; /* Public key details */
2016-04-06 16:13:33 +01:00
struct public_key_signature * sig ; /* Signature parameters */
2012-09-24 17:11:48 +01:00
char * issuer ; /* Name of certificate issuer */
char * subject ; /* Name of certificate subject */
2015-07-20 21:16:26 +01:00
struct asymmetric_key_id * id ; /* Issuer + Serial number */
2014-10-06 16:52:12 +01:00
struct asymmetric_key_id * skid ; /* Subject + subjectKeyId (optional) */
2015-07-29 16:58:32 +01:00
time64_t valid_from ;
time64_t valid_to ;
2012-09-24 17:11:48 +01:00
const void * tbs ; /* Signed data */
2013-08-30 16:18:02 +01:00
unsigned tbs_size ; /* Size of signed data */
2022-02-21 14:31:18 -08:00
unsigned raw_sig_size ; /* Size of signature */
2013-08-30 16:18:02 +01:00
const void * raw_sig ; /* Signature data */
2014-07-01 16:40:19 +01:00
const void * raw_serial ; /* Raw serial number in ASN.1 */
unsigned raw_serial_size ;
unsigned raw_issuer_size ;
const void * raw_issuer ; /* Raw issuer name in ASN.1 */
const void * raw_subject ; /* Raw subject name in ASN.1 */
unsigned raw_subject_size ;
2014-10-03 16:17:02 +01:00
unsigned raw_skid_size ;
const void * raw_skid ; /* Raw subjectKeyId in ASN.1 */
2014-07-01 16:40:19 +01:00
unsigned index ;
bool seen ; /* Infinite recursion prevention */
bool verified ;
2016-04-06 16:13:34 +01:00
bool self_signed ; /* T if self-signed (check unsupported_sig too) */
bool unsupported_sig ; /* T if signature uses unsupported crypto */
2017-04-03 16:07:25 +01:00
bool blacklisted ;
2012-09-24 17:11:48 +01:00
} ;
2022-05-18 17:15:34 +01:00
/*
* selftest . c
*/
# ifdef CONFIG_FIPS_SIGNATURE_SELFTEST
extern int __init fips_signature_selftest ( void ) ;
# else
static inline int fips_signature_selftest ( void ) { return 0 ; }
# endif
2012-09-24 17:11:48 +01:00
/*
* x509_cert_parser . c
*/
extern void x509_free_certificate ( struct x509_certificate * cert ) ;
extern struct x509_certificate * x509_cert_parse ( const void * data , size_t datalen ) ;
2015-07-29 16:58:32 +01:00
extern int x509_decode_time ( time64_t * _t , size_t hdrlen ,
unsigned char tag ,
const unsigned char * value , size_t vlen ) ;
2013-08-30 16:18:02 +01:00
/*
* x509_public_key . c
*/
extern int x509_get_sig_params ( struct x509_certificate * cert ) ;
2016-04-06 16:13:34 +01:00
extern int x509_check_for_self_signed ( struct x509_certificate * cert ) ;