Merged silc_1_1_branch to trunk.
[silc.git] / apps / irssi / docs / help / in / key.in
1
2 @SYNTAX:key@
3
4 This command is used to set and unset private channel keys,
5 set and unset private message keys with remote users, and
6 to send key agreement requests and negotiate the key agreement
7 protocol with remote user.  The key agreement is supported only
8 to negotiate private message keys, it currently cannot be used
9 to negotiate channel private keys.
10
11 Types:
12
13   MSG        The command is performed for private messages
14              affecting the <nickname>.
15
16   CHANNEL    The command is performed for the channel indicated
17              by <channel> (* matches current channel).
18
19 Commands:
20
21   set        [<key> [<cipher>] [<hmac>]]
22
23     Set the key into use.  The <key> is a pre-shared-key,
24     passphrase or similar shared secret string.  Setting
25     the key without first receiving a request from the
26     remote user, this command will send the request to the
27     remote user.  The actual key is not sent to network.
28
29     Optionally, the <cipher> and <hmac> may also be set.
30
31   unset      [<number>]
32
33     Unset the key.  The private key is not used after this
34     command.  The key must be set again or the key material must
35     be re-negotiated to be able to use the private keys again.
36     The channel may have several private keys set.  The <number>
37     can be used to indicate what key is being unset.  If it is
38     not provided all keys are removed.
39
40   list
41
42     List all private keys that has been set.  If the type is
43     MSG and the <nickname> is ยด*' then all private message
44     keys that you've set will be listed.
45
46   change     [<number>]
47
48     This command can be used only when type is CHANNEL.  This is
49     used to change the current channel private key.  The <number>
50     may indicate what key is changed.  If it is not provided then
51     next key is changed to current channel private key.  By default
52     this command is also bound to Meta-K (Alt+Shift+k) key.
53
54   agreement  [<hostname> [<port>] [<TCP|UDP>]]
55
56     Send key agreement request to remote client.  If the
57     <hostname> is provided it is sent in the request. The
58     receiver may use the hostname to start the key agreement.
59     If the <port> is also provided your key agreement protocol
60     server is bound to that port.  Note that it cannot be
61     privileged port (<1024).  If the <hostname> and <port> is
62     not provided then the receiver will never initiate the key
63     agreement.  In this case you may start the key agreement
64     after receiving the reply to the request, by giving the
65     negotiate command.  By default the key agreement connection
66     is TCP connection.  UDP connection may also be defined.
67     (Note that, older SILC clients (1.0.x) does not support UDP).
68
69     This command may be used to send reply to the remote client.
70     When receiving empty key agreement you can reply to the
71     sender with the hostname and port of your key agreement
72     server with this command.
73
74     If the hostname and port are ommitted, the boolean
75     variable use_auto_addr will be examined.  If it is set
76     the value of auto_bind_ip will be used as the IP address
77     to listen for the return reply, the value of auto_public_ip
78     will be the IP address sent to the remote client, and the
79     auto_bind_port will be the port value to be bound to and
80     sent to the remote client.  If auto_public_ip is unset, but
81     auto_bind_ip is set, silc client will send the auto_bind_ip
82     variable's value to the remote client.
83
84   negotiate  [<hostname> [<port>] [<TCP|UDP>]]
85
86     This may be called to start the key agreement with <nickname>.
87     This command has effect only if the <nickname> has replied to
88     your key agreement request.  You will see a notify on the
89     screen when the reply arrives.  The <hostname> and <port> is the
90     hostname and port of the remote client's key agreement server.
91     The request tells the connection protocol used, usually TCP.
92     If UDP was requested it must be provided.
93
94 Examples:
95
96   Set channel private key to current channel, and list all keys:
97
98     /KEY CHANNEL * set very_secret_key_this_is
99     /KEY CHANNEL * list
100
101   Set private message key with a friend:
102
103     foobar:  /KEY MSG friend set secretkey
104     friend:  /KEY MSG foobar set secretkey
105
106   Perform key agreement:
107
108     bar:  /KEY MSG foo agreement 10.2.1.7 5000
109     foo:  /KEY MSG bar negotiate 10.2.1.7 5000
110
111     bar:  /KEY MSG foo agreement 10.2.1.7 5000 UDP
112     foo:  /KEY MSG bar negotiate 10.2.1.7 5000 UDP
113
114 See also: WHOIS, CHANNEL, GETKEY