EncryptedFileInputStream.smali
.class public Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;
.super Ljava/io/FileInputStream;
.source "EncryptedFileInputStream.java"
# static fields
.field private static final MODE_CBC:I
.field private static final MODE_CTR:I
# instance fields
.field private currentMode:I
.field private fileOffset:I
.field private iv:[B
.field private key:[B
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x156e
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->MODE_CBC:I
return-void
.end method
.method public constructor <init>(Ljava/io/File;Lim/tpelyyftgw/messenger/SecureDocumentKey;)V
.registers 7
.param p1, "file" # Ljava/io/File;
.param p2, "secureDocumentKey" # Lim/tpelyyftgw/messenger/SecureDocumentKey;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 34
invoke-direct {p0, p1}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
.line 15
const/16 v0, 0x20
new-array v0, v0, [B
iput-object v0, p0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->key:[B
.line 16
const/16 v0, 0x10
new-array v0, v0, [B
iput-object v0, p0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->iv:[B
.line 36
const/4 v0, 0x1
iput v0, p0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->currentMode:I
.line 37
iget-object v0, p2, Lim/tpelyyftgw/messenger/SecureDocumentKey;->file_key:[B
iget-object v1, p0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->key:[B
array-length v2, v1
const/4 v3, 0x0
invoke-static {v0, v3, v1, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 38
iget-object v0, p2, Lim/tpelyyftgw/messenger/SecureDocumentKey;->file_iv:[B
iget-object v1, p0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->iv:[B
array-length v2, v1
invoke-static {v0, v3, v1, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 39
return-void
.end method
.method public constructor <init>(Ljava/io/File;Ljava/io/File;)V
.registers 8
.param p1, "file" # Ljava/io/File;
.param p2, "keyFile" # Ljava/io/File;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 24
invoke-direct {p0, p1}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
.line 15
const/16 v0, 0x20
new-array v1, v0, [B
iput-object v1, p0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->key:[B
.line 16
const/16 v1, 0x10
new-array v2, v1, [B
iput-object v2, p0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->iv:[B
.line 26
const/4 v2, 0x0
iput v2, p0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->currentMode:I
.line 27
new-instance v3, Ljava/io/RandomAccessFile;
const-string/jumbo v4, "r"
invoke-direct {v3, p2, v4}, Ljava/io/RandomAccessFile;-><init>(Ljava/io/File;Ljava/lang/String;)V
.line 28
.local v3, "randomAccessFile":Ljava/io/RandomAccessFile;
iget-object v4, p0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->key:[B
invoke-virtual {v3, v4, v2, v0}, Ljava/io/RandomAccessFile;->read([BII)I
.line 29
iget-object v0, p0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->iv:[B
invoke-virtual {v3, v0, v2, v1}, Ljava/io/RandomAccessFile;->read([BII)I
.line 30
invoke-virtual {v3}, Ljava/io/RandomAccessFile;->close()V
.line 31
return-void
.end method
.method public static decryptBytesWithKeyFile([BIILim/tpelyyftgw/messenger/SecureDocumentKey;)V
.registers 11
.param p0, "bytes" # [B
.param p1, "offset" # I
.param p2, "length" # I
.param p3, "secureDocumentKey" # Lim/tpelyyftgw/messenger/SecureDocumentKey;
.line 67
iget-object v1, p3, Lim/tpelyyftgw/messenger/SecureDocumentKey;->file_key:[B
iget-object v2, p3, Lim/tpelyyftgw/messenger/SecureDocumentKey;->file_iv:[B
const/4 v5, 0x0
const/4 v6, 0x0
move-object v0, p0
move v3, p1
move v4, p2
invoke-static/range {v0 .. v6}, Lim/tpelyyftgw/messenger/Utilities;->aesCbcEncryptionByteArraySafe([B[B[BIIII)V
.line 68
return-void
.end method
.method public static decryptBytesWithKeyFile([BIILjava/io/File;)V
.registers 14
.param p0, "bytes" # [B
.param p1, "offset" # I
.param p2, "length" # I
.param p3, "keyFile" # Ljava/io/File;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 71
const/16 v0, 0x20
new-array v7, v0, [B
.line 72
.local v7, "key":[B
const/16 v1, 0x10
new-array v8, v1, [B
.line 73
.local v8, "iv":[B
new-instance v2, Ljava/io/RandomAccessFile;
const-string/jumbo v3, "r"
invoke-direct {v2, p3, v3}, Ljava/io/RandomAccessFile;-><init>(Ljava/io/File;Ljava/lang/String;)V
move-object v9, v2
.line 74
.local v9, "randomAccessFile":Ljava/io/RandomAccessFile;
const/4 v2, 0x0
invoke-virtual {v9, v7, v2, v0}, Ljava/io/RandomAccessFile;->read([BII)I
.line 75
invoke-virtual {v9, v8, v2, v1}, Ljava/io/RandomAccessFile;->read([BII)I
.line 76
invoke-virtual {v9}, Ljava/io/RandomAccessFile;->close()V
.line 77
const/4 v6, 0x0
move-object v1, p0
move-object v2, v7
move-object v3, v8
move v4, p1
move v5, p2
invoke-static/range {v1 .. v6}, Lim/tpelyyftgw/messenger/Utilities;->aesCtrDecryptionByteArray([B[B[BIII)V
.line 78
return-void
.end method
# virtual methods
.method public read([BII)I
.registers 21
.param p1, "b" # [B
.param p2, "off" # I
.param p3, "len" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 43
move-object/from16 v0, p0
iget v1, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->currentMode:I
const/4 v2, 0x1
if-ne v1, v2, :cond_31
iget v1, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->fileOffset:I
if-nez v1, :cond_31
.line 44
const/16 v1, 0x20
new-array v3, v1, [B
.line 45
.local v3, "temp":[B
const/4 v4, 0x0
invoke-super {v0, v3, v4, v1}, Ljava/io/FileInputStream;->read([BII)I
.line 46
iget-object v6, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->key:[B
iget-object v7, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->iv:[B
iget v10, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->fileOffset:I
const/4 v11, 0x0
move-object/from16 v5, p1
move/from16 v8, p2
move/from16 v9, p3
invoke-static/range {v5 .. v11}, Lim/tpelyyftgw/messenger/Utilities;->aesCbcEncryptionByteArraySafe([B[B[BIIII)V
.line 47
iget v5, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->fileOffset:I
add-int/2addr v5, v1
iput v5, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->fileOffset:I
.line 48
aget-byte v4, v3, v4
and-int/lit16 v4, v4, 0xff
sub-int/2addr v4, v1
int-to-long v4, v4
invoke-virtual {v0, v4, v5}, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->skip(J)J
.line 50
.end local v3 # "temp":[B
:cond_31
invoke-super/range {p0 .. p3}, Ljava/io/FileInputStream;->read([BII)I
move-result v1
.line 51
.local v1, "result":I
iget v3, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->currentMode:I
if-ne v3, v2, :cond_4a
.line 52
iget-object v5, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->key:[B
iget-object v6, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->iv:[B
iget v9, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->fileOffset:I
const/4 v10, 0x0
move-object/from16 v4, p1
move/from16 v7, p2
move/from16 v8, p3
invoke-static/range {v4 .. v10}, Lim/tpelyyftgw/messenger/Utilities;->aesCbcEncryptionByteArraySafe([B[B[BIIII)V
goto :goto_5d
.line 53
:cond_4a
if-nez v3, :cond_5d
.line 54
iget-object v12, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->key:[B
iget-object v13, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->iv:[B
iget v2, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->fileOffset:I
move-object/from16 v11, p1
move/from16 v14, p2
move/from16 v15, p3
move/from16 v16, v2
invoke-static/range {v11 .. v16}, Lim/tpelyyftgw/messenger/Utilities;->aesCtrDecryptionByteArray([B[B[BIII)V
.line 56
:cond_5d
:goto_5d
iget v2, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->fileOffset:I
add-int v2, v2, p3
iput v2, v0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->fileOffset:I
.line 57
return v1
.end method
.method public skip(J)J
.registers 5
.param p1, "n" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 62
iget v0, p0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->fileOffset:I
int-to-long v0, v0
add-long/2addr v0, p1
long-to-int v1, v0
iput v1, p0, Lim/tpelyyftgw/messenger/secretmedia/EncryptedFileInputStream;->fileOffset:I
.line 63
invoke-super {p0, p1, p2}, Ljava/io/FileInputStream;->skip(J)J
move-result-wide v0
return-wide v0
.end method