public override void Dispatch(byte[] dat, byte tag) { KcpData data = new KcpData(); data.dat = dat; data.tag = tag; datas.Enqueue(data); }
public ProtectedKey(CompositeKey compositeKey, KeyCipher keyCipher) { var password = keyCipher.GeneratePassword(); _protectedPassword = keyCipher.Protect(password); _keys = new List <KcpData>(); foreach (var key in compositeKey.UserKeys) { KcpData data; var p = key as KcpPassword; var kf = key as KcpKeyFile; var ck = key as KcpCustomKey; if (p != null) { if (p.Password != null) { data = new KcpData(KcpType.kcpPassword, keyCipher.Encrypt(p.Password, password)); } else { data = new KcpData(KcpType.kcpCustomKey, keyCipher.Encrypt(p.KeyData, password), p.ToString()); } } else if (kf != null) { data = new KcpData(KcpType.kcpKeyFile, keyCipher.Encrypt(new ProtectedString(false, kf.Path), password)); } else if (key is KcpUserAccount) { data = new KcpData(KcpType.kcpUserAccount); } else { Debug.Assert(ck != null, "Unknown key type"); var name = ck != null ? ck.Name : key.ToString(); data = new KcpData(KcpType.kcpCustomKey, keyCipher.Encrypt(key.KeyData, password), name); } _keys.Add(data); } }