this.update(hData);
sig.update(hData); dig.update(hData);
    public PGPSignature generate()            throws PGPException, SignatureException    {            long creationTime = new Date().getTime() / 1000;            ByteArrayOutputStream sOut = new ByteArrayOutputStream();            sOut.write(signatureType);            sOut.write((byte)(creationTime >> 24));            sOut.write((byte)(creationTime >> 16));            sOut.write((byte)(creationTime >> 8));            sOut.write((byte)creationTime);            byte[] hData = sOut.toByteArray();            this.update(hData);            MPInteger[] sigValues;            if (keyAlgorithm == PublicKeyAlgorithmTags.RSA_SIGN                || keyAlgorithm == PublicKeyAlgorithmTags.RSA_GENERAL)                // an RSA signature            {                sigValues = new MPInteger[1];                sigValues[0] = new MPInteger(new BigInteger(1, sig.sign()));            }            else            {                sigValues = PGPUtil.dsaSigToMpi(sig.sign());            }            byte[] digest = dig.digest();            byte[] fingerPrint = new byte[2];            fingerPrint[0] = digest[0];            fingerPrint[1] = digest[1];            return new PGPSignature(new SignaturePacket(3, signatureType, privKey.getKeyID(), keyAlgorithm, hashAlgorithm, creationTime * 1000, fingerPrint, sigValues));    }