Пример #1
0
        public static long GetFingerprint(string key)
        {
            TRsaPublicKey rsaPublicKey;

            using (var txtreader = new StringReader(key))
            {
                var keyParameter = (RsaKeyParameters) new PemReader(txtreader).ReadObject();

                rsaPublicKey = new TRsaPublicKey
                {
                    E = keyParameter.Exponent.ToByteArrayUnsigned(),
                    N = keyParameter.Modulus.ToByteArrayUnsigned()
                };
            }

            var rsaPublicKeyBuffer = Serializer.Serialize(rsaPublicKey);

            byte[] data;
            try
            {
                data = rsaPublicKeyBuffer.ToArray();
            }
            finally
            {
                rsaPublicKeyBuffer.SafeRelease();
            }

            byte[] hash;
            using (var sha1 = SHA1.Create())
            {
                hash = sha1.ComputeHash(data);
            }

            return(BitConverter.ToInt64(hash, hash.Length - 8));
        }
Пример #2
0
        public object Deserialize(BinaryReader reader, SerializationMetadata metadata)
        {
            var rsaPublicKey = new TRsaPublicKey
            {
                N = (byte[])Serializer.Deserialize(reader, typeof(byte[]).GetTypeInfo()),
                E = (byte[])Serializer.Deserialize(reader, typeof(byte[]).GetTypeInfo())
            };

            return(rsaPublicKey);
        }
Пример #3
0
        public object Deserialize(IByteBuffer buffer, SerializationMetadata metadata)
        {
            var rsaPublicKey = new TRsaPublicKey
            {
                N = (byte[])Serializer.Deserialize(buffer, ArrayOfBytesTypeInfo),
                E = (byte[])Serializer.Deserialize(buffer, ArrayOfBytesTypeInfo)
            };

            return(rsaPublicKey);
        }
Пример #4
0
        public void RsaPublicKey()
        {
            var peer = new TRsaPublicKey()
            {
                E = new byte[] { 123 },
                N = new byte[] { 111 },
            };

            var buffer = Serializer.Serialize(peer);

            Assert.Equal(8, buffer.ReadableBytes);
        }
Пример #5
0
        public void RsaPublicKey()
        {
            var peer = new TRsaPublicKey()
            {
                E = new byte[] { 123 },
                N = new byte[] { 111 },
            };

            var data = Serializer.SerializeObject(peer).ToArray();

            var obj = (TRsaPublicKey)Serializer.DeserializeObject(data);

            Assert.Equal(peer.E, obj.E);
            Assert.Equal(peer.N, obj.N);
        }