public abstract class com.sun.crypto.provider.CipherWithWrappingSpi extends javax.crypto.CipherSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.sun.crypto.provider.CipherWithWrappingSpi
  super_class: javax.crypto.CipherSpi
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.CipherWithWrappingSpi this
         0: .line 60
            aload 0 /* this */
            invokespecial javax.crypto.CipherSpi.<init>:()V
            return
        end local 0 // com.sun.crypto.provider.CipherWithWrappingSpi this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/CipherWithWrappingSpi;

  protected final byte[] engineWrap(java.security.Key);
    descriptor: (Ljava/security/Key;)[B
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.sun.crypto.provider.CipherWithWrappingSpi this
        start local 1 // java.security.Key key
         0: .line 81
            aconst_null
            astore 2 /* result */
        start local 2 // byte[] result
         1: .line 84
            aload 1 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            astore 3 /* encodedKey */
        start local 3 // byte[] encodedKey
         2: .line 85
            aload 3 /* encodedKey */
            ifnull 3
            aload 3 /* encodedKey */
            arraylength
            ifne 4
         3: .line 86
      StackMap locals: byte[] byte[]
      StackMap stack:
            new java.security.InvalidKeyException
            dup
            ldc "Cannot get an encoding of the key to be wrapped"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 90
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* encodedKey */
            iconst_0
            aload 3 /* encodedKey */
            arraylength
            invokevirtual com.sun.crypto.provider.CipherWithWrappingSpi.engineDoFinal:([BII)[B
            astore 2 /* result */
        end local 3 // byte[] encodedKey
         5: .line 91
            goto 7
      StackMap locals: com.sun.crypto.provider.CipherWithWrappingSpi java.security.Key byte[]
      StackMap stack: javax.crypto.BadPaddingException
         6: pop
         7: .line 95
      StackMap locals:
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 2 // byte[] result
        end local 1 // java.security.Key key
        end local 0 // com.sun.crypto.provider.CipherWithWrappingSpi this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lcom/sun/crypto/provider/CipherWithWrappingSpi;
            0    8     1         key  Ljava/security/Key;
            1    8     2      result  [B
            2    5     3  encodedKey  [B
      Exception table:
        from    to  target  type
           1     5       6  Class javax.crypto.BadPaddingException
    Exceptions:
      throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  protected final java.security.Key engineUnwrap(byte[], java.lang.String, int);
    descriptor: ([BLjava/lang/String;I)Ljava/security/Key;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // com.sun.crypto.provider.CipherWithWrappingSpi this
        start local 1 // byte[] wrappedKey
        start local 2 // java.lang.String wrappedKeyAlgorithm
        start local 3 // int wrappedKeyType
         0: .line 125
            aconst_null
            astore 5 /* result */
        start local 5 // java.security.Key result
         1: .line 128
            aload 0 /* this */
            aload 1 /* wrappedKey */
            iconst_0
         2: .line 129
            aload 1 /* wrappedKey */
            arraylength
         3: .line 128
            invokevirtual com.sun.crypto.provider.CipherWithWrappingSpi.engineDoFinal:([BII)[B
            astore 4 /* encodedKey */
        start local 4 // byte[] encodedKey
         4: .line 130
            goto 9
        end local 4 // byte[] encodedKey
      StackMap locals: com.sun.crypto.provider.CipherWithWrappingSpi byte[] java.lang.String int top java.security.Key
      StackMap stack: javax.crypto.BadPaddingException
         5: pop
         6: .line 131
            new java.security.InvalidKeyException
            dup
            invokespecial java.security.InvalidKeyException.<init>:()V
            athrow
         7: .line 132
      StackMap locals:
      StackMap stack: javax.crypto.IllegalBlockSizeException
            pop
         8: .line 133
            new java.security.InvalidKeyException
            dup
            invokespecial java.security.InvalidKeyException.<init>:()V
            athrow
        start local 4 // byte[] encodedKey
         9: .line 136
      StackMap locals: com.sun.crypto.provider.CipherWithWrappingSpi byte[] java.lang.String int byte[] java.security.Key
      StackMap stack:
            iload 3 /* wrappedKeyType */
            tableswitch { // 1 - 3
                    1: 18
                    2: 14
                    3: 10
              default: 21
          }
        10: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* encodedKey */
        11: .line 139
            aload 2 /* wrappedKeyAlgorithm */
        12: .line 138
            invokevirtual com.sun.crypto.provider.CipherWithWrappingSpi.constructSecretKey:([BLjava/lang/String;)Ljavax/crypto/SecretKey;
            astore 5 /* result */
        13: .line 140
            goto 21
        14: .line 142
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* encodedKey */
        15: .line 143
            aload 2 /* wrappedKeyAlgorithm */
        16: .line 142
            invokevirtual com.sun.crypto.provider.CipherWithWrappingSpi.constructPrivateKey:([BLjava/lang/String;)Ljava/security/PrivateKey;
            astore 5 /* result */
        17: .line 144
            goto 21
        18: .line 146
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* encodedKey */
        19: .line 147
            aload 2 /* wrappedKeyAlgorithm */
        20: .line 146
            invokevirtual com.sun.crypto.provider.CipherWithWrappingSpi.constructPublicKey:([BLjava/lang/String;)Ljava/security/PublicKey;
            astore 5 /* result */
        21: .line 151
      StackMap locals:
      StackMap stack:
            aload 5 /* result */
            areturn
        end local 5 // java.security.Key result
        end local 4 // byte[] encodedKey
        end local 3 // int wrappedKeyType
        end local 2 // java.lang.String wrappedKeyAlgorithm
        end local 1 // byte[] wrappedKey
        end local 0 // com.sun.crypto.provider.CipherWithWrappingSpi this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   22     0                 this  Lcom/sun/crypto/provider/CipherWithWrappingSpi;
            0   22     1           wrappedKey  [B
            0   22     2  wrappedKeyAlgorithm  Ljava/lang/String;
            0   22     3       wrappedKeyType  I
            4    5     4           encodedKey  [B
            9   22     4           encodedKey  [B
            1   22     5               result  Ljava/security/Key;
      Exception table:
        from    to  target  type
           1     4       5  Class javax.crypto.BadPaddingException
           1     4       7  Class javax.crypto.IllegalBlockSizeException
    Exceptions:
      throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
    MethodParameters:
                     Name  Flags
      wrappedKey           
      wrappedKeyAlgorithm  
      wrappedKeyType       

  private final java.security.PublicKey constructPublicKey(byte[], java.lang.String);
    descriptor: ([BLjava/lang/String;)Ljava/security/PublicKey;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // com.sun.crypto.provider.CipherWithWrappingSpi this
        start local 1 // byte[] encodedKey
        start local 2 // java.lang.String encodedKeyAlgorithm
         0: .line 168
            aconst_null
            astore 3 /* key */
        start local 3 // java.security.PublicKey key
         1: .line 172
            aload 2 /* encodedKeyAlgorithm */
         2: .line 173
            invokestatic com.sun.crypto.provider.SunJCE.getInstance:()Lcom/sun/crypto/provider/SunJCE;
         3: .line 172
            invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyFactory;
         4: .line 171
            astore 4 /* keyFactory */
        start local 4 // java.security.KeyFactory keyFactory
         5: .line 174
            new java.security.spec.X509EncodedKeySpec
            dup
            aload 1 /* encodedKey */
            invokespecial java.security.spec.X509EncodedKeySpec.<init>:([B)V
            astore 5 /* keySpec */
        start local 5 // java.security.spec.X509EncodedKeySpec keySpec
         6: .line 175
            aload 4 /* keyFactory */
            aload 5 /* keySpec */
            invokevirtual java.security.KeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
            astore 3 /* key */
        end local 5 // java.security.spec.X509EncodedKeySpec keySpec
        end local 4 // java.security.KeyFactory keyFactory
         7: .line 176
            goto 22
      StackMap locals: com.sun.crypto.provider.CipherWithWrappingSpi byte[] java.lang.String java.security.PublicKey
      StackMap stack: java.security.NoSuchAlgorithmException
         8: pop
         9: .line 181
            aload 2 /* encodedKeyAlgorithm */
            invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;)Ljava/security/KeyFactory;
        10: .line 180
            astore 4 /* keyFactory */
        start local 4 // java.security.KeyFactory keyFactory
        11: .line 183
            new java.security.spec.X509EncodedKeySpec
            dup
            aload 1 /* encodedKey */
            invokespecial java.security.spec.X509EncodedKeySpec.<init>:([B)V
        12: .line 182
            astore 5 /* keySpec */
        start local 5 // java.security.spec.X509EncodedKeySpec keySpec
        13: .line 184
            aload 4 /* keyFactory */
            aload 5 /* keySpec */
            invokevirtual java.security.KeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
            astore 3 /* key */
        end local 5 // java.security.spec.X509EncodedKeySpec keySpec
        end local 4 // java.security.KeyFactory keyFactory
        14: .line 185
            goto 22
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
        15: pop
        16: .line 186
            new java.security.NoSuchAlgorithmException
            dup
            new java.lang.StringBuilder
            dup
            ldc "No installed providers can create keys for the "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        17: .line 188
            aload 2 /* encodedKeyAlgorithm */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        18: .line 189
            ldc "algorithm"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 186
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 190
      StackMap locals:
      StackMap stack: java.security.spec.InvalidKeySpecException
            pop
            goto 22
        21: .line 193
      StackMap locals:
      StackMap stack: java.security.spec.InvalidKeySpecException
            pop
        22: .line 197
      StackMap locals:
      StackMap stack:
            aload 3 /* key */
            areturn
        end local 3 // java.security.PublicKey key
        end local 2 // java.lang.String encodedKeyAlgorithm
        end local 1 // byte[] encodedKey
        end local 0 // com.sun.crypto.provider.CipherWithWrappingSpi this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   23     0                 this  Lcom/sun/crypto/provider/CipherWithWrappingSpi;
            0   23     1           encodedKey  [B
            0   23     2  encodedKeyAlgorithm  Ljava/lang/String;
            1   23     3                  key  Ljava/security/PublicKey;
            5    7     4           keyFactory  Ljava/security/KeyFactory;
            6    7     5              keySpec  Ljava/security/spec/X509EncodedKeySpec;
           11   14     4           keyFactory  Ljava/security/KeyFactory;
           13   14     5              keySpec  Ljava/security/spec/X509EncodedKeySpec;
      Exception table:
        from    to  target  type
           1     7       8  Class java.security.NoSuchAlgorithmException
           9    14      15  Class java.security.NoSuchAlgorithmException
           9    14      20  Class java.security.spec.InvalidKeySpecException
           1     7      21  Class java.security.spec.InvalidKeySpecException
    Exceptions:
      throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
    MethodParameters:
                     Name  Flags
      encodedKey           
      encodedKeyAlgorithm  

  private final java.security.PrivateKey constructPrivateKey(byte[], java.lang.String);
    descriptor: ([BLjava/lang/String;)Ljava/security/PrivateKey;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // com.sun.crypto.provider.CipherWithWrappingSpi this
        start local 1 // byte[] encodedKey
        start local 2 // java.lang.String encodedKeyAlgorithm
         0: .line 213
            aconst_null
            astore 3 /* key */
        start local 3 // java.security.PrivateKey key
         1: .line 217
            aload 2 /* encodedKeyAlgorithm */
         2: .line 218
            invokestatic com.sun.crypto.provider.SunJCE.getInstance:()Lcom/sun/crypto/provider/SunJCE;
         3: .line 217
            invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyFactory;
         4: .line 216
            astore 4 /* keyFactory */
        start local 4 // java.security.KeyFactory keyFactory
         5: .line 219
            new java.security.spec.PKCS8EncodedKeySpec
            dup
            aload 1 /* encodedKey */
            invokespecial java.security.spec.PKCS8EncodedKeySpec.<init>:([B)V
            astore 5 /* keySpec */
        start local 5 // java.security.spec.PKCS8EncodedKeySpec keySpec
         6: .line 220
            aload 4 /* keyFactory */
            aload 5 /* keySpec */
            invokevirtual java.security.KeyFactory.generatePrivate:(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
         7: areturn
        end local 5 // java.security.spec.PKCS8EncodedKeySpec keySpec
        end local 4 // java.security.KeyFactory keyFactory
         8: .line 221
      StackMap locals: com.sun.crypto.provider.CipherWithWrappingSpi byte[] java.lang.String java.security.PrivateKey
      StackMap stack: java.security.NoSuchAlgorithmException
            pop
         9: .line 226
            aload 2 /* encodedKeyAlgorithm */
            invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;)Ljava/security/KeyFactory;
        10: .line 225
            astore 4 /* keyFactory */
        start local 4 // java.security.KeyFactory keyFactory
        11: .line 228
            new java.security.spec.PKCS8EncodedKeySpec
            dup
            aload 1 /* encodedKey */
            invokespecial java.security.spec.PKCS8EncodedKeySpec.<init>:([B)V
        12: .line 227
            astore 5 /* keySpec */
        start local 5 // java.security.spec.PKCS8EncodedKeySpec keySpec
        13: .line 229
            aload 4 /* keyFactory */
            aload 5 /* keySpec */
            invokevirtual java.security.KeyFactory.generatePrivate:(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
            astore 3 /* key */
        end local 5 // java.security.spec.PKCS8EncodedKeySpec keySpec
        end local 4 // java.security.KeyFactory keyFactory
        14: .line 230
            goto 22
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
        15: pop
        16: .line 231
            new java.security.NoSuchAlgorithmException
            dup
            new java.lang.StringBuilder
            dup
            ldc "No installed providers can create keys for the "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        17: .line 233
            aload 2 /* encodedKeyAlgorithm */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        18: .line 234
            ldc "algorithm"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 231
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 235
      StackMap locals:
      StackMap stack: java.security.spec.InvalidKeySpecException
            pop
            goto 22
        21: .line 238
      StackMap locals:
      StackMap stack: java.security.spec.InvalidKeySpecException
            pop
        22: .line 242
      StackMap locals:
      StackMap stack:
            aload 3 /* key */
            areturn
        end local 3 // java.security.PrivateKey key
        end local 2 // java.lang.String encodedKeyAlgorithm
        end local 1 // byte[] encodedKey
        end local 0 // com.sun.crypto.provider.CipherWithWrappingSpi this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   23     0                 this  Lcom/sun/crypto/provider/CipherWithWrappingSpi;
            0   23     1           encodedKey  [B
            0   23     2  encodedKeyAlgorithm  Ljava/lang/String;
            1   23     3                  key  Ljava/security/PrivateKey;
            5    8     4           keyFactory  Ljava/security/KeyFactory;
            6    8     5              keySpec  Ljava/security/spec/PKCS8EncodedKeySpec;
           11   14     4           keyFactory  Ljava/security/KeyFactory;
           13   14     5              keySpec  Ljava/security/spec/PKCS8EncodedKeySpec;
      Exception table:
        from    to  target  type
           1     7       8  Class java.security.NoSuchAlgorithmException
           9    14      15  Class java.security.NoSuchAlgorithmException
           9    14      20  Class java.security.spec.InvalidKeySpecException
           1     7      21  Class java.security.spec.InvalidKeySpecException
    Exceptions:
      throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
    MethodParameters:
                     Name  Flags
      encodedKey           
      encodedKeyAlgorithm  

  private final javax.crypto.SecretKey constructSecretKey(byte[], java.lang.String);
    descriptor: ([BLjava/lang/String;)Ljavax/crypto/SecretKey;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.sun.crypto.provider.CipherWithWrappingSpi this
        start local 1 // byte[] encodedKey
        start local 2 // java.lang.String encodedKeyAlgorithm
         0: .line 257
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 1 /* encodedKey */
            aload 2 /* encodedKeyAlgorithm */
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            areturn
        end local 2 // java.lang.String encodedKeyAlgorithm
        end local 1 // byte[] encodedKey
        end local 0 // com.sun.crypto.provider.CipherWithWrappingSpi this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    1     0                 this  Lcom/sun/crypto/provider/CipherWithWrappingSpi;
            0    1     1           encodedKey  [B
            0    1     2  encodedKeyAlgorithm  Ljava/lang/String;
    MethodParameters:
                     Name  Flags
      encodedKey           
      encodedKeyAlgorithm  
}
SourceFile: "CipherWithWrappingSpi.java"