delphi privatni ključ

Dec 28, 2012 at 6:42 PM

dečki (i cure naravno) da li netko ima problema sa čitanjem ključa odnosno da isti nije izdan od fine razlika pfx i p12 možda

Dec 28, 2012 at 7:11 PM
Nama se to javlja samo kada pokušamo s produkcijskim certom poslat nešto na testni server
Coordinator
Dec 28, 2012 at 7:15 PM

pfx i p12 su apsolutno u bit jednaki formati datoteke.

Dec 28, 2012 at 8:54 PM

Hvala ZoranK stvarno se radi  o jeb..om duplom <X509Certificate> .... </X509Certificate> ovisno o pregledniku s kojeg je skinuto?

tvoj dio koda radi savršeno sa p12 dok za .pfx ga treba ignorirati (za svaki slučaj stavit ću i counter taga pa ako ima dupli koristim tvoj)

imaš gajbu od mene

Dec 28, 2012 at 8:58 PM
tZac wrote:
Nama se to javlja samo kada pokušamo s produkcijskim certom poslat nešto na testni server

meni je prošao na jednom prudukcijskom a na dva ne 

radi se stvarno o duplanju taga i ona fora od ZoranK mi je riješila problem

prije puštanja kod korisnika probaj skinuti cert sa više verzija  preglednika za svaki slučaj 

Dec 31, 2012 at 8:51 AM

Pitaju dečki kad bu pive ;)

E još nešto, za provjeru postoje li dva taga slobodno zamjeniti liniju:

if LastDelimiter('<X509Certificate>', xmldata_potpisan.Text) <> Pos('<X509Certificate>', xmldata_potpisan.Text) then begin

i umjesto nje staviti:

if PosEx('X509Certificate>', xmldata_potpisan.Text, PosEx('X509Certificate>', xmldata_potpisan.Text, 1) +1) > 0 then begin

....

(uses postaviti StrUtils ako ga nema zbog funkcije PosEx)

 

Znači u PosEx('X509Certificate>', xmldata_potpisan.Text, 1) traži postoji li string 'X509Certificate>' od prvog znaka stringa

a slijedeći put isto pita ali počevši ne od prvog znaka već znaka koji je predhodno našao.

Ako opet nađe, znači spominje se dva puta.

Malo je kemosan, al eto.

Pozdrav ZoranK

 

Dec 31, 2012 at 9:10 AM
marekius wrote:

Hvala ZoranK stvarno se radi  o jeb..om duplom <X509Certificate> .... </X509Certificate> ovisno o pregledniku s kojeg je skinuto?

tvoj dio koda radi savršeno sa p12 dok za .pfx ga treba ignorirati (za svaki slučaj stavit ću i counter taga pa ako ima dupli koristim tvoj)

imaš gajbu od mene

Vidim da spominješ rješenje od ZoranK al ne vidim gdje je početak te diskusije ? Nešto sam propustio ?

Dec 31, 2012 at 10:18 AM

Evo još jednom...

Za one koji imaju problema sa korištenjem produkcijske .p12 datoteke, a testni certifikat .pfx je radio

ubaciti ovaj dio koda prije slanja paketa, odnosno linije:  Result := SaljiSOAP_Racun(xmldata_potpisan,vZastitniKod);

 

var brisiOd, brisiDo: Integer; //gore deklarirati u funkciji

.......

uses StrUtils;

...

//jednostavno ako postoji dupli <X509Certificate> .... </X509Certificate>, izbacuje jedan van

    if PosEx('X509Certificate>', xmldata_potpisan.Text, PosEx('X509Certificate>', xmldata_potpisan.Text, 1) +1) > 0 then begin
      brisiOd:= Pos('<X509Certificate>', xmldata_potpisan.Text);
      brisiDo:= Pos('</X509Certificate>', xmldata_potpisan.Text) +17;
      xmldata_potpisan.Text:= Trim(Copy(xmldata_potpisan.Text, 1, brisiOd -1) +Copy(xmldata_potpisan.Text, brisiDo +1, Length(xmldata_potpisan.Text)));
    end;

//kraj ubačenog koda

    Result := SaljiSOAP_Racun(xmldata_potpisan,vZastitniKod); //ova linija ostaje kak je, tu je samo za pozicioniranje gore navedenog koda

....

Isto je i kod prijave poslovnog prostora.

provjereno radi

pozzz

ZoranK

Dec 31, 2012 at 6:48 PM
Edited Dec 31, 2012 at 6:48 PM

Ovaj kod UVIJEK obriše jedan certifikat, bez obzira da li ima dupli ili ne. Ja sam još dodao dodatnu proivjeru ukoliko je bio samo jedan certifikat upisan da vrati original potpisani XML nazad.

var xmldata_potpisan_origijnal:TStringList; // ovo je unutar funkcije za slanje računa ili poslovnog prostora

// dodano  ispred prve provjere za brisanje duplog certifikata

xmldata_potpisan_original:=TStringList.create;

xmldata_potpisan_original.Text:=xmldata_potpisan.Text;

if PosEx('X509Certificate>', xmldata_potpisan.Text, PosEx('X509Certificate>', xmldata_potpisan.Text, 1) +1) > 0 then begin
      brisiOd:= Pos('<X509Certificate>', xmldata_potpisan.Text);
      brisiDo:= Pos('</X509Certificate>', xmldata_potpisan.Text) +17;
      xmldata_potpisan.Text:= Trim(Copy(xmldata_potpisan.Text, 1, brisiOd -1) +Copy(xmldata_potpisan.Text, brisiDo +1, Length(xmldata_potpisan.Text)));
    end;

if PosEx('X509Certificate>', xmldata_potpisan.Text, PosEx('X509Certificate>', xmldata_potpisan.Text, 1) +1) = 0 then begin // ako je 0 - onda nema certif.

xmldata_potpisan.Text:=xmldata_potpisan_original.Text;

end;

xmldata_potpisan_original.Free;

 

Na ovaj način mora raditi bez problema i na demo i na produkcijskom okruženju

Mar 22, 2013 at 3:09 PM
Zahvaljujem kolegi ZoranK-u na postu, i nakon čega sustav radi bez greške