private void LoadPeers(Certificate[] knownPeerCerts) { //load self as virtual peer Certificate selfCert = _networkManager.GetLocalCredentials().Certificate; _selfPeer = new VirtualPeer(selfCert, this); _virtualPeers.Add(selfCert.IssuedTo.EmailAddress.Address.ToLower(), _selfPeer); //load known peers foreach (Certificate knownPeerCert in knownPeerCerts) { _virtualPeers.Add(knownPeerCert.IssuedTo.EmailAddress.Address.ToLower(), new VirtualPeer(knownPeerCert, this)); } }
public void JoinNetwork(string peerID, SecureChannelStream peerStream, bool checkCertificateRevocationList) { if (_type == BitChatNetworkType.PrivateChat) { if (!peerStream.RemotePeerCertificate.IssuedTo.EmailAddress.Equals(_peerEmailAddress)) { throw new BitChatException("User with another email address '" + peerStream.RemotePeerCertificate.IssuedTo.EmailAddress.Address + " [" + peerStream.RemotePeerEP.Address.ToString() + "]' trying to join private chat."); } _peerName = peerStream.RemotePeerCertificate.IssuedTo.Name; } peerID = peerID.ToLower(); VirtualPeer vPeer; bool peerAdded = false; lock (_virtualPeers) { if (_virtualPeers.ContainsKey(peerID)) { vPeer = _virtualPeers[peerID]; } else { vPeer = new VirtualPeer(peerStream.RemotePeerCertificate, this); _virtualPeers.Add(peerID, vPeer); peerAdded = true; } } if (peerAdded) { VirtualPeerAdded(this, vPeer); } vPeer.AddStream(peerStream); if (checkCertificateRevocationList) { //start async revocation list check process ThreadPool.QueueUserWorkItem(CheckCertificateRevocationListAsync, peerStream); } }
public List <PeerInfo> GetConnectedPeerList() { List <PeerInfo> connectedPeers = new List <PeerInfo>(); lock (_virtualPeers) { foreach (KeyValuePair <string, VirtualPeer> item in _virtualPeers) { VirtualPeer vPeer = item.Value; if (vPeer.IsOnline) { connectedPeers.Add(vPeer.GetPeerInfo()); } } } return(connectedPeers); }
private void LoadPeers(Certificate[] knownPeerCerts) { //load self as virtual peer Certificate selfCert = _networkManager.GetLocalCredentials().Certificate; _selfPeer = new VirtualPeer(selfCert, this); _virtualPeers.Add(selfCert.IssuedTo.EmailAddress.Address.ToLower(), _selfPeer); //load known peers foreach (Certificate knownPeerCert in knownPeerCerts) _virtualPeers.Add(knownPeerCert.IssuedTo.EmailAddress.Address.ToLower(), new VirtualPeer(knownPeerCert, this)); }
public void JoinNetwork(string peerID, SecureChannelStream peerStream, bool checkCertificateRevocationList) { if (_type == BitChatNetworkType.PrivateChat) { if (!peerStream.RemotePeerCertificate.IssuedTo.EmailAddress.Equals(_peerEmailAddress)) throw new BitChatException("User with another email address '" + peerStream.RemotePeerCertificate.IssuedTo.EmailAddress.Address + " [" + peerStream.RemotePeerEP.Address.ToString() + "]' trying to join private chat."); _peerName = peerStream.RemotePeerCertificate.IssuedTo.Name; } peerID = peerID.ToLower(); VirtualPeer vPeer; bool peerAdded = false; lock (_virtualPeers) { if (_virtualPeers.ContainsKey(peerID)) { vPeer = _virtualPeers[peerID]; } else { vPeer = new VirtualPeer(peerStream.RemotePeerCertificate, this); _virtualPeers.Add(peerID, vPeer); peerAdded = true; } } if (peerAdded) VirtualPeerAdded(this, vPeer); vPeer.AddStream(peerStream); if (checkCertificateRevocationList) { //start async revocation list check process ThreadPool.QueueUserWorkItem(CheckCertificateRevocationListAsync, peerStream); } }