docs: @Override
    public final void encryptFile(final String pFilePath,
      final String pEncryptedPath) throws Exception {
      KeyGenerator keyGenAes = KeyGenerator.
        getInstance("AES", this.cryptoProvider);
      keyGenAes.init(256, new SecureRandom());
      SecretKey sskAes = keyGenAes.generateKey();
      Cipher cipherRsa = Cipher.getInstance("RSA", this.cryptoProvider);
      cipherRsa.init(Cipher.ENCRYPT_MODE, lazyGetPublicKeyAnotherAjetty());
      byte[] encryptedSsk = cipherRsa.doFinal(sskAes.getEncoded());
      Signature sigMk = Signature.getInstance("SHA256withRSA");
      sigMk.initSign(lazyGetOurPrivateKey(), new SecureRandom());
      sigMk.update(encryptedSsk);
      byte[] sigSsk = sigMk.sign();
      Cipher cipherAes = Cipher.getInstance("AES/ECB/PKCS7Padding",
        this.cryptoProvider);
      cipherAes.init(Cipher.ENCRYPT_MODE, sskAes);
      BufferedInputStream bis = null;
      CipherOutputStream cous = null;
      byte[] buffer = new byte[1024];
      int len;
      try {
        bis = new BufferedInputStream(new FileInputStream(pFilePath));
        cous = new CipherOutputStream(new FileOutputStream(pEncryptedPath),
          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();
          }
        }
      }
      bis = null;
      try {
        sigMk.initSign(lazyGetOurPrivateKey(), new SecureRandom());
        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();
          }
        }
      }
      byte[] sigDt = sigMk.sign();
      // write SSK, signatures
      FileOutputStream fos = null;
      try {
        fos = new FileOutputStream(pEncryptedPath + ".sken");
        fos.write(encryptedSsk);
        fos.flush();
      } finally {
        if (fos != null) {
          try {
            fos.close();
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      }
      fos = null;
      try {
        fos = new FileOutputStream(pEncryptedPath + ".sken.sig");
        fos.write(sigSsk);
        fos.flush();
      } finally {
        if (fos != null) {
          try {
            fos.close();
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      }
      fos = null;
      try {
        fos = new FileOutputStream(pEncryptedPath + ".sig");
        fos.write(sigDt);
        fos.flush();
      } finally {
        if (fos != null) {
          try {
            fos.close();
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      }
    }