1526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/*
2526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * TLSv1 credentials
3526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Copyright (c) 2006-2007, Jouni Malinen <j@w1.fi>
4526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
5526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * This program is free software; you can redistribute it and/or modify
6526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * it under the terms of the GNU General Public License version 2 as
7526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * published by the Free Software Foundation.
8526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
9526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Alternatively, this software may be distributed under the terms of BSD
10526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * license.
11526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
12526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * See README and COPYING for more details.
13526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */
14526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
15526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#ifndef TLSV1_CRED_H
16526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define TLSV1_CRED_H
17526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
18526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct tlsv1_credentials {
19526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	struct x509_certificate *trusted_certs;
20526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	struct x509_certificate *cert;
21526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	struct crypto_private_key *key;
22526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
23526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	/* Diffie-Hellman parameters */
24526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	u8 *dh_p; /* prime */
25526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	size_t dh_p_len;
26526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	u8 *dh_g; /* generator */
27526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt	size_t dh_g_len;
28526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt};
29526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
30526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
31526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct tlsv1_credentials * tlsv1_cred_alloc(void);
32526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtvoid tlsv1_cred_free(struct tlsv1_credentials *cred);
33526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtint tlsv1_set_ca_cert(struct tlsv1_credentials *cred, const char *cert,
34526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		      const u8 *cert_blob, size_t cert_blob_len,
35526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		      const char *path);
36526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtint tlsv1_set_cert(struct tlsv1_credentials *cred, const char *cert,
37526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		   const u8 *cert_blob, size_t cert_blob_len);
38526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtint tlsv1_set_private_key(struct tlsv1_credentials *cred,
39526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			  const char *private_key,
40526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			  const char *private_key_passwd,
41526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			  const u8 *private_key_blob,
42526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt			  size_t private_key_blob_len);
43526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtint tlsv1_set_dhparams(struct tlsv1_credentials *cred, const char *dh_file,
44526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt		       const u8 *dh_blob, size_t dh_blob_len);
45526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
46526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#endif /* TLSV1_CRED_H */
47