a$b$a.smali
.class public Lio/dcloud/e/f/a$b$a;
.super Ljava/security/SecureRandomSpi;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lio/dcloud/e/f/a$b;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x9
name = "a"
.end annotation
# static fields
.field private static final a:Ljava/io/File;
.field private static final b:Ljava/lang/Object;
.field private static c:Ljava/io/DataInputStream;
.field private static d:Ljava/io/OutputStream;
# instance fields
.field private e:Z
# direct methods
.method static constructor <clinit>()V
.registers 2
.line 1
new-instance v0, Ljava/io/File;
const-string v1, "/dev/urandom"
invoke-direct {v0, v1}, Ljava/io/File;-><init>(Ljava/lang/String;)V
sput-object v0, Lio/dcloud/e/f/a$b$a;->a:Ljava/io/File;
.line 3
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
sput-object v0, Lio/dcloud/e/f/a$b$a;->b:Ljava/lang/Object;
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 1
invoke-direct {p0}, Ljava/security/SecureRandomSpi;-><init>()V
return-void
.end method
.method private a()Ljava/io/DataInputStream;
.registers 6
.line 1
sget-object v0, Lio/dcloud/e/f/a$b$a;->b:Ljava/lang/Object;
monitor-enter v0
.line 2
:try_start_3
sget-object v1, Lio/dcloud/e/f/a$b$a;->c:Ljava/io/DataInputStream;
:try_end_5
.catchall {:try_start_3 .. :try_end_5} :catchall_39
if-nez v1, :cond_35
.line 8
:try_start_7
new-instance v1, Ljava/io/DataInputStream;
new-instance v2, Ljava/io/FileInputStream;
sget-object v3, Lio/dcloud/e/f/a$b$a;->a:Ljava/io/File;
invoke-direct {v2, v3}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
invoke-direct {v1, v2}, Ljava/io/DataInputStream;-><init>(Ljava/io/InputStream;)V
sput-object v1, Lio/dcloud/e/f/a$b$a;->c:Ljava/io/DataInputStream;
:try_end_15
.catch Ljava/io/IOException; {:try_start_7 .. :try_end_15} :catch_16
.catchall {:try_start_7 .. :try_end_15} :catchall_39
goto :goto_35
:catch_16
move-exception v1
.line 10
:try_start_17
new-instance v2, Ljava/lang/SecurityException;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Failed to open "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-object v4, Lio/dcloud/e/f/a$b$a;->a:Ljava/io/File;
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string v4, " for reading"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-direct {v2, v3, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v2
.line 14
:cond_35
:goto_35
sget-object v1, Lio/dcloud/e/f/a$b$a;->c:Ljava/io/DataInputStream;
monitor-exit v0
return-object v1
:catchall_39
move-exception v1
.line 15
monitor-exit v0
:try_end_3b
.catchall {:try_start_17 .. :try_end_3b} :catchall_39
throw v1
.end method
.method private b()Ljava/io/OutputStream;
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1
sget-object v0, Lio/dcloud/e/f/a$b$a;->b:Ljava/lang/Object;
monitor-enter v0
.line 2
:try_start_3
sget-object v1, Lio/dcloud/e/f/a$b$a;->d:Ljava/io/OutputStream;
if-nez v1, :cond_10
.line 3
new-instance v1, Ljava/io/FileOutputStream;
sget-object v2, Lio/dcloud/e/f/a$b$a;->a:Ljava/io/File;
invoke-direct {v1, v2}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V
sput-object v1, Lio/dcloud/e/f/a$b$a;->d:Ljava/io/OutputStream;
.line 5
:cond_10
sget-object v1, Lio/dcloud/e/f/a$b$a;->d:Ljava/io/OutputStream;
monitor-exit v0
return-object v1
:catchall_14
move-exception v1
.line 6
monitor-exit v0
:try_end_16
.catchall {:try_start_3 .. :try_end_16} :catchall_14
throw v1
.end method
# virtual methods
.method protected engineGenerateSeed(I)[B
.registers 2
.line 1
new-array p1, p1, [B
.line 2
invoke-virtual {p0, p1}, Lio/dcloud/e/f/a$b$a;->engineNextBytes([B)V
return-object p1
.end method
.method protected engineNextBytes([B)V
.registers 5
.line 1
iget-boolean v0, p0, Lio/dcloud/e/f/a$b$a;->e:Z
if-nez v0, :cond_b
.line 3
invoke-static {}, Lio/dcloud/e/f/a$b;->a()[B
move-result-object v0
invoke-virtual {p0, v0}, Lio/dcloud/e/f/a$b$a;->engineSetSeed([B)V
.line 8
:cond_b
:try_start_b
sget-object v0, Lio/dcloud/e/f/a$b$a;->b:Ljava/lang/Object;
monitor-enter v0
:try_end_e
.catch Ljava/io/IOException; {:try_start_b .. :try_end_e} :catch_1f
.line 9
:try_start_e
invoke-direct {p0}, Lio/dcloud/e/f/a$b$a;->a()Ljava/io/DataInputStream;
move-result-object v1
.line 10
monitor-exit v0
:try_end_13
.catchall {:try_start_e .. :try_end_13} :catchall_1c
.line 11
:try_start_13
monitor-enter v1
:try_end_14
.catch Ljava/io/IOException; {:try_start_13 .. :try_end_14} :catch_1f
.line 12
:try_start_14
invoke-virtual {v1, p1}, Ljava/io/DataInputStream;->readFully([B)V
.line 13
monitor-exit v1
return-void
:catchall_19
move-exception p1
monitor-exit v1
:try_end_1b
.catchall {:try_start_14 .. :try_end_1b} :catchall_19
:try_start_1b
throw p1
:try_end_1c
.catch Ljava/io/IOException; {:try_start_1b .. :try_end_1c} :catch_1f
:catchall_1c
move-exception p1
.line 14
:try_start_1d
monitor-exit v0
:try_end_1e
.catchall {:try_start_1d .. :try_end_1e} :catchall_1c
:try_start_1e
throw p1
:try_end_1f
.catch Ljava/io/IOException; {:try_start_1e .. :try_end_1f} :catch_1f
:catch_1f
move-exception p1
.line 19
new-instance v0, Ljava/lang/SecurityException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Failed to read from "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-object v2, Lio/dcloud/e/f/a$b$a;->a:Ljava/io/File;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1, p1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v0
.end method
.method protected engineSetSeed([B)V
.registers 5
const/4 v0, 0x1
.line 1
:try_start_1
sget-object v1, Lio/dcloud/e/f/a$b$a;->b:Ljava/lang/Object;
monitor-enter v1
:try_end_4
.catch Ljava/io/IOException; {:try_start_1 .. :try_end_4} :catch_15
.catchall {:try_start_1 .. :try_end_4} :catchall_13
.line 2
:try_start_4
invoke-direct {p0}, Lio/dcloud/e/f/a$b$a;->b()Ljava/io/OutputStream;
move-result-object v2
.line 3
monitor-exit v1
:try_end_9
.catchall {:try_start_4 .. :try_end_9} :catchall_10
.line 4
:try_start_9
invoke-virtual {v2, p1}, Ljava/io/OutputStream;->write([B)V
.line 5
invoke-virtual {v2}, Ljava/io/OutputStream;->flush()V
:try_end_f
.catch Ljava/io/IOException; {:try_start_9 .. :try_end_f} :catch_15
.catchall {:try_start_9 .. :try_end_f} :catchall_13
goto :goto_31
:catchall_10
move-exception p1
.line 13
:try_start_11
monitor-exit v1
:try_end_12
.catchall {:try_start_11 .. :try_end_12} :catchall_10
:try_start_12
throw p1
:try_end_13
.catch Ljava/io/IOException; {:try_start_12 .. :try_end_13} :catch_15
.catchall {:try_start_12 .. :try_end_13} :catchall_13
:catchall_13
move-exception p1
goto :goto_34
.line 19
:catch_15
:try_start_15
const-class p1, Lio/dcloud/e/f/a$b;
invoke-virtual {p1}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
move-result-object p1
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Failed to mix seed into "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-object v2, Lio/dcloud/e/f/a$b$a;->a:Ljava/io/File;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {p1, v1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
:try_end_31
.catchall {:try_start_15 .. :try_end_31} :catchall_13
.line 12
:goto_31
iput-boolean v0, p0, Lio/dcloud/e/f/a$b$a;->e:Z
return-void
.line 22
:goto_34
iput-boolean v0, p0, Lio/dcloud/e/f/a$b$a;->e:Z
.line 23
throw p1
.end method