| /* |
| * Copyright (C) 2015-2023 Tobias Brunner |
| * Copyright (C) 2009 Martin Willi |
| * |
| * Copyright (C) secunet Security Networks AG |
| * |
| * 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 pki pki |
| * |
| * @addtogroup pki |
| * @{ |
| */ |
| |
| #ifndef PKI_H_ |
| #define PKI_H_ |
| |
| #include "command.h" |
| |
| #include <library.h> |
| #include <selectors/traffic_selector.h> |
| #include <credentials/keys/private_key.h> |
| |
| /** |
| * Convert a form string to a encoding type |
| */ |
| bool get_form(char *form, cred_encoding_type_t *enc, credential_type_t type); |
| |
| /** |
| * Calculate start/end lifetime for certificates. |
| * |
| * If both nbstr and nastr are given, span is ignored. Otherwise missing |
| * arguments are calculated, or assumed to be now. |
| * |
| * @param format strptime() format, NULL for default: %d.%m.%y %T |
| * @param nbstr string describing notBefore datetime, or NULL |
| * @param nastr string describing notAfter datetime, or NULL |
| * @param span lifetime span, from notBefore to notAfter |
| * @param nb calculated notBefore time |
| * @param na calculated notAfter time |
| * @return TRUE of nb/na calculated successfully |
| */ |
| bool calculate_lifetime(char *format, char *nbstr, char *nastr, time_t span, |
| time_t *nb, time_t *na); |
| |
| /** |
| * Set output file mode appropriate for credential encoding form on Windows |
| */ |
| void set_file_mode(FILE *stream, cred_encoding_type_t enc); |
| |
| /** |
| * Parse RSA padding configuration. |
| * |
| * @param padding input string to parse |
| * @param pss set to TRUE if PSS padding should be used, FALSE otherwise |
| * @return TRUE if successfully parsed |
| */ |
| bool parse_rsa_padding(char *padding, bool *pss); |
| |
| /** |
| * Determine the signature scheme and parameters for the given private key and |
| * hash algorithm and whether to use PSS padding for RSA. |
| * |
| * @param private private key |
| * @param digest hash algorithm (if HASH_UNKNOWN a default is determined |
| * based on the key) |
| * @param pss use PSS padding for RSA keys |
| * @return allocated signature scheme and parameters (NULL if none |
| * found) |
| */ |
| signature_params_t *get_signature_scheme(private_key_t *private, |
| hash_algorithm_t digest, bool pss); |
| |
| /** |
| * Create a traffic selector from a CIDR or range string. |
| * |
| * @param str input string, either a.b.c.d/e or a.b.c.d-e.f.g.h |
| * @return traffic selector, NULL on error |
| */ |
| traffic_selector_t* parse_ts(char *str); |
| |
| /** |
| * Generate a random serial number for certificates. |
| * |
| * @param len length of the generated serial number |
| * @param serial allocated serial number |
| * @return TRUE if allocation was successful |
| */ |
| bool allocate_serial(size_t len, chunk_t *serial); |
| |
| #endif /** PKI_H_ @}*/ |