summaryrefslogtreecommitdiff
path: root/go/current/sdk_library/public/android.net.ipsec.ike.txt
blob: 21afce48e7db161bf65dcda5f91093226e3b9f78 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
// Signature format: 2.0
package android.net.eap {

  public final class EapAkaInfo extends android.net.eap.EapInfo {
    method @Nullable public byte[] getReauthId();
  }

  public static final class EapAkaInfo.Builder {
    ctor public EapAkaInfo.Builder();
    method @NonNull public android.net.eap.EapAkaInfo build();
    method @NonNull public android.net.eap.EapAkaInfo.Builder setReauthId(@NonNull byte[]);
  }

  public abstract class EapInfo {
    method public final int getEapMethodType();
  }

  public final class EapSessionConfig {
    method @Nullable public android.net.eap.EapSessionConfig.EapAkaConfig getEapAkaConfig();
    method @Nullable public android.net.eap.EapSessionConfig.EapAkaPrimeConfig getEapAkaPrimeConfig();
    method @NonNull public byte[] getEapIdentity();
    method @Nullable public android.net.eap.EapSessionConfig.EapMsChapV2Config getEapMsChapV2Config();
    method @Nullable public android.net.eap.EapSessionConfig.EapSimConfig getEapSimConfig();
    method @Nullable public android.net.eap.EapSessionConfig.EapTtlsConfig getEapTtlsConfig();
  }

  public static final class EapSessionConfig.Builder {
    ctor public EapSessionConfig.Builder();
    method @NonNull public android.net.eap.EapSessionConfig build();
    method @NonNull public android.net.eap.EapSessionConfig.Builder setEapAkaConfig(int, int);
    method @NonNull public android.net.eap.EapSessionConfig.Builder setEapAkaConfig(int, int, @NonNull android.net.eap.EapSessionConfig.EapAkaOption);
    method @NonNull public android.net.eap.EapSessionConfig.Builder setEapAkaPrimeConfig(int, int, @NonNull String, boolean);
    method @NonNull public android.net.eap.EapSessionConfig.Builder setEapIdentity(@NonNull byte[]);
    method @NonNull public android.net.eap.EapSessionConfig.Builder setEapMsChapV2Config(@NonNull String, @NonNull String);
    method @NonNull public android.net.eap.EapSessionConfig.Builder setEapSimConfig(int, int);
    method @NonNull public android.net.eap.EapSessionConfig.Builder setEapTtlsConfig(@Nullable java.security.cert.X509Certificate, @NonNull android.net.eap.EapSessionConfig);
  }

  public static class EapSessionConfig.EapAkaConfig extends android.net.eap.EapSessionConfig.EapMethodConfig {
    method public int getAppType();
    method @NonNull public android.net.eap.EapSessionConfig.EapAkaOption getEapAkaOption();
    method public int getSubId();
  }

  public static final class EapSessionConfig.EapAkaOption {
    method @Nullable public byte[] getReauthId();
  }

  public static final class EapSessionConfig.EapAkaOption.Builder {
    ctor public EapSessionConfig.EapAkaOption.Builder();
    method @NonNull public android.net.eap.EapSessionConfig.EapAkaOption build();
    method @NonNull public android.net.eap.EapSessionConfig.EapAkaOption.Builder setReauthId(@NonNull byte[]);
  }

  public static class EapSessionConfig.EapAkaPrimeConfig extends android.net.eap.EapSessionConfig.EapAkaConfig {
    method public boolean allowsMismatchedNetworkNames();
    method @NonNull public String getNetworkName();
  }

  public abstract static class EapSessionConfig.EapMethodConfig {
    method public int getMethodType();
    field public static final int EAP_TYPE_AKA = 23; // 0x17
    field public static final int EAP_TYPE_AKA_PRIME = 50; // 0x32
    field public static final int EAP_TYPE_MSCHAP_V2 = 26; // 0x1a
    field public static final int EAP_TYPE_SIM = 18; // 0x12
    field public static final int EAP_TYPE_TTLS = 21; // 0x15
  }

  public static class EapSessionConfig.EapMsChapV2Config extends android.net.eap.EapSessionConfig.EapMethodConfig {
    method @NonNull public String getPassword();
    method @NonNull public String getUsername();
  }

  public static class EapSessionConfig.EapSimConfig extends android.net.eap.EapSessionConfig.EapMethodConfig {
    method public int getAppType();
    method public int getSubId();
  }

  public static class EapSessionConfig.EapTtlsConfig extends android.net.eap.EapSessionConfig.EapMethodConfig {
    method @NonNull public android.net.eap.EapSessionConfig getInnerEapSessionConfig();
    method @Nullable public java.security.cert.X509Certificate getServerCaCert();
  }

}

package android.net.ipsec.ike {

  public final class ChildSaProposal extends android.net.ipsec.ike.SaProposal {
    method @NonNull public static java.util.Set<java.lang.Integer> getSupportedEncryptionAlgorithms();
    method @NonNull public static java.util.Set<java.lang.Integer> getSupportedIntegrityAlgorithms();
  }

  public static final class ChildSaProposal.Builder {
    ctor public ChildSaProposal.Builder();
    method @NonNull public android.net.ipsec.ike.ChildSaProposal.Builder addDhGroup(int);
    method @NonNull public android.net.ipsec.ike.ChildSaProposal.Builder addEncryptionAlgorithm(int, int);
    method @NonNull public android.net.ipsec.ike.ChildSaProposal.Builder addIntegrityAlgorithm(int);
    method @NonNull public android.net.ipsec.ike.ChildSaProposal build();
  }

  public interface ChildSessionCallback {
    method public void onClosed();
    method public default void onClosedWithException(@NonNull android.net.ipsec.ike.exceptions.IkeException);
    method public void onIpSecTransformCreated(@NonNull android.net.IpSecTransform, int);
    method public void onIpSecTransformDeleted(@NonNull android.net.IpSecTransform, int);
    method public void onOpened(@NonNull android.net.ipsec.ike.ChildSessionConfiguration);
  }

  public final class ChildSessionConfiguration {
    method @NonNull public java.util.List<android.net.ipsec.ike.IkeTrafficSelector> getInboundTrafficSelectors();
    method @NonNull public java.util.List<android.net.ipsec.ike.IkeTrafficSelector> getOutboundTrafficSelectors();
  }

  public static final class ChildSessionConfiguration.Builder {
    ctor public ChildSessionConfiguration.Builder(@NonNull java.util.List<android.net.ipsec.ike.IkeTrafficSelector>, @NonNull java.util.List<android.net.ipsec.ike.IkeTrafficSelector>);
    method @NonNull public android.net.ipsec.ike.ChildSessionConfiguration build();
  }

  public abstract class ChildSessionParams {
    method @NonNull public java.util.List<android.net.ipsec.ike.ChildSaProposal> getChildSaProposals();
    method @IntRange(from=0x12c, to=0x3840) public int getHardLifetimeSeconds();
    method @NonNull public java.util.List<android.net.ipsec.ike.IkeTrafficSelector> getInboundTrafficSelectors();
    method @NonNull public java.util.List<android.net.ipsec.ike.IkeTrafficSelector> getOutboundTrafficSelectors();
    method @IntRange(from=0x78, to=0x3840) public int getSoftLifetimeSeconds();
  }

  public final class IkeDerAsn1DnIdentification extends android.net.ipsec.ike.IkeIdentification {
    ctor public IkeDerAsn1DnIdentification(@NonNull javax.security.auth.x500.X500Principal);
    field @NonNull public final javax.security.auth.x500.X500Principal derAsn1Dn;
  }

  public class IkeFqdnIdentification extends android.net.ipsec.ike.IkeIdentification {
    ctor public IkeFqdnIdentification(@NonNull String);
    field @NonNull public final String fqdn;
  }

  public abstract class IkeIdentification {
  }

  public final class IkeIpv4AddrIdentification extends android.net.ipsec.ike.IkeIdentification {
    ctor public IkeIpv4AddrIdentification(@NonNull java.net.Inet4Address);
    field @NonNull public final java.net.Inet4Address ipv4Address;
  }

  public class IkeIpv6AddrIdentification extends android.net.ipsec.ike.IkeIdentification {
    ctor public IkeIpv6AddrIdentification(@NonNull java.net.Inet6Address);
    field @NonNull public final java.net.Inet6Address ipv6Address;
  }

  public final class IkeKeyIdIdentification extends android.net.ipsec.ike.IkeIdentification {
    ctor public IkeKeyIdIdentification(@NonNull byte[]);
    field @NonNull public final byte[] keyId;
  }

  public final class IkeRfc822AddrIdentification extends android.net.ipsec.ike.IkeIdentification {
    ctor public IkeRfc822AddrIdentification(@NonNull String);
    field @NonNull public final String rfc822Name;
  }

  public final class IkeSaProposal extends android.net.ipsec.ike.SaProposal {
    method @NonNull public java.util.List<java.lang.Integer> getPseudorandomFunctions();
    method @NonNull public static java.util.Set<java.lang.Integer> getSupportedEncryptionAlgorithms();
    method @NonNull public static java.util.Set<java.lang.Integer> getSupportedIntegrityAlgorithms();
    method @NonNull public static java.util.Set<java.lang.Integer> getSupportedPseudorandomFunctions();
  }

  public static final class IkeSaProposal.Builder {
    ctor public IkeSaProposal.Builder();
    method @NonNull public android.net.ipsec.ike.IkeSaProposal.Builder addDhGroup(int);
    method @NonNull public android.net.ipsec.ike.IkeSaProposal.Builder addEncryptionAlgorithm(int, int);
    method @NonNull public android.net.ipsec.ike.IkeSaProposal.Builder addIntegrityAlgorithm(int);
    method @NonNull public android.net.ipsec.ike.IkeSaProposal.Builder addPseudorandomFunction(int);
    method @NonNull public android.net.ipsec.ike.IkeSaProposal build();
  }

  public final class IkeSession implements java.lang.AutoCloseable {
    ctor public IkeSession(@NonNull android.content.Context, @NonNull android.net.ipsec.ike.IkeSessionParams, @NonNull android.net.ipsec.ike.ChildSessionParams, @NonNull java.util.concurrent.Executor, @NonNull android.net.ipsec.ike.IkeSessionCallback, @NonNull android.net.ipsec.ike.ChildSessionCallback);
    method public void close();
    method public void closeChildSession(@NonNull android.net.ipsec.ike.ChildSessionCallback);
    method public void finalize();
    method public void kill();
    method public void openChildSession(@NonNull android.net.ipsec.ike.ChildSessionParams, @NonNull android.net.ipsec.ike.ChildSessionCallback);
  }

  public interface IkeSessionCallback {
    method public void onClosed();
    method public default void onClosedWithException(@NonNull android.net.ipsec.ike.exceptions.IkeException);
    method public default void onError(@NonNull android.net.ipsec.ike.exceptions.IkeException);
    method public void onOpened(@NonNull android.net.ipsec.ike.IkeSessionConfiguration);
  }

  public final class IkeSessionConfiguration {
    method @Nullable public android.net.eap.EapInfo getEapInfo();
    method @NonNull public android.net.ipsec.ike.IkeSessionConnectionInfo getIkeSessionConnectionInfo();
    method @NonNull public String getRemoteApplicationVersion();
    method @NonNull public java.util.List<byte[]> getRemoteVendorIds();
    method public boolean isIkeExtensionEnabled(int);
    field public static final int EXTENSION_TYPE_FRAGMENTATION = 1; // 0x1
    field public static final int EXTENSION_TYPE_MOBIKE = 2; // 0x2
  }

  public static final class IkeSessionConfiguration.Builder {
    ctor public IkeSessionConfiguration.Builder(@NonNull android.net.ipsec.ike.IkeSessionConnectionInfo);
    method @NonNull public android.net.ipsec.ike.IkeSessionConfiguration.Builder addIkeExtension(int);
    method @NonNull public android.net.ipsec.ike.IkeSessionConfiguration.Builder addRemoteVendorId(@NonNull byte[]);
    method @NonNull public android.net.ipsec.ike.IkeSessionConfiguration build();
    method @NonNull public android.net.ipsec.ike.IkeSessionConfiguration.Builder clearIkeExtensions();
    method @NonNull public android.net.ipsec.ike.IkeSessionConfiguration.Builder clearRemoteApplicationVersion();
    method @NonNull public android.net.ipsec.ike.IkeSessionConfiguration.Builder clearRemoteVendorIds();
    method @NonNull public android.net.ipsec.ike.IkeSessionConfiguration.Builder setEapInfo(@Nullable android.net.eap.EapInfo);
    method @NonNull public android.net.ipsec.ike.IkeSessionConfiguration.Builder setRemoteApplicationVersion(@NonNull String);
  }

  public final class IkeSessionConnectionInfo {
    ctor public IkeSessionConnectionInfo(@NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull android.net.Network);
    method @NonNull public java.net.InetAddress getLocalAddress();
    method @NonNull public android.net.Network getNetwork();
    method @NonNull public java.net.InetAddress getRemoteAddress();
  }

  public final class IkeSessionParams {
    method @IntRange(from=0x14, to=0x708) public int getDpdDelaySeconds();
    method @IntRange(from=0x12c, to=0x15180) public int getHardLifetimeSeconds();
    method @NonNull public java.util.List<android.net.ipsec.ike.IkeSaProposal> getIkeSaProposals();
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.IkeAuthConfig getLocalAuthConfig();
    method @NonNull public android.net.ipsec.ike.IkeIdentification getLocalIdentification();
    method @IntRange(from=0xa, to=0xe10) public int getNattKeepAliveDelaySeconds();
    method @Nullable public android.net.Network getNetwork();
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.IkeAuthConfig getRemoteAuthConfig();
    method @NonNull public android.net.ipsec.ike.IkeIdentification getRemoteIdentification();
    method @NonNull public int[] getRetransmissionTimeoutsMillis();
    method @NonNull public String getServerHostname();
    method @IntRange(from=0x78, to=0x15180) public int getSoftLifetimeSeconds();
    method public boolean hasIkeOption(int);
    field public static final int IKE_OPTION_ACCEPT_ANY_REMOTE_ID = 0; // 0x0
    field public static final int IKE_OPTION_EAP_ONLY_AUTH = 1; // 0x1
    field public static final int IKE_OPTION_FORCE_PORT_4500 = 3; // 0x3
    field public static final int IKE_OPTION_INITIAL_CONTACT = 4; // 0x4
    field public static final int IKE_OPTION_MOBIKE = 2; // 0x2
  }

  public static final class IkeSessionParams.Builder {
    ctor public IkeSessionParams.Builder();
    ctor public IkeSessionParams.Builder(@NonNull android.net.ipsec.ike.IkeSessionParams);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder addIkeOption(int);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder addIkeSaProposal(@NonNull android.net.ipsec.ike.IkeSaProposal);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams build();
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder removeIkeOption(int);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder setAuthDigitalSignature(@Nullable java.security.cert.X509Certificate, @NonNull java.security.cert.X509Certificate, @NonNull java.security.PrivateKey);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder setAuthDigitalSignature(@Nullable java.security.cert.X509Certificate, @NonNull java.security.cert.X509Certificate, @NonNull java.util.List<java.security.cert.X509Certificate>, @NonNull java.security.PrivateKey);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder setAuthEap(@Nullable java.security.cert.X509Certificate, @NonNull android.net.eap.EapSessionConfig);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder setAuthPsk(@NonNull byte[]);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder setDpdDelaySeconds(@IntRange(from=0x14, to=0x708) int);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder setLifetimeSeconds(@IntRange(from=0x12c, to=0x15180) int, @IntRange(from=0x78, to=0x15180) int);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder setLocalIdentification(@NonNull android.net.ipsec.ike.IkeIdentification);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder setNattKeepAliveDelaySeconds(@IntRange(from=0xa, to=0xe10) int);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder setNetwork(@Nullable android.net.Network);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder setRemoteIdentification(@NonNull android.net.ipsec.ike.IkeIdentification);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder setRetransmissionTimeoutsMillis(@NonNull int[]);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams.Builder setServerHostname(@NonNull String);
  }

  public abstract static class IkeSessionParams.IkeAuthConfig {
  }

  public static class IkeSessionParams.IkeAuthDigitalSignLocalConfig extends android.net.ipsec.ike.IkeSessionParams.IkeAuthConfig {
    method @NonNull public java.security.cert.X509Certificate getClientEndCertificate();
    method @NonNull public java.util.List<java.security.cert.X509Certificate> getIntermediateCertificates();
    method @NonNull public java.security.PrivateKey getPrivateKey();
  }

  public static class IkeSessionParams.IkeAuthDigitalSignRemoteConfig extends android.net.ipsec.ike.IkeSessionParams.IkeAuthConfig {
    method @Nullable public java.security.cert.X509Certificate getRemoteCaCert();
  }

  public static class IkeSessionParams.IkeAuthEapConfig extends android.net.ipsec.ike.IkeSessionParams.IkeAuthConfig {
    method @NonNull public android.net.eap.EapSessionConfig getEapConfig();
  }

  public static class IkeSessionParams.IkeAuthPskConfig extends android.net.ipsec.ike.IkeSessionParams.IkeAuthConfig {
    method @NonNull public byte[] getPsk();
  }

  public final class IkeTrafficSelector {
    ctor public IkeTrafficSelector(int, int, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress);
    field public final int endPort;
    field @NonNull public final java.net.InetAddress endingAddress;
    field public final int startPort;
    field @NonNull public final java.net.InetAddress startingAddress;
  }

  public final class IkeTunnelConnectionParams {
    ctor public IkeTunnelConnectionParams(@NonNull android.net.ipsec.ike.IkeSessionParams, @NonNull android.net.ipsec.ike.TunnelModeChildSessionParams);
    method @NonNull public android.net.ipsec.ike.IkeSessionParams getIkeSessionParams();
    method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionParams getTunnelModeChildSessionParams();
  }

  public abstract class SaProposal {
    method @NonNull public java.util.List<java.lang.Integer> getDhGroups();
    method @NonNull public java.util.List<android.util.Pair<java.lang.Integer,java.lang.Integer>> getEncryptionAlgorithms();
    method @NonNull public java.util.List<java.lang.Integer> getIntegrityAlgorithms();
    method @NonNull public static java.util.Set<java.lang.Integer> getSupportedDhGroups();
    field public static final int DH_GROUP_1024_BIT_MODP = 2; // 0x2
    field public static final int DH_GROUP_1536_BIT_MODP = 5; // 0x5
    field public static final int DH_GROUP_2048_BIT_MODP = 14; // 0xe
    field public static final int DH_GROUP_3072_BIT_MODP = 15; // 0xf
    field public static final int DH_GROUP_4096_BIT_MODP = 16; // 0x10
    field public static final int DH_GROUP_CURVE_25519 = 31; // 0x1f
    field public static final int DH_GROUP_NONE = 0; // 0x0
    field public static final int ENCRYPTION_ALGORITHM_3DES = 3; // 0x3
    field public static final int ENCRYPTION_ALGORITHM_AES_CBC = 12; // 0xc
    field public static final int ENCRYPTION_ALGORITHM_AES_CTR = 13; // 0xd
    field public static final int ENCRYPTION_ALGORITHM_AES_GCM_12 = 19; // 0x13
    field public static final int ENCRYPTION_ALGORITHM_AES_GCM_16 = 20; // 0x14
    field public static final int ENCRYPTION_ALGORITHM_AES_GCM_8 = 18; // 0x12
    field public static final int ENCRYPTION_ALGORITHM_CHACHA20_POLY1305 = 28; // 0x1c
    field public static final int INTEGRITY_ALGORITHM_AES_CMAC_96 = 8; // 0x8
    field public static final int INTEGRITY_ALGORITHM_AES_XCBC_96 = 5; // 0x5
    field public static final int INTEGRITY_ALGORITHM_HMAC_SHA1_96 = 2; // 0x2
    field public static final int INTEGRITY_ALGORITHM_HMAC_SHA2_256_128 = 12; // 0xc
    field public static final int INTEGRITY_ALGORITHM_HMAC_SHA2_384_192 = 13; // 0xd
    field public static final int INTEGRITY_ALGORITHM_HMAC_SHA2_512_256 = 14; // 0xe
    field public static final int INTEGRITY_ALGORITHM_NONE = 0; // 0x0
    field public static final int KEY_LEN_AES_128 = 128; // 0x80
    field public static final int KEY_LEN_AES_192 = 192; // 0xc0
    field public static final int KEY_LEN_AES_256 = 256; // 0x100
    field public static final int KEY_LEN_UNUSED = 0; // 0x0
    field public static final int PSEUDORANDOM_FUNCTION_AES128_CMAC = 8; // 0x8
    field public static final int PSEUDORANDOM_FUNCTION_AES128_XCBC = 4; // 0x4
    field public static final int PSEUDORANDOM_FUNCTION_HMAC_SHA1 = 2; // 0x2
    field public static final int PSEUDORANDOM_FUNCTION_SHA2_256 = 5; // 0x5
    field public static final int PSEUDORANDOM_FUNCTION_SHA2_384 = 6; // 0x6
    field public static final int PSEUDORANDOM_FUNCTION_SHA2_512 = 7; // 0x7
  }

  public final class TransportModeChildSessionParams extends android.net.ipsec.ike.ChildSessionParams {
  }

  public static final class TransportModeChildSessionParams.Builder {
    ctor public TransportModeChildSessionParams.Builder();
    ctor public TransportModeChildSessionParams.Builder(@NonNull android.net.ipsec.ike.TransportModeChildSessionParams);
    method @NonNull public android.net.ipsec.ike.TransportModeChildSessionParams.Builder addChildSaProposal(@NonNull android.net.ipsec.ike.ChildSaProposal);
    method @NonNull public android.net.ipsec.ike.TransportModeChildSessionParams.Builder addInboundTrafficSelectors(@NonNull android.net.ipsec.ike.IkeTrafficSelector);
    method @NonNull public android.net.ipsec.ike.TransportModeChildSessionParams.Builder addOutboundTrafficSelectors(@NonNull android.net.ipsec.ike.IkeTrafficSelector);
    method @NonNull public android.net.ipsec.ike.TransportModeChildSessionParams build();
    method @NonNull public android.net.ipsec.ike.TransportModeChildSessionParams.Builder setLifetimeSeconds(@IntRange(from=0x12c, to=0x3840) int, @IntRange(from=0x78, to=0x3840) int);
  }

  public final class TunnelModeChildSessionParams extends android.net.ipsec.ike.ChildSessionParams {
    method @NonNull public java.util.List<android.net.ipsec.ike.TunnelModeChildSessionParams.TunnelModeChildConfigRequest> getConfigurationRequests();
  }

  public static final class TunnelModeChildSessionParams.Builder {
    ctor public TunnelModeChildSessionParams.Builder();
    ctor public TunnelModeChildSessionParams.Builder(@NonNull android.net.ipsec.ike.TunnelModeChildSessionParams);
    method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionParams.Builder addChildSaProposal(@NonNull android.net.ipsec.ike.ChildSaProposal);
    method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionParams.Builder addInboundTrafficSelectors(@NonNull android.net.ipsec.ike.IkeTrafficSelector);
    method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionParams.Builder addInternalAddressRequest(int);
    method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionParams.Builder addInternalAddressRequest(@NonNull java.net.Inet4Address);
    method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionParams.Builder addInternalAddressRequest(@NonNull java.net.Inet6Address, int);
    method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionParams.Builder addInternalDhcpServerRequest(int);
    method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionParams.Builder addInternalDnsServerRequest(int);
    method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionParams.Builder addOutboundTrafficSelectors(@NonNull android.net.ipsec.ike.IkeTrafficSelector);
    method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionParams build();
    method @NonNull public android.net.ipsec.ike.TunnelModeChildSessionParams.Builder setLifetimeSeconds(@IntRange(from=0x12c, to=0x3840) int, @IntRange(from=0x78, to=0x3840) int);
  }

  public static interface TunnelModeChildSessionParams.ConfigRequestIpv4Address extends android.net.ipsec.ike.TunnelModeChildSessionParams.TunnelModeChildConfigRequest {
    method @Nullable public java.net.Inet4Address getAddress();
  }

  public static interface TunnelModeChildSessionParams.ConfigRequestIpv4DhcpServer extends android.net.ipsec.ike.TunnelModeChildSessionParams.TunnelModeChildConfigRequest {
  }

  public static interface TunnelModeChildSessionParams.ConfigRequestIpv4DnsServer extends android.net.ipsec.ike.TunnelModeChildSessionParams.TunnelModeChildConfigRequest {
  }

  public static interface TunnelModeChildSessionParams.ConfigRequestIpv4Netmask extends android.net.ipsec.ike.TunnelModeChildSessionParams.TunnelModeChildConfigRequest {
  }

  public static interface TunnelModeChildSessionParams.ConfigRequestIpv6Address extends android.net.ipsec.ike.TunnelModeChildSessionParams.TunnelModeChildConfigRequest {
    method @Nullable public java.net.Inet6Address getAddress();
    method public int getPrefixLength();
  }

  public static interface TunnelModeChildSessionParams.ConfigRequestIpv6DnsServer extends android.net.ipsec.ike.TunnelModeChildSessionParams.TunnelModeChildConfigRequest {
  }

  public static interface TunnelModeChildSessionParams.TunnelModeChildConfigRequest {
  }

}

package android.net.ipsec.ike.exceptions {

  public abstract class IkeException extends java.lang.Exception {
  }

  public final class IkeIOException extends android.net.ipsec.ike.exceptions.IkeNonProtocolException {
    ctor public IkeIOException(@NonNull java.io.IOException);
    method @NonNull public java.io.IOException getCause();
  }

  public final class IkeInternalException extends android.net.ipsec.ike.exceptions.IkeNonProtocolException {
    ctor public IkeInternalException(@NonNull Throwable);
    ctor public IkeInternalException(@NonNull String, @NonNull Throwable);
  }

  public final class IkeNetworkLostException extends android.net.ipsec.ike.exceptions.IkeNonProtocolException {
    ctor public IkeNetworkLostException(@NonNull android.net.Network);
    method @NonNull public android.net.Network getNetwork();
  }

  public abstract class IkeNonProtocolException extends android.net.ipsec.ike.exceptions.IkeException {
  }

  public abstract class IkeProtocolException extends android.net.ipsec.ike.exceptions.IkeException {
    method public int getErrorType();
    field public static final int ERROR_TYPE_AUTHENTICATION_FAILED = 24; // 0x18
    field public static final int ERROR_TYPE_CHILD_SA_NOT_FOUND = 44; // 0x2c
    field public static final int ERROR_TYPE_FAILED_CP_REQUIRED = 37; // 0x25
    field public static final int ERROR_TYPE_INTERNAL_ADDRESS_FAILURE = 36; // 0x24
    field public static final int ERROR_TYPE_INVALID_IKE_SPI = 4; // 0x4
    field public static final int ERROR_TYPE_INVALID_KE_PAYLOAD = 17; // 0x11
    field public static final int ERROR_TYPE_INVALID_MAJOR_VERSION = 5; // 0x5
    field public static final int ERROR_TYPE_INVALID_MESSAGE_ID = 9; // 0x9
    field public static final int ERROR_TYPE_INVALID_SELECTORS = 39; // 0x27
    field public static final int ERROR_TYPE_INVALID_SYNTAX = 7; // 0x7
    field public static final int ERROR_TYPE_NO_ADDITIONAL_SAS = 35; // 0x23
    field public static final int ERROR_TYPE_NO_PROPOSAL_CHOSEN = 14; // 0xe
    field public static final int ERROR_TYPE_SINGLE_PAIR_REQUIRED = 34; // 0x22
    field public static final int ERROR_TYPE_TEMPORARY_FAILURE = 43; // 0x2b
    field public static final int ERROR_TYPE_TS_UNACCEPTABLE = 38; // 0x26
    field public static final int ERROR_TYPE_UNSUPPORTED_CRITICAL_PAYLOAD = 1; // 0x1
  }

  public final class IkeTimeoutException extends java.io.IOException {
    ctor public IkeTimeoutException(@NonNull String);
  }

  public final class InvalidKeException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
    ctor public InvalidKeException(int);
    method public int getDhGroup();
  }

  public final class InvalidMajorVersionException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
    ctor public InvalidMajorVersionException(byte);
    method public byte getMajorVersion();
  }

  public final class InvalidSelectorsException extends android.net.ipsec.ike.exceptions.IkeProtocolException {
    ctor public InvalidSelectorsException(int, @NonNull byte[]);
    method @NonNull public byte[] getIpSecPacketInfo();
    method public int getIpSecSpi();
  }

}