Annotation of embedaddon/strongswan/src/libimcv/pts/pts_meas_algo.h, revision 1.1
1.1 ! misho 1: /*
! 2: * Copyright (C) 2011 Sansar Choinyambuu
! 3: * Copyright (C) 2011-2014 Andreas Steffen
! 4: * HSR Hochschule fuer Technik Rapperswil
! 5: *
! 6: * This program is free software; you can redistribute it and/or modify it
! 7: * under the terms of the GNU General Public License as published by the
! 8: * Free Software Foundation; either version 2 of the License, or (at your
! 9: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
! 10: *
! 11: * This program is distributed in the hope that it will be useful, but
! 12: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
! 13: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
! 14: * for more details.
! 15: */
! 16:
! 17: /**
! 18: * @defgroup pts_meas_algo pts_meas_algo
! 19: * @{ @ingroup pts
! 20: */
! 21:
! 22: #ifndef PTS_MEAS_ALGO_H_
! 23: #define PTS_MEAS_ALGO_H_
! 24:
! 25: #include <library.h>
! 26: #include <crypto/hashers/hasher.h>
! 27:
! 28: typedef enum pts_meas_algorithms_t pts_meas_algorithms_t;
! 29:
! 30: /**
! 31: * PTS Measurement Algorithms
! 32: */
! 33: enum pts_meas_algorithms_t {
! 34: PTS_MEAS_ALGO_NONE = 0,
! 35: PTS_MEAS_ALGO_SHA384 = (1<<13),
! 36: PTS_MEAS_ALGO_SHA256 = (1<<14),
! 37: PTS_MEAS_ALGO_SHA1 = (1<<15)
! 38: };
! 39:
! 40: /**
! 41: * enum name for pts_meas_algorithms_t.
! 42: */
! 43: extern enum_name_t *pts_meas_algorithm_names;
! 44:
! 45: /**
! 46: * Diffie-Hellman Hash Algorithm Values
! 47: * see section 3.8.5 of PTS Protocol: Binding to TNC IF-M Specification
! 48: *
! 49: * 1
! 50: * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
! 51: * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! 52: * |1|2|3|R|R|R|R|R|R|R|R|R|R|R|R|R|
! 53: * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! 54: *
! 55: */
! 56:
! 57: /**
! 58: * Probe available PTS measurement algorithms
! 59: *
! 60: * @param algorithms set of available algorithms
! 61: * @return TRUE if mandatory algorithms are available
! 62: */
! 63: bool pts_meas_algo_probe(pts_meas_algorithms_t *algorithms);
! 64:
! 65: /**
! 66: * Update supported PTS measurement algorithms according to configuration
! 67: *
! 68: * sha1 : PTS_MEAS_ALGO_SHA1
! 69: * sha256: PTS_MEAS_ALGO_SHA1 | PTS_MEAS_ALGO_SHA256
! 70: * sha384: PTS_MEAS_ALGO_SHA1 | PTS_MEAS_ALGO_SHA256 | PTS_MEAS_ALGO_SHA384
! 71: *
! 72: * The PTS-IMC is expected to select the strongest supported algorithm
! 73: *
! 74: * @param hash_alg configured hash algorithm
! 75: * @param algorithms returns set of available PTS measurement algorithms
! 76: */
! 77: bool pts_meas_algo_update(char *hash_alg, pts_meas_algorithms_t *algorithms);
! 78:
! 79: /**
! 80: * Select the strongest PTS measurement algorithm
! 81: * among a set of offered PTS measurement algorithms
! 82: *
! 83: * @param supported_algos set of supported PTS measurement algorithms
! 84: * @param offered_algos set of offered PTS measurements algorithms
! 85: * @return selected algorithm
! 86: */
! 87: pts_meas_algorithms_t pts_meas_algo_select(pts_meas_algorithms_t supported_algos,
! 88: pts_meas_algorithms_t offered_algos);
! 89:
! 90: /**
! 91: * Convert pts_meas_algorithms_t to hash_algorithm_t
! 92: *
! 93: * @param algorithm PTS measurement algorithm type
! 94: * @return libstrongswan hash algorithm type
! 95: */
! 96: hash_algorithm_t pts_meas_algo_to_hash(pts_meas_algorithms_t algorithm);
! 97:
! 98: /**
! 99: * Convert hash_algorithm_t to pts_meas_algorithms_t
! 100: *
! 101: * @param algorithm PTS measurement algorithm type
! 102: * @return libstrongswan hash algorithm type
! 103: */
! 104: pts_meas_algorithms_t pts_meas_algo_from_hash(hash_algorithm_t algorithm);
! 105:
! 106: /**
! 107: * Return the hash size of a pts_meas_algorithm
! 108: *
! 109: * @param algorithm PTS measurement algorithm type
! 110: * @return hash size in bytes
! 111: */
! 112: size_t pts_meas_algo_hash_size(pts_meas_algorithms_t algorithm);
! 113:
! 114: #endif /** PTS_MEAS_ALGO_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>