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); } }
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); }