ReversedWindowGenerator.smali
.class public Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;
.super Ljava/lang/Object;
.source "ReversedWindowGenerator.java"
# interfaces
.implements Lorg/spongycastle/crypto/prng/RandomGenerator;
# instance fields
.field private final generator:Lorg/spongycastle/crypto/prng/RandomGenerator;
.field private window:[B
.field private windowCount:I
# direct methods
.method public constructor <init>(Lorg/spongycastle/crypto/prng/RandomGenerator;I)V
.registers 5
.prologue
.line 21
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 22
if-nez p1, :cond_d
.line 24
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "generator cannot be null"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 26
:cond_d
const/4 v0, 0x2
if-ge p2, v0, :cond_18
.line 28
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "windowSize must be at least 2"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 31
:cond_18
iput-object p1, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->generator:Lorg/spongycastle/crypto/prng/RandomGenerator;
.line 32
new-array v0, p2, [B
iput-object v0, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->window:[B
.line 33
return-void
.end method
.method private doNextBytes([BII)V
.registers 9
.prologue
const/4 v0, 0x0
.line 96
monitor-enter p0
.line 99
:goto_2
if-ge v0, p3, :cond_29
.line 101
:try_start_4
iget v1, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->windowCount:I
if-gtz v1, :cond_18
.line 103
iget-object v1, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->generator:Lorg/spongycastle/crypto/prng/RandomGenerator;
iget-object v2, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->window:[B
const/4 v3, 0x0
iget-object v4, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->window:[B
array-length v4, v4
invoke-interface {v1, v2, v3, v4}, Lorg/spongycastle/crypto/prng/RandomGenerator;->nextBytes([BII)V
.line 104
iget-object v1, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->window:[B
array-length v1, v1
iput v1, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->windowCount:I
.line 107
:cond_18
add-int/lit8 v1, v0, 0x1
add-int/2addr v0, p2
iget-object v2, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->window:[B
iget v3, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->windowCount:I
add-int/lit8 v3, v3, -0x1
iput v3, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->windowCount:I
aget-byte v2, v2, v3
aput-byte v2, p1, v0
move v0, v1
goto :goto_2
.line 109
:cond_29
monitor-exit p0
return-void
:catchall_2b
move-exception v0
monitor-exit p0
:try_end_2d
.catchall {:try_start_4 .. :try_end_2d} :catchall_2b
throw v0
.end method
# virtual methods
.method public addSeedMaterial(J)V
.registers 4
.prologue
.line 58
monitor-enter p0
.line 60
const/4 v0, 0x0
:try_start_2
iput v0, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->windowCount:I
.line 61
iget-object v0, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->generator:Lorg/spongycastle/crypto/prng/RandomGenerator;
invoke-interface {v0, p1, p2}, Lorg/spongycastle/crypto/prng/RandomGenerator;->addSeedMaterial(J)V
.line 62
monitor-exit p0
return-void
:catchall_b
move-exception v0
monitor-exit p0
:try_end_d
.catchall {:try_start_2 .. :try_end_d} :catchall_b
throw v0
.end method
.method public addSeedMaterial([B)V
.registers 3
.prologue
.line 43
monitor-enter p0
.line 45
const/4 v0, 0x0
:try_start_2
iput v0, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->windowCount:I
.line 46
iget-object v0, p0, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->generator:Lorg/spongycastle/crypto/prng/RandomGenerator;
invoke-interface {v0, p1}, Lorg/spongycastle/crypto/prng/RandomGenerator;->addSeedMaterial([B)V
.line 47
monitor-exit p0
return-void
:catchall_b
move-exception v0
monitor-exit p0
:try_end_d
.catchall {:try_start_2 .. :try_end_d} :catchall_b
throw v0
.end method
.method public nextBytes([B)V
.registers 4
.prologue
.line 73
const/4 v0, 0x0
array-length v1, p1
invoke-direct {p0, p1, v0, v1}, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->doNextBytes([BII)V
.line 74
return-void
.end method
.method public nextBytes([BII)V
.registers 4
.prologue
.line 88
invoke-direct {p0, p1, p2, p3}, Lorg/spongycastle/crypto/prng/ReversedWindowGenerator;->doNextBytes([BII)V
.line 89
return-void
.end method