PaytmSSLSocketFactory.smali

.class public Lcom/paytm/pgsdk/PaytmSSLSocketFactory;
.super Ljavax/net/ssl/SSLSocketFactory;
.source "PaytmSSLSocketFactory.java"


# static fields
.field private static final PKCS12:Ljava/lang/String; = "pkcs12"

.field private static final RAW:Ljava/lang/String; = "raw"

.field private static final TLS:Ljava/lang/String; = "TLS"

.field private static final X509:Ljava/lang/String; = "X509"


# instance fields
.field private volatile mSSLContext:Ljavax/net/ssl/SSLContext;


# direct methods
.method protected constructor <init>(Landroid/content/Context;Lcom/paytm/pgsdk/PaytmClientCertificate;)V
    .registers 15

    .line 65
    invoke-direct {p0}, Ljavax/net/ssl/SSLSocketFactory;-><init>()V

    .line 80
    new-instance v0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory$1;

    invoke-direct {v0, p0}, Lcom/paytm/pgsdk/PaytmSSLSocketFactory$1;-><init>(Lcom/paytm/pgsdk/PaytmSSLSocketFactory;)V

    const-string v1, "set trust manager"

    const-string v2, "so, setting only the trust manager"

    const/4 v3, 0x0

    const/4 v4, 0x1

    const-string v5, "TLS"

    const/4 v6, 0x0

    if-eqz p2, :cond_a4

    .line 99
    :try_start_13
    iget-object v7, p2, Lcom/paytm/pgsdk/PaytmClientCertificate;->mFileName:Ljava/lang/String;

    if-eqz v7, :cond_a4

    .line 100
    new-instance v7, Ljava/lang/StringBuilder;

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

    const-string v8, "Reading the certificate "

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

    move-result-object v7

    iget-object v8, p2, Lcom/paytm/pgsdk/PaytmClientCertificate;->mFileName:Ljava/lang/String;

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

    move-result-object v7

    const-string v8, ".p12"

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

    move-result-object v7

    invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v7

    invoke-static {v7}, Lcom/paytm/pgsdk/PaytmUtility;->debugLog(Ljava/lang/String;)V

    const-string v7, "pkcs12"

    .line 101
    invoke-static {v7}, Ljava/security/KeyStore;->getInstance(Ljava/lang/String;)Ljava/security/KeyStore;

    move-result-object v7

    .line 102
    invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

    move-result-object v8

    invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

    move-result-object v9

    iget-object v10, p2, Lcom/paytm/pgsdk/PaytmClientCertificate;->mFileName:Ljava/lang/String;

    const-string v11, "raw"

    invoke-virtual {p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String;

    move-result-object p1

    invoke-virtual {v9, v10, v11, p1}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I

    move-result p1

    invoke-virtual {v8, p1}, Landroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream;

    move-result-object p1

    iget-object v8, p2, Lcom/paytm/pgsdk/PaytmClientCertificate;->mPassword:Ljava/lang/String;

    invoke-virtual {v8}, Ljava/lang/String;->toCharArray()[C

    move-result-object v8

    invoke-virtual {v7, p1, v8}, Ljava/security/KeyStore;->load(Ljava/io/InputStream;[C)V

    .line 103
    invoke-virtual {v7}, Ljava/security/KeyStore;->aliases()Ljava/util/Enumeration;

    move-result-object p1

    .line 104
    :goto_60
    invoke-interface {p1}, Ljava/util/Enumeration;->hasMoreElements()Z

    move-result v8

    if-eqz v8, :cond_7c

    .line 105
    invoke-interface {p1}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;

    move-result-object v8

    check-cast v8, Ljava/lang/String;

    invoke-virtual {v8}, Ljava/lang/String;->toString()Ljava/lang/String;

    move-result-object v8

    invoke-virtual {v7, v8}, Ljava/security/KeyStore;->getCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;

    move-result-object v8

    invoke-virtual {v8}, Ljava/security/cert/Certificate;->toString()Ljava/lang/String;

    move-result-object v8

    invoke-static {v8}, Lcom/paytm/pgsdk/PaytmUtility;->debugLog(Ljava/lang/String;)V

    goto :goto_60

    :cond_7c
    const-string p1, "X509"

    .line 107
    invoke-static {p1}, Ljavax/net/ssl/KeyManagerFactory;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/KeyManagerFactory;

    move-result-object p1

    .line 108
    iget-object p2, p2, Lcom/paytm/pgsdk/PaytmClientCertificate;->mPassword:Ljava/lang/String;

    invoke-virtual {p2}, Ljava/lang/String;->toCharArray()[C

    move-result-object p2

    invoke-virtual {p1, v7, p2}, Ljavax/net/ssl/KeyManagerFactory;->init(Ljava/security/KeyStore;[C)V

    .line 110
    invoke-static {v5}, Ljavax/net/ssl/SSLContext;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/SSLContext;

    move-result-object p2

    iput-object p2, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    .line 111
    iget-object p2, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    invoke-virtual {p1}, Ljavax/net/ssl/KeyManagerFactory;->getKeyManagers()[Ljavax/net/ssl/KeyManager;

    move-result-object p1

    new-array v7, v4, [Ljavax/net/ssl/TrustManager;

    aput-object v0, v7, v3

    invoke-virtual {p2, p1, v7, v6}, Ljavax/net/ssl/SSLContext;->init([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V

    const-string p1, "Client certificate attached."

    .line 112
    invoke-static {p1}, Lcom/paytm/pgsdk/PaytmUtility;->debugLog(Ljava/lang/String;)V

    goto :goto_e7

    :cond_a4
    const-string p1, "Client certificate is not found"

    .line 114
    invoke-static {p1}, Lcom/paytm/pgsdk/PaytmUtility;->debugLog(Ljava/lang/String;)V

    .line 115
    invoke-static {v2}, Lcom/paytm/pgsdk/PaytmUtility;->debugLog(Ljava/lang/String;)V

    .line 116
    invoke-static {v5}, Ljavax/net/ssl/SSLContext;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/SSLContext;

    move-result-object p1

    iput-object p1, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    .line 117
    iget-object p1, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    new-array p2, v4, [Ljavax/net/ssl/TrustManager;

    aput-object v0, p2, v3

    invoke-virtual {p1, v6, p2, v6}, Ljavax/net/ssl/SSLContext;->init([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V

    .line 118
    invoke-static {v1}, Lcom/paytm/pgsdk/PaytmUtility;->debugLog(Ljava/lang/String;)V
    :try_end_be
    .catch Ljava/lang/Exception; {:try_start_13 .. :try_end_be} :catch_bf

    goto :goto_e7

    :catch_bf
    move-exception p1

    const-string p2, "Exception while attaching Client certificate."

    .line 121
    invoke-static {p2}, Lcom/paytm/pgsdk/PaytmUtility;->debugLog(Ljava/lang/String;)V

    .line 122
    invoke-static {p1}, Lcom/paytm/pgsdk/PaytmUtility;->printStackTrace(Ljava/lang/Exception;)V

    .line 124
    :try_start_c8
    invoke-static {v2}, Lcom/paytm/pgsdk/PaytmUtility;->debugLog(Ljava/lang/String;)V

    .line 125
    invoke-static {v5}, Ljavax/net/ssl/SSLContext;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/SSLContext;

    move-result-object p1

    iput-object p1, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    .line 127
    iget-object p1, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    new-array p2, v4, [Ljavax/net/ssl/TrustManager;

    aput-object v0, p2, v3

    invoke-virtual {p1, v6, p2, v6}, Ljavax/net/ssl/SSLContext;->init([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V

    .line 128
    invoke-static {v1}, Lcom/paytm/pgsdk/PaytmUtility;->debugLog(Ljava/lang/String;)V
    :try_end_dd
    .catch Ljava/lang/Exception; {:try_start_c8 .. :try_end_dd} :catch_de

    goto :goto_e7

    :catch_de
    move-exception p1

    const-string p2, "Exception while setting the trust manager"

    .line 130
    invoke-static {p2}, Lcom/paytm/pgsdk/PaytmUtility;->debugLog(Ljava/lang/String;)V

    .line 131
    invoke-static {p1}, Lcom/paytm/pgsdk/PaytmUtility;->printStackTrace(Ljava/lang/Exception;)V

    :goto_e7
    return-void
.end method


# virtual methods
.method public declared-synchronized createSocket(Ljava/lang/String;I)Ljava/net/Socket;
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;,
            Ljava/net/UnknownHostException;
        }
    .end annotation

    monitor-enter p0

    .line 193
    :try_start_1
    iget-object v0, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    if-eqz v0, :cond_11

    .line 194
    iget-object v0, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    invoke-virtual {v0}, Ljavax/net/ssl/SSLContext;->getSocketFactory()Ljavax/net/ssl/SSLSocketFactory;

    move-result-object v0

    invoke-virtual {v0, p1, p2}, Ljavax/net/ssl/SSLSocketFactory;->createSocket(Ljava/lang/String;I)Ljava/net/Socket;

    move-result-object p1
    :try_end_f
    .catchall {:try_start_1 .. :try_end_f} :catchall_1b

    monitor-exit p0

    return-object p1

    .line 196
    :cond_11
    :try_start_11
    invoke-static {}, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->getDefault()Ljavax/net/SocketFactory;

    move-result-object v0

    invoke-virtual {v0, p1, p2}, Ljavax/net/SocketFactory;->createSocket(Ljava/lang/String;I)Ljava/net/Socket;

    move-result-object p1
    :try_end_19
    .catchall {:try_start_11 .. :try_end_19} :catchall_1b

    monitor-exit p0

    return-object p1

    :catchall_1b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized createSocket(Ljava/lang/String;ILjava/net/InetAddress;I)Ljava/net/Socket;
    .registers 6
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;,
            Ljava/net/UnknownHostException;
        }
    .end annotation

    monitor-enter p0

    .line 209
    :try_start_1
    iget-object v0, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    if-eqz v0, :cond_11

    .line 210
    iget-object v0, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    invoke-virtual {v0}, Ljavax/net/ssl/SSLContext;->getSocketFactory()Ljavax/net/ssl/SSLSocketFactory;

    move-result-object v0

    invoke-virtual {v0, p1, p2, p3, p4}, Ljavax/net/ssl/SSLSocketFactory;->createSocket(Ljava/lang/String;ILjava/net/InetAddress;I)Ljava/net/Socket;

    move-result-object p1
    :try_end_f
    .catchall {:try_start_1 .. :try_end_f} :catchall_1b

    monitor-exit p0

    return-object p1

    .line 212
    :cond_11
    :try_start_11
    invoke-static {}, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->getDefault()Ljavax/net/SocketFactory;

    move-result-object p3

    invoke-virtual {p3, p1, p2}, Ljavax/net/SocketFactory;->createSocket(Ljava/lang/String;I)Ljava/net/Socket;

    move-result-object p1
    :try_end_19
    .catchall {:try_start_11 .. :try_end_19} :catchall_1b

    monitor-exit p0

    return-object p1

    :catchall_1b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized createSocket(Ljava/net/InetAddress;I)Ljava/net/Socket;
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation

    monitor-enter p0

    .line 201
    :try_start_1
    iget-object v0, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    if-eqz v0, :cond_11

    .line 202
    iget-object v0, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    invoke-virtual {v0}, Ljavax/net/ssl/SSLContext;->getSocketFactory()Ljavax/net/ssl/SSLSocketFactory;

    move-result-object v0

    invoke-virtual {v0, p1, p2}, Ljavax/net/ssl/SSLSocketFactory;->createSocket(Ljava/net/InetAddress;I)Ljava/net/Socket;

    move-result-object p1
    :try_end_f
    .catchall {:try_start_1 .. :try_end_f} :catchall_1b

    monitor-exit p0

    return-object p1

    .line 204
    :cond_11
    :try_start_11
    invoke-static {}, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->getDefault()Ljavax/net/SocketFactory;

    move-result-object v0

    invoke-virtual {v0, p1, p2}, Ljavax/net/SocketFactory;->createSocket(Ljava/net/InetAddress;I)Ljava/net/Socket;

    move-result-object p1
    :try_end_19
    .catchall {:try_start_11 .. :try_end_19} :catchall_1b

    monitor-exit p0

    return-object p1

    :catchall_1b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized createSocket(Ljava/net/InetAddress;ILjava/net/InetAddress;I)Ljava/net/Socket;
    .registers 6
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation

    monitor-enter p0

    .line 217
    :try_start_1
    iget-object v0, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    if-eqz v0, :cond_11

    .line 218
    iget-object v0, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    invoke-virtual {v0}, Ljavax/net/ssl/SSLContext;->getSocketFactory()Ljavax/net/ssl/SSLSocketFactory;

    move-result-object v0

    invoke-virtual {v0, p1, p2, p3, p4}, Ljavax/net/ssl/SSLSocketFactory;->createSocket(Ljava/net/InetAddress;ILjava/net/InetAddress;I)Ljava/net/Socket;

    move-result-object p1
    :try_end_f
    .catchall {:try_start_1 .. :try_end_f} :catchall_1b

    monitor-exit p0

    return-object p1

    .line 220
    :cond_11
    :try_start_11
    invoke-static {}, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->getDefault()Ljavax/net/SocketFactory;

    move-result-object v0

    invoke-virtual {v0, p1, p2, p3, p4}, Ljavax/net/SocketFactory;->createSocket(Ljava/net/InetAddress;ILjava/net/InetAddress;I)Ljava/net/Socket;

    move-result-object p1
    :try_end_19
    .catchall {:try_start_11 .. :try_end_19} :catchall_1b

    monitor-exit p0

    return-object p1

    :catchall_1b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;
    .registers 6
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation

    monitor-enter p0

    .line 175
    :try_start_1
    iget-object v0, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    if-eqz v0, :cond_11

    .line 176
    iget-object v0, p0, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->mSSLContext:Ljavax/net/ssl/SSLContext;

    invoke-virtual {v0}, Ljavax/net/ssl/SSLContext;->getSocketFactory()Ljavax/net/ssl/SSLSocketFactory;

    move-result-object v0

    invoke-virtual {v0, p1, p2, p3, p4}, Ljavax/net/ssl/SSLSocketFactory;->createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;

    move-result-object p1
    :try_end_f
    .catchall {:try_start_1 .. :try_end_f} :catchall_1b

    monitor-exit p0

    return-object p1

    .line 178
    :cond_11
    :try_start_11
    invoke-static {}, Lcom/paytm/pgsdk/PaytmSSLSocketFactory;->getDefault()Ljavax/net/SocketFactory;

    move-result-object p1

    invoke-virtual {p1, p2, p3}, Ljavax/net/SocketFactory;->createSocket(Ljava/lang/String;I)Ljava/net/Socket;

    move-result-object p1
    :try_end_19
    .catchall {:try_start_11 .. :try_end_19} :catchall_1b

    monitor-exit p0

    return-object p1

    :catchall_1b
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public declared-synchronized getDefaultCipherSuites()[Ljava/lang/String;
    .registers 2

    monitor-enter p0

    .line 183
    monitor-exit p0

    const/4 v0, 0x0

    return-object v0
.end method

.method public declared-synchronized getSupportedCipherSuites()[Ljava/lang/String;
    .registers 2

    monitor-enter p0

    .line 188
    monitor-exit p0

    const/4 v0, 0x0

    return-object v0
.end method