Krajowy system e-Faktur

V2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 33
0

Wiem, że środowisko produkcyjne 2.0 ma być uruchomione 1 lutego. Ale czy żadne endpointy nie będą tam działać do tego czasu? Chciałem wygenerować tam certyfikat KSeF, ale wywołanie się nie udaje. Czyli mamy przed 1 lutego dać ludziom programy, i dopiero jak użytkownicy uruchomią je 1 lutego, to się wszyscy dowiemy co nie działa?

J2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Cześć.
Walczę z problem autoryzacji sesji przez token - już mi pomysłów brakuje co jest nie tak.
Próbowałem na różnych NIP'ach i tokenach, środowisko test i demo z tym samym efektem - błąd 450
Jest ktoś w stanie zweryfikować poprawność moich danych?

AuthToken KSeF ****************************************************************
--- INSPEKCJA TOKENA ---
Token autoryzacyjny KSeF: 9d9cf53010054fb99a7419da19eb55c8253f59d033c74c009633dcbf13f10670 Długość: 64

CHALLENGE ****************************************************************
URL Challenge: https://api-test.ksef.mf.gov.pl/v2/auth/challenge
Pobrano Challenge: 20251218-CR-1FDD656000-0217800D15-1C
Timestamp z KSeF: 2025-12-18T09:16:52.6947733+00:00
TimestampMS z KSeF: 1766049412694

PUBLIC KEY ****************************************************************
Klucze publiczne URL: https://api-test.ksef.mf.gov.pl/v2/security/public-key-certificates

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxsyeiYiWB2+KFxEpQGoN
Qa6W8Pc4kWGl8V+sBMdW3Fqh0lhKiqKfpH5RWLDmZ30EzkKJ5+IdaWYFoijhYxDB
IBhINVQKlBZvEVd6CfPJUJypa94eRO5cc6IPNI35aMhfKP/Kc4A/OiT2J4nyCz6B
V98xOXCAlyDPD73XM6O2ormL6gUb673zvjOIakf39tAPPVgWIDuX7GDZYGebN7LX
oGvjPo5YDqC2KN51ofLbO+n74iei5OaGN94Ap52vI7uzK2g/hQslOd0Avl2U1kwR
nnF0yzwbDzRrHqPCHUYxVp5nHdo+jHe1CNoa6gt0m6pn1StYcitSXKg2hTNjnes6
TQIDAQAB
-----END PUBLIC KEY-----

Szyfrowanie (OpenSSL OAEP Hash (SHA256) SHA-256 dla MGF1) ****************************************************************
PlainTextPayload: 9d9cf53010054fb99a7419da19eb55c8253f59d033c74c009633dcbf13f10670|1766049412694
Zaszyfrowano pomyślnie (Base64 len=344)
Base64 = LNLsIY1h/+zrGB7pxTQ9lssOoYbv5MrephBGTQpktwSJT5Uu1GnfmVtkrYzUrQ0jQ3xK47os0QCCpmrBPsk5CydJ1V1AB8J/pEAmJqXTKr3oXXAOru8s4rYmwXRXLvn1BPiEFJOWPxb/jEUziYBUYQ6wTEMHNd4/ELj6PTpZsyKBZ7TwU4kmpeHO+bh9Yl1M0bUVu3FfJQJc/2icWjbtgbWdvgoPWtSdfhZdDCqR/IKEfOzKH2exAHXX7j0DCO8LFWAys74fC8xIhg+EsMo++wo+5HDDvMbt5WmuhDRPEQiKRfK5sruj/qG1wipHuxmBbFvGfV7bJkv7FHpdXKUfJg==

Wysyłka Ksef-Token ****************************************************************
URL: https://api-test.ksef.mf.gov.pl/v2/auth/ksef-token
JsonContext = {"type":"Nip","value":"9999999999"}
JsonBody.AddPair('contextIdentifier', JsonContext);
JsonBody.AddPair('encryptedToken', Base64);

RespJson: {"referenceNumber":"20251218-AU-1FDD6FA000-3F118A2F47-FE",
"authenticationToken":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXAiOiJBdXRoZW50aWNhdGlvblRva2VuIiwiYXJuIjoiMjAyNTEyMTgtQVUtMUZERDZGQTAwMC0zRjExOEEyRjQ3LUZFIiwiZXhwIjoxNzY2MDUyMTEyLCJpYXQiOjE3NjYwNDk0MTIsImlzcyI6ImtzZWYtYXBpLXRlIiwiYXVkIjoia3NlZi1hcGktdGUifQ.LnLixotRirNDUOA2GZHswoNNI_TKxrMfn4-O2Bfb6FA","validUntil":"2025-12-18T10:01:52.873088+00:00"}}

Sesja Auth ****************************************************************
URL: https://api-test.ksef.mf.gov.pl/v2/auth/20251218-AU-1FDD6FA000-3F118A2F47-FE
Bearer Token: authenticationToken: eyJhbGc...
Bearer Token (len): 279
[Próba 1] HTTP: 200, Body: {"startDate":"2025-12-18T09:16:52.8500785+00:00",
"authenticationMethod":"Token",
"status":{"code":450,
"description":"Uwierzytelnianie zakończone niepowodzeniem z powodu błędnego tokenu",
"details":["Invalid token encoding."]}}

EK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Witam

Podzielę się z Wami dylematem :)
Mam aplikację do wystawiania faktur (tylko tworzenie faktur, bez części zakupowej) stworzoną w C++ Builder (obecnie wersja 11) + baza Firebird.

Prosiłbym o radę i może pomoc wstępną przed świętami :)

  1. Czy iść w kierunku autoryzacji i wysyłki faktur w C++Builder?
    Może odezwałaby się do mnie osoba, która już to zrobiła?
    Dla mnie osobiście byłoby to prostsze mieć wszystko w jednym.
  2. Czy raczej iść w kierunku C# i przykładów ze strony CIRFMF? Już wstępnie zrobiłem testową autoryzację z przykładu:
    https://github.com/CIRFMF/ksef-docs/blob/main/certyfikaty-KSeF.md
    Był tam gotowy przykład w consoli na TEST. Zadziałał.
    Próbowałem też ogarnąć wysyłkę faktur na podstawie tego:
    https://github.com/CIRFMF/ksef-client-csharp/blob/main/KSeF.Client.Tests.Core/E2E/OnlineSession/OnlineSessionE2ETests.cs
    Ale, ponieważ to pierwsze kroki moje w C# i nie ma tam gotowego program.cs, więc jeszcze się nie udało.
    Czy może ktoś ma taki program.cs, który byłby rozszerzeniem tego z autoryzacją i stworzeniem AccessTokena o właśnie wysyłkę faktury?

Za wszelkie rady i sugestie będę bardzo wdzięczny :)
I radosnych Świąt dla Was ...

DJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Działa wam wysyłanie wsadowe na demo? Od wczoraj na starych adresach api dostajemy HTTP 403: Forbidden przy próbie otwarcia sesji wsadowej.
EDIT: nie było pytania. Brak uprawnieńw KSeF do wystawiania faktur.

TT
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Witam,
Czy ktoś z Was autoryzację za pomocą certyfikatu osobistego na .net framework? Chodzi mi w szczególności o kwestię podpisu wygenerowanego pliku xml. Przekształciłem sobie kod z repo KSeF SignatureService ale problemem jest to że .net framework klasa SignedXml nie obsługuje ECDSA-SHA256.

Pozdrawiam

JK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 39
0

Z ciekawości - patrzył ktoś z Was na apkę mobilną do Ksef? Tak samo "funkcjonalna" jak webowa AP czy jeszcze gorzej? Ocenę ma zaskakująco wysoką - 2.3, co pozwala podejrzewać, że coś tam jednak działa, ale nie mam zamiaru instalować tego u siebie ;P

KX
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Cały dzień walczyłem dzisiaj z próbą utworzenia QR kodu II. Delphi, Chilkat lub cokolwiek innego, co dałoby radę.
Nie umiem podpisać zahashowanej części linku qr-test.ksef.mf.gov.pl/certificate/Nip/1111111111/1111111111/01F2.
Certyfikat Offline utworzyłem w portalu, klucz powstał automatycznie, w formacie ECDSA.
Gdy próbuję podpisać poprzez RSA, to wywala się na próbie użycia klucza prywatnego. klucz jest typu ECDSA, a nie RSA.
Próbowałem na różne sposoby z ECDSA, ale tam nie wychodzi mi nic, co przypominałoby treść QR II.
Kluczową linią szyfrowania wydaje się być:
sig := CkEcc__signBd(ecdsa, CKData, 'sha256', 'hex', CurPrivKey, prng);
Ale o co chodzi z R i S? Trzeba to skleić i dodać na początku?

A może prościej byłoby jednak tworzyć certyfikat przez API, jak RSA?

K5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Witam,
moim zadaniem jest cykliczne pobieranie dokumentów (cron) i wstawianie ich do systemu dla różnych firm. Na razie działam na tokenach (zarządzenie odgórne). Ludzie zaczynają mi przysyłać te tokeny. Wszystko jest OK dopóki jest to JDG (zresztą testuję na sobie i w DEMO). Taki token przysłała mi spółka i okazuje się, ze on nie działa, bo jak się okazuje jedynym możliwym uprawnieniem przy generowaniu tokena w aplikacji www Ksef jest "zarządzanie uprawnieniami".
Co z tym zrobić? Jak mam uzyskać to uprawnienie do pobierania dokumentów dla tej spółki.
Dzięki i pozdrawiam

SK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

Ktoś może kojarzy taki błąd?

screenshot-20251219095516.png

RA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 70
0

FYI Odp z formularza dotycząca latarni: "funkcjonalność, o której mowa w pytaniu jest zaplanowana do realizacji, natomiast obecnie nie możemy udzielać informacji o sposobie działania. W momencie jej wdrożenia stosowna dokumentacja pojawi się na https://github.com/CIRFMF/ksef-docs."

AL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

KSEF ma być obowiązkowy dla dużych firm od 1 lutego 2026.
Gdzieś czytałem, że do końca 2026 roku nie będzie kar za błędy odnośnie używania KSEF w tym czasie.

  1. Czy możecie wskazać jakieś oficjalne rządowe źródło informacji o tym, że nie będzie kar odnośnie KSEF do końca 2026 roku?
  2. Co to oznacza, że nie będzie kar? Rozumiem, że firma ma obowiązek dostarczyć faktury do KSEF, które wystawiła od 1 lutego 2026. Czy jeśli firma, która wystawiła faktury w lutym 2026 wyśle je do KSEF dopiero w marcu 2026 to też nie będzie kary za to? 🤔
M4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 62
0

Mam pytanie po wygenerowaniu certyfikatu w aplikacji podatnika otrzymuje plkii .crt .key i hasło które podaje z nich generuje plik p12, potem widzę że można pobrać plik .pem, do czego on służy ?

K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

Hej

Wysyłal ktoś może fakture zaliczkową z takimi pozycjami na TEST?
Wysyłam ze stawkami podatku ZW i 5% a w ich AP w pozycji gdzie jest ZW jest bład :
Stawka podatku
dostawa towarów oraz świadczenie usług poza terytorium kraju
a powinno byc ZW
i u nich w AP jak generuje tak samo jest
Jesli mozecie zobaczcie na DEMO bo ja jeszcze nie mam jak

moj xml:
<Zamowienie>
<WartoscZamowienia>1120.00</WartoscZamowienia>
<ZamowienieWiersz>
<NrWierszaZam>1</NrWierszaZam>
<P_7Z>jfkjfjhb</P_7Z>
<P_8AZ>szt</P_8AZ>
<P_8BZ>1.000</P_8BZ>
<P_9AZ>952.38</P_9AZ>
<P_11NettoZ>952.38</P_11NettoZ>
<P_11VatZ>47.62</P_11VatZ>
<P_12Z>5</P_12Z>
</ZamowienieWiersz>
<ZamowienieWiersz>
<NrWierszaZam>2</NrWierszaZam>
<P_7Z>Usuwanie kamienia nazęb. - łuk</P_7Z>
<P_8AZ>szt</P_8AZ>
<P_8BZ>1.000</P_8BZ>
<P_9AZ>120.00</P_9AZ>
<P_11NettoZ>120.00</P_11NettoZ>
<P_11VatZ>0.00</P_11VatZ>
<P_12Z>zw</P_12Z>
</ZamowienieWiersz>
</Zamowienie>

TA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

Przechodzę proces autoryzacji i jest OK - mogę pobrać faktury.

Problem mam z wysyłką interaktywną:

przy: sessions/online
otrzymuję: StatusCode=201 i {"referenceNumber":"20251219-SO-310BD2E000-E90AEB822C-8A","validUntil":"2025-12-20T02:17:08.6544682+00:00"}

ale przy sessions/20251219-SO-310BD2E000-E90AEB822C-8A
otrzymuję: StatusCode=405 i puste response

oraz przy sessions/online/20251219-SO-310BD2E000-E90AEB822C-8A/invoices
otrzymuję: StatusCode=400 i {"exception":{"exceptionDetailList":[{"exceptionCode":21180,"exceptionDescription":"Status sesji nie pozwala na wykonanie operacji.","details":["Status sesji (415) uniemożliwia wysyłkę faktur."]}],"serviceCode":"00-db69314b26ea9f91dcbd6186794d48bb-8a0b288d8d668d1d-00","timestamp":"2025-12-19T14:21:00.0751931Z"}}

Gdzie szukać problemu?

Dzyszla
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 205
0

Odpowiedź z MF na jedno z pytań o ocenę stanu gotowości na KSeF. Kluczowe zdanie:

W ocenie Ministerstwa Finansów stopień przygotowania przedsiębiorców do KSeF
znajduje się obecnie na zaawansowanym etapie. Widoczne jest duże
zainteresowanie udostępnionymi przez resort bezpłatnymi narzędziami
(w szczególności Aplikacją Podatnika KSeF 2.0 w wersji testowej
i przedprodukcyjnej) oraz kwestiami technicznymi związanymi z integracją
programów komercyjnych z API KSeF 2.0. Prowadzone przez Ministerstwo
Finansów działania edukacyjne i informacyjne istotnie zwiększają świadomość
nadchodzących zmian i mobilizują do działań wdrożeniowych

Ciekawe, co dla nic znaczy "duże". 50%? czy 5%?

Oraz pytanie dot. ryzyka w obliczu braku gotowości:

Podatnicy, którzy na 1 lutego 2026 r. nie będą posiadać własnego zaplecza
technicznego, będą mogli skorzystać z udostępnianych przez Ministerstwo
Finansów bezpłatnych narzędzi takich jak: Aplikacja Podatnika KSeF, Aplikacja
Mobilna KSeF czy e-mikrofirma. Są to proste i intuicyjne narzędzia, które umożliwią
przedsiębiorcom wystawianie i otrzymywanie faktur w KSeF, bez ponoszenia
dodatkowych kosztów i nakładów pracy.

Tak, firma wystawiające 50000 faktur miesięcznie będzie klepać na komórce 😀

Całość: https://sejm.gov.pl/INT10.nsf/0/C904507D9BA182D5C1258D650054611C/%24File/i13910-o1.pdf

KU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

Dostałem właśnie informację od mojego biura księgowego ( internetowe, bardzo popularne ) o tym, że oni są w pełni gotowi do działania z KSeF. Napisali ciekawe rzeczy:

  • mimo, że jestem małym przedsiębiorcą to i tak muszę startować od 1 lutego 2026 bo mam faktury kosztowe. No co jest zgodne z prawdą ale pokazuje bezsensowność podziału startu systemu na te 2 etapy bo i tak praktycznie KAŻDY ma faktury kosztowe i więc startuje od 1 lutego.
  • fakturę mogę wysłać max 1 dzień roboczy po wystawieniu - to akurat jest glupota bo jak juz wpadne w tryb offline to w sumie obojętne czy wyślę dzień po czy 5, Na ich miejscu komunikowałbym klientom potrzebę wysyłania do KSeF tego samego dnia.
  • mam do ich systemu wgrać MÓJ CERTYFIKAT WŁAŚCICIELA. Może jakbym nie był integratorem to miałbym to gdzieś ale jestem i mam świadomość co mogą zrobić ONI albo ktokolwiek kto to im wykradnie i autoryzuje się wszędzie jako JA, mający WSZYSTKIE uprawnienia, w tym nadawania innym podmiotom uprawnień. Teraz mam jedno główne pytanie. Co było złego w tokenach? Wygenerowałbym token z uprawnieniami do wystawiania i pobierania faktur, wysłał im i o nic się nie martwił.

Zapraszam do dyskusji przy wieczornej herbatce.

asoio
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
2

Trochę nie na temat, ale może kogoś zainteresuje: dziś w CRWDE zostały opublikowane oficjalne schematy xsd dla JPK_V7M(3) i JPK_V7K(3) obowiązujące od 01.02.2026.
http://crd.gov.pl/wzor/2025/12/19/14090/schemat.xsd
http://crd.gov.pl/wzor/2025/12/19/14089/schemat.xsd
Tak więc KSeF coraz bliżej niestety.

asoio
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

A widzieliście to: https://ksefan.ksef.podatki.gov.pl/ ?

GS
  • Rejestracja: dni
  • Ostatnio: dni
0

@KXP

KXP napisał(a):

Cały dzień walczyłem dzisiaj z próbą utworzenia QR kodu II. Delphi, Chilkat lub cokolwiek innego, co dałoby radę.
Nie umiem podpisać zahashowanej części linku qr-test.ksef.mf.gov.pl/certificate/Nip/1111111111/1111111111/01F2.
Certyfikat Offline utworzyłem w portalu, klucz powstał automatycznie, w formacie ECDSA.
Gdy próbuję podpisać poprzez RSA, to wywala się na próbie użycia klucza prywatnego. klucz jest typu ECDSA, a nie RSA.
Próbowałem na różne sposoby z ECDSA, ale tam nie wychodzi mi nic, co przypominałoby treść QR II.
Kluczową linią szyfrowania wydaje się być:
sig := CkEcc__signBd(ecdsa, CKData, 'sha256', 'hex', CurPrivKey, prng);
Ale o co chodzi z R i S? Trzeba to skleić i dodać na początku?

A może prościej byłoby jednak tworzyć certyfikat przez API, jak RSA?

Kod którego schemat podpowiedział mi na tym forum @Stl86
Zrobiłem tylko małe zmiany

Kopiuj
class function TRsaAesCryptDecrypt.SignECDSA(const aText, APrivKey, aPassword: String): String;
var
  sb: HCkStringBuilder;
  hash: PWideChar;
  privKey: HCkPrivateKey;
  success: boolean;
  prng: HCkPrng;
  ecdsa: HCkEcc;
  ecdsaSigBase64: PWideChar;
begin
  sb := CkStringBuilder_Create();
  CkStringBuilder_Append(sb, PWideChar(aText));
  hash := CkStringBuilder__getHash(sb, 'sha256', 'base64', 'utf-8');

  privKey := CkPrivateKey_Create();
  success := CkPrivateKey_LoadEncryptedPem(privKey, PWideChar(APrivKey), PWideChar(aPassword));
  if (success <> true) then
  begin
    result := CkPrivateKey__lastErrorText(privKey);
    exit;
  end;

  prng := CkPrng_Create();
  ecdsa := CkEcc_Create();

  CkEcc_putAsnFormat(ecdsa, false);

  ecdsaSigBase64 := CkEcc__signHashENC(ecdsa, hash, 'modbase64', privKey, prng);
  if (CkEcc_getLastMethodSuccess(ecdsa) <> true) then
  begin
    result := CkEcc__lastErrorText(ecdsa);
    exit;
  end;

  result := ecdsaSigBase64;

  CkStringBuilder_Dispose(sb);
  CkPrivateKey_Dispose(privKey);
  CkPrng_Dispose(prng);
  CkEcc_Dispose(ecdsa);
end;
SI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

Czy endpoint :https://api-demo.ksef.mf.gov.pl/v2/certificates/enrollments/{referenceNumber} wam też nie działa? I stary i nowy link prowadzą mnie do 403 forbidden.

Dzyszla
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 205
0

Mam zagwozdkę dotyczącą kluczy publicznych (do API). Mają one wpisany adres wystawcy:

Kopiuj
(1.3.6.1.5.5.7.48.2)
     Nazwa zapasowa:
          Adres URL=http://csmimersaca.repository.certum.pl/csmimersaca.cer

A teraz... Czy podczas walidacji czy w jakiejś sytuacji Windows nie powinien sobie sam ściągnąć tego pośredniego?

Powiem szerze - ja go miałem w systemie, ale pojęcia nie mam, przy jakiej okazji się pojawił. Może jak programy z certum instalowałem... Tak czy inaczej - czy on powinien się wg Was "jakoś"(?) pojawić w systemie, czy raczej to ja go powinienem zawrzeć w aplikacji, gdybym chciał sprawdzić cały łańcuch certyfikatów?

TA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

W auth/ksef-token, encryptedToken szyfruję poniższą funkcją i jest OK, mogę odbierać faktury.
W sessions/online, encryptedSymmetricKey używam tej samej funkcji (próbowałem ją przebudować, żeby zamiast PlainText: string podać od razu PlainBytes: TBytes) ale w sessions/{ReferenceNumber}
otrzymuję {"status":{"code":415,"description":"Błąd odszyfrowania dostarczonego klucza","details":["Rozszyfrowania klucza symetrycznego zakończone błędem"]},"validUntil":"2025-12-23T00:28:45.2793096+00:00"}

Ktoś wie co trzebabyłoby zmienić?

Kopiuj
function RSA_OAEP_EncryptSHA256_File_Base64(const PublicKeyFile: string; const PlainText: string): string;
type
  PNativeUInt = ^NativeUInt;
var
  LibCrypto: HMODULE;
  Bio: Pointer;
  PKey: Pointer;
  Ctx: Pointer;
  InBytes: TBytes;
  OutLen: NativeUInt;
  OutBuf: TBytes;

  // OpenSSL func pointers
  BIO_new_file: function(const filename: PAnsiChar; const mode: PAnsiChar): Pointer; cdecl;
  BIO_free: function(b: Pointer): Integer; cdecl;
  PEM_read_bio_PUBKEY: function(bp: Pointer; x: Pointer; cb: Pointer; u: Pointer): Pointer; cdecl;

  EVP_PKEY_CTX_new: function(pkey: Pointer; e: Pointer): Pointer; cdecl;
  EVP_PKEY_CTX_free: procedure(ctx: Pointer); cdecl;
  EVP_PKEY_free: procedure(pkey: Pointer); cdecl;

  EVP_PKEY_encrypt_init: function(ctx: Pointer): Integer; cdecl;
  EVP_PKEY_encrypt: function(ctx: Pointer; out_: Pointer; outlen: PNativeUInt; in_: Pointer; inlen: NativeUInt): Integer; cdecl;

  EVP_PKEY_CTX_set_rsa_padding: function(ctx: Pointer; pad: Integer): Integer; cdecl;
  EVP_PKEY_CTX_set_rsa_oaep_md: function(ctx: Pointer; md: Pointer): Integer; cdecl;

  EVP_sha256: function: Pointer; cdecl;

const
  RSA_PKCS1_OAEP_PADDING = 4;
begin
  Result := '';
  LibCrypto := LoadLibrary('libcrypto-3.dll');
  if LibCrypto = 0 then
    raise Exception.Create('Nie znaleziono libcrypto-3.dll');

  @BIO_new_file := GetProcAddress(LibCrypto, 'BIO_new_file');
  @BIO_free := GetProcAddress(LibCrypto, 'BIO_free');
  @PEM_read_bio_PUBKEY := GetProcAddress(LibCrypto, 'PEM_read_bio_PUBKEY');

  @EVP_PKEY_CTX_new := GetProcAddress(LibCrypto, 'EVP_PKEY_CTX_new');
  @EVP_PKEY_CTX_free := GetProcAddress(LibCrypto, 'EVP_PKEY_CTX_free');
  @EVP_PKEY_free := GetProcAddress(LibCrypto, 'EVP_PKEY_free');

  @EVP_PKEY_encrypt_init := GetProcAddress(LibCrypto, 'EVP_PKEY_encrypt_init');
  @EVP_PKEY_encrypt := GetProcAddress(LibCrypto, 'EVP_PKEY_encrypt');

  @EVP_PKEY_CTX_set_rsa_padding := GetProcAddress(LibCrypto, 'EVP_PKEY_CTX_set_rsa_padding');
  @EVP_PKEY_CTX_set_rsa_oaep_md := GetProcAddress(LibCrypto, 'EVP_PKEY_CTX_set_rsa_oaep_md');

  @EVP_sha256 := GetProcAddress(LibCrypto, 'EVP_sha256');

  if not Assigned(BIO_new_file) or not Assigned(PEM_read_bio_PUBKEY) or not Assigned(EVP_PKEY_encrypt) then
    raise Exception.Create('Brakuje wymaganych funkcji w libcrypto');

  Bio := BIO_new_file(PAnsiChar(AnsiString(PublicKeyFile)), 'rb');
  if Bio = nil then
    raise Exception.CreateFmt('Nie można otworzyć pliku PEM: %s', [PublicKeyFile]);

  PKey := PEM_read_bio_PUBKEY(Bio, nil, nil, nil);
  BIO_free(Bio);
  if PKey = nil then
    raise Exception.Create('Nie udało się wczytać klucza publicznego z PEM');

  InBytes := TEncoding.UTF8.GetBytes(PlainText);

  Ctx := EVP_PKEY_CTX_new(PKey, nil);
  if Ctx = nil then
    raise Exception.Create('EVP_PKEY_CTX_new error');
  try
    if EVP_PKEY_encrypt_init(Ctx) <= 0 then
      raise Exception.Create('EVP_PKEY_encrypt_init error');

    if EVP_PKEY_CTX_set_rsa_padding(Ctx, RSA_PKCS1_OAEP_PADDING) <= 0 then
      raise Exception.Create('EVP_PKEY_CTX_set_rsa_padding error');

    if EVP_PKEY_CTX_set_rsa_oaep_md(Ctx, EVP_sha256()) <= 0 then
      raise Exception.Create('EVP_PKEY_CTX_set_rsa_oaep_md error');

    OutLen := 0;
    if EVP_PKEY_encrypt(Ctx, nil, @OutLen, Pointer(InBytes), Length(InBytes)) <= 0 then
      raise Exception.Create('EVP_PKEY_encrypt (len) error');

    SetLength(OutBuf, OutLen);

    // 5) szyfrujemy
    if EVP_PKEY_encrypt(Ctx, Pointer(OutBuf), @OutLen, Pointer(InBytes), Length(InBytes)) <= 0 then
      raise Exception.Create('EVP_PKEY_encrypt error');

    SetLength(OutBuf, OutLen);

    Result := TNetEncoding.Base64.EncodeBytesToString(OutBuf);

    Result := StringReplace(Result, #13, '', [rfReplaceAll]);
    Result := StringReplace(Result, #10, '', [rfReplaceAll]);

  finally
    EVP_PKEY_CTX_free(Ctx);
    EVP_PKEY_free(PKey);
  end;
end;
WJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 48
1

US zaszczyciło mnie (jako przedsiębiorcę, płatnika VAT, itp.) pismem o nadchodzącym KSeF. (Uff, a już myślałem że coś im się nie zgadza z moim VAT).
Dokument załączam, nie ma w nim nic tajnego.
Dobrze wiedzieć, że ta sama osoba - dyr. Rogowski - dalej odpowiada za ten projekt (był już w nim w 2022)
List do przedsiębiorców ws. Krajowego Systemu e-Faktur.pdf

TA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

Czy mógłby mi ktoś wkleić klucz publiczny -----BEGIN PUBLIC KEY----- -----END PUBLIC KEY----- dla DEMO do klucza symetrycznego szyfrowania faktur? Proszę :)

GS
  • Rejestracja: dni
  • Ostatnio: dni
0
twister.akozlowicz napisał(a):

Czy mógłby mi ktoś wkleić klucz publiczny -----BEGIN PUBLIC KEY----- -----END PUBLIC KEY----- dla DEMO do klucza symetrycznego szyfrowania faktur? Proszę :)

Kopiuj
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAxUEDI48g+Pk0izn9XydRevJqtz4h8s4Sz63FvIZvmhdaZfVkmGBq
QrBKPTFX6ksQM/gEq1y8nqtmSI6RqoMUgV0UDqIPauyicMiKsfLLPH3ht8bjkeaM
B330dxWKCTpJKv+6+LC73i3B1oavWMAAv3is5aWTyyFB9rwjdxcSZ46DSKYaUo5K
bWKZTxBNpCT/LqkhHxfbszq+LIWIvm+09GFpth6hBvDST1h7CHt4g9B1DmtY3I2n
YDkPtnmvGo5XBODqTgzWMb0rLgloQGbIeZygQPhhzsWDy4d2uIrE9zZB90q6kDOV
g/hZ5YdhCr4X8FeHOfaCgGp+8ZPL3akduQIDAQAB
-----END RSA PUBLIC KEY-----
Dzyszla
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 205
0

Jest wersja 2.0.0 NON-RC 😀
Oczywiście znów więcej zmian, niż było zapowiedziane.

Np. dodano daty utworzenia i aktywności sesji (strictowcy się ucieszą)

Niestety, wbrew naciskom, zmniejszyli zakres pobieranych faktur z 2 lat do 3 miesięcy (nie wiem, co im to przeszkadzało).

Najwięcej zmian to na szczęście tylko opisy błędów w dokumentacji (choć i tak nie ma wszystkich, ale nie chce mi się nawet już pisać o tym).

https://github.com/CIRFMF/ksef-docs/blob/main/api-changelog.md#wersja-200

PS. nowy status na odświeżeniu "Próba wykorzystania metod autoryzacyjnych osoby zmarłej" - no to odświeżając token oni sprawdzają, czy ktoś w tym czasie nie umarł? A nie mogą od razu unieważnić sesji, jak się unieważnia certyfikat?

E5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

Działają Wam kody QR wystawcy (II kod)? Sprawdzałem jeszcze 1-2 tygodnie temu i miałem informację, że certyfikat jest zwalidowany poprawnie (po przejściu na link zbudowany zgodnie z wytycznymi z dokumentacji), a teraz mam błąd: "Podpis wystawcy nie jest prawidłowy". Widziałem, że zmieniły się adresy dla QR kodów, ale po dostosowaniu nadal mam ten sam błąd. Nie wiem czy siedzieć i to rozkminiać, czy to jakieś prace po ich stronie. Ja w swoim kodzie nic w tej kwestii nie zmieniałem, certyfikat jest dokładnie ten sam, zatem albo po stronie Ksef coś się zmieniło albo wspomniana niedyspozycja środowiska

V2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 33
0

Czy w którymś kodzie QR są zapisywane jakieś dane z certyfikatu KSeF (np. numer seryjny), które mogłyby służyć do rozpozania, który certyfikat został użyty, w przypadku gdy podmiot (np. firma) ma kilka nadających się certyfikatów? Podobne pytanie mam odnośnie sesji, ale to raczej wiedzą tylko ci co ten KSeF robią, więc spytam na GH.

GR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Cześć,
Jak podchodzicie do udzielania rabatów na fakturze? Obecnie w firmie mamy możliwość udzielenia rabatu na całość faktury czego nie widzę w fakturze ksef. Nie mogę zrobić kwoty ujemnej na wierszu, mogę w sekcji rozliczeń dodać rabat ogólny, ale to zaciemnia widok faktury. W apce webowej wtedy jako kwotę faktury widać kwotę przed rabatem:
screenshot-20251223095401.png
tu widać brutto 639, gdzie finalna kwota do zapłaty jest widoczna w sekcji rozliczeń:
screenshot-20251223095532.png
Jedyna opcja to chyba dzielenie rabatu na pozycjach?
Aktualnie jako rabaty całościowe rozliczamy zarówno przedpłaty (co da się zrobić w ksef fakturą typu rozliczenie) jak i te rabaty specjalne na całą fakturę.

EDIT:
KSeFan pomogł! Mogę podać sumy faktury (P_13_1, P_14_1, P15), pomniejszone o rabat ogólny, o którym nigdzie indziej nie podałem informacji i to przechodzi!:
screenshot-20251223102702.png
Powodzenia w rozszyfrowaniu o co tam chodzi... Mogę dodać oczywiście uwagi, ale to podejście tez nie jest zbyt klarowne

K4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Cześć, mam pytanie dotyczące faktur offline - a dokładnie certyfikatu potwierdzaającego uprawnienia wystawcy do wystawienia faktury (kod QR II). Do wygenerowania podpisu (kodu QR II) powinien być użyty certyfikat wystawcy (kontekstu logowania) czy certyfikat podmiotu logowania (subject). Sytuacja taka: oprogramowanie typu SaaS (wyastawianie faktur), do ksef loguję się tokenem KSeF kontekstu (nie mam nadanych uprawnień osobno). W przypadku faktury offline QR II generuję na podstawie swojego certyfikatu do podpisu. Czy jednak każdy kontekst (klient) powinien trzymać w moim systemie certyfikat do podpisu faktur offline? Ne przechodzi mi walidacja "Wystawca nie posiada uprawnień do wystawienia faktury w imieniu 73XXXXXXXX". Jednocześnie jestem w stanie wystawić fakturę online...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.