blob: f877353b0e90c596c135a783b2f502cf691847e7 [file] [log] [blame]
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 +
'}';
}
}