public void Decrypt() { try { if (m_vType == 10101) { byte[] cipherText = m_vData; Client.CPublicKey = cipherText.Take(32).ToArray(); Client.CSharedKey = Client.CPublicKey; Client.CRNonce = Client.GenerateSessionKey(); byte[] nonce = GenericHash.Hash(Client.CPublicKey.Concat(Key.Crypto.PublicKey).ToArray(), null, 24); cipherText = cipherText.Skip(32).ToArray(); var PlainText = PublicKeyBox.Open(cipherText, nonce, Key.Crypto.PrivateKey, Client.CPublicKey); Client.CSessionKey = PlainText.Take(24).ToArray(); Client.CSNonce = PlainText.Skip(24).Take(24).ToArray(); SetData(PlainText.Skip(24).Skip(24).ToArray()); } else { Client.CSNonce = Utilities.Increment(Utilities.Increment(Client.CSNonce)); SetData(SecretBox.Open(new byte[16].Concat(m_vData).ToArray(), Client.CSNonce, Client.CSharedKey)); } } catch (Exception ex) { Client.CState = 0; return; } }
public SessionSuccess(Client client, SessionRequest cka) : base(client) { SetMessageType(20100); SessionKey = Client.GenerateSessionKey(); }