private Ssh2KexDhInitHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < 5) { StringBuilder sb = new StringBuilder(80); sb.append("The data is too short to build an SSH2 KEX DH init header. data: ") .append(new String(rawData)) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } if (!Ssh2MessageNumber.getInstance(rawData[offset]) .equals(Ssh2MessageNumber.SSH_MSG_KEXDH_INIT)) { StringBuilder sb = new StringBuilder(120); sb.append("The data is not an SSH2 KEX DH init message. data: ") .append(new String(rawData)) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.e = new Ssh2MpInt(rawData, 1 + offset, length - 1); }
@Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!this.getClass().isInstance(obj)) { return false; } Ssh2KexDhInitHeader other = (Ssh2KexDhInitHeader) obj; return e.equals(other.e); }
@Override protected List<byte[]> getRawFields() { List<byte[]> rawFields = new ArrayList<byte[]>(); rawFields.add(new byte[] {messageNumber.value()}); rawFields.add(e.getRawData()); return rawFields; }
@Override protected int calcHashCode() { int result = 17; result = 31 * result + e.hashCode(); return result; } }
@Override public int compareTo(Ssh2MpInt o) { return getValueAsBigInteger().compareTo(o.getValueAsBigInteger()); } }
@Override protected int calcLength() { return e.length() + 1; }
@Override protected int calcHashCode() { int result = 17; result = 31 * result + k_s.hashCode(); result = 31 * result + f.hashCode(); result = 31 * result + signatureOfH.hashCode(); return result; } }
@Override public String toString() { StringBuilder sb = new StringBuilder(50); sb.append(getValueAsBigInteger()) .append(" (") .append(ByteArrays.toHexString(value, " ")) .append(")"); return sb.toString(); }
@Override protected int calcLength() { return e.length() + 1; }
@Override protected int calcHashCode() { int result = 17; result = 31 * result + e.hashCode(); return result; } }
@Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!this.getClass().isInstance(obj)) { return false; } Ssh2KexDhReplyHeader other = (Ssh2KexDhReplyHeader) obj; return k_s.equals(other.k_s) && f.equals(other.f) && signatureOfH.equals(other.signatureOfH); }
@Override protected List<byte[]> getRawFields() { List<byte[]> rawFields = new ArrayList<byte[]>(); rawFields.add(new byte[] {messageNumber.value()}); rawFields.add(k_s.getRawData()); rawFields.add(f.getRawData()); rawFields.add(signatureOfH.getRawData()); return rawFields; }
@Override public int compareTo(Ssh2MpInt o) { return getValueAsBigInteger().compareTo(o.getValueAsBigInteger()); } }
private Ssh2KexDhInitHeader(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < 5) { StringBuilder sb = new StringBuilder(80); sb.append("The data is too short to build an SSH2 KEX DH init header. data: ") .append(new String(rawData)) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } if (!Ssh2MessageNumber.getInstance(rawData[offset]) .equals(Ssh2MessageNumber.SSH_MSG_KEXDH_INIT)) { StringBuilder sb = new StringBuilder(120); sb.append("The data is not an SSH2 KEX DH init message. data: ") .append(new String(rawData)) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.e = new Ssh2MpInt(rawData, 1 + offset, length - 1); }
@Override protected int calcHashCode() { int result = 17; result = 31 * result + k_s.hashCode(); result = 31 * result + f.hashCode(); result = 31 * result + signatureOfH.hashCode(); return result; } }
@Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!this.getClass().isInstance(obj)) { return false; } Ssh2KexDhInitHeader other = (Ssh2KexDhInitHeader) obj; return e.equals(other.e); }
@Override protected List<byte[]> getRawFields() { List<byte[]> rawFields = new ArrayList<byte[]>(); rawFields.add(new byte[] {messageNumber.value()}); rawFields.add(e.getRawData()); return rawFields; }
@Override public String toString() { StringBuilder sb = new StringBuilder(50); sb.append(getValueAsBigInteger()) .append(" (") .append(ByteArrays.toHexString(value, " ")) .append(")"); return sb.toString(); }