Beispiel #1
0
        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));
        }