Loading wifi/java/android/net/wifi/aware/DiscoverySession.java +36 −9 Original line number Diff line number Diff line Loading @@ -22,6 +22,8 @@ import android.annotation.SystemApi; import android.net.NetworkSpecifier; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import dalvik.system.CloseGuard; import java.lang.ref.WeakReference; Loading Loading @@ -141,6 +143,34 @@ public class DiscoverySession implements AutoCloseable { } } /** * Access the client ID of the Aware session. * * Note: internal visibility for testing. * * @return The internal client ID. * * @hide */ @VisibleForTesting public int getClientId() { return mClientId; } /** * Access the discovery session ID of the Aware session. * * Note: internal visibility for testing. * * @return The internal discovery session ID. * * @hide */ @VisibleForTesting public int getSessionId() { return mSessionId; } /** * Sends a message to the specified destination. Aware messages are transmitted in the context * of a discovery session - executed subsequent to a publish/subscribe Loading Loading @@ -246,8 +276,7 @@ public class DiscoverySession implements AutoCloseable { * or * {@link DiscoverySessionCallback#onMessageReceived(PeerHandle, byte[])}. * On a RESPONDER this value is used to gate the acceptance of a connection * request from only that peer. A RESPONDER may specify a {@code null} - * indicating that it will accept connection requests from any device. * request from only that peer. * * @return A {@link NetworkSpecifier} to be used to construct * {@link android.net.NetworkRequest.Builder#setNetworkSpecifier(NetworkSpecifier)} to pass to Loading @@ -255,7 +284,7 @@ public class DiscoverySession implements AutoCloseable { * android.net.ConnectivityManager.NetworkCallback)} * [or other varieties of that API]. */ public NetworkSpecifier createNetworkSpecifierOpen(@Nullable PeerHandle peerHandle) { public NetworkSpecifier createNetworkSpecifierOpen(@NonNull PeerHandle peerHandle) { if (mTerminated) { Log.w(TAG, "createNetworkSpecifierOpen: called on terminated session"); return null; Loading Loading @@ -295,8 +324,7 @@ public class DiscoverySession implements AutoCloseable { * byte[], java.util.List)} or * {@link DiscoverySessionCallback#onMessageReceived(PeerHandle, * byte[])}. On a RESPONDER this value is used to gate the acceptance of a connection request * from only that peer. A RESPONDER may specify a {@code null} - indicating * that it will accept connection requests from any device. * from only that peer. * @param passphrase The passphrase to be used to encrypt the link. The PMK is generated from * the passphrase. Use the * {@link #createNetworkSpecifierOpen(PeerHandle)} API to Loading @@ -309,7 +337,7 @@ public class DiscoverySession implements AutoCloseable { * [or other varieties of that API]. */ public NetworkSpecifier createNetworkSpecifierPassphrase( @Nullable PeerHandle peerHandle, @NonNull String passphrase) { @NonNull PeerHandle peerHandle, @NonNull String passphrase) { if (!WifiAwareUtils.validatePassphrase(passphrase)) { throw new IllegalArgumentException("Passphrase must meet length requirements"); } Loading Loading @@ -354,8 +382,7 @@ public class DiscoverySession implements AutoCloseable { * byte[], java.util.List)} or * {@link DiscoverySessionCallback#onMessageReceived(PeerHandle, * byte[])}. On a RESPONDER this value is used to gate the acceptance of a connection request * from only that peer. A RESPONDER may specify a null - indicating that * it will accept connection requests from any device. * from only that peer. * @param pmk A PMK (pairwise master key, see IEEE 802.11i) specifying the key to use for * encrypting the data-path. Use the * {@link #createNetworkSpecifierPassphrase(PeerHandle, String)} to specify a Loading @@ -371,7 +398,7 @@ public class DiscoverySession implements AutoCloseable { * @hide */ @SystemApi public NetworkSpecifier createNetworkSpecifierPmk(@Nullable PeerHandle peerHandle, public NetworkSpecifier createNetworkSpecifierPmk(@NonNull PeerHandle peerHandle, @NonNull byte[] pmk) { if (!WifiAwareUtils.validatePmk(pmk)) { throw new IllegalArgumentException("PMK must 32 bytes"); Loading wifi/java/android/net/wifi/aware/WifiAwareManager.java +8 −13 Original line number Diff line number Diff line Loading @@ -406,7 +406,7 @@ public class WifiAwareManager { /** @hide */ public NetworkSpecifier createNetworkSpecifier(int clientId, int role, int sessionId, PeerHandle peerHandle, @Nullable byte[] pmk, @Nullable String passphrase) { @NonNull PeerHandle peerHandle, @Nullable byte[] pmk, @Nullable String passphrase) { if (VDBG) { Log.v(TAG, "createNetworkSpecifier: role=" + role + ", sessionId=" + sessionId + ", peerHandle=" + ((peerHandle == null) ? peerHandle : peerHandle.peerId) Loading @@ -420,12 +420,9 @@ public class WifiAwareManager { "createNetworkSpecifier: Invalid 'role' argument when creating a network " + "specifier"); } if (role == WIFI_AWARE_DATA_PATH_ROLE_INITIATOR) { if (peerHandle == null) { throw new IllegalArgumentException( "createNetworkSpecifier: Invalid peer handle (value of null) - not " + "permitted on INITIATOR"); } "createNetworkSpecifier: Invalid peer handle - cannot be null"); } return new WifiAwareNetworkSpecifier( Loading @@ -443,7 +440,7 @@ public class WifiAwareManager { /** @hide */ public NetworkSpecifier createNetworkSpecifier(int clientId, @DataPathRole int role, @Nullable byte[] peer, @Nullable byte[] pmk, @Nullable String passphrase) { @NonNull byte[] peer, @Nullable byte[] pmk, @Nullable String passphrase) { if (VDBG) { Log.v(TAG, "createNetworkSpecifier: role=" + role + ", pmk=" + ((pmk == null) ? "null" : "non-null") Loading @@ -456,11 +453,9 @@ public class WifiAwareManager { "createNetworkSpecifier: Invalid 'role' argument when creating a network " + "specifier"); } if (role == WIFI_AWARE_DATA_PATH_ROLE_INITIATOR) { if (peer == null) { throw new IllegalArgumentException("createNetworkSpecifier: Invalid peer MAC " + "address - null not permitted on INITIATOR"); } throw new IllegalArgumentException( "createNetworkSpecifier: Invalid peer MAC - cannot be null"); } if (peer != null && peer.length != 6) { throw new IllegalArgumentException("createNetworkSpecifier: Invalid peer MAC address"); Loading wifi/java/android/net/wifi/aware/WifiAwareSession.java +22 −9 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import android.os.Handler; import android.os.Looper; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import dalvik.system.CloseGuard; import java.lang.ref.WeakReference; Loading Loading @@ -96,6 +98,20 @@ public class WifiAwareSession implements AutoCloseable { } } /** * Access the client ID of the Aware session. * * Note: internal visibility for testing. * * @return The internal client ID. * * @hide */ @VisibleForTesting public int getClientId() { return mClientId; } /** * Issue a request to the Aware service to create a new Aware publish discovery session, using * the specified {@code publishConfig} configuration. The results of the publish operation Loading Loading @@ -207,8 +223,7 @@ public class WifiAwareSession implements AutoCloseable { * {@link WifiAwareManager#WIFI_AWARE_DATA_PATH_ROLE_RESPONDER} * @param peer The MAC address of the peer's Aware discovery interface. On a RESPONDER this * value is used to gate the acceptance of a connection request from only that * peer. A RESPONDER may specify a {@code null} - indicating that it will accept * connection requests from any device. * peer. * * @return A {@link NetworkSpecifier} to be used to construct * {@link android.net.NetworkRequest.Builder#setNetworkSpecifier(NetworkSpecifier)} to pass to Loading @@ -217,7 +232,7 @@ public class WifiAwareSession implements AutoCloseable { * [or other varieties of that API]. */ public NetworkSpecifier createNetworkSpecifierOpen( @WifiAwareManager.DataPathRole int role, @Nullable byte[] peer) { @WifiAwareManager.DataPathRole int role, @NonNull byte[] peer) { WifiAwareManager mgr = mMgr.get(); if (mgr == null) { Log.e(TAG, "createNetworkSpecifierOpen: called post GC on WifiAwareManager"); Loading Loading @@ -246,8 +261,7 @@ public class WifiAwareSession implements AutoCloseable { * {@link WifiAwareManager#WIFI_AWARE_DATA_PATH_ROLE_RESPONDER} * @param peer The MAC address of the peer's Aware discovery interface. On a RESPONDER this * value is used to gate the acceptance of a connection request from only that * peer. A RESPONDER may specify a {@code null} - indicating that it will accept * connection requests from any device. * peer. * @param passphrase The passphrase to be used to encrypt the link. The PMK is generated from * the passphrase. Use {@link #createNetworkSpecifierOpen(int, byte[])} to * specify an open (unencrypted) link. Loading @@ -259,7 +273,7 @@ public class WifiAwareSession implements AutoCloseable { * [or other varieties of that API]. */ public NetworkSpecifier createNetworkSpecifierPassphrase( @WifiAwareManager.DataPathRole int role, @Nullable byte[] peer, @WifiAwareManager.DataPathRole int role, @NonNull byte[] peer, @NonNull String passphrase) { WifiAwareManager mgr = mMgr.get(); if (mgr == null) { Loading Loading @@ -293,8 +307,7 @@ public class WifiAwareSession implements AutoCloseable { * {@link WifiAwareManager#WIFI_AWARE_DATA_PATH_ROLE_RESPONDER} * @param peer The MAC address of the peer's Aware discovery interface. On a RESPONDER this * value is used to gate the acceptance of a connection request from only that * peer. A RESPONDER may specify a null - indicating that it will accept * connection requests from any device. * peer. * @param pmk A PMK (pairwise master key, see IEEE 802.11i) specifying the key to use for * encrypting the data-path. Use the * {@link #createNetworkSpecifierPassphrase(int, byte[], String)} to specify a Loading @@ -311,7 +324,7 @@ public class WifiAwareSession implements AutoCloseable { */ @SystemApi public NetworkSpecifier createNetworkSpecifierPmk( @WifiAwareManager.DataPathRole int role, @Nullable byte[] peer, @NonNull byte[] pmk) { @WifiAwareManager.DataPathRole int role, @NonNull byte[] peer, @NonNull byte[] pmk) { WifiAwareManager mgr = mMgr.get(); if (mgr == null) { Log.e(TAG, "createNetworkSpecifierPmk: called post GC on WifiAwareManager"); Loading wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java +36 −16 Original line number Diff line number Diff line Loading @@ -1022,7 +1022,7 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierWithClientNullPmk() throws Exception { executeNetworkSpecifierWithClient(true, null, null); executeNetworkSpecifierWithClient(new PeerHandle(123412), true, null, null); } /** Loading @@ -1030,7 +1030,7 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierWithClientIncorrectLengthPmk() throws Exception { executeNetworkSpecifierWithClient(true, "012".getBytes(), null); executeNetworkSpecifierWithClient(new PeerHandle(123412), true, "012".getBytes(), null); } /** Loading @@ -1038,7 +1038,7 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierWithClientNullPassphrase() throws Exception { executeNetworkSpecifierWithClient(false, null, null); executeNetworkSpecifierWithClient(new PeerHandle(123412), false, null, null); } /** Loading @@ -1046,7 +1046,7 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierWithClientShortPassphrase() throws Exception { executeNetworkSpecifierWithClient(false, null, "012"); executeNetworkSpecifierWithClient(new PeerHandle(123412), false, null, "012"); } /** Loading @@ -1054,15 +1054,23 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierWithClientLongPassphrase() throws Exception { executeNetworkSpecifierWithClient(false, null, executeNetworkSpecifierWithClient(new PeerHandle(123412), false, null, "0123456789012345678901234567890123456789012345678901234567890123456789"); } private void executeNetworkSpecifierWithClient(boolean doPmk, byte[] pmk, String passphrase) throws Exception { /** * Validate that a null PeerHandle triggers an exception. */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierWithClientNullPeer() throws Exception { executeNetworkSpecifierWithClient(null, false, null, "0123456789012345678901234567890123456789012345678901234567890123456789"); } private void executeNetworkSpecifierWithClient(PeerHandle peerHandle, boolean doPmk, byte[] pmk, String passphrase) throws Exception { final int clientId = 4565; final int sessionId = 123; final PeerHandle peerHandle = new PeerHandle(123412); final ConfigRequest configRequest = new ConfigRequest.Builder().build(); final PublishConfig publishConfig = new PublishConfig.Builder().build(); Loading Loading @@ -1108,7 +1116,8 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierDirectNullPmk() throws Exception { executeNetworkSpecifierDirect(true, null, null); executeNetworkSpecifierDirect(HexEncoding.decode("000102030405".toCharArray(), false), true, null, null); } /** Loading @@ -1116,7 +1125,8 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierDirectIncorrectLengthPmk() throws Exception { executeNetworkSpecifierDirect(true, "012".getBytes(), null); executeNetworkSpecifierDirect(HexEncoding.decode("000102030405".toCharArray(), false), true, "012".getBytes(), null); } /** Loading @@ -1124,7 +1134,8 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierDirectNullPassphrase() throws Exception { executeNetworkSpecifierDirect(false, null, null); executeNetworkSpecifierDirect(HexEncoding.decode("000102030405".toCharArray(), false), false, null, null); } /** Loading @@ -1132,7 +1143,8 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierDirectShortPassphrase() throws Exception { executeNetworkSpecifierDirect(false, null, "012"); executeNetworkSpecifierDirect(HexEncoding.decode("000102030405".toCharArray(), false), false, null, "012"); } /** Loading @@ -1140,14 +1152,22 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierDirectLongPassphrase() throws Exception { executeNetworkSpecifierDirect(false, null, executeNetworkSpecifierDirect(HexEncoding.decode("000102030405".toCharArray(), false), false, null, "0123456789012345678901234567890123456789012345678901234567890123456789"); } private void executeNetworkSpecifierDirect(boolean doPmk, byte[] pmk, String passphrase) throws Exception { /** * Validate that a null peer MAC triggers an exception. */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierDirectNullPeer() throws Exception { executeNetworkSpecifierDirect(null, false, null, null); } private void executeNetworkSpecifierDirect(byte[] someMac, boolean doPmk, byte[] pmk, String passphrase) throws Exception { final int clientId = 134; final byte[] someMac = HexEncoding.decode("000102030405".toCharArray(), false); final int role = WifiAwareManager.WIFI_AWARE_DATA_PATH_ROLE_INITIATOR; final ConfigRequest configRequest = new ConfigRequest.Builder().build(); Loading Loading
wifi/java/android/net/wifi/aware/DiscoverySession.java +36 −9 Original line number Diff line number Diff line Loading @@ -22,6 +22,8 @@ import android.annotation.SystemApi; import android.net.NetworkSpecifier; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import dalvik.system.CloseGuard; import java.lang.ref.WeakReference; Loading Loading @@ -141,6 +143,34 @@ public class DiscoverySession implements AutoCloseable { } } /** * Access the client ID of the Aware session. * * Note: internal visibility for testing. * * @return The internal client ID. * * @hide */ @VisibleForTesting public int getClientId() { return mClientId; } /** * Access the discovery session ID of the Aware session. * * Note: internal visibility for testing. * * @return The internal discovery session ID. * * @hide */ @VisibleForTesting public int getSessionId() { return mSessionId; } /** * Sends a message to the specified destination. Aware messages are transmitted in the context * of a discovery session - executed subsequent to a publish/subscribe Loading Loading @@ -246,8 +276,7 @@ public class DiscoverySession implements AutoCloseable { * or * {@link DiscoverySessionCallback#onMessageReceived(PeerHandle, byte[])}. * On a RESPONDER this value is used to gate the acceptance of a connection * request from only that peer. A RESPONDER may specify a {@code null} - * indicating that it will accept connection requests from any device. * request from only that peer. * * @return A {@link NetworkSpecifier} to be used to construct * {@link android.net.NetworkRequest.Builder#setNetworkSpecifier(NetworkSpecifier)} to pass to Loading @@ -255,7 +284,7 @@ public class DiscoverySession implements AutoCloseable { * android.net.ConnectivityManager.NetworkCallback)} * [or other varieties of that API]. */ public NetworkSpecifier createNetworkSpecifierOpen(@Nullable PeerHandle peerHandle) { public NetworkSpecifier createNetworkSpecifierOpen(@NonNull PeerHandle peerHandle) { if (mTerminated) { Log.w(TAG, "createNetworkSpecifierOpen: called on terminated session"); return null; Loading Loading @@ -295,8 +324,7 @@ public class DiscoverySession implements AutoCloseable { * byte[], java.util.List)} or * {@link DiscoverySessionCallback#onMessageReceived(PeerHandle, * byte[])}. On a RESPONDER this value is used to gate the acceptance of a connection request * from only that peer. A RESPONDER may specify a {@code null} - indicating * that it will accept connection requests from any device. * from only that peer. * @param passphrase The passphrase to be used to encrypt the link. The PMK is generated from * the passphrase. Use the * {@link #createNetworkSpecifierOpen(PeerHandle)} API to Loading @@ -309,7 +337,7 @@ public class DiscoverySession implements AutoCloseable { * [or other varieties of that API]. */ public NetworkSpecifier createNetworkSpecifierPassphrase( @Nullable PeerHandle peerHandle, @NonNull String passphrase) { @NonNull PeerHandle peerHandle, @NonNull String passphrase) { if (!WifiAwareUtils.validatePassphrase(passphrase)) { throw new IllegalArgumentException("Passphrase must meet length requirements"); } Loading Loading @@ -354,8 +382,7 @@ public class DiscoverySession implements AutoCloseable { * byte[], java.util.List)} or * {@link DiscoverySessionCallback#onMessageReceived(PeerHandle, * byte[])}. On a RESPONDER this value is used to gate the acceptance of a connection request * from only that peer. A RESPONDER may specify a null - indicating that * it will accept connection requests from any device. * from only that peer. * @param pmk A PMK (pairwise master key, see IEEE 802.11i) specifying the key to use for * encrypting the data-path. Use the * {@link #createNetworkSpecifierPassphrase(PeerHandle, String)} to specify a Loading @@ -371,7 +398,7 @@ public class DiscoverySession implements AutoCloseable { * @hide */ @SystemApi public NetworkSpecifier createNetworkSpecifierPmk(@Nullable PeerHandle peerHandle, public NetworkSpecifier createNetworkSpecifierPmk(@NonNull PeerHandle peerHandle, @NonNull byte[] pmk) { if (!WifiAwareUtils.validatePmk(pmk)) { throw new IllegalArgumentException("PMK must 32 bytes"); Loading
wifi/java/android/net/wifi/aware/WifiAwareManager.java +8 −13 Original line number Diff line number Diff line Loading @@ -406,7 +406,7 @@ public class WifiAwareManager { /** @hide */ public NetworkSpecifier createNetworkSpecifier(int clientId, int role, int sessionId, PeerHandle peerHandle, @Nullable byte[] pmk, @Nullable String passphrase) { @NonNull PeerHandle peerHandle, @Nullable byte[] pmk, @Nullable String passphrase) { if (VDBG) { Log.v(TAG, "createNetworkSpecifier: role=" + role + ", sessionId=" + sessionId + ", peerHandle=" + ((peerHandle == null) ? peerHandle : peerHandle.peerId) Loading @@ -420,12 +420,9 @@ public class WifiAwareManager { "createNetworkSpecifier: Invalid 'role' argument when creating a network " + "specifier"); } if (role == WIFI_AWARE_DATA_PATH_ROLE_INITIATOR) { if (peerHandle == null) { throw new IllegalArgumentException( "createNetworkSpecifier: Invalid peer handle (value of null) - not " + "permitted on INITIATOR"); } "createNetworkSpecifier: Invalid peer handle - cannot be null"); } return new WifiAwareNetworkSpecifier( Loading @@ -443,7 +440,7 @@ public class WifiAwareManager { /** @hide */ public NetworkSpecifier createNetworkSpecifier(int clientId, @DataPathRole int role, @Nullable byte[] peer, @Nullable byte[] pmk, @Nullable String passphrase) { @NonNull byte[] peer, @Nullable byte[] pmk, @Nullable String passphrase) { if (VDBG) { Log.v(TAG, "createNetworkSpecifier: role=" + role + ", pmk=" + ((pmk == null) ? "null" : "non-null") Loading @@ -456,11 +453,9 @@ public class WifiAwareManager { "createNetworkSpecifier: Invalid 'role' argument when creating a network " + "specifier"); } if (role == WIFI_AWARE_DATA_PATH_ROLE_INITIATOR) { if (peer == null) { throw new IllegalArgumentException("createNetworkSpecifier: Invalid peer MAC " + "address - null not permitted on INITIATOR"); } throw new IllegalArgumentException( "createNetworkSpecifier: Invalid peer MAC - cannot be null"); } if (peer != null && peer.length != 6) { throw new IllegalArgumentException("createNetworkSpecifier: Invalid peer MAC address"); Loading
wifi/java/android/net/wifi/aware/WifiAwareSession.java +22 −9 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import android.os.Handler; import android.os.Looper; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import dalvik.system.CloseGuard; import java.lang.ref.WeakReference; Loading Loading @@ -96,6 +98,20 @@ public class WifiAwareSession implements AutoCloseable { } } /** * Access the client ID of the Aware session. * * Note: internal visibility for testing. * * @return The internal client ID. * * @hide */ @VisibleForTesting public int getClientId() { return mClientId; } /** * Issue a request to the Aware service to create a new Aware publish discovery session, using * the specified {@code publishConfig} configuration. The results of the publish operation Loading Loading @@ -207,8 +223,7 @@ public class WifiAwareSession implements AutoCloseable { * {@link WifiAwareManager#WIFI_AWARE_DATA_PATH_ROLE_RESPONDER} * @param peer The MAC address of the peer's Aware discovery interface. On a RESPONDER this * value is used to gate the acceptance of a connection request from only that * peer. A RESPONDER may specify a {@code null} - indicating that it will accept * connection requests from any device. * peer. * * @return A {@link NetworkSpecifier} to be used to construct * {@link android.net.NetworkRequest.Builder#setNetworkSpecifier(NetworkSpecifier)} to pass to Loading @@ -217,7 +232,7 @@ public class WifiAwareSession implements AutoCloseable { * [or other varieties of that API]. */ public NetworkSpecifier createNetworkSpecifierOpen( @WifiAwareManager.DataPathRole int role, @Nullable byte[] peer) { @WifiAwareManager.DataPathRole int role, @NonNull byte[] peer) { WifiAwareManager mgr = mMgr.get(); if (mgr == null) { Log.e(TAG, "createNetworkSpecifierOpen: called post GC on WifiAwareManager"); Loading Loading @@ -246,8 +261,7 @@ public class WifiAwareSession implements AutoCloseable { * {@link WifiAwareManager#WIFI_AWARE_DATA_PATH_ROLE_RESPONDER} * @param peer The MAC address of the peer's Aware discovery interface. On a RESPONDER this * value is used to gate the acceptance of a connection request from only that * peer. A RESPONDER may specify a {@code null} - indicating that it will accept * connection requests from any device. * peer. * @param passphrase The passphrase to be used to encrypt the link. The PMK is generated from * the passphrase. Use {@link #createNetworkSpecifierOpen(int, byte[])} to * specify an open (unencrypted) link. Loading @@ -259,7 +273,7 @@ public class WifiAwareSession implements AutoCloseable { * [or other varieties of that API]. */ public NetworkSpecifier createNetworkSpecifierPassphrase( @WifiAwareManager.DataPathRole int role, @Nullable byte[] peer, @WifiAwareManager.DataPathRole int role, @NonNull byte[] peer, @NonNull String passphrase) { WifiAwareManager mgr = mMgr.get(); if (mgr == null) { Loading Loading @@ -293,8 +307,7 @@ public class WifiAwareSession implements AutoCloseable { * {@link WifiAwareManager#WIFI_AWARE_DATA_PATH_ROLE_RESPONDER} * @param peer The MAC address of the peer's Aware discovery interface. On a RESPONDER this * value is used to gate the acceptance of a connection request from only that * peer. A RESPONDER may specify a null - indicating that it will accept * connection requests from any device. * peer. * @param pmk A PMK (pairwise master key, see IEEE 802.11i) specifying the key to use for * encrypting the data-path. Use the * {@link #createNetworkSpecifierPassphrase(int, byte[], String)} to specify a Loading @@ -311,7 +324,7 @@ public class WifiAwareSession implements AutoCloseable { */ @SystemApi public NetworkSpecifier createNetworkSpecifierPmk( @WifiAwareManager.DataPathRole int role, @Nullable byte[] peer, @NonNull byte[] pmk) { @WifiAwareManager.DataPathRole int role, @NonNull byte[] peer, @NonNull byte[] pmk) { WifiAwareManager mgr = mMgr.get(); if (mgr == null) { Log.e(TAG, "createNetworkSpecifierPmk: called post GC on WifiAwareManager"); Loading
wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java +36 −16 Original line number Diff line number Diff line Loading @@ -1022,7 +1022,7 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierWithClientNullPmk() throws Exception { executeNetworkSpecifierWithClient(true, null, null); executeNetworkSpecifierWithClient(new PeerHandle(123412), true, null, null); } /** Loading @@ -1030,7 +1030,7 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierWithClientIncorrectLengthPmk() throws Exception { executeNetworkSpecifierWithClient(true, "012".getBytes(), null); executeNetworkSpecifierWithClient(new PeerHandle(123412), true, "012".getBytes(), null); } /** Loading @@ -1038,7 +1038,7 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierWithClientNullPassphrase() throws Exception { executeNetworkSpecifierWithClient(false, null, null); executeNetworkSpecifierWithClient(new PeerHandle(123412), false, null, null); } /** Loading @@ -1046,7 +1046,7 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierWithClientShortPassphrase() throws Exception { executeNetworkSpecifierWithClient(false, null, "012"); executeNetworkSpecifierWithClient(new PeerHandle(123412), false, null, "012"); } /** Loading @@ -1054,15 +1054,23 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierWithClientLongPassphrase() throws Exception { executeNetworkSpecifierWithClient(false, null, executeNetworkSpecifierWithClient(new PeerHandle(123412), false, null, "0123456789012345678901234567890123456789012345678901234567890123456789"); } private void executeNetworkSpecifierWithClient(boolean doPmk, byte[] pmk, String passphrase) throws Exception { /** * Validate that a null PeerHandle triggers an exception. */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierWithClientNullPeer() throws Exception { executeNetworkSpecifierWithClient(null, false, null, "0123456789012345678901234567890123456789012345678901234567890123456789"); } private void executeNetworkSpecifierWithClient(PeerHandle peerHandle, boolean doPmk, byte[] pmk, String passphrase) throws Exception { final int clientId = 4565; final int sessionId = 123; final PeerHandle peerHandle = new PeerHandle(123412); final ConfigRequest configRequest = new ConfigRequest.Builder().build(); final PublishConfig publishConfig = new PublishConfig.Builder().build(); Loading Loading @@ -1108,7 +1116,8 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierDirectNullPmk() throws Exception { executeNetworkSpecifierDirect(true, null, null); executeNetworkSpecifierDirect(HexEncoding.decode("000102030405".toCharArray(), false), true, null, null); } /** Loading @@ -1116,7 +1125,8 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierDirectIncorrectLengthPmk() throws Exception { executeNetworkSpecifierDirect(true, "012".getBytes(), null); executeNetworkSpecifierDirect(HexEncoding.decode("000102030405".toCharArray(), false), true, "012".getBytes(), null); } /** Loading @@ -1124,7 +1134,8 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierDirectNullPassphrase() throws Exception { executeNetworkSpecifierDirect(false, null, null); executeNetworkSpecifierDirect(HexEncoding.decode("000102030405".toCharArray(), false), false, null, null); } /** Loading @@ -1132,7 +1143,8 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierDirectShortPassphrase() throws Exception { executeNetworkSpecifierDirect(false, null, "012"); executeNetworkSpecifierDirect(HexEncoding.decode("000102030405".toCharArray(), false), false, null, "012"); } /** Loading @@ -1140,14 +1152,22 @@ public class WifiAwareManagerTest { */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierDirectLongPassphrase() throws Exception { executeNetworkSpecifierDirect(false, null, executeNetworkSpecifierDirect(HexEncoding.decode("000102030405".toCharArray(), false), false, null, "0123456789012345678901234567890123456789012345678901234567890123456789"); } private void executeNetworkSpecifierDirect(boolean doPmk, byte[] pmk, String passphrase) throws Exception { /** * Validate that a null peer MAC triggers an exception. */ @Test(expected = IllegalArgumentException.class) public void testNetworkSpecifierDirectNullPeer() throws Exception { executeNetworkSpecifierDirect(null, false, null, null); } private void executeNetworkSpecifierDirect(byte[] someMac, boolean doPmk, byte[] pmk, String passphrase) throws Exception { final int clientId = 134; final byte[] someMac = HexEncoding.decode("000102030405".toCharArray(), false); final int role = WifiAwareManager.WIFI_AWARE_DATA_PATH_ROLE_INITIATOR; final ConfigRequest configRequest = new ConfigRequest.Builder().build(); Loading