return ret;
}
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (data == NULL || data_size == 0) {
gnutls_assert();
return ret;
}
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (data == NULL || data_size == 0) {
gnutls_assert();
ssize_t dsize = data_size;
uint8_t *pdata = data;
gnutls_datum_t sig;
- cert_auth_info_t info = _gnutls_get_auth_info(session);
+ cert_auth_info_t info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
gnutls_pcert_st peer_cert;
gnutls_sign_algorithm_t sign_algo = GNUTLS_SIGN_UNKNOWN;
const version_entry_st *ver = get_version(session);
int sigsize;
gnutls_datum_t signature;
int ret;
- cert_auth_info_t info = _gnutls_get_auth_info(session);
+ cert_auth_info_t info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
ssize_t data_size = _data_size;
gnutls_pcert_st peer_cert;
gnutls_sign_algorithm_t sign_algo = GNUTLS_SIGN_UNKNOWN;
/* copy the username to the auth info structures
*/
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
+ if (info == NULL) {
+ gnutls_assert();
+ return GNUTLS_E_INTERNAL_ERROR;
+ }
if (username.size > MAX_USERNAME_SIZE) {
gnutls_assert();
/* copy the username to the auth info structures
*/
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
+ if (info == NULL) {
+ gnutls_assert();
+ return GNUTLS_E_INTERNAL_ERROR;
+ }
+
if (username.size > MAX_USERNAME_SIZE) {
gnutls_assert();
/* copy the username to the auth info structures
*/
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
+ if (info == NULL) {
+ gnutls_assert();
+ return GNUTLS_E_INTERNAL_ERROR;
+ }
if (username.size > MAX_USERNAME_SIZE) {
gnutls_assert();
/* copy the hint to the auth info structures
*/
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
+ if (info == NULL) {
+ gnutls_assert();
+ return GNUTLS_E_INTERNAL_ERROR;
+ }
if (hint.size > MAX_USERNAME_SIZE) {
gnutls_assert();
/* normal non export case */
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL || info->ncerts == 0) {
gnutls_assert();
/* copy the username to the auth info structures
*/
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
+ if (info == NULL) {
+ gnutls_assert();
+ return GNUTLS_E_INTERNAL_ERROR;
+ }
if (username.size > MAX_USERNAME_SIZE) {
gnutls_assert();
return ret;
}
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_SRP);
+ if (info == NULL)
+ return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
+
username = info->username;
_gnutls_str_cpy(username, MAX_USERNAME_SIZE, priv->username);
data_size = _data_size - ret;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_SRP);
if (info == NULL || info->ncerts == 0) {
gnutls_assert();
/* we need this in order to get peer's certificate */
return retval;
}
-/*-
- * _gnutls_get_auth_info - Returns a pointer to authentication information.
- * @session: is a #gnutls_session_t structure.
- *
- * This function must be called after a successful gnutls_handshake().
- * Returns a pointer to authentication information. That information
- * is data obtained by the handshake protocol, the key exchange algorithm,
- * and the TLS extensions messages.
- *
- * In case of GNUTLS_CRD_ANON returns a type of &anon_(server/client)_auth_info_t;
- * In case of GNUTLS_CRD_CERTIFICATE returns a type of &cert_auth_info_t;
- * In case of GNUTLS_CRD_SRP returns a type of &srp_(server/client)_auth_info_t;
- -*/
-void *_gnutls_get_auth_info(gnutls_session_t session)
-{
- return session->key.auth_info;
-}
-
/*-
* _gnutls_free_auth_info - Frees the auth info structure
* @session: is a #gnutls_session_t structure.
case GNUTLS_CRD_ANON:
{
anon_auth_info_t info =
- _gnutls_get_auth_info(session);
+ _gnutls_get_auth_info(session, GNUTLS_CRD_ANON);
if (info == NULL)
break;
case GNUTLS_CRD_PSK:
{
psk_auth_info_t info =
- _gnutls_get_auth_info(session);
+ _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
if (info == NULL)
break;
{
unsigned int i;
cert_auth_info_t info =
- _gnutls_get_auth_info(session);
+ _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL)
break;
gnutls_credentials_type_t kx, int *err);
const void *_gnutls_get_kx_cred(gnutls_session_t session,
gnutls_kx_algorithm_t algo, int *err);
-void *_gnutls_get_auth_info(gnutls_session_t session);
int _gnutls_auth_info_set(gnutls_session_t session,
gnutls_credentials_type_t type, int size,
int allow_change);
+/*-
+ * _gnutls_get_auth_info - Returns a pointer to authentication information.
+ * @session: is a #gnutls_session_t structure.
+ *
+ * This function must be called after a successful gnutls_handshake().
+ * Returns a pointer to authentication information. That information
+ * is data obtained by the handshake protocol, the key exchange algorithm,
+ * and the TLS extensions messages.
+ *
+ * In case of GNUTLS_CRD_ANON returns a type of &anon_(server/client)_auth_info_t;
+ * In case of GNUTLS_CRD_CERTIFICATE returns a type of &cert_auth_info_t;
+ * In case of GNUTLS_CRD_SRP returns a type of &srp_(server/client)_auth_info_t;
+ -*/
+inline static
+void *_gnutls_get_auth_info(gnutls_session_t session, gnutls_credentials_type_t type)
+{
+ if (type == session->key.auth_info_type)
+ return session->key.auth_info;
+ else
+ return NULL;
+}
+
#endif
CHECK_AUTH(GNUTLS_CRD_CERTIFICATE, GNUTLS_E_INVALID_REQUEST);
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL)
return GNUTLS_E_INVALID_REQUEST;
CHECK_AUTH(GNUTLS_CRD_CERTIFICATE, GNUTLS_E_INVALID_REQUEST);
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL) {
return GNUTLS_E_NO_CERTIFICATE_FOUND;
}
CHECK_AUTH(GNUTLS_CRD_CERTIFICATE, GNUTLS_E_INVALID_REQUEST);
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL) {
return (time_t) - 1;
}
CHECK_AUTH(GNUTLS_CRD_CERTIFICATE, GNUTLS_E_INVALID_REQUEST);
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL) {
return (time_t) - 1;
}
CHECK_AUTH(GNUTLS_CRD_PSK, NULL);
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
if (info == NULL)
return NULL;
CHECK_AUTH(GNUTLS_CRD_PSK, NULL);
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
if (info == NULL)
return NULL;
return ret;
}
- if (_gnutls_get_auth_info(session) != NULL) {
+ if (session->key.auth_info != NULL) {
_gnutls_free_auth_info(session);
}
{
unsigned int i;
int cur_size, ret;
- cert_auth_info_t info = _gnutls_get_auth_info(session);
+ cert_auth_info_t info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
int size_offset;
size_offset = ps->length;
return ret;
}
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL)
return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
static int
pack_srp_auth_info(gnutls_session_t session, gnutls_buffer_st * ps)
{
- srp_server_auth_info_t info = _gnutls_get_auth_info(session);
+ srp_server_auth_info_t info = _gnutls_get_auth_info(session, GNUTLS_CRD_SRP);
int len, ret;
int size_offset;
size_t cur_size;
return ret;
}
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_SRP);
if (info == NULL)
return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
pack_anon_auth_info(gnutls_session_t session, gnutls_buffer_st * ps)
{
int cur_size, ret;
- anon_auth_info_t info = _gnutls_get_auth_info(session);
+ anon_auth_info_t info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON);
int size_offset;
size_offset = ps->length;
return ret;
}
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON);
if (info == NULL)
return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
int size_offset;
size_t cur_size;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
if (info == NULL)
return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
return ret;
}
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
if (info == NULL)
return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
CHECK_AUTH(GNUTLS_CRD_SRP, NULL);
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_SRP);
if (info == NULL)
return NULL;
return info->username;
case GNUTLS_CRD_ANON:
{
anon_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
case GNUTLS_CRD_PSK:
{
psk_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
{
cert_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
case GNUTLS_CRD_ANON:
{
anon_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
info->dh.secret_bits = bits;
case GNUTLS_CRD_PSK:
{
psk_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
info->dh.secret_bits = bits;
{
cert_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
case GNUTLS_CRD_ANON:
{
anon_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
case GNUTLS_CRD_PSK:
{
psk_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
{
cert_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
switch (gnutls_auth_get_type(session)) {
case GNUTLS_CRD_ANON:
- anon_info = _gnutls_get_auth_info(session);
+ anon_info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON);
if (anon_info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
dh = &anon_info->dh;
break;
case GNUTLS_CRD_PSK:
- psk_info = _gnutls_get_auth_info(session);
+ psk_info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
if (psk_info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
dh = &psk_info->dh;
break;
case GNUTLS_CRD_CERTIFICATE:
- cert_info = _gnutls_get_auth_info(session);
+ cert_info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (cert_info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
dh = &cert_info->dh;
switch (gnutls_auth_get_type(session)) {
case GNUTLS_CRD_ANON:
{
- anon_info = _gnutls_get_auth_info(session);
+ anon_info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON);
if (anon_info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
dh = &anon_info->dh;
}
case GNUTLS_CRD_PSK:
{
- psk_info = _gnutls_get_auth_info(session);
+ psk_info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
if (psk_info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
dh = &psk_info->dh;
case GNUTLS_CRD_CERTIFICATE:
{
- cert_info = _gnutls_get_auth_info(session);
+ cert_info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (cert_info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
dh = &cert_info->dh;
{
anon_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
return info->dh.secret_bits;
{
psk_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
return info->dh.secret_bits;
{
cert_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
{
anon_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
dh = &info->dh;
{
psk_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
dh = &info->dh;
{
cert_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
{
anon_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_ANON);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
{
psk_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_PSK);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
{
cert_auth_info_t info;
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
CHECK_AUTH(GNUTLS_CRD_CERTIFICATE, NULL);
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL)
return NULL;
CHECK_AUTH(GNUTLS_CRD_CERTIFICATE, GNUTLS_E_INVALID_REQUEST);
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL)
return GNUTLS_E_INVALID_REQUEST;
CHECK_AUTH(GNUTLS_CRD_CERTIFICATE, GNUTLS_E_INVALID_REQUEST);
- info = _gnutls_get_auth_info(session);
+ info = _gnutls_get_auth_info(session, GNUTLS_CRD_CERTIFICATE);
if (info == NULL) {
gnutls_assert();
return GNUTLS_E_INVALID_REQUEST;