diff options
author | Martin Willi <martin@revosec.ch> | 2010-08-13 11:49:42 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2010-08-13 17:11:53 +0200 |
commit | f7c04c5b377ebb8274f2534b58676d20a153d73d (patch) | |
tree | 970ac625f8d2bd5dc5d81c3f5cc7c32b4b2da838 | |
parent | 7156b951f5e54c3adc5db299f807acfb74c13ccd (diff) | |
download | strongswan-f7c04c5b377ebb8274f2534b58676d20a153d73d.tar.bz2 strongswan-f7c04c5b377ebb8274f2534b58676d20a153d73d.tar.xz |
Add dedicated getter for the IV size to the crypter_t interface
-rw-r--r-- | src/libstrongswan/crypto/crypters/crypter.h | 21 | ||||
-rw-r--r-- | src/libstrongswan/plugins/aes/aes_crypter.c | 7 | ||||
-rw-r--r-- | src/libstrongswan/plugins/blowfish/blowfish_crypter.c | 7 | ||||
-rw-r--r-- | src/libstrongswan/plugins/des/des_crypter.c | 7 | ||||
-rw-r--r-- | src/libstrongswan/plugins/gcrypt/gcrypt_crypter.c | 10 | ||||
-rw-r--r-- | src/libstrongswan/plugins/openssl/openssl_crypter.c | 7 | ||||
-rw-r--r-- | src/libstrongswan/plugins/padlock/padlock_aes_crypter.c | 7 |
7 files changed, 59 insertions, 7 deletions
diff --git a/src/libstrongswan/crypto/crypters/crypter.h b/src/libstrongswan/crypto/crypters/crypter.h index f052a181d..70697e207 100644 --- a/src/libstrongswan/crypto/crypters/crypter.h +++ b/src/libstrongswan/crypto/crypters/crypter.h @@ -81,8 +81,8 @@ struct crypter_t { /** * Encrypt a chunk of data and allocate space for the encrypted value. * - * The length of the iv must equal to get_block_size(), while the length - * of data must be a multiple it. + * The length of the iv must equal to get_iv_size(), while the length + * of data must be a multiple of get_block_size(). * If encrypted is NULL, the encryption is done in-place (overwriting data). * * @param data data to encrypt @@ -95,8 +95,8 @@ struct crypter_t { /** * Decrypt a chunk of data and allocate space for the decrypted value. * - * The length of the iv must equal to get_block_size(), while the length - * of data must be a multiple it. + * The length of the iv must equal to get_iv_size(), while the length + * of data must be a multiple of get_block_size(). * If decrpyted is NULL, the encryption is done in-place (overwriting data). * * @param data data to decrypt @@ -109,14 +109,21 @@ struct crypter_t { /** * Get the block size of the crypto algorithm. * - * @return block size in bytes + * @return block size in bytes */ size_t (*get_block_size) (crypter_t *this); /** + * Get the IV size of the crypto algorithm. + * + * @return initialization vector size in bytes + */ + size_t (*get_iv_size)(crypter_t *this); + + /** * Get the key size of the crypto algorithm. * - * @return key size in bytes + * @return key size in bytes */ size_t (*get_key_size) (crypter_t *this); @@ -125,7 +132,7 @@ struct crypter_t { * * The length of the key must match get_key_size(). * - * @param key key to set + * @param key key to set */ void (*set_key) (crypter_t *this, chunk_t key); diff --git a/src/libstrongswan/plugins/aes/aes_crypter.c b/src/libstrongswan/plugins/aes/aes_crypter.c index 9dcf61c91..ee6b53290 100644 --- a/src/libstrongswan/plugins/aes/aes_crypter.c +++ b/src/libstrongswan/plugins/aes/aes_crypter.c @@ -1416,6 +1416,12 @@ METHOD(crypter_t, get_block_size, size_t, return AES_BLOCK_SIZE; } +METHOD(crypter_t, get_iv_size, size_t, + private_aes_crypter_t *this) +{ + return AES_BLOCK_SIZE; +} + METHOD(crypter_t, get_key_size, size_t, private_aes_crypter_t *this) { @@ -1545,6 +1551,7 @@ aes_crypter_t *aes_crypter_create(encryption_algorithm_t algo, size_t key_size) .encrypt = _encrypt, .decrypt = _decrypt, .get_block_size = _get_block_size, + .get_iv_size = _get_iv_size, .get_key_size = _get_key_size, .set_key = _set_key, .destroy = _destroy, diff --git a/src/libstrongswan/plugins/blowfish/blowfish_crypter.c b/src/libstrongswan/plugins/blowfish/blowfish_crypter.c index b23a7bab1..e37420ae8 100644 --- a/src/libstrongswan/plugins/blowfish/blowfish_crypter.c +++ b/src/libstrongswan/plugins/blowfish/blowfish_crypter.c @@ -139,6 +139,12 @@ METHOD(crypter_t, get_block_size, size_t, return BLOWFISH_BLOCK_SIZE; } +METHOD(crypter_t, get_iv_size, size_t, + private_blowfish_crypter_t *this) +{ + return BLOWFISH_BLOCK_SIZE; +} + METHOD(crypter_t, get_key_size, size_t, private_blowfish_crypter_t *this) { @@ -174,6 +180,7 @@ blowfish_crypter_t *blowfish_crypter_create(encryption_algorithm_t algo, size_t .encrypt = _encrypt, .decrypt = _decrypt, .get_block_size = _get_block_size, + .get_iv_size = _get_iv_size, .get_key_size = _get_key_size, .set_key = _set_key, .destroy = _destroy, diff --git a/src/libstrongswan/plugins/des/des_crypter.c b/src/libstrongswan/plugins/des/des_crypter.c index 1b084ac29..eae01dfe1 100644 --- a/src/libstrongswan/plugins/des/des_crypter.c +++ b/src/libstrongswan/plugins/des/des_crypter.c @@ -1523,6 +1523,12 @@ METHOD(crypter_t, get_block_size, size_t, return sizeof(des_cblock); } +METHOD(crypter_t, get_iv_size, size_t, + private_des_crypter_t *this) +{ + return sizeof(des_cblock); +} + METHOD(crypter_t, get_key_size, size_t, private_des_crypter_t *this) { @@ -1559,6 +1565,7 @@ des_crypter_t *des_crypter_create(encryption_algorithm_t algo) INIT(this, .public.crypter = { .get_block_size = _get_block_size, + .get_iv_size = _get_iv_size, .get_key_size = _get_key_size, .destroy = _destroy, }, diff --git a/src/libstrongswan/plugins/gcrypt/gcrypt_crypter.c b/src/libstrongswan/plugins/gcrypt/gcrypt_crypter.c index 3db5e5750..db8bfea36 100644 --- a/src/libstrongswan/plugins/gcrypt/gcrypt_crypter.c +++ b/src/libstrongswan/plugins/gcrypt/gcrypt_crypter.c @@ -83,6 +83,15 @@ METHOD(crypter_t, get_block_size, size_t, return len; } +METHOD(crypter_t, get_iv_size, size_t, + private_gcrypt_crypter_t *this) +{ + size_t len = 0; + + gcry_cipher_algo_info(this->alg, GCRYCTL_GET_BLKLEN, NULL, &len); + return len; +} + METHOD(crypter_t, get_key_size, size_t, private_gcrypt_crypter_t *this) { @@ -219,6 +228,7 @@ gcrypt_crypter_t *gcrypt_crypter_create(encryption_algorithm_t algo, .encrypt = _encrypt, .decrypt = _decrypt, .get_block_size = _get_block_size, + .get_iv_size = _get_iv_size, .get_key_size = _get_key_size, .set_key = _set_key, .destroy = _destroy, diff --git a/src/libstrongswan/plugins/openssl/openssl_crypter.c b/src/libstrongswan/plugins/openssl/openssl_crypter.c index 520b2321a..a410eee2c 100644 --- a/src/libstrongswan/plugins/openssl/openssl_crypter.c +++ b/src/libstrongswan/plugins/openssl/openssl_crypter.c @@ -162,6 +162,12 @@ METHOD(crypter_t, get_block_size, size_t, return this->cipher->block_size; } +METHOD(crypter_t, get_iv_size, size_t, + private_openssl_crypter_t *this) +{ + return this->cipher->block_size; +} + METHOD(crypter_t, get_key_size, size_t, private_openssl_crypter_t *this) { @@ -194,6 +200,7 @@ openssl_crypter_t *openssl_crypter_create(encryption_algorithm_t algo, .encrypt = _encrypt, .decrypt = _decrypt, .get_block_size = _get_block_size, + .get_iv_size = _get_iv_size, .get_key_size = _get_key_size, .set_key = _set_key, .destroy = _destroy, diff --git a/src/libstrongswan/plugins/padlock/padlock_aes_crypter.c b/src/libstrongswan/plugins/padlock/padlock_aes_crypter.c index f7a521ec2..11d8ba044 100644 --- a/src/libstrongswan/plugins/padlock/padlock_aes_crypter.c +++ b/src/libstrongswan/plugins/padlock/padlock_aes_crypter.c @@ -125,6 +125,12 @@ METHOD(crypter_t, get_block_size, size_t, return AES_BLOCK_SIZE; } +METHOD(crypter_t, get_iv_size, size_t, + private_padlock_aes_crypter_t *this) +{ + return AES_BLOCK_SIZE; +} + METHOD(crypter_t, get_key_size, size_t, private_padlock_aes_crypter_t *this) { @@ -172,6 +178,7 @@ padlock_aes_crypter_t *padlock_aes_crypter_create(encryption_algorithm_t algo, .encrypt = _encrypt, .decrypt = _decrypt, .get_block_size = _get_block_size, + .get_iv_size = _get_iv_size, .get_key_size = _get_key_size, .set_key = _set_key, .destroy = _destroy, |