public string abreAnexo(string nomeArq, int id) { try { string sql = "select loginusuario, tipo from mensagem where id = " + id + ";"; DataTable data = retornaDataTableSql(sql); string login = data.Rows[0][data.Columns[0]].ToString(); string tipo = data.Rows[0][data.Columns[1]].ToString(); string caminho = CAMINHO_SERVER + "\\" + login + "\\" + tipo + "\\" + id + ".msg"; string xml = manipulaArquivo.leArquivoTexto(caminho); mensagem msg = serial.Deserializar(xml, typeof(mensagem)) as mensagem; anexo anexoFinal = new anexo(); foreach (anexo a in msg.anexos) { if (a.getNome().Equals(nomeArq)) { anexoFinal = a; } } return serial.serializarObjeto(anexoFinal); } catch (excecao.excecao except) { throw except; } }
/* ///<summary> /// /// Método que retorna a assinatura da mensagem /// ///</summary> private static String assinaMensagem(string caminho, string mensagem) { return assimetrica.assinaTexto(caminho, mensagem); } */ ///<summary> /// /// Método que retorna o conteudo do anexo da mensagem cifrado ou não /// ///</summary> private static anexo retornaConteudoAnexo(string s, bool cripto, string destinatario) { byte[] conteudoByte = manipulaArquivo.arquivoLeOriginal(s); string conteudo = serial.serializarObjeto(conteudoByte); string nome = manipulaString.retornaNomeArquivo(s).Trim(); string nomeCodificado; string chave = ""; anexo next; string caminhoChave = CAMINHO_TEMP + destinatario + EXTENSAO; nome = uniformizaAnexos(nome); if (cripto) { nomeCodificado = manipulaString.mudaExtensaoArquivo(nome); string conteudocifrado = simetrica.cifraAnexos(conteudo); string conteudoHexa = simetrica.convertToHexa(conteudocifrado); chave = simetrica.getChave(); string chaveDestinatario = WService.retornaChavePublica(destinatario); manipulaArquivo.criaArquivoTexto(caminhoChave, chaveDestinatario); string conteudoChaveCifrada = assimetrica.cifraAssimetrica(caminhoChave, chave); string chaveHexa = simetrica.convertToHexa(conteudoChaveCifrada); next = new anexo(nomeCodificado, cripto, chaveHexa, conteudoHexa); } else { string conteudoHexa = simetrica.convertToHexa(conteudo); next = new anexo(nome, cripto, chave, conteudoHexa); } return next; }