class com.microsoft.sqlserver.jdbc.VSMAttestationResponse extends com.microsoft.sqlserver.jdbc.BaseAttestationResponse
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.microsoft.sqlserver.jdbc.VSMAttestationResponse
super_class: com.microsoft.sqlserver.jdbc.BaseAttestationResponse
{
private byte[] healthReportCertificate;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] enclaveReportPackage;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private java.security.cert.X509Certificate healthCert;
descriptor: Ljava/security/cert/X509Certificate;
flags: (0x0002) ACC_PRIVATE
void <init>(byte[]);
descriptor: ([B)V
flags: (0x0000)
Code:
stack=5, locals=6, args_size=2
start local 0 // com.microsoft.sqlserver.jdbc.VSMAttestationResponse this
start local 1 // byte[] b
0: .line 214
aload 0 /* this */
invokespecial com.microsoft.sqlserver.jdbc.BaseAttestationResponse.<init>:()V
1: .line 232
aload 1 /* b */
ifnull 2
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;
goto 3
StackMap locals: com.microsoft.sqlserver.jdbc.VSMAttestationResponse byte[]
StackMap stack:
2: aconst_null
StackMap locals:
StackMap stack: java.nio.ByteBuffer
3: astore 2 /* response */
start local 2 // java.nio.ByteBuffer response
4: .line 233
aload 2 /* response */
ifnull 23
5: .line 234
aload 0 /* this */
aload 2 /* response */
invokevirtual java.nio.ByteBuffer.getInt:()I
putfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.totalSize:I
6: .line 235
aload 0 /* this */
aload 2 /* response */
invokevirtual java.nio.ByteBuffer.getInt:()I
putfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.identitySize:I
7: .line 236
aload 2 /* response */
invokevirtual java.nio.ByteBuffer.getInt:()I
istore 3 /* healthReportSize */
start local 3 // int healthReportSize
8: .line 237
aload 2 /* response */
invokevirtual java.nio.ByteBuffer.getInt:()I
istore 4 /* enclaveReportSize */
start local 4 // int enclaveReportSize
9: .line 239
aload 0 /* this */
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.identitySize:I
newarray 8
putfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.enclavePK:[B
10: .line 240
aload 0 /* this */
iload 3 /* healthReportSize */
newarray 8
putfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.healthReportCertificate:[B
11: .line 241
aload 0 /* this */
iload 4 /* enclaveReportSize */
newarray 8
putfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.enclaveReportPackage:[B
12: .line 243
aload 2 /* response */
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.enclavePK:[B
iconst_0
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.identitySize:I
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
13: .line 244
aload 2 /* response */
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.healthReportCertificate:[B
iconst_0
iload 3 /* healthReportSize */
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
14: .line 245
aload 2 /* response */
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.enclaveReportPackage:[B
iconst_0
iload 4 /* enclaveReportSize */
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
15: .line 247
aload 0 /* this */
aload 2 /* response */
invokevirtual java.nio.ByteBuffer.getInt:()I
putfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.sessionInfoSize:I
16: .line 248
aload 2 /* response */
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.sessionID:[B
iconst_0
bipush 8
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
17: .line 249
aload 0 /* this */
aload 2 /* response */
invokevirtual java.nio.ByteBuffer.getInt:()I
putfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.DHPKsize:I
18: .line 250
aload 0 /* this */
aload 2 /* response */
invokevirtual java.nio.ByteBuffer.getInt:()I
putfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.DHPKSsize:I
19: .line 252
aload 0 /* this */
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.DHPKsize:I
newarray 8
putfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.DHpublicKey:[B
20: .line 253
aload 0 /* this */
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.DHPKSsize:I
newarray 8
putfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.publicKeySig:[B
21: .line 255
aload 2 /* response */
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.DHpublicKey:[B
iconst_0
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.DHPKsize:I
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
22: .line 256
aload 2 /* response */
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.publicKeySig:[B
iconst_0
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.DHPKSsize:I
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
end local 4 // int enclaveReportSize
end local 3 // int healthReportSize
23: .line 259
StackMap locals: java.nio.ByteBuffer
StackMap stack:
aload 2 /* response */
ifnull 24
aload 2 /* response */
invokevirtual java.nio.ByteBuffer.remaining:()I
ifeq 27
24: .line 260
StackMap locals:
StackMap stack:
aconst_null
aload 0 /* this */
25: .line 261
ldc "R_EnclaveResponseLengthError"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerResource.getResource:(Ljava/lang/String;)Ljava/lang/String;
ldc "0"
iconst_0
26: .line 260
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError:(Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Z)V
27: .line 265
StackMap locals:
StackMap stack:
ldc "X.509"
invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
astore 3 /* cf */
start local 3 // java.security.cert.CertificateFactory cf
28: .line 266
aload 0 /* this */
aload 3 /* cf */
new java.io.ByteArrayInputStream
dup
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.healthReportCertificate:[B
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
checkcast java.security.cert.X509Certificate
putfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.healthCert:Ljava/security/cert/X509Certificate;
end local 3 // java.security.cert.CertificateFactory cf
29: .line 267
goto 34
StackMap locals:
StackMap stack: java.security.cert.CertificateException
30: astore 3 /* ce */
start local 3 // java.security.cert.CertificateException ce
31: .line 268
new java.text.MessageFormat
dup
ldc "R_HealthCertError"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
astore 4 /* form */
start local 4 // java.text.MessageFormat form
32: .line 269
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 3 /* ce */
invokevirtual java.security.cert.CertificateException.getLocalizedMessage:()Ljava/lang/String;
aastore
astore 5 /* msgArgs */
start local 5 // java.lang.Object[] msgArgs
33: .line 270
aconst_null
aconst_null
aload 4 /* form */
aload 5 /* msgArgs */
invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
aconst_null
iconst_1
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 5 // java.lang.Object[] msgArgs
end local 4 // java.text.MessageFormat form
end local 3 // java.security.cert.CertificateException ce
34: .line 272
StackMap locals:
StackMap stack:
return
end local 2 // java.nio.ByteBuffer response
end local 1 // byte[] b
end local 0 // com.microsoft.sqlserver.jdbc.VSMAttestationResponse this
LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Lcom/microsoft/sqlserver/jdbc/VSMAttestationResponse;
0 35 1 b [B
4 35 2 response Ljava/nio/ByteBuffer;
8 23 3 healthReportSize I
9 23 4 enclaveReportSize I
28 29 3 cf Ljava/security/cert/CertificateFactory;
31 34 3 ce Ljava/security/cert/CertificateException;
32 34 4 form Ljava/text/MessageFormat;
33 34 5 msgArgs [Ljava/lang/Object;
Exception table:
from to target type
27 29 30 Class java.security.cert.CertificateException
Exceptions:
throws com.microsoft.sqlserver.jdbc.SQLServerException
MethodParameters:
Name Flags
b
void validateCert(byte[]);
descriptor: ([B)V
flags: (0x0000)
Code:
stack=5, locals=6, args_size=2
start local 0 // com.microsoft.sqlserver.jdbc.VSMAttestationResponse this
start local 1 // byte[] b
0: .line 276
aload 1 /* b */
ifnull 15
1: .line 278
ldc "X.509"
invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
astore 2 /* cf */
start local 2 // java.security.cert.CertificateFactory cf
2: .line 279
aload 2 /* cf */
3: .line 280
new java.io.ByteArrayInputStream
dup
aload 1 /* b */
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
invokevirtual java.security.cert.CertificateFactory.generateCertificates:(Ljava/io/InputStream;)Ljava/util/Collection;
4: .line 279
astore 3 /* certs */
start local 3 // java.util.Collection certs
5: .line 281
aload 3 /* certs */
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 5
goto 11
StackMap locals: com.microsoft.sqlserver.jdbc.VSMAttestationResponse byte[] java.security.cert.CertificateFactory java.util.Collection top java.util.Iterator
StackMap stack:
6: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.security.cert.X509Certificate
astore 4 /* cert */
start local 4 // java.security.cert.X509Certificate cert
7: .line 283
aload 4 /* cert */
invokevirtual java.security.cert.X509Certificate.checkValidity:()V
8: .line 284
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.healthCert:Ljava/security/cert/X509Certificate;
aload 4 /* cert */
invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
invokevirtual java.security.cert.X509Certificate.verify:(Ljava/security/PublicKey;)V
9: .line 285
return
10: .line 286
StackMap locals: com.microsoft.sqlserver.jdbc.VSMAttestationResponse byte[] java.security.cert.CertificateFactory java.util.Collection java.security.cert.X509Certificate java.util.Iterator
StackMap stack: java.security.GeneralSecurityException
pop
end local 4 // java.security.cert.X509Certificate cert
11: .line 281
StackMap locals: com.microsoft.sqlserver.jdbc.VSMAttestationResponse byte[] java.security.cert.CertificateFactory java.util.Collection top java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
end local 3 // java.util.Collection certs
end local 2 // java.security.cert.CertificateFactory cf
12: .line 290
goto 15
StackMap locals: com.microsoft.sqlserver.jdbc.VSMAttestationResponse byte[]
StackMap stack: java.security.GeneralSecurityException
13: astore 2 /* e */
start local 2 // java.security.GeneralSecurityException e
14: .line 291
aconst_null
aload 0 /* this */
aload 2 /* e */
invokevirtual java.security.GeneralSecurityException.getLocalizedMessage:()Ljava/lang/String;
ldc "0"
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 2 // java.security.GeneralSecurityException e
15: .line 294
StackMap locals:
StackMap stack:
aconst_null
aload 0 /* this */
ldc "R_InvalidHealthCert"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerResource.getResource:(Ljava/lang/String;)Ljava/lang/String;
ldc "0"
16: .line 295
iconst_0
17: .line 294
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError:(Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Z)V
18: .line 296
return
end local 1 // byte[] b
end local 0 // com.microsoft.sqlserver.jdbc.VSMAttestationResponse this
LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lcom/microsoft/sqlserver/jdbc/VSMAttestationResponse;
0 19 1 b [B
2 12 2 cf Ljava/security/cert/CertificateFactory;
5 12 3 certs Ljava/util/Collection<Ljava/security/cert/X509Certificate;>;
7 11 4 cert Ljava/security/cert/X509Certificate;
14 15 2 e Ljava/security/GeneralSecurityException;
Exception table:
from to target type
7 9 10 Class java.security.SignatureException
7 9 10 Class java.security.cert.CertificateExpiredException
1 9 13 Class java.security.GeneralSecurityException
10 12 13 Class java.security.GeneralSecurityException
Exceptions:
throws com.microsoft.sqlserver.jdbc.SQLServerException
MethodParameters:
Name Flags
b
void validateStatementSignature();
descriptor: ()V
flags: (0x0000)
Code:
stack=7, locals=8, args_size=1
start local 0 // com.microsoft.sqlserver.jdbc.VSMAttestationResponse this
0: .line 316
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.enclaveReportPackage:[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 1 /* enclaveReportPackageBuffer */
start local 1 // java.nio.ByteBuffer enclaveReportPackageBuffer
1: .line 317
aload 1 /* enclaveReportPackageBuffer */
invokevirtual java.nio.ByteBuffer.getInt:()I
pop
2: .line 318
aload 1 /* enclaveReportPackageBuffer */
invokevirtual java.nio.ByteBuffer.getInt:()I
pop
3: .line 319
aload 1 /* enclaveReportPackageBuffer */
invokevirtual java.nio.ByteBuffer.getInt:()I
pop
4: .line 320
aload 1 /* enclaveReportPackageBuffer */
invokevirtual java.nio.ByteBuffer.getInt:()I
istore 2 /* signedStatementSize */
start local 2 // int signedStatementSize
5: .line 321
aload 1 /* enclaveReportPackageBuffer */
invokevirtual java.nio.ByteBuffer.getInt:()I
istore 3 /* signatureSize */
start local 3 // int signatureSize
6: .line 322
aload 1 /* enclaveReportPackageBuffer */
invokevirtual java.nio.ByteBuffer.getInt:()I
pop
7: .line 324
iload 2 /* signedStatementSize */
newarray 8
astore 4 /* signedStatement */
start local 4 // byte[] signedStatement
8: .line 325
aload 1 /* enclaveReportPackageBuffer */
aload 4 /* signedStatement */
iconst_0
iload 2 /* signedStatementSize */
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
9: .line 326
iload 3 /* signatureSize */
newarray 8
astore 5 /* signatureBlob */
start local 5 // byte[] signatureBlob
10: .line 327
aload 1 /* enclaveReportPackageBuffer */
aload 5 /* signatureBlob */
iconst_0
iload 3 /* signatureSize */
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
11: .line 329
aload 1 /* enclaveReportPackageBuffer */
invokevirtual java.nio.ByteBuffer.remaining:()I
ifeq 15
12: .line 330
aconst_null
aload 0 /* this */
13: .line 331
ldc "R_EnclavePackageLengthError"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerResource.getResource:(Ljava/lang/String;)Ljava/lang/String;
ldc "0"
iconst_0
14: .line 330
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError:(Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Z)V
15: .line 334
StackMap locals: com.microsoft.sqlserver.jdbc.VSMAttestationResponse java.nio.ByteBuffer int int byte[] byte[]
StackMap stack:
aconst_null
astore 6 /* sig */
start local 6 // java.security.Signature sig
16: .line 336
ldc "RSASSA-PSS"
invokestatic java.security.Signature.getInstance:(Ljava/lang/String;)Ljava/security/Signature;
astore 6 /* sig */
17: .line 337
goto 21
StackMap locals: com.microsoft.sqlserver.jdbc.VSMAttestationResponse java.nio.ByteBuffer int int byte[] byte[] java.security.Signature
StackMap stack: java.security.NoSuchAlgorithmException
18: pop
19: .line 342
invokestatic com.microsoft.sqlserver.jdbc.SQLServerBouncyCastleLoader.loadBouncyCastle:()V
20: .line 343
ldc "RSASSA-PSS"
invokestatic java.security.Signature.getInstance:(Ljava/lang/String;)Ljava/security/Signature;
astore 6 /* sig */
21: .line 345
StackMap locals:
StackMap stack:
new java.security.spec.PSSParameterSpec
dup
ldc "SHA-256"
ldc "MGF1"
getstatic java.security.spec.MGF1ParameterSpec.SHA256:Ljava/security/spec/MGF1ParameterSpec;
bipush 32
iconst_1
invokespecial java.security.spec.PSSParameterSpec.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;II)V
astore 7 /* pss */
start local 7 // java.security.spec.PSSParameterSpec pss
22: .line 346
aload 6 /* sig */
aload 7 /* pss */
invokevirtual java.security.Signature.setParameter:(Ljava/security/spec/AlgorithmParameterSpec;)V
23: .line 347
aload 6 /* sig */
aload 0 /* this */
getfield com.microsoft.sqlserver.jdbc.VSMAttestationResponse.healthCert:Ljava/security/cert/X509Certificate;
invokevirtual java.security.Signature.initVerify:(Ljava/security/cert/Certificate;)V
24: .line 348
aload 6 /* sig */
aload 4 /* signedStatement */
invokevirtual java.security.Signature.update:([B)V
25: .line 349
aload 6 /* sig */
aload 5 /* signatureBlob */
invokevirtual java.security.Signature.verify:([B)Z
ifne 29
26: .line 350
aconst_null
aload 0 /* this */
27: .line 351
ldc "R_InvalidSignedStatement"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerResource.getResource:(Ljava/lang/String;)Ljava/lang/String;
ldc "0"
iconst_0
28: .line 350
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError:(Lcom/microsoft/sqlserver/jdbc/SQLServerConnection;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Z)V
29: .line 353
StackMap locals: java.security.spec.PSSParameterSpec
StackMap stack:
return
end local 7 // java.security.spec.PSSParameterSpec pss
end local 6 // java.security.Signature sig
end local 5 // byte[] signatureBlob
end local 4 // byte[] signedStatement
end local 3 // int signatureSize
end local 2 // int signedStatementSize
end local 1 // java.nio.ByteBuffer enclaveReportPackageBuffer
end local 0 // com.microsoft.sqlserver.jdbc.VSMAttestationResponse this
LocalVariableTable:
Start End Slot Name Signature
0 30 0 this Lcom/microsoft/sqlserver/jdbc/VSMAttestationResponse;
1 30 1 enclaveReportPackageBuffer Ljava/nio/ByteBuffer;
5 30 2 signedStatementSize I
6 30 3 signatureSize I
8 30 4 signedStatement [B
10 30 5 signatureBlob [B
16 30 6 sig Ljava/security/Signature;
22 30 7 pss Ljava/security/spec/PSSParameterSpec;
Exception table:
from to target type
16 17 18 Class java.security.NoSuchAlgorithmException
Exceptions:
throws com.microsoft.sqlserver.jdbc.SQLServerException, java.security.GeneralSecurityException
}
SourceFile: "SQLServerVSMEnclaveProvider.java"