]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Add dedicated getter for the IV size to the crypter_t interface
authorMartin Willi <martin@revosec.ch>
Fri, 13 Aug 2010 09:49:42 +0000 (11:49 +0200)
committerMartin Willi <martin@revosec.ch>
Fri, 13 Aug 2010 15:11:53 +0000 (17:11 +0200)
src/libstrongswan/crypto/crypters/crypter.h
src/libstrongswan/plugins/aes/aes_crypter.c
src/libstrongswan/plugins/blowfish/blowfish_crypter.c
src/libstrongswan/plugins/des/des_crypter.c
src/libstrongswan/plugins/gcrypt/gcrypt_crypter.c
src/libstrongswan/plugins/openssl/openssl_crypter.c
src/libstrongswan/plugins/padlock/padlock_aes_crypter.c

index f052a181d7ef7c23d48fd6fe3644dcd02e079c6a..70697e207c562a48ee3ecd71c3736d7ea8a9dca7 100644 (file)
@@ -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);
 
index 9dcf61c917880ac97a726d916eab9c2bf3f4ba5f..ee6b532906ab4cfc8edf44ccfc13e74f275af252 100644 (file)
@@ -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,
index b23a7bab11669b22043e8fc17e42de177495ba2a..e37420ae80c06b7c82eaa946702b8b59e517bbc2 100644 (file)
@@ -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,
index 1b084ac29eb95be3c8143250d8e9cb216bb9d02e..eae01dfe106e9e764a764fd43655919d742990da 100644 (file)
@@ -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,
                },
index 3db5e57506f5c291cad5753180643043e890b65f..db8bfea363252133c47584c6f90127b0eeb71de0 100644 (file)
@@ -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,
index 520b2321a394d259d1051aab25b978738bc427cd..a410eee2c47789391b2f22b1a2cf9653566d307a 100644 (file)
@@ -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,
index f7a521ec23292a6b1a37fc623c0d4325aec092ff..11d8ba044b35900b45cc13d997facf206f47bd2a 100644 (file)
@@ -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,