Zum Inhalt springen

Microsoft Enhanced RSA AES Provider mit C++ ansprechen


Empfohlene Beiträge

Geschrieben

Hallöchen liebe Forums-Community,

ich arbeite mit C++ und würde gerne den im Titel genannten Cryptographischen Provider verwenden. Doch mit Bloodshed Dev C++ kann ich ihn irgendwie nicht korrekt mit CryptAquireContext ansprechen. Auch wenn ich WinCrypt.h inkludiere.

     
if(CryptAcquireContext(&hProvKey,NULL,static_cast<LPCTSTR>("MS_ENH_RSA_AES_PROV"),PROV_RSA_AES,0)){

std::cout<<"Kontext erfolgreich erstellt"<<std::endl;}

else{std::cout<<"Es ist ein Fehler aufgetreten"<<std::endl; std::cout<<"Fehler: "<<GetLastError()<<std::endl;}
[/PHP]

Auf diese Art compiliert es zwar, aber GetLastError haut dann immer noch einen Fehler raus.

[code]2148073497[/CODE]
durch Google habe ich herausbekommen, das der Fehler diese Meldung zum Hintergrund hat
[CODE]NTE_KEYSET_NOT_DEF[/code]

Bedeutet das, dass der im Titel genannte Provider auf meinem Lappi mit Win 7 nicht installiert ist?

Könnt ihr mir da weiterhelfen?

Viele Grüße

Astasor

Geschrieben

Danke für deine Antwort, Klotzi. :)

Eigentlich brauch man den Static_Cast da nicht, da es fest definierte Konstanten gibt.

Zu sehen auf dieser Seite Cryptographic Provider Names

Der Provider mit dem ich gerne arbeiten würde, ist der hier MS_ENH_RSA_AES_PROV. Eigentlch müsste ich in die CryptAquireContext Funktion statt des static_casts nur diesen Schriftzug einsetzen und zwar auf die folgende Art.

     
if(CryptAcquireContext(&hProvKey,NULL,MS_ENH_RSA_AES_PROV,PROV_RSA_AES,0))

{std::cout<<"Kontext erfolgreich erstellt"<<std::endl;}

else{std::cout<<"Es ist ein Fehler aufgetreten"<<std::endl; std::cout<<"Fehler: "<<GetLastError()<<std::endl;}
[/PHP]

Doch dann schreibt mir Bloodshed Dev C++, das es

[code]MS_ENH_RSA_AES_PROV[/CODE]
nicht kennt. In der Funktionsapi ist der dritte Parameter als LPCTSTR angegeben. Zu sehen hier als Auszug:
[CODE]BOOL WINAPI CryptAcquireContext( _Out_ HCRYPTPROV *phProv, _In_ LPCTSTR pszContainer, _In_ LPCTSTR pszProvider, _In_ DWORD dwProvType, _In_ DWORD dwFlags );[/code]

Deswegen dachte ich, ich umgehe die Konstante, die vielleicht nur fehlt und caste es direkt dahin. Doch das funktioniert auch nicht. Deswegen frage ich jetzt hier: Was kann ich tun, um an diesen Provider zu kommen. Oder hatte jemand schon mal dasselbe Problem wie ich?

Oder könnte es gar an meiner verwendeten IDE selbst liegen? Könnt ihr mir eine andere Entwicklungsumgebung mit integriertem Compiler empfehlen?

Denn die andere Alternative wäre, das RIJNDAEL selbst zu implementieren, eine Arbeit die ich mir liebend gerne ersparen würde.

Viele Grüße

Astasor

Geschrieben
Deswegen dachte ich, ich umgehe die Konstante, die vielleicht nur fehlt und caste es direkt dahin.
Das hätte nur dann Aussicht auf Erfolg, wenn die Konstante wirklich dieser Zeichenkette entsprechen würde. Da dieser Provider erst seit Windows XP verfügbar ist, ist das Symbol in wincrypt.h nur definiert, wenn du mindestens für XP baust. Möglicherweise hast du die dafür notwendigen Symbole nicht definiert.

Auf der verlinkten Seite steht die richtige Zeichenkette: "Microsoft Enhanced RSA and AES Cryptographic Provider". Aber bitte nicht casten.

Oder könnte es gar an meiner verwendeten IDE selbst liegen? Könnt ihr mir eine andere Entwicklungsumgebung mit integriertem Compiler empfehlen?
Was spricht gegen Visual Studio Express?
Geschrieben

Mit der anderen Zeichenkette und einer #define-Anweisung funktioniert es. Tja, hätte ich nur mal richtig hingeschaut -__-.

Ich werde mir VS-Express mal genauer anschauen. Vielleicht steige ich auch um.

Wieder vielen Dank, Klotzkopp ^___^ Bis zum nächsten mal.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...