Validar Assinatura Digital NFe do lado do Servidor

Olá, pessoal.

Eu estou aqui tentando fazer o caminho inverso da maioria de vocês. Enquanto todo mundo tá tentando enviar notas fiscas, cancelar, consultar, etc, etc… Eu estou aqui tentando receber (lá ele) estas notas fiscais e processá-las em background. Acontece que eu não faço a mínima idéia de como validar a assinatura digital dos lotes de RPS e das notas fiscais.

Estou usando Spring e JAXB. Alguém pode me ajudar?

Obrigado.

sfohart,

Dá uma olhada neste link :
http://download.oracle.com/javase/tutorial/security/apisign/index.html

[quote=luiz_renato]sfohart,

Dá uma olhada neste link :
http://download.oracle.com/javase/tutorial/security/apisign/index.html
[/quote]

Eu estava tentando validar a assinatura digital contida em um lote RPS da seguinte forma:

public void validarAssinaturaDigital(EnviarLoteRpsEnvio raiz, SignatureType assinatura) {
		/**
		 * Transformando os objetos de JAXB para W3C DOM
		 */
		try {
			final JAXBContext context = JAXBContext.newInstance("br.com.webservicenfse.nfse.ws.bind");
			final DocumentBuilderFactory builder = DocumentBuilderFactory.newInstance();
			final DocumentBuilder docBuilder = builder.newDocumentBuilder();
			final Document document = docBuilder.newDocument();
			final Binder<Node> binder = context.createBinder();

			binder.marshal(raiz, document);

			Node signatureNode = binder.getXMLNode(assinatura);

			XMLSignatureFactory xmlSignatureFactory = XMLSignatureFactory.getInstance("DOM");

			DOMValidateContext valContext = new DOMValidateContext(new X509KeySelector(), signatureNode);
			valContext.setProperty("javax.xml.crypto.dsig.cacheReference",Boolean.TRUE);

			XMLSignature xmlSignature = xmlSignatureFactory.unmarshalXMLSignature(valContext);

			boolean coreValidity = xmlSignature.validate(valContext);

			if (coreValidity == false) {
				System.err.println("Signature failed core validation");
				boolean sv = xmlSignature.getSignatureValue().validate(valContext);
				System.out.println("signature validation status: " + sv);
				if (sv == false) {
					// Check the validation status of each Reference.
					Iterator i = xmlSignature.getSignedInfo().getReferences().iterator();
					for (int j = 0; i.hasNext(); j++) {
						Reference reference = ((Reference) i.next());
						boolean refValid = reference.validate(valContext);
						System.out.println("ref[" + j + "] validity status: " + refValid);
					}
				}
			} else {
				System.out.println("Signature passed core validation");
			}

		} catch (JAXBException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (MarshalException e) {
			e.printStackTrace();
		} catch (XMLSignatureException e) {
			e.printStackTrace();
		}
}

Algumas vezes ele imprimia no console que a assinatura digital não era válida (compreensivel), mas em outras ocasiões, ele não conseguia resolver o id correspondente ao elemento atribuído àquela assinatura.

O xml que representa o lote de rps em questão (apenas para teste) é o seguinte:

<?xml version="1.0" encoding="UTF-8"?>
<EnviarLoteRpsEnvio xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd">
	<LoteRps Id="lote" versao="1.00">
		<NumeroLote>1</NumeroLote>
		<Cnpj>99999999000191</Cnpj>
		<InscricaoMunicipal>1733160024</InscricaoMunicipal>
		<QuantidadeRps>2</QuantidadeRps>
		<ListaRps>
			<Rps>
				<InfRps Id="rps:1ABCDZ">
					<IdentificacaoRps>
						<Numero>1</Numero>
						<Serie>ABCDZ</Serie>
						<Tipo>1</Tipo>
					</IdentificacaoRps>
					<DataEmissao>2009-06-16T21:00:00</DataEmissao>
					<NaturezaOperacao>1</NaturezaOperacao>
					<RegimeEspecialTributacao>6</RegimeEspecialTributacao>
					<OptanteSimplesNacional>1</OptanteSimplesNacional>
					<IncentivadorCultural>2</IncentivadorCultural>
					<Status>1</Status>
					<Servico>
						<Valores>
							<ValorServicos>1000.00</ValorServicos>
							<ValorDeducoes>10.00</ValorDeducoes>
							<ValorPis>10.00</ValorPis>
							<ValorCofins>10.00</ValorCofins>
							<ValorInss>10.00</ValorInss>
							<ValorIr>10.00</ValorIr>
							<ValorCsll>10.00</ValorCsll>
							<IssRetido>1</IssRetido>
							<ValorIss>10.00</ValorIss>
							<OutrasRetencoes>10.00</OutrasRetencoes>
							<Aliquota>5</Aliquota>
							<DescontoIncondicionado>10.00</DescontoIncondicionado>
							<DescontoCondicionado>10.00</DescontoCondicionado>
						</Valores>
						<ItemListaServico>11.01</ItemListaServico>
						<CodigoTributacaoMunicipio>522310000
						</CodigoTributacaoMunicipio>
						<Discriminacao>Teste.</Discriminacao>
						<CodigoMunicipio>3106200</CodigoMunicipio>
					</Servico>
					<Prestador>
						<Cnpj>99999999000191</Cnpj>
						<InscricaoMunicipal>1733160024</InscricaoMunicipal>
					</Prestador>
					<Tomador>
						<IdentificacaoTomador>
							<CpfCnpj>
								<Cnpj>99999999000191</Cnpj>
							</CpfCnpj>
							<InscricaoMunicipal>1733160032</InscricaoMunicipal>
						</IdentificacaoTomador>
						<RazaoSocial>INSCRICAO DE TESTE SIATU - D'AGUA -PAULINO'S
						</RazaoSocial>
						<Endereco>
							<Endereco>DA BAHIA</Endereco>
							<Numero>200</Numero>
							<Complemento>ANDAR 14</Complemento>
							<Bairro>CENTRO</Bairro>
							<CodigoMunicipio>3106200</CodigoMunicipio>
							<Uf>MG</Uf>
							<Cep>30160010</Cep>
						</Endereco>
					</Tomador>
					<IntermediarioServico>
						<RazaoSocial>INSCRICAO DE TESTE SIATU - D'AGUA -PAULINO'S
						</RazaoSocial>
						<CpfCnpj>
							<Cnpj>99999999000191</Cnpj>
						</CpfCnpj>
						<InscricaoMunicipal>8041700010</InscricaoMunicipal>
					</IntermediarioServico>
					<ConstrucaoCivil>
						<CodigoObra>1234</CodigoObra>
						<Art>1234</Art>
					</ConstrucaoCivil>
				</InfRps>
				<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="Ass_rps:1ABCDZ">
					<SignedInfo>
						<CanonicalizationMethod
							Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></CanonicalizationMethod>
						<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod>
						<Reference URI="#rps:1ABCDZ">
							<Transforms>
								<Transform
									Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
							</Transforms>
							<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
							<DigestValue>mMyQLAm4psxx52kaD8Jlta3ouPM=
							</DigestValue>
						</Reference>
					</SignedInfo>
					<SignatureValue>
						qBKfaNz6RbsYUxCOrjGZ9zrdgiGL7QSBxjlhYRlKDNlDERlDWvM8gi28yus8FoUb0v2CTKKIBz0t
						zfqxgk60rke4YCMkTzdWfpm7ofMIhYC9VHqbWdInC20znOKygJy5hyIx6JBoyXbejnw/0KF+2E1P
						1ZehqXJWZqY+KPaIGAY=
</SignatureValue>
					<KeyInfo>
						<X509Data>
							<X509Certificate>
								MIIE7DCCA9SgAwIBAgIQZMlLC9ZEsHWsnvJNdMI2yzANBgkqhkiG9w0BAQUFADBqMQswCQYDVQQG
								EwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEsMCoGA1UECxMjU2VjcmV0YXJpYSBkYSBSZWNlaXRh
								IEZlZGVyYWwgLSBTUkYxGDAWBgNVBAMTD0FDIFBST0RFTUdFIFNSRjAeFw0wNzEwMzEwMDAwMDBa
								Fw0xMDEwMzAyMzU5NTlaMIGQMQswCQYDVQQGEwJCUjETMBEGA1UEChQKSUNQLUJyYXNpbDEqMCgG
								A1UECxQhU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwtU1JGMRIwEAYDVQQLFAlTUkYgZS1D
								UEYxLDAqBgNVBAMTI0VER0FSIERPIENBUk1PIEZFUlJFSVJBOjQzMjYwMTUyNjg3MIGfMA0GCSqG
								SIb3DQEBAQUAA4GNADCBiQKBgQC6M+9XT5KLQN3IH8mAr+S6vxiochY/EwF8EhtNoxPTYl+zr0Dh
								+eZsRG31bN410nr2OrwncrRorMK8Ngq+j3FnNF0nIMigaaa5NAEfIk3Yy4kuqrTUZBpqUJvCqc3m
								kF3C3XD0MTmtbVTWCvYIk+qn3t5ShHyMnQcuah5Q0ItSbQIDAQABo4IB6TCCAeUwgZUGA1UdEQSB
								jTCBiqA9BgVgTAEDAaA0BDIyMTAzMTk2NDQzMjYwMTUyNjg3MDAwMDAwMDAwMDAwMDAwMDBNLTI4
								ODQwODVTU1BNR6AXBgVgTAEDBqAOBAwwMDAwMDAwMDAwMDCgHgYFYEwBAwWgFQQTMDAwMDAwMDAw
								MDAwMDAwMDAwMIEQZWRnYXJAcGJoLmdvdi5icjAJBgNVHRMEAjAAMF8GA1UdHwRYMFYwVKBSoFCG
								Tmh0dHA6Ly9pY3AtYnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDUFJP
								REVNR0VTUkYvTGF0ZXN0Q1JMLmNybDAfBgNVHSMEGDAWgBTdO9vtjZcRRUMBQ020Ev0O7niacDAO
								BgNVHQ8BAf8EBAMCBeAwVQYDVR0gBE4wTDBKBgZgTAECAxQwQDA+BggrBgEFBQcCARYyaHR0cDov
								L2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9kcGMwHQYDVR0lBBYwFAYI
								KwYBBQUHAwQGCCsGAQUFBwMCMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEFBQcwAYYcaHR0cDovL29j
								c3AuY2VydGlzaWduLmNvbS5icjANBgkqhkiG9w0BAQUFAAOCAQEAYFcjZj4lGVEREHBaHtcRletW
								S6/mvpkxmodwj3ele5yXsxuqSZd7ebHbKewXx7gkyaWFkFAxFanQhls2tYKjg6haqt2b0AO1Fsit
								VIHkMcxRwkU9G+1ec8yfdxymra2VdXazkxuvqKABgxkqKnaFdHjje7cjWDgwparymH64mTlHkSQz
								59GutJW0xfwBHcMGx0/9/iIug6pfMQivWf0NMVpFNzxO5ZNPEuOeBhVDxQr4+KB+4B9xDai/3J6f
								42UNbSy+z3xuB0K8/7V7BsFUYOYFSNnBrXhvbvXtZOtteX65V0r1+RJJX5OK+PAPhZ57T1LEmHMg
								gdo5kli3Nr1KFQ==
</X509Certificate>
						</X509Data>
					</KeyInfo>
				</Signature>
			</Rps>
			<Rps>
				<InfRps Id="rps:2ABCDZ">
					<IdentificacaoRps>
						<Numero>2</Numero>
						<Serie>ABCDZ</Serie>
						<Tipo>1</Tipo>
					</IdentificacaoRps>
					<DataEmissao>2009-06-16T21:00:00</DataEmissao>
					<NaturezaOperacao>1</NaturezaOperacao>
					<RegimeEspecialTributacao>6</RegimeEspecialTributacao>
					<OptanteSimplesNacional>1</OptanteSimplesNacional>
					<IncentivadorCultural>2</IncentivadorCultural>
					<Status>1</Status>
					<Servico>
						<Valores>
							<ValorServicos>1000.00</ValorServicos>
							<ValorDeducoes>10.00</ValorDeducoes>
							<ValorPis>10.00</ValorPis>
							<ValorCofins>10.00</ValorCofins>
							<ValorInss>10.00</ValorInss>
							<ValorIr>10.00</ValorIr>
							<ValorCsll>10.00</ValorCsll>
							<IssRetido>1</IssRetido>
							<ValorIss>10.00</ValorIss>
							<OutrasRetencoes>10.00</OutrasRetencoes>
							<Aliquota>5</Aliquota>
							<DescontoIncondicionado>10.00</DescontoIncondicionado>
							<DescontoCondicionado>10.00</DescontoCondicionado>
						</Valores>
						<ItemListaServico>11.01</ItemListaServico>
						<CodigoTributacaoMunicipio>522310000
						</CodigoTributacaoMunicipio>
						<Discriminacao>Teste.</Discriminacao>
						<CodigoMunicipio>3106200</CodigoMunicipio>
					</Servico>
					<Prestador>
						<Cnpj>99999999000191</Cnpj>
						<InscricaoMunicipal>1733160024</InscricaoMunicipal>
					</Prestador>
					<Tomador>
						<IdentificacaoTomador>
							<CpfCnpj>
								<Cnpj>99999999000191</Cnpj>
							</CpfCnpj>
							<InscricaoMunicipal>1733160032</InscricaoMunicipal>
						</IdentificacaoTomador>
						<RazaoSocial>INSCRICAO DE TESTE SIATU - D'AGUA -PAULINO'S
						</RazaoSocial>
						<Endereco>
							<Endereco>DA BAHIA</Endereco>
							<Numero>200</Numero>
							<Complemento>ANDAR 14</Complemento>
							<Bairro>CENTRO</Bairro>
							<CodigoMunicipio>3106200</CodigoMunicipio>
							<Uf>MG</Uf>
							<Cep>30160010</Cep>
						</Endereco>
					</Tomador>
					<IntermediarioServico>
						<RazaoSocial>INSCRICAO DE TESTE SIATU - D'AGUA -PAULINO'S
						</RazaoSocial>
						<CpfCnpj>
							<Cnpj>99999999000191</Cnpj>
						</CpfCnpj>
						<InscricaoMunicipal>8041700010</InscricaoMunicipal>
					</IntermediarioServico>
					<ConstrucaoCivil>
						<CodigoObra>1234</CodigoObra>
						<Art>1234</Art>
					</ConstrucaoCivil>
				</InfRps>
				<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="Ass_rps:1ABCDZ">
					<SignedInfo>
						<CanonicalizationMethod
							Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></CanonicalizationMethod>
						<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod>
						<Reference URI="#rps:2ABCDZ">
							<Transforms>
								<Transform
									Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
							</Transforms>
							<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
							<DigestValue>pcpHZUpTtAfjwEVpnBW5qzDTHtc=
							</DigestValue>
						</Reference>
					</SignedInfo>
					<SignatureValue>
						lunW4H0coMPXsBK/+eMkivq6IaEbtkHNRjNQrcZ/pB1Q+SzQK4/MNU+Ohbd3qk+AZKEF1L2Hr5tM
						xYqzbZpSxiSZx4+Iu5WK6E2g4o60UYPPhmrEliaY6m1KC1w+7S1a67brTgikXHQQ7QKTR32WxMyO
						TFfLYofoJRfALGFg91s=
</SignatureValue>
					<KeyInfo>
						<X509Data>
							<X509Certificate>
								MIIE7DCCA9SgAwIBAgIQZMlLC9ZEsHWsnvJNdMI2yzANBgkqhkiG9w0BAQUFADBqMQswCQYDVQQG
								EwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEsMCoGA1UECxMjU2VjcmV0YXJpYSBkYSBSZWNlaXRh
								IEZlZGVyYWwgLSBTUkYxGDAWBgNVBAMTD0FDIFBST0RFTUdFIFNSRjAeFw0wNzEwMzEwMDAwMDBa
								Fw0xMDEwMzAyMzU5NTlaMIGQMQswCQYDVQQGEwJCUjETMBEGA1UEChQKSUNQLUJyYXNpbDEqMCgG
								A1UECxQhU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwtU1JGMRIwEAYDVQQLFAlTUkYgZS1D
								UEYxLDAqBgNVBAMTI0VER0FSIERPIENBUk1PIEZFUlJFSVJBOjQzMjYwMTUyNjg3MIGfMA0GCSqG
								SIb3DQEBAQUAA4GNADCBiQKBgQC6M+9XT5KLQN3IH8mAr+S6vxiochY/EwF8EhtNoxPTYl+zr0Dh
								+eZsRG31bN410nr2OrwncrRorMK8Ngq+j3FnNF0nIMigaaa5NAEfIk3Yy4kuqrTUZBpqUJvCqc3m
								kF3C3XD0MTmtbVTWCvYIk+qn3t5ShHyMnQcuah5Q0ItSbQIDAQABo4IB6TCCAeUwgZUGA1UdEQSB
								jTCBiqA9BgVgTAEDAaA0BDIyMTAzMTk2NDQzMjYwMTUyNjg3MDAwMDAwMDAwMDAwMDAwMDBNLTI4
								ODQwODVTU1BNR6AXBgVgTAEDBqAOBAwwMDAwMDAwMDAwMDCgHgYFYEwBAwWgFQQTMDAwMDAwMDAw
								MDAwMDAwMDAwMIEQZWRnYXJAcGJoLmdvdi5icjAJBgNVHRMEAjAAMF8GA1UdHwRYMFYwVKBSoFCG
								Tmh0dHA6Ly9pY3AtYnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDUFJP
								REVNR0VTUkYvTGF0ZXN0Q1JMLmNybDAfBgNVHSMEGDAWgBTdO9vtjZcRRUMBQ020Ev0O7niacDAO
								BgNVHQ8BAf8EBAMCBeAwVQYDVR0gBE4wTDBKBgZgTAECAxQwQDA+BggrBgEFBQcCARYyaHR0cDov
								L2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9kcGMwHQYDVR0lBBYwFAYI
								KwYBBQUHAwQGCCsGAQUFBwMCMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEFBQcwAYYcaHR0cDovL29j
								c3AuY2VydGlzaWduLmNvbS5icjANBgkqhkiG9w0BAQUFAAOCAQEAYFcjZj4lGVEREHBaHtcRletW
								S6/mvpkxmodwj3ele5yXsxuqSZd7ebHbKewXx7gkyaWFkFAxFanQhls2tYKjg6haqt2b0AO1Fsit
								VIHkMcxRwkU9G+1ec8yfdxymra2VdXazkxuvqKABgxkqKnaFdHjje7cjWDgwparymH64mTlHkSQz
								59GutJW0xfwBHcMGx0/9/iIug6pfMQivWf0NMVpFNzxO5ZNPEuOeBhVDxQr4+KB+4B9xDai/3J6f
								42UNbSy+z3xuB0K8/7V7BsFUYOYFSNnBrXhvbvXtZOtteX65V0r1+RJJX5OK+PAPhZ57T1LEmHMg
								gdo5kli3Nr1KFQ==
</X509Certificate>
						</X509Data>
					</KeyInfo>
				</Signature>
			</Rps>
		</ListaRps>
	</LoteRps>
	<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="Ass_lote">
		<SignedInfo>
			<CanonicalizationMethod
				Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></CanonicalizationMethod>
			<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod>
			<Reference URI="#lote">
				<Transforms>
					<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform>
				</Transforms>
				<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod>
				<DigestValue>n42EhtzDSnZ071g+44ZMBCc74UQ=
				</DigestValue>
			</Reference>
		</SignedInfo>
		<SignatureValue>
			pQyeXnJ2S9KyUJ1BE3k3PZuDpk7WkD2nMPLoELSLJeNBe9TwmLhImsIUS4inAUreuTsjfrs2BUmC
			hN6jPA0/1cSR0GbblLsHFN+IwPE2dnPN/u0vIOmsan4MuW1OnlH6KexmDHRj/uFwjoXfSJ0JJE1u
			9bYdbsp5LGlFuc//CCQ=
</SignatureValue>
		<KeyInfo>
			<X509Data>
				<X509Certificate>
					MIIE7DCCA9SgAwIBAgIQZMlLC9ZEsHWsnvJNdMI2yzANBgkqhkiG9w0BAQUFADBqMQswCQYDVQQG
					EwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEsMCoGA1UECxMjU2VjcmV0YXJpYSBkYSBSZWNlaXRh
					IEZlZGVyYWwgLSBTUkYxGDAWBgNVBAMTD0FDIFBST0RFTUdFIFNSRjAeFw0wNzEwMzEwMDAwMDBa
					Fw0xMDEwMzAyMzU5NTlaMIGQMQswCQYDVQQGEwJCUjETMBEGA1UEChQKSUNQLUJyYXNpbDEqMCgG
					A1UECxQhU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwtU1JGMRIwEAYDVQQLFAlTUkYgZS1D
					UEYxLDAqBgNVBAMTI0VER0FSIERPIENBUk1PIEZFUlJFSVJBOjQzMjYwMTUyNjg3MIGfMA0GCSqG
					SIb3DQEBAQUAA4GNADCBiQKBgQC6M+9XT5KLQN3IH8mAr+S6vxiochY/EwF8EhtNoxPTYl+zr0Dh
					+eZsRG31bN410nr2OrwncrRorMK8Ngq+j3FnNF0nIMigaaa5NAEfIk3Yy4kuqrTUZBpqUJvCqc3m
					kF3C3XD0MTmtbVTWCvYIk+qn3t5ShHyMnQcuah5Q0ItSbQIDAQABo4IB6TCCAeUwgZUGA1UdEQSB
					jTCBiqA9BgVgTAEDAaA0BDIyMTAzMTk2NDQzMjYwMTUyNjg3MDAwMDAwMDAwMDAwMDAwMDBNLTI4
					ODQwODVTU1BNR6AXBgVgTAEDBqAOBAwwMDAwMDAwMDAwMDCgHgYFYEwBAwWgFQQTMDAwMDAwMDAw
					MDAwMDAwMDAwMIEQZWRnYXJAcGJoLmdvdi5icjAJBgNVHRMEAjAAMF8GA1UdHwRYMFYwVKBSoFCG
					Tmh0dHA6Ly9pY3AtYnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDUFJP
					REVNR0VTUkYvTGF0ZXN0Q1JMLmNybDAfBgNVHSMEGDAWgBTdO9vtjZcRRUMBQ020Ev0O7niacDAO
					BgNVHQ8BAf8EBAMCBeAwVQYDVR0gBE4wTDBKBgZgTAECAxQwQDA+BggrBgEFBQcCARYyaHR0cDov
					L2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9kcGMwHQYDVR0lBBYwFAYI
					KwYBBQUHAwQGCCsGAQUFBwMCMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEFBQcwAYYcaHR0cDovL29j
					c3AuY2VydGlzaWduLmNvbS5icjANBgkqhkiG9w0BAQUFAAOCAQEAYFcjZj4lGVEREHBaHtcRletW
					S6/mvpkxmodwj3ele5yXsxuqSZd7ebHbKewXx7gkyaWFkFAxFanQhls2tYKjg6haqt2b0AO1Fsit
					VIHkMcxRwkU9G+1ec8yfdxymra2VdXazkxuvqKABgxkqKnaFdHjje7cjWDgwparymH64mTlHkSQz
					59GutJW0xfwBHcMGx0/9/iIug6pfMQivWf0NMVpFNzxO5ZNPEuOeBhVDxQr4+KB+4B9xDai/3J6f
					42UNbSy+z3xuB0K8/7V7BsFUYOYFSNnBrXhvbvXtZOtteX65V0r1+RJJX5OK+PAPhZ57T1LEmHMg
					gdo5kli3Nr1KFQ==
</X509Certificate>
			</X509Data>
		</KeyInfo>
	</Signature>
</EnviarLoteRpsEnvio>
Caused by: com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID lote

É essa a minha atual dificuldade

Troquei isso

final JAXBContext context = JAXBContext.newInstance("br.com.webservicenfse.nfse.ws.bind"); 

Por isso

final JAXBContext context = JAXBContext.newInstance(EnviarLoteRpsEnvio.class); 

Adicionei algumas propriedades ao marshaller

//importante não formatar o XML de saída para não invalidar a assinatura digital
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);

E aparentemente esses erros acima sumiram. Mas eu ainda estou com dúvidas…

Digamos que eu tenha um arquivo xml de lotes rps’s com as tags abaixo:

<?xml version="1.0" encoding="utf-8"?>
<EnviarLoteRpsEnvio xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd">
...
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    </Signature>
...
</EnviarLoteRpsEnvio>

Faço o unmarshalling do lado do cliente, envio os dados para o servidor, faço o marshalling do lado do servidor e tento validar os dados. Acontece que a saída do marshalling no servidor é como abaixo:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EnviarLoteRpsEnvio xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd"  xmlns:ns2="http://www.w3.org/2000/09/xmldsig#">
...
    <ns2:Signature>
    </ns2:Signature>
...
</EnviarLoteRpsEnvio>

E eu acredito que essas diferenças estejam invalidando o conteudo da assinatura digital… Alguém me ajuda, por favor?

Olá,

Você conseguiu validar o lote de RPS?

No updates? :?