D Программирование: ошибка компилятора прямой ссылки openssl rsa - PullRequest
2 голосов
/ 13 марта 2012
import std.stdio;
import deimos.openssl.bn;
import deimos.openssl.rsa;

const KEY_SIZE = 1024;

void main(string[] args) {
    if (args.length < 1) {
        writeln("too few arguments");
    }

    RSA* rsa = RSA_new();
    rsa = RSA_generate_key(KEY_SIZE, RSA_F4, null, null);
    if(rsa==null) {
        writeln("failure");
    }
    else {
        writeln("success");

        // error generated by the line below
        if(!BN_generate_prime(rsa.p, (KEY_SIZE/2), 1, null, null, null, null)) {
            writeln("prime_failure");
        }
        else {
            writeln("prime success");
        }

        RSA_free(rsa);
    }   
}

Это приводит к следующей ошибке:

rsa.d(21): Error: struct rsa_st is forward referenced

Ошибка возникает каждый раз, когда я пытаюсь получить доступ к элементу в структуре rsa. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 13 марта 2012

Мне удалось связаться с одним из людей, который часто обновляет OpenSSL Deimos на github и смог получить от него ответ.

По существу, в некоторых местах структуры OpenSSL C API заранее объявляются, где точные определения не требуются, и они застряли в некоторых из модулей D.

Он запросил загрузку в хранилище, и внесенные изменения исправят вашу текущую проблему. Вот ссылка:

Deimos: обновление openssl

1 голос
/ 13 марта 2012

Я не уверен, что привязки OpenSSL выполнены или проверены.Они полностью разбиты на dmd 2.057 здесь.Первоначальная проблема - ошибка dmd;перемещение import deimos.openssl.rsa перед другим openssl import должно изменить ошибку на что-то другое.Что можно решить, импортировав pkcs7 в затронутый модуль ... что обнаруживает другую ошибку .

Я бы открыл вопрос по проекту openssl deimos.

...