Annotation of embedaddon/strongswan/src/libstrongswan/credentials/builder.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2008 Martin Willi
                      3:  * Copyright (C) 2016-2019 Andreas Steffen
                      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: /**
                     18:  * @defgroup builder builder
                     19:  * @{ @ingroup credentials
                     20:  */
                     21: 
                     22: #ifndef BUILDER_H_
                     23: #define BUILDER_H_
                     24: 
                     25: #include <stdarg.h>
                     26: 
                     27: typedef enum builder_part_t builder_part_t;
                     28: 
                     29: /**
                     30:  * Constructor function to build credentials.
                     31:  *
                     32:  * Any added parts are cloned/refcounted by the builder implementation.
                     33:  * Callers may need to free the passed resources themselves.
                     34:  *
                     35:  * @param subtype      constructor specific subtype, e.g. a certificate_type_t
                     36:  * @param args         list of builder part types, followed by parts, BUILD_END
                     37:  * @return                     builder specific credential, NULL on error
                     38:  */
                     39: typedef void* (*builder_function_t)(int subtype, va_list args);
                     40: 
                     41: #include <library.h>
                     42: 
                     43: /**
                     44:  * Parts to build credentials from.
                     45:  */
                     46: enum builder_part_t {
                     47:        /** path to a file encoded in any format, char* */
                     48:        BUILD_FROM_FILE,
                     49:        /** unix socket of a ssh/pgp agent, char* */
                     50:        BUILD_AGENT_SOCKET,
                     51:        /** An arbitrary blob of data, chunk_t */
                     52:        BUILD_BLOB,
                     53:        /** DER encoded ASN.1 blob, chunk_t */
                     54:        BUILD_BLOB_ASN1_DER,
                     55:        /** PEM encoded ASN.1/PGP blob, chunk_t */
                     56:        BUILD_BLOB_PEM,
                     57:        /** OpenPGP key blob, chunk_t */
                     58:        BUILD_BLOB_PGP,
                     59:        /** DNS public key blob (RFC 4034, RSA specific RFC 3110), chunk_t */
                     60:        BUILD_BLOB_DNSKEY,
                     61:        /** SSH public key blob (RFC 4253), chunk_t */
                     62:        BUILD_BLOB_SSHKEY,
                     63:        /** parameters from algorithmIdentifier (ASN.1 blob), chunk_t */
                     64:        BUILD_BLOB_ALGID_PARAMS,
                     65:        /** key size in bits, as used for key generation, u_int */
                     66:        BUILD_KEY_SIZE,
                     67:        /** private key to use for signing, private_key_t* */
                     68:        BUILD_SIGNING_KEY,
                     69:        /** certificate used for signing, certificate_t* */
                     70:        BUILD_SIGNING_CERT,
                     71:        /** public key to include, public_key_t* */
                     72:        BUILD_PUBLIC_KEY,
                     73:        /** subject for e.g. certificates, identification_t* */
                     74:        BUILD_SUBJECT,
                     75:        /** additional subject names, linked_list_t* containing identification_t* */
                     76:        BUILD_SUBJECT_ALTNAMES,
                     77:        /** issuer for e.g. certificates, identification_t* */
                     78:        BUILD_ISSUER,
                     79:        /** additional issuer names, linked_list_t* containing identification_t* */
                     80:        BUILD_ISSUER_ALTNAMES,
                     81:        /** notBefore, time_t* */
                     82:        BUILD_NOT_BEFORE_TIME,
                     83:        /** notAfter, time_t* */
                     84:        BUILD_NOT_AFTER_TIME,
                     85:        /** a serial number in binary form, chunk_t */
                     86:        BUILD_SERIAL,
                     87:        /** signature scheme and parameters for signature, signature_params_t* */
                     88:        BUILD_SIGNATURE_SCHEME,
                     89:        /** digest algorithm to be used for signature, hash_algorithm_t */
                     90:        BUILD_DIGEST_ALG,
                     91:        /** encryption algorithm to use, encryption_algorithm_t */
                     92:        BUILD_ENCRYPTION_ALG,
                     93:        /** list of AC group memberships, linked_list_t* with char* */
                     94:        BUILD_AC_GROUP_STRINGS,
                     95:        /** a ca certificate, certificate_t* */
                     96:        BUILD_CA_CERT,
                     97:        /** a certificate, certificate_t* */
                     98:        BUILD_CERT,
                     99:        /** CRL distribution point URIs, x509_cdp_t* */
                    100:        BUILD_CRL_DISTRIBUTION_POINTS,
                    101:        /** OCSP AuthorityInfoAccess locations, linked_list_t* containing char* */
                    102:        BUILD_OCSP_ACCESS_LOCATIONS,
                    103:        /** certificate path length constraint */
                    104:        BUILD_PATHLEN,
                    105:        /** RFC3779 addressBlock, linked_list_t* of traffic_selector_t* */
                    106:        BUILD_ADDRBLOCKS,
                    107:        /** permitted X509 name constraints, linked_list_t* of identification_t* */
                    108:        BUILD_PERMITTED_NAME_CONSTRAINTS,
                    109:        /** excluded X509 name constraints, linked_list_t* of identification_t* */
                    110:        BUILD_EXCLUDED_NAME_CONSTRAINTS,
                    111:        /** certificatePolicy OIDs, linked_list_t* of x509_cert_policy_t* */
                    112:        BUILD_CERTIFICATE_POLICIES,
                    113:        /** policyMapping OIDs, linked_list_t* of x509_policy_mapping_t* */
                    114:        BUILD_POLICY_MAPPINGS,
                    115:        /** requireExplicitPolicy constraint, int */
                    116:        BUILD_POLICY_REQUIRE_EXPLICIT,
                    117:        /** inhibitPolicyMapping constraint, int */
                    118:        BUILD_POLICY_INHIBIT_MAPPING,
                    119:        /** inhibitAnyPolicy constraint, int */
                    120:        BUILD_POLICY_INHIBIT_ANY,
                    121:        /** enforce an additional X509 flag, x509_flag_t */
                    122:        BUILD_X509_FLAG,
                    123:        /** enumerator_t over (chunk_t serial, time_t date, crl_reason_t reason) */
                    124:        BUILD_REVOKED_ENUMERATOR,
                    125:        /** Base CRL serial for a delta CRL, chunk_t, */
                    126:        BUILD_BASE_CRL,
                    127:        /** PKCS#10 challenge password */
                    128:        BUILD_CHALLENGE_PWD,
                    129:        /** PKCS#7 attribute, int oid, chunk_t with ASN1 type encoded value */
                    130:        BUILD_PKCS7_ATTRIBUTE,
                    131:        /** friendly name of a PKCS#11 module, null terminated char* */
                    132:        BUILD_PKCS11_MODULE,
                    133:        /** slot specifier for a token in a PKCS#11 module, int */
                    134:        BUILD_PKCS11_SLOT,
                    135:        /** key ID of a key on a token, chunk_t */
                    136:        BUILD_PKCS11_KEYID,
                    137:        /** modulus (n) of a RSA key, chunk_t */
                    138:        BUILD_RSA_MODULUS,
                    139:        /** public exponent (e) of a RSA key, chunk_t */
                    140:        BUILD_RSA_PUB_EXP,
                    141:        /** private exponent (d) of a RSA key, chunk_t */
                    142:        BUILD_RSA_PRIV_EXP,
                    143:        /** prime 1 (p) of a RSA key (p < q), chunk_t */
                    144:        BUILD_RSA_PRIME1,
                    145:        /** prime 2 (q) of a RSA key (p < q), chunk_t */
                    146:        BUILD_RSA_PRIME2,
                    147:        /** exponent 1 (exp1) of a RSA key, chunk_t */
                    148:        BUILD_RSA_EXP1,
                    149:        /** exponent 2 (exp1) of a RSA key, chunk_t */
                    150:        BUILD_RSA_EXP2,
                    151:        /** coefficient (coeff) of a RSA key, chunk_t */
                    152:        BUILD_RSA_COEFF,
                    153:        /** generate (p) and (q) as safe primes */
                    154:        BUILD_SAFE_PRIMES,
                    155:        /** number of private key shares */
                    156:        BUILD_SHARES,
                    157:        /** minimum number of participating private key shares */
                    158:        BUILD_THRESHOLD,
                    159:        /** EdDSA public key blob */
                    160:        BUILD_EDDSA_PUB,
                    161:        /** DER encoded ASN.1 EdDSA private key */
                    162:        BUILD_EDDSA_PRIV_ASN1_DER,
                    163:        /** OID of an [unsupported] critical extension */
                    164:        BUILD_CRITICAL_EXTENSION,
                    165:        /** end of variable argument builder list */
                    166:        BUILD_END,
                    167: };
                    168: 
                    169: /**
                    170:  * enum names for build_part_t
                    171:  */
                    172: extern enum_name_t *builder_part_names;
                    173: 
                    174: #endif /** BUILDER_H_ @}*/

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