cipher = EVP_rc2_ecb();
break;
#endif /* OPENSSL_NO_RC2 */
+#ifndef OPENSSL_NO_NULL
+ case CRYPTO_CIPHER_NULL:
+ cipher = EVP_enc_null();
+ break;
+#endif /* OPENSSL_NO_NULL */
default:
os_free(ctx);
return NULL;
static const struct ikev2_encr_alg ikev2_encr_algs[] = {
{ ENCR_AES_CBC, 16, 16 }, /* only 128-bit keys supported for now */
- { ENCR_3DES, 24, 8 }
+ { ENCR_3DES, 24, 8 },
+ { ENCR_NULL, 0, 0 }
};
#define NUM_ENCR_ALGS ARRAY_SIZE(ikev2_encr_algs)
case ENCR_AES_CBC:
encr_alg = CRYPTO_CIPHER_ALG_AES;
break;
+ case ENCR_NULL:
+ encr_alg = CRYPTO_CIPHER_NULL;
+ break;
default:
wpa_printf(MSG_DEBUG, "IKEV2: Unsupported encr alg %d", alg);
return -1;
case ENCR_AES_CBC:
encr_alg = CRYPTO_CIPHER_ALG_AES;
break;
+ case ENCR_NULL:
+ encr_alg = CRYPTO_CIPHER_NULL;
+ break;
default:
wpa_printf(MSG_DEBUG, "IKEV2: Unsupported encr alg %d", alg);
return -1;
return -1;
}
- pad_len = iv_len - (wpabuf_len(plain) + 1) % iv_len;
- if (pad_len == iv_len)
+ if (iv_len) {
+ pad_len = iv_len - (wpabuf_len(plain) + 1) % iv_len;
+ if (pad_len == iv_len)
+ pad_len = 0;
+ } else {
+ /* Avoid padding when not necessary */
pad_len = 0;
+ }
+
wpabuf_put(plain, pad_len);
wpabuf_put_u8(plain, pad_len);