mirror of
https://github.com/wanxf-shuto/CordovaReadApplicationSignature.git
synced 2026-06-05 00:00:35 +08:00
Updated repo
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
package cordova.plugin.appSignature;
|
||||
|
||||
import org.apache.cordova.CordovaPlugin;
|
||||
import org.apache.cordova.CallbackContext;
|
||||
import org.apache.cordova.PluginResult;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.Signature;
|
||||
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.NoSuchProviderException;
|
||||
|
||||
|
||||
/**
|
||||
* This class echoes a string called from JavaScript.
|
||||
*/
|
||||
public class ReadAppSignature extends CordovaPlugin {
|
||||
|
||||
@Override
|
||||
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
|
||||
if (action.equals(Actions.GET_SIGNATURE)) {
|
||||
this.getAppSignature(callbackContext);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void getAppSignature(CallbackContext callbackContext) {
|
||||
PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, getAppSignature());
|
||||
callbackContext.sendPluginResult(pluginResult);
|
||||
}
|
||||
|
||||
@SuppressLint("PackageManagerGetSignatures")
|
||||
public String getAppSignature() {
|
||||
|
||||
PackageInfo packageInfo;
|
||||
try {
|
||||
packageInfo = cordova.getActivity().getPackageManager().getPackageInfo(
|
||||
cordova.getActivity().getPackageName(), PackageManager.GET_SIGNATURES);
|
||||
|
||||
//note sample just checks the first signature
|
||||
for (Signature signature : packageInfo.signatures) {
|
||||
// SHA1 the signature
|
||||
LogUtils.LOGD(TAG, "getAppSignature() called : " + getSHA1(signature.toByteArray()));
|
||||
return getSHA1(signature.toByteArray());
|
||||
}
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
//computed the sha1 hash of the signature
|
||||
public static String getSHA1(byte[] sig) {
|
||||
MessageDigest digest = null;
|
||||
try {
|
||||
digest = MessageDigest.getInstance("SHA1", "BC");
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchProviderException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
digest.update(sig);
|
||||
byte[] hashtext = digest.digest();
|
||||
return bytesToHex(hashtext);
|
||||
}
|
||||
|
||||
//util method to convert byte array to hex string
|
||||
public static String bytesToHex(byte[] bytes) {
|
||||
final char[] hexArray = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
|
||||
'9', 'A', 'B', 'C', 'D', 'E', 'F'};
|
||||
char[] hexChars = new char[bytes.length * 2];
|
||||
int v;
|
||||
for (int j = 0; j < bytes.length; j++) {
|
||||
v = bytes[j] & 0xFF;
|
||||
hexChars[j * 2] = hexArray[v >>> 4];
|
||||
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
|
||||
}
|
||||
return new String(hexChars);
|
||||
}
|
||||
|
||||
interface Actions {
|
||||
String GET_SIGNATURE = "getSignature";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user