16d49e1aeSJan Lentfer /*
26d49e1aeSJan Lentfer  * TLSv1 credentials
36d49e1aeSJan Lentfer  * Copyright (c) 2006-2007, Jouni Malinen <j@w1.fi>
46d49e1aeSJan Lentfer  *
53ff40c12SJohn Marino  * This software may be distributed under the terms of the BSD license.
63ff40c12SJohn Marino  * See README for more details.
76d49e1aeSJan Lentfer  */
86d49e1aeSJan Lentfer 
96d49e1aeSJan Lentfer #ifndef TLSV1_CRED_H
106d49e1aeSJan Lentfer #define TLSV1_CRED_H
116d49e1aeSJan Lentfer 
126d49e1aeSJan Lentfer struct tlsv1_credentials {
136d49e1aeSJan Lentfer 	struct x509_certificate *trusted_certs;
146d49e1aeSJan Lentfer 	struct x509_certificate *cert;
156d49e1aeSJan Lentfer 	struct crypto_private_key *key;
166d49e1aeSJan Lentfer 
17*a1157835SDaniel Fojt 	unsigned int cert_probe:1;
18*a1157835SDaniel Fojt 	unsigned int ca_cert_verify:1;
19*a1157835SDaniel Fojt 	unsigned int server_cert_only:1;
20*a1157835SDaniel Fojt 	u8 srv_cert_hash[32];
21*a1157835SDaniel Fojt 
226d49e1aeSJan Lentfer 	/* Diffie-Hellman parameters */
236d49e1aeSJan Lentfer 	u8 *dh_p; /* prime */
246d49e1aeSJan Lentfer 	size_t dh_p_len;
256d49e1aeSJan Lentfer 	u8 *dh_g; /* generator */
266d49e1aeSJan Lentfer 	size_t dh_g_len;
27*a1157835SDaniel Fojt 
28*a1157835SDaniel Fojt 	char *ocsp_stapling_response;
29*a1157835SDaniel Fojt 	char *ocsp_stapling_response_multi;
306d49e1aeSJan Lentfer };
316d49e1aeSJan Lentfer 
326d49e1aeSJan Lentfer 
336d49e1aeSJan Lentfer struct tlsv1_credentials * tlsv1_cred_alloc(void);
346d49e1aeSJan Lentfer void tlsv1_cred_free(struct tlsv1_credentials *cred);
356d49e1aeSJan Lentfer int tlsv1_set_ca_cert(struct tlsv1_credentials *cred, const char *cert,
366d49e1aeSJan Lentfer 		      const u8 *cert_blob, size_t cert_blob_len,
376d49e1aeSJan Lentfer 		      const char *path);
386d49e1aeSJan Lentfer int tlsv1_set_cert(struct tlsv1_credentials *cred, const char *cert,
396d49e1aeSJan Lentfer 		   const u8 *cert_blob, size_t cert_blob_len);
406d49e1aeSJan Lentfer int tlsv1_set_private_key(struct tlsv1_credentials *cred,
416d49e1aeSJan Lentfer 			  const char *private_key,
426d49e1aeSJan Lentfer 			  const char *private_key_passwd,
436d49e1aeSJan Lentfer 			  const u8 *private_key_blob,
446d49e1aeSJan Lentfer 			  size_t private_key_blob_len);
456d49e1aeSJan Lentfer int tlsv1_set_dhparams(struct tlsv1_credentials *cred, const char *dh_file,
466d49e1aeSJan Lentfer 		       const u8 *dh_blob, size_t dh_blob_len);
476d49e1aeSJan Lentfer 
486d49e1aeSJan Lentfer #endif /* TLSV1_CRED_H */
49