148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood/* 248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Copyright (c) 2006-2011 Christian Plattner. All rights reserved. 348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Please refer to the LICENSE.txt for licensing details. 448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */ 548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpackage ch.ethz.ssh2.packets; 648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodimport java.io.IOException; 848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodimport java.math.BigInteger; 1048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 1148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood/** 1248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * PacketKexDHReply. 1348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * 1448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @author Christian Plattner 1548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @version 2.50, 03/15/10 1648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */ 1748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpublic class PacketKexDHReply 1848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood{ 1948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood byte[] payload; 2048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 2148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood byte[] hostKey; 2248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood BigInteger f; 2348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood byte[] signature; 2448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 2548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public PacketKexDHReply(byte payload[], int off, int len) throws IOException 2648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 2748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood this.payload = new byte[len]; 2848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood System.arraycopy(payload, off, this.payload, 0, len); 2948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 3048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood TypesReader tr = new TypesReader(payload, off, len); 3148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 3248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood int packet_type = tr.readByte(); 3348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 3448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood if (packet_type != Packets.SSH_MSG_KEXDH_REPLY) 3548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood throw new IOException("This is not a SSH_MSG_KEXDH_REPLY! (" 3648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood + packet_type + ")"); 3748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 3848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood hostKey = tr.readByteString(); 3948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood f = tr.readMPINT(); 4048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood signature = tr.readByteString(); 4148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 4248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood if (tr.remain() != 0) throw new IOException("PADDING IN SSH_MSG_KEXDH_REPLY!"); 4348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 4448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 4548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public BigInteger getF() 4648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 4748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood return f; 4848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 4948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 5048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public byte[] getHostKey() 5148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 5248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood return hostKey; 5348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 5448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 5548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public byte[] getSignature() 5648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 5748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood return signature; 5848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 5948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood} 60