publickeyToken berechnen



  • Hallo, wie kann ich den publickeyToken eines Zertifikates berechnen?
    Ich habe es bisher so versucht:

    HCERTSTORE Zertifikatsspeicher=NULL;
    PCCERT_CONTEXT Auswahldialog= NULL; 
    Zertifikatsspeicher=CertOpenStore(CERT_STORE_PROV_SYSTEM,0,NULL,CERT_SYSTEM_STORE_CURRENT_USER,(TCHAR*)QString("My").utf16());
    Auswahldialog=CryptUIDlgSelectCertificateFromStore(Zertifikatsspeicher,this->winId(),(TCHAR*)trUtf8("Bitte das Zertifikat zum signieren auswählen").utf16(),(TCHAR*)tr("Welches Zertifikat soll genutzt werden?").utf16(),CRYPTUI_SELECT_LOCATION_COLUMN,0,NULL);
    QByteArray OeffentlicherSchluessel((char*)Auswahldialog->pCertInfo->SubjectPublicKeyInfo.PublicKey.pbData,
    										Auswahldialog->pCertInfo->SubjectPublicKeyInfo.PublicKey.cbData);
    HCRYPTPROV Cryptkontext;
    if(CryptAcquireContext(&Cryptkontext,NULL,NULL,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT))
    {
       HCRYPTHASH Cryptohash;
       if(CryptCreateHash(Cryptkontext,CALG_SHA1,0,0,&Cryptohash))
       {         if(CryptHashData(Cryptohash,(BYTE*)OeffentlicherSchluessel.data(),OeffentlicherSchluessel.size(),0))
          {
             QByteArray Puffer;
    	 DWORD Puffergroesse;
    	 DWORD Parameterlaenge=sizeof(DWORD);  
             if(CryptGetHashParam(Cryptohash,HP_HASHSIZE,(BYTE*)&Puffergroesse,&Parameterlaenge,0)))
             {
                   Puffer.resize(Puffergroesse);
                   if(CryptGetHashParam(Cryptohash,HP_HASHVAL,(BYTE*)Puffer.data(),&Puffergroesse,0))
                   {
                       qDebug()<<K_FeldNachHex(Puffer.right(8));
                   }
             }  
          }
       }
    }
    

    Nur leider stimmt der Wert nicht:(
    Hat jemand sowas schon mal gemacht?



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Was willst Du denn da Berechnen??? Ein Token ist schon fertig, da muss man nichts berechnen... 😕



  • Doch, laut MS sollen die letzen 8 Bytes der SHA-1 Prüfsumme vom öffentliche Schlüssel sein. Doch das scheint nicht zu stimmen, da das Ergebnis sich von dem des Pktextract Tools unterscheidet.
    Siehe in diesem Dokument
    Nur leider ist wie oben schon erwähnt das Tool im neuen SDK nicht mehr dabei. Für ein Programm, was Manifeste erstellt, wird diese Berechnung aber benötigt.


Log in to reply