BCGMSSPublicKey.smali
.class public Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;
.super Ljava/lang/Object;
.source "BCGMSSPublicKey.java"
# interfaces
.implements Ljava/security/PublicKey;
.implements Lorg/spongycastle/crypto/CipherParameters;
# static fields
.field private static final serialVersionUID:J = 0x1L
# instance fields
.field private gmssParameterSet:Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
.field private gmssParams:Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
.field private publicKeyBytes:[B
# direct methods
.method public constructor <init>(Lorg/spongycastle/pqc/crypto/gmss/GMSSPublicKeyParameters;)V
.registers 4
.prologue
.line 71
invoke-virtual {p1}, Lorg/spongycastle/pqc/crypto/gmss/GMSSPublicKeyParameters;->getPublicKey()[B
move-result-object v0
invoke-virtual {p1}, Lorg/spongycastle/pqc/crypto/gmss/GMSSPublicKeyParameters;->getParameters()Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
move-result-object v1
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;-><init>([BLorg/spongycastle/pqc/crypto/gmss/GMSSParameters;)V
.line 72
return-void
.end method
.method protected constructor <init>(Lorg/spongycastle/pqc/jcajce/spec/GMSSPublicKeySpec;)V
.registers 4
.prologue
.line 65
invoke-virtual {p1}, Lorg/spongycastle/pqc/jcajce/spec/GMSSPublicKeySpec;->getPublicKey()[B
move-result-object v0
invoke-virtual {p1}, Lorg/spongycastle/pqc/jcajce/spec/GMSSPublicKeySpec;->getParameters()Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
move-result-object v1
invoke-direct {p0, v0, v1}, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;-><init>([BLorg/spongycastle/pqc/crypto/gmss/GMSSParameters;)V
.line 66
return-void
.end method
.method public constructor <init>([BLorg/spongycastle/pqc/crypto/gmss/GMSSParameters;)V
.registers 3
.prologue
.line 53
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 54
iput-object p2, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->gmssParameterSet:Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
.line 55
iput-object p1, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->publicKeyBytes:[B
.line 56
return-void
.end method
# virtual methods
.method public getAlgorithm()Ljava/lang/String;
.registers 2
.prologue
.line 81
const-string v0, "GMSS"
return-object v0
.end method
.method public getEncoded()[B
.registers 8
.prologue
.line 124
new-instance v0, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;
sget-object v1, Lorg/spongycastle/pqc/asn1/PQCObjectIdentifiers;->gmss:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
new-instance v2, Lorg/spongycastle/pqc/asn1/ParSet;
iget-object v3, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->gmssParameterSet:Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
invoke-virtual {v3}, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->getNumOfLayers()I
move-result v3
iget-object v4, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->gmssParameterSet:Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
invoke-virtual {v4}, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->getHeightOfTrees()[I
move-result-object v4
iget-object v5, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->gmssParameterSet:Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
invoke-virtual {v5}, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->getWinternitzParameter()[I
move-result-object v5
iget-object v6, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->gmssParameterSet:Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
invoke-virtual {v6}, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->getK()[I
move-result-object v6
invoke-direct {v2, v3, v4, v5, v6}, Lorg/spongycastle/pqc/asn1/ParSet;-><init>(I[I[I[I)V
invoke-virtual {v2}, Lorg/spongycastle/pqc/asn1/ParSet;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v2
invoke-direct {v0, v1, v2}, Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;-><init>(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)V
new-instance v1, Lorg/spongycastle/pqc/asn1/GMSSPublicKey;
iget-object v2, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->publicKeyBytes:[B
invoke-direct {v1, v2}, Lorg/spongycastle/pqc/asn1/GMSSPublicKey;-><init>([B)V
invoke-static {v0, v1}, Lorg/spongycastle/pqc/jcajce/provider/util/KeyUtil;->getEncodedSubjectPublicKeyInfo(Lorg/spongycastle/asn1/x509/AlgorithmIdentifier;Lorg/spongycastle/asn1/ASN1Encodable;)[B
move-result-object v0
return-object v0
.end method
.method public getFormat()Ljava/lang/String;
.registers 2
.prologue
.line 129
const-string v0, "X.509"
return-object v0
.end method
.method public getParameterSet()Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
.registers 2
.prologue
.line 97
iget-object v0, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->gmssParameterSet:Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
return-object v0
.end method
.method public getPublicKeyBytes()[B
.registers 2
.prologue
.line 89
iget-object v0, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->publicKeyBytes:[B
return-object v0
.end method
.method public toString()Ljava/lang/String;
.registers 4
.prologue
.line 107
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "GMSS public key : "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
new-instance v1, Ljava/lang/String;
iget-object v2, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->publicKeyBytes:[B
.line 108
invoke-static {v2}, Lorg/spongycastle/util/encoders/Hex;->encode([B)[B
move-result-object v2
invoke-direct {v1, v2}, Ljava/lang/String;-><init>([B)V
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "\nHeight of Trees: \n"
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 v1
.line 111
const/4 v0, 0x0
:goto_21
iget-object v2, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->gmssParameterSet:Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
invoke-virtual {v2}, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->getHeightOfTrees()[I
move-result-object v2
array-length v2, v2
if-ge v0, v2, :cond_80
.line 113
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, "Layer "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " : "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget-object v2, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->gmssParameterSet:Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
.line 114
invoke-virtual {v2}, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->getHeightOfTrees()[I
move-result-object v2
aget v2, v2, v0
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " WinternitzParameter: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget-object v2, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->gmssParameterSet:Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
.line 116
invoke-virtual {v2}, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->getWinternitzParameter()[I
move-result-object v2
aget v2, v2, v0
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " K: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget-object v2, p0, Lorg/spongycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey;->gmssParameterSet:Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;
.line 117
invoke-virtual {v2}, Lorg/spongycastle/pqc/crypto/gmss/GMSSParameters;->getK()[I
move-result-object v2
aget v2, v2, v0
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, "\n"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
.line 111
add-int/lit8 v0, v0, 0x1
goto :goto_21
.line 119
:cond_80
return-object v1
.end method