merged the modularization branch (credentials) back to trunk
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (C) 2007 Martin Willi
|
||||
* Hochschule fuer Technik Rapperswil
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "certificate.h"
|
||||
|
||||
#include <credentials/certificates/x509.h>
|
||||
|
||||
ENUM(certificate_type_names, CERT_ANY, CERT_PGP,
|
||||
"ANY",
|
||||
"X509",
|
||||
"X509_CRL",
|
||||
"X509_OCSP_REQUEST",
|
||||
"X509_OCSP_RESPONSE",
|
||||
"X509_AC",
|
||||
"X509_CHAIN",
|
||||
"TRUSTED_PUBKEY",
|
||||
"PGP",
|
||||
);
|
||||
|
||||
ENUM(cert_validation_names, VALIDATION_GOOD, VALIDATION_SKIPPED,
|
||||
"GOOD",
|
||||
"REVOKED",
|
||||
"FAILED",
|
||||
"SKIPPED",
|
||||
);
|
||||
|
||||
@@ -0,0 +1,190 @@
|
||||
/*
|
||||
* Copyright (C) 2007-2008 Martin Willi
|
||||
* Hochschule fuer Technik Rapperswil
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup certificate certificate
|
||||
* @{ @ingroup certificates
|
||||
*/
|
||||
|
||||
#ifndef CERTIFICATE_H_
|
||||
#define CERTIFICATE_H_
|
||||
|
||||
typedef struct certificate_t certificate_t;
|
||||
typedef enum certificate_type_t certificate_type_t;
|
||||
typedef enum cert_validation_t cert_validation_t;
|
||||
|
||||
#include <library.h>
|
||||
#include <utils/identification.h>
|
||||
#include <credentials/keys/public_key.h>
|
||||
|
||||
/**
|
||||
* Kind of a certificate_t
|
||||
*/
|
||||
enum certificate_type_t {
|
||||
/** just any certificate */
|
||||
CERT_ANY,
|
||||
/** X.509 certificate */
|
||||
CERT_X509,
|
||||
/** X.509 certificate revocation list */
|
||||
CERT_X509_CRL,
|
||||
/** X.509 online certificate status protocol request */
|
||||
CERT_X509_OCSP_REQUEST,
|
||||
/** X.509 online certificate status protocol response */
|
||||
CERT_X509_OCSP_RESPONSE,
|
||||
/** X.509 attribute certificate */
|
||||
CERT_X509_AC,
|
||||
/** trusted, preinstalled public key */
|
||||
CERT_TRUSTED_PUBKEY,
|
||||
/** PGP certificate */
|
||||
CERT_PGP,
|
||||
};
|
||||
|
||||
/**
|
||||
* Enum names for certificate_type_t
|
||||
*/
|
||||
extern enum_name_t *certificate_type_names;
|
||||
|
||||
/**
|
||||
* Result of a certificate validation.
|
||||
*/
|
||||
enum cert_validation_t {
|
||||
/** certificate has been validated successfully */
|
||||
VALIDATION_GOOD,
|
||||
/** validation failed, certificate is revoked */
|
||||
VALIDATION_REVOKED,
|
||||
/* ocsp status is unknown or crl is stale */
|
||||
VALIDATION_UNKNOWN,
|
||||
/** validation process failed due to an error */
|
||||
VALIDATION_FAILED,
|
||||
/** validation has been skipped (no cdps available) */
|
||||
VALIDATION_SKIPPED,
|
||||
};
|
||||
|
||||
/**
|
||||
* Enum names for cert_validation_t
|
||||
*/
|
||||
extern enum_name_t *cert_validation_names;
|
||||
|
||||
/**
|
||||
* An abstract certificate.
|
||||
*
|
||||
* A certificate designs a subject-issuer relationship. It may have an
|
||||
* associated public key.
|
||||
*/
|
||||
struct certificate_t {
|
||||
|
||||
/**
|
||||
* Get the type of the certificate.
|
||||
*
|
||||
* @return certifcate type
|
||||
*/
|
||||
certificate_type_t (*get_type)(certificate_t *this);
|
||||
|
||||
/**
|
||||
* Get the primary subject to which this certificate belongs.
|
||||
*
|
||||
* @return subject identity
|
||||
*/
|
||||
identification_t* (*get_subject)(certificate_t *this);
|
||||
|
||||
/**
|
||||
* Check if certificate contains a subject ID.
|
||||
*
|
||||
* A certificate may contain additional subject identifiers, which are
|
||||
* not returned by get_subject (e.g. subjectAltNames)
|
||||
*
|
||||
* @param subject subject identity
|
||||
* @return matching value of best match
|
||||
*/
|
||||
id_match_t (*has_subject)(certificate_t *this, identification_t *subject);
|
||||
|
||||
/**
|
||||
* Get the issuer which signed this certificate.
|
||||
*
|
||||
* @return issuer identity
|
||||
*/
|
||||
identification_t* (*get_issuer)(certificate_t *this);
|
||||
|
||||
/**
|
||||
* Check if certificate contains an issuer ID.
|
||||
*
|
||||
* A certificate may contain additional issuer identifiers, which are
|
||||
* not returned by get_issuer (e.g. issuerAltNames)
|
||||
*
|
||||
* @param subject isser identity
|
||||
* @return matching value of best match
|
||||
*/
|
||||
id_match_t (*has_issuer)(certificate_t *this, identification_t *issuer);
|
||||
|
||||
/**
|
||||
* Check if this certificate is issued by a specific issuer.
|
||||
*
|
||||
* As signature verification is computional expensive, it is optional
|
||||
* and may be skipped. While this is not sufficient for verification
|
||||
* purposes, it is to e.g. find matching certificates.
|
||||
*
|
||||
* @param issuer issuer's certificate
|
||||
* @param checksig TRUE to verify signature, FALSE to compare issuer only
|
||||
* @return TRUE if certificate issued by issuer and trusted
|
||||
*/
|
||||
bool (*issued_by)(certificate_t *this, certificate_t *issuer, bool checksig);
|
||||
|
||||
/**
|
||||
* Get the public key associated to this certificate.
|
||||
*
|
||||
* @return newly referenced public_key, NULL if none available
|
||||
*/
|
||||
public_key_t* (*get_public_key)(certificate_t *this);
|
||||
|
||||
/**
|
||||
* Check the lifetime of the certificate.
|
||||
*
|
||||
* @param when check validity at a certain time (NULL for now)
|
||||
* @param not_before receives certificates start of lifetime
|
||||
* @param not_after receives certificates end of lifetime
|
||||
* @return TRUE if when between not_after and not_before
|
||||
*/
|
||||
bool (*get_validity)(certificate_t *this, time_t *when,
|
||||
time_t *not_before, time_t *not_after);
|
||||
|
||||
/**
|
||||
* Get the certificate in an encoded form.
|
||||
*
|
||||
* @return allocated chunk of encoded cert
|
||||
*/
|
||||
chunk_t (*get_encoding)(certificate_t *this);
|
||||
|
||||
/**
|
||||
* Check if two certificates are equal.
|
||||
*
|
||||
* @param other certificate to compair against this
|
||||
* @return TRUE if certificates are equal
|
||||
*/
|
||||
bool (*equals)(certificate_t *this, certificate_t *other);
|
||||
|
||||
/**
|
||||
* Get a new reference to the certificate.
|
||||
*
|
||||
* @return this, with an increased refcount
|
||||
*/
|
||||
certificate_t* (*get_ref)(certificate_t *this);
|
||||
|
||||
/**
|
||||
* Destroy a certificate.
|
||||
*/
|
||||
void (*destroy)(certificate_t *this);
|
||||
};
|
||||
|
||||
#endif /* CERTIFICATE_H_ @}*/
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Martin Willi
|
||||
* Copyright (C) 2006 Andreas Steffen
|
||||
* Hochschule fuer Technik Rapperswil
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "crl.h"
|
||||
|
||||
ENUM(crl_reason_names, CRL_UNSPECIFIED, CRL_REMOVE_FROM_CRL,
|
||||
"unspecified",
|
||||
"key compromise",
|
||||
"ca compromise",
|
||||
"affiliation changed",
|
||||
"superseded",
|
||||
"cessation of operation",
|
||||
"certificate hold",
|
||||
"reason #7",
|
||||
"remove from crl",
|
||||
);
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Martin Willi
|
||||
* Copyright (C) 2006 Andreas Steffen
|
||||
* Hochschule fuer Technik Rapperswil
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup crl crl
|
||||
* @{ @ingroup certificates
|
||||
*/
|
||||
|
||||
#ifndef CRL_H_
|
||||
#define CRL_H_
|
||||
|
||||
typedef struct crl_t crl_t;
|
||||
typedef enum crl_reason_t crl_reason_t;
|
||||
|
||||
#include <library.h>
|
||||
#include <utils/linked_list.h>
|
||||
|
||||
/**
|
||||
* RFC 2459 CRL reason codes
|
||||
*/
|
||||
enum crl_reason_t {
|
||||
CRL_UNSPECIFIED = 0,
|
||||
CRL_KEY_COMPROMISE = 1,
|
||||
CRL_CA_COMPROMISE = 2,
|
||||
CRL_AFFILIATION_CHANGED = 3,
|
||||
CRL_SUPERSEDED = 4,
|
||||
CRL_CESSATION_OF_OPERATON = 5,
|
||||
CRL_CERTIFICATE_HOLD = 6,
|
||||
CRL_REMOVE_FROM_CRL = 8,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum names for crl_reason_t
|
||||
*/
|
||||
extern enum_name_t *crl_reason_names;
|
||||
|
||||
/**
|
||||
* X509 certificate revocation list (CRL) interface definition.
|
||||
*/
|
||||
struct crl_t {
|
||||
|
||||
/**
|
||||
* Implements (parts of) the certificate_t interface
|
||||
*/
|
||||
certificate_t certificate;
|
||||
|
||||
/**
|
||||
* Is that newer than this?
|
||||
*
|
||||
* @return TRUE if newer, FALSE otherwise
|
||||
*/
|
||||
bool (*is_newer)(crl_t *this, crl_t *that);
|
||||
|
||||
/**
|
||||
* Get the CRL serial number.
|
||||
*
|
||||
* @return chunk pointing to internal crlNumber
|
||||
*/
|
||||
chunk_t (*get_serial)(crl_t *this);
|
||||
|
||||
/**
|
||||
* Get the the authorityKeyIdentifier.
|
||||
*
|
||||
* @return authKeyIdentifier as identification_t*
|
||||
*/
|
||||
identification_t* (*get_authKeyIdentifier)(crl_t *this);
|
||||
|
||||
/**
|
||||
* Create an enumerator over all revoked certificates.
|
||||
*
|
||||
* The enumerator takes 3 pointer arguments:
|
||||
* chunk_t serial, time_t revocation_date, crl_reason_t reason
|
||||
*
|
||||
* @return enumerator over revoked certificates.
|
||||
*/
|
||||
enumerator_t* (*create_enumerator)(crl_t *this);
|
||||
|
||||
};
|
||||
|
||||
#endif /* CRL_H_ @}*/
|
||||
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Martin Willi
|
||||
* Hochschule fuer Technik Rapperswil
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "ocsp_request.h"
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Martin Willi
|
||||
* Hochschule fuer Technik Rapperswil
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup ocsp_request ocsp_request
|
||||
* @{ @ingroup certificates
|
||||
*/
|
||||
|
||||
#ifndef OCSP_REQUEST_H_
|
||||
#define OCSP_REQUEST_H_
|
||||
|
||||
#include <credentials/certificates/certificate.h>
|
||||
|
||||
typedef struct ocsp_request_t ocsp_request_t;
|
||||
|
||||
/**
|
||||
* OCSP request message.
|
||||
*/
|
||||
struct ocsp_request_t {
|
||||
|
||||
/**
|
||||
* Implements certificiate_t interface
|
||||
*/
|
||||
certificate_t interface;
|
||||
};
|
||||
|
||||
#endif /* OCSP_REQUEST_H_ @}*/
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Martin Willi
|
||||
* Hochschule fuer Technik Rapperswil
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "ocsp_response.h"
|
||||
|
||||
ENUM(ocsp_status_names, OCSP_SUCCESSFUL, OCSP_UNAUTHORIZED,
|
||||
"successful",
|
||||
"malformed request",
|
||||
"internal error",
|
||||
"try later",
|
||||
"status #4",
|
||||
"signature required",
|
||||
"unauthorized"
|
||||
);
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Martin Willi
|
||||
* Hochschule fuer Technik Rapperswil
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup ocsp_response ocsp_response
|
||||
* @{ @ingroup certificates
|
||||
*/
|
||||
|
||||
#ifndef OCSP_RESPONSE_H_
|
||||
#define OCSP_RESPONSE_H_
|
||||
|
||||
#include <credentials/certificates/x509.h>
|
||||
#include <credentials/certificates/crl.h>
|
||||
|
||||
typedef struct ocsp_response_t ocsp_response_t;
|
||||
typedef enum ocsp_status_t ocsp_status_t;
|
||||
|
||||
/**
|
||||
* OCSP response status
|
||||
*/
|
||||
enum ocsp_status_t {
|
||||
OCSP_SUCCESSFUL = 0,
|
||||
OCSP_MALFORMEDREQUEST = 1,
|
||||
OCSP_INTERNALERROR = 2,
|
||||
OCSP_TRYLATER = 3,
|
||||
OCSP_SIGREQUIRED = 5,
|
||||
OCSP_UNAUTHORIZED = 6,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum names for ocsp_status_t
|
||||
*/
|
||||
extern enum_name_t *ocsp_status_names;
|
||||
|
||||
/**
|
||||
* OCSP response message.
|
||||
*/
|
||||
struct ocsp_response_t {
|
||||
|
||||
/**
|
||||
* Implements certificiate_t interface
|
||||
*/
|
||||
certificate_t certificate;
|
||||
|
||||
/**
|
||||
* Check the status of a certificate by this OCSP response.
|
||||
*
|
||||
* @param subject certificate to check status
|
||||
* @param issuer issuer certificate of subject
|
||||
* @param revocation_time receives time of revocation, if revoked
|
||||
* @param revocation_reason receives reason of revocation, if revoked
|
||||
* @param this_update creation time of revocation list
|
||||
* @param next_update exptected time of next revocation list
|
||||
* @return certificate revocation status
|
||||
*/
|
||||
cert_validation_t (*get_status)(ocsp_response_t *this,
|
||||
x509_t *subject, x509_t *issuer,
|
||||
time_t *revocation_time,
|
||||
crl_reason_t *revocation_reason,
|
||||
time_t *this_update, time_t *next_update);
|
||||
|
||||
/**
|
||||
* Create an enumerator over the contained certificates.
|
||||
*
|
||||
* @return enumerator over certificate_t*
|
||||
*/
|
||||
enumerator_t* (*create_cert_enumerator)(ocsp_response_t *this);
|
||||
};
|
||||
|
||||
#endif /* OCSP_RESPONSE_H_ @}*/
|
||||
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Martin Willi
|
||||
* Hochschule fuer Technik Rapperswil
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include "x509.h"
|
||||
|
||||
ENUM(x509_flag_names, X509_CA, X509_SELF_SIGNED,
|
||||
"X509_CA",
|
||||
"X509_AA",
|
||||
"X509_OCSP_SIGNER",
|
||||
"X509_SELF_SIGNED",
|
||||
);
|
||||
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
* Copyright (C) 2007-2008 Martin Willi
|
||||
* Hochschule fuer Technik Rapperswil
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup x509 x509
|
||||
* @{ @ingroup certificates
|
||||
*/
|
||||
|
||||
#ifndef X509_H_
|
||||
#define X509_H_
|
||||
|
||||
#include <utils/enumerator.h>
|
||||
#include <credentials/certificates/certificate.h>
|
||||
|
||||
typedef struct x509_t x509_t;
|
||||
typedef enum x509_flag_t x509_flag_t;
|
||||
|
||||
/**
|
||||
* X.509 certificate flags.
|
||||
*/
|
||||
enum x509_flag_t {
|
||||
/** cert has CA constraint */
|
||||
X509_CA = (1<<0),
|
||||
/** cert has AA constraint */
|
||||
X509_AA = (1<<1),
|
||||
/** cert has OCSP signer constraint */
|
||||
X509_OCSP_SIGNER = (1<<2),
|
||||
/** cert belongs to an end entity */
|
||||
X509_PEER = (1<<3),
|
||||
/** cert is self-signed */
|
||||
X509_SELF_SIGNED = (1<<4),
|
||||
};
|
||||
|
||||
/**
|
||||
* enum names for x509 flags
|
||||
*/
|
||||
extern enum_name_t *x509_flag_names;
|
||||
|
||||
/**
|
||||
* X.509 certificate interface.
|
||||
*
|
||||
* This interface adds additional methods to the certificate_t type to
|
||||
* allow further operations on these certificates.
|
||||
*/
|
||||
struct x509_t {
|
||||
|
||||
/**
|
||||
* Implements certificate_t.
|
||||
*/
|
||||
certificate_t interface;
|
||||
|
||||
/**
|
||||
* Get the flags set for this certificate.
|
||||
*
|
||||
* @return set of flags
|
||||
*/
|
||||
x509_flag_t (*get_flags)(x509_t *this);
|
||||
|
||||
/**
|
||||
* Set the flags for this certificate.
|
||||
*
|
||||
* @param flags set of flags
|
||||
*/
|
||||
void (*set_flags)(x509_t *this, x509_flag_t flags);
|
||||
|
||||
/**
|
||||
* Get the certificate serial number.
|
||||
*
|
||||
* @return chunk pointing to internal serial number
|
||||
*/
|
||||
chunk_t (*get_serial)(x509_t *this);
|
||||
|
||||
/**
|
||||
* Get the the authorityKeyIdentifier.
|
||||
*
|
||||
* @return authKeyIdentifier as identification_t*
|
||||
*/
|
||||
identification_t* (*get_authKeyIdentifier)(x509_t *this);
|
||||
|
||||
/**
|
||||
* Create an enumerator over all subjectAltNames.
|
||||
*
|
||||
* @return enumerator over subjectAltNames as identification_t*
|
||||
*/
|
||||
enumerator_t* (*create_subjectAltName_enumerator)(x509_t *this);
|
||||
|
||||
/**
|
||||
* Create an enumerator over all CRL URIs.
|
||||
*
|
||||
* @return enumerator over URIs as char*
|
||||
*/
|
||||
enumerator_t* (*create_crl_uri_enumerator)(x509_t *this);
|
||||
|
||||
/**
|
||||
* Create an enumerator over all OCSP URIs.
|
||||
*
|
||||
* @return enumerator over URIs as char*
|
||||
*/
|
||||
enumerator_t* (*create_ocsp_uri_enumerator)(x509_t *this);
|
||||
};
|
||||
|
||||
#endif /* X509_H_ @}*/
|
||||
Reference in New Issue
Block a user