2008-03-26 10:10:40 +00:00
|
|
|
/*
|
2012-04-17 09:14:38 +00:00
|
|
|
* Copyright (C) 2012 Tobias Brunner
|
2008-03-26 10:10:40 +00:00
|
|
|
* Copyright (C) 2008 Martin Willi
|
2018-05-23 14:04:50 +00:00
|
|
|
* HSR Hochschule fuer Technik Rapperswil
|
2008-03-26 10:10:40 +00:00
|
|
|
*
|
|
|
|
* 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 stroke_cred stroke_cred
|
|
|
|
* @{ @ingroup stroke
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef STROKE_CRED_H_
|
|
|
|
#define STROKE_CRED_H_
|
|
|
|
|
2009-08-14 13:01:35 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
|
2008-03-26 10:10:40 +00:00
|
|
|
#include <stroke_msg.h>
|
|
|
|
#include <credentials/credential_set.h>
|
|
|
|
#include <credentials/certificates/certificate.h>
|
2012-10-16 12:54:16 +00:00
|
|
|
#include <collections/linked_list.h>
|
2008-03-26 10:10:40 +00:00
|
|
|
|
2015-08-20 13:29:33 +00:00
|
|
|
#include "stroke_ca.h"
|
|
|
|
|
2008-03-26 10:10:40 +00:00
|
|
|
typedef struct stroke_cred_t stroke_cred_t;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Stroke in-memory credential storage.
|
|
|
|
*/
|
|
|
|
struct stroke_cred_t {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Implements credential_set_t
|
|
|
|
*/
|
|
|
|
credential_set_t set;
|
2009-09-04 11:46:09 +00:00
|
|
|
|
2008-03-26 10:10:40 +00:00
|
|
|
/**
|
|
|
|
* Reread secrets from config files.
|
|
|
|
*
|
|
|
|
* @param msg stroke message
|
2020-02-05 04:30:52 +00:00
|
|
|
* @param prompt I/O channel to prompt for private key passphrase
|
2008-03-26 10:10:40 +00:00
|
|
|
*/
|
2009-08-14 13:01:35 +00:00
|
|
|
void (*reread)(stroke_cred_t *this, stroke_msg_t *msg, FILE *prompt);
|
2009-09-04 11:46:09 +00:00
|
|
|
|
2008-03-26 10:10:40 +00:00
|
|
|
/**
|
2012-04-17 09:14:38 +00:00
|
|
|
* Load a peer certificate and serve it through the credential_set.
|
2008-03-26 10:10:40 +00:00
|
|
|
*
|
|
|
|
* @param filename file to load peer cert from
|
|
|
|
* @return reference to loaded certificate, or NULL
|
|
|
|
*/
|
|
|
|
certificate_t* (*load_peer)(stroke_cred_t *this, char *filename);
|
2009-09-04 11:46:09 +00:00
|
|
|
|
2012-04-29 22:31:42 +00:00
|
|
|
/**
|
|
|
|
* Load a raw public key and serve it through the credential_set.
|
|
|
|
*
|
2013-04-01 14:42:53 +00:00
|
|
|
* @param filename encoding or file to load raw public key from
|
2012-04-29 22:31:42 +00:00
|
|
|
* @param identity identity of the raw public key owner
|
|
|
|
* @return reference to loaded raw public key, or NULL
|
|
|
|
*/
|
2013-04-01 14:42:53 +00:00
|
|
|
certificate_t* (*load_pubkey)(stroke_cred_t *this, char *filename,
|
|
|
|
identification_t *identity);
|
2012-04-29 22:31:42 +00:00
|
|
|
|
2012-04-17 09:14:38 +00:00
|
|
|
/**
|
|
|
|
* Add a shared secret to serve through the credential_set.
|
|
|
|
*
|
|
|
|
* @param shared shared key to add, gets owned
|
|
|
|
* @param owners list of owners (identification_t*), gets owned
|
|
|
|
*/
|
|
|
|
void (*add_shared)(stroke_cred_t *this, shared_key_t *shared,
|
|
|
|
linked_list_t *owners);
|
|
|
|
|
2008-04-17 15:01:57 +00:00
|
|
|
/**
|
|
|
|
* Enable/Disable CRL caching to disk.
|
|
|
|
*
|
|
|
|
* @param enabled TRUE to enable, FALSE to disable
|
|
|
|
*/
|
|
|
|
void (*cachecrl)(stroke_cred_t *this, bool enabled);
|
2009-09-04 11:46:09 +00:00
|
|
|
|
2008-03-26 10:10:40 +00:00
|
|
|
/**
|
2009-08-14 13:01:35 +00:00
|
|
|
* Destroy a stroke_cred instance.
|
|
|
|
*/
|
|
|
|
void (*destroy)(stroke_cred_t *this);
|
2008-03-26 10:10:40 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a stroke_cred instance.
|
|
|
|
*/
|
2015-08-20 13:29:33 +00:00
|
|
|
stroke_cred_t *stroke_cred_create(stroke_ca_t *ca);
|
2008-03-26 10:10:40 +00:00
|
|
|
|
2009-03-24 17:43:01 +00:00
|
|
|
#endif /** STROKE_CRED_H_ @}*/
|