summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_reader.erl6
-rw-r--r--src/rabbit_ssl.erl72
-rw-r--r--src/rabbit_types.erl4
3 files changed, 43 insertions, 39 deletions
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl
index 866442b74e..4d9dc927c9 100644
--- a/src/rabbit_reader.erl
+++ b/src/rabbit_reader.erl
@@ -819,11 +819,11 @@ i(peer_address, #v1{sock = Sock}) ->
{ok, {A, _}} = rabbit_net:peername(Sock),
A;
i(ssl_issuer, #v1{sock = Sock}) ->
- rabbit_ssl:ssl_info(fun rabbit_ssl:ssl_issuer/1, Sock);
+ rabbit_ssl:ssl_issuer(Sock);
i(ssl_subject, #v1{sock = Sock}) ->
- rabbit_ssl:ssl_info(fun rabbit_ssl:ssl_subject/1, Sock);
+ rabbit_ssl:ssl_subject(Sock);
i(ssl_validity, #v1{sock = Sock}) ->
- rabbit_ssl:ssl_info(fun rabbit_ssl:ssl_validity/1, Sock);
+ rabbit_ssl:ssl_validity(Sock);
i(peer_port, #v1{sock = Sock}) ->
{ok, {_, P}} = rabbit_net:peername(Sock),
P;
diff --git a/src/rabbit_ssl.erl b/src/rabbit_ssl.erl
index d9260d7b33..4db1bbc138 100644
--- a/src/rabbit_ssl.erl
+++ b/src/rabbit_ssl.erl
@@ -31,26 +31,26 @@
-module(rabbit_ssl).
+-include("rabbit.hrl").
+
-include_lib("public_key/include/public_key.hrl").
-include_lib("ssl/src/ssl_int.hrl").
--export([ssl_issuer/1, ssl_subject/1, ssl_validity/1, ssl_info/2]).
+-export([ssl_issuer/1, ssl_subject/1, ssl_validity/1]).
--export_type([certificate/0]).
+-export_type([certificate/0, ssl_socket/0]).
%%--------------------------------------------------------------------------
-ifdef(use_specs).
+-type(ssl_socket() :: #ssl_socket{}).
-type(certificate() :: #'OTPCertificate'{}).
+-type(a_socket() :: rabbit_networking:socket() | ssl_socket()).
--type(ssl_info_fun() :: fun((certificate()) -> string())).
-
--spec(ssl_info/2 :: (ssl_info_fun(), #'sslsocket'{}) -> any()).
-
--spec(ssl_issuer/1 :: (certificate()) -> string()).
--spec(ssl_subject/1 :: (certificate()) -> string()).
--spec(ssl_validity/1 :: (certificate()) -> string()).
+-spec(ssl_issuer/1 :: (a_socket()) -> string()).
+-spec(ssl_subject/1 :: (a_socket()) -> string()).
+-spec(ssl_validity/1 :: (a_socket()) -> string()).
-endif. %% use_specs
@@ -59,6 +59,36 @@
%% High-level functions used by reader
%%--------------------------------------------------------------------------
+%% Return a string describing the certificate's issuer.
+ssl_issuer(Sock) ->
+ ssl_info(fun(#'OTPCertificate' {
+ tbsCertificate = #'OTPTBSCertificate' {
+ issuer = Issuer }}) ->
+ format_ssl_subject(extract_ssl_values(Issuer))
+ end, Sock).
+
+%% Return a string describing the certificate's subject, as per RFC4514.
+ssl_subject(Sock) ->
+ ssl_info(fun(#'OTPCertificate' {
+ tbsCertificate = #'OTPTBSCertificate' {
+ subject = Subject }}) ->
+ format_ssl_subject(extract_ssl_values(Subject))
+ end, Sock).
+
+%% Return a string describing the certificate's validity.
+ssl_validity(Sock) ->
+ ssl_info(fun(#'OTPCertificate' {
+ tbsCertificate = #'OTPTBSCertificate' {
+ validity = Validity }}) ->
+ case extract_ssl_values(Validity) of
+ {'Validity', Start, End} ->
+ io_lib:format("~s to ~s", [format_ssl_value(Start),
+ format_ssl_value(End)]);
+ V ->
+ io_lib:format("~p", [V])
+ end
+ end, Sock).
+
%% Wrapper for applying a function to a socket's certificate.
ssl_info(F, Sock) ->
case rabbit_net:peercert(Sock) of
@@ -83,30 +113,6 @@ ssl_info(F, Sock) ->
end
end.
-%% Return a string describing the certificate's issuer.
-ssl_issuer(#'OTPCertificate' {
- tbsCertificate = #'OTPTBSCertificate' {
- issuer = Issuer }}) ->
- format_ssl_subject(extract_ssl_values(Issuer)).
-
-%% Return a string describing the certificate's subject, as per RFC4514.
-ssl_subject(#'OTPCertificate' {
- tbsCertificate = #'OTPTBSCertificate' {
- subject = Subject }}) ->
- format_ssl_subject(extract_ssl_values(Subject)).
-
-%% Return a string describing the certificate's validity.
-ssl_validity(#'OTPCertificate' {
- tbsCertificate = #'OTPTBSCertificate' {
- validity = Validity }}) ->
- case extract_ssl_values(Validity) of
- {'Validity', Start, End} ->
- io_lib:format("~s to ~s", [format_ssl_value(Start),
- format_ssl_value(End)]);
- V ->
- io_lib:format("~p", [V])
- end.
-
%%--------------------------------------------------------------------------
%% Functions for extracting information from OTPCertificates
diff --git a/src/rabbit_types.erl b/src/rabbit_types.erl
index 9dfd33bd87..35b08ae99f 100644
--- a/src/rabbit_types.erl
+++ b/src/rabbit_types.erl
@@ -38,7 +38,7 @@
-export_type([txn/0, maybe/1, info/0, info_key/0, message/0, basic_message/0,
delivery/0, content/0, decoded_content/0, undecoded_content/0,
unencoded_content/0, encoded_content/0, vhost/0, ctag/0,
- amqp_error/0, r/1, r2/2, r3/3, ssl_socket/0, listener/0,
+ amqp_error/0, r/1, r2/2, r3/3, listener/0,
binding/0, amqqueue/0, exchange/0, connection/0, protocol/0,
user/0, ok/1, error/1, ok_or_error/1, ok_or_error2/2,
ok_pid_or_error/0, channel_exit/0, connection_exit/0]).
@@ -107,8 +107,6 @@
kind :: Kind,
name :: Name}).
--type(ssl_socket() :: #ssl_socket{}).
-
-type(listener() ::
#listener{node :: node(),
protocol :: atom(),