Esempio n. 1
0
        /// <summary>
        /// Преобразует объект класса <see cref="GostKeyTransport"/>
        /// в байтовый массив.
        /// </summary>
        ///
        /// <returns>Данные обмена ключами в виде байтового массива.</returns>
        public byte[] Encode()
        {
            GostKeyTransportObject obj = new GostKeyTransportObject();

            obj.Transport = this;
            return(obj.Encode());
        }
Esempio n. 2
0
        /// <summary>
        /// Вспомогательный метод, работающий для всех GOST3410
        /// </summary>
        /// <param name="createAgree"></param>
        /// <param name="exportParameters"></param>
        /// <param name="senderParameters"></param>
        /// <param name="alg"></param>
        /// <param name="keyWrapMethod"></param>
        /// <returns></returns>
        private GostKeyTransport GetGostTransport(
            Func <Gost3410Parameters, GostSharedSecretAlgorithm> createAgree,
            Func <bool, Gost3410Parameters> exportParameters,
            Gost3410Parameters senderParameters,
            SymmetricAlgorithm alg,
            GostKeyWrapMethod keyWrapMethod)
        {
            GostKeyTransportObject transport = new GostKeyTransportObject();

            byte[] wrapped_data;

            using (GostSharedSecretAlgorithm agree = createAgree(
                       senderParameters))
            {
                // Зашифровываем симметричный ключ.
                wrapped_data = agree.Wrap(alg,
                                          keyWrapMethod);
            }

            GostWrappedKeyObject wrapped = new GostWrappedKeyObject();

            wrapped.SetByXmlWrappedKey(wrapped_data);

            transport.sessionEncryptedKey_            = wrapped;
            transport.transportParameters_            = new Gost3410CspObject();
            transport.transportParameters_.Parameters = exportParameters(false);

            return(transport.Transport);
        }
Esempio n. 3
0
        /// <summary>
        /// Восстанавливает объект класса <see cref="GostKeyTransport"/>
        /// из байтового массива.
        /// </summary>
        ///
        /// <param name="data">Данные для обмена в виде байтового
        /// массива.</param>
        ///
        /// <returns>Данные для обмена в объекта класса
        /// <see cref="GostKeyTransport"/>.</returns>
        public void Decode(byte[] data)
        {
            GostKeyTransportObject obj = new GostKeyTransportObject();

            obj.Decode(data);
            this = obj.Transport;
        }