docs: @Override
    public final void decryptFile(final String pEncryptedPath,
      final String pDecryptedPath) throws Exception {
      FileInputStream fis = null;
      byte[] encryptedSsk = null;
      try {
        fis = new FileInputStream(pEncryptedPath + ".sken");
        ByteArrayOutputStream baus = new ByteArrayOutputStream();
        int b;
        while ((b = fis.read()) != -1) {
          baus.write(b);
        }
        encryptedSsk = baus.toByteArray();
      } finally {
        if (fis != null) {
          try {
            fis.close();
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      }
      fis = null;
      byte[] sigSsk = null;
      try {
        fis = new FileInputStream(pEncryptedPath + ".sken.sig");
        ByteArrayOutputStream baus = new ByteArrayOutputStream();
        int b;
        while ((b = fis.read()) != -1) {
          baus.write(b);
        }
        sigSsk = baus.toByteArray();
      } finally {
        if (fis != null) {
          try {
            fis.close();
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      }
      fis = null;
      byte[] sigDt = null;
      try {
        fis = new FileInputStream(pEncryptedPath + ".sig");
        ByteArrayOutputStream baus = new ByteArrayOutputStream();
        int b;
        while ((b = fis.read()) != -1) {
          baus.write(b);
        }
        sigDt = baus.toByteArray();
      } finally {
        if (fis != null) {
          try {
            fis.close();
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      }
      if (encryptedSsk != null && sigSsk != null && sigDt != null) {
        Signature sigMk = Signature.getInstance("SHA256withRSA");
        sigMk.initVerify(lazyGetPublicKeyAnotherAjetty());
        sigMk.update(encryptedSsk);
        if (sigMk.verify(sigSsk)) {
          sigMk.initVerify(lazyGetPublicKeyAnotherAjetty());
          BufferedInputStream bis = null;
          byte[] buffer = new byte[1024];
          int len;
          try {
            bis = new BufferedInputStream(new FileInputStream(
              pEncryptedPath));
            while ((len = bis.read(buffer)) > 0) {
              sigMk.update(buffer, 0, len);
            }
          } finally {
            if (bis != null) {
              try {
                bis.close();
              } catch (Exception e) {
                e.printStackTrace();
              }
            }
          }
          if (sigMk.verify(sigDt)) {
            Cipher cipherRsa = Cipher.getInstance("RSA", this.cryptoProvider);
            cipherRsa.init(Cipher.DECRYPT_MODE, lazyGetOurPrivateKey());
            byte[] decryptedSsk = cipherRsa.doFinal(encryptedSsk);
            SecretKeySpec sskAesRec = new SecretKeySpec(decryptedSsk, "AES");
            Cipher cipherAes = Cipher.getInstance("AES/ECB/PKCS7Padding",
              this.cryptoProvider);
            cipherAes.init(Cipher.DECRYPT_MODE, sskAesRec);
            CipherOutputStream cous = null;
            try {
              bis = new BufferedInputStream(new FileInputStream(pEncryptedPath));
              cous = new CipherOutputStream(new FileOutputStream(pDecryptedPath),
                cipherAes);
              while ((len = bis.read(buffer)) > 0) {
                cous.write(buffer, 0, len);
              }
              cous.flush();
            } finally {
              if (bis != null) {
                try {
                  bis.close();
                } catch (Exception e) {
                  e.printStackTrace();
                }
              }
              if (cous != null) {
                try {
                  cous.close();
                } catch (Exception e) {
                  e.printStackTrace();
                }
              }
            }
          }
        }
      }
    }