私は AES/GCM を使用していますが、以下は AES/CBC などの他のモードに関する一般的な質問です。に次の呼び出しがありますlibgcrypt
。
#define COUNTOF(x) ( sizeof(x) / sizeof(x[0]) )
#define ROUNDUP(x, b) ( (x) ? (((x) + (b - 1)) / b) * b : b)
const byte cipher[] = { 0xD0,0x6D,0x69,0x0F ... };
byte recovered[ ROUNDUP(COUNTOF(cipher), 16) ];
...
err = gcry_cipher_decrypt(
handle, // gcry_cipher_hd_t
recovered, // void *
COUNTOF(recovered), // size_t
cipher, // const void *
COUNTOF(cipher)); // size_t
結果として復元されたテキストのサイズを判断する方法がわかりません。Working with cipher handlesリファレンスを確認しましたが、議論されていません (そして、'pad のヒットは 0 件です)。およびのlibgrcrypt
セルフ テストも確認しましたが、同じオーバーサイズのバッファが使用され、バッファが実際のサイズに切り詰められることはありません。tests/basic.c
tests/fipsdrv.c
バッファに返されたデータのサイズを確認するにはどうすればよいrecovered
ですか?