protected Key engineUnwrap(byte[] paramArrayOfByte, String paramString, int paramInt) {
   try {
     if (this.aXL == null) {
       paramArrayOfByte = engineDoFinal(paramArrayOfByte, 0, paramArrayOfByte.length);
     } else {
       paramArrayOfByte = this.aXL.ﹳ(paramArrayOfByte, 0, paramArrayOfByte.length);
     }
   } catch (InvalidCipherTextException paramArrayOfByte) {
     throw new InvalidKeyException(paramArrayOfByte.getMessage());
   } catch (BadPaddingException paramArrayOfByte) {
     throw new InvalidKeyException(paramArrayOfByte.getMessage());
   } catch (IllegalBlockSizeException paramArrayOfByte) {
     throw new InvalidKeyException(paramArrayOfByte.getMessage());
   }
   if (paramInt == 3) {
     return new SecretKeySpec(paramArrayOfByte, paramString);
   }
   if ((paramString.equals("")) && (paramInt == 2)) {
     try {
       paramArrayOfByte = PrivateKeyInfo.ﹷ(paramArrayOfByte);
       paramString = BouncyCastleProvider.ˏ(paramArrayOfByte);
       if (paramString != null) {
         return paramString;
       }
       throw new InvalidKeyException("algorithm " + paramArrayOfByte.fW().fK() + " not supported");
     } catch (Exception paramArrayOfByte) {
       throw new InvalidKeyException("Invalid key encoding.");
     }
   }
   try {
     paramString = KeyFactory.getInstance(paramString, "SC");
     if (paramInt == 1) {
       paramArrayOfByte = paramString.generatePublic(new X509EncodedKeySpec(paramArrayOfByte));
       return paramArrayOfByte;
     }
     if (paramInt == 2) {
       paramArrayOfByte = paramString.generatePrivate(new PKCS8EncodedKeySpec(paramArrayOfByte));
       return paramArrayOfByte;
     }
   } catch (NoSuchProviderException paramArrayOfByte) {
     throw new InvalidKeyException("Unknown key type " + paramArrayOfByte.getMessage());
   } catch (InvalidKeySpecException paramArrayOfByte) {
     throw new InvalidKeyException("Unknown key type " + paramArrayOfByte.getMessage());
   }
   throw new InvalidKeyException("Unknown key type " + paramInt);
 }