Ejemplo n.º 1
0
        private bool AssinaN3_2First(GEDDocumentosNivel2 item)
        {
            string caminhoDocOriginal   = "";
            string caminhoDocAssinadoN1 = "";

            caminhoDocOriginal   = GetPathOutput() + "\\" + item.PAS_REGISTRO + "\\" + item.PAS_REGISTRO + item.DOC_DIVISAO + "\\" + item.PAS_CODIGOPASSAGEM + "\\" + item.DOC_NOMEARQUIVO + ".jpeg";
            caminhoDocAssinadoN1 = GetPathOutput() + "\\" + item.PAS_REGISTRO + "\\" + item.PAS_REGISTRO + item.DOC_DIVISAO + "\\" + item.PAS_CODIGOPASSAGEM + "\\" + item.DOC_NOMEARQUIVO + "_N3.p7s";


            byte[] retorno = null;

            Stream fileToSignDocOriginal   = ConvertDocToStream(caminhoDocOriginal);
            Stream fileToSignDocAssinadoN1 = ConvertDocToStream(caminhoDocAssinadoN1);

            BRYSIGNERCOMLib.IAssinador assinador = new BRYSIGNERCOMLib.Assinador();

            String docOriginal   = BitConverter.ToString(lerArquivo(fileToSignDocOriginal)).Replace("-", string.Empty);
            String docAssinadoN1 = BitConverter.ToString(lerArquivo(fileToSignDocAssinadoN1)).Replace("-", string.Empty);

            String idCertificado = ACSGlobal.UsuarioLogado.USR_SERIALNUMBERCERT;

            assinador.setFormatoDadosMemoria(FORMATO_ARQUIVO_HEXADECIMAL);

            String assinaturaHex    = "";
            int    statusAssinatura = -1;

            statusAssinatura = assinador.coAssineMemDetached(docAssinadoN1, docOriginal, "Orion Digital - 2016 - ACS Capture", idCertificado, ref assinaturaHex);

            if (statusAssinatura == 1)
            {
                retorno = StringToByteArray(assinaturaHex);

                string pathNew = GetPathOutput() + "\\" + item.PAS_REGISTRO + "\\" + item.PAS_REGISTRO + item.DOC_DIVISAO + "\\" + item.PAS_CODIGOPASSAGEM + "\\" + item.DOC_NOMEARQUIVO;
                System.IO.FileStream _FileStream = new System.IO.FileStream(pathNew + "_N3_2.p7s", System.IO.FileMode.Create, System.IO.FileAccess.Write);

                _FileStream.Write(retorno, 0, retorno.Length);

                // close file stream
                _FileStream.Close();

                ACSDataBase.UpdateDocumentoAssinadoN2((decimal)ACSGlobal.UsuarioLogado.USR_IDUSUARIO, (decimal)item.DOC_IDDOCUMENTO, getInfoCertificado(idCertificado, "2"));

                return(true);
            }
            else
            {
                var error = ErrorCertificado.ListaErroCertificado().Where(c => c.IdErro == statusAssinatura.ToString().Replace("-", "")).FirstOrDefault().DescricaoErro;
                if (error == ".LLLLLLLLLLLLLLLLÇMNK1")
                {
                    error = "Ocorreu um erro na validação do certificado digital!";
                }

                ACSLog.InsertLog(MessageBoxIcon.Error, "Não foi possível assinar o documento. Motivo: " + statusAssinatura);
                throw new ExceptionCustom("Não foi possível assinar o documento. Motivo: " + error);
                return(false);
            }
        }
Ejemplo n.º 2
0
        public static byte[] assinar(Stream fileToSign, string sCertificado)
        {
            byte[] retorno = null;

            try
            {
                BRYSIGNERCOMLib.IAssinador assinador = new BRYSIGNERCOMLib.Assinador();
                String dataToSign = BitConverter.ToString(lerArquivo(fileToSign)).Replace("-", string.Empty);

                String idCertificado = sCertificado;
                assinador.setFormatoDadosMemoria(FORMATO_ARQUIVO_HEXADECIMAL);

                String assinaturaHex    = "";
                int    statusAssinatura = -1;


                statusAssinatura = assinador.assineMemDetached(dataToSign, "Orion Digital - 2016 - ACS Capture", idCertificado, ref assinaturaHex);

                if (statusAssinatura != 1)
                {
                    var error = ErrorCertificado.ListaErroCertificado().Where(c => c.IdErro == statusAssinatura.ToString().Replace("-", "")).FirstOrDefault().DescricaoErro;
                    if (error.Contains("ÇMNK1"))
                    {
                        error = "Ocorreu um erro na validação do certificado digital (" + statusAssinatura + ")";
                    }
                    else
                    {
                        error = error + " (" + statusAssinatura + ")";
                    }

                    ACSLog.InsertLog(MessageBoxIcon.Error, "Não foi possível assinar o documento. Motivo: " + statusAssinatura);
                    throw new ExceptionCustom("Não foi possível assinar o documento. Motivo: " + error);
                }
                retorno = StringToByteArray(assinaturaHex);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(retorno);
        }