1/* 2 * Copyright 2016 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.hardware.wifi.supplicant@1.0; 18 19import ISupplicantNetwork; 20import ISupplicantStaNetworkCallback; 21 22/** 23 * Interface exposed by the supplicant for each station mode network 24 * configuration it controls. 25 */ 26interface ISupplicantStaNetwork extends ISupplicantNetwork { 27 /** 28 * Size limits for some of the params used in this interface. 29 */ 30 enum ParamSizeLimits : uint32_t { 31 /** Max length of SSID param. */ 32 SSID_MAX_LEN_IN_BYTES = 32, 33 34 /** Min length of PSK passphrase param. */ 35 PSK_PASSPHRASE_MIN_LEN_IN_BYTES = 8, 36 37 /** Max length of PSK passphrase param. */ 38 PSK_PASSPHRASE_MAX_LEN_IN_BYTES = 63, 39 40 /** Max number of WEP keys param. */ 41 WEP_KEYS_MAX_NUM = 4, 42 43 /** Length of each WEP40 keys param. */ 44 WEP40_KEY_LEN_IN_BYTES = 5, 45 /** Length of each WEP104 keys param. */ 46 WEP104_KEY_LEN_IN_BYTES = 13, 47 }; 48 49 /** Possble mask of values for KeyMgmt param. */ 50 enum KeyMgmtMask : uint32_t { 51 WPA_EAP = 1 << 0, 52 WPA_PSK = 1 << 1, 53 NONE = 1 << 2, 54 IEEE8021X = 1 << 3, 55 FT_EAP = 1 << 5, 56 FT_PSK = 1 << 6, 57 OSEN = 1 << 15 58 }; 59 60 /** Possble mask of values for Proto param. */ 61 enum ProtoMask : uint32_t { 62 WPA = 1 << 0, 63 RSN = 1 << 1, 64 /** Unused 1 << 2 */ 65 OSEN = 1 << 3 66 }; 67 68 /** Possble mask of values for AuthAlg param. */ 69 enum AuthAlgMask : uint32_t { 70 OPEN = 1 << 0, 71 SHARED = 1 << 1, 72 LEAP = 1 << 2 73 }; 74 75 /** Possble mask of values for GroupCipher param. */ 76 enum GroupCipherMask : uint32_t { 77 WEP40 = 1 << 1, 78 WEP104 = 1 << 2, 79 TKIP = 1 << 3, 80 CCMP = 1 << 4, 81 GTK_NOT_USED = 1 << 14 82 }; 83 84 /** Possble mask of values for PairwiseCipher param. */ 85 enum PairwiseCipherMask : uint32_t { 86 NONE = 1 << 0, 87 TKIP = 1 << 3, 88 CCMP = 1 << 4 89 }; 90 91 /** Possble values for EapMethod param. */ 92 enum EapMethod : uint32_t { 93 PEAP = 0, 94 TLS = 1, 95 TTLS = 2, 96 PWD = 3, 97 SIM = 4, 98 AKA = 5, 99 AKA_PRIME = 6, 100 WFA_UNAUTH_TLS = 7 101 }; 102 103 /** Possble values for Phase2Method param. */ 104 enum EapPhase2Method : uint32_t { 105 NONE = 0, 106 PAP = 1, 107 MSPAP = 2, 108 MSPAPV2 = 3, 109 GTC = 4, 110 SIM = 5, 111 AKA = 6, 112 AKA_PRIME = 7 113 }; 114 115 /** Params of |sendNetworkEapSimGsmAuthResponse| request. (Refer RFC 4186) */ 116 struct NetworkResponseEapSimGsmAuthParams { 117 uint8_t[8] kc; 118 uint8_t[4] sres; 119 }; 120 121 /** Params of |sendNetworkEapSimUmtsAuthResponse| request. (Refer RFC 4187) */ 122 struct NetworkResponseEapSimUmtsAuthParams { 123 vec<uint8_t> res; 124 uint8_t[16] ik; 125 uint8_t[16] ck; 126 }; 127 128 /** 129 * Register for callbacks from this network. 130 * 131 * These callbacks are invoked for events that are specific to this network. 132 * Registration of multiple callback objects is supported. These objects must 133 * be automatically deleted when the corresponding client process is dead or 134 * if this network is removed. 135 * 136 * @param callback An instance of the |ISupplicantStaNetworkCallback| HIDL 137 * interface object. 138 * @return status Status of the operation. 139 * Possible status codes: 140 * |SupplicantStatusCode.SUCCESS|, 141 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 142 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 143 */ 144 registerCallback(ISupplicantStaNetworkCallback callback) 145 generates (SupplicantStatus status); 146 147 /** 148 * Setters for the various network params. 149 * These correspond to elements of |wpa_sssid| struct used internally by 150 * the supplicant to represent each network. 151 */ 152 /** 153 * Set SSID for this network. 154 * 155 * @param ssid value to set. 156 * Max length of |ParamSizeLimits.SSID_MAX_LEN_IN_BYTES|. 157 * @return status Status of the operation. 158 * Possible status codes: 159 * |SupplicantStatusCode.SUCCESS|, 160 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 161 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 162 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 163 */ 164 setSsid(Ssid ssid) generates (SupplicantStatus status); 165 166 /** 167 * Set the network to only connect to an AP with provided BSSID. 168 * 169 * @param bssid value to set. 170 * @return status Status of the operation. 171 * Possible status codes: 172 * |SupplicantStatusCode.SUCCESS|, 173 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 174 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 175 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 176 */ 177 setBssid(Bssid bssid) generates (SupplicantStatus status); 178 179 /** 180 * Set whether to send probe requests for this network (hidden). 181 * 182 * @param enable true to set, false otherwise. 183 * @return status Status of the operation. 184 * Possible status codes: 185 * |SupplicantStatusCode.SUCCESS|, 186 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 187 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 188 */ 189 setScanSsid(bool enable) generates (SupplicantStatus status); 190 191 /** 192 * Set key management mask for the network. 193 * 194 * @param keyMgmtMask value to set. 195 * Combination of |KeyMgmtMask| values. 196 * @return status Status of the operation. 197 * Possible status codes: 198 * |SupplicantStatusCode.SUCCESS|, 199 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 200 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 201 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 202 */ 203 setKeyMgmt(bitfield<KeyMgmtMask> keyMgmtMask) generates (SupplicantStatus status); 204 205 /** 206 * Set proto mask for the network. 207 * 208 * @param protoMask value to set. 209 * Combination of |ProtoMask| values. 210 * @return status Status of the operation. 211 * Possible status codes: 212 * |SupplicantStatusCode.SUCCESS|, 213 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 214 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 215 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 216 */ 217 setProto(bitfield<ProtoMask> protoMask) generates (SupplicantStatus status); 218 219 /** 220 * Set auth alg mask for the network. 221 * 222 * @param authAlgMask value to set. 223 * Combination of |ProtoMask| values. 224 * @return status Status of the operation. 225 * Possible status codes: 226 * |SupplicantStatusCode.SUCCESS|, 227 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 228 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 229 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 230 */ 231 setAuthAlg(bitfield<AuthAlgMask> authAlgMask) generates (SupplicantStatus status); 232 233 /** 234 * Set group cipher mask for the network. 235 * 236 * @param groupCipherMask value to set. 237 * Combination of |ProtoMask| values. 238 * @return status Status of the operation. 239 * Possible status codes: 240 * |SupplicantStatusCode.SUCCESS|, 241 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 242 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 243 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 244 */ 245 setGroupCipher(bitfield<GroupCipherMask> groupCipherMask) 246 generates (SupplicantStatus status); 247 248 /** 249 * Set pairwise cipher mask for the network. 250 * 251 * @param pairwiseCipherMask value to set. 252 * Combination of |ProtoMask| values. 253 * @return status Status of the operation. 254 * Possible status codes: 255 * |SupplicantStatusCode.SUCCESS|, 256 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 257 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 258 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 259 */ 260 setPairwiseCipher(bitfield<PairwiseCipherMask> pairwiseCipherMask) 261 generates (SupplicantStatus status); 262 263 /** 264 * Set passphrase for WPA_PSK network. 265 * 266 * @param psk value to set. 267 * Length of value must be between 268 * |ParamSizeLimits.PSK_PASSPHRASE_MIN_LEN_IN_BYTES| and 269 * |ParamSizeLimits.PSK_PASSPHRASE_MAX_LEN_IN_BYTES|. 270 * @return status Status of the operation. 271 * Possible status codes: 272 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 273 * |SupplicantStatusCode.SUCCESS|, 274 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 275 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 276 */ 277 setPskPassphrase(string psk) generates (SupplicantStatus status); 278 279 /** 280 * Set raw psk for WPA_PSK network. 281 * 282 * @param psk value to set as specified in IEEE 802.11i-2004 standard. 283 * This is the calculated using 'wpa_passphrase <ssid> [passphrase]' 284 * @return status Status of the operation. 285 * Possible status codes: 286 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 287 * |SupplicantStatusCode.SUCCESS|, 288 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 289 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 290 */ 291 setPsk(uint8_t[32] psk) generates (SupplicantStatus status); 292 293 /** 294 * Set WEP key for WEP network. 295 * 296 * @param keyIdx Index of wep key to set. 297 * Max of |ParamSizeLimits.WEP_KEYS_MAX_NUM|. 298 * @param wepKey value to set. 299 * Length of each key must be either 300 * |ParamSizeLimits.WEP40_KEY_LEN_IN_BYTES| or 301 * |ParamSizeLimits.WEP104_KEY_LEN_IN_BYTES|. 302 * @return status Status of the operation. 303 * Possible status codes: 304 * |SupplicantStatusCode.SUCCESS|, 305 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 306 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 307 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 308 */ 309 setWepKey(uint32_t keyIdx, vec<uint8_t> wepKey) 310 generates (SupplicantStatus status); 311 312 /** 313 * Set default Tx key index for WEP network. 314 * 315 * @param KeyIdx value to set. 316 * Max of |ParamSizeLimits.WEP_KEYS_MAX_NUM|. 317 * @return status Status of the operation. 318 * Possible status codes: 319 * |SupplicantStatusCode.SUCCESS|, 320 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 321 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 322 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 323 */ 324 setWepTxKeyIdx(uint32_t keyIdx) 325 generates (SupplicantStatus status); 326 327 /** 328 * Set whether RequirePmf is enabled for this network. 329 * 330 * @param enable true to set, false otherwise. 331 * @return status Status of the operation. 332 * Possible status codes: 333 * |SupplicantStatusCode.SUCCESS|, 334 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 335 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 336 */ 337 setRequirePmf(bool enable) generates (SupplicantStatus status); 338 339 /** 340 * Set EAP Method for this network. 341 * 342 * @param method value to be set. 343 * Must be one of |EapMethod| values. 344 * @return status Status of the operation. 345 * Possible status codes: 346 * |SupplicantStatusCode.SUCCESS|, 347 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 348 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 349 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 350 */ 351 setEapMethod(EapMethod method) 352 generates (SupplicantStatus status); 353 354 /** 355 * Set EAP Phase2 Method for this network. 356 * 357 * EAP method needs to be set for this to work. 358 * 359 * @param method value to set. 360 * Must be one of |EapPhase2Method| values. 361 * @return status Status of the operation. 362 * Possible status codes: 363 * |SupplicantStatusCode.SUCCESS|, 364 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 365 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 366 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 367 */ 368 setEapPhase2Method(EapPhase2Method method) 369 generates (SupplicantStatus status); 370 371 /** 372 * Set EAP Identity for this network. 373 * 374 * @param identity value to set. 375 * @return status Status of the operation. 376 * Possible status codes: 377 * |SupplicantStatusCode.SUCCESS|, 378 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 379 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 380 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 381 */ 382 setEapIdentity(vec<uint8_t> identity) 383 generates (SupplicantStatus status); 384 385 /** 386 * Set EAP Anonymous Identity for this network. 387 * 388 * @param identity value to set. 389 * @return status Status of the operation. 390 * Possible status codes: 391 * |SupplicantStatusCode.SUCCESS|, 392 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 393 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 394 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 395 */ 396 setEapAnonymousIdentity(vec<uint8_t> identity) 397 generates (SupplicantStatus status); 398 399 /** 400 * Set EAP Password for this network. 401 * 402 * @param password value to set. 403 * @return status Status of the operation. 404 * Possible status codes: 405 * |SupplicantStatusCode.SUCCESS|, 406 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 407 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 408 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 409 */ 410 setEapPassword(vec<uint8_t> password) 411 generates (SupplicantStatus status); 412 413 /** 414 * Set EAP CA certificate file path for this network. 415 * 416 * @param path value to set. 417 * @return status Status of the operation. 418 * Possible status codes: 419 * |SupplicantStatusCode.SUCCESS|, 420 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 421 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 422 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 423 */ 424 setEapCACert(string path) generates (SupplicantStatus status); 425 426 /** 427 * Set EAP CA certificate directory path for this network. 428 * 429 * @param path value to set. 430 * @return status Status of the operation. 431 * Possible status codes: 432 * |SupplicantStatusCode.SUCCESS|, 433 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 434 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 435 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 436 */ 437 setEapCAPath(string path) generates (SupplicantStatus status); 438 439 /** 440 * Set EAP Client certificate file path for this network. 441 * 442 * @param path value to set. 443 * @return status Status of the operation. 444 * Possible status codes: 445 * |SupplicantStatusCode.SUCCESS|, 446 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 447 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 448 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 449 */ 450 setEapClientCert(string path) generates (SupplicantStatus status); 451 452 /** 453 * Set EAP private key Id for this network. 454 * This is used if private key operations for EAP-TLS are performed 455 * using a smartcard. 456 * 457 * @param id value to set. 458 * @return status Status of the operation. 459 * Possible status codes: 460 * |SupplicantStatusCode.SUCCESS|, 461 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 462 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 463 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 464 */ 465 setEapPrivateKeyId(string id) generates (SupplicantStatus status); 466 467 /** 468 * Set EAP subject match for this network. 469 * 470 * @param match value to set. 471 * @return status Status of the operation. 472 * Possible status codes: 473 * |SupplicantStatusCode.SUCCESS|, 474 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 475 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 476 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 477 */ 478 setEapSubjectMatch(string match) generates (SupplicantStatus status); 479 480 /** 481 * Set EAP Alt subject match for this network. 482 * 483 * @param match value to set. 484 * @return status Status of the operation. 485 * Possible status codes: 486 * |SupplicantStatusCode.SUCCESS|, 487 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 488 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 489 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 490 */ 491 setEapAltSubjectMatch(string match) 492 generates (SupplicantStatus status); 493 494 /** 495 * Enable EAP Open SSL Engine for this network. 496 * 497 * @param enable true to set, false otherwise. 498 * @return status Status of the operation. 499 * Possible status codes: 500 * |SupplicantStatusCode.SUCCESS|, 501 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 502 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 503 */ 504 setEapEngine(bool enable) generates (SupplicantStatus status); 505 506 /** 507 * Set EAP Open SSL Engine ID for this network. 508 * 509 * @param id value to set. 510 * @return status Status of the operation. 511 * Possible status codes: 512 * |SupplicantStatusCode.SUCCESS|, 513 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 514 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 515 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 516 */ 517 setEapEngineID(string id) generates (SupplicantStatus status); 518 519 /** 520 * Set EAP Domain suffix match for this network. 521 * 522 * @param match value to set. 523 * @return status Status of the operation. 524 * Possible status codes: 525 * |SupplicantStatusCode.SUCCESS|, 526 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 527 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 528 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 529 */ 530 setEapDomainSuffixMatch(string match) 531 generates (SupplicantStatus status); 532 533 /** 534 * This field can be used to enable proactive key caching which is also 535 * known as opportunistic PMKSA caching for WPA2. This is disabled (0) 536 * by default unless default value is changed with the global okc=1 537 * parameter. 538 * 539 * Proactive key caching is used to make supplicant assume that the APs 540 * are using the same PMK and generate PMKSA cache entries without 541 * doing RSN pre-authentication. This requires support from the AP side 542 * and is normally used with wireless switches that co-locate the 543 * authenticator. 544 * 545 * @param enable true to set, false otherwise. 546 * @return status Status of the operation. 547 * Possible status codes: 548 * |SupplicantStatusCode.SUCCESS|, 549 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 550 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 551 */ 552 setProactiveKeyCaching(bool enable) generates (SupplicantStatus status); 553 554 /** 555 * Set ID string for this network. 556 * Network identifier string for external scripts. 557 * 558 * @return idStr ID string value to set. 559 * @return status Status of the operation. 560 * Possible status codes: 561 * |SupplicantStatusCode.SUCCESS|, 562 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 563 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 564 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 565 */ 566 setIdStr(string idStr) generates (SupplicantStatus status); 567 568 /** 569 * Set PPS MO ID for this network. 570 * (Hotspot 2.0 PerProviderSubscription/UpdateIdentifier) 571 * 572 * @return id ID value to set. 573 * @return status Status of the operation. 574 * Possible status codes: 575 * |SupplicantStatusCode.SUCCESS|, 576 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 577 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 578 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 579 */ 580 setUpdateIdentifier(uint32_t id) generates (SupplicantStatus status); 581 582 /** 583 * Getters for the various network params. 584 */ 585 /** 586 * Get SSID for this network. 587 * 588 * @return status Status of the operation. 589 * Possible status codes: 590 * |SupplicantStatusCode.SUCCESS|, 591 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 592 * @return ssid value set. 593 */ 594 getSsid() generates (SupplicantStatus status, Ssid ssid); 595 596 /** 597 * Get the BSSID set for this network. 598 * 599 * @return status Status of the operation. 600 * Possible status codes: 601 * |SupplicantStatusCode.SUCCESS|, 602 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 603 * @return bssid value set. 604 */ 605 getBssid() generates (SupplicantStatus status, Bssid bssid); 606 607 /** 608 * Get whether Probe Requests are being sent for this network (hidden). 609 * 610 * @return status Status of the operation. 611 * Possible status codes: 612 * |SupplicantStatusCode.SUCCESS|, 613 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 614 * @return enabled true if set, false otherwise. 615 */ 616 getScanSsid() generates (SupplicantStatus status, bool enabled); 617 618 /** 619 * Get the key mgmt mask set for the network. 620 * 621 * @return status Status of the operation. 622 * Possible status codes: 623 * |SupplicantStatusCode.SUCCESS|, 624 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 625 * @return keyMgmtMask Combination of |KeyMgmtMask| values. 626 */ 627 getKeyMgmt() 628 generates (SupplicantStatus status, bitfield<KeyMgmtMask> keyMgmtMask); 629 630 /** 631 * Get the proto mask set for the network. 632 * 633 * @return status Status of the operation. 634 * Possible status codes: 635 * |SupplicantStatusCode.SUCCESS|, 636 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 637 * @return protoMask Combination of |ProtoMask| values. 638 */ 639 getProto() generates (SupplicantStatus status, bitfield<ProtoMask> protoMask); 640 641 /** 642 * Get the auth alg mask set for the network. 643 * 644 * @return status Status of the operation. 645 * Possible status codes: 646 * |SupplicantStatusCode.SUCCESS|, 647 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 648 * @return authAlgMask Combination of |AuthAlgMask| values. 649 */ 650 getAuthAlg() 651 generates (SupplicantStatus status, bitfield<AuthAlgMask> authAlgMask); 652 653 /** 654 * Get the group cipher mask set for the network. 655 * 656 * @return status Status of the operation. 657 * Possible status codes: 658 * |SupplicantStatusCode.SUCCESS|, 659 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 660 * @return groupCipherMask Combination of |GroupCipherMask| values. 661 */ 662 getGroupCipher() 663 generates (SupplicantStatus status, 664 bitfield<GroupCipherMask> groupCipherMask); 665 666 /** 667 * Get the pairwise cipher mask set for the network. 668 * 669 * @return status Status of the operation. 670 * Possible status codes: 671 * |SupplicantStatusCode.SUCCESS|, 672 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 673 * @return pairwiseCipherMask Combination of |PairwiseCipherMask| values. 674 */ 675 getPairwiseCipher() 676 generates (SupplicantStatus status, 677 bitfield<PairwiseCipherMask> pairwiseCipherMask); 678 679 /** 680 * Get passphrase for WPA_PSK network. 681 * Must return a failure if network has no passphrase set (use |getPsk| if 682 * network was configured with raw psk instead). 683 * 684 * @return status Status of the operation. 685 * Possible status codes: 686 * |SupplicantStatusCode.SUCCESS|, 687 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 688 * @return psk value set. 689 */ 690 getPskPassphrase() generates (SupplicantStatus status, string psk); 691 692 /** 693 * Get raw psk for WPA_PSK network. 694 * 695 * @return status Status of the operation. 696 * Possible status codes: 697 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 698 * |SupplicantStatusCode.SUCCESS|, 699 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 700 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 701 * @param psk value set. 702 */ 703 getPsk() generates (SupplicantStatus status, uint8_t[32] psk); 704 705 /** 706 * Get WEP key for WEP network. 707 * 708 * @param keyIdx Index of wep key to be fetched. 709 * Max of |WEP_KEYS_MAX_NUM|. 710 * @return status Status of the operation. 711 * Possible status codes: 712 * |SupplicantStatusCode.SUCCESS|, 713 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 714 * @return wepKey value set. 715 */ 716 getWepKey(uint32_t keyIdx) 717 generates (SupplicantStatus status, vec<uint8_t> wepKey); 718 719 /** 720 * Get default Tx key index for WEP network. 721 * 722 * @return status Status of the operation. 723 * Possible status codes: 724 * |SupplicantStatusCode.SUCCESS|, 725 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 726 * @return keyIdx value set. 727 */ 728 getWepTxKeyIdx() 729 generates (SupplicantStatus status, uint32_t keyIdx); 730 731 /** 732 * Get whether RequirePmf is enabled for this network. 733 * 734 * @return status Status of the operation. 735 * Possible status codes: 736 * |SupplicantStatusCode.SUCCESS|, 737 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 738 * @return enabled true if set, false otherwise. 739 */ 740 getRequirePmf() generates (SupplicantStatus status, bool enabled); 741 742 /** 743 * Get EAP Method set for this network. 744 * 745 * @return status Status of the operation. 746 * Possible status codes: 747 * |SupplicantStatusCode.SUCCESS|, 748 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 749 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 750 * @return method value set. 751 * Must be one of |EapMethod| values. 752 */ 753 getEapMethod() 754 generates (SupplicantStatus status, EapMethod method); 755 756 /** 757 * Get EAP Phase2 Method set for this network. 758 * 759 * @return status Status of the operation. 760 * Possible status codes: 761 * |SupplicantStatusCode.SUCCESS|, 762 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 763 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 764 * @return method value set. 765 * Must be one of |EapPhase2Method| values. 766 */ 767 getEapPhase2Method() 768 generates (SupplicantStatus status, EapPhase2Method method); 769 770 /** 771 * Get EAP Identity set for this network. 772 * 773 * @return status Status of the operation. 774 * Possible status codes: 775 * |SupplicantStatusCode.SUCCESS|, 776 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 777 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 778 * @return identity value set. 779 */ 780 getEapIdentity() 781 generates (SupplicantStatus status, vec<uint8_t> identity); 782 783 /** 784 * Get EAP Anonymous Identity set for this network. 785 * 786 * @return status Status of the operation. 787 * Possible status codes: 788 * |SupplicantStatusCode.SUCCESS|, 789 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 790 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 791 * @return identity value set. 792 */ 793 getEapAnonymousIdentity() 794 generates (SupplicantStatus status, vec<uint8_t> identity); 795 796 /** 797 * Get EAP Password set for this network. 798 * 799 * @return status Status of the operation. 800 * Possible status codes: 801 * |SupplicantStatusCode.SUCCESS|, 802 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 803 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 804 * @return password value set. 805 */ 806 getEapPassword() 807 generates (SupplicantStatus status, vec<uint8_t> password); 808 809 /** 810 * Get EAP CA certificate file path set for this network. 811 * 812 * @return status Status of the operation. 813 * Possible status codes: 814 * |SupplicantStatusCode.SUCCESS|, 815 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 816 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 817 * @return path value set. 818 */ 819 getEapCACert() generates (SupplicantStatus status, string path); 820 821 /** 822 * Get EAP CA certificate directory path set for this network. 823 * 824 * @return status Status of the operation. 825 * Possible status codes: 826 * |SupplicantStatusCode.SUCCESS|, 827 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 828 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 829 * @return path value set. 830 */ 831 getEapCAPath() generates (SupplicantStatus status, string path); 832 833 /** 834 * Get EAP Client certificate file path set for this network. 835 * 836 * @return status Status of the operation. 837 * Possible status codes: 838 * |SupplicantStatusCode.SUCCESS|, 839 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 840 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 841 * @return path value set. 842 */ 843 getEapClientCert() generates (SupplicantStatus status, string path); 844 845 /** 846 * Get EAP private key Id set for this network. 847 * 848 * @return status Status of the operation. 849 * Possible status codes: 850 * |SupplicantStatusCode.SUCCESS|, 851 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 852 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 853 * @return id value set. 854 */ 855 getEapPrivateKeyId() generates (SupplicantStatus status, string id); 856 857 /** 858 * Get EAP subject match set for this network. 859 * 860 * @return status Status of the operation. 861 * Possible status codes: 862 * |SupplicantStatusCode.SUCCESS|, 863 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 864 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 865 * @return match value set. 866 */ 867 getEapSubjectMatch() generates (SupplicantStatus status, string match); 868 869 /** 870 * Get EAP Alt subject match set for this network. 871 * 872 * @return status Status of the operation. 873 * Possible status codes: 874 * |SupplicantStatusCode.SUCCESS|, 875 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 876 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 877 * @return match value set. 878 */ 879 getEapAltSubjectMatch() 880 generates (SupplicantStatus status, string match); 881 882 /** 883 * Get if EAP Open SSL Engine is enabled for this network. 884 * 885 * @return status Status of the operation. 886 * Possible status codes: 887 * |SupplicantStatusCode.SUCCESS|, 888 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 889 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 890 * @return enabled true if set, false otherwise. 891 */ 892 getEapEngine() generates (SupplicantStatus status, bool enabled); 893 894 /** 895 * Get EAP Open SSL Engine ID set for this network. 896 * 897 * @return status Status of the operation. 898 * Possible status codes: 899 * |SupplicantStatusCode.SUCCESS|, 900 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 901 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 902 * @return id value set. 903 */ 904 getEapEngineID() generates (SupplicantStatus status, string id); 905 906 /** 907 * Get EAP Domain suffix match set for this network. 908 * 909 * @return status Status of the operation. 910 * Possible status codes: 911 * |SupplicantStatusCode.SUCCESS|, 912 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 913 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 914 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 915 * @return match value set. 916 */ 917 getEapDomainSuffixMatch() 918 generates (SupplicantStatus status, string match); 919 920 /** 921 * Get ID string set for this network. 922 * Network identifier string for external scripts. 923 * 924 * @return status Status of the operation. 925 * Possible status codes: 926 * |SupplicantStatusCode.SUCCESS|, 927 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 928 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 929 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 930 * @return idStr ID string set. 931 */ 932 getIdStr() generates (SupplicantStatus status, string idStr); 933 934 /** 935 * Retrieves a WPS-NFC configuration token for this network. 936 * 937 * @return status Status of the operation. 938 * Possible status codes: 939 * |SupplicantStatusCode.SUCCESS|, 940 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, 941 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 942 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 943 * @return token Bytes representing WPS-NFC configuration token. 944 * This is a dump of all the WPS atrributes of the AP configuration 945 * as specified in the Wi-Fi Protected Setup Specification. 946 */ 947 getWpsNfcConfigurationToken() 948 generates (SupplicantStatus status, vec<uint8_t> token); 949 950 /** 951 * Enable the network for connection purposes. 952 * 953 * This must trigger a connection to the network if: 954 * a) |noConnect| is false, and 955 * b) This is the only network configured, and 956 * c) Is visible in the current scan results. 957 * 958 * @param noConnect Only enable the network, dont trigger a connect. 959 * @return status Status of the operation. 960 * Possible status codes: 961 * |SupplicantStatusCode.SUCCESS|, 962 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 963 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 964 */ 965 enable(bool noConnect) generates (SupplicantStatus status); 966 967 /** 968 * Disable the network for connection purposes. 969 * 970 * This must trigger a disconnection from the network, if currently 971 * connected to this one. 972 * 973 * @return status Status of the operation. 974 * Possible status codes: 975 * |SupplicantStatusCode.SUCCESS|, 976 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 977 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 978 */ 979 disable() generates (SupplicantStatus status); 980 981 /** 982 * Initiate connection to this network. 983 * 984 * @return status Status of the operation. 985 * Possible status codes: 986 * |SupplicantStatusCode.SUCCESS|, 987 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 988 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 989 */ 990 select() generates (SupplicantStatus status); 991 992 /** 993 * Used to send a response to the 994 * |ISupplicantNetworkCallback.onNetworkEapSimGsmAuthRequest| request. 995 * 996 * @param params Params to be used for EAP GSM authentication. 997 * @return status Status of the operation. 998 * Possible status codes: 999 * |SupplicantStatusCode.SUCCESS|, 1000 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 1001 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 1002 */ 1003 sendNetworkEapSimGsmAuthResponse(vec<NetworkResponseEapSimGsmAuthParams> params) 1004 generates (SupplicantStatus status); 1005 1006 /** 1007 * Used to send a response to the 1008 * |ISupplicantNetworkCallback.onNetworkEapSimGsmAuthRequest| request. 1009 * 1010 * @return status Status of the operation. 1011 * Possible status codes: 1012 * |SupplicantStatusCode.SUCCESS|, 1013 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 1014 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 1015 */ 1016 sendNetworkEapSimGsmAuthFailure() generates (SupplicantStatus status); 1017 1018 /** 1019 * Used to send a response to the 1020 * |ISupplicantNetworkCallback.onNetworkEapSimUmtsAuthRequest| request. 1021 * 1022 * @param params Params to be used for EAP UMTS authentication. 1023 * @return status Status of the operation. 1024 * Possible status codes: 1025 * |SupplicantStatusCode.SUCCESS|, 1026 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 1027 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 1028 */ 1029 sendNetworkEapSimUmtsAuthResponse(NetworkResponseEapSimUmtsAuthParams params) 1030 generates (SupplicantStatus status); 1031 1032 /** 1033 * Used to send a response to the 1034 * |ISupplicantNetworkCallback.onNetworkEapSimUmtsAuthRequest| request. 1035 * 1036 * @param auts Params to be used for EAP UMTS authentication. 1037 * @return status Status of the operation. 1038 * Possible status codes: 1039 * |SupplicantStatusCode.SUCCESS|, 1040 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 1041 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 1042 */ 1043 sendNetworkEapSimUmtsAutsResponse(uint8_t[14] auts) 1044 generates (SupplicantStatus status); 1045 1046 /** 1047 * Used to send a response to the 1048 * |ISupplicantNetworkCallback.onNetworkEapSimUmtsAuthRequest| request. 1049 * 1050 * @return status Status of the operation. 1051 * Possible status codes: 1052 * |SupplicantStatusCode.SUCCESS|, 1053 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 1054 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 1055 */ 1056 sendNetworkEapSimUmtsAuthFailure() generates (SupplicantStatus status); 1057 1058 /** 1059 * Used to send a response to the 1060 * |ISupplicantNetworkCallback.onNetworkEapIdentityRequest| request. 1061 * 1062 * @param identity Identity to be used for the network. 1063 * @return status Status of the operation. 1064 * Possible status codes: 1065 * |SupplicantStatusCode.SUCCESS|, 1066 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 1067 * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| 1068 */ 1069 sendNetworkEapIdentityResponse(vec<uint8_t> identity) 1070 generates (SupplicantStatus status); 1071}; 1072