Thread View: pl.comp.lang.delphi
11 messages
11 total messages
Started by kameleonsql
Tue, 27 Dec 2016 08:35
Szyfrowanie plików JPK z użyciem SecureBox'a
Author: kameleonsql
Date: Tue, 27 Dec 2016 08:35
Date: Tue, 27 Dec 2016 08:35
98 lines
4932 bytes
4932 bytes
Witam,
mamy mały problem z szyfrowaniem plików JPK używając SecureBox'a (Delphi 2010). Kod był zlecony na zewnątrz firmy (niestety programista, który to robił jest nieosiągalny ...) i kurcze dopiero teraz się okazało, że jest błąd w szyfrowaniu (nikt nie wie dlaczego dopiero teraz :( to wyszło, ale cóż się zdarza).Generalnie problem polega chyba na implementacji zmiennych bo jak jest (tak jest w wersji w której server MF zwraca błąd, co prawda UOP przychodzi po kilkunastu godzina) tak :
Crypto := Fac.CreateInstance(SB_ALGORITHM_CNT_AES256)
to serwer MF zwraca błąd 412 (plik nieprawidłowo zaszyfrowany), ale kod działa i plik jest szyfrowany. Natomiast jeśli użyję się (chyba to powinno być szyfrowane w ten sposób)
Crypto := Fac.CreateInstance(SB_ALGORITHM_DGST_SHA256,cmCBC);
to mamy błąd EAccess Viol .... w
Crypto.KeyMaterial := KM;
Szukam kogoś "kumatego" w temacie, co by oczywiście odpłatnie to szybko poprawił ..
Całość kodu do szyfrowania poniżej.
function JPK_AES_Encode(InDataStream: TmemoryStream; UsedUniqueKey: string;
out IV_Base64: AnsiString): TmemoryStream;
var
Fac: TElSymmetricCryptoFactory;
CP: TElWin32CryptoProvider;
CPOps: TElWin32CryptoProviderOptions;
Crypto: TElSymmetricCrypto;
KM: TElSymmetricKeyMaterial;
Key, IV: ByteArray;
TestStream: TmemoryStream;
begin
Result := TmemoryStream.Create;
try
// przenosimy wygenerowany wcześniej klucz do ByteArray
SetLength(Key, 32);
System.Move(UsedUniqueKey[1], Key[0], 32);
// UWAGA: wg niektórych powinien to być bieżace data/czas z dokładnościa do 0.001 sek.
SetLength(IV, 16);
SBRndGenerate(@IV[0], Length(IV));
Fac := TElSymmetricCryptoFactory.Create();
try
CPOps := TElWin32CryptoProviderOptions.Create();
try
CPOps.UseForSymmetricKeyOperations := TRUE;
CP := TElWin32CryptoProvider.Create(CPOps, NIL);
try
Fac.CryptoProvider := CP;
// UWAGA: to MUSI być AES256 !!!
// SB_ALGORITHM_PK_RSA
Crypto := Fac.CreateInstance(SB_ALGORITHM_CNT_AES256);
try
KM := TElSymmetricKeyMaterial.Create(CP);
try
TestStream := TmemoryStream.Create;
// UWAGA: klucz NIE jest zaszyfrowany w tym przypadku...
KM.Key := Key;
KM.IV := IV;
// przekazujemy IV jako Base64
IV_Base64 := TIdEncoderMIME.EncodeBytes(TIdBytes(IV));
Crypto.KeyMaterial := KM;
// szyfrowanie
InDataStream.Position := 0;
Crypto.Encrypt(InDataStream, Result);
Result.Position := 0;
// deszyfrowanie (dla testu - potem można będzie wyrzucić ew.)
Crypto.Decrypt(Result, TestStream);
Result.Position := 0;
// weryfikacja...
if not StreamsCompare(TestStream, InDataStream) then
Raise Exception.Create
('Bład szyfrowania wygenerowanego hasła jednorazowego (AES)!');
Result.Position := 0;
{$IFDEF DEBUG}
Result.SaveToFile(SetJpkXmlSendFile + 'test.zip.aes');
Result.Position := 0;
{$ENDIF}
InDataStream.Position := 0;
finally
if Assigned(TestStream) then
TestStream.Free;
FreeAndNil(KM);
end;
finally
FreeAndNil(Crypto);
end;
finally
FreeAndNil(CP);
end;
finally
FreeAndNil(CPOps);
end;
finally
FreeAndNil(Fac);
end;
except
FreeAndNil(Result);
Raise ;
end;
end;
Re: Szyfrowanie plików JPK z użyciem SecureBox'a
Author: Roman Tyczka
Date: Thu, 29 Dec 2016 16:04
Date: Thu, 29 Dec 2016 16:04
26 lines
1725 bytes
1725 bytes
On Tue, 27 Dec 2016 00:35:22 -0800 (PST), kameleonsql@gmail.com wrote: > mamy mały problem z szyfrowaniem plików JPK używając SecureBox'a (Delphi 2010). Mały? Na pewno? ;-) > Kod był zlecony na zewnątrz firmy (niestety programista, który to robił > jest nieosiągalny ...) i kurcze dopiero teraz się okazało, że jest błąd w > szyfrowaniu (nikt nie wie dlaczego dopiero teraz :( to wyszło, ale cóż > się zdarza). Czy dobrze mi się wydaje, że sprzedawałeś ten kod na tutejszej grupie? > Generalnie problem polega chyba na implementacji zmiennych bo jak jest Nie mam pojęcia co to jest implementacja zmiennych, ale... [...] > Szukam kogoś "kumatego" w temacie, co by oczywiście odpłatnie to szybko poprawił .. ...mogę Ci zrobić to szyfrowanie, powiedzmy za 8k, wchodzisz? -- pozdrawiam Roman Tyczka
Re: Szyfrowanie plików JPK z użyciem SecureBox'a
Author: mmm
Date: Thu, 29 Dec 2016 21:08
Date: Thu, 29 Dec 2016 21:08
24 lines
1891 bytes
1891 bytes
W dniu 2016-12-29 o 17:04, Roman Tyczka pisze: > On Tue, 27 Dec 2016 00:35:22 -0800 (PST), kameleonsql@gmail.com wrote: > >> mamy mały problem z szyfrowaniem plików JPK używając SecureBox'a (Delphi 2010). > > Mały? Na pewno? ;-) Małe firmy to mają jeszcze rok i dwa dni , średnie trochę krócej jeszcze trochę czasu jest. Zamiast na bal sylwestrowy można dłubać. > > > Czy dobrze mi się wydaje, że sprzedawałeś ten kod na tutejszej grupie? Pewnie pierwszy który kupił był testerem. I pojawiły sie pierwsze zgłoszone błędy. Ciekawi mnie najbardziej dlaczego taki nacisk SecureBox ? To az takie wspaniałe jest ? Tak ogladalem PDF-y z opisem formatu to jest objaśnione "jak krowie na rowie" skad wiadomo ze komponent jest poprawny ? >> Szukam kogoś "kumatego" w temacie, co by oczywiście odpłatnie to szybko poprawił .. > > ...mogę Ci zrobić to szyfrowanie, powiedzmy za 8k, wchodzisz? > M
Re: Szyfrowanie plików JPK z użyciem SecureBox'a
Author: konsul41
Date: Fri, 30 Dec 2016 07:53
Date: Fri, 30 Dec 2016 07:53
58 lines
3371 bytes
3371 bytes
W dniu 29-12-2016 o 22:08, mmm pisze:
> W dniu 2016-12-29 o 17:04, Roman Tyczka pisze:
>> On Tue, 27 Dec 2016 00:35:22 -0800 (PST), kameleonsql@gmail.com wrote:
>>
>>> mamy mały problem z szyfrowaniem plików JPK używając SecureBox'a
>>> (Delphi 2010).
>>
>> Mały? Na pewno? ;-)
> Małe firmy to mają jeszcze rok i dwa dni , średnie trochę krócej jeszcze
> trochę czasu jest. Zamiast na bal sylwestrowy można dłubać.
JPK-VAT rusza od 1-01-2017 więc tylko 1 miesiąc 25dni + 2 dnii.
Do samego wysyłania jest program na stronie MF ale podpisywanie we
własnym zakresie (dziwne to jest).
Osobiście (to nie reklama, a podpowiedź) używam
http://jpk.dobry.pl/
cena nie jest wygórowana (a spotkałem się nawet z 5000 za program).
można ukryć całość używając dll.
Albo tak
ShellExecute(Handle, 'open', 'C:\Program Files\IPSPI\JotPeK\JotPeK.exe',
PChar('/jpk='+katalog+'\'+filename+' /outpath='+katalog+'\'),
'C:\Program Files\IPSPI\JotPeK\', SW_NORMAL);
Albo dll i tak
AddXMLJPKFile(PChar(katalog+'\'+filename),0);
ShowError;
SetLic('LIC**************');
idSession:=SignSendJPK(cCzyTest,nil,nil,false); //Inicjalizacja wysyłki.
if idSession<>nil then
begin
SetProgressCaption(idSession,'Wysyłanie pliku XML na serwer
Ministerstwa Finansów '); //Ustawienie tekstu na progress-bar
repeat
//i:=WaitForEnd(idSession,vRefsNum);
until (WaitForEnd(idSession,vRefsNum)>0);
//Oczekiwanie na zakończenie procesu wysyłki
if vRefsNum<>nil then //Jeśli wysyłka przebiegła prawidłowo, tzn.
jest numer referencyjny.
begin
// ..Tutaj zapisanie numeru referencyjnego …
Sleep(5000); //Trochę dać czasu serwerowi M.F.
if GetUPO(cCzyTest,vRefsNum,vUPO,vStatus,vStatusText) then
//Odczyt statusu
begin
ShowMessage('Status '+IntToStr(vStatus)+#13+ vStatusText+#13+vUPO);
// ..Tutaj zapisanie statusu i upo. //UPO prawdopodobnie jeszcze
nie będzie
end else ShowError;
end else ShowError;
end else ShowError;
---
Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast.
https://www.avast.com/antivirus
Re: Szyfrowanie plików JPK z użyciem SecureBox'a
Author: immo
Date: Fri, 30 Dec 2016 07:55
Date: Fri, 30 Dec 2016 07:55
8 lines
1583 bytes
1583 bytes
W dniu czwartek, 29 grudnia 2016 17:04:51 UTC+1 użytkownik Roman Tyczka napisał: > ...mogę Ci zrobić to szyfrowanie, powiedzmy za 8k, wchodzisz? Jeśli to nie ironia której nie wyłapałem, to właśnie grupa dla osób takich jak ja umarła na dobre :/ pozdrawiam, Przemek O.
Re: Szyfrowanie plików JPK z użyciem SecureBox'a
Author: Roman Tyczka
Date: Fri, 30 Dec 2016 09:30
Date: Fri, 30 Dec 2016 09:30
12 lines
1242 bytes
1242 bytes
On Thu, 29 Dec 2016 23:55:43 -0800 (PST), immo wrote: >> ...mogę Ci zrobić to szyfrowanie, powiedzmy za 8k, wchodzisz? > > Jeśli to nie ironia której nie wyłapałem, to właśnie grupa dla osób takich jak ja umarła na dobre :/ Co to są "osoby takie jak ja"? -- pozdrawiam Roman Tyczka
Re: Szyfrowanie plików JPK z użyciem SecureBox'a
Author: kameleonsql
Date: Sun, 01 Jan 2017 11:39
Date: Sun, 01 Jan 2017 11:39
31 lines
2607 bytes
2607 bytes
W dniu czwartek, 29 grudnia 2016 17:04:51 UTC+1 użytkownik Roman Tyczka napisał: > On Tue, 27 Dec 2016 00:35:22 -0800 (PST), kameleonsql@gmail.com wrote: > > > mamy mały problem z szyfrowaniem plików JPK używając SecureBox'a (Delphi 2010). > > Mały? Na pewno? ;-) > > > Kod był zlecony na zewnątrz firmy (niestety programista, który to robił > > jest nieosiągalny ...) i kurcze dopiero teraz się okazało, że jest błąd w > > szyfrowaniu (nikt nie wie dlaczego dopiero teraz :( to wyszło, ale cóż > > się zdarza). > > Czy dobrze mi się wydaje, że sprzedawałeś ten kod na tutejszej grupie? > > > Generalnie problem polega chyba na implementacji zmiennych bo jak jest > > Nie mam pojęcia co to jest implementacja zmiennych, ale... > > [...] > > > Szukam kogoś "kumatego" w temacie, co by oczywiście odpłatnie to szybko poprawił .. > > ...mogę Ci zrobić to szyfrowanie, powiedzmy za 8k, wchodzisz? > > -- > pozdrawiam > Roman Tyczka Serwus, Dobrze Ci się wydawało mój imiennku :), sprzedałem te kod (oczywiście dorzucając poprawkę)... Problem rozwiązany, działa perfekcyjnie :)
Re: Szyfrowanie plików JPK z użyciem SecureBox'a
Author: kameleonsql
Date: Sun, 01 Jan 2017 11:44
Date: Sun, 01 Jan 2017 11:44
28 lines
2732 bytes
2732 bytes
W dniu czwartek, 29 grudnia 2016 22:08:30 UTC+1 użytkownik mmm napisał: > W dniu 2016-12-29 o 17:04, Roman Tyczka pisze: > > On Tue, 27 Dec 2016 00:35:22 -0800 (PST), kameleonsql@gmail.com wrote: > > > >> mamy mały problem z szyfrowaniem plików JPK używając SecureBox'a (Delphi 2010). > > > > Mały? Na pewno? ;-) > Małe firmy to mają jeszcze rok i dwa dni , średnie trochę krócej jeszcze > trochę czasu jest. Zamiast na bal sylwestrowy można dłubać. > > > > > > Czy dobrze mi się wydaje, że sprzedawałeś ten kod na tutejszej grupie? > Pewnie pierwszy który kupił był testerem. I pojawiły sie pierwsze > zgłoszone błędy. > > Ciekawi mnie najbardziej dlaczego taki nacisk SecureBox ? To az takie > wspaniałe jest ? Tak ogladalem PDF-y z opisem formatu to jest > objaśnione "jak krowie na rowie" skad wiadomo ze komponent jest poprawny ? > > >> Szukam kogoś "kumatego" w temacie, co by oczywiście odpłatnie to szybko poprawił .. > > > > ...mogę Ci zrobić to szyfrowanie, powiedzmy za 8k, wchodzisz? > > > > M Widzę, że nie próbowałeś tego programować, tak dla przykładu na to, że masz podane jak "krowie na rowie" np. to, ze taki typ http://jpk.guru/baza-wiedzy/typy-danych (ten sam typ zdefiniowany 3 raz :)) ... Takich błędów niedomówień jest w całym JPK cała masa. Pozdrawiam
Re: Szyfrowanie plików JPK z użyciem SecureBox'a
Author: kameleonsql
Date: Sun, 01 Jan 2017 11:46
Date: Sun, 01 Jan 2017 11:46
35 lines
2597 bytes
2597 bytes
W dniu czwartek, 29 grudnia 2016 17:04:51 UTC+1 użytkownik Roman Tyczka napisał: > On Tue, 27 Dec 2016 00:35:22 -0800 (PST), kameleonsql@gmail.com wrote: > > > mamy mały problem z szyfrowaniem plików JPK używając SecureBox'a (Delphi 2010). > > Mały? Na pewno? ;-) > > > Kod był zlecony na zewnątrz firmy (niestety programista, który to robił > > jest nieosiągalny ...) i kurcze dopiero teraz się okazało, że jest błąd w > > szyfrowaniu (nikt nie wie dlaczego dopiero teraz :( to wyszło, ale cóż > > się zdarza). > > Czy dobrze mi się wydaje, że sprzedawałeś ten kod na tutejszej grupie? > > > Generalnie problem polega chyba na implementacji zmiennych bo jak jest > > Nie mam pojęcia co to jest implementacja zmiennych, ale... > > [...] > > > Szukam kogoś "kumatego" w temacie, co by oczywiście odpłatnie to szybko poprawił .. > > ...mogę Ci zrobić to szyfrowanie, powiedzmy za 8k, wchodzisz? > > -- > pozdrawiam > Roman Tyczka W sumie kosztowało mnie to trochę więcej, ale mamy całość "swojego" kodu, co jest dla mnie dość ważne. Pozdrawiam Ps. Dzięki za pomoc.
Re: Szyfrowanie plików JPK z użyciem SecureBox'a
Author: Roman Tyczka
Date: Sun, 01 Jan 2017 17:54
Date: Sun, 01 Jan 2017 17:54
11 lines
1540 bytes
1540 bytes
On Sun, 1 Jan 2017 03:44:17 -0800 (PST), kameleonsql@gmail.com wrote: > Widzę, że nie próbowałeś tego programować, tak dla przykładu na to, że masz podane jak "krowie na rowie" np. to, ze taki typ http://jpk.guru/baza-wiedzy/typy-danych (ten sam typ zdefiniowany 3 raz :)) ... Takich błędów niedomówień jest w całym JPK cała masa. W przypadku XMLa sama nazwa typu to nie wszystko. Kluczowy jest name space, a to zupełnie zmienia postać rzeczy. Tak samo nazwane typy w różnych name space'ach są INNYMI typami. -- pozdrawiam Roman Tyczka
Re: Szyfrowanie plików JPK z użyciem SecureBox'a
Author: wloochacz
Date: Wed, 17 May 2017 14:33
Date: Wed, 17 May 2017 14:33
12 lines
1670 bytes
1670 bytes
W dniu 2016-12-30 o 10:30, Roman Tyczka pisze: > On Thu, 29 Dec 2016 23:55:43 -0800 (PST), immo wrote: > >>> ...mogę Ci zrobić to szyfrowanie, powiedzmy za 8k, wchodzisz? >> >> Jeśli to nie ironia której nie wyłapałem, to właśnie grupa dla osób takich jak ja umarła na dobre :/ > Co to są "osoby takie jak ja"? Nie takie jak Ty. -- wloochacz
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads