Class: CoBreak::OpenSSL::SHA2_256

Inherits:
Object
  • Object
show all
Defined in:
ext/cobreak/cobreak_openssl.c

Class Method Summary collapse

Class Method Details

.hexdigest(input) ⇒ Object



153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# File 'ext/cobreak/cobreak_openssl.c', line 153

VALUE sha2_256_hexdigest(VALUE self, VALUE input) {
    // Convertir el valor Ruby a una cadena C
    char *str = RSTRING_PTR(input);
    int length = RSTRING_LEN(input); // Obtener la longitud de la cadena
    unsigned char digest[SHA256_DIGEST_LENGTH]; // SHA-256 produce un hash de 32 bytes
    char out[65]; // 32 bytes * 2 para hexadecimal + 1 para el terminador

    // Calcular el hash SHA-256
    SHA256((unsigned char*)str, length, digest);

    // Convertir el hash a una cadena hexadecimal
    for (int n = 0; n < SHA256_DIGEST_LENGTH; ++n) {
        sprintf(&(out[n * 2]), "%02x", (unsigned int)digest[n]);
    }
    out[64] = '\0'; // Terminar la cadena

    VALUE result = rb_str_new2(out); // Crear una nueva cadena Ruby
    return result;
}