Esempio n. 1
0
        public (byte[] Message, byte[] Nonce) Encrypt(byte[] message, string destinationPublicKey)
        {
            var nonce = PseudoRandom.RandomBytes(Hash.NonceLength);

            var sharedKey = this.GetSharedSecret(destinationPublicKey);
            var encrypted = Hash.EncryptSymmetric(message, nonce, sharedKey);

            return(encrypted, nonce);
        }
Esempio n. 2
0
        public CryptoKey(byte[] seed)
        {
            if (seed != null)
            {
                try
                {
                    this.SeedHex = seed.ToHexString();
                }
                catch (Exception)
                {
                    throw new InvalidArgumentException("seed is not a valid hex string");
                }
            }
            else
            {
                this.SeedHex = PseudoRandom.RandomBytesAsHexString(Hash.SeedLength);
            }

            this.sharedKeyCache = new ConcurrentDictionary <string, byte[]>();

            this.keyInfo = CryptoKeyInfo.FromSeed(seed);
        }
Esempio n. 3
0
 public static string RandomBytesAsHexString(int length) => PseudoRandom.RandomBytes(length).ToHexString();
Esempio n. 4
0
 public CryptoKey() : this(PseudoRandom.RandomBytes(Hash.SeedLength))
 {
 }