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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...