Ilissa Geschrieben 5. Mai 2010 Geschrieben 5. Mai 2010 Hallo, Ich habe ein Programm ecdsa-Chifrierverfahren! Der vom Code her compiliert und functioniert nur die folgende Methode: EVP_PKEY* pkey = PEM_read_bio_PUBKEY(mem,0,0,0); lierfert kein Wert zurück deswegen bleibt pkey undefiniert und somit kommt es zum problem : Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. T..... mein code sieht wie folgt aus: #include "stdafx.h" #include "string.h" #include "openssl/evp.h" #include "openssl/pem.h" #include "openssl/sha.h" #include "openssl/err.h" int _tmain(int argc, _TCHAR* argv[]) { CRYPTO_malloc_init(); OpenSSL_add_all_algorithms(); unsigned char sha1sum[SHA_DIGEST_LENGTH]; char* sig = "........................"; char* data = "blabla bla"; char* key = "keyyyyyyyyyyyyyyyyyyyy"; // make hash of data SHA1((const unsigned char*)data, strlen(data), sha1sum); // load key BIO* b64 = BIO_new(BIO_f_base64()); BIO* mem = BIO_new(BIO_s_mem()); BIO_puts(mem,key); mem = BIO_push(b64,mem); [COLOR="red"]EVP_PKEY* pkey=PEM_read_bio_PUBKEY(mem,0,0,0);[/COLOR] if( pkey == 0){ //ERR_print_errors_fp(stdout); printf("Fehler"); } EC_KEY* eckey = EVP_PKEY_get1_EC_KEY(pkey); // verify signature int ret = ECDSA_verify(0, sha1sum,SHA_DIGEST_LENGTH, (unsigned char*) sig, strlen(sig), eckey); if (ret == -1) { /* error */ } else if (ret == 0) { /* incorrect signature */ } else /* ret == 1 */ { /* signature ok */ } return 0; } gibt es eine andere Methode in Opensource das funktionieren würde? Danke
Ilissa Geschrieben 6. Mai 2010 Autor Geschrieben 6. Mai 2010 Kann niemand mir bitte helfen oder villeicht ein Forum vorschlagen die sich mit ECDSA auskennen?
Klotzkopp Geschrieben 6. Mai 2010 Geschrieben 6. Mai 2010 Bitte kein Threadpushing, siehe Boardregeln. Ist dein Key wirklich "keyyyyyyyyyyyyyyyyyyyy" oder hast du das nur zu Geheimhaltungszwecken gemacht?
Ilissa Geschrieben 6. Mai 2010 Autor Geschrieben 6. Mai 2010 OK, ne ist wirklich kein "keyyyyyy" ich habe es nur Geheimhaltungszwecken gemacht... Naja die Daten und das Key aendert sich jedes mal, wenn es wichtig ist dann kann ich die auch angeben, mir geht es um den Prinzip, die Signatur überprüfung
Klotzkopp Geschrieben 6. Mai 2010 Geschrieben 6. Mai 2010 Aber der Key ist schon im passenden Format, und nicht irgendein Text?
Ilissa Geschrieben 6. Mai 2010 Autor Geschrieben 6. Mai 2010 ja, hier ist ein Bsp: char* sig = "BIGACaAHmoSDLeLY6lILMbiw63ClZaUle9VLTdEv+h543qnQRxGENEv2vKrpE5gTzp40Exem72n0aHltHzOkdF03BKkhsmP6Kh9cUfgksa0pLPNeKIOLKL/iZM50TtATp/le37GOnPQRS6qbEq295xr95q0R5cruWVxaml5HI7QA6+E="; char* data = ";\"4399901870215\";\"5701000536-02\";\"4311596435982\";\"20080829082706686\";"; char* key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCXKToZE0gv4P/JmvcaUSPHHHY7dU4gw/no/dsYJ/QEKHvM95J+sAjoGp0L4COPHBdlPVVbjkfeZjfCVAL9zzlFu3gZIFbl7lrh5g43ieNs7R4mlWFJQWLmh/bwcdSHOBvBRO4dfSh9WfnNYQIjsnNh108P99nfInjZwQDTqX1FzwIDAQAB";
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden