BouncyCastle - co to jest? Definicja pojęcia KSeF
Java używana do podpisywania dokumentów XAdES w KSeF API 2.0. Biblioteka wymaga odpowiedniej konfiguracji dla certyfikatów RSA i EC oraz algorytmów podpisu.Co to jest BouncyCastle?
BouncyCastle to biblioteka kryptograficzna dla Java (i innych języków) oferująca implementację algorytmów kryptograficznych, protokołów bezpieczeństwa i standardów podpisów elektronicznych. BouncyCastle jest open-source i jest szeroko używana w aplikacjach Java wymagających funkcji kryptograficznych.
W kontekście Krajowego Systemu e-Faktur (KSeF), BouncyCastle jest często używana do podpisywania dokumentów XAdES w API 2.0. Biblioteka wymaga odpowiedniej konfiguracji dla certyfikatów RSA i EC oraz algorytmów podpisu zgodnych z wymaganiami KSeF.
BouncyCastle 1.76 i nowsze wersje wspierają certyfikaty EC, ale wymagają dodatkowej konfiguracji. Dla certyfikatów RSA biblioteka działa zazwyczaj bez problemów, ale dla EC może wymagać użycia właściwego providera (BCECProvider) i algorytmów.
BouncyCastle w KSeF API
BouncyCastle jest używana w KSeF API 2.0 do podpisywania dokumentów AuthTokenRequest w formacie XAdES. Wymagania konfiguracji: dla certyfikatów RSA - użyj standardowego providera BouncyCastle (BCProvider) z algorytmem RSA-SHA256, dla certyfikatów EC - użyj BCECProvider z algorytmem ECDSA-SHA256 i krzywą secp256r1, algorytm skrótu SHA-256, canonicalizacja XML (Exclusive Canonicalization lub Canonical XML 1.0). BouncyCastle 1.76 i nowsze wersje wspierają certyfikaty EC, ale wymagają dodatkowej konfiguracji.
Konfiguracja dla RSA
Dla certyfikatów RSA BouncyCastle działa zazwyczaj bez problemów. Konfiguracja: użyj standardowego providera BouncyCastle (BCProvider), algorytm podpisu RSA-SHA256 (http://www.w3.org/2001/04/xmldsig-more#rsa-sha256), certyfikat RSA musi mieć długość klucza 2048 bitów, algorytm skrótu SHA-256, canonicalizacja XML (Exclusive Canonicalization lub Canonical XML 1.0). Sprawdź dokumentację BouncyCastle dotyczącą podpisywania z certyfikatami RSA.
Konfiguracja dla EC
Dla certyfikatów EC BouncyCastle wymaga dodatkowej konfiguracji. Konfiguracja: użyj właściwego providera (BCECProvider dla EC), algorytm podpisu ECDSA z SHA-256, krzywa secp256r1 (NIST P-256), certyfikat EC musi używać krzywej secp256r1, algorytm skrótu SHA-256, canonicalizacja XML (Exclusive Canonicalization lub Canonical XML 1.0). Niektóre wersje BouncyCastle mogą wymagać dodatkowej konfiguracji. Sprawdź dokumentację BouncyCastle dotyczącą podpisywania z certyfikatami EC.
Typowe problemy i rozwiązania
Typowe problemy: błąd 'Nieprawidłowa treść podpisu' (9105) - sprawdź konfigurację algorytmów i canonicalizacji, problemy z certyfikatami EC - użyj właściwego providera (BCECProvider) i algorytmu, różnice między wersjami BouncyCastle - sprawdź dokumentację dla konkretnej wersji. Zaleca się użycie najnowszej stabilnej wersji BouncyCastle (1.76 lub nowsza) i przetestowanie w środowisku testowym KSeF.
FAQ
Jak skonfigurować BouncyCastle dla KSeF API?
Zainstaluj BouncyCastle (wersja 1.76 lub nowsza), skonfiguruj provider kryptograficzny (BCProvider dla RSA, BCECProvider dla EC), skonfiguruj algorytmy podpisu (RSA-SHA256 dla RSA, ECDSA-SHA256 dla EC), użyj właściwej canonicalizacji XML. Przetestuj podpis w środowisku testowym KSeF. Sprawdź dokumentację BouncyCastle dla szczegółów konfiguracji.
Dlaczego certyfikaty EC nie działają z BouncyCastle?
Certyfikaty EC wymagają dodatkowej konfiguracji w BouncyCastle. Upewnij się, że używasz właściwego providera (BCECProvider dla EC), algorytmu ECDSA z SHA-256 oraz krzywej secp256r1. Sprawdź dokumentację BouncyCastle dotyczącą podpisywania z certyfikatami EC. Niektóre wersje BouncyCastle mogą wymagać dodatkowej konfiguracji.
Jakie algorytmy są wymagane dla BouncyCastle?
Dla certyfikatów RSA użyj algorytmu RSA-SHA256 (http://www.w3.org/2001/04/xmldsig-more#rsa-sha256). Dla certyfikatów EC użyj algorytmu ECDSA z SHA-256. Algorytm skrótu musi być SHA-256. Canonicalizacja XML: Exclusive Canonicalization lub Canonical XML 1.0. Sprawdź dokumentację BouncyCastle dotyczącą algorytmów.
Która wersja BouncyCastle jest zalecana?
Zaleca się użycie najnowszej stabilnej wersji BouncyCastle (1.76 lub nowsza). Różne wersje mogą wymagać różnych konfiguracji, szczególnie dla certyfikatów EC. Sprawdź dokumentację BouncyCastle dla konkretnej wersji. Przetestuj konfigurację w środowisku testowym KSeF przed użyciem w produkcji.