public Data AddBasedOn(Number160 basedOn) { BasedOnSet.Add(basedOn); _basedOnFlag = true; return(this); }
public void EncodeHeader(AlternativeCompositeByteBuf buffer, ISignatureFactory signatureFactory) { int header = (int)_type; // TODO check if works if (HasPrepareFlag) { header |= 0x02; } if (IsFlag1) { header |= 0x04; } if (IsFlag2) { header |= 0x08; } if (_ttl) { header |= 0x10; } if (IsSigned && HasPublicKey && IsProtectedEntry) { header |= (0x20 | 0x40); } else if (IsSigned && HasPublicKey) { header |= 0x40; } else if (HasPublicKey) { header |= 0x20; } if (_basedOnFlag) { header |= 0x80; } switch (_type) { case DataType.Small: buffer.WriteByte((sbyte)header); // TODO remove cast buffer.WriteByte((sbyte)Length); break; case DataType.Large: buffer.WriteByte((sbyte)header); // TODO remove cast buffer.WriteInt(Length); break; default: throw new ArgumentException("Unknown DataType."); } if (_ttl) { buffer.WriteInt(TtlSeconds); } if (_basedOnFlag) { buffer.WriteByte((sbyte)(BasedOnSet.Count() - 1)); // TODO remove cast foreach (var basedOn in BasedOnSet) { buffer.WriteBytes(basedOn.ToByteArray()); } } if (HasPublicKey) { if (PublicKey == null) { buffer.WriteShort(0); } else { signatureFactory.EncodePublicKey(PublicKey, buffer); } } }