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 * PacketKexDhGexGroup.
1348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood *
1448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @author Christian Plattner
1548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @version 2.50, 03/15/10
1648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */
1748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpublic class PacketKexDhGexGroup
1848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood{
1948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	byte[] payload;
2048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
2148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	BigInteger p;
2248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	BigInteger g;
2348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
2448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public PacketKexDhGexGroup(byte payload[], int off, int len) throws IOException
2548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	{
2648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		this.payload = new byte[len];
2748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		System.arraycopy(payload, off, this.payload, 0, len);
2848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
2948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		TypesReader tr = new TypesReader(payload, off, len);
3048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
3148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		int packet_type = tr.readByte();
3248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
3348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		if (packet_type != Packets.SSH_MSG_KEX_DH_GEX_GROUP)
3448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood			throw new IllegalArgumentException(
3548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood					"This is not a SSH_MSG_KEX_DH_GEX_GROUP! (" + packet_type
3648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood							+ ")");
3748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
3848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		p = tr.readMPINT();
3948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		g = tr.readMPINT();
4048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
4148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		if (tr.remain() != 0)
4248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood			throw new IOException("PADDING IN SSH_MSG_KEX_DH_GEX_GROUP!");
4348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	}
4448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
4548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public BigInteger getG()
4648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	{
4748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		return g;
4848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	}
4948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
5048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public BigInteger getP()
5148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	{
5248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		return p;
5348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	}
5448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood}
55