HMAC-SHA-256 karmaşasının temel bir testini kurmaya çalışıyorum ama motor kurulumunda sorun yaşıyorum. İdeal olarak sadece HMAC-SHA algoritmasını kurmak istiyorum ama şimdiye kadar bütün algoritmaların çalıştığı genel durumu bile almadım. Şu anda varsayılan sindirimleri ayarlamaya çalıştığım satırda segfaults alıyorum. Ayrıca, düzenli olarak bir Java kullanıcısıyım, bu nedenle koddaki herhangi bir hatayı işaret etmekte tereddüt etmeyin.OpenSSL'de motor başlatmayı anlama
#include <openssl/hmac.h>
#include <openssl/evp.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
unsigned char* key = (unsigned char*) "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b";
unsigned char* data = (unsigned char*) "4869205468657265";
unsigned char* expected = (unsigned char*) "b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7";
unsigned char* result;
HMAC_CTX* ctx;
ENGINE* e;
ENGINE_load_builtin_engines();
ENGINE_register_all_complete();
ENGINE_set_default_digests(e);
HMAC_CTX_init(ctx);
HMAC_Init_ex(ctx, key, 40, EVP_sha256(), e);
result = HMAC(NULL, NULL, 40, data, 16, NULL, NULL);
HMAC_CTX_cleanup(ctx);
ENGINE_finish(e);
ENGINE_free(e);
if (strcmp((char*) result, (char*) expected) == 0) {
printf("Test ok\n");
} else {
printf("Got %s instead of %s\n", result, expected);
}
}
DÜZENLEME: Program şimdi, izleyen gelişti, ama yine de HMAC_Init_ex
de segfaulting ediyorum:
unsigned char* key = (unsigned char*) "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b";
unsigned char* data = (unsigned char*) "4869205468657265";
unsigned char* expected = (unsigned char*) "b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7";
unsigned char* result;
unsigned int result_len = 64;
HMAC_CTX ctx;
ENGINE* e;
result = (unsigned char*) malloc(sizeof(char) * result_len);
e = (ENGINE*) ENGINE_new();
ENGINE_load_builtin_engines();
ENGINE_register_all_complete();
ENGINE_set_default_digests(e);
HMAC_CTX_init(&ctx);
HMAC_Init_ex(&ctx, key, 16, EVP_sha256(), e);
HMAC_Update(&ctx, data, 40);
HMAC_Final(&ctx, result, &result_len);
HMAC_CTX_cleanup(&ctx);
ENGINE_finish(e);
ENGINE_free(e);
Öneriniz için teşekkürler Martin, denedim Onları çıkardım ama hala sıkışıp kaldım. Bunu kullanmadığın hakkında MOTOR yorumunu merak ediyorum. OpenSSL'i motorsuz kullanmak mümkün mü? – Fylke