added pts_dh_group_select
This commit is contained in:
@@ -120,6 +120,40 @@ bool pts_update_supported_dh_groups(char *dh_group, pts_dh_group_t *groups)
|
|||||||
return FALSE;
|
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.
|
* Described in header.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -30,10 +30,12 @@ typedef enum pts_dh_group_t pts_dh_group_t;
|
|||||||
* PTS Diffie Hellman Group Values
|
* PTS Diffie Hellman Group Values
|
||||||
*/
|
*/
|
||||||
enum pts_dh_group_t {
|
enum pts_dh_group_t {
|
||||||
|
/** No DH Group */
|
||||||
|
PTS_DH_GROUP_NONE = 0,
|
||||||
/** IKE Group 2 */
|
/** IKE Group 2 */
|
||||||
PTS_DH_GROUP_IKE2 = (1<<15),
|
PTS_DH_GROUP_IKE2 = (1<<15),
|
||||||
/** IKE Group 5 */
|
/** IKE Group 5 */
|
||||||
PTS_DH_GROUP_IKE5 = (1<<14),
|
PTS_DH_GROUP_IKE5 = (1<<14),
|
||||||
/** IKE Group 14 */
|
/** IKE Group 14 */
|
||||||
PTS_DH_GROUP_IKE14 = (1<<13),
|
PTS_DH_GROUP_IKE14 = (1<<13),
|
||||||
/** IKE Group 19 */
|
/** IKE Group 19 */
|
||||||
@@ -63,17 +65,28 @@ enum pts_dh_group_t {
|
|||||||
bool pts_probe_dh_groups(pts_dh_group_t *groups);
|
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
|
* @param groups set of available groups
|
||||||
*/
|
*/
|
||||||
bool pts_update_supported_dh_groups(char *dh_group, pts_dh_group_t *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
|
* 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
|
* @return libstrongswan diffie hellman group type
|
||||||
*/
|
*/
|
||||||
diffie_hellman_group_t pts_dh_group_to_strongswan_dh_group(pts_dh_group_t dh_group);
|
diffie_hellman_group_t pts_dh_group_to_strongswan_dh_group(pts_dh_group_t dh_group);
|
||||||
|
|||||||
Reference in New Issue
Block a user