KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > ch > ethz > ssh2 > packets > PacketKexInit


1
2 package ch.ethz.ssh2.packets;
3
4 import java.io.IOException JavaDoc;
5 import java.security.SecureRandom JavaDoc;
6
7 import ch.ethz.ssh2.crypto.CryptoWishList;
8 import ch.ethz.ssh2.transport.KexParameters;
9
10 /**
11  * PacketKexInit.
12  *
13  * @author Christian Plattner, plattner@inf.ethz.ch
14  * @version $Id: PacketKexInit.java,v 1.4 2006/02/14 19:43:15 cplattne Exp $
15  */

16 public class PacketKexInit
17 {
18     byte[] payload;
19
20     KexParameters kp = new KexParameters();
21
22     public PacketKexInit(CryptoWishList cwl, SecureRandom JavaDoc rnd)
23     {
24         kp.cookie = new byte[16];
25         rnd.nextBytes(kp.cookie);
26
27         kp.kex_algorithms = cwl.kexAlgorithms;
28         kp.server_host_key_algorithms = cwl.serverHostKeyAlgorithms;
29         kp.encryption_algorithms_client_to_server = cwl.c2s_enc_algos;
30         kp.encryption_algorithms_server_to_client = cwl.s2c_enc_algos;
31         kp.mac_algorithms_client_to_server = cwl.c2s_mac_algos;
32         kp.mac_algorithms_server_to_client = cwl.s2c_mac_algos;
33         kp.compression_algorithms_client_to_server = new String JavaDoc[] { "none" };
34         kp.compression_algorithms_server_to_client = new String JavaDoc[] { "none" };
35         kp.languages_client_to_server = new String JavaDoc[] {};
36         kp.languages_server_to_client = new String JavaDoc[] {};
37         kp.first_kex_packet_follows = false;
38         kp.reserved_field1 = 0;
39     }
40
41     public PacketKexInit(byte payload[], int off, int len) throws IOException JavaDoc
42     {
43         this.payload = new byte[len];
44         System.arraycopy(payload, off, this.payload, 0, len);
45
46         TypesReader tr = new TypesReader(payload, off, len);
47
48         int packet_type = tr.readByte();
49
50         if (packet_type != Packets.SSH_MSG_KEXINIT)
51             throw new IOException JavaDoc("This is not a KexInitPacket! (" + packet_type + ")");
52
53         kp.cookie = tr.readBytes(16);
54         kp.kex_algorithms = tr.readNameList();
55         kp.server_host_key_algorithms = tr.readNameList();
56         kp.encryption_algorithms_client_to_server = tr.readNameList();
57         kp.encryption_algorithms_server_to_client = tr.readNameList();
58         kp.mac_algorithms_client_to_server = tr.readNameList();
59         kp.mac_algorithms_server_to_client = tr.readNameList();
60         kp.compression_algorithms_client_to_server = tr.readNameList();
61         kp.compression_algorithms_server_to_client = tr.readNameList();
62         kp.languages_client_to_server = tr.readNameList();
63         kp.languages_server_to_client = tr.readNameList();
64         kp.first_kex_packet_follows = tr.readBoolean();
65         kp.reserved_field1 = tr.readUINT32();
66
67         if (tr.remain() != 0)
68             throw new IOException JavaDoc("Padding in KexInitPacket!");
69     }
70
71     public byte[] getPayload()
72     {
73         if (payload == null)
74         {
75             TypesWriter tw = new TypesWriter();
76             tw.writeByte(Packets.SSH_MSG_KEXINIT);
77             tw.writeBytes(kp.cookie, 0, 16);
78             tw.writeNameList(kp.kex_algorithms);
79             tw.writeNameList(kp.server_host_key_algorithms);
80             tw.writeNameList(kp.encryption_algorithms_client_to_server);
81             tw.writeNameList(kp.encryption_algorithms_server_to_client);
82             tw.writeNameList(kp.mac_algorithms_client_to_server);
83             tw.writeNameList(kp.mac_algorithms_server_to_client);
84             tw.writeNameList(kp.compression_algorithms_client_to_server);
85             tw.writeNameList(kp.compression_algorithms_server_to_client);
86             tw.writeNameList(kp.languages_client_to_server);
87             tw.writeNameList(kp.languages_server_to_client);
88             tw.writeBoolean(kp.first_kex_packet_follows);
89             tw.writeUINT32(kp.reserved_field1);
90             payload = tw.getBytes();
91         }
92         return payload;
93     }
94
95     public KexParameters getKexParameters()
96     {
97         return kp;
98     }
99
100     public String JavaDoc[] getCompression_algorithms_client_to_server()
101     {
102         return kp.compression_algorithms_client_to_server;
103     }
104
105     public String JavaDoc[] getCompression_algorithms_server_to_client()
106     {
107         return kp.compression_algorithms_server_to_client;
108     }
109
110     public byte[] getCookie()
111     {
112         return kp.cookie;
113     }
114
115     public String JavaDoc[] getEncryption_algorithms_client_to_server()
116     {
117         return kp.encryption_algorithms_client_to_server;
118     }
119
120     public String JavaDoc[] getEncryption_algorithms_server_to_client()
121     {
122         return kp.encryption_algorithms_server_to_client;
123     }
124
125     public boolean isFirst_kex_packet_follows()
126     {
127         return kp.first_kex_packet_follows;
128     }
129
130     public String JavaDoc[] getKex_algorithms()
131     {
132         return kp.kex_algorithms;
133     }
134
135     public String JavaDoc[] getLanguages_client_to_server()
136     {
137         return kp.languages_client_to_server;
138     }
139
140     public String JavaDoc[] getLanguages_server_to_client()
141     {
142         return kp.languages_server_to_client;
143     }
144
145     public String JavaDoc[] getMac_algorithms_client_to_server()
146     {
147         return kp.mac_algorithms_client_to_server;
148     }
149
150     public String JavaDoc[] getMac_algorithms_server_to_client()
151     {
152         return kp.mac_algorithms_server_to_client;
153     }
154
155     public int getReserved_field1()
156     {
157         return kp.reserved_field1;
158     }
159
160     public String JavaDoc[] getServer_host_key_algorithms()
161     {
162         return kp.server_host_key_algorithms;
163     }
164 }
165
Popular Tags