TapasRsaUtils.smali

.class public Lcom/dianxinos/optimizer/server/TapasRsaUtils;
.super Ljava/lang/Object;
.source "TapasRsaUtils.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/dianxinos/optimizer/server/TapasRsaUtils$CipherException;
    }
.end annotation


# static fields
.field private static final a:Ljava/lang/String;


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .prologue
    .line 33
    const-string v0, "C399146DA7AB8951515EC21724E31EA64A2AE37FD87A070B37B99BCA655EDD054EBEF5E38B329074E5A9219CF1017CEA75D58C0B243AFE3B707DB30CE34B5AD9"

    sput-object v0, Lcom/dianxinos/optimizer/server/TapasRsaUtils;->a:Ljava/lang/String;

    .line 39
    return-void
.end method

.method public static a(Ljava/lang/String;)Ljava/lang/String;
    .registers 7
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/dianxinos/optimizer/server/TapasRsaUtils$CipherException;
        }
    .end annotation

    .prologue
    .line 83
    :try_start_0
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v0

    .line 84
    const/16 v2, 0x18

    .line 85
    invoke-static {v2}, Ldxoptimizer/cfd;->a(I)[B

    move-result-object v2

    .line 86
    invoke-static {v0, v1}, Ldxoptimizer/cfd;->a(J)[B

    move-result-object v3

    .line 87
    const-string v4, "UTF-8"

    .line 88
    invoke-virtual {p0, v4}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B

    move-result-object v4

    .line 87
    invoke-static {v2, v3, v4}, Ldxoptimizer/cfd;->a([B[B[B)[B

    move-result-object v3

    .line 90
    new-instance v4, Ljava/lang/StringBuilder;

    const-string v5, "{\"createTime\":"

    invoke-direct {v4, v5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    .line 91
    invoke-virtual {v4, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    .line 92
    const-string v0, ",\"sid\":\""

    invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 93
    invoke-static {v2}, Lcom/dianxinos/optimizer/server/TapasRsaUtils;->b([B)Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 94
    const-string v0, "\",\"msg\":\""

    invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 95
    const/4 v0, 0x2

    invoke-static {v3, v0}, Landroid/util/Base64;->encodeToString([BI)Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 96
    const-string v0, "\"}"

    invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 98
    invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    :try_end_43
    .catch Ljava/io/UnsupportedEncodingException; {:try_start_0 .. :try_end_43} :catch_45
    .catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_43} :catch_4c

    move-result-object v0

    return-object v0

    .line 99
    :catch_45
    move-exception v0

    .line 100
    new-instance v1, Lcom/dianxinos/optimizer/server/TapasRsaUtils$CipherException;

    invoke-direct {v1, v0}, Lcom/dianxinos/optimizer/server/TapasRsaUtils$CipherException;-><init>(Ljava/lang/Throwable;)V

    throw v1

    .line 101
    :catch_4c
    move-exception v0

    .line 102
    new-instance v1, Lcom/dianxinos/optimizer/server/TapasRsaUtils$CipherException;

    invoke-direct {v1, v0}, Lcom/dianxinos/optimizer/server/TapasRsaUtils$CipherException;-><init>(Ljava/lang/Throwable;)V

    throw v1
.end method

.method private static a()Ljava/security/PublicKey;
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/security/NoSuchAlgorithmException;,
            Ljava/security/spec/InvalidKeySpecException;
        }
    .end annotation

    .prologue
    .line 43
    new-instance v0, Ljava/math/BigInteger;

    sget-object v1, Lcom/dianxinos/optimizer/server/TapasRsaUtils;->a:Ljava/lang/String;

    const/16 v2, 0x10

    invoke-direct {v0, v1, v2}, Ljava/math/BigInteger;-><init>(Ljava/lang/String;I)V

    .line 44
    const-wide/32 v2, 0x10001

    invoke-static {v2, v3}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;

    move-result-object v1

    .line 46
    new-instance v2, Ljava/security/spec/RSAPublicKeySpec;

    invoke-direct {v2, v0, v1}, Ljava/security/spec/RSAPublicKeySpec;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V

    .line 47
    const-string v0, "RSA"

    invoke-static {v0}, Ljava/security/KeyFactory;->getInstance(Ljava/lang/String;)Ljava/security/KeyFactory;

    move-result-object v0

    .line 49
    invoke-virtual {v0, v2}, Ljava/security/KeyFactory;->generatePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;

    move-result-object v0

    return-object v0
.end method

.method public static a([B)[B
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/dianxinos/optimizer/server/TapasRsaUtils$CipherException;
        }
    .end annotation

    .prologue
    .line 54
    :try_start_0
    const-string v0, "RSA/ECB/PKCS1PADDING"

    invoke-static {v0}, Ljavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;

    move-result-object v0

    .line 55
    const/4 v1, 0x1

    invoke-static {}, Lcom/dianxinos/optimizer/server/TapasRsaUtils;->a()Ljava/security/PublicKey;

    move-result-object v2

    invoke-virtual {v0, v1, v2}, Ljavax/crypto/Cipher;->init(ILjava/security/Key;)V

    .line 56
    invoke-virtual {v0, p0}, Ljavax/crypto/Cipher;->doFinal([B)[B
    :try_end_11
    .catch Ljava/security/GeneralSecurityException; {:try_start_0 .. :try_end_11} :catch_13

    move-result-object v0

    return-object v0

    .line 57
    :catch_13
    move-exception v0

    .line 58
    new-instance v1, Lcom/dianxinos/optimizer/server/TapasRsaUtils$CipherException;

    invoke-direct {v1, v0}, Lcom/dianxinos/optimizer/server/TapasRsaUtils$CipherException;-><init>(Ljava/lang/Throwable;)V

    throw v1
.end method

.method private static b([B)Ljava/lang/String;
    .registers 3
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/dianxinos/optimizer/server/TapasRsaUtils$CipherException;
        }
    .end annotation

    .prologue
    .line 71
    invoke-static {p0}, Lcom/dianxinos/optimizer/server/TapasRsaUtils;->a([B)[B

    move-result-object v0

    .line 72
    const/4 v1, 0x2

    invoke-static {v0, v1}, Landroid/util/Base64;->encodeToString([BI)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method