Generate Diffie-Hellman keys

$ cat main.c
#include <stdlib.h>
#include <stdio.h>
#include <openssl/dh.h>
#include <openssl/engine.h>
typedef struct dh_st DH;

# gcc main.c -lssl -lcrypto -o main

int generateDHKey(int);
int main(int argc, char *argv[]){
    printf("Hello\n");

    generateDHKey(2048);

    return 0;
}
int generateDHKey(int keySize){
    DH *tempPrivKey = NULL;
    int res = 0;
    int sizeDH = 0;
    FILE *f = NULL;

    tempPrivKey = DH_new();
    DH_generate_parameters_ex(tempPrivKey, keySize, DH_GENERATOR_2, NULL);

    if (tempPrivKey == NULL){
        printf("Failed to generate DH\n");
        return -1;
    }
    res = DH_generate_key(tempPrivKey);

    if (res != 1){
        printf("Failed to generate private key");
        return -1;
    }
    sizeDH = DH_size(tempPrivKey);
    printf("Size: %d\n", sizeDH);

    f = fopen("dhparam", "w");
    DHparams_print_fp(f, tempPrivKey);
    fclose(f);

    f = fopen("dhKey", "w");
    PEM_write_DHparams(f, tempPrivKey);
    fclose(f);

    DH_free(tempPrivKey);
    return 0;
}
$ gcc main.c -lssl -lcrypto -o main