How to get .aar sign (or HashKey) in runtime in android
Is it possible to get aar
sign(or HashKey
) in runtime
?
i use below code for apk
files and it works, but not for aar
files
PackageInfo info;
try {
info = Payment.this.getPackageManager().getPackageInfo(contex.getPackageName(), PackageManager.GET_SIGNATURES);
Toast.makeText(Payment.this, contex.getPackageName(), Toast.LENGTH_LONG).show();
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA1");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0));
Log.e("hash key", something);
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
getPackageName()
method get apk
packagename
because of this i will get apk
sign not aar

add a comment |
Is it possible to get aar
sign(or HashKey
) in runtime
?
i use below code for apk
files and it works, but not for aar
files
PackageInfo info;
try {
info = Payment.this.getPackageManager().getPackageInfo(contex.getPackageName(), PackageManager.GET_SIGNATURES);
Toast.makeText(Payment.this, contex.getPackageName(), Toast.LENGTH_LONG).show();
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA1");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0));
Log.e("hash key", something);
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
getPackageName()
method get apk
packagename
because of this i will get apk
sign not aar

What is your problem? Any log or error?
– Ehsan Mashhadi
Jan 1 at 7:49
post edited (read last line), thanks
– Milad
Jan 1 at 7:57
Nothing has changed!
– Ehsan Mashhadi
Jan 1 at 8:09
this line added getPackageName() method get apk packagename because of this i will get apk sign not aar
– Milad
Jan 1 at 8:12
add a comment |
Is it possible to get aar
sign(or HashKey
) in runtime
?
i use below code for apk
files and it works, but not for aar
files
PackageInfo info;
try {
info = Payment.this.getPackageManager().getPackageInfo(contex.getPackageName(), PackageManager.GET_SIGNATURES);
Toast.makeText(Payment.this, contex.getPackageName(), Toast.LENGTH_LONG).show();
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA1");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0));
Log.e("hash key", something);
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
getPackageName()
method get apk
packagename
because of this i will get apk
sign not aar

Is it possible to get aar
sign(or HashKey
) in runtime
?
i use below code for apk
files and it works, but not for aar
files
PackageInfo info;
try {
info = Payment.this.getPackageManager().getPackageInfo(contex.getPackageName(), PackageManager.GET_SIGNATURES);
Toast.makeText(Payment.this, contex.getPackageName(), Toast.LENGTH_LONG).show();
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA1");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0));
Log.e("hash key", something);
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
getPackageName()
method get apk
packagename
because of this i will get apk
sign not aar


edited Jan 1 at 12:31


Milad Bahmanabadi
831718
831718
asked Jan 1 at 7:15
MiladMilad
969
969
What is your problem? Any log or error?
– Ehsan Mashhadi
Jan 1 at 7:49
post edited (read last line), thanks
– Milad
Jan 1 at 7:57
Nothing has changed!
– Ehsan Mashhadi
Jan 1 at 8:09
this line added getPackageName() method get apk packagename because of this i will get apk sign not aar
– Milad
Jan 1 at 8:12
add a comment |
What is your problem? Any log or error?
– Ehsan Mashhadi
Jan 1 at 7:49
post edited (read last line), thanks
– Milad
Jan 1 at 7:57
Nothing has changed!
– Ehsan Mashhadi
Jan 1 at 8:09
this line added getPackageName() method get apk packagename because of this i will get apk sign not aar
– Milad
Jan 1 at 8:12
What is your problem? Any log or error?
– Ehsan Mashhadi
Jan 1 at 7:49
What is your problem? Any log or error?
– Ehsan Mashhadi
Jan 1 at 7:49
post edited (read last line), thanks
– Milad
Jan 1 at 7:57
post edited (read last line), thanks
– Milad
Jan 1 at 7:57
Nothing has changed!
– Ehsan Mashhadi
Jan 1 at 8:09
Nothing has changed!
– Ehsan Mashhadi
Jan 1 at 8:09
this line added getPackageName() method get apk packagename because of this i will get apk sign not aar
– Milad
Jan 1 at 8:12
this line added getPackageName() method get apk packagename because of this i will get apk sign not aar
– Milad
Jan 1 at 8:12
add a comment |
1 Answer
1
active
oldest
votes
Get you context and pass it to the getSign method
public static String getSign(Context context, String algorithm) throws CertificateException, NoSuchAlgorithmException, PackageManager.NameNotFoundException {
PackageManager packageManager = context.getPackageManager();
String packageName = context.getPackageName();
int flags = PackageManager.GET_SIGNATURES;
PackageInfo packageInfo = null;
try {
packageInfo = packageManager.getPackageInfo(packageName, flags);
} catch (PackageManager.NameNotFoundException e) {
throw e;
}
Signature signatures = packageInfo.signatures;
byte cert = signatures[0].toByteArray();
InputStream input = new ByteArrayInputStream(cert);
CertificateFactory certificateFactory = null;
try {
certificateFactory = CertificateFactory.getInstance("X509");
} catch (CertificateException e) {
throw e;
}
X509Certificate certificate = null;
try {
certificate = (X509Certificate) certificateFactory.generateCertificate(input);
} catch (CertificateException e) {
throw e;
}
String hexString = null;
try {
MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
byte publicKey = messageDigest.digest(certificate.getEncoded());
hexString = byte2HexFormatted(publicKey);
} catch (NoSuchAlgorithmException e1) {
throw e1;
} catch (CertificateEncodingException e) {
throw e;
}
return hexString;
}
private static String byte2HexFormatted(byte arr) {
StringBuilder stringBuilder = new StringBuilder(arr.length * 2);
for (int i = 0; i < arr.length; i++) {
String hexString = Integer.toHexString(arr[i]);
int l = hexString.length();
if (l == 1) hexString = "0" + hexString;
if (l > 2) hexString = hexString.substring(l - 2, l);
stringBuilder.append(hexString.toUpperCase());
}
return stringBuilder.toString();
}
Sample:
Context context = MyLibApp.getContext();
String sha1Sign = null;
try {
sha1Sign = AppSigner.getSign(context, "SHA1");
} catch (CertificateException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
Assert.assertNotNull(sha1Sign);
thanks, sha1Sign will return sign of aar file or sign of an apk that included aar file?
– Milad
Jan 1 at 9:12
@Milad Did you find a workaround? I am facing the same problem
– madking
Jan 26 at 14:29
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53993708%2fhow-to-get-aar-sign-or-hashkey-in-runtime-in-android%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Get you context and pass it to the getSign method
public static String getSign(Context context, String algorithm) throws CertificateException, NoSuchAlgorithmException, PackageManager.NameNotFoundException {
PackageManager packageManager = context.getPackageManager();
String packageName = context.getPackageName();
int flags = PackageManager.GET_SIGNATURES;
PackageInfo packageInfo = null;
try {
packageInfo = packageManager.getPackageInfo(packageName, flags);
} catch (PackageManager.NameNotFoundException e) {
throw e;
}
Signature signatures = packageInfo.signatures;
byte cert = signatures[0].toByteArray();
InputStream input = new ByteArrayInputStream(cert);
CertificateFactory certificateFactory = null;
try {
certificateFactory = CertificateFactory.getInstance("X509");
} catch (CertificateException e) {
throw e;
}
X509Certificate certificate = null;
try {
certificate = (X509Certificate) certificateFactory.generateCertificate(input);
} catch (CertificateException e) {
throw e;
}
String hexString = null;
try {
MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
byte publicKey = messageDigest.digest(certificate.getEncoded());
hexString = byte2HexFormatted(publicKey);
} catch (NoSuchAlgorithmException e1) {
throw e1;
} catch (CertificateEncodingException e) {
throw e;
}
return hexString;
}
private static String byte2HexFormatted(byte arr) {
StringBuilder stringBuilder = new StringBuilder(arr.length * 2);
for (int i = 0; i < arr.length; i++) {
String hexString = Integer.toHexString(arr[i]);
int l = hexString.length();
if (l == 1) hexString = "0" + hexString;
if (l > 2) hexString = hexString.substring(l - 2, l);
stringBuilder.append(hexString.toUpperCase());
}
return stringBuilder.toString();
}
Sample:
Context context = MyLibApp.getContext();
String sha1Sign = null;
try {
sha1Sign = AppSigner.getSign(context, "SHA1");
} catch (CertificateException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
Assert.assertNotNull(sha1Sign);
thanks, sha1Sign will return sign of aar file or sign of an apk that included aar file?
– Milad
Jan 1 at 9:12
@Milad Did you find a workaround? I am facing the same problem
– madking
Jan 26 at 14:29
add a comment |
Get you context and pass it to the getSign method
public static String getSign(Context context, String algorithm) throws CertificateException, NoSuchAlgorithmException, PackageManager.NameNotFoundException {
PackageManager packageManager = context.getPackageManager();
String packageName = context.getPackageName();
int flags = PackageManager.GET_SIGNATURES;
PackageInfo packageInfo = null;
try {
packageInfo = packageManager.getPackageInfo(packageName, flags);
} catch (PackageManager.NameNotFoundException e) {
throw e;
}
Signature signatures = packageInfo.signatures;
byte cert = signatures[0].toByteArray();
InputStream input = new ByteArrayInputStream(cert);
CertificateFactory certificateFactory = null;
try {
certificateFactory = CertificateFactory.getInstance("X509");
} catch (CertificateException e) {
throw e;
}
X509Certificate certificate = null;
try {
certificate = (X509Certificate) certificateFactory.generateCertificate(input);
} catch (CertificateException e) {
throw e;
}
String hexString = null;
try {
MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
byte publicKey = messageDigest.digest(certificate.getEncoded());
hexString = byte2HexFormatted(publicKey);
} catch (NoSuchAlgorithmException e1) {
throw e1;
} catch (CertificateEncodingException e) {
throw e;
}
return hexString;
}
private static String byte2HexFormatted(byte arr) {
StringBuilder stringBuilder = new StringBuilder(arr.length * 2);
for (int i = 0; i < arr.length; i++) {
String hexString = Integer.toHexString(arr[i]);
int l = hexString.length();
if (l == 1) hexString = "0" + hexString;
if (l > 2) hexString = hexString.substring(l - 2, l);
stringBuilder.append(hexString.toUpperCase());
}
return stringBuilder.toString();
}
Sample:
Context context = MyLibApp.getContext();
String sha1Sign = null;
try {
sha1Sign = AppSigner.getSign(context, "SHA1");
} catch (CertificateException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
Assert.assertNotNull(sha1Sign);
thanks, sha1Sign will return sign of aar file or sign of an apk that included aar file?
– Milad
Jan 1 at 9:12
@Milad Did you find a workaround? I am facing the same problem
– madking
Jan 26 at 14:29
add a comment |
Get you context and pass it to the getSign method
public static String getSign(Context context, String algorithm) throws CertificateException, NoSuchAlgorithmException, PackageManager.NameNotFoundException {
PackageManager packageManager = context.getPackageManager();
String packageName = context.getPackageName();
int flags = PackageManager.GET_SIGNATURES;
PackageInfo packageInfo = null;
try {
packageInfo = packageManager.getPackageInfo(packageName, flags);
} catch (PackageManager.NameNotFoundException e) {
throw e;
}
Signature signatures = packageInfo.signatures;
byte cert = signatures[0].toByteArray();
InputStream input = new ByteArrayInputStream(cert);
CertificateFactory certificateFactory = null;
try {
certificateFactory = CertificateFactory.getInstance("X509");
} catch (CertificateException e) {
throw e;
}
X509Certificate certificate = null;
try {
certificate = (X509Certificate) certificateFactory.generateCertificate(input);
} catch (CertificateException e) {
throw e;
}
String hexString = null;
try {
MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
byte publicKey = messageDigest.digest(certificate.getEncoded());
hexString = byte2HexFormatted(publicKey);
} catch (NoSuchAlgorithmException e1) {
throw e1;
} catch (CertificateEncodingException e) {
throw e;
}
return hexString;
}
private static String byte2HexFormatted(byte arr) {
StringBuilder stringBuilder = new StringBuilder(arr.length * 2);
for (int i = 0; i < arr.length; i++) {
String hexString = Integer.toHexString(arr[i]);
int l = hexString.length();
if (l == 1) hexString = "0" + hexString;
if (l > 2) hexString = hexString.substring(l - 2, l);
stringBuilder.append(hexString.toUpperCase());
}
return stringBuilder.toString();
}
Sample:
Context context = MyLibApp.getContext();
String sha1Sign = null;
try {
sha1Sign = AppSigner.getSign(context, "SHA1");
} catch (CertificateException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
Assert.assertNotNull(sha1Sign);
Get you context and pass it to the getSign method
public static String getSign(Context context, String algorithm) throws CertificateException, NoSuchAlgorithmException, PackageManager.NameNotFoundException {
PackageManager packageManager = context.getPackageManager();
String packageName = context.getPackageName();
int flags = PackageManager.GET_SIGNATURES;
PackageInfo packageInfo = null;
try {
packageInfo = packageManager.getPackageInfo(packageName, flags);
} catch (PackageManager.NameNotFoundException e) {
throw e;
}
Signature signatures = packageInfo.signatures;
byte cert = signatures[0].toByteArray();
InputStream input = new ByteArrayInputStream(cert);
CertificateFactory certificateFactory = null;
try {
certificateFactory = CertificateFactory.getInstance("X509");
} catch (CertificateException e) {
throw e;
}
X509Certificate certificate = null;
try {
certificate = (X509Certificate) certificateFactory.generateCertificate(input);
} catch (CertificateException e) {
throw e;
}
String hexString = null;
try {
MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
byte publicKey = messageDigest.digest(certificate.getEncoded());
hexString = byte2HexFormatted(publicKey);
} catch (NoSuchAlgorithmException e1) {
throw e1;
} catch (CertificateEncodingException e) {
throw e;
}
return hexString;
}
private static String byte2HexFormatted(byte arr) {
StringBuilder stringBuilder = new StringBuilder(arr.length * 2);
for (int i = 0; i < arr.length; i++) {
String hexString = Integer.toHexString(arr[i]);
int l = hexString.length();
if (l == 1) hexString = "0" + hexString;
if (l > 2) hexString = hexString.substring(l - 2, l);
stringBuilder.append(hexString.toUpperCase());
}
return stringBuilder.toString();
}
Sample:
Context context = MyLibApp.getContext();
String sha1Sign = null;
try {
sha1Sign = AppSigner.getSign(context, "SHA1");
} catch (CertificateException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
Assert.assertNotNull(sha1Sign);
answered Jan 1 at 8:46


Ehsan MashhadiEhsan Mashhadi
751618
751618
thanks, sha1Sign will return sign of aar file or sign of an apk that included aar file?
– Milad
Jan 1 at 9:12
@Milad Did you find a workaround? I am facing the same problem
– madking
Jan 26 at 14:29
add a comment |
thanks, sha1Sign will return sign of aar file or sign of an apk that included aar file?
– Milad
Jan 1 at 9:12
@Milad Did you find a workaround? I am facing the same problem
– madking
Jan 26 at 14:29
thanks, sha1Sign will return sign of aar file or sign of an apk that included aar file?
– Milad
Jan 1 at 9:12
thanks, sha1Sign will return sign of aar file or sign of an apk that included aar file?
– Milad
Jan 1 at 9:12
@Milad Did you find a workaround? I am facing the same problem
– madking
Jan 26 at 14:29
@Milad Did you find a workaround? I am facing the same problem
– madking
Jan 26 at 14:29
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53993708%2fhow-to-get-aar-sign-or-hashkey-in-runtime-in-android%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
What is your problem? Any log or error?
– Ehsan Mashhadi
Jan 1 at 7:49
post edited (read last line), thanks
– Milad
Jan 1 at 7:57
Nothing has changed!
– Ehsan Mashhadi
Jan 1 at 8:09
this line added getPackageName() method get apk packagename because of this i will get apk sign not aar
– Milad
Jan 1 at 8:12