使用GPGME加密灵活的数据量

时间:2016-01-22 12:34:34

标签: c++ encryption gpgme

我目前正在编写C ++应用程序,并希望使用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作为读取缓冲区中加密数据的限制。有没有办法确定我的加密数据结果将提前多长时间(给定明文)?或者我必须接受静态限制吗?

1 个答案:

答案 0 :(得分:1)

我不熟悉此特定API,但gpgme_data_seekgpgme_data_read调用看起来像文件I / O系统中的read()seek()

(1)只需尽可能多地分配缓冲区(假设为N)。

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

(3)检查错误情况(我的猜测是n <0)

继续,直到您处理了您感兴趣的所有数据为止。