1*4d7e907cSAndroid Build Coastguard Worker/* 2*4d7e907cSAndroid Build Coastguard Worker * Copyright 2020 The Android Open Source Project 3*4d7e907cSAndroid Build Coastguard Worker * 4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*4d7e907cSAndroid Build Coastguard Worker * 8*4d7e907cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*4d7e907cSAndroid Build Coastguard Worker * 10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License. 15*4d7e907cSAndroid Build Coastguard Worker */ 16*4d7e907cSAndroid Build Coastguard Worker 17*4d7e907cSAndroid Build Coastguard Workerpackage [email protected]; 18*4d7e907cSAndroid Build Coastguard Worker 19*4d7e907cSAndroid Build Coastguard Workerimport @1.0::SupplicantStatus; 20*4d7e907cSAndroid Build Coastguard Workerimport @1.0::ISupplicantStaIface; 21*4d7e907cSAndroid Build Coastguard Workerimport @1.0::MacAddress; 22*4d7e907cSAndroid Build Coastguard Workerimport ISupplicantStaIfaceCallback; 23*4d7e907cSAndroid Build Coastguard Workerimport @1.3::ISupplicantStaIface; 24*4d7e907cSAndroid Build Coastguard Worker 25*4d7e907cSAndroid Build Coastguard Worker/** 26*4d7e907cSAndroid Build Coastguard Worker * Interface exposed by the supplicant for each station mode network 27*4d7e907cSAndroid Build Coastguard Worker * interface (e.g wlan0) it controls. 28*4d7e907cSAndroid Build Coastguard Worker */ 29*4d7e907cSAndroid Build Coastguard Workerinterface ISupplicantStaIface extends @1.3::ISupplicantStaIface { 30*4d7e907cSAndroid Build Coastguard Worker /** 31*4d7e907cSAndroid Build Coastguard Worker * Get Connection capabilities 32*4d7e907cSAndroid Build Coastguard Worker * 33*4d7e907cSAndroid Build Coastguard Worker * @return status Status of the operation, and connection capabilities. 34*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 35*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.SUCCESS|, 36*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_UNKNOWN|, 37*4d7e907cSAndroid Build Coastguard Worker */ 38*4d7e907cSAndroid Build Coastguard Worker getConnectionCapabilities_1_4() 39*4d7e907cSAndroid Build Coastguard Worker generates (SupplicantStatus status, ConnectionCapabilities capabilities); 40*4d7e907cSAndroid Build Coastguard Worker 41*4d7e907cSAndroid Build Coastguard Worker /** 42*4d7e907cSAndroid Build Coastguard Worker * Register for callbacks from this interface. 43*4d7e907cSAndroid Build Coastguard Worker * 44*4d7e907cSAndroid Build Coastguard Worker * These callbacks are invoked for events that are specific to this interface. 45*4d7e907cSAndroid Build Coastguard Worker * Registration of multiple callback objects is supported. These objects must 46*4d7e907cSAndroid Build Coastguard Worker * be automatically deleted when the corresponding client process is dead or 47*4d7e907cSAndroid Build Coastguard Worker * if this interface is removed. 48*4d7e907cSAndroid Build Coastguard Worker * 49*4d7e907cSAndroid Build Coastguard Worker * @param callback An instance of the |ISupplicantStaIfaceCallback| HIDL 50*4d7e907cSAndroid Build Coastguard Worker * interface object. 51*4d7e907cSAndroid Build Coastguard Worker * @return status Status of the operation. 52*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 53*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.SUCCESS|, 54*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_UNKNOWN|, 55*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_IFACE_INVALID| 56*4d7e907cSAndroid Build Coastguard Worker */ 57*4d7e907cSAndroid Build Coastguard Worker registerCallback_1_4(ISupplicantStaIfaceCallback callback) 58*4d7e907cSAndroid Build Coastguard Worker generates (SupplicantStatus status); 59*4d7e907cSAndroid Build Coastguard Worker 60*4d7e907cSAndroid Build Coastguard Worker /** 61*4d7e907cSAndroid Build Coastguard Worker * Initiate Venue URL ANQP (for IEEE 802.11u Interworking/Hotspot 2.0) query with the 62*4d7e907cSAndroid Build Coastguard Worker * specified access point. This specific query can be used only post connection, once security 63*4d7e907cSAndroid Build Coastguard Worker * is established and PMF is enabled, to avoid spoofing preassociation ANQP responses. 64*4d7e907cSAndroid Build Coastguard Worker * The ANQP data fetched must be returned in the 65*4d7e907cSAndroid Build Coastguard Worker * |ISupplicantStaIfaceCallback.onAnqpQueryDone| callback. 66*4d7e907cSAndroid Build Coastguard Worker * 67*4d7e907cSAndroid Build Coastguard Worker * @param macAddress MAC address of the access point. 68*4d7e907cSAndroid Build Coastguard Worker * @return status Status of the operation. 69*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 70*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.SUCCESS|, 71*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_UNKNOWN|, 72*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_IFACE_INVALID| 73*4d7e907cSAndroid Build Coastguard Worker */ 74*4d7e907cSAndroid Build Coastguard Worker initiateVenueUrlAnqpQuery(MacAddress macAddress) generates (SupplicantStatus status); 75*4d7e907cSAndroid Build Coastguard Worker 76*4d7e907cSAndroid Build Coastguard Worker /** 77*4d7e907cSAndroid Build Coastguard Worker * Get wpa driver capabilities. 78*4d7e907cSAndroid Build Coastguard Worker * 79*4d7e907cSAndroid Build Coastguard Worker * @return status Status of the operation, and a bitmap of wpa driver features. 80*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 81*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.SUCCESS|, 82*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_UNKNOWN|, 83*4d7e907cSAndroid Build Coastguard Worker */ 84*4d7e907cSAndroid Build Coastguard Worker getWpaDriverCapabilities_1_4() generates (SupplicantStatus status, 85*4d7e907cSAndroid Build Coastguard Worker bitfield<WpaDriverCapabilitiesMask> driverCapabilitiesMask); 86*4d7e907cSAndroid Build Coastguard Worker 87*4d7e907cSAndroid Build Coastguard Worker /** 88*4d7e907cSAndroid Build Coastguard Worker * Generates DPP bootstrap information: Bootstrap ID, DPP URI and listen 89*4d7e907cSAndroid Build Coastguard Worker * channel for responder mode. 90*4d7e907cSAndroid Build Coastguard Worker * 91*4d7e907cSAndroid Build Coastguard Worker * @param MacAddress MAC address of the interface for the DPP operation. 92*4d7e907cSAndroid Build Coastguard Worker * @param deviceInfo Device specific information. 93*4d7e907cSAndroid Build Coastguard Worker * As per DPP Specification V1.0 section 5.2, 94*4d7e907cSAndroid Build Coastguard Worker * allowed Range of ASCII characters in deviceInfo - %x20-7E 95*4d7e907cSAndroid Build Coastguard Worker * semicolon is not allowed. 96*4d7e907cSAndroid Build Coastguard Worker * @param DppCurve Elliptic curve cryptography type used to generate DPP 97*4d7e907cSAndroid Build Coastguard Worker * public/private key pair. 98*4d7e907cSAndroid Build Coastguard Worker * @return status of operation and bootstrap info. 99*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 100*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.SUCCESS|, 101*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, 102*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_UNKNOWN| 103*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_UNSUPPORTED| 104*4d7e907cSAndroid Build Coastguard Worker */ 105*4d7e907cSAndroid Build Coastguard Worker generateDppBootstrapInfoForResponder(MacAddress macAddress, string deviceInfo, DppCurve curve) 106*4d7e907cSAndroid Build Coastguard Worker generates (SupplicantStatus status, DppResponderBootstrapInfo bootstrapInfo); 107*4d7e907cSAndroid Build Coastguard Worker 108*4d7e907cSAndroid Build Coastguard Worker /** 109*4d7e907cSAndroid Build Coastguard Worker * Start DPP in Enrollee-Responder mode. 110*4d7e907cSAndroid Build Coastguard Worker * Framework must first call |generateDppBootstrapInfoForResponder| to generate 111*4d7e907cSAndroid Build Coastguard Worker * the bootstrapping information: Bootstrap ID, DPP URI and the listen channel. 112*4d7e907cSAndroid Build Coastguard Worker * Then call this API with derived listen channel to start listening for 113*4d7e907cSAndroid Build Coastguard Worker * authentication request from Peer initiator. 114*4d7e907cSAndroid Build Coastguard Worker * 115*4d7e907cSAndroid Build Coastguard Worker * @param listenChannel DPP listen channel. 116*4d7e907cSAndroid Build Coastguard Worker * @return status Status of the operation. 117*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 118*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.SUCCESS|, 119*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_UNKNOWN|, 120*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_IFACE_INVALID| 121*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_UNSUPPORTED| 122*4d7e907cSAndroid Build Coastguard Worker */ 123*4d7e907cSAndroid Build Coastguard Worker startDppEnrolleeResponder(uint32_t listenChannel) generates (SupplicantStatus status); 124*4d7e907cSAndroid Build Coastguard Worker 125*4d7e907cSAndroid Build Coastguard Worker /** 126*4d7e907cSAndroid Build Coastguard Worker * Stop DPP Responder operation - Remove the bootstrap code and stop listening. 127*4d7e907cSAndroid Build Coastguard Worker * 128*4d7e907cSAndroid Build Coastguard Worker * @param ownBootstrapId Local device's URI ID obtained through 129*4d7e907cSAndroid Build Coastguard Worker * |generateDppBootstrapInfoForResponder| call. 130*4d7e907cSAndroid Build Coastguard Worker * @return status Status of the operation. 131*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 132*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.SUCCESS|, 133*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_IFACE_INVALID| 134*4d7e907cSAndroid Build Coastguard Worker * |SupplicantStatusCode.FAILURE_UNSUPPORTED| 135*4d7e907cSAndroid Build Coastguard Worker */ 136*4d7e907cSAndroid Build Coastguard Worker stopDppResponder(uint32_t ownBootstrapId) generates (SupplicantStatus status); 137*4d7e907cSAndroid Build Coastguard Worker}; 138