Ejemplo n.º 1
0
        /// <summary>
        /// Devuelve los datos finales que deberán ser firmados
        /// </summary>
        /// <param name="content"></param>
        /// <param name="parameters"></param>
        /// <param name="signedData"></param>
        /// <param name="isCounterSignature"></param>
        /// <returns></returns>
        private byte[] ToBeSigned(CmsProcessable content, SignatureParameters parameters, CmsSignedData signedData, bool isCounterSignature)
        {
            PreComputedSigner            preComputedSigner = new PreComputedSigner();
            CustomCMSSignedDataGenerator generator         = CreateSignedGenerator(preComputedSigner, parameters, signedData);

            if (parameters.PreCalculatedDigest != null)
            {
                generator.PreCalculatedDigest = parameters.PreCalculatedDigest;
            }
            else if (content == null)
            {
                // Si el contenido es nulo se intenta buscar el valor de la huella del contenido en las otras firmas
                generator.PreCalculatedDigest = GetDigestValue(signedData.GetSignerInfos(), parameters.DigestMethod);

                if (generator.PreCalculatedDigest == null)
                {
                    throw new Exception("No se ha podido obtener la huella del contenido");
                }
            }

            generator.PreGenerate(!isCounterSignature ? CmsObjectIdentifiers.Data.Id : null, content);

            return(preComputedSigner.CurrentSignature());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Returns the final data that must be signed
        /// </summary>
        /// <param name="content"></param>
        /// <param name="parameters"></param>
        /// <param name="signedData"></param>
        /// <param name="isCounterSignature"></param>
        /// <returns></returns>
        private byte[] ToBeSigned(CmsProcessable content, SignatureParameters parameters, CmsSignedData signedData, bool isCounterSignature)
        {
            PreComputedSigner            preComputedSigner = new PreComputedSigner();
            CustomCMSSignedDataGenerator generator         = CreateSignedGenerator(preComputedSigner, parameters, signedData);

            if (parameters.PreCalculatedDigest != null)
            {
                generator.PreCalculatedDigest = parameters.PreCalculatedDigest;
            }
            else if (content == null)
            {
                // If the content is null, try to find the value of the content footprint in the other firms
                generator.PreCalculatedDigest = GetDigestValue(signedData.GetSignerInfos(), parameters.DigestMethod);

                if (generator.PreCalculatedDigest == null)
                {
                    throw new Exception("Could not get the footprint of the content");
                }
            }

            generator.PreGenerate(!isCounterSignature ? CmsObjectIdentifiers.Data.Id : null, content);

            return(preComputedSigner.CurrentSignature());
        }