Krajowy system e-Faktur

GS
  • Rejestracja: dni
  • Ostatnio: dni
0

Nie wiem czy dobrze rozumiem.
AccessToken ma któtki okres ważności, kilkanaście minut. Po jego wygaśnięciu należy go odświeżyć przy użyciu RefreshToken: https://ksef-test.mf.gov.pl/api/v2/auth/token/refresh
Ale RefreshToken też ma swój okres ważności.
Czy po jego wygaśnięciu należy wykonać od początku proces uwierzytelnienia ?

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

hej
Mam problem podczas uwierzytelnienia z wykorzystaniem podpisu - dostaję błąd 21406: Konflikt podpisu i typu uwierzytelnienia.
Użyłem bibliotek udostępnionych przez MF w C#, certyfikat wygenerowałem również za pomocą tej samej biblioteki.
Widziałem, że ktoś kiedyś miał taki probelm ze źle wygenerowanym certyfikaterm, ale było to jeszcze przed pojawieniem się gotowców z MF, które same załatwiają ten temat.
Czy ktoś przerabiał już ten problem ?

Podpisany XML:
<AuthTokenRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://ksef.mf.gov.pl/auth/token/2.0">
<Challenge>20251005-CR-46B95C8000-499B98EAD0-E9</Challenge>
<ContextIdentifier>
<Nip>6111001342</Nip>
</ContextIdentifier>
<SubjectIdentifierType>certificateSubject</SubjectIdentifierType>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="Signature">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue>3vHWHK11NjgYwfuGpiBeXuC2fnDwBEPe0mb7BFRIdQk=</DigestValue>
</Reference>
<Reference URI="#SignedProperties" Type="http://uri.etsi.org/01903#SignedProperties">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue>zG2qJcXMcXEZ+jTYZMCqi8K40gJcEv7diYbutzpfXgU=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>
pojDPU64Wg32078izq3sdathZfMUjmPr+X0OdyeOTpOGwuLJskPSNZVyCQBPX+DITQfHlK90xKXg0ZVICuKi/nanyX5Y2uB/+G7IRq9GfhN8sknQsYQipJ0rZcJw9VL8qlCAoxDabvzdRCpbwp9sU8cvHAASkt1uO+jLinhO0WKjWT1186N3eGaQUnWw3LFXWIYbqYMhe9I09HbNIld4TdFUlKY9y9QIzUJZ7FLfHCdhtlX1w+8R40nXvQDYnw0jRg63E46zgTh1+ctfUHnEVtfoObpPB4/85C57YNRE3BsInnETzUVfwy4hcvuJ4TZRW+athHGC49pz1Hqybde1Uw==
</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>
MIIDhDCCAjygAwIBAgIIX0kXPtsO5FQwPQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCASAwUjELMAkGA1UEBhMCUEwxETAPBgNVBAMTCEtvd2Fsc2tpMRMwEQYDVQRhEwo2MTExMDAxMzQyMRswGQYDVQQKExJLb3dhbHNraSBzcC4geiBvLm8wHhcNMjUxMDA1MTkzNDA2WhcNMjcxMDA1MjAzNTA2WjBSMQswCQYDVQQGEwJQTDERMA8GA1UEAxMIS293YWxza2kxEzARBgNVBGETCjYxMTEwMDEzNDIxGzAZBgNVBAoTEktvd2Fsc2tpIHNwLiB6IG8ubzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANU0GMd+BGFjGDDK73cGfBf0z6idGtQucy37ERbNkefLpMwI4uNGWnxTXT2//5AWu0mpCq7Edxk6U9IA1YnunMaLNHM6gIFiirfEEnVRJ1XyoTfJpYAgYc9dTsgnCOAKd6oCRR1HFjs3F7TqKgR7mUIlAqiiuts1qQONRE0CDzmo+QZd807fkXpHPbbRxglnku7rBI7ithsD4jYWXwBaT+1yI1DMG6VN+k09VYwlFZIOkzSdCp38W+2NIcaHiw2VDTDg/Qm6sKhaoyzQ3a7HshZrEngrGI4OOGNq4UwKgdw5/Tiw6wmWo5r+3FnzWyNII00HA5U51cH0URdM57d8QskCAwEAATA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAQEAqfXxztfMAsgrDeeH9YYlbRpwp2r41lTrXzz2qi6wc7xZsCO+NDtxxjHLQ/RlqgINnrS3BpW3ntvRQId6ak7acadXF8SDL7tPfd9y3rCg9qIzOVkZr1zXq5LXytf46ap9SBoSnVlkESCuC3Z2iUsX6SjR/pH02MQe8AxRSn0Db6NyJUyxT0OwRWdu3IOPqmk1MNmVCkHdVauahg37PNTesWr3vlJohx/0zwWG8XJYzPp6z9mcvzEqqH1z393IanYwvkH+EI64SxpFdrb6eKTmCTapeiuDDYymx3iIWw2gUP8LIjlQg/Sut0ccpIVgfscLCGPcJpEe6X5i11SIfGOhyQ==
</X509Certificate>
</X509Data>
</KeyInfo>
<Object>
<xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#"
xmlns="http://www.w3.org/2000/09/xmldsig#"
Target="#Signature">
<xades:SignedProperties Id="SignedProperties">
xades:SignedSignatureProperties
xades:SigningTime2025-10-03T20:00:00.0000000</xades:SigningTime>
xades:SigningCertificate
xades:Cert
xades:CertDigest
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue>HOTs0Xqt5AiOTsB4dFl0n+oM8bDW9OZUHChUQDNDsqU=</DigestValue>
</xades:CertDigest>
xades:IssuerSerial
<X509IssuerName>O=Kowalski sp. z o.o, OID.2.5.4.97=6111001342, CN=Kowalski, C=PL</X509IssuerName>
<X509SerialNumber>6866044665633629268</X509SerialNumber>
</xades:IssuerSerial>
</xades:Cert>
</xades:SigningCertificate>
</xades:SignedSignatureProperties>
</xades:SignedProperties>
</xades:QualifyingProperties>
</Object>
</Signature>
</AuthTokenRequest>

DVI Kesatuan
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

Czy tokeny wygenerowane w wersji 1.0 powinny działać teraz? Aktualnie dostaje komunikat "Uwierzytelnianie zakończone niepowodzeniem z powodu błędnego tokenu" i zastanawiam się czy to wina jakiegoś błędu w zapytaniu czy po prostu te tokeny z jedynki nie będą działały?

T2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

Cześć

Coś się udało – dokument został poprawnie wysłany i otrzymuję:

Kopiuj
{"success":true,"status":202,"sessionReferenceNumber":"20251005-SO-2053360000-AA37A720C4-8B","response":{"referenceNumber":"20251005-EE-2053421000-499D0C694B-81"}}

Następnie che pobrać UPO i dostaje:

Kopiuj
{"success":false,"status":403","response":""}

Czyli rozumiem, że na serwerach testowych nie mam uprawnień do pobrania UPO?

Kolejne pytanie: czy wysyłka jednego dokumentu zawsze trwa tak długo (około 10–15 sekund), a czasami trzeba ją powtarzać, aby otrzymać potwierdzenie o sukcesie?

Pozdrawiam

TO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

Jak myślicie, wprowadzenie obowiązkowego KSeF zwiększy czy zmniejszy zatrudnienie w skarbówce? 😜

S8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 106
0

Kurcze, którym endopintem pobrać listę nadanych uprawnień bo mi nic nie zwraca.. ten https://ksef-test.mf.gov.pl/api/v2/permissions/query/personal/grants
Nie zwraca mi nic dla tokenu i dla podpisanego XML. A chodzi o to ze jak otwieram sesje interaktwyna tokenem to jest wszytko ok a jak po zalogowaniu podpisanym XML to mam 415.. unsupported Type. Bez sensu trochę.

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

Dalej stoję w miejscu: Generuję unikalny challenge wymagany w kolejnym kroku operacji uwierzytelnienia.
POST https://ksef-test.mf.gov.pl/api/v2/auth/challenge

Do tego jest metoda:
public async Task<AuthChallengeResponse> GetAuthChallengeAsync(CancellationToken cancellationToken = default)
z klasy:
public partial class KSeFClient : IKSeFClient
Metoda ma zwrócić: challenge i timestamp

Niestety nie potrafię wywołać tej metody (biblioteki mam skompilowane i podpięte)

        AuthChallengeResponse challenge2 = await KSeFClient.GetAuthChallengeAsync();

Uzyskuję błąd kompilacji: Dla niestatycznego pola, metody lub właściwości „KSeFClient.GetAuthChallengeAsync(CancellationToken)” wymagane jest odwołanie do obiektu.

        KSeFClient _ksefClient = new KSeFClient();
        AuthChallengeResponse challenge = await _ksefClient.GetAuthChallengeAsync();

Uzyskuję błąd kompilacji: Nie podano argumentu odpowiadającego wymaganemu parametrowi „restClient” z „KSeFClient.KSeFClient(IRestClient)”

        KSeFClient _ksefClient = new KSeFClient(IRestClient restClient);

'Element „IRestClient” to element „typ”, który jest nieprawidłowy w podanym kontekście

Problem jest w metodzie GetChallenge()

poniżej program w c#

using KSeF.Client;
using KSeF.Client.Api.Builders.Auth;
using KSeF.Client.Api.Builders.X509Certificates;
using KSeF.Client.Core;
using KSeF.Client.Core.Interfaces;
using KSeF.Client.Core.Models;
using KSeF.Client.Core.Models.Authorization;
using KSeF.Client.Http;
using KSeF.Client.Tests.Core.E2E.KsefToken;
using KSeF.Client.Tests.Utils;
using System.Drawing.Text;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Threading;
using KSeF.Client.Api.Builders.EntityPermissions;
using KSeF.Client.Core.Models.Permissions.Entity;
using KSeF.Client.Core.Exceptions;
using System.IdentityModel.Tokens.Jwt;
using System.Text.Json;

namespace Atestksef
{

//CertificateUtils.GetPersonalCertificate
public partial class Form1 : Form
{
    public static X509Certificate2 GetPersonalCertificate(
        string givenName,
        string surname,
        string serialNumberPrefix,
        string serialNumber,
        string commonName)
    {
        X509Certificate2 certificate = SelfSignedCertificateForSignatureBuilder
                    .Create()
                    .WithGivenName(givenName)
                    .WithSurname(surname)
                    .WithSerialNumber($"{serialNumberPrefix}-{serialNumber}")
                    .WithCommonName(commonName)
                    .Build();
        return certificate;
    }

    public Form1()
    {
        InitializeComponent();
    }

    private async void button1_Click(object sender, EventArgs e)
    {
        await GetChallenge();
    }
    private void button2_Click(object sender, EventArgs e)
    {
        X509Certificate2 ownerCertificate = CertificateUtils.GetPersonalCertificate("Jan", "Kowa    lski", "TINPL", "6481031418", "JK");
        var n = 0;
    }

    private async void button3_Click(object sender, EventArgs e)
    {
        KsefTokenE2ETests kseftoken = new KsefTokenE2ETests();
        await kseftoken.KsefTokensAsync_FullIntegrationFlow_AllStepsSucceed();
        var n = 0;
    }

    private void button4_Click(object sender, EventArgs e)
    {
        this.Close();
    }


   public async Task GetChallenge()
    {
        AuthChallengeResponse challenge2 = await KSeFClient.GetAuthChallengeAsync();

        KSeFClient _ksefClient = new KSeFClient();
        KSeFClient _ksefClient = new KSeFClient(IRestClient restClient);

        AuthChallengeResponse challenge = await _ksefClient.GetAuthChallengeAsync();


        long timestampMs = challenge.Timestamp.ToUnixTimeMilliseconds();
        var n = 0;
    }
}

}

Robert Kumorek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Hej czy przy zakładaniu Tokena ktoś miał taki problem?
Context identifier is not enforcement authority.

S1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

wysyłanie faktur wsadowo:

Jak szyfrujecie plik np 1.zip (klucz + iv) czy po zaszyfrowaniu $iv wstawiacie na początku pliku + zaszyfrowany kontekst czy sam zaszyfrowany kontekst bez $IV (w necie w kwestii szyfrowania AES-256-CBC znajduje informacje ze struktura pliku to [16 bajtów IV][zaszyfrowane dane] a w przypadku wysyłki faktur pojedynczych na 100% nie dodaje iv na początku jako dodatek i działa.

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

Nie wiem trochę czy eskalować problem czy jeszcze poddać go głębszej dyskusji ale to co się dzieje z tym API to jakiś nieśmieszny żart. Zmiany metod są upychane pod stołem i tylko kwestia czasu kiedy coś co działało nagle przestaje. Ostatnio np. dorzucili znacznik offline dla wysyłki wsadowej nie informując o tym w changelogs. Zaraz trzeba to wgrywać klientom a oni ciągle zmieniają pod spodem.

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

Cześć. Walczę dalej z "Podpis zweryfikowany negatywnie." Widzę, że część z Was juz to przeszła.

Oto sposób generowania certyfikatu testowego:

1. Generowanie klucza prywatnego

openssl genpkey -algorithm RSA -out private.key -aes256 -pkeyopt rsa_keygen_bits:2048

2. Generowanie samopodpisanego certyfikatu X.509 z użyciem pliku konfiguracyjnego

openssl req -new -x509 -key private.key -out cert.crt -days 365 -config openssl.cnf -extensions v3_req

3. Utworzenie kontenera PKCS#12 (PFX)

openssl pkcs12 -export -out cert.p12 -inkey private.key -in cert.crt

Mój XML:

<?xmlversion="1.0"encoding="UTF-8"?>

<AuthTokenRequestxmlns="http://ksef.mf.gov.pl/auth/token/2.0"Id="pfx21740522-0a26-d2fa-a895-ab364d70b29a">
<Challenge>20251006-CR-2ED074F000-BDDF3FFC59-82</Challenge>
<ContextIdentifier>
<Nip>3930033840</Nip>
</ContextIdentifier>
<SubjectIdentifierType>certificateSubject</SubjectIdentifierType>
ds:Signaturexmlns:ds="http://www.w3.org/2000/09/xmldsig#"xmlns:xades="http://uri.etsi.org/01903/v1.3.2#"
ds:SignedInfo
ds:CanonicalizationMethodAlgorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/
ds:SignatureMethodAlgorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/
ds:ReferenceURI="#pfx21740522-0a26-d2fa-a895-ab364d70b29a"
ds:Transforms
ds:TransformAlgorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/
</ds:Transforms>
ds:DigestMethodAlgorithm="http://www.w3.org/2001/04/xmlenc#sha256"/
ds:DigestValueKyvnRPbUTWW5aCHIZJGytixwbSkXxxqVfbhM1z9oEzk=</ds:DigestValue>
</ds:Reference>
ds:ReferenceURI="#ID-ed6d876d-c0ce-4958-bf94-ebabb1aecf51"
ds:Transforms
ds:TransformAlgorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/
</ds:Transforms>
ds:DigestMethodAlgorithm="http://www.w3.org/2001/04/xmlenc#sha256"/
ds:DigestValueHTiRXid1HdTIhfKLhO4eytAyQLv/LDaf09dz3rpnBXg=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
ds:SignatureValuenSY6MJheFh7euAm1OU4JQWRMt52aBE757Wl0XbvuQD4PzxoAOXpY+8XlHvtTpvdqnU8XpfKu2++1mVnr/fY5E2nBrgKNDh32iFU/pLUurMCYRFBAXA+UJiuPywEXhOdPsKZgXhIEr7VpNKUYv1qumS6+9NJJMP+fPlPgG1AlV/iu2U+ANVKoVBwMADUqCvtqIL/iKS4cxtRJt0Zuv4v4teLrqRZbraEQCsW7GQf9n/zDQei0QYhgo7mnCRS4sHZsrBHUCDGxFXr6wiVI68T5eb5q0AtI+CzlCR890j1PCC9nqET8X6oMhHJMilIbjN0YOchZf1S7b/XNZvznzYY0DA==</ds:SignatureValue>
ds:KeyInfo
ds:X509Data
ds:X509CertificateMIIEzDCCA7SgAwIBAgIUbu2xzW8D6Mvl8qUqk82R2oj0hNYwDQYJKoZIhvcNAQELBQAwgZAxCzAJBgNVBAYTAlBMMRQwEgYDVQQIDAtNYXpvd2llY2tpZTEPMA0GA1UEBwwGV2Fyc2F3MRUwEwYDVQQKDAxUZXN0IENvbXBhbnkxGTAXBgNVBAsMEFRlc3QgRW52aXJvbm1lbnQxDTALBgNVBAMMBFRlc3QxGTAXBgNVBGEMEFZBVFBMLTM5MzAwMzM4NDAwHhcNMjUxMDA2MTMzNjUxWhcNMjYxMDA2MTMzNjUxWjCBkDELMAkGA1UEBhMCUEwxFDASBgNVBAgMC01hem93aWVja2llMQ8wDQYDVQQHDAZXYXJzYXcxFTATBgNVBAoMDFRlc3QgQ29tcGFueTEZMBcGA1UECwwQVGVzdCBFbnZpcm9ubWVudDENMAsGA1UEAwwEVGVzdDEZMBcGA1UEYQwQVkFUUEwtMzkzMDAzMzg0MDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM5lQ76m9lVKF3k1/3xtVDHP65O6dk5mnCH5UIEpero0AFemkrvUzEvEdK7u0JXLnJAQ7Drbmi/i9p3OpSMxgO5ZT/MqGkN/b1ytl+i68Z1klLU43LvBmEwotm7zQU4a8PezSzvjVo2ZQbf3ULgTdbN1ZSQ2Ntb1YE9PgLVUymbxDBJKLKc4LPovER364P+u2c2PIiwC9qAyoKEaE5mSx0ZpqP+w3EILmXRjkj4aOqOKmvf3K2Qy2r03maYkwE7oLU2pMEMxX7+iAFsozAXjCdcWEASp0lf1NZq8MJmlHNkWR8UdBKoJZRFbtXQkfS8kd2u9eustcuQpkEoHa3tSKtUCAwEAAaOCARowggEWMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgXgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNVHQ4EFgQUO3xTCDRGyrDBr8VrIFmbpq0f5n0wgboGA1UdIwSBsjCBr6GBlqSBkzCBkDELMAkGA1UEBhMCUEwxFDASBgNVBAgMC01hem93aWVja2llMQ8wDQYDVQQHDAZXYXJzYXcxFTATBgNVBAoMDFRlc3QgQ29tcGFueTEZMBcGA1UECwwQVGVzdCBFbnZpcm9ubWVudDENMAsGA1UEAwwEVGVzdDEZMBcGA1UEYQwQVkFUUEwtMzkzMDAzMzg0MIIUbu2xzW8D6Mvl8qUqk82R2oj0hNYwDQYJKoZIhvcNAQELBQADggEBAHR1qzi1y/1+IRdr8ii5nCZIBDQ6d0n3wLSQXmFmSLmaXZpSniO4dR1ggZwJz154TBNYweoTshgMAyszg+GdgJR1Kj3+X5n5NbvshBjvS/jrj92hdpoFD74i7FA5z1yVGWVbxU2vWwFMwzUyD/aHSxTa/OnUxTlNr3ktbjpJwhMAczZSwoTqnheJA1YKkmbBp0rSy+tNo3l4CcmO2LO5tjzKBr2qPUxJilJpsbKuyOKqYs+8U4vIxmPkHyRXnBsyO319VsALuZfedTHHbs4eQGTBx6FmIXU0XeVJ1+qVjIYoFiqQTvaI26yGpcUuR/JoPygaLGE0S/f34+a6n4PqGN8=</ds:X509Certificate>
ds:X509IssuerSerial
ds:X509IssuerNameC=PL,ST=Mazowieckie,L=Warsaw,O=TestCompany,OU=TestEnvironment,CN=Test,organizationIdentifier=VATPL-3930033840</ds:X509IssuerName>
ds:X509SerialNumber633289750182733851802442965442127070557935797462</ds:X509SerialNumber>
</ds:X509IssuerSerial>
ds:X509SubjectNameC=PL,ST=Mazowieckie,L=Warsaw,O=TestCompany,OU=TestEnvironment,CN=Test,organizationIdentifier=VATPL-3930033840</ds:X509SubjectName>
</ds:X509Data>
</ds:KeyInfo>
ds:Objectxmlns:xades="http://uri.etsi.org/01903/v1.3.2#"
xades:QualifyingPropertiesxmlns:xades="http://uri.etsi.org/01903/v1.3.2#"Target="#ID-737d8abd-d7c4-4e0a-993d-1468a5dd117b"
xades:SignedPropertiesId="ID-ed6d876d-c0ce-4958-bf94-ebabb1aecf51"
xades:SignedSignatureProperties
xades:SigningTime2025-10-06T15:38:09+02:00</xades:SigningTime>
xades:SigningCertificate
xades:Certxmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xades:CertDigestxmlns:ds="http://www.w3.org/2000/09/xmldsig#"
ds:DigestMethodxmlns:ds="http://www.w3.org/2000/09/xmldsig#"Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/
ds:DigestValuexmlns:ds="http://www.w3.org/2000/09/xmldsig#"df4U1ZhENyJ+UZK14xiZMdgRU1CJH9hPeo24hD0PRLU=</ds:DigestValue>
</xades:CertDigest>
xades:IssuerSerialxmlns:ds="http://www.w3.org/2000/09/xmldsig#"
ds:X509IssuerNamexmlns:ds="http://www.w3.org/2000/09/xmldsig#"C=PL,ST=Mazowieckie,L=Warsaw,O=TestCompany,OU=TestEnvironment,CN=Test,organizationIdentifier=VATPL-3930033840</ds:X509IssuerName>
ds:X509SerialNumberxmlns:ds="http://www.w3.org/2000/09/xmldsig#"633289750182733851802442965442127070557935797462</ds:X509SerialNumber>
</xades:IssuerSerial>
</xades:Cert>
</xades:SigningCertificate>
</xades:SignedSignatureProperties>
</xades:SignedProperties>
</xades:QualifyingProperties>
</ds:Object>
</ds:Signature>
</AuthTokenRequest>

mój openssl.cnf:

Minimalny plik konfiguracyjny OpenSSL dla KSeF API 2.0 (środowisko testowe)

[ req ]
default_bits = 2048
default_md = sha256
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
oid_section = custom_oids

[ custom_oids ]
organizationIdentifier = 2.5.4.97

[ req_distinguished_name ]
C = PL
ST = Mazowieckie
L = Warsaw
O = Test Company
OU = Test Environment
CN = Test
organizationIdentifier = VATPL-3930033840

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = critical, digitalSignature, nonRepudiation, keyEncipherment
extendedKeyUsage = clientAuth, emailProtection
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer

Co jeszcze trzeba zrobić?
Z gory dzięki za porady, bo już nie mam pomysłu.

Pavel Misko
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 23
0

Cześć, może ktoś podzieli się kompilatorem XML dla faktury w PHP lub gotowym plikiem faktury XML przed wysłaniem?

GS
  • Rejestracja: dni
  • Ostatnio: dni
0

Mam sporo wątpliwości jak to wszystko ma działać.
RefreshToken ma swój okres ważności 7 dni.
Jeśli podmiot nie ma ani pieczęci, ani podpisu kwalifikowanego (np. działalność jednoosobowa), to czy co 7 dni będzie musiał wznowić autoryzację np. przez "Podpis zaufany" ?

Pavel Misko
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 23
0

Przepraszam za długą wiadomość, przeszedłem walidację, ale otrzymuję błąd:
„status”: {
„code”: 445,
„description”: „Błąd weryfikacji, brak poprawnych faktur”
},
Próbowałem już różnych rozwiązań, ale nadal pojawia się błąd 445.

Kopiuj
<?xml version="1.0" encoding="UTF-8"?>
<Faktura xmlns="http://crd.gov.pl/wzor/2025/06/25/13775/"
         xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2022/01/05/eD/DefinicjeTypy/"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://crd.gov.pl/wzor/2025/06/25/13775/ schemat-FA(3)-v1-0E.xsd">
    <Naglowek>
        <KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
        <WariantFormularza>3</WariantFormularza>
        <DataWytworzeniaFa>2025-10-06T00:00:00Z</DataWytworzeniaFa>
        <SystemInfo>demo.pl</SystemInfo>
    </Naglowek>
    <Podmiot1>
        <DaneIdentyfikacyjne>
            <NIP>2222222222</NIP>
            <Nazwa>Imię Nazwisko</Nazwa>
        </DaneIdentyfikacyjne>
        <Adres>
            <KodKraju>PL</KodKraju>
            <AdresL1>Vogla 32/22</AdresL1>
            <AdresL2>02-963 Warszawa</AdresL2>
        </Adres>
    </Podmiot1>
    <Podmiot2>
        <DaneIdentyfikacyjne>
            <NIP>3333333333</NIP>
            <Nazwa>DEMO SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ</Nazwa>
        </DaneIdentyfikacyjne>
        <Adres>
            <KodKraju>PL</KodKraju>
            <AdresL1>ul. Zygmunta Vogla 44/55</AdresL1>
            <AdresL2>02-963 Warszawa</AdresL2>
        </Adres>
        <NrKlienta>13172</NrKlienta>
        <IDNabywcy>13172</IDNabywcy>
        <JST>2</JST>
        <GV>2</GV>
    </Podmiot2>
    <Fa>
        <KodWaluty>PLN</KodWaluty>
        <P_1>2025-10-06</P_1>
        <P_1M>Warszawa</P_1M>
        <P_2>9/10/2025</P_2>
        <P_6>2025-10-06</P_6>
        <P_13_1>587.39</P_13_1>
        <P_14_1>135.10</P_14_1>
        <P_15>722.49</P_15>
        <KursWalutyZ>1</KursWalutyZ>
        <Adnotacje>
            <P_16>2</P_16>
            <P_17>2</P_17>
            <P_18>2</P_18>
            <P_18A>2</P_18A>
            <Zwolnienie>
                <P_19N>1</P_19N>
            </Zwolnienie>
            <NoweSrodkiTransportu>
                <P_22N>1</P_22N>
            </NoweSrodkiTransportu>
            <P_23>2</P_23>
            <PMarzy>
                <P_PMarzyN>1</P_PMarzyN>
            </PMarzy>
        </Adnotacje>
        <RodzajFaktury>VAT</RodzajFaktury>
        <FaWiersz>
            <NrWierszaFa>1</NrWierszaFa>
            <UU_ID>1000800000000000</UU_ID>
            <P_7>Usługa 1</P_7>
            <P_8A>szt</P_8A>
            <P_8B>1</P_8B>
            <P_9A>123.45</P_9A>
            <P_11>123.45</P_11>
            <P_12>23</P_12>
        </FaWiersz>
        <FaWiersz>
            <NrWierszaFa>2</NrWierszaFa>
            <UU_ID>1000900000000000</UU_ID>
            <P_7>Usługa 2</P_7>
            <P_8A>szt</P_8A>
            <P_8B>1</P_8B>
            <P_9A>463.94</P_9A>
            <P_11>463.94</P_11>
            <P_12>23</P_12>
        </FaWiersz>
        <Platnosc>
            <Zaplacono>1</Zaplacono>
            <DataZaplaty>2025-10-06</DataZaplaty>
        </Platnosc>
    </Fa>
</Faktura>

N1ebieski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 42
1

Gdyby ktoś szukał gotowej implementacji klienta 2.0 w PHP to udostępniam pierwszą roboczą wersję > https://github.com/N1ebieski/ksef-php-client

  • wszystkie rodzaje autoryzacji: przez token, certyfikat kwalifikowany, certyfikat KSEF oraz manualnie przez profil zaufany
  • struktura logiczna faktury zmapowana na DTO
  • automatyczny refresh access tokena
  • generowanie kodów QR

Przykłady użycia w readme. Brakujące endpointy będę sukcesywnie dodawał w następnych tygodniach.

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

Cześć,
Próbuję przejść przez autoryzację za pomoca certyfikatu lecz bez skutku. Przepisałem sobie kod z udostępnionej biblioteki java, więc za pomoca kodu z biblioteki java robie następujace kroki:

  1. Generuje certa
  2. Generuje xml z challenge
  3. Podpisuje certa
  4. Wysyłam podpisany XML, który wyglada nastepujaco:
Kopiuj
<?xml version="1.0" encoding="UTF-8"?>
<AuthTokenRequest
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns="http://ksef.mf.gov.pl/auth/token/2.0">
	<Challenge>20251007-CR-1C24C54000-BDD8A007EB-BF</Challenge>
	<ContextIdentifier>
		<Nip>6342750606</Nip>
	</ContextIdentifier>
	<SubjectIdentifierType>certificateSubject</SubjectIdentifierType>
	<ds:Signature
		xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="id-1af40bee6a0e3196f7c0cb8ceabba649">
		<ds:SignedInfo>
			<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
			<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
			<ds:Reference Id="r-id-1af40bee6a0e3196f7c0cb8ceabba649-1" URI="">
				<ds:Transforms>
					<ds:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
						<dsig-filter2:XPath
							xmlns:dsig-filter2="http://www.w3.org/2002/06/xmldsig-filter2" Filter="subtract">/descendant::ds:Signature
						</dsig-filter2:XPath>
					</ds:Transform>
					<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
				</ds:Transforms>
				<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
				<ds:DigestValue>8cqzmMbiq3ylCmAdaMqZbiyONU9R1l4yb3SySne0VrI=</ds:DigestValue>
			</ds:Reference>
			<ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#xades-id-1af40bee6a0e3196f7c0cb8ceabba649">
				<ds:Transforms>
					<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
				</ds:Transforms>
				<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
				<ds:DigestValue>YNr3vlgmoR2O0++n2rjuwIj0KKLvsev3RmwkE/Jynog=</ds:DigestValue>
			</ds:Reference>
		</ds:SignedInfo>
		<ds:SignatureValue Id="value-id-1af40bee6a0e3196f7c0cb8ceabba649">CCGSKg4x1huoIZMT+IPgWUJoExbd06UB5FAFRIo71bYGTHfw4gfyklKdQifNFl1TgY9ovZ5Z3vtpBBEUyiB4mH6sJnsP2BHCmY997TPZuSDYriDTqgoCS3jH5IIUiS0mA2uTLKUAQqgVQqGjd254X+tOCMyGpdOTmkG8OYGLzqkmXSmZVxBr/Iwj5m39YReZEfJr70ZofTZ1BAovZTJpTyeXz5EuXk+nviDm2sPQTDoc4+tvF42z1euHwTnN89tyD2ug4ODhn2ctQOnl/Qx5ameQv8/rNc02NrjyK7mx+sS6FRdRYBzNS7736LqKrcDaYDlRgwhwtTyXn9ZAs2pOng==</ds:SignatureValue>
		<ds:KeyInfo>
			<ds:X509Data>
				<ds:X509Certificate>MIIDFDCCAfygAwIBAgIGAZm9ug2CMA0GCSqGSIb3DQEBCwUAMEsxGTAXBgNVBGEMEFZBVFBMLTYzNDI3NTA2MDYxDjAMBgNVBAoMBUZlZGV4MREwDwYDVQQDDAhLb3dhbHNraTELMAkGA1UEBhMCUEwwHhcNMjUxMDA3MDgxMTUxWhcNMjYxMDA3MDgxMTUxWjBLMRkwFwYDVQRhDBBWQVRQTC02MzQyNzUwNjA2MQ4wDAYDVQQKDAVGZWRleDERMA8GA1UEAwwIS293YWxza2kxCzAJBgNVBAYTAlBMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhv24booWfZS5J4LRK3Ui9Qq8axgNeUMqxaKVJ57G+Rj44oUTZizJRuvP4jJdNeB3EHXRzQDYhH7ddu/oj2uU+xyortnnK2elldTnqXbiAowAVPWwKmm/5PTpIjP9dwfQY78czZrxgwFBSZmNAzp1loZjgFEDUfaGMJnVqVHfmPiuVPUylponPNRH3+OJ8bHM8n7ZTv4u4rUCzCustJGA3wwqF3ZFTL7+gdUasqm9poyu/wALIf1/ZlfoFwg//8nW7wxH/W8qm31dHZ8fHm0qCjKLgqWNhcdsCITw0/0ROkiTfpT283UR9GAsWEJfmYemKeWxFxyfg94xOttBMRYGkQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBWtGCDh3dUwZuIJGZzyzDwcz3Sfnkwe16ZCqeO6j8wZ5TMzFD5oKG0QDhy783Jo9c7zO6GEpsIL7OSAHxh0Zw0tOLP2qTFyL3O1FzoLyV8DIy41E7K+QN4eOHfMZyEMNzxabrl7Ios6UCCN8TcZF/iE5P7V7l+gnJCYcYGybIQpMYBrPnlSP0ijqdPXqSo9qTD3L+3jjT61UXuasYuCp/Z61iG1IoNkgAPlI4vnylQv0vM3HTHrKuKQm2R10y1VaAc00wu9V0RG/h6qth7dkxsikTo8m/Pb1mB99DfQ4cBdVkGOgd5JQkYpR7+zvPaMF3PK2GNwEcHxIxPo0PzfsUS</ds:X509Certificate>
			</ds:X509Data>
		</ds:KeyInfo>
		<ds:Object>
			<xades:QualifyingProperties
				xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Target="#id-1af40bee6a0e3196f7c0cb8ceabba649">
				<xades:SignedProperties Id="xades-id-1af40bee6a0e3196f7c0cb8ceabba649">
					<xades:SignedSignatureProperties>
						<xades:SigningTime>2025-10-07T08:12:41Z</xades:SigningTime>
						<xades:SigningCertificate>
							<xades:Cert>
								<xades:CertDigest>
									<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
									<ds:DigestValue>dd8TIzcdHhYL2/3molypA0omnxowMrvaiPL1Fiqf16M=</ds:DigestValue>
								</xades:CertDigest>
								<xades:IssuerSerial>
									<ds:X509IssuerName>C=PL,CN=Kowalski,O=Fedex,2.5.4.97=#0c10564154504c2d36333432373530363036</ds:X509IssuerName>
									<ds:X509SerialNumber>1759824711042</ds:X509SerialNumber>
								</xades:IssuerSerial>
							</xades:Cert>
						</xades:SigningCertificate>
					</xades:SignedSignatureProperties>
					<xades:SignedDataObjectProperties>
						<xades:DataObjectFormat ObjectReference="#r-id-1af40bee6a0e3196f7c0cb8ceabba649-1">
							<xades:MimeType>text/xml</xades:MimeType>
						</xades:DataObjectFormat>
					</xades:SignedDataObjectProperties>
				</xades:SignedProperties>
			</xades:QualifyingProperties>
		</ds:Object>
	</ds:Signature>
</AuthTokenRequest>

W odpowiedzi dostaje:

Kopiuj
{
    "exception": {
        "exceptionDetailList": [
            {
                "exceptionCode": 9105,
                "exceptionDescription": "Nieprawidłowy podpis.",
                "details": [
                    "Nieprawidłowa wartość skrótu dla referencji wskazującej na element ''."
                ]
            }
        ],
        "serviceCode": "00-4732b854510311840593a22cd8a5c33c-bf8c50e7c019f3e7-00",
        "timestamp": "2025-10-07T08:13:33.4337863Z"
    }
}

Ma ktoś pomysł co poszło nie tak?

J0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 83
0

Cześć.
Męczę się przy próbie uwierzytelnieniu się poprzez Token. Dostaję jednak błąd i nie wiem co robię źle.

"code":450,"description":"Uwierzytelnianie zakończone niepowodzeniem z powodu błędnego tokenu","details":["Invalid token encoding."]

  • Wygenerowałem nowy token: "token": "20251007-EC-134204E000-AA4D1FC95D-24|nip-1111111111|38699ecf6e5446b3868b6a81c7adeeb4c31fc1ce2ca54a61bb090aa817e7e111"

Następnie wykonuję szyfrowanie tokenu:

const MFPublicKey_Token = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxsyeiYiWB2+KFxEpQGoNQa6W8Pc4kWGl8V+sBMdW3Fqh0lhKiqKfpH5RWLDmZ30EzkKJ5+IdaWYF' + 'oijhYxDBIBhINVQKlBZvEVd6CfPJUJypa94eRO5cc6IPNI35aMhfKP/Kc4A/OiT2J4nyCz6BV98xOXCAlyDPD73XM6O2ormL6gUb673zvjOIakf39tAPPVgWIDuX7GDZYGebN7LXoGvj' + 'Po5YDqC2KN51ofLbO+n74iei5OaGN94Ap52vI7uzK2g/hQslOd0Avl2U1kwRnnF0yzwbDzRrHqPCHUYxVp5nHdo+jHe1CNoa6gt0m6pn1StYcitSXKg2hTNjnes6TQIDAQAB';

var
rsa: TRSAEncSign;
mili: Int64;
DataToEncrypt, EncToken, AToken: string;

begin
//Z uzyskanego timestamp np: 2025-10-07T06:06:17.9052707+00:00 pobieram tylko znaki do milisekund czyli 2025-10-07T06:06:17.905
timestamp := '2025-10-07T06:06:17.905';
AToken := '38699ecf6e5446b3868b6a81c7adeeb4c31fc1ce2ca54a61bb090aa817e7e111';

mili := MilliSecondsBetween(UnixDateDelta, ISO8601ToDate(timestamp));
DataToEncrypt := AToken + '|' + IntToStr(mili);

// szyfrowanie przy pomocy TMS Cryptography pack v.4.3.2.5
rsa := TRSAEncSign.Create;
rsa.KeyLength := kl2048;
rsa.outputFormat := base64;
rsa.FromPublicKey(MFPublicKey_Token)
rsa.Unicode := yesUni;
rsa.encType := oaep;
EncToken := rsa.Encrypt(DataToEncrypt);
rsa.Free;
end;

Błąd Invalid token encoding sugeruje, że coś nie tak jest z szyfrowaniem ale jaka jest tego przyczyna?

EDIT: Takie samo szyfrowanie wykonuje przy szyfrowaniu AES Key na otwarciu sesji i przy wysyłce faktury i tam wszystko przechodzi bez problemu. Różnią się tylko kluczem publicznym. Może źle klucz publiczny odczytałem z certyfikatu?

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

Dalej mam problem z uzyskaniem challenge w wersji okienkowej.
AuthChallengeResponse challenge = await _ksefClient.GetAuthChallengeAsync();

Chciałbym spróbować od innej strony, ale potrzebny mi jest Token dostępowy, jaki był w wersji KSEF 1.0.
Niestety stare tokeny przestały działać. Czy ktoś bardziej zaawansowany mógłby wygenerować mi taki token na losowy NIP, lub na mój NIP firmowy 6481031418, ale wtedy prosiłbym o przesłanie go na adres:
januszkrawczyk@wp.pl
Inaczej będę skazany na czekanie do listopada na Aplikację Podatnika KSeF.

SS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Moglby ktos doprecyzowac uzycie ednpointa: /api/v2/testdata/permissions

Tworze JDG testowe: /api/v2/testdata/person NIP: 9999999 PESEL: 111111111 (Owner)
Chcialbym nadac uprawnienia osobie fizycznej: PESEL: 2222222

Aby nadac uprawnienia osobie fizycznej, powinienem authoryzowac sie jako NIP: 9999999 PESEL: 111111111 (Owner) i uzyc /api/v2/persmission/persons/grants (subjectIdentifier: PESEL 2222222)
czy moze, bez authoryzacji, uzyc /api/v2/testdata/permissions (contextId: NIP: 9999999, authorizedId: PESEL: 22222222)

Czy z wykorzystaniem /api/v2/testdata/permissions powinienem byc w stanie zmienic uprawnienia dla ownera? (contextId: NIP:9999999, authorizedId: NIP: 9999999)

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

Coś robie nie tak, mam błąd Status sesji (415) uniemożliwia wysyłkę faktur.
pobieram token autoryzacyjny
czekam aż token będzie aktywny
potem redeem token
potem pobieram publiczny certyfikat KSeF
później otwieram nową sesję online
i wysyłam fakture

SI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 31
0

Jakich narzędzi używacie żeby podpisać dokument xml certyfikatem w delphi?

Pavel Misko
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 23
0

Może ktoś wie, gdzie i na jakim etapie mogę uzyskać numer KSeF faktury, jeśli korzystam z interaktywnej sesji wysyłania?

Znalazłem go tylko w UPO, ale wydaje mi się, że to nieprawidłowe.

Kopiuj
<NumerKSeFDokumentu>9512577279-20251007-0100C053394F-2B</NumerKSeFDokumentu>
GigaKatowice
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 36
0

Hej.
Mam pytanie co robicie z UPO?
Zapisujecie je w systemie?
Sprawdzacie jego poprawność z xsd?
Sprawdzacie podpis w UPO?

Po co mi w ogóle UPO jak mam nadany nr KSeF dla faktury?

Pavel Misko
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 23
0

Mam sporo pytań dotyczących kodów QR 🙄

Czy ktoś może wyjaśnić, po co wymyślono kod QR?

Czy muszę je wygenerować i dodać do papierowej wersji faktury?
Jak sprawdzić, czy kod QR został wygenerowany poprawnie?
Czy można zawsze generować 2 kody i umieszczać je na fakturze, czy jest to zła praktyka?
Jakiego rozmiaru powinien być kod QR?

Przeczytałem notatkę, ale pytań nie zmniejszyło się.
https://github.com/CIRFMF/ksef-docs/blob/main/kody-qr.md

TK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
0

Cześć, zaczynam z Ksef 2.0, robiłem wersję 1 :). Mam pytanie czy ten endpoint "/api/v2/auth/challenge" wymaga jakiegoś body? I jaki jest aktualny URL do środowiska testowego? Z góry dzieki. Stanąłem na początku jakieś cuda ...

Pavel Misko
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 23
0

Proszę o pomoc 🤷‍♂️, czy są tu osoby, które integrują się z dużymi serwisami?

Jesteśmy biurem rachunkowym,

  • nasi klienci korzystają z naszego generatora faktur, nadal jesteśmy punktem końcowym, w którym wszystkie faktury użytkowników są zbierane.
  • Chcemy dać możliwość przeglądania i otrzymywania powiadomień o nowych (przychodzących) fakturach.

Dlatego, chcieliśmy dać możliwość wcześniejszego zapisania/wygenerowania tokenu i skonfigurowania go w naszym systemie, ale nigdzie nie mogę znaleźć dokładnych informacji, czy tokeny, które są teraz tworzone w wersji produkcyjnej, będą działać od 1 stycznia lub lutego.

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

Próbował ktoś unieważnić certyfikat wystawiony przez KSeF? Interesuje mnie czy wtedy limi wraca do pierwotnej wartości?

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

Cześć,
Spędziłem kilka dni próbując uwierzytelnić się w KSEF za pomocą XADES z certyfikatem podpisanym przez siebie. Moje próby zawsze kończyły się następującym błędem:


Kopiuj
exceptionCode=9105, exceptionDescription=Nieprawidłowy podpis., details=[Podpis zweryfikowany negatywnie.]

Zdałem sobie sprawę, że używam algorytmu podpisu SHA256withRSAandMGF1 (RSA PSS) zamiast SHA256withRSA (RSA PKCS#1 v1.5). Po zmianie algorytmu uwierzytelnianie zadziałało. Czy jest to oczekiwane zachowanie? W dokumentacji podano, że algorytm RSA PSS jest akceptowany jako algorytm podpisu: github.com/CIRFMF/ksef-docs/blob/main/certyfikaty-KSeF.md

Czy ktoś inny napotkał podobny problem? Moje pytanie brzmi: czy to ograniczenie w korzystaniu z RSA PKCS#1 v1.5 wystąpi również w przypadku certyfikatów KSeF? Czy będą one dostępne do żądania dopiero 1 listopada?

T2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

Cześć

Tak z ciekawości zapytam jak długo u was trwa wysłanie faktury ?

WJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
0

Szanowni Państwo, numerek RC API przeskoczył na 5.2:
a tu jest, zapewne pomijający wiele szczegółów, changelog.

W bibliotece .NET "przeszuflowali" prawie wszystko, dzieląc klienta na dwa projekty (dwa dll-e), z których jeden zawiera same interfejsy i struktury danych (część publiczna - KSeF.Client.Core) , zapewne w .NET Standard, a drugi (KSeF.Client) - to implementacja, w net core 9 i (uwaga!) także w net core 8 (zrobili opcję dla tej wersji). Wprowadzono wiele innych zmian na podstawie feedbacku ze zgłoszeń z GitHub. Od dziesięciu lat jest to pierwszy zespół, który tak poważnie traktuje te informacje zwrotne. Np. ten podział klienta na "front-end" i "back-end" był wynikiem sugestii jednego z użytkowników na GH. Nadal widzę niedociągnięcia, zapomniane komentarze, SigningService nadal potrafi podpisywać tylko kluczem RSA, ale coś się z tej alfy już formuje :). Szkoda, że tak mało czasu zostało...

Z innych ciekawostek biblioteki .NET: w projekcie do testów dodano prościutki (jednoplikowy) program linii poleceń, przechodzący przez cały proces autentykacji. Tu jest link. Dla tych, którzy dopiero zaczynają, to dobry punkt startowy. Dodano także "wyciaganie" z tokenów JWT ciekawych informacji (por. klasa PersonToken).
Nie wiem, czy zespół od .NET wstydzi się zakresu wprowadzonych zmian, bo po tej niezwykle poważnej reorganizacji struktury projektu, wprowadzeniu nowych interfejsów, itp. nadano temu RC numer nawet nie 5.2, a 5.1.1. Towarzyszący bibliotece changelog lakonicznością przypomina SMS-a.

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.