private static byte[] CalculateChecksum(byte[] pubkey) { // TORv3 CHECKSUM = H(".onion checksum" | PUBKEY | VERSION)[:2] var prefix = Encoders.ASCII.DecodeData(".onion checksum"); var hasher = new Sha3Digest(256); hasher.BlockUpdate(prefix, 0, prefix.Length); hasher.BlockUpdate(pubkey, 0, pubkey.Length); hasher.Update((byte)3); var fullChecksum = new byte[hasher.GetByteLength()]; hasher.DoFinal(fullChecksum, 0); return(fullChecksum.SafeSubarray(0, TORV3_ADDR_CHECKSUM_LEN)); }