| package com.android.hotspot2.osu.commands; |
| |
| import com.android.hotspot2.omadm.OMAException; |
| import com.android.hotspot2.omadm.XMLNode; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| /* |
| <xsd:element name="useClientCertTLS"> |
| <xsd:annotation> |
| <xsd:documentation>Command to mobile to re-negotiate the TLS connection using a client certificate of the accepted type or Issuer to authenticate with the Subscription server.</xsd:documentation> |
| </xsd:annotation> |
| <xsd:complexType> |
| <xsd:sequence> |
| <xsd:element name="providerIssuerName" minOccurs="0" |
| maxOccurs="unbounded"> |
| <xsd:complexType> |
| <xsd:attribute name="name" type="xsd:string"> |
| <xsd:annotation> |
| <xsd:documentation>The issuer name of an acceptable provider-issued certificate. The text of this element is formatted in accordance with the Issuer Name field in RFC-3280. This element is present only when acceptProviderCerts is true.</xsd:documentation> |
| </xsd:annotation> |
| </xsd:attribute> |
| <xsd:anyAttribute namespace="##other"/> |
| </xsd:complexType> |
| </xsd:element> |
| <xsd:any namespace="##other" minOccurs="0" |
| maxOccurs="unbounded"/> |
| </xsd:sequence> |
| <xsd:attribute name="acceptMfgCerts" type="xsd:boolean" |
| use="optional" default="false"> |
| <xsd:annotation> |
| <xsd:documentation>When this boolean is true, IEEE 802.1ar manufacturing certificates are acceptable for mobile device authentication.</xsd:documentation> |
| </xsd:annotation> |
| </xsd:attribute> |
| <xsd:attribute name="acceptProviderCerts" type="xsd:boolean" |
| use="optional" default="true"> |
| <xsd:annotation> |
| <xsd:documentation>When this boolean is true, X509v3 certificates issued by providers identified in the providerIssuerName child element(s) are acceptable for mobile device authentication.</xsd:documentation> |
| </xsd:annotation> |
| </xsd:attribute> |
| <xsd:anyAttribute namespace="##other"/> |
| </xsd:complexType> |
| </xsd:element> |
| */ |
| |
| public class ClientCertInfo implements OSUCommandData { |
| private final boolean mAcceptMfgCerts; |
| private final boolean mAcceptProviderCerts; |
| /* |
| * The issuer name of an acceptable provider-issued certificate. |
| * The text of this element is formatted in accordance with the Issuer Name field in RFC-3280. |
| * This element is present only when acceptProviderCerts is true. |
| */ |
| private final List<String> mIssuerNames; |
| |
| public ClientCertInfo(XMLNode commandNode) throws OMAException { |
| mAcceptMfgCerts = Boolean.parseBoolean(commandNode.getAttributeValue("acceptMfgCerts")); |
| mAcceptProviderCerts = |
| Boolean.parseBoolean(commandNode.getAttributeValue("acceptProviderCerts")); |
| |
| if (mAcceptMfgCerts) { |
| mIssuerNames = new ArrayList<>(); |
| for (XMLNode node : commandNode.getChildren()) { |
| if (node.getStrippedTag().equals("providerIssuerName")) { |
| mIssuerNames.add(node.getAttributeValue("name")); |
| } |
| } |
| } else { |
| mIssuerNames = null; |
| } |
| } |
| |
| public boolean doesAcceptMfgCerts() { |
| return mAcceptMfgCerts; |
| } |
| |
| public boolean doesAcceptProviderCerts() { |
| return mAcceptProviderCerts; |
| } |
| |
| public List<String> getIssuerNames() { |
| return mIssuerNames; |
| } |
| |
| @Override |
| public String toString() { |
| return "ClientCertInfo{" + |
| "acceptMfgCerts=" + mAcceptMfgCerts + |
| ", acceptProviderCerts=" + mAcceptProviderCerts + |
| ", issuerNames=" + mIssuerNames + |
| '}'; |
| } |
| } |