Annotation of embedaddon/strongswan/src/scepclient/scep.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2012 Tobias Brunner
                      3:  * Copyright (C) 2005 Jan Hutter, Martin Willi
                      4:  * HSR Hochschule fuer Technik Rapperswil
                      5:  *
                      6:  * This program is free software; you can redistribute it and/or modify it
                      7:  * under the terms of the GNU General Public License as published by the
                      8:  * Free Software Foundation; either version 2 of the License, or (at your
                      9:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                     10:  *
                     11:  * This program is distributed in the hope that it will be useful, but
                     12:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     13:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     14:  * for more details.
                     15:  */
                     16: 
                     17: #ifndef _SCEP_H
                     18: #define _SCEP_H
                     19: 
                     20: #include <credentials/containers/pkcs7.h>
                     21: #include <credentials/certificates/certificate.h>
                     22: 
                     23: /* supported SCEP operation types */
                     24: typedef enum {
                     25:        SCEP_PKI_OPERATION,
                     26:        SCEP_GET_CA_CERT
                     27: } scep_op_t;
                     28: 
                     29: /* SCEP pkiStatus values */
                     30: typedef enum {
                     31:    SCEP_SUCCESS,
                     32:    SCEP_FAILURE,
                     33:    SCEP_PENDING,
                     34:    SCEP_UNKNOWN
                     35: } pkiStatus_t;
                     36: 
                     37: /* SCEP messageType values */
                     38: typedef enum {
                     39:    SCEP_CertRep_MSG,
                     40:    SCEP_PKCSReq_MSG,
                     41:    SCEP_GetCertInitial_MSG,
                     42:    SCEP_GetCert_MSG,
                     43:    SCEP_GetCRL_MSG,
                     44:    SCEP_Unknown_MSG
                     45: } scep_msg_t;
                     46: 
                     47: /* SCEP failure reasons */
                     48: typedef enum {
                     49:    SCEP_badAlg_REASON =          0,
                     50:    SCEP_badMessageCheck_REASON = 1,
                     51:    SCEP_badRequest_REASON =      2,
                     52:    SCEP_badTime_REASON =         3,
                     53:    SCEP_badCertId_REASON =       4,
                     54:    SCEP_unknown_REASON =         5
                     55: } failInfo_t;
                     56: 
                     57: /* SCEP attributes */
                     58: typedef struct {
                     59:        scep_msg_t  msgType;
                     60:        pkiStatus_t pkiStatus;
                     61:        failInfo_t  failInfo;
                     62:        chunk_t     transID;
                     63:        chunk_t     senderNonce;
                     64:        chunk_t     recipientNonce;
                     65: } scep_attributes_t;
                     66: 
                     67: extern const scep_attributes_t empty_scep_attributes;
                     68: 
                     69: bool parse_attributes(chunk_t blob, scep_attributes_t *attrs);
                     70: void scep_generate_transaction_id(public_key_t *key,
                     71:                                                                  chunk_t *transID,
                     72:                                                                  chunk_t *serialNumber);
                     73: chunk_t scep_generate_pkcs10_fingerprint(chunk_t pkcs10);
                     74: chunk_t scep_transId_attribute(chunk_t transaction_id);
                     75: chunk_t scep_messageType_attribute(scep_msg_t m);
                     76: chunk_t scep_senderNonce_attribute(void);
                     77: chunk_t scep_build_request(chunk_t data, chunk_t transID, scep_msg_t msg,
                     78:                                                certificate_t *enc_cert, encryption_algorithm_t enc_alg,
                     79:                                                size_t key_size, certificate_t *signer_cert,
                     80:                                                hash_algorithm_t digest_alg, private_key_t *private_key);
                     81: bool scep_http_request(const char *url, chunk_t msg, scep_op_t op,
                     82:                                           bool http_get_request, u_int timeout, char *src,
                     83:                                           chunk_t *response);
                     84: err_t scep_parse_response(chunk_t response, chunk_t transID,
                     85:                                                  container_t **out, scep_attributes_t *attrs);
                     86: 
                     87: #endif /* _SCEP_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>