Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: SetDefaultCertificate FindBySerialNumber "Invalid hexadecimal string format"

C# .NET .NET (C# a Visual Basic) SetDefaultCertificate FindBySerialNumber "Invalid hexadecimal string format" American English version English version

Aktivity (1)
Avatar
peter.hudak15:23.3.2016 11:25

Zdravím,
pokúšam sa nastaviť certifikát pomocou metódy SetDefaultCer­tificate,

soap.ClientCredentials.ServiceCertificate.SetDefaultCertificate(StoreLocation.CurrentUser,
                    StoreName.AddressBook, X509FindType.FindBySerialNumber, serialNum);

serialNum je string v ktorom je SN certifikátu.
Ak je v tomto stringu uložená tá hodnota ako konštanta t.j.

serialNum = "a1f2d84458f412000000145000000142315"

tak je všetko v pohode a certifikát sa nájde a nastaví.
Ak však ten reťazec priradím z inej premennej ktorá ho načítala zo súboru tak už to nejde a vyhodí výnimku Invalid hexadecimal string format pritom však v debugeri vidím že majú úplne identický obsah.
Ako je to možné? Prosím poraďte ako sa to dá spraviť aby to fungovalo.
Ďakujem

 
Odpovědět 23.3.2016 11:25
Avatar
Odpovídá na peter.hudak15
Libor Šimo (libcosenior):23.3.2016 13:28

Dal som tvoj kód do googlu a hneď prvý odkaz:
https://social.msdn.microsoft.com/…tring-format?…
Možno nájdeš riešenie tam.

Nahoru Odpovědět 23.3.2016 13:28
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na peter.hudak15
sadlomaslox25:23.3.2016 14:30

nech tam tu konstantu, nacti si serial number ze souboru nebo z kama a tesne pred timhle radkem si dej Console.Write­Line(loadedString == serialNum ); pokud to vypise false tak rozhodne ty stringy nejsou stejny. pokud to vypise true tak napis a podivam se na to protoze to neni mozne :-D

 
Nahoru Odpovědět 23.3.2016 14:30
Avatar
peter.hudak15:23.3.2016 14:36

Vďaka za reakciu ale v tom odkaze riešia iný problém, že keď skopíruješ SN certifikátu tak treba vymazať medzery a špeciálny znak.
Je tam asi nejaký problém s kódovaním keďže ten string načítavam s xml súboru.
Nakoniec som to vyriešil prevodom na pole bytov a späť na string v kódovaní UTF8 s orezaním prvého znaku, ktorý sa tam objavil naviac.

byte[] bytes = Encoding.Default.GetBytes(serialNum);
serialNum = Encoding.UTF8.GetString(bytes).Remove(0, 1);
 
Nahoru Odpovědět 23.3.2016 14:36
Avatar
Odpovídá na sadlomaslox25
peter.hudak15:23.3.2016 15:34

porovnanie skončí false ale na pohľad sú rovnaké viď obrázok.
teraz som sa stým trochu viac pohral a zistil som, že ani to moje riešenie s orezaním nefunguje vždy, niekedy sa po prevode pridá pred reťazec jeden otáznik, niekedy dva, niekedy tri. Tak neviem čo teda s tým vyriešim.

 
Nahoru Odpovědět 23.3.2016 15:34
Avatar
Odpovídá na peter.hudak15
peter.hudak15:23.3.2016 16:03

tak nakoniec som si to prešiel znak po znaku a sú tam na začiatku znaky 0x200E tak som to ošetril aby skopírovalo len použitelné znaky a je to OK.

foreach (char a in serialNum)
{
        if(a<='f')
        serialNum2 += a;
}

PS: ako sa tu da upravit prispevok?

 
Nahoru Odpovědět 23.3.2016 16:03
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.