aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ssl/src/ssl_alert.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ssl/src/ssl_alert.erl')
-rw-r--r--lib/ssl/src/ssl_alert.erl107
1 files changed, 107 insertions, 0 deletions
diff --git a/lib/ssl/src/ssl_alert.erl b/lib/ssl/src/ssl_alert.erl
new file mode 100644
index 0000000000..d3f9c833f1
--- /dev/null
+++ b/lib/ssl/src/ssl_alert.erl
@@ -0,0 +1,107 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2007-2009. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+
+%%
+%%----------------------------------------------------------------------
+%% Purpose: Handles an ssl connection, e.i. both the setup
+%% e.i. SSL-Handshake, SSL-Alert and SSL-Cipher protocols and delivering
+%% data to the application. All data on the connectinon is received and
+%% sent according to the SSL-record protocol.
+%% %%----------------------------------------------------------------------
+
+-module(ssl_alert).
+
+-include("ssl_alert.hrl").
+-include("ssl_record.hrl").
+
+-export([alert_txt/1, reason_code/2]).
+
+reason_code(#alert{description = ?CLOSE_NOTIFY}, _) ->
+ closed;
+reason_code(#alert{description = ?HANDSHAKE_FAILURE}, client) ->
+ esslconnect;
+reason_code(#alert{description = ?HANDSHAKE_FAILURE}, server) ->
+ esslaccept;
+reason_code(#alert{description = ?CERTIFICATE_EXPIRED}, _) ->
+ epeercertexpired;
+reason_code(#alert{level = ?FATAL}, _) ->
+ esslerrssl;
+reason_code(#alert{description = Description}, _) ->
+ description_txt(Description).
+
+alert_txt(#alert{level = Level, description = Description, where = {Mod,Line}}) ->
+ Mod ++ ":" ++ integer_to_list(Line) ++ ":" ++
+ level_txt(Level) ++" "++ description_txt(Description).
+
+level_txt(?WARNING) ->
+ "Warning:";
+level_txt(?FATAL) ->
+ "Fatal error:".
+
+description_txt(?CLOSE_NOTIFY) ->
+ "close_notify";
+description_txt(?UNEXPECTED_MESSAGE) ->
+ "unexpected_message";
+description_txt(?BAD_RECORD_MAC) ->
+ "bad_record_mac";
+description_txt(?DECRYPTION_FAILED) ->
+ "decryption_failed";
+description_txt(?RECORD_OVERFLOW) ->
+ "record_overflow";
+description_txt(?DECOMPRESSION_FAILURE) ->
+ "decompression_failure";
+description_txt(?HANDSHAKE_FAILURE) ->
+ "handshake_failure";
+description_txt(?BAD_CERTIFICATE) ->
+ "bad_certificate";
+description_txt(?UNSUPPORTED_CERTIFICATE) ->
+ "unsupported_certificate";
+description_txt(?CERTIFICATE_REVOKED) ->
+ "certificate_revoked";
+description_txt(?CERTIFICATE_EXPIRED) ->
+ "certificate_expired";
+description_txt(?CERTIFICATE_UNKNOWN) ->
+ "certificate_unknown";
+description_txt(?ILLEGAL_PARAMETER) ->
+ "illegal_parameter";
+description_txt(?UNKNOWN_CA) ->
+ "unknown_ca";
+description_txt(?ACCESS_DENIED) ->
+ "access_denied";
+description_txt(?DECODE_ERROR) ->
+ "decode_error";
+description_txt(?DECRYPT_ERROR) ->
+ "decrypt_error";
+description_txt(?EXPORT_RESTRICTION) ->
+ "export_restriction";
+description_txt(?PROTOCOL_VERSION) ->
+ "protocol_version";
+description_txt(?INSUFFICIENT_SECURITY) ->
+ "insufficient_security";
+description_txt(?INTERNAL_ERROR) ->
+ "internal_error";
+description_txt(?USER_CANCELED) ->
+ "user_canceled";
+description_txt(?NO_RENEGOTIATION) ->
+ "no_renegotiation".
+
+
+
+
+