|
Packit |
aea12f |
/*
|
|
Packit |
aea12f |
* Copyright (C) 2006-2012 Free Software Foundation, Inc.
|
|
Packit |
aea12f |
*
|
|
Packit |
aea12f |
* Author: Nikos Mavrogiannopoulos
|
|
Packit |
aea12f |
*
|
|
Packit |
aea12f |
* This file is part of GnuTLS.
|
|
Packit |
aea12f |
*
|
|
Packit |
aea12f |
* The GnuTLS is free software; you can redistribute it and/or
|
|
Packit |
aea12f |
* modify it under the terms of the GNU Lesser General Public License
|
|
Packit |
aea12f |
* as published by the Free Software Foundation; either version 2.1 of
|
|
Packit |
aea12f |
* the License, or (at your option) any later version.
|
|
Packit |
aea12f |
*
|
|
Packit |
aea12f |
* This library is distributed in the hope that it will be useful, but
|
|
Packit |
aea12f |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
aea12f |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
aea12f |
* Lesser General Public License for more details.
|
|
Packit |
aea12f |
*
|
|
Packit |
aea12f |
* You should have received a copy of the GNU Lesser General Public License
|
|
Packit |
aea12f |
* along with this program. If not, see <https://www.gnu.org/licenses/>
|
|
Packit |
aea12f |
*
|
|
Packit |
aea12f |
*/
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
#ifndef GNUTLSXX_H
|
|
Packit |
aea12f |
#define GNUTLSXX_H
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
#include <exception>
|
|
Packit |
aea12f |
#include <vector>
|
|
Packit |
aea12f |
#include <gnutls/gnutls.h>
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
namespace gnutls {
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class noncopyable {
|
|
Packit |
aea12f |
protected:
|
|
Packit |
aea12f |
noncopyable() {
|
|
Packit |
aea12f |
} ~noncopyable() {
|
|
Packit |
aea12f |
} private:
|
|
Packit |
aea12f |
// These are non-implemented.
|
|
Packit |
aea12f |
noncopyable(const noncopyable &);
|
|
Packit |
aea12f |
noncopyable & operator=(const noncopyable &);
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class exception:public std::exception {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
exception(int x);
|
|
Packit |
aea12f |
const char *what() const throw();
|
|
Packit |
aea12f |
int get_code();
|
|
Packit |
aea12f |
protected:
|
|
Packit |
aea12f |
int retcode;
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class dh_params:private noncopyable {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
dh_params();
|
|
Packit |
aea12f |
~dh_params();
|
|
Packit |
aea12f |
void import_raw(const gnutls_datum_t & prime,
|
|
Packit |
aea12f |
const gnutls_datum_t & generator);
|
|
Packit |
aea12f |
void import_pkcs3(const gnutls_datum_t & pkcs3_params,
|
|
Packit |
aea12f |
gnutls_x509_crt_fmt_t format);
|
|
Packit |
aea12f |
void generate(unsigned int bits);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void export_pkcs3(gnutls_x509_crt_fmt_t format,
|
|
Packit |
aea12f |
unsigned char *params_data,
|
|
Packit |
aea12f |
size_t * params_data_size);
|
|
Packit |
aea12f |
void export_raw(gnutls_datum_t & prime,
|
|
Packit |
aea12f |
gnutls_datum_t & generator);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
gnutls_dh_params_t get_params_t() const;
|
|
Packit |
aea12f |
dh_params & operator=(const dh_params & src);
|
|
Packit |
aea12f |
protected:
|
|
Packit |
aea12f |
gnutls_dh_params_t params;
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class rsa_params:private noncopyable {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
rsa_params();
|
|
Packit |
aea12f |
~rsa_params();
|
|
Packit |
aea12f |
void import_raw(const gnutls_datum_t & m,
|
|
Packit |
aea12f |
const gnutls_datum_t & e,
|
|
Packit |
aea12f |
const gnutls_datum_t & d,
|
|
Packit |
aea12f |
const gnutls_datum_t & p,
|
|
Packit |
aea12f |
const gnutls_datum_t & q,
|
|
Packit |
aea12f |
const gnutls_datum_t & u);
|
|
Packit |
aea12f |
void import_pkcs1(const gnutls_datum_t & pkcs1_params,
|
|
Packit |
aea12f |
gnutls_x509_crt_fmt_t format);
|
|
Packit |
aea12f |
void generate(unsigned int bits);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void export_pkcs1(gnutls_x509_crt_fmt_t format,
|
|
Packit |
aea12f |
unsigned char *params_data,
|
|
Packit |
aea12f |
size_t * params_data_size);
|
|
Packit |
aea12f |
void export_raw(gnutls_datum_t & m, gnutls_datum_t & e,
|
|
Packit |
aea12f |
gnutls_datum_t & d, gnutls_datum_t & p,
|
|
Packit |
aea12f |
gnutls_datum_t & q, gnutls_datum_t & u);
|
|
Packit |
aea12f |
gnutls_rsa_params_t get_params_t() const;
|
|
Packit |
aea12f |
rsa_params & operator=(const rsa_params & src);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
protected:
|
|
Packit |
aea12f |
gnutls_rsa_params_t params;
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class session:private noncopyable {
|
|
Packit |
aea12f |
protected:
|
|
Packit |
aea12f |
gnutls_session_t s;
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
session(unsigned int);
|
|
Packit |
aea12f |
virtual ~ session();
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
gnutls_session_t ptr();
|
|
Packit |
aea12f |
int bye(gnutls_close_request_t how);
|
|
Packit |
aea12f |
int handshake();
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
gnutls_alert_description_t get_alert() const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
int send_alert(gnutls_alert_level_t level,
|
|
Packit |
aea12f |
gnutls_alert_description_t desc);
|
|
Packit |
aea12f |
int send_appropriate_alert(int err);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
gnutls_cipher_algorithm_t get_cipher() const;
|
|
Packit |
aea12f |
gnutls_kx_algorithm_t get_kx() const;
|
|
Packit |
aea12f |
gnutls_mac_algorithm_t get_mac() const;
|
|
Packit |
aea12f |
gnutls_compression_method_t get_compression() const;
|
|
Packit |
aea12f |
gnutls_certificate_type_t get_certificate_type() const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
// for the handshake
|
|
Packit |
aea12f |
void set_private_extensions(bool allow);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
gnutls_handshake_description_t get_handshake_last_out()
|
|
Packit |
aea12f |
const;
|
|
Packit |
aea12f |
gnutls_handshake_description_t get_handshake_last_in()
|
|
Packit |
aea12f |
const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
ssize_t send(const void *data, size_t sizeofdata);
|
|
Packit |
aea12f |
ssize_t recv(void *data, size_t sizeofdata);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
bool get_record_direction() const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
// maximum packet size
|
|
Packit |
aea12f |
size_t get_max_size() const;
|
|
Packit |
aea12f |
void set_max_size(size_t size);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
size_t check_pending() const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void prf(size_t label_size, const char *label,
|
|
Packit |
aea12f |
int server_random_first,
|
|
Packit |
aea12f |
size_t extra_size, const char *extra,
|
|
Packit |
aea12f |
size_t outsize, char *out);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void prf_raw(size_t label_size, const char *label,
|
|
Packit |
aea12f |
size_t seed_size, const char *seed,
|
|
Packit |
aea12f |
size_t outsize, char *out);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
/* if you just want some defaults, use the following.
|
|
Packit |
aea12f |
*/
|
|
Packit |
aea12f |
void set_priority(const char *prio, const char **err_pos);
|
|
Packit |
aea12f |
void set_priority(gnutls_priority_t p);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
gnutls_protocol_t get_protocol_version() const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
// for resuming sessions
|
|
Packit |
aea12f |
void set_data(const void *session_data,
|
|
Packit |
aea12f |
size_t session_data_size);
|
|
Packit |
aea12f |
void get_data(void *session_data,
|
|
Packit |
aea12f |
size_t * session_data_size) const;
|
|
Packit |
aea12f |
void get_data(gnutls_session_t session,
|
|
Packit |
aea12f |
gnutls_datum_t & data) const;
|
|
Packit |
aea12f |
void get_id(void *session_id,
|
|
Packit |
aea12f |
size_t * session_id_size) const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
bool is_resumed() const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_max_handshake_packet_length(size_t max);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void clear_credentials();
|
|
Packit |
aea12f |
void set_credentials(class credentials & cred);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_transport_ptr(gnutls_transport_ptr_t ptr);
|
|
Packit |
aea12f |
void set_transport_ptr(gnutls_transport_ptr_t recv_ptr,
|
|
Packit |
aea12f |
gnutls_transport_ptr_t send_ptr);
|
|
Packit |
aea12f |
gnutls_transport_ptr_t get_transport_ptr() const;
|
|
Packit |
aea12f |
void get_transport_ptr(gnutls_transport_ptr_t & recv_ptr,
|
|
Packit |
aea12f |
gnutls_transport_ptr_t & send_ptr)
|
|
Packit |
aea12f |
const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_transport_lowat(size_t num);
|
|
Packit |
aea12f |
void set_transport_push_function(gnutls_push_func
|
|
Packit |
aea12f |
push_func);
|
|
Packit |
aea12f |
void set_transport_vec_push_function(gnutls_vec_push_func
|
|
Packit |
aea12f |
vec_push_func);
|
|
Packit |
aea12f |
void set_transport_pull_function(gnutls_pull_func
|
|
Packit |
aea12f |
pull_func);
|
|
Packit |
aea12f |
void set_transport_pull_timeout_function (gnutls_pull_timeout_func pull_timeout_func);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_user_ptr(void *ptr);
|
|
Packit |
aea12f |
void *get_user_ptr() const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void send_openpgp_cert(gnutls_openpgp_crt_status_t status);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
gnutls_credentials_type_t get_auth_type() const;
|
|
Packit |
aea12f |
gnutls_credentials_type_t get_server_auth_type() const;
|
|
Packit |
aea12f |
gnutls_credentials_type_t get_client_auth_type() const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
// informational stuff
|
|
Packit |
aea12f |
void set_dh_prime_bits(unsigned int bits);
|
|
Packit |
aea12f |
unsigned int get_dh_secret_bits() const;
|
|
Packit |
aea12f |
unsigned int get_dh_peers_public_bits() const;
|
|
Packit |
aea12f |
unsigned int get_dh_prime_bits() const;
|
|
Packit |
aea12f |
void get_dh_group(gnutls_datum_t & gen,
|
|
Packit |
aea12f |
gnutls_datum_t & prime) const;
|
|
Packit |
aea12f |
void get_dh_pubkey(gnutls_datum_t & raw_key) const;
|
|
Packit |
aea12f |
void get_rsa_export_pubkey(gnutls_datum_t & exponent,
|
|
Packit |
aea12f |
gnutls_datum_t & modulus) const;
|
|
Packit |
aea12f |
unsigned int get_rsa_export_modulus_bits() const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void get_our_certificate(gnutls_datum_t & cert) const;
|
|
Packit |
aea12f |
bool get_peers_certificate(std::vector < gnutls_datum_t >
|
|
Packit |
aea12f |
&out_certs) const;
|
|
Packit |
aea12f |
bool get_peers_certificate(const gnutls_datum_t ** certs,
|
|
Packit |
aea12f |
unsigned int *certs_size) const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
time_t get_peers_certificate_activation_time() const;
|
|
Packit |
aea12f |
time_t get_peers_certificate_expiration_time() const;
|
|
Packit |
aea12f |
void verify_peers_certificate(unsigned int &status) const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
// interface for databases
|
|
Packit |
aea12f |
class DB:private noncopyable {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
virtual ~ DB() = 0;
|
|
Packit |
aea12f |
virtual bool store(const gnutls_datum_t & key,
|
|
Packit |
aea12f |
const gnutls_datum_t & data) = 0;
|
|
Packit |
aea12f |
virtual bool retrieve(const gnutls_datum_t & key,
|
|
Packit |
aea12f |
gnutls_datum_t & data) = 0;
|
|
Packit |
aea12f |
virtual bool remove(const gnutls_datum_t & key) = 0;
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class server_session:public session {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
server_session();
|
|
Packit |
aea12f |
server_session(int flags);
|
|
Packit |
aea12f |
~server_session();
|
|
Packit |
aea12f |
void db_remove() const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_db_cache_expiration(unsigned int seconds);
|
|
Packit |
aea12f |
void set_db(const DB & db);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
// returns true if session is expired
|
|
Packit |
aea12f |
bool db_check_entry(gnutls_datum_t & session_data) const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
// server side only
|
|
Packit |
aea12f |
const char *get_srp_username() const;
|
|
Packit |
aea12f |
const char *get_psk_username() const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void get_server_name(void *data, size_t * data_length,
|
|
Packit |
aea12f |
unsigned int *type,
|
|
Packit |
aea12f |
unsigned int indx) const;
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
int rehandshake();
|
|
Packit |
aea12f |
void set_certificate_request(gnutls_certificate_request_t);
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class client_session:public session {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
client_session();
|
|
Packit |
aea12f |
client_session(int flags);
|
|
Packit |
aea12f |
~client_session();
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_verify_cert(const char *hostname, unsigned flags);
|
|
Packit |
aea12f |
void set_server_name(gnutls_server_name_type_t type,
|
|
Packit |
aea12f |
const void *name, size_t name_length);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
bool get_request_status();
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class credentials:private noncopyable {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
virtual ~ credentials() {
|
|
Packit |
aea12f |
} gnutls_credentials_type_t get_type() const;
|
|
Packit |
aea12f |
protected:
|
|
Packit |
aea12f |
friend class session;
|
|
Packit |
aea12f |
credentials(gnutls_credentials_type_t t);
|
|
Packit |
aea12f |
void *ptr() const;
|
|
Packit |
aea12f |
void set_ptr(void *ptr);
|
|
Packit |
aea12f |
gnutls_credentials_type_t type;
|
|
Packit |
aea12f |
private:
|
|
Packit |
aea12f |
void *cred;
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class certificate_credentials:public credentials {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
~certificate_credentials();
|
|
Packit |
aea12f |
certificate_credentials();
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void free_keys();
|
|
Packit |
aea12f |
void free_cas();
|
|
Packit |
aea12f |
void free_ca_names();
|
|
Packit |
aea12f |
void free_crls();
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_dh_params(const dh_params & params);
|
|
Packit |
aea12f |
void set_rsa_export_params(const rsa_params & params);
|
|
Packit |
aea12f |
void set_verify_flags(unsigned int flags);
|
|
Packit |
aea12f |
void set_verify_limits(unsigned int max_bits,
|
|
Packit |
aea12f |
unsigned int max_depth);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_x509_trust_file(const char *cafile,
|
|
Packit |
aea12f |
gnutls_x509_crt_fmt_t type);
|
|
Packit |
aea12f |
void set_x509_trust(const gnutls_datum_t & CA,
|
|
Packit |
aea12f |
gnutls_x509_crt_fmt_t type);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_x509_trust(gnutls_x509_crt_t * ca_list,
|
|
Packit |
aea12f |
int ca_list_size);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_x509_crl_file(const char *crlfile,
|
|
Packit |
aea12f |
gnutls_x509_crt_fmt_t type);
|
|
Packit |
aea12f |
void set_x509_crl(const gnutls_datum_t & CRL,
|
|
Packit |
aea12f |
gnutls_x509_crt_fmt_t type);
|
|
Packit |
aea12f |
void set_x509_crl(gnutls_x509_crl_t * crl_list,
|
|
Packit |
aea12f |
int crl_list_size);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_x509_key_file(const char *certfile,
|
|
Packit |
aea12f |
const char *KEYFILE,
|
|
Packit |
aea12f |
gnutls_x509_crt_fmt_t type);
|
|
Packit |
aea12f |
void set_x509_key(const gnutls_datum_t & CERT,
|
|
Packit |
aea12f |
const gnutls_datum_t & KEY,
|
|
Packit |
aea12f |
gnutls_x509_crt_fmt_t type);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_x509_key(gnutls_x509_crt_t * cert_list,
|
|
Packit |
aea12f |
int cert_list_size,
|
|
Packit |
aea12f |
gnutls_x509_privkey_t key);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_simple_pkcs12_file(const char *pkcs12file,
|
|
Packit |
aea12f |
gnutls_x509_crt_fmt_t type,
|
|
Packit |
aea12f |
const char *password);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
void set_retrieve_function
|
|
Packit |
aea12f |
(gnutls_certificate_retrieve_function * func);
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
protected:
|
|
Packit |
aea12f |
gnutls_certificate_credentials_t cred;
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class certificate_server_credentials:public certificate_credentials {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
void set_params_function(gnutls_params_function * func);
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class certificate_client_credentials:public certificate_credentials {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class anon_server_credentials:public credentials {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
anon_server_credentials();
|
|
Packit |
aea12f |
~anon_server_credentials();
|
|
Packit |
aea12f |
void set_dh_params(const dh_params & params);
|
|
Packit |
aea12f |
void set_params_function(gnutls_params_function * func);
|
|
Packit |
aea12f |
protected:
|
|
Packit |
aea12f |
gnutls_anon_server_credentials_t cred;
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class anon_client_credentials:public credentials {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
anon_client_credentials();
|
|
Packit |
aea12f |
~anon_client_credentials();
|
|
Packit |
aea12f |
protected:
|
|
Packit |
aea12f |
gnutls_anon_client_credentials_t cred;
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class srp_server_credentials:public credentials {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
srp_server_credentials();
|
|
Packit |
aea12f |
~srp_server_credentials();
|
|
Packit |
aea12f |
void set_credentials_file(const char *password_file,
|
|
Packit |
aea12f |
const char *password_conf_file);
|
|
Packit |
aea12f |
void set_credentials_function
|
|
Packit |
aea12f |
(gnutls_srp_server_credentials_function * func);
|
|
Packit |
aea12f |
protected:
|
|
Packit |
aea12f |
gnutls_srp_server_credentials_t cred;
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class srp_client_credentials:public credentials {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
srp_client_credentials();
|
|
Packit |
aea12f |
~srp_client_credentials();
|
|
Packit |
aea12f |
void set_credentials(const char *username,
|
|
Packit |
aea12f |
const char *password);
|
|
Packit |
aea12f |
void set_credentials_function
|
|
Packit |
aea12f |
(gnutls_srp_client_credentials_function * func);
|
|
Packit |
aea12f |
protected:
|
|
Packit |
aea12f |
gnutls_srp_client_credentials_t cred;
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class psk_server_credentials:public credentials {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
psk_server_credentials();
|
|
Packit |
aea12f |
~psk_server_credentials();
|
|
Packit |
aea12f |
void set_credentials_file(const char *password_file);
|
|
Packit |
aea12f |
void set_credentials_function
|
|
Packit |
aea12f |
(gnutls_psk_server_credentials_function * func);
|
|
Packit |
aea12f |
void set_dh_params(const dh_params & params);
|
|
Packit |
aea12f |
void set_params_function(gnutls_params_function * func);
|
|
Packit |
aea12f |
protected:
|
|
Packit |
aea12f |
gnutls_psk_server_credentials_t cred;
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
class psk_client_credentials:public credentials {
|
|
Packit |
aea12f |
public:
|
|
Packit |
aea12f |
psk_client_credentials();
|
|
Packit |
aea12f |
~psk_client_credentials();
|
|
Packit |
aea12f |
void set_credentials(const char *username,
|
|
Packit |
aea12f |
const gnutls_datum_t & key,
|
|
Packit |
aea12f |
gnutls_psk_key_flags flags);
|
|
Packit |
aea12f |
void set_credentials_function
|
|
Packit |
aea12f |
(gnutls_psk_client_credentials_function * func);
|
|
Packit |
aea12f |
protected:
|
|
Packit |
aea12f |
gnutls_psk_client_credentials_t cred;
|
|
Packit |
aea12f |
};
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
} /* namespace */
|
|
Packit |
aea12f |
|
|
Packit |
aea12f |
#endif /* GNUTLSXX_H */
|