normalized and extended pts_meas_algo functions

This commit is contained in:
Andreas Steffen
2011-11-28 14:39:50 +01:00
parent f29a36f2a3
commit 111ad5cc39
2 changed files with 77 additions and 7 deletions
+52 -2
View File
@@ -20,7 +20,7 @@
/** /**
* Described in header. * Described in header.
*/ */
bool pts_meas_probe_algorithms(pts_meas_algorithms_t *algorithms) bool pts_meas_algo_probe(pts_meas_algorithms_t *algorithms)
{ {
enumerator_t *enumerator; enumerator_t *enumerator;
hash_algorithm_t hash_alg; hash_algorithm_t hash_alg;
@@ -77,7 +77,57 @@ bool pts_meas_probe_algorithms(pts_meas_algorithms_t *algorithms)
/** /**
* Described in header. * Described in header.
*/ */
hash_algorithm_t pts_meas_to_hash_algorithm(pts_meas_algorithms_t algorithm) bool pts_meas_algo_update(char *hash_alg, pts_meas_algorithms_t *algorithms)
{
if (strcaseeq(hash_alg, "sha384") || strcaseeq(hash_alg, "sha2_384"))
{
/* nothing to update, all algorithms are supported */
return TRUE;
}
if (strcaseeq(hash_alg, "sha256") || strcaseeq(hash_alg, "sha2_256"))
{
/* remove SHA384algorithm */
*algorithms &= ~PTS_MEAS_ALGO_SHA384;
return TRUE;
}
if (strcaseeq(hash_alg, "sha1"))
{
/* remove SHA384 and SHA256 algorithms */
*algorithms &= ~(PTS_MEAS_ALGO_SHA384 | PTS_MEAS_ALGO_SHA256);
return TRUE;
}
DBG1(DBG_PTS, "unknown hash algorithm: %s configured", hash_alg);
return FALSE;
}
/**
* Described in header.
*/
pts_meas_algorithms_t pts_meas_algo_select(pts_meas_algorithms_t supported_algos,
pts_meas_algorithms_t offered_algos)
{
if ((supported_algos & PTS_MEAS_ALGO_SHA384) &&
(offered_algos & PTS_MEAS_ALGO_SHA384))
{
return PTS_MEAS_ALGO_SHA384;
}
if ((supported_algos & PTS_MEAS_ALGO_SHA256) &&
(offered_algos & PTS_MEAS_ALGO_SHA256))
{
return PTS_MEAS_ALGO_SHA256;
}
if ((supported_algos & PTS_MEAS_ALGO_SHA1) &&
(offered_algos & PTS_MEAS_ALGO_SHA1))
{
return PTS_MEAS_ALGO_SHA1;
}
return PTS_MEAS_ALGO_NONE;
}
/**
* Described in header.
*/
hash_algorithm_t pts_meas_algo_to_hash(pts_meas_algorithms_t algorithm)
{ {
switch (algorithm) switch (algorithm)
{ {
+25 -5
View File
@@ -30,9 +30,10 @@ typedef enum pts_meas_algorithms_t pts_meas_algorithms_t;
* PTS Measurement Algorithms * PTS Measurement Algorithms
*/ */
enum pts_meas_algorithms_t { enum pts_meas_algorithms_t {
PTS_MEAS_ALGO_SHA1 = (1<<15), PTS_MEAS_ALGO_NONE = 0,
PTS_MEAS_ALGO_SHA256 = (1<<14), PTS_MEAS_ALGO_SHA1 = (1<<15),
PTS_MEAS_ALGO_SHA384 = (1<<13), PTS_MEAS_ALGO_SHA256 = (1<<14),
PTS_MEAS_ALGO_SHA384 = (1<<13),
}; };
/** /**
@@ -53,7 +54,26 @@ enum pts_meas_algorithms_t {
* @param algorithms set of available algorithms * @param algorithms set of available algorithms
* @return TRUE if mandatory algorithms are available * @return TRUE if mandatory algorithms are available
*/ */
bool pts_meas_probe_algorithms(pts_meas_algorithms_t *algorithms); bool pts_meas_algo_probe(pts_meas_algorithms_t *algorithms);
/**
* Update supported PTS measurement algorithms according to configuration
*
* @param hash_alg configured hash algorithm
* @param algorithms returns set of available PTS measurement algorithms
*/
bool pts_meas_algo_update(char *hash_alg, pts_meas_algorithms_t *algorithms);
/**
* Select the strongest PTS measurement algorithm
* among a set of offered PTS measurement algorithms
*
* @param supported_algos set of supported PTS measurement algorithms
* @param offered_algos set of offered PTS measurements algorithms
* @return selected algorithm
*/
pts_meas_algorithms_t pts_meas_algo_select(pts_meas_algorithms_t supported_algos,
pts_meas_algorithms_t offered_algos);
/** /**
* Convert pts_meas_algorithms_t to hash_algorithm_t * Convert pts_meas_algorithms_t to hash_algorithm_t
@@ -61,6 +81,6 @@ bool pts_meas_probe_algorithms(pts_meas_algorithms_t *algorithms);
* @param algorithm PTS measurement algorithm type * @param algorithm PTS measurement algorithm type
* @return libstrongswan hash algorithm type * @return libstrongswan hash algorithm type
*/ */
hash_algorithm_t pts_meas_to_hash_algorithm(pts_meas_algorithms_t algorithm); hash_algorithm_t pts_meas_algo_to_hash(pts_meas_algorithms_t algorithm);
#endif /** PTS_MEAS_ALGO_H_ @}*/ #endif /** PTS_MEAS_ALGO_H_ @}*/