WifiPasspointDmTree.java revision 7fee7232ee2ae45fb3cd4fcce314e8f1101ae8db
1/* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.net.wifi.passpoint; 18 19import android.os.Parcelable; 20import android.os.Parcel; 21import android.util.Log; 22 23import java.util.HashMap; 24 25/** 26 * Required Mobile Device Management Tree Structure 27 * 28 * +----------+ 29 * | ./(Root) | 30 * +----+-----+ 31 * | 32 * +---------+ | +---------+ +---------+ 33 * | DevInfo |-----------+---------| Wi-Fi |---|SP FQDN* | 34 * +---------+ | +---------+ +---------+ 35 * +---------+ | 36 * |DevDetail|-----------+ 37 * +---------+ 38 * 39 * For example, 40 * ./Wi-Fi/wi-fi.org/PerproviderSubscription/Cred01/Policy/PreferredRoamingPartnerList/Roa01/FQDN_Math 41 * 42 * This class contains all nodes start from Wi-Fi 43 * @hide 44 **/ 45public class WifiPasspointDmTree implements Parcelable { 46 private final static String TAG = "WifiTree"; 47 public int PpsMoId;//plugfest used only 48 public HashMap<String, SpFqdn> spFqdn = new HashMap<String, SpFqdn>();//Maps.newHashMap(); 49 50 public SpFqdn createSpFqdn(String name) { 51 SpFqdn obj = new SpFqdn(name); 52 spFqdn.put(name, obj); 53 return obj; 54 } 55 56 public static class SpFqdn implements Parcelable { 57 public String nodeName; 58 public PerProviderSubscription perProviderSubscription = new PerProviderSubscription(); 59 60 public SpFqdn(String name) { 61 nodeName = name; 62 } 63 64 public SpFqdn() { 65 } 66 67 public SpFqdn(Parcel in) { 68 readFromParcel(in); 69 } 70 71 public int describeContents() { 72 return 0; 73 } 74 75 public void writeToParcel(Parcel out, int flags) { 76 out.writeString(nodeName); 77 out.writeParcelable(perProviderSubscription, flags); 78 } 79 80 public void readFromParcel(Parcel in) { 81 if (in == null) { 82 //log here 83 } else { 84 nodeName = in.readString(); 85 perProviderSubscription = in.readParcelable(PerProviderSubscription.class 86 .getClassLoader()); 87 } 88 } 89 90 public static final Parcelable.Creator<SpFqdn> CREATOR = new Parcelable.Creator<SpFqdn>() { 91 public SpFqdn createFromParcel(Parcel in) { 92 return new SpFqdn(in); 93 } 94 95 public SpFqdn[] newArray(int size) { 96 return new SpFqdn[size]; 97 } 98 }; 99 } 100 101 /** 102 * PerProviderSubscription 103 **/ 104 public static class PerProviderSubscription implements Parcelable { 105 /** 106 * PerProviderSubscription/UpdateIdentifier 107 **/ 108 public String UpdateIdentifier; 109 public HashMap<String, CredentialInfo> credentialInfo = new HashMap<String, CredentialInfo>(); 110 111 public CredentialInfo createCredentialInfo(String name) { 112 CredentialInfo obj = new CredentialInfo(name); 113 credentialInfo.put(name, obj); 114 return obj; 115 } 116 117 public PerProviderSubscription() { 118 } 119 120 public PerProviderSubscription(Parcel in) { 121 readFromParcel(in); 122 } 123 124 public int describeContents() { 125 return 0; 126 } 127 128 public void writeToParcel(Parcel out, int flags) { 129 out.writeString(UpdateIdentifier); 130 out.writeMap(credentialInfo); 131 } 132 133 public void readFromParcel(Parcel in) { 134 if (in == null) { 135 //log here 136 } else { 137 UpdateIdentifier = in.readString(); 138 in.readMap(credentialInfo, CredentialInfo.class.getClassLoader()); 139 } 140 } 141 142 public static final Parcelable.Creator<PerProviderSubscription> CREATOR = new Parcelable.Creator<PerProviderSubscription>() { 143 public PerProviderSubscription createFromParcel(Parcel in) { 144 return new PerProviderSubscription(in); 145 } 146 147 public PerProviderSubscription[] newArray(int size) { 148 return new PerProviderSubscription[size]; 149 } 150 }; 151 152 } 153 154 /** 155 * PerProviderSubscription/<X+> 156 * This interior node contains the Home SP information, subscription policy, management and credential information. 157 **/ 158 public static class CredentialInfo implements Parcelable { 159 public String nodeName; 160 public Policy policy = new Policy(); 161 public String credentialPriority; 162 public HashMap<String, AAAServerTrustRoot> aAAServerTrustRoot = new HashMap<String, AAAServerTrustRoot>(); 163 public SubscriptionUpdate subscriptionUpdate = new SubscriptionUpdate(); 164 public HomeSP homeSP = new HomeSP(); 165 public SubscriptionParameters subscriptionParameters = new SubscriptionParameters(); 166 public Credential credential = new Credential(); 167 public Extension extension = new Extension(); 168 169 public CredentialInfo(String nn) { 170 nodeName = nn; 171 } 172 173 public AAAServerTrustRoot createAAAServerTrustRoot(String name, String url, String fp) { 174 AAAServerTrustRoot obj = new AAAServerTrustRoot(name, url, fp); 175 aAAServerTrustRoot.put(name, obj); 176 return obj; 177 } 178 179 public CredentialInfo() { 180 } 181 182 public CredentialInfo(Parcel in) { 183 readFromParcel(in); 184 } 185 186 public int describeContents() { 187 return 0; 188 } 189 190 public void writeToParcel(Parcel out, int flags) { 191 out.writeString(nodeName); 192 out.writeParcelable(policy, flags); 193 out.writeString(credentialPriority); 194 out.writeMap(aAAServerTrustRoot); 195 out.writeParcelable(subscriptionUpdate, flags); 196 out.writeParcelable(homeSP, flags); 197 out.writeParcelable(subscriptionParameters, flags); 198 out.writeParcelable(credential, flags); 199 //out.writeParcelable(extension, flags); 200 } 201 202 public void readFromParcel(Parcel in) { 203 if (in == null) { 204 //log here 205 } else { 206 nodeName = in.readString(); 207 policy = in.readParcelable(Policy.class.getClassLoader()); 208 credentialPriority = in.readString(); 209 in.readMap(aAAServerTrustRoot, AAAServerTrustRoot.class.getClassLoader()); 210 subscriptionUpdate = in.readParcelable(SubscriptionUpdate.class.getClassLoader()); 211 homeSP = in.readParcelable(HomeSP.class.getClassLoader()); 212 subscriptionParameters = in.readParcelable(SubscriptionParameters.class 213 .getClassLoader()); 214 credential = in.readParcelable(Credential.class.getClassLoader()); 215 //extension = in.readParcelable(Extension.class.getClassLoader()); 216 } 217 } 218 219 public static final Parcelable.Creator<CredentialInfo> CREATOR = new Parcelable.Creator<CredentialInfo>() { 220 public CredentialInfo createFromParcel(Parcel in) { 221 return new CredentialInfo(in); 222 } 223 224 public CredentialInfo[] newArray(int size) { 225 return new CredentialInfo[size]; 226 } 227 }; 228 229 } 230 231 /** 232 * PerProviderSubscription/<X+>/Policy 233 **/ 234 public static class Policy implements Parcelable { 235 public HashMap<String, PreferredRoamingPartnerList> preferredRoamingPartnerList = new HashMap<String, PreferredRoamingPartnerList>(); 236 public HashMap<String, MinBackhaulThresholdNetwork> minBackhaulThreshold = new HashMap<String, MinBackhaulThresholdNetwork>(); 237 public PolicyUpdate policyUpdate = new PolicyUpdate(); 238 public HashMap<String, SPExclusionList> sPExclusionList = new HashMap<String, SPExclusionList>(); 239 public HashMap<String, RequiredProtoPortTuple> requiredProtoPortTuple = new HashMap<String, RequiredProtoPortTuple>(); 240 public String maximumBSSLoadValue; 241 242 public PreferredRoamingPartnerList createPreferredRoamingPartnerList(String name, 243 String fqdn, String priority, String country) { 244 PreferredRoamingPartnerList obj = new PreferredRoamingPartnerList(name, fqdn, priority, 245 country); 246 preferredRoamingPartnerList.put(name, obj); 247 return obj; 248 } 249 250 public MinBackhaulThresholdNetwork createMinBackhaulThreshold(String name, String type, 251 String dl, String ul) { 252 MinBackhaulThresholdNetwork obj = new MinBackhaulThresholdNetwork(name, type, dl, ul); 253 minBackhaulThreshold.put(name, obj); 254 return obj; 255 } 256 257 public SPExclusionList createSPExclusionList(String name, String ssid) { 258 SPExclusionList obj = new SPExclusionList(name, ssid); 259 sPExclusionList.put(name, obj); 260 return obj; 261 } 262 263 public RequiredProtoPortTuple createRequiredProtoPortTuple(String name, String proto, 264 String port) { 265 RequiredProtoPortTuple obj = new RequiredProtoPortTuple(name, proto, port); 266 requiredProtoPortTuple.put(name, obj); 267 return obj; 268 } 269 270 public Policy() { 271 } 272 273 public Policy(Parcel in) { 274 readFromParcel(in); 275 } 276 277 public int describeContents() { 278 return 0; 279 } 280 281 public void writeToParcel(Parcel out, int flags) { 282 out.writeMap(preferredRoamingPartnerList); 283 out.writeMap(minBackhaulThreshold); 284 out.writeParcelable(policyUpdate, flags); 285 out.writeMap(sPExclusionList); 286 out.writeMap(requiredProtoPortTuple); 287 out.writeString(maximumBSSLoadValue); 288 } 289 290 public void readFromParcel(Parcel in) { 291 if (in == null) { 292 //log here 293 } else { 294 in.readMap(preferredRoamingPartnerList, 295 PreferredRoamingPartnerList.class.getClassLoader()); 296 in.readMap(minBackhaulThreshold, MinBackhaulThresholdNetwork.class.getClassLoader()); 297 policyUpdate = in.readParcelable(PolicyUpdate.class.getClassLoader()); 298 in.readMap(sPExclusionList, SPExclusionList.class.getClassLoader()); 299 in.readMap(requiredProtoPortTuple, RequiredProtoPortTuple.class.getClassLoader()); 300 maximumBSSLoadValue = in.readString(); 301 302 } 303 } 304 305 public static final Parcelable.Creator<Policy> CREATOR = new Parcelable.Creator<Policy>() { 306 public Policy createFromParcel(Parcel in) { 307 return new Policy(in); 308 } 309 310 public Policy[] newArray(int size) { 311 return new Policy[size]; 312 } 313 }; 314 315 } 316 317 /** 318 * PerProviderSubscription/<X+>/Policy/PreferredRoamingPartnerList/<X+> 319 **/ 320 public static class PreferredRoamingPartnerList implements Parcelable { 321 public String nodeName; 322 public String FQDN_Match; //maximum 255 + ",includeSubdomains", equals 273 323 public String Priority; 324 public String Country; // maximum 600 octets 325 326 public PreferredRoamingPartnerList(String nn, String f, String p, String c) { 327 nodeName = nn; 328 FQDN_Match = f; 329 Priority = p; 330 Country = c; 331 } 332 333 public PreferredRoamingPartnerList() { 334 } 335 336 public PreferredRoamingPartnerList(Parcel in) { 337 readFromParcel(in); 338 } 339 340 public int describeContents() { 341 return 0; 342 } 343 344 public void writeToParcel(Parcel out, int flags) { 345 out.writeString(nodeName); 346 out.writeString(FQDN_Match); 347 out.writeString(Priority); 348 out.writeString(Country); 349 } 350 351 public void readFromParcel(Parcel in) { 352 if (in == null) { 353 //log here 354 } else { 355 nodeName = in.readString(); 356 FQDN_Match = in.readString(); 357 Priority = in.readString(); 358 Country = in.readString(); 359 } 360 } 361 362 public static final Parcelable.Creator<PreferredRoamingPartnerList> CREATOR = new Parcelable.Creator<PreferredRoamingPartnerList>() { 363 public PreferredRoamingPartnerList createFromParcel(Parcel in) { 364 return new PreferredRoamingPartnerList(in); 365 } 366 367 public PreferredRoamingPartnerList[] newArray(int size) { 368 return new PreferredRoamingPartnerList[size]; 369 } 370 }; 371 } 372 373 /** 374 * PerProviderSubscription/<X+>/Policy/MinBackhaulThreshold 375 **/ 376 public static class MinBackhaulThresholdNetwork implements Parcelable { 377 public String nodeName; 378 public String NetworkType; 379 public String DLBandwidth; 380 public String ULBandwidth; 381 382 public MinBackhaulThresholdNetwork(String nn, String nt, String d, String u) { 383 nodeName = nn; 384 NetworkType = nt; 385 DLBandwidth = d; 386 ULBandwidth = u; 387 } 388 389 public MinBackhaulThresholdNetwork() { 390 } 391 392 public MinBackhaulThresholdNetwork(Parcel in) { 393 readFromParcel(in); 394 } 395 396 public int describeContents() { 397 return 0; 398 } 399 400 public void writeToParcel(Parcel out, int flags) { 401 out.writeString(nodeName); 402 out.writeString(NetworkType); 403 out.writeString(DLBandwidth); 404 out.writeString(ULBandwidth); 405 } 406 407 public void readFromParcel(Parcel in) { 408 if (in == null) { 409 //log here 410 } else { 411 nodeName = in.readString(); 412 NetworkType = in.readString(); 413 DLBandwidth = in.readString(); 414 ULBandwidth = in.readString(); 415 } 416 } 417 418 public static final Parcelable.Creator<MinBackhaulThresholdNetwork> CREATOR = new Parcelable.Creator<MinBackhaulThresholdNetwork>() { 419 public MinBackhaulThresholdNetwork createFromParcel(Parcel in) { 420 return new MinBackhaulThresholdNetwork(in); 421 } 422 423 public MinBackhaulThresholdNetwork[] newArray(int size) { 424 return new MinBackhaulThresholdNetwork[size]; 425 } 426 }; 427 428 } 429 430 /** 431 * PerProviderSubscription/<X+>/Policy/PolicyUpdate 432 **/ 433 public static class PolicyUpdate implements Parcelable { 434 public String UpdateInterval; 435 public String UpdateMethod; 436 public String Restriction; 437 public String URI; 438 public UsernamePassword usernamePassword = new UsernamePassword(); 439 public String Other; 440 public TrustRoot trustRoot = new TrustRoot(); 441 442 public PolicyUpdate() { 443 } 444 445 public PolicyUpdate(Parcel in) { 446 readFromParcel(in); 447 } 448 449 public int describeContents() { 450 return 0; 451 } 452 453 public void writeToParcel(Parcel out, int flags) { 454 out.writeString(UpdateInterval); 455 out.writeString(UpdateMethod); 456 out.writeString(Restriction); 457 out.writeString(URI); 458 out.writeParcelable(usernamePassword, flags); 459 out.writeString(Other); 460 out.writeParcelable(trustRoot, flags); 461 462 } 463 464 public void readFromParcel(Parcel in) { 465 if (in == null) { 466 //log here 467 } else { 468 UpdateInterval = in.readString(); 469 UpdateMethod = in.readString(); 470 Restriction = in.readString(); 471 URI = in.readString(); 472 usernamePassword = in.readParcelable(UsernamePassword.class.getClassLoader()); 473 Other = in.readString(); 474 trustRoot = in.readParcelable(TrustRoot.class.getClassLoader()); 475 } 476 } 477 478 public static final Parcelable.Creator<PolicyUpdate> CREATOR = new Parcelable.Creator<PolicyUpdate>() { 479 public PolicyUpdate createFromParcel(Parcel in) { 480 return new PolicyUpdate(in); 481 } 482 483 public PolicyUpdate[] newArray(int size) { 484 return new PolicyUpdate[size]; 485 } 486 }; 487 } 488 489 /** 490 * PerProviderSubscription/<X+>/Policy/SPExclusionList 491 **/ 492 public static class SPExclusionList implements Parcelable { 493 public String nodeName; 494 public String SSID; 495 496 public SPExclusionList(String nn, String s) { 497 nodeName = nn; 498 SSID = s; 499 } 500 501 public SPExclusionList() { 502 } 503 504 public SPExclusionList(Parcel in) { 505 readFromParcel(in); 506 } 507 508 public int describeContents() { 509 return 0; 510 } 511 512 public void writeToParcel(Parcel out, int flags) { 513 out.writeString(nodeName); 514 out.writeString(SSID); 515 } 516 517 public void readFromParcel(Parcel in) { 518 if (in == null) { 519 //log here 520 } else { 521 nodeName = in.readString(); 522 SSID = in.readString(); 523 } 524 } 525 526 public static final Parcelable.Creator<SPExclusionList> CREATOR = new Parcelable.Creator<SPExclusionList>() { 527 public SPExclusionList createFromParcel(Parcel in) { 528 return new SPExclusionList(in); 529 } 530 531 public SPExclusionList[] newArray(int size) { 532 return new SPExclusionList[size]; 533 } 534 }; 535 } 536 537 /** 538 * PerProviderSubscription/<X+>/Policy/RequiredProtoPortTuple 539 **/ 540 public static class RequiredProtoPortTuple implements Parcelable { 541 public String nodeName; 542 public String IPProtocol; 543 public String PortNumber; 544 545 public RequiredProtoPortTuple() { 546 } 547 548 public RequiredProtoPortTuple(String nn, String protocol, String port) { 549 nodeName = nn; 550 IPProtocol = protocol; 551 PortNumber = port; 552 } 553 554 public RequiredProtoPortTuple(Parcel in) { 555 readFromParcel(in); 556 } 557 558 public int describeContents() { 559 return 0; 560 } 561 562 public void writeToParcel(Parcel out, int flags) { 563 out.writeString(nodeName); 564 out.writeString(IPProtocol); 565 out.writeString(PortNumber); 566 } 567 568 public void readFromParcel(Parcel in) { 569 if (in == null) { 570 //log here 571 } else { 572 nodeName = in.readString(); 573 IPProtocol = in.readString(); 574 PortNumber = in.readString(); 575 } 576 } 577 578 public static final Parcelable.Creator<RequiredProtoPortTuple> CREATOR = new Parcelable.Creator<RequiredProtoPortTuple>() { 579 public RequiredProtoPortTuple createFromParcel(Parcel in) { 580 return new RequiredProtoPortTuple(in); 581 } 582 583 public RequiredProtoPortTuple[] newArray(int size) { 584 return new RequiredProtoPortTuple[size]; 585 } 586 }; 587 } 588 589 /** 590 * PerProviderSubscription/<X+>/AAAServerTrustRoot 591 **/ 592 public static class AAAServerTrustRoot implements Parcelable { 593 public String nodeName; 594 public String CertURL; 595 public String CertSHA256Fingerprint; 596 597 public AAAServerTrustRoot(String nn, String url, String fp) { 598 nodeName = nn; 599 CertURL = url; 600 CertSHA256Fingerprint = fp; 601 } 602 603 public AAAServerTrustRoot() { 604 } 605 606 public AAAServerTrustRoot(Parcel in) { 607 readFromParcel(in); 608 } 609 610 public int describeContents() { 611 return 0; 612 } 613 614 public void writeToParcel(Parcel out, int flags) { 615 out.writeString(nodeName); 616 out.writeString(CertURL); 617 out.writeString(CertSHA256Fingerprint); 618 } 619 620 public void readFromParcel(Parcel in) { 621 if (in == null) { 622 //log here 623 } else { 624 nodeName = in.readString(); 625 CertURL = in.readString(); 626 CertSHA256Fingerprint = in.readString(); 627 } 628 } 629 630 public static final Parcelable.Creator<AAAServerTrustRoot> CREATOR = new Parcelable.Creator<AAAServerTrustRoot>() { 631 public AAAServerTrustRoot createFromParcel(Parcel in) { 632 return new AAAServerTrustRoot(in); 633 } 634 635 public AAAServerTrustRoot[] newArray(int size) { 636 return new AAAServerTrustRoot[size]; 637 } 638 }; 639 } 640 641 /** 642 * PerProviderSubscription/<X+>/SubscriptionUpdate 643 **/ 644 public static class SubscriptionUpdate implements Parcelable { 645 public String UpdateInterval; 646 public String UpdateMethod; 647 public String Restriction; 648 public String URI; 649 public UsernamePassword usernamePassword = new UsernamePassword(); 650 public String Other; 651 public TrustRoot trustRoot = new TrustRoot(); 652 653 public SubscriptionUpdate() { 654 } 655 656 public SubscriptionUpdate(Parcel in) { 657 readFromParcel(in); 658 } 659 660 public int describeContents() { 661 return 0; 662 } 663 664 public void writeToParcel(Parcel out, int flags) { 665 out.writeString(UpdateInterval); 666 out.writeString(UpdateMethod); 667 out.writeString(Restriction); 668 out.writeString(URI); 669 out.writeParcelable(usernamePassword, flags); 670 out.writeString(Other); 671 out.writeParcelable(trustRoot, flags); 672 } 673 674 public void readFromParcel(Parcel in) { 675 if (in == null) { 676 //log here 677 } else { 678 UpdateInterval = in.readString(); 679 UpdateMethod = in.readString(); 680 Restriction = in.readString(); 681 URI = in.readString(); 682 usernamePassword = in.readParcelable(UsernamePassword.class.getClassLoader()); 683 Other = in.readString(); 684 trustRoot = in.readParcelable(TrustRoot.class.getClassLoader()); 685 } 686 } 687 688 public static final Parcelable.Creator<SubscriptionUpdate> CREATOR = new Parcelable.Creator<SubscriptionUpdate>() { 689 public SubscriptionUpdate createFromParcel(Parcel in) { 690 return new SubscriptionUpdate(in); 691 } 692 693 public SubscriptionUpdate[] newArray(int size) { 694 return new SubscriptionUpdate[size]; 695 } 696 }; 697 698 } 699 700 /** 701 * PerProviderSubscription/<X+>/Policy/PolicyUpdate/TrustRoot 702 * PerProviderSubscription/<X+>/SubscriptionUpdate/TrustRoot 703 * PerProviderSubscription/<X+>/AAAServerTrustRoot/<X+> 704 **/ 705 public static class TrustRoot implements Parcelable { 706 public String CertURL; 707 public String CertSHA256Fingerprint; 708 709 public TrustRoot() { 710 } 711 712 public TrustRoot(Parcel in) { 713 readFromParcel(in); 714 } 715 716 public int describeContents() { 717 return 0; 718 } 719 720 public void writeToParcel(Parcel out, int flags) { 721 out.writeString(CertURL); 722 out.writeString(CertSHA256Fingerprint); 723 } 724 725 public void readFromParcel(Parcel in) { 726 if (in == null) { 727 //log here 728 } else { 729 CertURL = in.readString(); 730 CertSHA256Fingerprint = in.readString(); 731 } 732 } 733 734 public static final Parcelable.Creator<TrustRoot> CREATOR = new Parcelable.Creator<TrustRoot>() { 735 public TrustRoot createFromParcel(Parcel in) { 736 return new TrustRoot(in); 737 } 738 739 public TrustRoot[] newArray(int size) { 740 return new TrustRoot[size]; 741 } 742 }; 743 } 744 745 /** 746 * PerProviderSubscription/<X+>/Policy/PolicyUpdate/UsernamePassword 747 * PerProviderSubscription/<X+>/SubscriptionUpdate/UsernamePassword 748 * PerProviderSubscription/<X+>/Credential/UsernamePassword 749 **/ 750 public static class UsernamePassword implements Parcelable { 751 public String Username; 752 public String Password; 753 //following are Credential node used only 754 public boolean MachineManaged; 755 public String SoftTokenApp; 756 public String AbleToShare; 757 public EAPMethod eAPMethod = new EAPMethod(); 758 759 public UsernamePassword() { 760 } 761 762 public UsernamePassword(Parcel in) { 763 readFromParcel(in); 764 } 765 766 public int describeContents() { 767 return 0; 768 } 769 770 public void writeToParcel(Parcel out, int flags) { 771 out.writeString(Username); 772 out.writeString(Password); 773 out.writeInt(MachineManaged ? 1 : 0); 774 out.writeString(SoftTokenApp); 775 out.writeString(AbleToShare); 776 out.writeParcelable(eAPMethod, flags); 777 } 778 779 public void readFromParcel(Parcel in) { 780 if (in == null) { 781 //log here 782 } else { 783 Username = in.readString(); 784 Password = in.readString(); 785 MachineManaged = (in.readInt() == 1) ? true : false; 786 SoftTokenApp = in.readString(); 787 AbleToShare = in.readString(); 788 eAPMethod = in.readParcelable(EAPMethod.class.getClassLoader()); 789 } 790 } 791 792 public static final Parcelable.Creator<UsernamePassword> CREATOR = new Parcelable.Creator<UsernamePassword>() { 793 public UsernamePassword createFromParcel(Parcel in) { 794 return new UsernamePassword(in); 795 } 796 797 public UsernamePassword[] newArray(int size) { 798 return new UsernamePassword[size]; 799 } 800 }; 801 802 } 803 804 /** 805 * PerProviderSubscription/<X+>/Credential/UsernamePassword/EAPMethod 806 **/ 807 public static class EAPMethod implements Parcelable { 808 public String EAPType; 809 public String VendorId; 810 public String VendorType; 811 public String InnerEAPType; 812 public String InnerVendorId; 813 public String InnerVendorType; 814 public String InnerMethod; 815 816 public EAPMethod() { 817 } 818 819 public EAPMethod(Parcel in) { 820 readFromParcel(in); 821 } 822 823 public int describeContents() { 824 return 0; 825 } 826 827 public void writeToParcel(Parcel out, int flags) { 828 out.writeString(EAPType); 829 out.writeString(VendorId); 830 out.writeString(VendorType); 831 out.writeString(InnerEAPType); 832 out.writeString(InnerVendorId); 833 out.writeString(InnerVendorType); 834 out.writeString(InnerMethod); 835 } 836 837 public void readFromParcel(Parcel in) { 838 if (in == null) { 839 //log here 840 } else { 841 EAPType = in.readString(); 842 VendorId = in.readString(); 843 VendorType = in.readString(); 844 InnerEAPType = in.readString(); 845 InnerVendorId = in.readString(); 846 InnerVendorType = in.readString(); 847 InnerMethod = in.readString(); 848 } 849 } 850 851 public static final Parcelable.Creator<EAPMethod> CREATOR = new Parcelable.Creator<EAPMethod>() { 852 public EAPMethod createFromParcel(Parcel in) { 853 return new EAPMethod(in); 854 } 855 856 public EAPMethod[] newArray(int size) { 857 return new EAPMethod[size]; 858 } 859 }; 860 } 861 862 /** 863 * PerProviderSubscription/<X+>/HomeSP 864 **/ 865 public static class HomeSP implements Parcelable { 866 public HashMap<String, NetworkID> networkID = new HashMap<String, NetworkID>(); 867 public String FriendlyName; 868 public String IconURL; 869 public String FQDN; 870 public HashMap<String, HomeOIList> homeOIList = new HashMap<String, HomeOIList>(); 871 public HashMap<String, OtherHomePartners> otherHomePartners = new HashMap<String, OtherHomePartners>(); 872 public String RoamingConsortiumOI; 873 874 public NetworkID createNetworkID(String name, String ssid, String hessid) { 875 NetworkID obj = new NetworkID(name, ssid, hessid); 876 networkID.put(name, obj); 877 return obj; 878 } 879 880 public HomeOIList createHomeOIList(String name, String homeoi, boolean required) { 881 HomeOIList obj = new HomeOIList(name, homeoi, required); 882 homeOIList.put(name, obj); 883 return obj; 884 } 885 886 public OtherHomePartners createOtherHomePartners(String name, String fqdn) { 887 OtherHomePartners obj = new OtherHomePartners(name, fqdn); 888 otherHomePartners.put(name, obj); 889 return obj; 890 } 891 892 public HomeSP() { 893 } 894 895 public HomeSP(Parcel in) { 896 readFromParcel(in); 897 } 898 899 public int describeContents() { 900 return 0; 901 } 902 903 public void writeToParcel(Parcel out, int flags) { 904 out.writeMap(networkID); 905 out.writeString(FriendlyName); 906 out.writeString(IconURL); 907 out.writeString(FQDN); 908 out.writeMap(homeOIList); 909 out.writeMap(otherHomePartners); 910 out.writeString(RoamingConsortiumOI); 911 } 912 913 public void readFromParcel(Parcel in) { 914 if (in == null) { 915 //log here 916 } else { 917 in.readMap(networkID, NetworkID.class.getClassLoader()); 918 FriendlyName = in.readString(); 919 IconURL = in.readString(); 920 FQDN = in.readString(); 921 in.readMap(homeOIList, HomeOIList.class.getClassLoader()); 922 in.readMap(otherHomePartners, OtherHomePartners.class.getClassLoader()); 923 RoamingConsortiumOI = in.readString(); 924 } 925 } 926 927 public static final Parcelable.Creator<HomeSP> CREATOR = new Parcelable.Creator<HomeSP>() { 928 public HomeSP createFromParcel(Parcel in) { 929 return new HomeSP(in); 930 } 931 932 public HomeSP[] newArray(int size) { 933 return new HomeSP[size]; 934 } 935 }; 936 937 } 938 939 /** 940 * PerProviderSubscription/<X+>/HomeSP/NetworkID 941 **/ 942 public static class NetworkID implements Parcelable { 943 public String nodeName; 944 public String SSID; 945 public String HESSID; 946 947 public NetworkID(String nn, String s, String h) { 948 nodeName = nn; 949 SSID = s; 950 HESSID = h; 951 } 952 953 public NetworkID() { 954 } 955 956 public NetworkID(Parcel in) { 957 readFromParcel(in); 958 } 959 960 public int describeContents() { 961 return 0; 962 } 963 964 public void writeToParcel(Parcel out, int flags) { 965 out.writeString(nodeName); 966 out.writeString(SSID); 967 out.writeString(HESSID); 968 } 969 970 public void readFromParcel(Parcel in) { 971 if (in == null) { 972 //log here 973 } else { 974 nodeName = in.readString(); 975 SSID = in.readString(); 976 HESSID = in.readString(); 977 } 978 } 979 980 public static final Parcelable.Creator<NetworkID> CREATOR = new Parcelable.Creator<NetworkID>() { 981 public NetworkID createFromParcel(Parcel in) { 982 return new NetworkID(in); 983 } 984 985 public NetworkID[] newArray(int size) { 986 return new NetworkID[size]; 987 } 988 }; 989 990 } 991 992 /** 993 * PerProviderSubscription/<X+>/HomeSP/HomeOIList 994 **/ 995 public static class HomeOIList implements Parcelable { 996 public String nodeName; 997 public String HomeOI; 998 public boolean HomeOIRequired; 999 1000 public HomeOIList(String nn, String h, boolean r) { 1001 nodeName = nn; 1002 HomeOI = h; 1003 HomeOIRequired = r; 1004 } 1005 1006 public HomeOIList() { 1007 } 1008 1009 public HomeOIList(Parcel in) { 1010 readFromParcel(in); 1011 } 1012 1013 public int describeContents() { 1014 return 0; 1015 } 1016 1017 public void writeToParcel(Parcel out, int flags) { 1018 out.writeString(nodeName); 1019 out.writeString(HomeOI); 1020 out.writeInt(HomeOIRequired ? 1 : 0); 1021 } 1022 1023 public void readFromParcel(Parcel in) { 1024 if (in == null) { 1025 //log here 1026 } else { 1027 nodeName = in.readString(); 1028 HomeOI = in.readString(); 1029 HomeOIRequired = (in.readInt() == 1) ? true : false; 1030 } 1031 } 1032 1033 public static final Parcelable.Creator<HomeOIList> CREATOR = new Parcelable.Creator<HomeOIList>() { 1034 public HomeOIList createFromParcel(Parcel in) { 1035 return new HomeOIList(in); 1036 } 1037 1038 public HomeOIList[] newArray(int size) { 1039 return new HomeOIList[size]; 1040 } 1041 }; 1042 1043 } 1044 1045 /** 1046 * PerProviderSubscription/<X+>/HomeSP/OtherHomePartners 1047 **/ 1048 public static class OtherHomePartners implements Parcelable { 1049 public String nodeName; 1050 public String FQDN; 1051 1052 public OtherHomePartners(String nn, String f) { 1053 nodeName = nn; 1054 FQDN = f; 1055 } 1056 1057 public OtherHomePartners() { 1058 } 1059 1060 public OtherHomePartners(Parcel in) { 1061 readFromParcel(in); 1062 } 1063 1064 public int describeContents() { 1065 return 0; 1066 } 1067 1068 public void writeToParcel(Parcel out, int flags) { 1069 out.writeString(nodeName); 1070 out.writeString(FQDN); 1071 } 1072 1073 public void readFromParcel(Parcel in) { 1074 if (in == null) { 1075 //log here 1076 } else { 1077 nodeName = in.readString(); 1078 FQDN = in.readString(); 1079 } 1080 } 1081 1082 public static final Parcelable.Creator<OtherHomePartners> CREATOR = new Parcelable.Creator<OtherHomePartners>() { 1083 public OtherHomePartners createFromParcel(Parcel in) { 1084 return new OtherHomePartners(in); 1085 } 1086 1087 public OtherHomePartners[] newArray(int size) { 1088 return new OtherHomePartners[size]; 1089 } 1090 }; 1091 1092 } 1093 1094 /** 1095 * PerProviderSubscription/<X+>/SubscriptionParameters 1096 **/ 1097 public static class SubscriptionParameters implements Parcelable { 1098 public String CreationDate; 1099 public String ExpirationDate; 1100 public String TypeOfSubscription; 1101 public UsageLimits usageLimits = new UsageLimits(); 1102 1103 public SubscriptionParameters() { 1104 } 1105 1106 public SubscriptionParameters(Parcel in) { 1107 readFromParcel(in); 1108 } 1109 1110 public int describeContents() { 1111 return 0; 1112 } 1113 1114 public void writeToParcel(Parcel out, int flags) { 1115 out.writeString(CreationDate); 1116 out.writeString(ExpirationDate); 1117 out.writeString(TypeOfSubscription); 1118 out.writeParcelable(usageLimits, flags); 1119 } 1120 1121 public void readFromParcel(Parcel in) { 1122 if (in == null) { 1123 //log here 1124 } else { 1125 CreationDate = in.readString(); 1126 ExpirationDate = in.readString(); 1127 TypeOfSubscription = in.readString(); 1128 usageLimits = in.readParcelable(UsageLimits.class.getClassLoader()); 1129 } 1130 } 1131 1132 public static final Parcelable.Creator<SubscriptionParameters> CREATOR = new Parcelable.Creator<SubscriptionParameters>() { 1133 public SubscriptionParameters createFromParcel(Parcel in) { 1134 return new SubscriptionParameters(in); 1135 } 1136 1137 public SubscriptionParameters[] newArray(int size) { 1138 return new SubscriptionParameters[size]; 1139 } 1140 }; 1141 1142 } 1143 1144 /** 1145 * PerProviderSubscription/<X+>/SubscriptionParameters/UsageLimits 1146 **/ 1147 public static class UsageLimits implements Parcelable { 1148 public String DataLimit; 1149 public String StartDate; 1150 public String TimeLimit; 1151 public String UsageTimePeriod; 1152 1153 public UsageLimits() { 1154 } 1155 1156 public UsageLimits(Parcel in) { 1157 readFromParcel(in); 1158 } 1159 1160 public int describeContents() { 1161 return 0; 1162 } 1163 1164 public void writeToParcel(Parcel out, int flags) { 1165 out.writeString(DataLimit); 1166 out.writeString(StartDate); 1167 out.writeString(TimeLimit); 1168 out.writeString(UsageTimePeriod); 1169 } 1170 1171 public void readFromParcel(Parcel in) { 1172 if (in == null) { 1173 //log here 1174 } else { 1175 DataLimit = in.readString(); 1176 StartDate = in.readString(); 1177 TimeLimit = in.readString(); 1178 UsageTimePeriod = in.readString(); 1179 } 1180 } 1181 1182 public static final Parcelable.Creator<UsageLimits> CREATOR = new Parcelable.Creator<UsageLimits>() { 1183 public UsageLimits createFromParcel(Parcel in) { 1184 return new UsageLimits(in); 1185 } 1186 1187 public UsageLimits[] newArray(int size) { 1188 return new UsageLimits[size]; 1189 } 1190 }; 1191 } 1192 1193 /** 1194 * PerProviderSubscription/<X+>/Credential 1195 **/ 1196 public static class Credential implements Parcelable { 1197 public String CreationDate; 1198 public String ExpirationDate; 1199 public UsernamePassword usernamePassword = new UsernamePassword(); 1200 public DigitalCertificate digitalCertificate = new DigitalCertificate(); 1201 public String Realm; 1202 public boolean CheckAAAServerCertStatus; 1203 public SIM sim = new SIM(); 1204 1205 public Credential() { 1206 } 1207 1208 public Credential(Parcel in) { 1209 readFromParcel(in); 1210 } 1211 1212 public int describeContents() { 1213 return 0; 1214 } 1215 1216 public void writeToParcel(Parcel out, int flags) { 1217 out.writeString(CreationDate); 1218 out.writeString(ExpirationDate); 1219 out.writeParcelable(usernamePassword, flags); 1220 out.writeParcelable(digitalCertificate, flags); 1221 out.writeString(Realm); 1222 out.writeInt(CheckAAAServerCertStatus ? 1 : 0); 1223 out.writeParcelable(sim, flags); 1224 } 1225 1226 public void readFromParcel(Parcel in) { 1227 if (in == null) { 1228 //log here 1229 } else { 1230 CreationDate = in.readString(); 1231 ExpirationDate = in.readString(); 1232 usernamePassword = in.readParcelable(UsernamePassword.class.getClassLoader()); 1233 digitalCertificate = in.readParcelable(DigitalCertificate.class.getClassLoader()); 1234 Realm = in.readString(); 1235 CheckAAAServerCertStatus = (in.readInt() == 1) ? true : false; 1236 sim = in.readParcelable(SIM.class.getClassLoader()); 1237 } 1238 } 1239 1240 public static final Parcelable.Creator<Credential> CREATOR = new Parcelable.Creator<Credential>() { 1241 public Credential createFromParcel(Parcel in) { 1242 return new Credential(in); 1243 } 1244 1245 public Credential[] newArray(int size) { 1246 return new Credential[size]; 1247 } 1248 }; 1249 } 1250 1251 /** 1252 * PerProviderSubscription/<X+>/Credential/DigitalCertificate 1253 **/ 1254 public static class DigitalCertificate implements Parcelable { 1255 public String CertificateType; 1256 public String CertSHA256Fingerprint; 1257 1258 public DigitalCertificate() { 1259 } 1260 1261 public DigitalCertificate(Parcel in) { 1262 readFromParcel(in); 1263 } 1264 1265 public int describeContents() { 1266 return 0; 1267 } 1268 1269 public void writeToParcel(Parcel out, int flags) { 1270 out.writeString(CertificateType); 1271 out.writeString(CertSHA256Fingerprint); 1272 } 1273 1274 public void readFromParcel(Parcel in) { 1275 if (in == null) { 1276 //log here 1277 } else { 1278 CertificateType = in.readString(); 1279 CertSHA256Fingerprint = in.readString(); 1280 } 1281 } 1282 1283 public static final Parcelable.Creator<DigitalCertificate> CREATOR = new Parcelable.Creator<DigitalCertificate>() { 1284 public DigitalCertificate createFromParcel(Parcel in) { 1285 return new DigitalCertificate(in); 1286 } 1287 1288 public DigitalCertificate[] newArray(int size) { 1289 return new DigitalCertificate[size]; 1290 } 1291 }; 1292 1293 } 1294 1295 /** 1296 * PerProviderSubscription/<X+>/Credential/SIM 1297 **/ 1298 public static class SIM implements Parcelable { 1299 public String IMSI; 1300 public String EAPType; 1301 1302 public SIM() { 1303 } 1304 1305 public SIM(Parcel in) { 1306 readFromParcel(in); 1307 } 1308 1309 public int describeContents() { 1310 return 0; 1311 } 1312 1313 public void writeToParcel(Parcel out, int flags) { 1314 out.writeString(IMSI); 1315 out.writeString(EAPType); 1316 } 1317 1318 public void readFromParcel(Parcel in) { 1319 if (in == null) { 1320 //log here 1321 } else { 1322 IMSI = in.readString(); 1323 EAPType = in.readString(); 1324 } 1325 } 1326 1327 public static final Parcelable.Creator<SIM> CREATOR = new Parcelable.Creator<SIM>() { 1328 public SIM createFromParcel(Parcel in) { 1329 return new SIM(in); 1330 } 1331 1332 public SIM[] newArray(int size) { 1333 return new SIM[size]; 1334 } 1335 }; 1336 1337 } 1338 1339 /** 1340 * PerProviderSubscription/<X+>/Extension 1341 **/ 1342 public static class Extension { 1343 public String empty; 1344 } 1345 1346 public WifiPasspointDmTree() { 1347 } 1348 1349 public WifiPasspointDmTree(Parcel in) { 1350 readFromParcel(in); 1351 } 1352 1353 public int describeContents() { 1354 return 0; 1355 } 1356 1357 public void writeToParcel(Parcel out, int flags) { 1358 out.writeMap(spFqdn); 1359 } 1360 1361 public void readFromParcel(Parcel in) { 1362 if (in == null) { 1363 //log here 1364 } else { 1365 in.readMap(spFqdn, SpFqdn.class.getClassLoader()); 1366 } 1367 } 1368 1369 public static final Parcelable.Creator<WifiPasspointDmTree> CREATOR = new Parcelable.Creator<WifiPasspointDmTree>() { 1370 public WifiPasspointDmTree createFromParcel(Parcel in) { 1371 return new WifiPasspointDmTree(in); 1372 } 1373 1374 public WifiPasspointDmTree[] newArray(int size) { 1375 return new WifiPasspointDmTree[size]; 1376 } 1377 }; 1378 1379} 1380