- if (BIO_puts(bp,"\n Krb5 Principal: ") <= 0) goto err;
- if (x->krb5_client_princ_len == 0)
- {
- if (BIO_puts(bp,"None") <= 0) goto err;
- }
- else
- for (i=0; i<x->krb5_client_princ_len; i++)
- {
- if (BIO_printf(bp,"%02X",x->krb5_client_princ[i]) <= 0) goto err;
- }
-#endif /* OPENSSL_NO_KRB5 */
- if (x->compress_meth != 0)
- {
- SSL_COMP *comp;
-
- ssl_cipher_get_evp(x,NULL,NULL,&comp);
- if (comp == NULL)
- {
- if (BIO_printf(bp,"\n Compression: %d",x->compress_meth) <= 0) goto err;
- }
- else
- {
- if (BIO_printf(bp,"\n Compression: %d (%s)", comp->id,comp->method->name) <= 0) goto err;
- }
- }
- if (x->time != 0L)
- {
- if (BIO_printf(bp, "\n Start Time: %ld",x->time) <= 0) goto err;
- }
- if (x->timeout != 0L)
- {
- if (BIO_printf(bp, "\n Timeout : %ld (sec)",x->timeout) <= 0) goto err;
- }
- if (BIO_puts(bp,"\n") <= 0) goto err;
-
- if (BIO_puts(bp, " Verify return code: ") <= 0) goto err;
- if (BIO_printf(bp, "%ld (%s)\n", x->verify_result,
- X509_verify_cert_error_string(x->verify_result)) <= 0) goto err;
-
- return(1);
-err:
- return(0);
- }
+ if (BIO_puts(bp, "\n Krb5 Principal: ") <= 0)
+ goto err;
+ if (x->krb5_client_princ_len == 0) {
+ if (BIO_puts(bp, "None") <= 0)
+ goto err;
+ } else
+ for (i = 0; i < x->krb5_client_princ_len; i++) {
+ if (BIO_printf(bp, "%02X", x->krb5_client_princ[i]) <= 0)
+ goto err;
+ }
+#endif /* OPENSSL_NO_KRB5 */
+#ifndef OPENSSL_NO_PSK
+ if (BIO_puts(bp, "\n PSK identity: ") <= 0)
+ goto err;
+ if (BIO_printf(bp, "%s", x->psk_identity ? x->psk_identity : "None") <= 0)
+ goto err;
+ if (BIO_puts(bp, "\n PSK identity hint: ") <= 0)
+ goto err;
+ if (BIO_printf
+ (bp, "%s", x->psk_identity_hint ? x->psk_identity_hint : "None") <= 0)
+ goto err;
+#endif
+#ifndef OPENSSL_NO_SRP
+ if (BIO_puts(bp, "\n SRP username: ") <= 0)
+ goto err;
+ if (BIO_printf(bp, "%s", x->srp_username ? x->srp_username : "None") <= 0)
+ goto err;
+#endif
+#ifndef OPENSSL_NO_TLSEXT
+ if (x->tlsext_tick_lifetime_hint) {
+ if (BIO_printf(bp,
+ "\n TLS session ticket lifetime hint: %ld (seconds)",
+ x->tlsext_tick_lifetime_hint) <= 0)
+ goto err;
+ }
+ if (x->tlsext_tick) {
+ if (BIO_puts(bp, "\n TLS session ticket:\n") <= 0)
+ goto err;
+ if (BIO_dump_indent(bp, (char *)x->tlsext_tick, x->tlsext_ticklen, 4)
+ <= 0)
+ goto err;
+ }
+#endif
+
+#ifndef OPENSSL_NO_COMP
+ if (x->compress_meth != 0) {
+ SSL_COMP *comp = NULL;
+
+ if (!ssl_cipher_get_evp(x, NULL, NULL, NULL, NULL, &comp, 0))
+ goto err;
+ if (comp == NULL) {
+ if (BIO_printf(bp, "\n Compression: %d", x->compress_meth) <=
+ 0)
+ goto err;
+ } else {
+ if (BIO_printf
+ (bp, "\n Compression: %d (%s)", comp->id,
+ comp->method->name) <= 0)
+ goto err;
+ }
+ }
+#endif
+ if (x->time != 0L) {
+ if (BIO_printf(bp, "\n Start Time: %ld", x->time) <= 0)
+ goto err;
+ }
+ if (x->timeout != 0L) {
+ if (BIO_printf(bp, "\n Timeout : %ld (sec)", x->timeout) <= 0)
+ goto err;
+ }
+ if (BIO_puts(bp, "\n") <= 0)
+ goto err;
+
+ if (BIO_puts(bp, " Verify return code: ") <= 0)
+ goto err;
+ if (BIO_printf(bp, "%ld (%s)\n", x->verify_result,
+ X509_verify_cert_error_string(x->verify_result)) <= 0)
+ goto err;
+
+ if (BIO_printf(bp, " Extended master secret: %s\n",
+ x->flags & SSL_SESS_FLAG_EXTMS ? "yes" : "no") <= 0)
+ goto err;
+
+ return (1);
+ err:
+ return (0);
+}
+
+/*
+ * print session id and master key in NSS keylog format (RSA
+ * Session-ID:<session id> Master-Key:<master key>)
+ */
+int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x)
+{
+ unsigned int i;
+
+ if (x == NULL)
+ goto err;
+ if (x->session_id_length == 0 || x->master_key_length == 0)
+ goto err;
+
+ /*
+ * the RSA prefix is required by the format's definition although there's
+ * nothing RSA-specifc in the output, therefore, we don't have to check if
+ * the cipher suite is based on RSA
+ */
+ if (BIO_puts(bp, "RSA ") <= 0)
+ goto err;
+
+ if (BIO_puts(bp, "Session-ID:") <= 0)
+ goto err;
+ for (i = 0; i < x->session_id_length; i++) {
+ if (BIO_printf(bp, "%02X", x->session_id[i]) <= 0)
+ goto err;
+ }
+ if (BIO_puts(bp, " Master-Key:") <= 0)
+ goto err;
+ for (i = 0; i < (unsigned int)x->master_key_length; i++) {
+ if (BIO_printf(bp, "%02X", x->master_key[i]) <= 0)
+ goto err;
+ }
+ if (BIO_puts(bp, "\n") <= 0)
+ goto err;