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 Lockwood/**
1048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * PacketUserauthInfoRequest.
1148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood *
1248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @author Christian Plattner
1348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @version 2.50, 03/15/10
1448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */
1548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpublic class PacketUserauthInfoRequest
1648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood{
1748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	byte[] payload;
1848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
1948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	String name;
2048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	String instruction;
2148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	String languageTag;
2248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	int numPrompts;
2348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
2448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	String prompt[];
2548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	boolean echo[];
2648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
2748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public PacketUserauthInfoRequest(byte payload[], int off, int len) throws IOException
2848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	{
2948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		this.payload = new byte[len];
3048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		System.arraycopy(payload, off, this.payload, 0, len);
3148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
3248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		TypesReader tr = new TypesReader(payload, off, len);
3348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
3448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		int packet_type = tr.readByte();
3548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
3648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		if (packet_type != Packets.SSH_MSG_USERAUTH_INFO_REQUEST)
3748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood			throw new IOException("This is not a SSH_MSG_USERAUTH_INFO_REQUEST! (" + packet_type + ")");
3848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
3948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		name = tr.readString();
4048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		instruction = tr.readString();
4148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		languageTag = tr.readString();
4248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
4348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		numPrompts = tr.readUINT32();
4448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
4548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		prompt = new String[numPrompts];
4648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		echo = new boolean[numPrompts];
4748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
4848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		for (int i = 0; i < numPrompts; i++)
4948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		{
5048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood			prompt[i] = tr.readString();
5148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood			echo[i] = tr.readBoolean();
5248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		}
5348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
5448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		if (tr.remain() != 0)
5548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood			throw new IOException("Padding in SSH_MSG_USERAUTH_INFO_REQUEST packet!");
5648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	}
5748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
5848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public boolean[] getEcho()
5948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	{
6048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		return echo;
6148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	}
6248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
6348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public String getInstruction()
6448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	{
6548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		return instruction;
6648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	}
6748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
6848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public String getLanguageTag()
6948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	{
7048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		return languageTag;
7148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	}
7248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
7348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public String getName()
7448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	{
7548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		return name;
7648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	}
7748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
7848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public int getNumPrompts()
7948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	{
8048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		return numPrompts;
8148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	}
8248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
8348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public String[] getPrompt()
8448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	{
8548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		return prompt;
8648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	}
8748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood}
88