+ memcpy(iv, end - iv_len, iv_len);
+
+ /* Allocate destination decryption buffer since we do not want to modify
+ the original data buffer, since we might want to call this function
+ many times for same payload. */
+ if (hmac)
+ dst = silc_calloc(data_len - iv_len, sizeof(*dst));
+ else
+ dst = data;