Mercurial > 510Connectbot
comparison src/ch/ethz/ssh2/DHGexParameters.java @ 308:42b15aaa7ac7 ganymed
merge
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Wed, 30 Jul 2014 14:21:50 -0700 |
parents | 071eccdff8ea |
children |
comparison
equal
deleted
inserted
replaced
306:90e47d99ea54 | 308:42b15aaa7ac7 |
---|---|
9 * the diffie-hellman group exchange. | 9 * the diffie-hellman group exchange. |
10 * <p> | 10 * <p> |
11 * Depending on which constructor is used, either the use of a | 11 * Depending on which constructor is used, either the use of a |
12 * <code>SSH_MSG_KEX_DH_GEX_REQUEST</code> or <code>SSH_MSG_KEX_DH_GEX_REQUEST_OLD</code> | 12 * <code>SSH_MSG_KEX_DH_GEX_REQUEST</code> or <code>SSH_MSG_KEX_DH_GEX_REQUEST_OLD</code> |
13 * can be forced. | 13 * can be forced. |
14 * | 14 * |
15 * @see Connection#setDHGexParameters(DHGexParameters) | 15 * @see Connection#setDHGexParameters(DHGexParameters) |
16 * @author Christian Plattner | 16 * @author Christian Plattner |
17 * @version 2.50, 03/15/10 | 17 * @version 2.50, 03/15/10 |
18 */ | 18 */ |
19 | 19 |
20 public class DHGexParameters | 20 public class DHGexParameters { |
21 { | 21 private final int min_group_len; |
22 private final int min_group_len; | 22 private final int pref_group_len; |
23 private final int pref_group_len; | 23 private final int max_group_len; |
24 private final int max_group_len; | |
25 | 24 |
26 private static final int MIN_ALLOWED = 1024; | 25 private static final int MIN_ALLOWED = 1024; |
27 private static final int MAX_ALLOWED = 8192; | 26 private static final int MAX_ALLOWED = 8192; |
28 | 27 |
29 /** | 28 /** |
30 * Same as calling {@link #DHGexParameters(int, int, int) DHGexParameters(1024, 1024, 4096)}. | 29 * Same as calling {@link #DHGexParameters(int, int, int) DHGexParameters(1024, 1024, 4096)}. |
31 * This is also the default used by the Connection class. | 30 * This is also the default used by the Connection class. |
32 * | 31 * |
33 */ | 32 */ |
34 public DHGexParameters() | 33 public DHGexParameters() { |
35 { | 34 this(1024, 1024, 4096); |
36 this(1024, 1024, 4096); | 35 } |
37 } | |
38 | 36 |
39 /** | 37 /** |
40 * This constructor can be used to force the sending of a | 38 * This constructor can be used to force the sending of a |
41 * <code>SSH_MSG_KEX_DH_GEX_REQUEST_OLD</code> request. | 39 * <code>SSH_MSG_KEX_DH_GEX_REQUEST_OLD</code> request. |
42 * Internally, the minimum and maximum group lengths will | 40 * Internally, the minimum and maximum group lengths will |
43 * be set to zero. | 41 * be set to zero. |
44 * | 42 * |
45 * @param pref_group_len has to be >= 1024 and <= 8192 | 43 * @param pref_group_len has to be >= 1024 and <= 8192 |
46 */ | 44 */ |
47 public DHGexParameters(int pref_group_len) | 45 public DHGexParameters(int pref_group_len) { |
48 { | 46 if ((pref_group_len < MIN_ALLOWED) || (pref_group_len > MAX_ALLOWED)) |
49 if ((pref_group_len < MIN_ALLOWED) || (pref_group_len > MAX_ALLOWED)) | 47 throw new IllegalArgumentException("pref_group_len out of range!"); |
50 throw new IllegalArgumentException("pref_group_len out of range!"); | |
51 | 48 |
52 this.pref_group_len = pref_group_len; | 49 this.pref_group_len = pref_group_len; |
53 this.min_group_len = 0; | 50 this.min_group_len = 0; |
54 this.max_group_len = 0; | 51 this.max_group_len = 0; |
55 } | 52 } |
56 | 53 |
57 /** | 54 /** |
58 * This constructor can be used to force the sending of a | 55 * This constructor can be used to force the sending of a |
59 * <code>SSH_MSG_KEX_DH_GEX_REQUEST</code> request. | 56 * <code>SSH_MSG_KEX_DH_GEX_REQUEST</code> request. |
60 * <p> | 57 * <p> |
61 * Note: older OpenSSH servers don't understand this request, in which | 58 * Note: older OpenSSH servers don't understand this request, in which |
62 * case you should use the {@link #DHGexParameters(int)} constructor. | 59 * case you should use the {@link #DHGexParameters(int)} constructor. |
63 * <p> | 60 * <p> |
64 * All values have to be >= 1024 and <= 8192. Furthermore, | 61 * All values have to be >= 1024 and <= 8192. Furthermore, |
65 * min_group_len <= pref_group_len <= max_group_len. | 62 * min_group_len <= pref_group_len <= max_group_len. |
66 * | 63 * |
67 * @param min_group_len | 64 * @param min_group_len |
68 * @param pref_group_len | 65 * @param pref_group_len |
69 * @param max_group_len | 66 * @param max_group_len |
70 */ | 67 */ |
71 public DHGexParameters(int min_group_len, int pref_group_len, int max_group_len) | 68 public DHGexParameters(int min_group_len, int pref_group_len, int max_group_len) { |
72 { | 69 if ((min_group_len < MIN_ALLOWED) || (min_group_len > MAX_ALLOWED)) |
73 if ((min_group_len < MIN_ALLOWED) || (min_group_len > MAX_ALLOWED)) | 70 throw new IllegalArgumentException("min_group_len out of range!"); |
74 throw new IllegalArgumentException("min_group_len out of range!"); | |
75 | 71 |
76 if ((pref_group_len < MIN_ALLOWED) || (pref_group_len > MAX_ALLOWED)) | 72 if ((pref_group_len < MIN_ALLOWED) || (pref_group_len > MAX_ALLOWED)) |
77 throw new IllegalArgumentException("pref_group_len out of range!"); | 73 throw new IllegalArgumentException("pref_group_len out of range!"); |
78 | 74 |
79 if ((max_group_len < MIN_ALLOWED) || (max_group_len > MAX_ALLOWED)) | 75 if ((max_group_len < MIN_ALLOWED) || (max_group_len > MAX_ALLOWED)) |
80 throw new IllegalArgumentException("max_group_len out of range!"); | 76 throw new IllegalArgumentException("max_group_len out of range!"); |
81 | 77 |
82 if ((pref_group_len < min_group_len) || (pref_group_len > max_group_len)) | 78 if ((pref_group_len < min_group_len) || (pref_group_len > max_group_len)) |
83 throw new IllegalArgumentException("pref_group_len is incompatible with min and max!"); | 79 throw new IllegalArgumentException("pref_group_len is incompatible with min and max!"); |
84 | 80 |
85 if (max_group_len < min_group_len) | 81 if (max_group_len < min_group_len) |
86 throw new IllegalArgumentException("max_group_len must not be smaller than min_group_len!"); | 82 throw new IllegalArgumentException("max_group_len must not be smaller than min_group_len!"); |
87 | 83 |
88 this.min_group_len = min_group_len; | 84 this.min_group_len = min_group_len; |
89 this.pref_group_len = pref_group_len; | 85 this.pref_group_len = pref_group_len; |
90 this.max_group_len = max_group_len; | 86 this.max_group_len = max_group_len; |
91 } | 87 } |
92 | 88 |
93 /** | 89 /** |
94 * Get the maximum group length. | 90 * Get the maximum group length. |
95 * | 91 * |
96 * @return the maximum group length, may be <code>zero</code> if | 92 * @return the maximum group length, may be <code>zero</code> if |
97 * SSH_MSG_KEX_DH_GEX_REQUEST_OLD should be requested | 93 * SSH_MSG_KEX_DH_GEX_REQUEST_OLD should be requested |
98 */ | 94 */ |
99 public int getMax_group_len() | 95 public int getMax_group_len() { |
100 { | 96 return max_group_len; |
101 return max_group_len; | 97 } |
102 } | |
103 | 98 |
104 /** | 99 /** |
105 * Get the minimum group length. | 100 * Get the minimum group length. |
106 * | 101 * |
107 * @return minimum group length, may be <code>zero</code> if | 102 * @return minimum group length, may be <code>zero</code> if |
108 * SSH_MSG_KEX_DH_GEX_REQUEST_OLD should be requested | 103 * SSH_MSG_KEX_DH_GEX_REQUEST_OLD should be requested |
109 */ | 104 */ |
110 public int getMin_group_len() | 105 public int getMin_group_len() { |
111 { | 106 return min_group_len; |
112 return min_group_len; | 107 } |
113 } | |
114 | 108 |
115 /** | 109 /** |
116 * Get the preferred group length. | 110 * Get the preferred group length. |
117 * | 111 * |
118 * @return the preferred group length | 112 * @return the preferred group length |
119 */ | 113 */ |
120 public int getPref_group_len() | 114 public int getPref_group_len() { |
121 { | 115 return pref_group_len; |
122 return pref_group_len; | 116 } |
123 } | |
124 } | 117 } |