public Certificate(ByteBuffer payload, AsymmetricKey publicKey, AsymmetricKey theCAPrivateKey) { PIsValid = false; SignatureByteSize = 0; if (payload.GetBufferSize() > MaxPayloadSize || !publicKey.IsValid()) { return; } var thePublicKey = PublicKey.GetPublicKey(); var packet = new PacketStream(); packet.Write(payload); packet.Write(thePublicKey); SignatureByteSize = packet.GetBytePosition(); packet.SetBytePosition(SignatureByteSize); var theSignedBytes = new ByteBuffer(packet.GetBuffer(), packet.GetBytePosition()); Signature = theCAPrivateKey.HashAndSign(theSignedBytes); packet.Write(Signature); SetBuffer(packet.GetBuffer(), packet.GetBytePosition()); }