Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
.TH SSL 3 
2
.SH NAME
3
ssl \- SSL record layer
4
.SH SYNOPSIS
5
.nf
6
.B bind -a #D /net
7
 
8
.B /net/ssl/clone
9
.BI /net/ssl/ n 
10
.BI /net/ssl/ n /ctl
11
.BI /net/ssl/ n /data
12
.BI /net/ssl/ n /encalgs
13
.BI /net/ssl/ n /hashalgs
14
.BI /net/ssl/ n /secretin
15
.BI /net/ssl/ n /secretout
16
.fi
17
.SH DESCRIPTION
18
The SSL device provides the interface to the Secure Socket Layer
19
device implementing the record layer protocol of SSLv2
20
(but not the handshake protocol, which is responsible for
21
mutual authentication and key exchange.)
22
The
23
.I ssl
24
device can be thought of as a filter providing optional encryption
25
and anti-tampering.
26
.PP
27
The top level directory contains a
28
.B clone
29
file and subdirectories numbered from zero to the number of connections
30
configured.
31
Opening the
32
.B clone
33
file reserves a connection.  The file descriptor returned from the
34
.IR open (2)
35
will point to the control file,
36
.BR ctl ,
37
of the newly allocated connection.  Reading the
38
.B ctl
39
file returns a text
40
string representing the number of the
41
connection.
42
.PP
43
A connection is controlled by writing text strings to the associated
44
.B ctl
45
file.  After a connection has been established data may be read from
46
and written to the data file.
47
.PP
48
The SSL protocol provides a stream connection that preserves
49
.BR read / write
50
boundaries.  As long as reads always specify buffers that are
51
of equal or greater lengths than the writes at the other end of the
52
connection, one write will correspond to one read.
53
.PP
54
Options are set by writing control messages to the
55
.B ctl
56
file of the connection.
57
.PP
58
The following control messages are supported:
59
.TP
60
.BI fd \ open-file-descriptor
61
Run the SSL protocol over the existing file descriptor.
62
.TP
63
.BI alg \ cryptoalgs
64
Connections start in
65
.B alg clear
66
which means no encryption or digesting.
67
Writing
68
.B alg sha
69
to the control file turns on SHA-1 digest authentication
70
for the data channel.
71
Similarly, writing
72
.B alg rc4_128
73
enables encryption.
74
Both can be turned on at once by
75
.BR "alg sha rc4_128" .
76
The digest mode
77
.B sha
78
may be replaced by
79
.BR md5 .
80
The encryption mode
81
.B rc4_128
82
may be replaced by
83
.BR rc4_40 ,
84
.BR rc4_128 ,
85
.BR rc4_256 ,
86
.BR des_40_ecb ,
87
.BR des_40_cbc ,
88
.BR des_56_ecb ,
89
and
90
.BR des_56_cbc .
91
The mode may be changed at any time during the connection.
92
.TP
93
.BI secretin \ base64-secret
94
The secret for decrypting and authenticating incoming messages
95
can be specified either as a base64 encoded string by writing to the
96
control file, or as a binary byte string using the interface below.
97
.TP
98
.BI secretout \ base64-secret
99
The secret for encrypting and hashing outgoing messages
100
can be specified either as a base64 encoded string by writing to the
101
control file, or as a binary byte string using the interface below.
102
.PP
103
Before enabling digesting or encryption, shared secrets must be agreed upon with
104
the remote side, one for each direction of transmission,
105
and loaded as shown above or by writing to the files
106
.I secretin
107
and
108
.IR secretout .
109
If either the incoming or outgoing secret is not specified, the other secret
110
is assumed to work for both directions.
111
.PP
112
The encryption and hash algoritms actually included in the kernel
113
may be smaller than the set presented here.  Reading
114
.I encalgs
115
and 
116
.I hashalgs
117
will give the actual space-separated list of algorithms implemented.
118
.SH "SEE ALSO"
119
.IR listen (8),
120
.IR dial (2)
121
.SH SOURCE
122
.B /sys/src/9/port/devssl.c
123
.SH BUGS
124
Messages longer than 4096 bytes are truncated.