final class sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange extends sun.security.ssl.HandshakeMessage$ServerKeyExchange
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange
  super_class: sun.security.ssl.HandshakeMessage$ServerKeyExchange
{
  private byte[] rsa_modulus;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private byte[] rsa_exponent;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private java.security.Signature signature;
    descriptor: Ljava/security/Signature;
    flags: (0x0002) ACC_PRIVATE

  private byte[] signatureBytes;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private void updateSignature(byte[], byte[]);
    descriptor: ([B[B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
        start local 1 // byte[] clntNonce
        start local 2 // byte[] svrNonce
         0: .line 545
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
            aload 1 /* clntNonce */
            invokevirtual java.security.Signature.update:([B)V
         1: .line 546
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
            aload 2 /* svrNonce */
            invokevirtual java.security.Signature.update:([B)V
         2: .line 548
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_modulus:[B
            arraylength
            istore 3 /* tmp */
        start local 3 // int tmp
         3: .line 549
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
            iload 3 /* tmp */
            bipush 8
            ishr
            i2b
            invokevirtual java.security.Signature.update:(B)V
         4: .line 550
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
            iload 3 /* tmp */
            sipush 255
            iand
            i2b
            invokevirtual java.security.Signature.update:(B)V
         5: .line 551
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_modulus:[B
            invokevirtual java.security.Signature.update:([B)V
         6: .line 553
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_exponent:[B
            arraylength
            istore 3 /* tmp */
         7: .line 554
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
            iload 3 /* tmp */
            bipush 8
            ishr
            i2b
            invokevirtual java.security.Signature.update:(B)V
         8: .line 555
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
            iload 3 /* tmp */
            sipush 255
            iand
            i2b
            invokevirtual java.security.Signature.update:(B)V
         9: .line 556
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_exponent:[B
            invokevirtual java.security.Signature.update:([B)V
        10: .line 557
            return
        end local 3 // int tmp
        end local 2 // byte[] svrNonce
        end local 1 // byte[] clntNonce
        end local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lsun/security/ssl/HandshakeMessage$RSA_ServerKeyExchange;
            0   11     1  clntNonce  [B
            0   11     2   svrNonce  [B
            3   11     3        tmp  I
    Exceptions:
      throws java.security.SignatureException
    MethodParameters:
           Name  Flags
      clntNonce  
      svrNonce   

  void <init>(java.security.PublicKey, java.security.PrivateKey, sun.security.ssl.RandomCookie, sun.security.ssl.RandomCookie, java.security.SecureRandom);
    descriptor: (Ljava/security/PublicKey;Ljava/security/PrivateKey;Lsun/security/ssl/RandomCookie;Lsun/security/ssl/RandomCookie;Ljava/security/SecureRandom;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=7, args_size=6
        start local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
        start local 1 // java.security.PublicKey ephemeralKey
        start local 2 // java.security.PrivateKey privateKey
        start local 3 // sun.security.ssl.RandomCookie clntNonce
        start local 4 // sun.security.ssl.RandomCookie svrNonce
        start local 5 // java.security.SecureRandom sr
         0: .line 570
            aload 0 /* this */
            invokespecial sun.security.ssl.HandshakeMessage$ServerKeyExchange.<init>:()V
         1: .line 573
            aload 1 /* ephemeralKey */
            invokestatic sun.security.ssl.JsseJce.getRSAPublicKeySpec:(Ljava/security/PublicKey;)Ljava/security/spec/RSAPublicKeySpec;
            astore 6 /* rsaKey */
        start local 6 // java.security.spec.RSAPublicKeySpec rsaKey
         2: .line 574
            aload 0 /* this */
            aload 6 /* rsaKey */
            invokevirtual java.security.spec.RSAPublicKeySpec.getModulus:()Ljava/math/BigInteger;
            invokestatic sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.toByteArray:(Ljava/math/BigInteger;)[B
            putfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_modulus:[B
         3: .line 575
            aload 0 /* this */
            aload 6 /* rsaKey */
            invokevirtual java.security.spec.RSAPublicKeySpec.getPublicExponent:()Ljava/math/BigInteger;
            invokestatic sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.toByteArray:(Ljava/math/BigInteger;)[B
            putfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_exponent:[B
         4: .line 576
            aload 0 /* this */
            invokestatic sun.security.ssl.RSASignature.getInstance:()Ljava/security/Signature;
            putfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
         5: .line 577
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
            aload 2 /* privateKey */
            aload 5 /* sr */
            invokevirtual java.security.Signature.initSign:(Ljava/security/PrivateKey;Ljava/security/SecureRandom;)V
         6: .line 578
            aload 0 /* this */
            aload 3 /* clntNonce */
            getfield sun.security.ssl.RandomCookie.random_bytes:[B
            aload 4 /* svrNonce */
            getfield sun.security.ssl.RandomCookie.random_bytes:[B
            invokevirtual sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.updateSignature:([B[B)V
         7: .line 579
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
            invokevirtual java.security.Signature.sign:()[B
            putfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signatureBytes:[B
         8: .line 580
            return
        end local 6 // java.security.spec.RSAPublicKeySpec rsaKey
        end local 5 // java.security.SecureRandom sr
        end local 4 // sun.security.ssl.RandomCookie svrNonce
        end local 3 // sun.security.ssl.RandomCookie clntNonce
        end local 2 // java.security.PrivateKey privateKey
        end local 1 // java.security.PublicKey ephemeralKey
        end local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lsun/security/ssl/HandshakeMessage$RSA_ServerKeyExchange;
            0    9     1  ephemeralKey  Ljava/security/PublicKey;
            0    9     2    privateKey  Ljava/security/PrivateKey;
            0    9     3     clntNonce  Lsun/security/ssl/RandomCookie;
            0    9     4      svrNonce  Lsun/security/ssl/RandomCookie;
            0    9     5            sr  Ljava/security/SecureRandom;
            2    9     6        rsaKey  Ljava/security/spec/RSAPublicKeySpec;
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
              Name  Flags
      ephemeralKey  
      privateKey    
      clntNonce     
      svrNonce      
      sr            

  void <init>(sun.security.ssl.HandshakeInStream);
    descriptor: (Lsun/security/ssl/HandshakeInStream;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
        start local 1 // sun.security.ssl.HandshakeInStream input
         0: .line 587
            aload 0 /* this */
            invokespecial sun.security.ssl.HandshakeMessage$ServerKeyExchange.<init>:()V
         1: .line 589
            aload 0 /* this */
            invokestatic sun.security.ssl.RSASignature.getInstance:()Ljava/security/Signature;
            putfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
         2: .line 590
            aload 0 /* this */
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getBytes16:()[B
            putfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_modulus:[B
         3: .line 591
            aload 0 /* this */
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getBytes16:()[B
            putfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_exponent:[B
         4: .line 592
            aload 0 /* this */
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getBytes16:()[B
            putfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signatureBytes:[B
         5: .line 593
            return
        end local 1 // sun.security.ssl.HandshakeInStream input
        end local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lsun/security/ssl/HandshakeMessage$RSA_ServerKeyExchange;
            0    6     1  input  Lsun/security/ssl/HandshakeInStream;
    Exceptions:
      throws java.io.IOException, java.security.NoSuchAlgorithmException
    MethodParameters:
       Name  Flags
      input  

  java.security.PublicKey getPublicKey();
    descriptor: ()Ljava/security/PublicKey;
    flags: (0x0000) 
    Code:
      stack=7, locals=3, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
         0: .line 601
            ldc "RSA"
            invokestatic sun.security.ssl.JsseJce.getKeyFactory:(Ljava/lang/String;)Ljava/security/KeyFactory;
            astore 1 /* kfac */
        start local 1 // java.security.KeyFactory kfac
         1: .line 603
            new java.security.spec.RSAPublicKeySpec
            dup
         2: .line 604
            new java.math.BigInteger
            dup
            iconst_1
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_modulus:[B
            invokespecial java.math.BigInteger.<init>:(I[B)V
         3: .line 605
            new java.math.BigInteger
            dup
            iconst_1
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_exponent:[B
            invokespecial java.math.BigInteger.<init>:(I[B)V
         4: .line 603
            invokespecial java.security.spec.RSAPublicKeySpec.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
            astore 2 /* kspec */
        start local 2 // java.security.spec.RSAPublicKeySpec kspec
         5: .line 606
            aload 1 /* kfac */
            aload 2 /* kspec */
            invokevirtual java.security.KeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
         6: areturn
        end local 2 // java.security.spec.RSAPublicKeySpec kspec
        end local 1 // java.security.KeyFactory kfac
         7: .line 607
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
         8: .line 608
            new java.lang.RuntimeException
            dup
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Exception e
        end local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   this  Lsun/security/ssl/HandshakeMessage$RSA_ServerKeyExchange;
            1    7     1   kfac  Ljava/security/KeyFactory;
            5    7     2  kspec  Ljava/security/spec/RSAPublicKeySpec;
            8    9     1      e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     6       7  Class java.lang.Exception

  boolean verify(java.security.PublicKey, sun.security.ssl.RandomCookie, sun.security.ssl.RandomCookie);
    descriptor: (Ljava/security/PublicKey;Lsun/security/ssl/RandomCookie;Lsun/security/ssl/RandomCookie;)Z
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
        start local 1 // java.security.PublicKey certifiedKey
        start local 2 // sun.security.ssl.RandomCookie clntNonce
        start local 3 // sun.security.ssl.RandomCookie svrNonce
         0: .line 619
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
            aload 1 /* certifiedKey */
            invokevirtual java.security.Signature.initVerify:(Ljava/security/PublicKey;)V
         1: .line 620
            aload 0 /* this */
            aload 2 /* clntNonce */
            getfield sun.security.ssl.RandomCookie.random_bytes:[B
            aload 3 /* svrNonce */
            getfield sun.security.ssl.RandomCookie.random_bytes:[B
            invokevirtual sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.updateSignature:([B[B)V
         2: .line 621
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signature:Ljava/security/Signature;
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signatureBytes:[B
            invokevirtual java.security.Signature.verify:([B)Z
            ireturn
        end local 3 // sun.security.ssl.RandomCookie svrNonce
        end local 2 // sun.security.ssl.RandomCookie clntNonce
        end local 1 // java.security.PublicKey certifiedKey
        end local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lsun/security/ssl/HandshakeMessage$RSA_ServerKeyExchange;
            0    3     1  certifiedKey  Ljava/security/PublicKey;
            0    3     2     clntNonce  Lsun/security/ssl/RandomCookie;
            0    3     3      svrNonce  Lsun/security/ssl/RandomCookie;
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
              Name  Flags
      certifiedKey  
      clntNonce     
      svrNonce      

  int messageLength();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
         0: .line 625
            bipush 6
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_modulus:[B
            arraylength
            iadd
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_exponent:[B
            arraylength
            iadd
         1: .line 626
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signatureBytes:[B
            arraylength
         2: .line 625
            iadd
            ireturn
        end local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/security/ssl/HandshakeMessage$RSA_ServerKeyExchange;

  void send(sun.security.ssl.HandshakeOutStream);
    descriptor: (Lsun/security/ssl/HandshakeOutStream;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
        start local 1 // sun.security.ssl.HandshakeOutStream s
         0: .line 630
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_modulus:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         1: .line 631
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_exponent:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         2: .line 632
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.signatureBytes:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         3: .line 633
            return
        end local 1 // sun.security.ssl.HandshakeOutStream s
        end local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lsun/security/ssl/HandshakeMessage$RSA_ServerKeyExchange;
            0    4     1     s  Lsun/security/ssl/HandshakeOutStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     

  void print(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
        start local 1 // java.io.PrintStream s
         0: .line 636
            aload 1 /* s */
            ldc "*** RSA ServerKeyExchange"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 638
            getstatic sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.debug:Lsun/security/ssl/Debug;
            ifnull 4
            ldc "verbose"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 4
         2: .line 639
            aload 1 /* s */
            ldc "RSA Modulus"
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_modulus:[B
            invokestatic sun.security.ssl.Debug.println:(Ljava/io/PrintStream;Ljava/lang/String;[B)V
         3: .line 640
            aload 1 /* s */
            ldc "RSA Public Exponent"
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange.rsa_exponent:[B
            invokestatic sun.security.ssl.Debug.println:(Ljava/io/PrintStream;Ljava/lang/String;[B)V
         4: .line 642
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.PrintStream s
        end local 0 // sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/security/ssl/HandshakeMessage$RSA_ServerKeyExchange;
            0    5     1     s  Ljava/io/PrintStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     
}
SourceFile: "HandshakeMessage.java"
NestHost: sun.security.ssl.HandshakeMessage
InnerClasses:
  final RSA_ServerKeyExchange = sun.security.ssl.HandshakeMessage$RSA_ServerKeyExchange of sun.security.ssl.HandshakeMessage
  abstract ServerKeyExchange = sun.security.ssl.HandshakeMessage$ServerKeyExchange of sun.security.ssl.HandshakeMessage