for ac_func in \
SSL_get_client_random \
SSL_get_server_random \
+ SSL_SESSION_get_master_key \
HMAC_CTX_new \
HMAC_CTX_free \
ASN1_STRING_get0_data \
AC_CHECK_FUNCS( \
SSL_get_client_random \
SSL_get_server_random \
+ SSL_SESSION_get_master_key \
HMAC_CTX_new \
HMAC_CTX_free \
ASN1_STRING_get0_data \
/* Define to 1 if you have the `SSL_get_server_random' function. */
#undef HAVE_SSL_GET_SERVER_RANDOM
+/* Define to 1 if you have the `SSL_SESSION_get_master_key' function. */
+#undef HAVE_SSL_SESSION_GET_MASTER_KEY
+
/* Define to 1 if you have the <stdbool.h> header file. */
#undef HAVE_STDBOOL_H
# endif
#endif
+#ifdef HAVE_OPENSSL_SSL_H
+# include <openssl/ssl.h>
+#endif
+
#ifdef HAVE_OPENSSL_HMAC_H
# include <openssl/hmac.h>
#endif
}
#endif
+#ifdef HAVE_OPENSSL_SSL_H
+# ifndef HAVE_SSL_GET_CLIENT_RANDOM
+size_t SSL_get_client_random(const SSL *s, unsigned char *out, size_t outlen);
+# endif
+# ifndef HAVE_SSL_GET_SERVER_RANDOM
+size_t SSL_get_server_random(const SSL *s, unsigned char *out, size_t outlen);
+# endif
+# ifndef HAVE_SSL_SESSION_GET_MASTER_KEY
+size_t SSL_SESSION_get_master_key(const SSL_SESSION *s,
+ unsigned char *out, size_t outlen);
+# endif
+#endif
+
/*
* Not really missing, but may be submitted as patches
* to the talloc project at some point in the future.
# endif
#endif
+#ifdef HAVE_OPENSSL_SSL_H
+# ifndef HAVE_SSL_GET_CLIENT_RANDOM
+size_t SSL_get_client_random(const SSL *s, unsigned char *out, size_t outlen)
+{
+ if (!outlen) return sizeof(s->s3->client_random);
+
+ if (outlen > sizeof(s->s3->client_random)) outlen = sizeof(s->s3->client_random);
+
+ memcpy(out, s->s3->client_random, outlen);
+ return outlen;
+}
+# endif
+# ifndef HAVE_SSL_GET_SERVER_RANDOM
+size_t SSL_get_server_random(const SSL *s, unsigned char *out, size_t outlen)
+{
+ if (!outlen) return sizeof(s->s3->server_random);
+
+ if (outlen > sizeof(s->s3->server_random)) outlen = sizeof(s->s3->server_random);
+
+ memcpy(out, s->s3->server_random, outlen);
+ return outlen;
+}
+# endif
+# ifndef HAVE_SSL_SESSION_GET_MASTER_KEY
+size_t SSL_SESSION_get_master_key(const SSL_SESSION *s,
+ unsigned char *out, size_t outlen)
+{
+ if (!outlen) return s->master_key_length;
+
+ if (outlen > (size_t)s->master_key_length) outlen = (size_t)s->master_key_length;
+
+ memcpy(out, s->master_key, outlen);
+ return outlen;
+}
+# endif
+#endif
+
/** Call talloc strdup, setting the type on the new chunk correctly
*
* For some bizarre reason the talloc string functions don't set the
int eaptls_request(EAP_DS *eap_ds, tls_session_t *ssn) CC_HINT(nonnull);
-/* MPPE key generation */
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
-size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, size_t outlen);
-size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, size_t outlen);
-#endif
-
void T_PRF(unsigned char const *secret, unsigned int secret_len, char const *prf_label, unsigned char const *seed, unsigned int seed_len, unsigned char *out, unsigned int out_len) CC_HINT(nonnull(1,3,6));
void eaptls_gen_mppe_keys(REQUEST *request, SSL *s, char const *prf_label);
void eapttls_gen_challenge(SSL *s, uint8_t *buffer, size_t size);
#include <openssl/hmac.h>
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
-/*
- * OpenSSL compatibility, to avoid ifdef's through the rest of the code.
- */
-size_t SSL_get_client_random(const SSL *s, unsigned char *out, size_t outlen)
-{
- if (!outlen) return sizeof(s->s3->client_random);
-
- if (outlen > sizeof(s->s3->client_random)) outlen = sizeof(s->s3->client_random);
-
- memcpy(out, s->s3->client_random, outlen);
- return outlen;
-}
-
-size_t SSL_get_server_random(const SSL *s, unsigned char *out, size_t outlen)
-{
- if (!outlen) return sizeof(s->s3->server_random);
-
- if (outlen > sizeof(s->s3->server_random)) outlen = sizeof(s->s3->server_random);
-
- memcpy(out, s->s3->server_random, outlen);
- return outlen;
-}
-
-static size_t SSL_SESSION_get_master_key(const SSL_SESSION *s, unsigned char *out, size_t outlen)
-{
- if (!outlen) return s->master_key_length;
-
- if (outlen > (size_t)s->master_key_length) outlen = (size_t)s->master_key_length;
-
- memcpy(out, s->master_key, outlen);
- return outlen;
-}
-#endif
-
/*
* TLS PRF from RFC 2246
*/