16a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistpackage com.android.server.wifi.anqp; 26a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 36a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.net.ProtocolException; 46a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.nio.ByteBuffer; 56a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.nio.charset.StandardCharsets; 66a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.util.ArrayList; 76a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.util.Collections; 86a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.util.List; 96a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 106a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport static com.android.server.wifi.anqp.Constants.BYTE_MASK; 116a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 126a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist/** 136a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist * The Network Authentication Type ANQP Element, IEEE802.11-2012 section 8.4.4.6 146a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist */ 156a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistpublic class NetworkAuthenticationTypeElement extends ANQPElement { 166a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 176a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist private final List<NetworkAuthentication> m_authenticationTypes; 186a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 196a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public enum NwkAuthTypeEnum { 206a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist TermsAndConditions, 216a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist OnLineEnrollment, 226a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist HTTPRedirection, 236a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist DNSRedirection, 246a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist Reserved 256a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 266a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 276a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public static class NetworkAuthentication { 286a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist private final NwkAuthTypeEnum m_type; 296a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist private final String m_url; 306a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 316a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist private NetworkAuthentication(NwkAuthTypeEnum type, String url) { 326a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist m_type = type; 336a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist m_url = url; 346a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 356a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 366a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public NwkAuthTypeEnum getType() { 376a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist return m_type; 386a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 396a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 406a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public String getURL() { 416a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist return m_url; 426a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 436a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 446a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist @Override 456a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public String toString() { 466a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist return "NetworkAuthentication{" + 476a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist "m_type=" + m_type + 486a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist ", m_url='" + m_url + '\'' + 496a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist '}'; 506a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 516a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 526a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 536a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public NetworkAuthenticationTypeElement(Constants.ANQPElementType infoID, ByteBuffer payload) 546a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist throws ProtocolException { 556a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 566a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist super(infoID); 576a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 586a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist m_authenticationTypes = new ArrayList<NetworkAuthentication>(); 596a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 606a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist while (payload.hasRemaining()) { 616a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist int typeNumber = payload.get() & BYTE_MASK; 626a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist NwkAuthTypeEnum type; 636a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist type = typeNumber >= NwkAuthTypeEnum.values().length ? 646a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist NwkAuthTypeEnum.Reserved : 656a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist NwkAuthTypeEnum.values()[typeNumber]; 666a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 676a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist m_authenticationTypes.add(new NetworkAuthentication(type, 686a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist Constants.getPrefixedString(payload, 2, StandardCharsets.UTF_8))); 696a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 706a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 716a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist 726a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist public List<NetworkAuthentication> getAuthenticationTypes() { 736a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist return Collections.unmodifiableList(m_authenticationTypes); 746a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist } 7577f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist 7677f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist @Override 7777f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist public String toString() { 7877f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist return "NetworkAuthenticationType{" + 7977f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist "m_authenticationTypes=" + m_authenticationTypes + 8077f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist '}'; 8177f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist } 826a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist} 83