Strona 2 z 2

Re: Błąd podczas logowanie - ZalogujPodpisem

: pn lis 05, 2018 11:34 am
autor: MichalC
W końcu udało się rozwiązać problemy.

Zebrałem uwagi dla .NETowców

W skrócie:
1. Przede wszystkim EZLA wymaga prefiksu "ds" w Signature i elementach podrzędnych!!! Straszne ale prawdziwe. Nigdy bym na to nie wpadł. Ktoś najwyraźniej łamie standard zapominając o domyślnych przestrzeniach nazw...
2. Signature i SignedInfo muszą mieć wypełniony atrybut "Id"
3. Trzeba użyć "XmlDsigExcC14NTransformUrl" czyli "http://www.w3.org/2001/10/xml-exc-c14n#" zamiast XmlDsigC14NTransformUrl aby uniknąć błędu "105. a) KIR: Negatively verified: Invalid hash in the Reference object in XML signature"
4. Aby umożliwić poprawną obsługę XAdES trzeba w SignedXml nadpisać metodę GetIdElement i poprawić wyszukiwanie elementu po Id

Ad 1.
Uzyskanie "ds" przy pomocy SignedXml w .NET jest niewątpliwym wyzwaniem. Na szczęście wykonywalnym. Szkoda tylko, że trzeba się tyle napracować, bo komuś się nie chciało trzymać standardu.

Podziękowania dla p. Renaty Wiśniewskiej za cierpliwość.

Re: Błąd podczas logowanie - ZalogujPodpisem

: wt lis 06, 2018 8:25 pm
autor: Krzysztof Kocunik
Witam.

Też mam błąd 105, ale tylko przy logowaniu certyfikatem ZUS-owskim.
Na jakiej podstawie jest generowany atrybut "Id" w Signature i SignedInfo?

Pozdrawiam

Re: Błąd podczas logowanie - ZalogujPodpisem

: śr lis 07, 2018 8:41 am
autor: MichalC
Krzysztof Kocunik pisze:
wt lis 06, 2018 8:25 pm
Na jakiej podstawie jest generowany atrybut "Id" w Signature i SignedInfo?
Na podstawie własnego pomysłu na unikalny identyfikator.
Przykładowo może to być oparte na czasie:

Kod: Zaznacz cały

signedXml.Signature.Id = "Signature_" + DateTime.Now.Ticks.ToString();
signedXml.SignedInfo.Id = "SignedInfo_" + DateTime.Now.Ticks.ToString();

Re: Błąd podczas logowanie - ZalogujPodpisem

: wt lis 13, 2018 11:52 am
autor: Krzysztof Kocunik
Dziękuję za odpowiedź.
Pozdrawiam.

Re: Błąd podczas logowanie - ZalogujPodpisem

: śr lis 21, 2018 8:52 am
autor: Krzysztof Kocunik
Witam. Czy ktoś z forumowiczów integrował podpis elektroniczny w PHP?

Re: Błąd podczas logowanie - ZalogujPodpisem

: śr lis 21, 2018 11:28 am
autor: lukasz.golabek
Moje rozwiązanie dla .NETa, może komuś się przyda.
wymaga użycia pakietu: FirmaXadesNet

Kod: Zaznacz cały

private string SignOswiadczenie(X509Certificate2 cert, string oswiadczenie)
{
	var parameters = new SignatureParameters
	{
		SignaturePackaging = SignaturePackaging.ENVELOPED,
		DigestMethod = DigestMethod.SHA1,
		SignatureMethod = SignatureMethod.RSAwithSHA1,
		SigningDate = DateTime.UtcNow,
	};

	Stream xmlStream = oswiadczenie.ToStream(); //helper
	var SignedXmlStream = new MemoryStream();

	var xadesService = new XadesService();

	using (parameters.Signer = new Signer(cert))
	{
		var docFirmado = xadesService.Sign(xmlStream, parameters);
		docFirmado.Save(SignedXmlStream);
		SignedXmlStream.Flush();
		SignedXmlStream.Position = 0;

		var res = Encoding.UTF8.GetString(SignedXmlStream.ToArray());
		res = res.Remove(0, res.IndexOf("<Oswiadczenie>"));

		return res;
	}
}

Re: Błąd podczas logowanie - ZalogujPodpisem

: ndz lis 25, 2018 10:37 pm
autor: september
Witam,
Dopiero zaczynam zabawę w integrację, więc proszę o wyrozumiałość. Próbuje właśnie wykonać pierwsze logowanie przy pomocy certyfikatu ZUS w Javie przy użyciu biblioteki Xades4J i niestety dostaje błąd 105, a) KIR: Niepoprawne dane. Błąd podczas weryfikacji podpisu.
Szczerze pisząc nie wiem od czego zacząć. Mając na uwadze użyte technologie, czy ktoś mógłby udzielić mi rady/wskazówki?

Re: Błąd podczas logowanie - ZalogujPodpisem

: pn gru 03, 2018 9:29 am
autor: orzeh
@september w naszej aplikacji używamy tych samych technologii. Odezwij się na priv jeśli nadal masz problem.

Re: Błąd podczas logowanie - ZalogujPodpisem

: pn sty 07, 2019 2:59 pm
autor: kazlat
Czy jest możliwość wstawienia oświadczenia, które zostało podpisane SHA-2. Komponenty, które to aktualnie posiadamy nie wspierają już SHA1, tylko od SHA2 w górę.

Czy wpis odnośnie Urzędu wydającego cert jest wymagany :
<xades:IssuerSerial><ds:X509IssuerName>C=PL, O=ZUS, CN=eZLAZUSIssuingCA</ds:X509IssuerName><ds:X509SerialNumber>780528162774915746042305482786243075648134512</ds:X509SerialNumber></xades:IssuerSerial>