/*
 * $Id: tlsreqcnfs.h,v 1.9 2007/06/18 04:40:07 ca Exp $
 */

#ifndef SM_TLSREQCNFS_H
#define SM_TLSREQCNFS_H 1

#include "sm/generic.h"
#include "sm/types.h"
#include "sm/sm-conf.h"
#include "sm/mta.h"
#include "sm/cnf.h"

#if SM_TLSREQCNFDEF
#define EXTERN
#else
#define EXTERN extern
#endif

EXTERN
sm_conf_definition_T const
tlsreq_flag_names[]
#if SM_TLSREQCNFDEF
=
{
{ SM_CONF_DEF_MAGIC, "verified", sm_conf_type_choice_value,
	TLSREQ_FL_VRFD,
	0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "encrypted",		sm_conf_type_choice_value,
	TLSREQ_FL_ENCR,
	0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },

/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0)}
}
#endif /* SM_TLSREQCNFDEF */
;

EXTERN
sm_conf_definition_T const
tlsreq_violation[]
#if SM_TLSREQCNFDEF
=
{
{ SM_CONF_DEF_MAGIC, "permfail",		sm_conf_type_choice_value,
	TLSREQ_VIOL_PERM,
	0, NULL, 0, NULL, NULL, NULL,
	"perm fail connection on requirement violation"
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "tempfail",		sm_conf_type_choice_value,
	TLSREQ_VIOL_TEMP,
	0, NULL, 0, NULL, NULL, NULL,
	"temp fail connection on requirement violation"
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },
{ SM_CONF_DEF_MAGIC, "abort",		sm_conf_type_choice_value,
	TLSREQ_VIOL_421,
	0, NULL, 0, NULL, NULL, NULL,
	"abort connection on requirement violation"
	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0) },

/* Sentinel */
{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET	SM_LC_SET_MAGIC(0)}
}
#endif /* SM_TLSREQCNFDEF */
;


#define TLSREQ_DEFS(strct, sn)	\
{ SM_CONF_DEF_MAGIC, "common_name",	sm_conf_type_string,	\
	offsetof(strct, sn##_common_name),	0,	\
	NULL,	\
	0,	NULL,	NULL,	NULL,	\
	"Common name"	\
	SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },	\
{ SM_CONF_DEF_MAGIC, "cert_subject",	sm_conf_type_string,	\
	offsetof(strct, sn##_cert_subject),	0,	\
	NULL,	\
	0,	NULL,	NULL,	NULL,	\
	"CERT subject"	\
	SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },	\
{ SM_CONF_DEF_MAGIC, "cert_issuer",	sm_conf_type_string,	\
	offsetof(strct, sn##_cert_issuer),	0,	\
	NULL,	\
	0,	NULL,	NULL,	NULL,	\
	"CERT issuer"	\
	SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },	\
{ SM_CONF_DEF_MAGIC, "min_cipher_bits",		sm_conf_type_u32,	\
	offsetof(strct, sn##_min_cipher_bits),	sizeof(uint),	\
	NULL, 0, NULL, NULL, NULL,	\
	"minimum cipher bits"	\
	SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },	\
{ SM_CONF_DEF_MAGIC, "cipher_bits_min",		sm_conf_type_u32,	\
	offsetof(strct, sn##_min_cipher_bits),	sizeof(uint),	\
	NULL, SM_CONF_FLAG_DPRCD, NULL, NULL, NULL,	\
	"minimum cipher bits (use min_cipher_bits)"	\
	SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },	\
{ SM_CONF_DEF_MAGIC, "flags",		sm_conf_type_choice,	\
	offsetof(strct, sn##_flags),	sizeof(uint),	\
	NULL,	SM_CONF_FLAG_MULTIPLE, tlsreq_flag_names,	\
	NULL, NULL, NULL	\
	SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },	\
{ SM_CONF_DEF_MAGIC, "requirements_violation",		sm_conf_type_choice,	\
	offsetof(strct, sn##_viol),	sizeof(uint),	\
	"abort",	\
	SM_CONF_FLAG_KEEP_DEFAULT,	\
	tlsreq_violation,	\
	NULL,	NULL,	\
	"how to treat TLS requirements violation"	\
	SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)	}

#define TLSREQ_STRUCTS(sn)			\
	const char	*sn##_common_name;	\
	const char	*sn##_cert_subject;	\
	const char	*sn##_cert_issuer;	\
	uint		 sn##_flags;	\
	uint		 sn##_min_cipher_bits;	\
	uint		 sn##_viol;

#undef EXTERN

#endif /* SM_TLSREQCNFS_H */


syntax highlighted by Code2HTML, v. 0.9.1