class com.microsoft.sqlserver.jdbc.AASAttestationResponse extends com.microsoft.sqlserver.jdbc.BaseAttestationResponse
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.microsoft.sqlserver.jdbc.AASAttestationResponse
  super_class: com.microsoft.sqlserver.jdbc.BaseAttestationResponse
{
  private byte[] attestationToken;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private static java.util.Hashtable<java.lang.String, com.microsoft.sqlserver.jdbc.JWTCertificateEntry> certificateCache;
    descriptor: Ljava/util/Hashtable;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/util/Hashtable<Ljava/lang/String;Lcom/microsoft/sqlserver/jdbc/JWTCertificateEntry;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 226
            new java.util.Hashtable
            dup
            invokespecial java.util.Hashtable.<init>:()V
            putstatic com.microsoft.sqlserver.jdbc.AASAttestationResponse.certificateCache:Ljava/util/Hashtable;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(byte[]);
    descriptor: ([B)V
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.AASAttestationResponse this
        start local 1 // byte[] b
         0: .line 228
            aload 0 /* this */
            invokespecial com.microsoft.sqlserver.jdbc.BaseAttestationResponse.<init>:()V
         1: .line 244
            aload 1 /* b */
            invokestatic java.nio.ByteBuffer.wrap:([B)Ljava/nio/ByteBuffer;
            getstatic java.nio.ByteOrder.LITTLE_ENDIAN:Ljava/nio/ByteOrder;
            invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
            astore 2 /* response */
        start local 2 // java.nio.ByteBuffer response
         2: .line 245
            aload 0 /* this */
            aload 2 /* response */
            invokevirtual java.nio.ByteBuffer.getInt:()I
            putfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.totalSize:I
         3: .line 246
            aload 0 /* this */
            aload 2 /* response */
            invokevirtual java.nio.ByteBuffer.getInt:()I
            putfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.identitySize:I
         4: .line 247
            aload 0 /* this */
            aload 2 /* response */
            invokevirtual java.nio.ByteBuffer.getInt:()I
            putfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.attestationTokenSize:I
         5: .line 248
            aload 0 /* this */
            aload 2 /* response */
            invokevirtual java.nio.ByteBuffer.getInt:()I
            putfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.enclaveType:I
         6: .line 250
            aload 0 /* this */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.identitySize:I
            newarray 8
            putfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.enclavePK:[B
         7: .line 251
            aload 0 /* this */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.attestationTokenSize:I
            newarray 8
            putfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.attestationToken:[B
         8: .line 253
            aload 2 /* response */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.enclavePK:[B
            iconst_0
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.identitySize:I
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
         9: .line 254
            aload 2 /* response */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.attestationToken:[B
            iconst_0
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.attestationTokenSize:I
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
        10: .line 256
            aload 0 /* this */
            aload 2 /* response */
            invokevirtual java.nio.ByteBuffer.getInt:()I
            putfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.sessionInfoSize:I
        11: .line 257
            aload 2 /* response */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.sessionID:[B
            iconst_0
            bipush 8
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
        12: .line 258
            aload 0 /* this */
            aload 2 /* response */
            invokevirtual java.nio.ByteBuffer.getInt:()I
            putfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.DHPKsize:I
        13: .line 259
            aload 0 /* this */
            aload 2 /* response */
            invokevirtual java.nio.ByteBuffer.getInt:()I
            putfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.DHPKSsize:I
        14: .line 261
            aload 0 /* this */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.DHPKsize:I
            newarray 8
            putfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.DHpublicKey:[B
        15: .line 262
            aload 0 /* this */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.DHPKSsize:I
            newarray 8
            putfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.publicKeySig:[B
        16: .line 264
            aload 2 /* response */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.DHpublicKey:[B
            iconst_0
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.DHPKsize:I
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
        17: .line 265
            aload 2 /* response */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.publicKeySig:[B
            iconst_0
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.DHPKSsize:I
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
        18: .line 267
            aload 2 /* response */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifeq 22
        19: .line 268
            aconst_null
            aload 0 /* this */
        20: .line 269
            ldc "R_EnclaveResponseLengthError"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerResource.getResource:(Ljava/lang/String;)Ljava/lang/String;
            ldc "0"
            iconst_0
        21: .line 268
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError:(Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Z)V
        22: .line 271
      StackMap locals: com.microsoft.sqlserver.jdbc.AASAttestationResponse byte[] java.nio.ByteBuffer
      StackMap stack:
            return
        end local 2 // java.nio.ByteBuffer response
        end local 1 // byte[] b
        end local 0 // com.microsoft.sqlserver.jdbc.AASAttestationResponse this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   23     0      this  Lcom/microsoft/sqlserver/jdbc/AASAttestationResponse;
            0   23     1         b  [B
            2   23     2  response  Ljava/nio/ByteBuffer;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
      Name  Flags
      b     

  void validateToken(java.lang.String, byte[]);
    descriptor: (Ljava/lang/String;[B)V
    flags: (0x0000) 
    Code:
      stack=5, locals=27, args_size=3
        start local 0 // com.microsoft.sqlserver.jdbc.AASAttestationResponse this
        start local 1 // java.lang.String attestationUrl
        start local 2 // byte[] nonce
         0: .line 278
            new java.lang.String
            dup
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.attestationToken:[B
            invokespecial java.lang.String.<init>:([B)V
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 3 /* jwtToken */
        start local 3 // java.lang.String jwtToken
         1: .line 279
            aload 3 /* jwtToken */
            ldc "\""
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 3
            aload 3 /* jwtToken */
            ldc "\""
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 280
            aload 3 /* jwtToken */
            iconst_1
            aload 3 /* jwtToken */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* jwtToken */
         3: .line 282
      StackMap locals: java.lang.String
      StackMap stack:
            aload 3 /* jwtToken */
            ldc "\\."
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 4 /* splitString */
        start local 4 // java.lang.String[] splitString
         4: .line 283
            invokestatic java.util.Base64.getUrlDecoder:()Ljava/util/Base64$Decoder;
            astore 5 /* decoder */
        start local 5 // java.util.Base64$Decoder decoder
         5: .line 284
            new java.lang.String
            dup
            aload 5 /* decoder */
            aload 4 /* splitString */
            iconst_0
            aaload
            invokevirtual java.util.Base64$Decoder.decode:(Ljava/lang/String;)[B
            invokespecial java.lang.String.<init>:([B)V
            astore 6 /* header */
        start local 6 // java.lang.String header
         6: .line 285
            new java.lang.String
            dup
            aload 5 /* decoder */
            aload 4 /* splitString */
            iconst_1
            aaload
            invokevirtual java.util.Base64$Decoder.decode:(Ljava/lang/String;)[B
            invokespecial java.lang.String.<init>:([B)V
            astore 7 /* body */
        start local 7 // java.lang.String body
         7: .line 286
            aload 5 /* decoder */
            aload 4 /* splitString */
            iconst_2
            aaload
            invokevirtual java.util.Base64$Decoder.decode:(Ljava/lang/String;)[B
            astore 8 /* stmtSig */
        start local 8 // byte[] stmtSig
         8: .line 288
            aconst_null
            astore 9 /* keys */
        start local 9 // com.google.gson.JsonArray keys
         9: .line 289
            getstatic com.microsoft.sqlserver.jdbc.AASAttestationResponse.certificateCache:Ljava/util/Hashtable;
            aload 1 /* attestationUrl */
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.microsoft.sqlserver.jdbc.JWTCertificateEntry
            astore 10 /* cacheEntry */
        start local 10 // com.microsoft.sqlserver.jdbc.JWTCertificateEntry cacheEntry
        10: .line 290
            aload 10 /* cacheEntry */
            ifnull 13
            aload 10 /* cacheEntry */
            invokevirtual com.microsoft.sqlserver.jdbc.JWTCertificateEntry.expired:()Z
            ifne 13
        11: .line 291
            aload 10 /* cacheEntry */
            invokevirtual com.microsoft.sqlserver.jdbc.JWTCertificateEntry.getCertificates:()Lcom/google/gson/JsonArray;
            astore 9 /* keys */
        12: .line 292
            goto 15
      StackMap locals: com.microsoft.sqlserver.jdbc.AASAttestationResponse java.lang.String byte[] java.lang.String java.lang.String[] java.util.Base64$Decoder java.lang.String java.lang.String byte[] com.google.gson.JsonArray com.microsoft.sqlserver.jdbc.JWTCertificateEntry
      StackMap stack:
        13: aload 10 /* cacheEntry */
            ifnull 15
            aload 10 /* cacheEntry */
            invokevirtual com.microsoft.sqlserver.jdbc.JWTCertificateEntry.expired:()Z
            ifeq 15
        14: .line 293
            getstatic com.microsoft.sqlserver.jdbc.AASAttestationResponse.certificateCache:Ljava/util/Hashtable;
            aload 1 /* attestationUrl */
            invokevirtual java.util.Hashtable.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        15: .line 296
      StackMap locals:
      StackMap stack:
            aload 9 /* keys */
            ifnonnull 27
        16: .line 298
            new java.net.URL
            dup
            aload 1 /* attestationUrl */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            invokevirtual java.net.URL.getAuthority:()Ljava/lang/String;
            astore 11 /* authorityUrl */
        start local 11 // java.lang.String authorityUrl
        17: .line 299
            new java.net.URL
            dup
            new java.lang.StringBuilder
            dup
            ldc "https://"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 11 /* authorityUrl */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "/.well-known/openid-configuration"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            astore 12 /* wellKnownUrl */
        start local 12 // java.net.URL wellKnownUrl
        18: .line 300
            aload 12 /* wellKnownUrl */
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            astore 13 /* con */
        start local 13 // java.net.URLConnection con
        19: .line 301
            new java.lang.String
            dup
            aload 13 /* con */
            invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
            invokestatic com.microsoft.sqlserver.jdbc.Util.convertInputStreamToString:(Ljava/io/InputStream;)Ljava/lang/String;
            invokespecial java.lang.String.<init>:(Ljava/lang/String;)V
            astore 14 /* wellKnownUrlJson */
        start local 14 // java.lang.String wellKnownUrlJson
        20: .line 302
            aload 14 /* wellKnownUrlJson */
            invokestatic com.google.gson.JsonParser.parseString:(Ljava/lang/String;)Lcom/google/gson/JsonElement;
            invokevirtual com.google.gson.JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject;
            astore 15 /* attestationJson */
        start local 15 // com.google.gson.JsonObject attestationJson
        21: .line 304
            new java.net.URL
            dup
            aload 15 /* attestationJson */
            ldc "jwks_uri"
            invokevirtual com.google.gson.JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement;
            invokevirtual com.google.gson.JsonElement.getAsString:()Ljava/lang/String;
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            astore 16 /* jwksUrl */
        start local 16 // java.net.URL jwksUrl
        22: .line 305
            aload 16 /* jwksUrl */
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            astore 17 /* jwksCon */
        start local 17 // java.net.URLConnection jwksCon
        23: .line 306
            new java.lang.String
            dup
            aload 17 /* jwksCon */
            invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
            invokestatic com.microsoft.sqlserver.jdbc.Util.convertInputStreamToString:(Ljava/io/InputStream;)Ljava/lang/String;
            invokespecial java.lang.String.<init>:(Ljava/lang/String;)V
            astore 18 /* jwksUrlJson */
        start local 18 // java.lang.String jwksUrlJson
        24: .line 307
            aload 18 /* jwksUrlJson */
            invokestatic com.google.gson.JsonParser.parseString:(Ljava/lang/String;)Lcom/google/gson/JsonElement;
            invokevirtual com.google.gson.JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject;
            astore 19 /* jwksJson */
        start local 19 // com.google.gson.JsonObject jwksJson
        25: .line 308
            aload 19 /* jwksJson */
            ldc "keys"
            invokevirtual com.google.gson.JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement;
            invokevirtual com.google.gson.JsonElement.getAsJsonArray:()Lcom/google/gson/JsonArray;
            astore 9 /* keys */
        26: .line 309
            getstatic com.microsoft.sqlserver.jdbc.AASAttestationResponse.certificateCache:Ljava/util/Hashtable;
            aload 1 /* attestationUrl */
            new com.microsoft.sqlserver.jdbc.JWTCertificateEntry
            dup
            aload 9 /* keys */
            invokespecial com.microsoft.sqlserver.jdbc.JWTCertificateEntry.<init>:(Lcom/google/gson/JsonArray;)V
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 19 // com.google.gson.JsonObject jwksJson
        end local 18 // java.lang.String jwksUrlJson
        end local 17 // java.net.URLConnection jwksCon
        end local 16 // java.net.URL jwksUrl
        end local 15 // com.google.gson.JsonObject attestationJson
        end local 14 // java.lang.String wellKnownUrlJson
        end local 13 // java.net.URLConnection con
        end local 12 // java.net.URL wellKnownUrl
        end local 11 // java.lang.String authorityUrl
        27: .line 313
      StackMap locals:
      StackMap stack:
            aload 6 /* header */
            invokestatic com.google.gson.JsonParser.parseString:(Ljava/lang/String;)Lcom/google/gson/JsonElement;
            invokevirtual com.google.gson.JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject;
            astore 11 /* headerJsonObject */
        start local 11 // com.google.gson.JsonObject headerJsonObject
        28: .line 314
            aload 11 /* headerJsonObject */
            ldc "kid"
            invokevirtual com.google.gson.JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement;
            invokevirtual com.google.gson.JsonElement.getAsString:()Ljava/lang/String;
            astore 12 /* keyID */
        start local 12 // java.lang.String keyID
        29: .line 316
            aload 9 /* keys */
            invokevirtual com.google.gson.JsonArray.iterator:()Ljava/util/Iterator;
            astore 14
            goto 60
      StackMap locals: com.microsoft.sqlserver.jdbc.AASAttestationResponse java.lang.String byte[] java.lang.String java.lang.String[] java.util.Base64$Decoder java.lang.String java.lang.String byte[] com.google.gson.JsonArray com.microsoft.sqlserver.jdbc.JWTCertificateEntry com.google.gson.JsonObject java.lang.String top java.util.Iterator
      StackMap stack:
        30: aload 14
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.gson.JsonElement
            astore 13 /* key */
        start local 13 // com.google.gson.JsonElement key
        31: .line 317
            aload 13 /* key */
            invokevirtual com.google.gson.JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject;
            astore 15 /* keyObj */
        start local 15 // com.google.gson.JsonObject keyObj
        32: .line 318
            aload 15 /* keyObj */
            ldc "kid"
            invokevirtual com.google.gson.JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement;
            invokevirtual com.google.gson.JsonElement.getAsString:()Ljava/lang/String;
            astore 16 /* kId */
        start local 16 // java.lang.String kId
        33: .line 319
            aload 16 /* kId */
            aload 12 /* keyID */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 60
        34: .line 320
            aload 15 /* keyObj */
            ldc "x5c"
            invokevirtual com.google.gson.JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement;
            invokevirtual com.google.gson.JsonElement.getAsJsonArray:()Lcom/google/gson/JsonArray;
            astore 17 /* certsFromServer */
        start local 17 // com.google.gson.JsonArray certsFromServer
        35: .line 325
            new java.lang.StringBuilder
            dup
            aload 4 /* splitString */
            iconst_0
            aaload
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* splitString */
            iconst_1
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.getBytes:()[B
            astore 18 /* signatureBytes */
        start local 18 // byte[] signatureBytes
        36: .line 326
            aload 17 /* certsFromServer */
            invokevirtual com.google.gson.JsonArray.iterator:()Ljava/util/Iterator;
            astore 20
            goto 59
      StackMap locals: com.microsoft.sqlserver.jdbc.AASAttestationResponse java.lang.String byte[] java.lang.String java.lang.String[] java.util.Base64$Decoder java.lang.String java.lang.String byte[] com.google.gson.JsonArray com.microsoft.sqlserver.jdbc.JWTCertificateEntry com.google.gson.JsonObject java.lang.String com.google.gson.JsonElement java.util.Iterator com.google.gson.JsonObject java.lang.String com.google.gson.JsonArray byte[] top java.util.Iterator
      StackMap stack:
        37: aload 20
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.gson.JsonElement
            astore 19 /* jsonCert */
        start local 19 // com.google.gson.JsonElement jsonCert
        38: .line 327
            ldc "X.509"
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 21 /* cf */
        start local 21 // java.security.cert.CertificateFactory cf
        39: .line 328
            aload 21 /* cf */
        40: .line 329
            new java.io.ByteArrayInputStream
            dup
            invokestatic java.util.Base64.getDecoder:()Ljava/util/Base64$Decoder;
            aload 19 /* jsonCert */
            invokevirtual com.google.gson.JsonElement.getAsString:()Ljava/lang/String;
            invokevirtual java.util.Base64$Decoder.decode:(Ljava/lang/String;)[B
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
        41: .line 328
            invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
            checkcast java.security.cert.X509Certificate
            astore 22 /* cert */
        start local 22 // java.security.cert.X509Certificate cert
        42: .line 330
            ldc "SHA256withRSA"
            invokestatic java.security.Signature.getInstance:(Ljava/lang/String;)Ljava/security/Signature;
            astore 23 /* sig */
        start local 23 // java.security.Signature sig
        43: .line 331
            aload 23 /* sig */
            aload 22 /* cert */
            invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
            invokevirtual java.security.Signature.initVerify:(Ljava/security/PublicKey;)V
        44: .line 332
            aload 23 /* sig */
            aload 18 /* signatureBytes */
            invokevirtual java.security.Signature.update:([B)V
        45: .line 333
            aload 23 /* sig */
            aload 8 /* stmtSig */
            invokevirtual java.security.Signature.verify:([B)Z
            ifeq 59
        46: .line 335
            aload 7 /* body */
            invokestatic com.google.gson.JsonParser.parseString:(Ljava/lang/String;)Lcom/google/gson/JsonElement;
            invokevirtual com.google.gson.JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject;
            astore 24 /* bodyJsonObject */
        start local 24 // com.google.gson.JsonObject bodyJsonObject
        47: .line 336
            aload 24 /* bodyJsonObject */
            ldc "aas-ehd"
            invokevirtual com.google.gson.JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement;
            invokevirtual com.google.gson.JsonElement.getAsString:()Ljava/lang/String;
            astore 25 /* aasEhd */
        start local 25 // java.lang.String aasEhd
        48: .line 337
            invokestatic java.util.Base64.getUrlDecoder:()Ljava/util/Base64$Decoder;
            aload 25 /* aasEhd */
            invokevirtual java.util.Base64$Decoder.decode:(Ljava/lang/String;)[B
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.enclavePK:[B
            invokestatic java.util.Arrays.equals:([B[B)Z
            ifne 52
        49: .line 338
            aconst_null
            aload 0 /* this */
        50: .line 339
            ldc "R_AasEhdError"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerResource.getResource:(Ljava/lang/String;)Ljava/lang/String;
            ldc "0"
            iconst_0
        51: .line 338
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError:(Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Z)V
        52: .line 341
      StackMap locals: com.microsoft.sqlserver.jdbc.AASAttestationResponse java.lang.String byte[] java.lang.String java.lang.String[] java.util.Base64$Decoder java.lang.String java.lang.String byte[] com.google.gson.JsonArray com.microsoft.sqlserver.jdbc.JWTCertificateEntry com.google.gson.JsonObject java.lang.String com.google.gson.JsonElement java.util.Iterator com.google.gson.JsonObject java.lang.String com.google.gson.JsonArray byte[] com.google.gson.JsonElement java.util.Iterator java.security.cert.CertificateFactory java.security.cert.X509Certificate java.security.Signature com.google.gson.JsonObject java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.enclaveType:I
            iconst_1
            if_icmpne 58
        53: .line 343
            aload 24 /* bodyJsonObject */
            ldc "rp_data"
            invokevirtual com.google.gson.JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement;
            invokevirtual com.google.gson.JsonElement.getAsString:()Ljava/lang/String;
            astore 26 /* rpData */
        start local 26 // java.lang.String rpData
        54: .line 344
            invokestatic java.util.Base64.getUrlDecoder:()Ljava/util/Base64$Decoder;
            aload 26 /* rpData */
            invokevirtual java.util.Base64$Decoder.decode:(Ljava/lang/String;)[B
            aload 2 /* nonce */
            invokestatic java.util.Arrays.equals:([B[B)Z
            ifne 58
        55: .line 345
            aconst_null
            aload 0 /* this */
        56: .line 346
            ldc "R_VbsRpDataError"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerResource.getResource:(Ljava/lang/String;)Ljava/lang/String;
            ldc "0"
            iconst_0
        57: .line 345
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError:(Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Z)V
        end local 26 // java.lang.String rpData
        58: .line 349
      StackMap locals:
      StackMap stack:
            return
        end local 25 // java.lang.String aasEhd
        end local 24 // com.google.gson.JsonObject bodyJsonObject
        end local 23 // java.security.Signature sig
        end local 22 // java.security.cert.X509Certificate cert
        end local 21 // java.security.cert.CertificateFactory cf
        end local 19 // com.google.gson.JsonElement jsonCert
        59: .line 326
      StackMap locals: com.microsoft.sqlserver.jdbc.AASAttestationResponse java.lang.String byte[] java.lang.String java.lang.String[] java.util.Base64$Decoder java.lang.String java.lang.String byte[] com.google.gson.JsonArray com.microsoft.sqlserver.jdbc.JWTCertificateEntry com.google.gson.JsonObject java.lang.String com.google.gson.JsonElement java.util.Iterator com.google.gson.JsonObject java.lang.String com.google.gson.JsonArray byte[] top java.util.Iterator
      StackMap stack:
            aload 20
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 37
        end local 18 // byte[] signatureBytes
        end local 17 // com.google.gson.JsonArray certsFromServer
        end local 16 // java.lang.String kId
        end local 15 // com.google.gson.JsonObject keyObj
        end local 13 // com.google.gson.JsonElement key
        60: .line 316
      StackMap locals: com.microsoft.sqlserver.jdbc.AASAttestationResponse java.lang.String byte[] java.lang.String java.lang.String[] java.util.Base64$Decoder java.lang.String java.lang.String byte[] com.google.gson.JsonArray com.microsoft.sqlserver.jdbc.JWTCertificateEntry com.google.gson.JsonObject java.lang.String top java.util.Iterator
      StackMap stack:
            aload 14
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 30
        61: .line 354
            aconst_null
            aload 0 /* this */
            ldc "R_AasJWTError"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerResource.getResource:(Ljava/lang/String;)Ljava/lang/String;
            ldc "0"
        62: .line 355
            iconst_0
        63: .line 354
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError:(Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Z)V
        end local 12 // java.lang.String keyID
        end local 11 // com.google.gson.JsonObject headerJsonObject
        end local 10 // com.microsoft.sqlserver.jdbc.JWTCertificateEntry cacheEntry
        end local 9 // com.google.gson.JsonArray keys
        end local 8 // byte[] stmtSig
        end local 7 // java.lang.String body
        end local 6 // java.lang.String header
        end local 5 // java.util.Base64$Decoder decoder
        end local 4 // java.lang.String[] splitString
        end local 3 // java.lang.String jwtToken
        64: .line 356
            goto 67
      StackMap locals: com.microsoft.sqlserver.jdbc.AASAttestationResponse java.lang.String byte[]
      StackMap stack: java.lang.Exception
        65: astore 3 /* e */
        start local 3 // java.lang.Exception e
        66: .line 357
            aconst_null
            aload 0 /* this */
            aload 3 /* e */
            invokevirtual java.lang.Exception.getLocalizedMessage:()Ljava/lang/String;
            ldc ""
            iconst_0
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError:(Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Z)V
        end local 3 // java.lang.Exception e
        67: .line 359
      StackMap locals:
      StackMap stack:
            return
        end local 2 // byte[] nonce
        end local 1 // java.lang.String attestationUrl
        end local 0 // com.microsoft.sqlserver.jdbc.AASAttestationResponse this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   68     0              this  Lcom/microsoft/sqlserver/jdbc/AASAttestationResponse;
            0   68     1    attestationUrl  Ljava/lang/String;
            0   68     2             nonce  [B
            1   64     3          jwtToken  Ljava/lang/String;
            4   64     4       splitString  [Ljava/lang/String;
            5   64     5           decoder  Ljava/util/Base64$Decoder;
            6   64     6            header  Ljava/lang/String;
            7   64     7              body  Ljava/lang/String;
            8   64     8           stmtSig  [B
            9   64     9              keys  Lcom/google/gson/JsonArray;
           10   64    10        cacheEntry  Lcom/microsoft/sqlserver/jdbc/JWTCertificateEntry;
           17   27    11      authorityUrl  Ljava/lang/String;
           18   27    12      wellKnownUrl  Ljava/net/URL;
           19   27    13               con  Ljava/net/URLConnection;
           20   27    14  wellKnownUrlJson  Ljava/lang/String;
           21   27    15   attestationJson  Lcom/google/gson/JsonObject;
           22   27    16           jwksUrl  Ljava/net/URL;
           23   27    17           jwksCon  Ljava/net/URLConnection;
           24   27    18       jwksUrlJson  Ljava/lang/String;
           25   27    19          jwksJson  Lcom/google/gson/JsonObject;
           28   64    11  headerJsonObject  Lcom/google/gson/JsonObject;
           29   64    12             keyID  Ljava/lang/String;
           31   60    13               key  Lcom/google/gson/JsonElement;
           32   60    15            keyObj  Lcom/google/gson/JsonObject;
           33   60    16               kId  Ljava/lang/String;
           35   60    17   certsFromServer  Lcom/google/gson/JsonArray;
           36   60    18    signatureBytes  [B
           38   59    19          jsonCert  Lcom/google/gson/JsonElement;
           39   59    21                cf  Ljava/security/cert/CertificateFactory;
           42   59    22              cert  Ljava/security/cert/X509Certificate;
           43   59    23               sig  Ljava/security/Signature;
           47   59    24    bodyJsonObject  Lcom/google/gson/JsonObject;
           48   59    25            aasEhd  Ljava/lang/String;
           54   58    26            rpData  Ljava/lang/String;
           66   67     3                 e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0    58      65  Class java.io.IOException
          59    64      65  Class java.io.IOException
           0    58      65  Class java.security.GeneralSecurityException
          59    64      65  Class java.security.GeneralSecurityException
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
                Name  Flags
      attestationUrl  
      nonce           

  void validateDHPublicKey(byte[]);
    descriptor: ([B)V
    flags: (0x0000) 
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.AASAttestationResponse this
        start local 1 // byte[] nonce
         0: .line 362
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.enclaveType:I
            iconst_2
            if_icmpne 6
         1: .line 363
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 5
         3: .line 364
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.enclavePK:[B
            iload 2 /* i */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.enclavePK:[B
            iload 2 /* i */
            baload
            aload 1 /* nonce */
            iload 2 /* i */
            aload 1 /* nonce */
            arraylength
            irem
            baload
            ixor
            i2b
            bastore
         4: .line 363
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.AASAttestationResponse.enclavePK:[B
            arraylength
            if_icmplt 3
        end local 2 // int i
         6: .line 367
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.microsoft.sqlserver.jdbc.AASAttestationResponse.validateDHPublicKey:()V
         7: .line 368
            return
        end local 1 // byte[] nonce
        end local 0 // com.microsoft.sqlserver.jdbc.AASAttestationResponse this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lcom/microsoft/sqlserver/jdbc/AASAttestationResponse;
            0    8     1  nonce  [B
            2    6     2      i  I
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException, java.security.GeneralSecurityException
    MethodParameters:
       Name  Flags
      nonce  
}
SourceFile: "SQLServerAASEnclaveProvider.java"
InnerClasses:
  public Decoder = java.util.Base64$Decoder of java.util.Base64