FacebookSignatureValidator.smali
.class public Lcom/facebook/internal/FacebookSignatureValidator;
.super Ljava/lang/Object;
.source "FacebookSignatureValidator.java"
# static fields
.field private static final FBF_HASH:Ljava/lang/String; = "2438bce1ddb7bd026d5ff89f598b3b5e5bb824b3"
.field private static final FBI_HASH:Ljava/lang/String; = "a4b7452e2ed8f5f191058ca7bbfd26b0d3214bfc"
.field private static final FBL2_HASH:Ljava/lang/String; = "df6b721c8b4d3b6eb44c861d4415007e5a35fc95"
.field private static final FBL_HASH:Ljava/lang/String; = "5e8f16062ea3cd2c4a0d547876baa6f38cabf625"
.field private static final FBR2_HASH:Ljava/lang/String; = "cc2751449a350f668590264ed76692694a80308a"
.field private static final FBR_HASH:Ljava/lang/String; = "8a3c4b262d721acd49a4bf97d5213199c86fa2b9"
.field private static final MSR_HASH:Ljava/lang/String; = "9b8f518b086098de3d77736f9458a3d2f6f95a37"
.field private static final validAppSignatureHashes:Ljava/util/HashSet;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashSet<",
"Ljava/lang/String;",
">;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 47
invoke-static {}, Lcom/facebook/internal/FacebookSignatureValidator;->buildAppSignatureHashes()Ljava/util/HashSet;
move-result-object v0
sput-object v0, Lcom/facebook/internal/FacebookSignatureValidator;->validAppSignatureHashes:Ljava/util/HashSet;
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 37
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private static buildAppSignatureHashes()Ljava/util/HashSet;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/HashSet<",
"Ljava/lang/String;",
">;"
}
.end annotation
.line 50
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
const-string v1, "8a3c4b262d721acd49a4bf97d5213199c86fa2b9"
.line 51
invoke-virtual {v0, v1}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
const-string v1, "cc2751449a350f668590264ed76692694a80308a"
.line 52
invoke-virtual {v0, v1}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
const-string v1, "a4b7452e2ed8f5f191058ca7bbfd26b0d3214bfc"
.line 53
invoke-virtual {v0, v1}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
const-string v1, "5e8f16062ea3cd2c4a0d547876baa6f38cabf625"
.line 54
invoke-virtual {v0, v1}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
const-string v1, "df6b721c8b4d3b6eb44c861d4415007e5a35fc95"
.line 55
invoke-virtual {v0, v1}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
const-string v1, "9b8f518b086098de3d77736f9458a3d2f6f95a37"
.line 56
invoke-virtual {v0, v1}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
const-string v1, "2438bce1ddb7bd026d5ff89f598b3b5e5bb824b3"
.line 57
invoke-virtual {v0, v1}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
return-object v0
.end method
.method public static validateSignature(Landroid/content/Context;Ljava/lang/String;)Z
.registers 7
.line 62
sget-object v0, Landroid/os/Build;->BRAND:Ljava/lang/String;
.line 63
invoke-virtual {p0}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
move-result-object v1
iget v1, v1, Landroid/content/pm/ApplicationInfo;->flags:I
const-string v2, "generic"
.line 64
invoke-virtual {v0, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
const/4 v2, 0x1
if-eqz v0, :cond_16
and-int/lit8 v0, v1, 0x2
if-eqz v0, :cond_16
return v2
:cond_16
const/4 v0, 0x0
.line 72
:try_start_17
invoke-virtual {p0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
move-result-object p0
const/16 v1, 0x40
invoke-virtual {p0, p1, v1}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
move-result-object p0
:try_end_21
.catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_17 .. :try_end_21} :catch_48
.line 80
iget-object p1, p0, Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature;
if-eqz p1, :cond_48
iget-object p1, p0, Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature;
array-length p1, p1
if-gtz p1, :cond_2b
goto :goto_48
.line 84
:cond_2b
iget-object p0, p0, Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature;
array-length p1, p0
const/4 v1, 0x0
:goto_2f
if-ge v1, p1, :cond_47
aget-object v3, p0, v1
.line 85
invoke-virtual {v3}, Landroid/content/pm/Signature;->toByteArray()[B
move-result-object v3
invoke-static {v3}, Lcom/facebook/internal/Utility;->sha1hash([B)Ljava/lang/String;
move-result-object v3
.line 86
sget-object v4, Lcom/facebook/internal/FacebookSignatureValidator;->validAppSignatureHashes:Ljava/util/HashSet;
invoke-virtual {v4, v3}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
move-result v3
if-nez v3, :cond_44
return v0
:cond_44
add-int/lit8 v1, v1, 0x1
goto :goto_2f
:cond_47
return v2
:catch_48
:cond_48
:goto_48
return v0
.end method