some improvements
This commit is contained in:
parent
5215576c8f
commit
f39ec92bcf
|
@ -5790,7 +5790,6 @@ public class API {
|
||||||
PushSubscription pushSubscription = null;
|
PushSubscription pushSubscription = null;
|
||||||
try {
|
try {
|
||||||
String response = new HttpsConnection(context, this.instance).get(getAbsoluteUrl("/push/subscription"), 10, null, prefKeyOauthTokenT);
|
String response = new HttpsConnection(context, this.instance).get(getAbsoluteUrl("/push/subscription"), 10, null, prefKeyOauthTokenT);
|
||||||
Log.v(Helper.TAG, "response GET: " + response);
|
|
||||||
pushSubscription = parsePushNotifications(new JSONObject(response));
|
pushSubscription = parsePushNotifications(new JSONObject(response));
|
||||||
} catch (HttpsConnection.HttpsConnectionException e) {
|
} catch (HttpsConnection.HttpsConnectionException e) {
|
||||||
setError(e.getStatusCode(), e);
|
setError(e.getStatusCode(), e);
|
||||||
|
@ -5835,7 +5834,6 @@ public class API {
|
||||||
|
|
||||||
String response = new HttpsConnection(context, this.instance).put(getAbsoluteUrl("/push/subscription"), 10, params, prefKeyOauthTokenT);
|
String response = new HttpsConnection(context, this.instance).put(getAbsoluteUrl("/push/subscription"), 10, params, prefKeyOauthTokenT);
|
||||||
pushSubscription = parsePushNotifications(new JSONObject(response));
|
pushSubscription = parsePushNotifications(new JSONObject(response));
|
||||||
Log.v(Helper.TAG, "response3: " + response);
|
|
||||||
} catch (HttpsConnection.HttpsConnectionException e) {
|
} catch (HttpsConnection.HttpsConnectionException e) {
|
||||||
setError(e.getStatusCode(), e);
|
setError(e.getStatusCode(), e);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -5861,32 +5859,14 @@ public class API {
|
||||||
boolean notif_status = sharedpreferences.getBoolean(Helper.SET_NOTIF_STATUS, true);
|
boolean notif_status = sharedpreferences.getBoolean(Helper.SET_NOTIF_STATUS, true);
|
||||||
boolean notif_poll = sharedpreferences.getBoolean(Helper.SET_NOTIF_POLL, true);
|
boolean notif_poll = sharedpreferences.getBoolean(Helper.SET_NOTIF_POLL, true);
|
||||||
|
|
||||||
HashMap<String, String> params = new HashMap<>();
|
|
||||||
|
|
||||||
/*try {
|
|
||||||
endpoint = URLEncoder.encode(endpoint, "UTF-8");
|
|
||||||
} catch (UnsupportedEncodingException ignored) {
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|
||||||
ECDH ecdh = ECDH.getInstance();
|
ECDH ecdh = ECDH.getInstance();
|
||||||
String pubKey = ecdh.getPublicKey(context);
|
String pubKey = ecdh.getPublicKey(context);
|
||||||
byte[] randBytes = new byte[16];
|
byte[] randBytes = new byte[16];
|
||||||
new Random().nextBytes(randBytes);
|
new Random().nextBytes(randBytes);
|
||||||
String auth = ECDH.base64Encode(randBytes);
|
String auth = ECDH.base64Encode(randBytes);
|
||||||
|
|
||||||
/*try {
|
|
||||||
pubKey = URLEncoder.encode(pubKey.replaceAll("\n",""), "UTF-8");
|
|
||||||
} catch (UnsupportedEncodingException ignored) {
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
auth = URLEncoder.encode(auth.replaceAll("\n",""), "UTF-8");
|
|
||||||
} catch (UnsupportedEncodingException ignored) {
|
|
||||||
}*/
|
|
||||||
|
|
||||||
JSONObject jsonObject = new JSONObject();
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
JSONObject jsonObjectSub = new JSONObject();
|
JSONObject jsonObjectSub = new JSONObject();
|
||||||
|
|
||||||
|
@ -5909,11 +5889,9 @@ public class API {
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
Log.v(Helper.TAG, "jsonObject: " + jsonObject);
|
|
||||||
try {
|
try {
|
||||||
String response = new HttpsConnection(context, this.instance).postJson(getAbsoluteUrl("/push/subscription"), 10, jsonObject, prefKeyOauthTokenT);
|
String response = new HttpsConnection(context, this.instance).postJson(getAbsoluteUrl("/push/subscription"), 10, jsonObject, prefKeyOauthTokenT);
|
||||||
pushSubscription = parsePushNotifications(new JSONObject(response));
|
pushSubscription = parsePushNotifications(new JSONObject(response));
|
||||||
Log.v(Helper.TAG, "response: " + response);
|
|
||||||
ecdh.saveServerKey(context, account, pushSubscription.getServer_key());
|
ecdh.saveServerKey(context, account, pushSubscription.getServer_key());
|
||||||
} catch (HttpsConnection.HttpsConnectionException e) {
|
} catch (HttpsConnection.HttpsConnectionException e) {
|
||||||
setError(e.getStatusCode(), e);
|
setError(e.getStatusCode(), e);
|
||||||
|
|
|
@ -51,6 +51,7 @@ public class ECDH {
|
||||||
|
|
||||||
private static ECDH instance;
|
private static ECDH instance;
|
||||||
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
// Security.removeProvider("BC");
|
// Security.removeProvider("BC");
|
||||||
Security.addProvider(new org.spongycastle.jce.provider.BouncyCastleProvider());
|
Security.addProvider(new org.spongycastle.jce.provider.BouncyCastleProvider());
|
||||||
|
@ -85,7 +86,7 @@ public class ECDH {
|
||||||
}
|
}
|
||||||
|
|
||||||
static byte[] base64Decode(String str) {
|
static byte[] base64Decode(String str) {
|
||||||
return Base64.decode(str, Base64.DEFAULT);
|
return Base64.decode(str, Base64.URL_SAFE | Base64.NO_PADDING | Base64.NO_WRAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized KeyPair generateKeyPair()
|
synchronized KeyPair generateKeyPair()
|
||||||
|
@ -166,7 +167,7 @@ public class ECDH {
|
||||||
String strPub = prefs.getString(kp_public, "");
|
String strPub = prefs.getString(kp_public, "");
|
||||||
String strPriv = prefs.getString(kp_private, "");
|
String strPriv = prefs.getString(kp_private, "");
|
||||||
|
|
||||||
if (strPub.isEmpty() || strPriv.isEmpty() || 1 == 1) {
|
if (strPub.isEmpty() || strPriv.isEmpty()) {
|
||||||
return newPair(context);
|
return newPair(context);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -8,6 +8,7 @@ import android.util.Log;
|
||||||
|
|
||||||
import org.unifiedpush.android.connector.Registration;
|
import org.unifiedpush.android.connector.Registration;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
@ -43,9 +44,17 @@ public class PushNotifications implements OnPostSubscription {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void displayNotification(Context context, Account account, String ciphered) {
|
public void displayNotification(Context context, String ciphered) {
|
||||||
ECDH ecdh = new ECDH();
|
ECDH ecdh = new ECDH();
|
||||||
byte[] secret = ecdh.getSecret(context, account);
|
|
||||||
|
SQLiteDatabase db = Sqlite.getInstance(context.getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||||
|
List<Account> accountPush = new AccountDAO(context, db).getPushNotificationAccounts();
|
||||||
|
List<byte[]> trousseau = new ArrayList<>();
|
||||||
|
for (Account account : accountPush) {
|
||||||
|
byte[] secret = ecdh.getSecret(context, account);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//process with the event
|
//process with the event
|
||||||
// https://openacs.org/webpush-demo/report.html
|
// https://openacs.org/webpush-demo/report.html
|
||||||
// decrypt using AES 128 GCM
|
// decrypt using AES 128 GCM
|
||||||
|
|
|
@ -32,7 +32,6 @@ class handler implements MessagingReceiverHandler {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNewEndpoint(@Nullable Context context, @NotNull String endpoint) {
|
public void onNewEndpoint(@Nullable Context context, @NotNull String endpoint) {
|
||||||
Log.v(Helper.TAG, "onNewEndpoint: " + endpoint);
|
|
||||||
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
|
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
|
||||||
SharedPreferences.Editor editor = sharedpreferences.edit();
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||||
editor.putString(Helper.SERVER_ENDPOINT, endpoint);
|
editor.putString(Helper.SERVER_ENDPOINT, endpoint);
|
||||||
|
@ -44,27 +43,23 @@ class handler implements MessagingReceiverHandler {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRegistrationFailed(@Nullable Context context) {
|
public void onRegistrationFailed(@Nullable Context context) {
|
||||||
Log.v(Helper.TAG, "onRegistrationFailed: ");
|
|
||||||
// Toast ?
|
// Toast ?
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRegistrationRefused(@Nullable Context context) {
|
public void onRegistrationRefused(@Nullable Context context) {
|
||||||
// Toast ?
|
// Toast ?
|
||||||
Log.v(Helper.TAG, "onRegistrationRefused: ");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUnregistered(@Nullable Context context) {
|
public void onUnregistered(@Nullable Context context) {
|
||||||
Log.v(Helper.TAG, "onUnregistered: ");
|
|
||||||
// Remove endpoint & ServerKey
|
// Remove endpoint & ServerKey
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMessage(@Nullable Context context, @NotNull String message) {
|
public void onMessage(@Nullable Context context, @NotNull String message) {
|
||||||
Log.v(Helper.TAG, "Message: " + message);
|
|
||||||
new PushNotifications()
|
new PushNotifications()
|
||||||
.displayNotification(context, null, message);
|
.displayNotification(context, message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue