@Override
    protected byte[] doInBackground() {

        byte[] signature = null;

        try {
            // Obtention d'une instance de l'objet calculant la signature
            Signature signer = Signature.getInstance(super.file.getAlgorithm());

            // initialisation de l'objet signant avec la clé privée priKey du signataire
            signer.initSign(this.priKey);

            BufferedInputStream bin = new BufferedInputStream(new FileInputStream(super.file.getFile().getAbsolutePath()));

            // Le buffer de lecture
            byte[] buffer = new byte[1024];
            int nr, nrtot = 0;

            // Boucle de lecture
            while ((nr = bin.read(buffer)) != -1) {
                // mise à jour de l'objet signant avec le nouveau bloc de bytes lu
                signer.update(buffer, 0, nr);

                nrtot += nr;
                super.publishProgress(nrtot * 100 / (nrtot + bin.available()));
            }

            // récupération de la signature
            signature = signer.sign();

            //return signature;
        } catch (Exception ex) {
            Logger.getLogger(SignatureGenerator.class.getName()).log(Level.SEVERE, null, ex);
            if (super.getSignatureListener() != null) {
                super.getSignatureListener().exception(ex);
            }
        } finally {
            return signature;
        }
    }