summaryrefslogtreecommitdiff
path: root/src/tls/tls.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2004-07-26 16:45:38 +0000
committerAlexey Shchepin <alexey@process-one.net>2004-07-26 16:45:38 +0000
commit3377c54ecd24ed34229bc7c3408a0d49ca833410 (patch)
tree2039b21f4a56f1455ca6355ce252b2541f58c451 /src/tls/tls.erl
parent* src/tls/: Library for TLS support (not completed) (diff)
*** empty log message ***
SVN Revision: 248
Diffstat (limited to '')
-rw-r--r--src/tls/tls.erl44
1 files changed, 35 insertions, 9 deletions
diff --git a/src/tls/tls.erl b/src/tls/tls.erl
index d444bb7e..58d035c8 100644
--- a/src/tls/tls.erl
+++ b/src/tls/tls.erl
@@ -12,7 +12,7 @@
-behaviour(gen_server).
--export([start/0, start_link/0, convert/3, test/0]).
+-export([start/0, start_link/0, tcp_to_tls/2, tls_to_tcp/1, test/0]).
%% Internal exports, call-back functions.
-export([init/1,
@@ -28,9 +28,7 @@
-define(GET_ENCRYPTED_OUTPUT, 4).
-define(GET_DECRYPTED_INPUT, 5).
--define(DECRYPTED_INPUT, 1).
--define(ENCRYPTED_OUTPUT, 2).
-
+-record(tlssock, {tcpsock, tlsport}).
start() ->
gen_server:start({local, ?MODULE}, ?MODULE, [], []).
@@ -78,12 +76,40 @@ terminate(_Reason, Port) ->
ok.
+tcp_to_tls(TCPSocket, Options) ->
+ case lists:keysearch(certfile, 1, Options) of
+ {value, {certfile, CertFile}} ->
+ Port = open_port({spawn, tls_drv}, [binary]),
+ io:format("open_port: ~p~n", [Port]),
+ case port_control(Port, ?SET_CERTIFICATE_FILE,
+ CertFile ++ [0]) of
+ [0] ->
+ {ok, #tlssock{tcpsock = TCPSocket, tlsport = Port}};
+ [1 | Error] ->
+ {error, Error}
+ end;
+ false ->
+ {error, no_certfile}
+ end.
+
+tls_to_tcp(#tlssock{tcpsock = TCPSocket, tlsport = Port}) ->
+ port_close(Port),
+ TCPSocket.
+
+recv(Socket, Length) ->
+ recv(Socket, Length, infinity).
+recv(#tlssock{tcpsock = TCPSocket, tlsport = Port}, Length, Timeout) ->
+ case gen_tcp:recv(TCPSocket, Length, Timeout) of
+ {ok, Packet} ->
+ todo;
+ {error, _Reason} = Error ->
+ Error
+ end.
+send(#tlssock) ->
+
-convert(From, To, String) ->
- [{port, Port} | _] = ets:lookup(iconv_table, port),
- Bin = term_to_binary({From, To, String}),
- BRes = port_control(Port, 1, Bin),
- binary_to_list(BRes).
+close(#tlssock) ->
+
test() ->