2012-03-13 68 views
2
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); 
    } 
} 

這將導致以下錯誤:發生d編程:OpenSSL的RSA向前參考編譯器錯誤

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

錯誤只要我嘗試在RSA結構來訪問一個元素。有任何想法嗎?

+0

任何有什麼想法? – John 2012-03-13 05:42:36

+0

你用什麼命令來編譯你的程序? – Bernard 2012-03-13 07:34:03

回答

3

我能夠與經常更新Github上OpenSSL Deimos的人之一取得聯繫,並能夠得到他的回覆。

基本上,OpenSSL C API在一些不需要確切定義的地方轉發聲明瞭結構,並且這些定義在某些D模塊中存在。

他向存儲庫請求了一個拉,他所做的更改將解決您當前的問題。這裏是鏈接:

Deimos: openssl update

1

我不確定OpenSSL綁定是完成還是測試。他們在這裏完全打破dmd 2.057。最初的問題是一個dmd錯誤;移動import deimos.openssl.rsa之前opensslimport應該更改錯誤的東西。這可以通過在受影響的模塊中導入pkcs7來解決...發現另一個錯誤。

我會在openssl deimos項目上打開一個問題。