/// <summary> /// Преобразует объект класса <see cref="GostKeyTransport"/> /// в байтовый массив. /// </summary> /// /// <returns>Данные обмена ключами в виде байтового массива.</returns> public byte[] Encode() { GostKeyTransportObject obj = new GostKeyTransportObject(); obj.Transport = this; return(obj.Encode()); }
/// <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); }
/// <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; }