2016-01-22 34 views
0

我正在編寫一個C++應用程序,並希望使用GPGME進行消息簽名,加密和密鑰管理。我知道我可以這樣加密數據:使用GPGME加密靈活的數據量

err = gpgme_op_encrypt(mContext, recipients,...); 
    if(err) { 
     // .. error handling 
    } 
    result = gpgme_op_encrypt_result(mContext); 
    if(result->invalid_recipients){ 
     //error handling 
    } 

    nbytes = gpgme_data_seek(encrypted_text, 0, SEEK_SET); 
    if(nbytes == -1) { 
     //error handling   
    } 
    buffer = malloc(MAXLEN); 
    nbytes = gpgme_data_read(encrypted_text, buffer, MAXLEN); 

但一看到我將不得不使用MAXLEN作爲限制我緩衝區中讀取加密的數據。有沒有辦法確定我的加密數據結果會提前多長時間(給出plaintex)?或者我將不得不接受靜態限制?

回答

1

我不熟悉這個特定的API,但gpgme_data_seekgpgme_data_read通話的樣子,他們可能會表現得像從文件I/O系統read()seek()。 (1)簡單地分配儘可能多的緩衝區,你可以努力(讓說N)。

(2)致電n=gpgme_data_read(...,N)直到N!=n

(3)檢查錯誤條件(我的猜測是正< 0)

繼續,直到你處理你有興趣。

+0

很好的提示的所有數據。我會研究這一點。 –