+<a name="f3_40"></a>
+<samp class="highlight">Q: How do I negotiate secret key with another user?</samp><br />
+A: It is important to negotiate secret keys if you cannot trust the servers
+and the network you are using. By negotiating a key with the user you
+want to talk to assures that no one except you and your friend is able
+to encrypt and decrypt the messages. The secret key negotiation is done with
+the KEY command. Here is an example of how to negotiate keys for securing
+private messages.
+<br /> <br />
+By giving command: <samp class="highlight">/KEY MSG john agreement
+192.168.2.100</samp>, you will send a key negotiation request to a nickname
+`john'. The 192.168.2.100 IP address would be your machine's IP address.
+You can also define an port to the KEY command after the IP address. If
+you do not do that the operating system will bind to a port of its choosing.
+John will receive a notification on the screen that you would like to
+negotiate secret keys with him, and he will receive the IP address and port
+where you are listenning for the negotiation. When he gives command:
+<samp class="highlight">/KEY MSG You negotiate 192.168.2.100 31382</samp>,
+the key negotiation is started. During the key negotiation you will be
+prompted on the screen to verify and accept John's public key if you do not
+have his public key already. The John will be prompted to accept your
+public key as well. After the key negotiation is over all private messages
+sent between you and John are secured with the negotiated secret key.
+Note that you must verify the public key you are prompted for, and this is
+very important since someone could be doing man-in-the-middle attack.
+<br /> <br />
+
+<a name="f3_50"></a>
+<samp class="highlight">Q: How do I negotiate secret keys behind a NAT?</samp><br />
+A: If only you are behind a NAT, or firewall then key negotiation works,
+but if both you and your friend are behind a NAT then key negotiation will
+not work, since it is done peer to peer. If you are behind a NAT then you
+obviously cannot receive key negotiations, and cannot bind to any IP address
+and port. However, you can still use KEY command to negotiate the keys.
+<br /> <br />
+By giving command: <samp class="highlight">/KEY MSG john agreement</samp>,
+without any other arguments (such as IP address and port) you will send
+a negotiation request to John, but do not provide an address and port for
+the John to connect to. When John receives the notification on the screen
+that you would like to perform key negotiation, he can give command:
+<samp class="highlight">/KEY MSG You agreement 172.16.100.78</samp>, which
+will send key negotiation request back to you. You will receive the IP
+address and port where you need to connect in order to perform the negotiation.
+After receiving the notification you can give command: <samp class="highlight">
+/KEY MSG john negotiate 172.16.100.78 31181</samp>, which will start the
+key negotiation with John. This way you can negotiate the keys if you are
+behind a NAT.
+<br /> <br />
+
+<a name="f3_60"></a>
+<samp class="highlight">Q: How do I change channel modes?</samp><br />
+A: The command to manage channel modes is CMODE. With this command you
+can change the channel status (to change it to secret channel for example),
+set user limit on the channel, passphrase for the channel, set the channel
+to use private keys on channel, and set the founder mode.
+<br /> <br />
+
+<a name="f3_70"></a>
+<samp class="highlight">Q: What does the founder mode on channel mean, and how do I set it?</samp><br />
+A: Who ever creates the channel by being the first user to join the channel
+becomes automatically the founder of the channel. Founder has some extra
+privileges on the channel. For example, it is not possible to kick the
+founder off the channel, and there are some channel modes that only the
+founder of the channel can change. If the creator of the channel wishes
+to preserve the channel founder mode even if he leave the channel he
+can set the founder mode for the channel.
+<br /> <br />
+The mode is set by giving command: <samp class="highlight">/CMODE #channel
++f</samp>. This will set the founder mode and will use the public
+key of the founder as authenticator when the user is reclaiming the mode
+back. If the founder leaves the channel he will be able to get the founder
+mode back by using JOIN or CUMODE commmands. Giving command
+<samp class="highlight">/JOIN #channel -founder</samp>,
+will get the founder mode back at the same time he joins the channel, or
+giving commmand <samp class="highlight">/CUMODE #channel +f yournick</samp>,
+will also give the founder mode back on the channel after he has joined
+the channel.
+<br /> <br />
+The founder mode also means that the channel becomes permanent when it is
+set. This means that when the last client leaves the channel the channel
+is not destroyed when the founder mode is set. Next time someone joins
+the channel he will not become the founder of the channel if the channel
+already existed (but were empty). If the founder mode is not set when
+last user leaves the channel, the channel will be destroyed. When you set
+the mode for the channel and leave the channel you can reclaim the founder
+rights to yourself back at any time when you rejoin the channel.
+<br /> <br />
+
+<a name="f3_80"></a>
+<samp class="highlight">Q: I am founder of invite only channel, how can I join the channel after I have left it?</samp><br />
+A: Founder can override the invite only status by reclaiming the founder
+status on the channel using the JOIN command. The channel must have the
+founder mode set in order for it to work. Reclaiming founder status using
+JOIN command is important also if the channel has user limit set, and has
+active bans. Founder can override these conditions as well. However,
+founder cannot override the passphrase of the channel if it is set. To
+get the founder mode during JOIN and to override the invite only condition,
+give command: <samp class="highlight">/JOIN #channel -founder</samp>.
+This will join the channel and attempt to reclaim the founder status back
+to you.
+<br /> <br />
+
+<a name="f3_90"></a>
+<samp class="highlight">Q: How can I op or deop somebody on channel?</samp><br />
+A: Giving operator status, or removing the operator status on a channel
+requires you to have at least operator status, or founder status on the
+channel. You can give operator status to another user by using CUMODE
+command. To give ops give the command: <samp class="highlight">/CUMODE
+#channel +o john</samp>, and to remove ops give command:
+<samp class="highlight">/CUMODE #channel -o john</samp>. To indicate
+current channel you can also use `*' character in #channel's stead.
+<br /> <br />
+
+<a name="f3_100"></a>
+<samp class="highlight">Q: How do I set private key for channel, and what does that mean exactly?</samp><br />
+A: Setting private key for channel requires first to set the private key mode
+for the channel. You need to be the founder of the channel to be able to
+do this. Give the command: <samp class="highlight">/CMODE #channel +k</samp>.
+After this mode is set the old channel key will not be used to encrypt and
+decrypt channel messages. To set the key for the channel use the KEY command.
+Every user on the channel must do the same thing and set the same key.
+If some user on the channel does not set the key (or does not know the key)
+he won't be able to see any messages on the channel. Give the command:
+<samp class="highlight">/KEY CHANNEL #channel set verysecretkey</samp>.
+This command will set the `verysecretkey' passphrase as key to #channel.
+How exactly other users will know this key is out of scope of the SILC
+protocol. SILC does not provide yet a possibility of negotiating secret key
+with many users at the same time. For this reason the secret key on the
+channel is usually a passphrase or a password that all users on the channel
+have to know. Setting a private key for channel means that only the users
+on the channel who know the key is able to encrypt and decrypt messages.
+Servers do not know the key at all. If you remove the private key mode
+from the channel, all users will start automatically using a new channel
+key to secure channel messages.
+<br /> <br />
+
+<a name="f3_110"></a>
+<samp class="highlight">Q: How do I transfer a file?</samp><br />
+A: You can transfer files securely using the FILE command. This command
+will automatically negotiate secret key with the remote user and the
+file transfer stream is secured using that key. The file transfer
+stream is always sent peer to peer. If you would like to send a file
+to another user you can give command: <samp class="highlight">/FILE
+SEND path/to/the/file john</samp>. This command sends, or actually
+makes the `path/to/the/file' available for download for the user `john'.
+The John will decide whether he wants to actually download the file.
+When John gives the command: <samp class="highlight">/FILE RECEIVE</samp>,
+the key negotiation is started. You and John will be prompted to verify
+and accept each other's public key if you do not have it cached already.
+After key negotiation is over the file transfer process starts.
+If you want to cancel the file transfer session, or if John wants to
+reject the file transfer request, giving the command: <samp class="highlight">
+/FILE CLOSE</samp> will close the session.
+<br /> <br />
+
+<a name="f3_120"></a>
+<samp class="highlight">Q: How can I get other users public keys?</samp><br />
+A: You can get a user's public key using the GETKEY command. This command
+will fetch the user's public key from the server where the user has connected
+to. The server has verified that the user posesses the corresponding private
+key, however, you will be prompted to verify and accept the public key.
+All client public keys are saved in your local key directory in
+~/.silc/clientkeys/. You can also receive clients public keys during
+key negotiation and file transfers. The GETKEY command can be used to fetch
+a server's public key as well. Those keys are saved in ~/.silc/serverkeys/
+directory.
+<br /> <br />
+
+<a name="f3_130"></a>
+<samp class="highlight">Q: How can I see the fingerprint of my public key?</samp><br />
+A: You can check out your own fingerprint by giving just WHOIS command without
+any arguments. Additionally you can also dump the contents of the key file
+using the silc program and giving -S option to it. Your own public key is
+always saved in ~/.silc/public_key.pub file. To dump your key run silc as:
+<samp class="highlight">silc -S .silc/public_key.pub</samp>. The same way
+you can dump the contents of any public key inside ~/.silc/clientkeys/ and
+~/.silc/serverkeys/ directories. The WHOIS command will also show other
+users public key fingerprints.
+<br /> <br />
+
+<a name="f3_140"></a>
+<samp class="highlight">Q: I gave WHOIS to a nick, and it returned multiple replies, why?</samp><br />
+A: This will happen if there are several same nicknames in the network at
+the same time. As you may already know nicknames are not unique in SILC
+network. This means there can be multiple same nicknames. This also means
+that you can always have the nickname you want. If WHOIS returns multiple
+replies, you can distinguish the users by their realname, username,
+hostname and ultimately by the fingerprint of their public key, which the
+WHOIS will also show. You will also notice an additional nickname inside a
+parenthesis. It may show for example: <samp class="highlight">nickname: John
+ (John@otaku)</samp>. The real nickname is `John', but since there are
+many John's in the network you can access this one using `John@otaku'.
+So, if you were to send private message to this particular John you can do
+it by giving command: <samp class="highlight">/MSG John@otaku hello</samp>.
+This will send `hello' message to the John@otaku.
+<br /> <br />
+
+<a name="f3_150"></a>
+<samp class="highlight">Q: Is there a command to see all linked servers?</samp><br />
+A: No there is not. For longer answer see also <a href="#f2_70"
+class="normal">this FAQ</a>.
+<br /> <br />
+
+<a name="f3_160"></a>
+<samp class="highlight">Q: How do I list the users of a channel?</samp><br />
+A: The command to list all users on a particular channel is USERS. It is
+also aliased to WHO command in Irssi SILC Client. To see the users of the
+current channel give the command: <samp class="highlight">/USERS *</samp>.
+You can replace the `*' with the channel name of your choosing. If the
+channel is private or secret channel, and you have not joined the channel,
+you cannot list the users of that channel.
+<br /> <br />
+
+<a name="f3_170"></a>
+<samp class="highlight">Q: What is the difference between OPER and SILCOPER commands?</samp><br />
+A: The OPER command is used to gain server operator privileges on normal
+SILC server, while SILCOPER is used to gain router operator (also known as
+SILC operator) privileges on router server. You cannot use SILCOPER command
+on normal SILC server, it works only on router server.
+<br /> <br />
+
+<a name="f3_180"></a>
+<samp class="highlight">Q: My Cygwin client crashes with message "Couldn't create //.silc directory"</samp><br />
+A: A solutions should be setting HOME enviroment variable to the directory where you
+have unpacked your SILC Client. Type to your command prompt something like: <br />
+<tt class="normal">c:\>set HOME=c:\silc</tt>
+<br /> <br />
+
+<a name="f3_190"></a>
+<samp class="highlight">Q: Why /join #silc and /join silc doesn't join the same channel?</samp><br />
+A: The #-character is not mandatory part of channel name in SILC. So
+#silc and silc are two different channels. The #-character in channel
+name is IRC feature and has nothing to do with SILC. If you have
+#-character in the channel name, then it is part of the channel name, just
+like %-character, or &-character could be part of channel name.
+<br /> <br />
+
+<a name="f3_200"></a>
+<samp class="highlight">Q: How do I detach my session from the
+server?</samp><br />
+A: You can detach your session by simply giving DETACH command. Your
+connection to the server will be closed automatically. Next time you
+connect any server in the network your session will be automatically
+resumed. If there is an error during session resuming your connection
+will be closed and you need to reconnect to the server. In this case the
+old sessionn cannot be resumed anymore.
+<br /> <br />
+
+