added pts_dh_group_select

This commit is contained in:
Andreas Steffen
2011-11-28 14:39:49 +01:00
parent 542b33c350
commit 3be8995c3e
2 changed files with 52 additions and 5 deletions
+34
View File
@@ -120,6 +120,40 @@ bool pts_update_supported_dh_groups(char *dh_group, pts_dh_group_t *groups)
return FALSE;
}
/**
* Described in header.
*/
pts_dh_group_t pts_dh_group_select(pts_dh_group_t supported_dh_groups,
pts_dh_group_t offered_dh_groups)
{
if ((supported_dh_groups & PTS_DH_GROUP_IKE20) &&
(offered_dh_groups & PTS_DH_GROUP_IKE20))
{
return PTS_DH_GROUP_IKE20;
}
if ((supported_dh_groups & PTS_DH_GROUP_IKE19) &&
(offered_dh_groups & PTS_DH_GROUP_IKE19))
{
return PTS_DH_GROUP_IKE19;
}
if ((supported_dh_groups & PTS_DH_GROUP_IKE14) &&
(offered_dh_groups & PTS_DH_GROUP_IKE14))
{
return PTS_DH_GROUP_IKE14;
}
if ((supported_dh_groups & PTS_DH_GROUP_IKE5) &&
(offered_dh_groups & PTS_DH_GROUP_IKE5))
{
return PTS_DH_GROUP_IKE5;
}
if ((supported_dh_groups & PTS_DH_GROUP_IKE2) &&
(offered_dh_groups & PTS_DH_GROUP_IKE2))
{
return PTS_DH_GROUP_IKE2;
}
return PTS_DH_GROUP_NONE;
}
/**
* Described in header.
*/
+18 -5
View File
@@ -30,10 +30,12 @@ typedef enum pts_dh_group_t pts_dh_group_t;
* PTS Diffie Hellman Group Values
*/
enum pts_dh_group_t {
/** No DH Group */
PTS_DH_GROUP_NONE = 0,
/** IKE Group 2 */
PTS_DH_GROUP_IKE2 = (1<<15),
PTS_DH_GROUP_IKE2 = (1<<15),
/** IKE Group 5 */
PTS_DH_GROUP_IKE5 = (1<<14),
PTS_DH_GROUP_IKE5 = (1<<14),
/** IKE Group 14 */
PTS_DH_GROUP_IKE14 = (1<<13),
/** IKE Group 19 */
@@ -63,17 +65,28 @@ enum pts_dh_group_t {
bool pts_probe_dh_groups(pts_dh_group_t *groups);
/**
* Update supported Diffie Hellman Groups according to configuration
* Update supported Diffie-Hellman groups according to configuration
*
* @param dh_group configured Diffie Hellman Group
* @param dh_group configured Diffie-Hellman group
* @param groups set of available groups
*/
bool pts_update_supported_dh_groups(char *dh_group, pts_dh_group_t *groups);
/**
* Select the strongest supported Diffie-Hellman group
* among a set of offered Diffie-Hellman groups
*
* @param dh_group set of supported DH groups
* @param groups set of offered DH groups
* @return selected DH group
*/
pts_dh_group_t pts_dh_group_select(pts_dh_group_t supported_dh_groups,
pts_dh_group_t offered_dh_groups);
/**
* Convert pts_dh_group_t to diffie_hellman_group_t
*
* @param dh_group PTS Diffie Hellman Group type
* @param dh_group PTS Diffie-Hellman group type
* @return libstrongswan diffie hellman group type
*/
diffie_hellman_group_t pts_dh_group_to_strongswan_dh_group(pts_dh_group_t dh_group);