SignatureUtils.smali
.class public Lio/rong/imlib/common/SignatureUtils;
.super Ljava/lang/Object;
.source "SignatureUtils.java"
# static fields
.field private static final HEX_DIGITS:[C
# direct methods
.method static constructor <clinit>()V
.registers 1
const/16 v0, 0x10
.line 1
new-array v0, v0, [C
fill-array-data v0, :array_a
sput-object v0, Lio/rong/imlib/common/SignatureUtils;->HEX_DIGITS:[C
return-void
:array_a
.array-data 2
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x41s
0x42s
0x43s
0x44s
0x45s
0x46s
.end array-data
.end method
.method public constructor <init>()V
.registers 1
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static bytes2HexString([B)Ljava/lang/String;
.registers 7
.line 1
array-length v0, p0
shl-int/lit8 v0, v0, 0x1
new-array v0, v0, [C
const/4 v1, 0x0
const/4 v2, 0x0
.line 2
:goto_7
array-length v3, p0
if-ge v1, v3, :cond_25
add-int/lit8 v3, v2, 0x1
.line 3
sget-object v4, Lio/rong/imlib/common/SignatureUtils;->HEX_DIGITS:[C
aget-byte v5, p0, v1
ushr-int/lit8 v5, v5, 0x4
and-int/lit8 v5, v5, 0xf
aget-char v5, v4, v5
aput-char v5, v0, v2
add-int/lit8 v2, v3, 0x1
.line 4
aget-byte v5, p0, v1
and-int/lit8 v5, v5, 0xf
aget-char v4, v4, v5
aput-char v4, v0, v3
add-int/lit8 v1, v1, 0x1
goto :goto_7
.line 5
:cond_25
new-instance p0, Ljava/lang/String;
invoke-direct {p0, v0}, Ljava/lang/String;-><init>([C)V
return-object p0
.end method
.method private static encryptAlgorithm([BLjava/lang/String;)[B
.registers 2
.line 1
:try_start_0
invoke-static {p1}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest;
move-result-object p1
.line 2
invoke-virtual {p1, p0}, Ljava/security/MessageDigest;->update([B)V
.line 3
invoke-virtual {p1}, Ljava/security/MessageDigest;->digest()[B
move-result-object p0
:try_end_b
.catch Ljava/security/NoSuchAlgorithmException; {:try_start_0 .. :try_end_b} :catch_c
return-object p0
:catch_c
move-exception p0
.line 4
invoke-virtual {p0}, Ljava/security/NoSuchAlgorithmException;->printStackTrace()V
const/4 p0, 0x0
.line 5
new-array p0, p0, [B
return-object p0
.end method
.method public static encryptSHA1([B)[B
.registers 2
const-string v0, "SHA-1"
.line 1
invoke-static {p0, v0}, Lio/rong/imlib/common/SignatureUtils;->encryptAlgorithm([BLjava/lang/String;)[B
move-result-object p0
return-object p0
.end method
.method public static encryptSHA1ToString([B)Ljava/lang/String;
.registers 1
.line 1
invoke-static {p0}, Lio/rong/imlib/common/SignatureUtils;->encryptSHA1([B)[B
move-result-object p0
invoke-static {p0}, Lio/rong/imlib/common/SignatureUtils;->bytes2HexString([B)Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public static getAppSignature(Landroid/content/Context;Ljava/lang/String;)[Landroid/content/pm/Signature;
.registers 4
.annotation build Landroid/annotation/SuppressLint;
value = {
"PackageManagerGetSignatures"
}
.end annotation
.line 1
invoke-static {p1}, Lio/rong/imlib/common/SignatureUtils;->isNullString(Ljava/lang/String;)Z
move-result v0
const/4 v1, 0x0
if-eqz v0, :cond_8
return-object v1
.line 2
:cond_8
:try_start_8
invoke-virtual {p0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
move-result-object p0
const/16 v0, 0x40
.line 3
invoke-virtual {p0, p1, v0}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
move-result-object p0
if-nez p0, :cond_15
goto :goto_17
.line 4
:cond_15
iget-object v1, p0, Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature;
:try_end_17
.catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_8 .. :try_end_17} :catch_18
:goto_17
return-object v1
:catch_18
move-exception p0
.line 5
invoke-virtual {p0}, Landroid/content/pm/PackageManager$NameNotFoundException;->printStackTrace()V
return-object v1
.end method
.method public static getAppSignatureSHA1(Landroid/content/Context;)Ljava/lang/String;
.registers 2
.line 4
invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object v0
invoke-static {p0, v0}, Lio/rong/imlib/common/SignatureUtils;->getAppSignatureSHA1(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public static getAppSignatureSHA1(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;
.registers 3
.line 1
invoke-static {p0, p1}, Lio/rong/imlib/common/SignatureUtils;->getAppSignature(Landroid/content/Context;Ljava/lang/String;)[Landroid/content/pm/Signature;
move-result-object p0
if-nez p0, :cond_8
const/4 p0, 0x0
return-object p0
:cond_8
const/4 p1, 0x0
.line 2
aget-object p0, p0, p1
invoke-virtual {p0}, Landroid/content/pm/Signature;->toByteArray()[B
move-result-object p0
invoke-static {p0}, Lio/rong/imlib/common/SignatureUtils;->encryptSHA1ToString([B)Ljava/lang/String;
move-result-object p0
const-string p1, "(?<=[0-9A-F]{2})[0-9A-F]{2}"
const-string v0, ":$0"
.line 3
invoke-virtual {p0, p1, v0}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public static getAppSignatureSHA1NoSign(Landroid/content/Context;)Ljava/lang/String;
.registers 2
.line 1
invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object v0
invoke-static {p0, v0}, Lio/rong/imlib/common/SignatureUtils;->getAppSignature(Landroid/content/Context;Ljava/lang/String;)[Landroid/content/pm/Signature;
move-result-object p0
if-nez p0, :cond_c
const/4 p0, 0x0
return-object p0
:cond_c
const/4 v0, 0x0
.line 2
aget-object p0, p0, v0
invoke-virtual {p0}, Landroid/content/pm/Signature;->toByteArray()[B
move-result-object p0
invoke-static {p0}, Lio/rong/imlib/common/SignatureUtils;->encryptSHA1ToString([B)Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public static isNullString(Ljava/lang/String;)Z
.registers 2
if-eqz p0, :cond_13
.line 1
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
if-eqz v0, :cond_13
const-string v0, "null"
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_11
goto :goto_13
:cond_11
const/4 p0, 0x0
goto :goto_14
:cond_13
:goto_13
const/4 p0, 0x1
:goto_14
return p0
.end method