+ already at least one IRC client that supports SILC, the Irssi client.
+ The current SILC client is actually based on the user interface of the
+ Irssi client. So, yes it is possible to use SILC with some IRC clients
+ and vice versa. But, this does not mean that you can talk from SILC
+ network to IRC network, that is not possible.
+
+ Q: The default theme sucks, where can I find a better one?
+ A: The Irssi SILC client's theme files are almost 100% compatible with
+ the original Irssi IRC client's themes. You can get those theme files
+ from the Irssi project website. You can also try to make a better
+ theme by yourself.
+
+ Q: How do I send a private message?
+ A: Sending private message is done by using the MSG command. For
+ example, command: /MSG john hello, will send a `hello' message to a
+ nickname `john'. By default private messages are secured with session
+ keys, and the message is re-encrypted by the servers when the message
+ travels to the receiver. If you would like to secure the private
+ messages with a private key, you can negotiate a secret key with the
+ receiver. Always remember to give WHOIS command before sending a
+ private message to assure that you are sending the message to correct
+ person.
+
+ Q: How do I negotiate secret key with another user?
+ 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.
+
+ By giving command: /KEY MSG john agreement 192.168.2.100, 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:
+ /KEY MSG You negotiate 192.168.2.100 31382, 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.
+
+ Q: How do I negotiate secret keys behind a NAT?
+ 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.
+
+ By giving command: /KEY MSG john agreement, 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: /KEY
+ MSG You agreement 172.16.100.78, 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: /KEY MSG john
+ negotiate 172.16.100.78 31181, which will start the key negotiation
+ with John. This way you can negotiate the keys if you are behind a
+ NAT.
+
+ Q: How do I change channel modes?
+ 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.
+
+ Q: What does the founder mode on channel mean, and how do I set it?
+ 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.
+
+ The mode is set by giving command: /CMODE #channel +f -pubkey. 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 /JOIN #channel
+ -founder -pubkey, will get the founder mode back at the same time he
+ joins the channel, or giving commmand /CUMODE #channel +f -pubkey,
+ will also give the founder mode back on the channel after he has
+ joined the channel.
+
+ If the channel is destroyed after the last client leaves the channel,
+ the founder mode is also reset. Who ever creates the channel after
+ that will also get the channel founder mode automatically. Note also
+ that the founder mode is local. You can reclaim the mode back only on
+ the same server where you set the founder mode in the first place.
+
+ Q: I am founder of invite only channel, how can I join the channel
+ after I have left it?
+ 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: /JOIN #channel
+ -founder -pubkey. This will join the channel and attempt to reclaim
+ the founder status back to you. Note that you need to be on the same
+ server where you gave the founder mode for the channel for this to
+ work.
+
+ Q: How can I op or deop somebody on channel?
+ 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: /CUMODE #channel
+ +o john, and to remove ops give command: /CUMODE #channel -o john. To
+ indicate current channel you can also use `*' character in #channel's
+ stead.
+
+ Q: How do I set private key for channel, and what does that mean
+ exactly?
+ 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: /CMODE #channel +k. 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: /KEY CHANNEL #channel set verysecretkey. This
+ command will set the `verysecretkey' passphrase as key to the
+ #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.
+
+ Q: How do I transfer a file?
+ 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: /FILE SEND
+ path/to/the/file john. 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: /FILE RECEIVE, 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: /FILE CLOSE will close the session.
+
+ Q: How can I get other users public keys?
+ 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.
+
+ Q: How can I see the fingerprint of my public key?
+ 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: silc -S .silc/public_key.pub. 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.
+
+ Q: I gave WHOIS to a nick, and it returned multiple replies, why?
+ 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:
+ nickname: John (John@otaku). 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: /MSG John@otaku
+ hello. This will send `hello' message to the John@otaku.
+
+ Q: Is there a command to see all linked servers?
+ A: No there is not. For longer answer see also this FAQ.
+
+ Q: How do I list the users of a channel?
+ 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: /USERS *. 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.
+
+ Q: What is the difference between OPER and SILCOPER commands?
+ 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.