class sun.security.mscapi.CSignature$RSA extends sun.security.mscapi.CSignature
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: sun.security.mscapi.CSignature$RSA
  super_class: sun.security.mscapi.CSignature
{
  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.security.mscapi.CSignature$RSA this
        start local 1 // java.lang.String digestAlgorithm
         0: .line 115
            aload 0 /* this */
            ldc "RSA"
            aload 1 /* digestAlgorithm */
            invokespecial sun.security.mscapi.CSignature.<init>:(Ljava/lang/String;Ljava/lang/String;)V
         1: .line 116
            return
        end local 1 // java.lang.String digestAlgorithm
        end local 0 // sun.security.mscapi.CSignature$RSA this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lsun/security/mscapi/CSignature$RSA;
            0    2     1  digestAlgorithm  Ljava/lang/String;
    MethodParameters:
                 Name  Flags
      digestAlgorithm  

  protected void engineInitSign(java.security.PrivateKey);
    descriptor: (Ljava/security/PrivateKey;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // sun.security.mscapi.CSignature$RSA this
        start local 1 // java.security.PrivateKey key
         0: .line 122
            aload 1 /* key */
            instanceof sun.security.mscapi.CPrivateKey
            ifeq 2
         1: .line 123
            aload 1 /* key */
            invokeinterface java.security.PrivateKey.getAlgorithm:()Ljava/lang/String;
            ldc "RSA"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 3
         2: .line 124
      StackMap locals:
      StackMap stack:
            new java.security.InvalidKeyException
            dup
            ldc "Key type not supported"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 126
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* key */
            checkcast sun.security.mscapi.CPrivateKey
            putfield sun.security.mscapi.CSignature$RSA.privateKey:Lsun/security/mscapi/CPrivateKey;
         4: .line 130
            aload 0 /* this */
            getfield sun.security.mscapi.CSignature$RSA.privateKey:Lsun/security/mscapi/CPrivateKey;
            invokevirtual sun.security.mscapi.CPrivateKey.length:()I
            bipush 7
            iadd
            bipush -8
            iand
         5: .line 131
            aconst_null
            sipush 512
         6: .line 132
            sipush 16384
         7: .line 130
            invokestatic sun.security.rsa.RSAKeyFactory.checkKeyLengths:(ILjava/math/BigInteger;II)V
         8: .line 134
            aload 0 /* this */
            aconst_null
            putfield sun.security.mscapi.CSignature$RSA.publicKey:Lsun/security/mscapi/CPublicKey;
         9: .line 135
            aload 0 /* this */
            invokevirtual sun.security.mscapi.CSignature$RSA.resetDigest:()V
        10: .line 136
            return
        end local 1 // java.security.PrivateKey key
        end local 0 // sun.security.mscapi.CSignature$RSA this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lsun/security/mscapi/CSignature$RSA;
            0   11     1   key  Ljava/security/PrivateKey;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  protected void engineInitVerify(java.security.PublicKey);
    descriptor: (Ljava/security/PublicKey;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // sun.security.mscapi.CSignature$RSA this
        start local 1 // java.security.PublicKey key
         0: .line 142
            aload 1 /* key */
            instanceof java.security.interfaces.RSAPublicKey
            ifne 2
         1: .line 143
            new java.security.InvalidKeyException
            dup
            ldc "Key type not supported"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 147
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            instanceof sun.security.mscapi.CPublicKey
            ifne 22
         3: .line 151
            aload 1 /* key */
            checkcast java.security.interfaces.RSAPublicKey
         4: .line 150
            astore 2 /* rsaKey */
        start local 2 // java.security.interfaces.RSAPublicKey rsaKey
         5: .line 153
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPublicKey.getModulus:()Ljava/math/BigInteger;
            astore 3 /* modulus */
        start local 3 // java.math.BigInteger modulus
         6: .line 154
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPublicKey.getPublicExponent:()Ljava/math/BigInteger;
            astore 4 /* exponent */
        start local 4 // java.math.BigInteger exponent
         7: .line 158
            aload 3 /* modulus */
            invokevirtual java.math.BigInteger.bitLength:()I
            bipush 7
            iadd
            bipush -8
            iand
         8: .line 159
            aload 4 /* exponent */
            iconst_m1
            sipush 16384
         9: .line 158
            invokestatic sun.security.rsa.RSAKeyFactory.checkKeyLengths:(ILjava/math/BigInteger;II)V
        10: .line 161
            aload 3 /* modulus */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 5 /* modulusBytes */
        start local 5 // byte[] modulusBytes
        11: .line 162
            aload 4 /* exponent */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 6 /* exponentBytes */
        start local 6 // byte[] exponentBytes
        12: .line 165
            aload 5 /* modulusBytes */
            iconst_0
            baload
            ifne 14
        13: .line 166
            aload 5 /* modulusBytes */
            arraylength
            iconst_1
            isub
            bipush 8
            imul
            goto 15
        14: .line 167
      StackMap locals: sun.security.mscapi.CSignature$RSA java.security.PublicKey java.security.interfaces.RSAPublicKey java.math.BigInteger java.math.BigInteger byte[] byte[]
      StackMap stack:
            aload 5 /* modulusBytes */
            arraylength
            bipush 8
            imul
        15: .line 165
      StackMap locals:
      StackMap stack: int
            istore 7 /* keyBitLength */
        start local 7 // int keyBitLength
        16: .line 170
            iload 7 /* keyBitLength */
            aload 5 /* modulusBytes */
            aload 6 /* exponentBytes */
        17: .line 169
            invokestatic sun.security.mscapi.CSignature$RSA.generatePublicKeyBlob:(I[B[B)[B
            astore 8 /* keyBlob */
        start local 8 // byte[] keyBlob
        18: .line 173
            aload 0 /* this */
            ldc "RSA"
            aload 8 /* keyBlob */
            iload 7 /* keyBitLength */
            invokestatic sun.security.mscapi.CSignature$RSA.importPublicKey:(Ljava/lang/String;[BI)Lsun/security/mscapi/CPublicKey;
            putfield sun.security.mscapi.CSignature$RSA.publicKey:Lsun/security/mscapi/CPublicKey;
        19: .line 175
            goto 23
      StackMap locals: sun.security.mscapi.CSignature$RSA java.security.PublicKey java.security.interfaces.RSAPublicKey java.math.BigInteger java.math.BigInteger byte[] byte[] int byte[]
      StackMap stack: java.security.KeyStoreException
        20: astore 9 /* e */
        start local 9 // java.security.KeyStoreException e
        21: .line 176
            new java.security.InvalidKeyException
            dup
            aload 9 /* e */
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 9 // java.security.KeyStoreException e
        end local 8 // byte[] keyBlob
        end local 7 // int keyBitLength
        end local 6 // byte[] exponentBytes
        end local 5 // byte[] modulusBytes
        end local 4 // java.math.BigInteger exponent
        end local 3 // java.math.BigInteger modulus
        end local 2 // java.security.interfaces.RSAPublicKey rsaKey
        22: .line 180
      StackMap locals: sun.security.mscapi.CSignature$RSA java.security.PublicKey
      StackMap stack:
            aload 0 /* this */
            aload 1 /* key */
            checkcast sun.security.mscapi.CPublicKey
            putfield sun.security.mscapi.CSignature$RSA.publicKey:Lsun/security/mscapi/CPublicKey;
        23: .line 183
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.mscapi.CSignature$RSA.privateKey:Lsun/security/mscapi/CPrivateKey;
        24: .line 184
            aload 0 /* this */
            invokevirtual sun.security.mscapi.CSignature$RSA.resetDigest:()V
        25: .line 185
            return
        end local 1 // java.security.PublicKey key
        end local 0 // sun.security.mscapi.CSignature$RSA this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   26     0           this  Lsun/security/mscapi/CSignature$RSA;
            0   26     1            key  Ljava/security/PublicKey;
            5   22     2         rsaKey  Ljava/security/interfaces/RSAPublicKey;
            6   22     3        modulus  Ljava/math/BigInteger;
            7   22     4       exponent  Ljava/math/BigInteger;
           11   22     5   modulusBytes  [B
           12   22     6  exponentBytes  [B
           16   22     7   keyBitLength  I
           18   22     8        keyBlob  [B
           21   22     9              e  Ljava/security/KeyStoreException;
      Exception table:
        from    to  target  type
          18    19      20  Class java.security.KeyStoreException
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  protected byte[] engineSign();
    descriptor: ()[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=8, locals=4, args_size=1
        start local 0 // sun.security.mscapi.CSignature$RSA this
         0: .line 202
            aload 0 /* this */
            invokevirtual sun.security.mscapi.CSignature$RSA.getDigestValue:()[B
            astore 1 /* hash */
        start local 1 // byte[] hash
         1: .line 205
            aload 0 /* this */
            instanceof sun.security.mscapi.CSignature$NONEwithRSA
            istore 2 /* noHashOID */
        start local 2 // boolean noHashOID
         2: .line 208
            iload 2 /* noHashOID */
            aload 1 /* hash */
            aload 1 /* hash */
            arraylength
         3: .line 209
            aload 0 /* this */
            getfield sun.security.mscapi.CSignature$RSA.messageDigestAlgorithm:Ljava/lang/String;
            aload 0 /* this */
            getfield sun.security.mscapi.CSignature$RSA.privateKey:Lsun/security/mscapi/CPrivateKey;
            invokevirtual sun.security.mscapi.CPrivateKey.getHCryptProvider:()J
         4: .line 210
            aload 0 /* this */
            getfield sun.security.mscapi.CSignature$RSA.privateKey:Lsun/security/mscapi/CPrivateKey;
            invokevirtual sun.security.mscapi.CPrivateKey.getHCryptKey:()J
         5: .line 208
            invokestatic sun.security.mscapi.CSignature.signHash:(Z[BILjava/lang/String;JJ)[B
            astore 3 /* result */
        start local 3 // byte[] result
         6: .line 213
            aload 3 /* result */
            invokestatic sun.security.mscapi.CSignature.convertEndianArray:([B)[B
            areturn
        end local 3 // byte[] result
        end local 2 // boolean noHashOID
        end local 1 // byte[] hash
        end local 0 // sun.security.mscapi.CSignature$RSA this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lsun/security/mscapi/CSignature$RSA;
            1    7     1       hash  [B
            2    7     2  noHashOID  Z
            6    7     3     result  [B
    Exceptions:
      throws java.security.SignatureException

  protected boolean engineVerify(byte[]);
    descriptor: ([B)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=3, args_size=2
        start local 0 // sun.security.mscapi.CSignature$RSA this
        start local 1 // byte[] sigBytes
         0: .line 231
            aload 0 /* this */
            invokevirtual sun.security.mscapi.CSignature$RSA.getDigestValue:()[B
            astore 2 /* hash */
        start local 2 // byte[] hash
         1: .line 233
            aload 2 /* hash */
            aload 2 /* hash */
            arraylength
         2: .line 234
            aload 0 /* this */
            getfield sun.security.mscapi.CSignature$RSA.messageDigestAlgorithm:Ljava/lang/String;
            aload 1 /* sigBytes */
            invokestatic sun.security.mscapi.CSignature.convertEndianArray:([B)[B
         3: .line 235
            aload 1 /* sigBytes */
            arraylength
            aload 0 /* this */
            getfield sun.security.mscapi.CSignature$RSA.publicKey:Lsun/security/mscapi/CPublicKey;
            invokevirtual sun.security.mscapi.CPublicKey.getHCryptProvider:()J
         4: .line 236
            aload 0 /* this */
            getfield sun.security.mscapi.CSignature$RSA.publicKey:Lsun/security/mscapi/CPublicKey;
            invokevirtual sun.security.mscapi.CPublicKey.getHCryptKey:()J
         5: .line 233
            invokestatic sun.security.mscapi.CSignature.verifySignedHash:([BILjava/lang/String;[BIJJ)Z
            ireturn
        end local 2 // byte[] hash
        end local 1 // byte[] sigBytes
        end local 0 // sun.security.mscapi.CSignature$RSA this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lsun/security/mscapi/CSignature$RSA;
            0    6     1  sigBytes  [B
            1    6     2      hash  [B
    Exceptions:
      throws java.security.SignatureException
    MethodParameters:
          Name  Flags
      sigBytes  

  static native byte[] generatePublicKeyBlob(int, byte[], byte[]);
    descriptor: (I[B[B)[B
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
                Name  Flags
      keyBitLength    
      modulus         
      publicExponent  
}
SourceFile: "CSignature.java"
NestHost: sun.security.mscapi.CSignature
InnerClasses:
  public final NONEwithRSA = sun.security.mscapi.CSignature$NONEwithRSA of sun.security.mscapi.CSignature
  RSA = sun.security.mscapi.CSignature$RSA of sun.security.mscapi.CSignature