gnutls_protocol_t version);
int _gnutls_version_is_supported (gnutls_session_t session,
const gnutls_protocol_t version);
-int _gnutls_version_get_major (gnutls_protocol_t ver);
-int _gnutls_version_get_minor (gnutls_protocol_t ver);
-gnutls_protocol_t _gnutls_version_get (int major, int minor);
+void _gnutls_version_to_tls (gnutls_protocol_t ver, uint8_t* major, uint8_t* minor);
+gnutls_protocol_t _gnutls_version_get (uint8_t major, uint8_t minor);
/* Functions for feature checks */
int _gnutls_version_has_selectable_prf (gnutls_protocol_t version);
{
const char *name;
gnutls_protocol_t id; /* gnutls internal version number */
- int major; /* defined by the protocol */
- int minor; /* defined by the protocol */
+ uint8_t major; /* defined by the protocol */
+ uint8_t minor; /* defined by the protocol */
transport_t transport; /* Type of transport, stream or datagram */
- int supported; /* 0 not supported, > 0 is supported */
+ unsigned int supported:1; /* 0 not supported, > 0 is supported */
} gnutls_version_entry;
static const gnutls_version_entry sup_versions[] = {
return supported_protocols;
}
-int
-_gnutls_version_get_minor (gnutls_protocol_t version)
-{
- int ret = -1;
-
- GNUTLS_VERSION_ALG_LOOP (ret = p->minor);
- return ret;
-}
-
/* Returns a version number given the major and minor numbers.
*/
gnutls_protocol_t
-_gnutls_version_get (int major, int minor)
+_gnutls_version_get (uint8_t major, uint8_t minor)
{
int ret = -1;
return ret;
}
-int
-_gnutls_version_get_major (gnutls_protocol_t version)
+void
+_gnutls_version_to_tls (gnutls_protocol_t version, uint8_t* major, uint8_t *minor)
{
- int ret = -1;
-
- GNUTLS_VERSION_ALG_LOOP (ret = p->major);
- return ret;
+ GNUTLS_VERSION_ALG_LOOP (*major = p->major; *minor = p->minor);
}
/* Version Functions */
if (session->internals.rsa_pms_version[0] == 0)
{
- session->key.key.data[0] = _gnutls_version_get_major (ver);
- session->key.key.data[1] = _gnutls_version_get_minor (ver);
+ _gnutls_version_to_tls(ver, &session->key.key.data[0],
+ &session->key.key.data[1]);
}
else
{ /* use the version provided */
*/
static inline int
make_preamble (uint8_t * uint64_data, uint8_t type, unsigned int length,
- uint8_t ver, uint8_t * preamble)
+ gnutls_protocol_t ver, uint8_t * preamble)
{
- uint8_t minor = _gnutls_version_get_minor (ver);
- uint8_t major = _gnutls_version_get_major (ver);
+ uint8_t minor, major;
uint8_t *p = preamble;
uint16_t c_length;
+
+ _gnutls_version_to_tls(ver, &major, &minor);
c_length = _gnutls_conv_uint16 (length);
return GNUTLS_E_INTERNAL_ERROR;
}
- data[pos++] = _gnutls_version_get_major (hver);
- data[pos++] = _gnutls_version_get_minor (hver);
+ _gnutls_version_to_tls(hver, &data[pos], &data[pos+1]);
+ pos+=2;
/* Set the version we advertized as maximum
* (RSA uses it).
}
data = _mbuffer_get_udata_ptr (bufel);
- data[pos++] =
- _gnutls_version_get_major (session->security_parameters.version);
- data[pos++] =
- _gnutls_version_get_minor (session->security_parameters.version);
+ _gnutls_version_to_tls(session->security_parameters.version,
+ &data[pos], &data[pos+1]);
+ pos += 2;
memcpy (&data[pos],
session->security_parameters.server_random, GNUTLS_RANDOM_SIZE);
void
_gnutls_set_adv_version (gnutls_session_t session, gnutls_protocol_t ver)
{
- set_adv_version (session, _gnutls_version_get_major (ver),
- _gnutls_version_get_minor (ver));
+uint8_t major, minor;
+
+ _gnutls_version_to_tls(ver, &major, &minor);
+ set_adv_version (session, major, minor);
}
gnutls_protocol_t
{
lver = gnutls_protocol_get_version (session);
- version[0] = _gnutls_version_get_major (lver);
- version[1] = _gnutls_version_get_minor (lver);
+ _gnutls_version_to_tls(lver, &version[0], &version[1]);
}
else
{