PemWriter.smali
.class public Lorg/spongycastle/util/io/pem/PemWriter;
.super Ljava/io/BufferedWriter;
.source "PemWriter.java"
# static fields
.field private static final LINE_LENGTH:I = 0x40
# instance fields
.field private buf:[C
.field private final nlLength:I
# direct methods
.method public constructor <init>(Ljava/io/Writer;)V
.registers 3
.prologue
.line 29
invoke-direct {p0, p1}, Ljava/io/BufferedWriter;-><init>(Ljava/io/Writer;)V
.line 20
const/16 v0, 0x40
new-array v0, v0, [C
iput-object v0, p0, Lorg/spongycastle/util/io/pem/PemWriter;->buf:[C
.line 31
invoke-static {}, Lorg/spongycastle/util/Strings;->lineSeparator()Ljava/lang/String;
move-result-object v0
.line 32
if-eqz v0, :cond_16
.line 34
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v0
iput v0, p0, Lorg/spongycastle/util/io/pem/PemWriter;->nlLength:I
.line 40
:goto_15
return-void
.line 38
:cond_16
const/4 v0, 0x2
iput v0, p0, Lorg/spongycastle/util/io/pem/PemWriter;->nlLength:I
goto :goto_15
.end method
.method private writeEncoded([B)V
.registers 8
.prologue
const/4 v1, 0x0
.line 103
invoke-static {p1}, Lorg/spongycastle/util/encoders/Base64;->encode([B)[B
move-result-object v3
move v0, v1
.line 105
:goto_6
array-length v2, v3
if-ge v0, v2, :cond_2d
move v2, v1
.line 109
:goto_a
iget-object v4, p0, Lorg/spongycastle/util/io/pem/PemWriter;->buf:[C
array-length v4, v4
if-eq v2, v4, :cond_20
.line 111
add-int v4, v0, v2
array-length v5, v3
if-ge v4, v5, :cond_20
.line 115
iget-object v4, p0, Lorg/spongycastle/util/io/pem/PemWriter;->buf:[C
add-int v5, v0, v2
aget-byte v5, v3, v5
int-to-char v5, v5
aput-char v5, v4, v2
.line 116
add-int/lit8 v2, v2, 0x1
goto :goto_a
.line 118
:cond_20
iget-object v4, p0, Lorg/spongycastle/util/io/pem/PemWriter;->buf:[C
invoke-virtual {p0, v4, v1, v2}, Lorg/spongycastle/util/io/pem/PemWriter;->write([CII)V
.line 119
invoke-virtual {p0}, Lorg/spongycastle/util/io/pem/PemWriter;->newLine()V
.line 105
iget-object v2, p0, Lorg/spongycastle/util/io/pem/PemWriter;->buf:[C
array-length v2, v2
add-int/2addr v0, v2
goto :goto_6
.line 121
:cond_2d
return-void
.end method
.method private writePostEncapsulationBoundary(Ljava/lang/String;)V
.registers 4
.prologue
.line 135
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "-----END "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "-----"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {p0, v0}, Lorg/spongycastle/util/io/pem/PemWriter;->write(Ljava/lang/String;)V
.line 136
invoke-virtual {p0}, Lorg/spongycastle/util/io/pem/PemWriter;->newLine()V
.line 137
return-void
.end method
.method private writePreEncapsulationBoundary(Ljava/lang/String;)V
.registers 4
.prologue
.line 127
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "-----BEGIN "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "-----"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {p0, v0}, Lorg/spongycastle/util/io/pem/PemWriter;->write(Ljava/lang/String;)V
.line 128
invoke-virtual {p0}, Lorg/spongycastle/util/io/pem/PemWriter;->newLine()V
.line 129
return-void
.end method
# virtual methods
.method public getOutputSize(Lorg/spongycastle/util/io/pem/PemObject;)I
.registers 6
.prologue
.line 52
invoke-virtual {p1}, Lorg/spongycastle/util/io/pem/PemObject;->getType()Ljava/lang/String;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v0
add-int/lit8 v0, v0, 0xa
iget v1, p0, Lorg/spongycastle/util/io/pem/PemWriter;->nlLength:I
add-int/2addr v0, v1
mul-int/lit8 v0, v0, 0x2
add-int/lit8 v0, v0, 0x6
add-int/lit8 v0, v0, 0x4
.line 54
invoke-virtual {p1}, Lorg/spongycastle/util/io/pem/PemObject;->getHeaders()Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->isEmpty()Z
move-result v1
if-nez v1, :cond_4e
.line 56
invoke-virtual {p1}, Lorg/spongycastle/util/io/pem/PemObject;->getHeaders()Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
move v1, v0
:goto_26
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_4b
.line 58
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/util/io/pem/PemHeader;
.line 60
invoke-virtual {v0}, Lorg/spongycastle/util/io/pem/PemHeader;->getName()Ljava/lang/String;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/String;->length()I
move-result v3
add-int/lit8 v3, v3, 0x2
invoke-virtual {v0}, Lorg/spongycastle/util/io/pem/PemHeader;->getValue()Ljava/lang/String;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v0
add-int/2addr v0, v3
iget v3, p0, Lorg/spongycastle/util/io/pem/PemWriter;->nlLength:I
add-int/2addr v0, v3
add-int/2addr v0, v1
move v1, v0
.line 61
goto :goto_26
.line 63
:cond_4b
iget v0, p0, Lorg/spongycastle/util/io/pem/PemWriter;->nlLength:I
add-int/2addr v0, v1
.line 67
:cond_4e
invoke-virtual {p1}, Lorg/spongycastle/util/io/pem/PemObject;->getContent()[B
move-result-object v1
array-length v1, v1
add-int/lit8 v1, v1, 0x2
div-int/lit8 v1, v1, 0x3
shl-int/lit8 v1, v1, 0x2
.line 69
add-int/lit8 v2, v1, 0x40
add-int/lit8 v2, v2, -0x1
div-int/lit8 v2, v2, 0x40
iget v3, p0, Lorg/spongycastle/util/io/pem/PemWriter;->nlLength:I
mul-int/2addr v2, v3
add-int/2addr v1, v2
add-int/2addr v0, v1
.line 71
return v0
.end method
.method public writeObject(Lorg/spongycastle/util/io/pem/PemObjectGenerator;)V
.registers 6
.prologue
.line 77
invoke-interface {p1}, Lorg/spongycastle/util/io/pem/PemObjectGenerator;->generate()Lorg/spongycastle/util/io/pem/PemObject;
move-result-object v1
.line 79
invoke-virtual {v1}, Lorg/spongycastle/util/io/pem/PemObject;->getType()Ljava/lang/String;
move-result-object v0
invoke-direct {p0, v0}, Lorg/spongycastle/util/io/pem/PemWriter;->writePreEncapsulationBoundary(Ljava/lang/String;)V
.line 81
invoke-virtual {v1}, Lorg/spongycastle/util/io/pem/PemObject;->getHeaders()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->isEmpty()Z
move-result v0
if-nez v0, :cond_43
.line 83
invoke-virtual {v1}, Lorg/spongycastle/util/io/pem/PemObject;->getHeaders()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_1d
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_40
.line 85
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/util/io/pem/PemHeader;
.line 87
invoke-virtual {v0}, Lorg/spongycastle/util/io/pem/PemHeader;->getName()Ljava/lang/String;
move-result-object v3
invoke-virtual {p0, v3}, Lorg/spongycastle/util/io/pem/PemWriter;->write(Ljava/lang/String;)V
.line 88
const-string v3, ": "
invoke-virtual {p0, v3}, Lorg/spongycastle/util/io/pem/PemWriter;->write(Ljava/lang/String;)V
.line 89
invoke-virtual {v0}, Lorg/spongycastle/util/io/pem/PemHeader;->getValue()Ljava/lang/String;
move-result-object v0
invoke-virtual {p0, v0}, Lorg/spongycastle/util/io/pem/PemWriter;->write(Ljava/lang/String;)V
.line 90
invoke-virtual {p0}, Lorg/spongycastle/util/io/pem/PemWriter;->newLine()V
goto :goto_1d
.line 93
:cond_40
invoke-virtual {p0}, Lorg/spongycastle/util/io/pem/PemWriter;->newLine()V
.line 96
:cond_43
invoke-virtual {v1}, Lorg/spongycastle/util/io/pem/PemObject;->getContent()[B
move-result-object v0
invoke-direct {p0, v0}, Lorg/spongycastle/util/io/pem/PemWriter;->writeEncoded([B)V
.line 97
invoke-virtual {v1}, Lorg/spongycastle/util/io/pem/PemObject;->getType()Ljava/lang/String;
move-result-object v0
invoke-direct {p0, v0}, Lorg/spongycastle/util/io/pem/PemWriter;->writePostEncapsulationBoundary(Ljava/lang/String;)V
.line 98
return-void
.end method