使用 GPGME 加密灵活的数据量
Encrypting flexible amount of data with 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 作为读取缓冲区中加密数据的限制。有没有办法提前确定我的加密数据结果多长时间(给定明文)?还是我必须接受静态限制?
我不熟悉这个特定的 API 但 gpgme_data_seek
和 gpgme_data_read
调用看起来它们可能表现得像 read()
和 seek()
来自文件 I/O 系统。
(1) 尽可能多地分配缓冲区(假设为 N)。
(2) 调用 n=gpgme_data_read(...,N)
直到 N!=n
。
(3) 检查错误条件(我的猜测是 n<0)
继续,直到您处理完所有感兴趣的数据。
我目前正在编写 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 作为读取缓冲区中加密数据的限制。有没有办法提前确定我的加密数据结果多长时间(给定明文)?还是我必须接受静态限制?
我不熟悉这个特定的 API 但 gpgme_data_seek
和 gpgme_data_read
调用看起来它们可能表现得像 read()
和 seek()
来自文件 I/O 系统。
(1) 尽可能多地分配缓冲区(假设为 N)。
(2) 调用 n=gpgme_data_read(...,N)
直到 N!=n
。
(3) 检查错误条件(我的猜测是 n<0)
继续,直到您处理完所有感兴趣的数据。