< Summary

Information
Class: Renci.SshNet.Messages.Transport.KeyExchangeEcdhInitMessage
Assembly: Renci.SshNet
File(s): \home\appveyor\projects\ssh-net\src\Renci.SshNet\Messages\Transport\KeyExchangeEcdhInitMessage.cs
Line coverage
48%
Covered lines: 14
Uncovered lines: 15
Coverable lines: 29
Total lines: 78
Line coverage: 48.2%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
get_QC()100%1100%
get_BufferCapacity()100%1100%
.ctor(...)100%1100%
.ctor(...)100%10%
LoadData()100%10%
SaveData()100%1100%
Process(...)100%10%

File(s)

\home\appveyor\projects\ssh-net\src\Renci.SshNet\Messages\Transport\KeyExchangeEcdhInitMessage.cs

#LineLine coverage
 1using System;
 2using Renci.SshNet.Common;
 3
 4namespace Renci.SshNet.Messages.Transport
 5{
 6    /// <summary>
 7    /// Represents SSH_MSG_KEXECDH_INIT message.
 8    /// </summary>
 9    [Message("SSH_MSG_KEX_ECDH_INIT", 30)]
 10    internal sealed class KeyExchangeEcdhInitMessage : Message, IKeyExchangedAllowed
 11    {
 12        /// <summary>
 13        /// Gets the client's ephemeral contribution to the ECDH exchange, encoded as an octet string.
 14        /// </summary>
 354315        public byte[] QC { get; private set; }
 16
 17        /// <summary>
 18        /// Gets the size of the message in bytes.
 19        /// </summary>
 20        /// <value>
 21        /// The size of the messages in bytes.
 22        /// </value>
 23        protected override int BufferCapacity
 24        {
 25            get
 118126            {
 118127                var capacity = base.BufferCapacity;
 118128                capacity += 4; // QC length
 118129                capacity += QC.Length; // QC
 118130                return capacity;
 118131            }
 32        }
 33
 34        /// <summary>
 35        /// Initializes a new instance of the <see cref="KeyExchangeEcdhInitMessage"/> class.
 36        /// </summary>
 118137        public KeyExchangeEcdhInitMessage(byte[] q)
 118138        {
 118139            QC = q;
 118140        }
 41
 42        /// <summary>
 43        /// Initializes a new instance of the <see cref="KeyExchangeEcdhInitMessage"/> class.
 44        /// </summary>
 045        public KeyExchangeEcdhInitMessage(BigInteger d, BigInteger q)
 046        {
 047            var dBytes = d.ToByteArray().Reverse();
 048            var qBytes = q.ToByteArray().Reverse();
 49
 050            var data = new byte[dBytes.Length + qBytes.Length + 1];
 051            data[0] = 0x04;
 052            Buffer.BlockCopy(dBytes, 0, data, 1, dBytes.Length);
 053            Buffer.BlockCopy(qBytes, 0, data, dBytes.Length + 1, qBytes.Length);
 054            QC = data;
 055        }
 56
 57        /// <summary>
 58        /// Called when type specific data need to be loaded.
 59        /// </summary>
 60        protected override void LoadData()
 061        {
 062            QC = ReadBinary();
 063        }
 64
 65        /// <summary>
 66        /// Called when type specific data need to be saved.
 67        /// </summary>
 68        protected override void SaveData()
 118169        {
 118170            WriteBinaryString(QC);
 118171        }
 72
 73        internal override void Process(Session session)
 074        {
 075            throw new NotImplementedException();
 76        }
 77    }
 78}