According to the Changelog
(http://www.openssl.org/news/changelog.html) experimental EVP support
for AES-GCM is only in the (as yet unreleased) 1.1.0 branch.

Matt

On 23 May 2012 16:29, Li, David <l...@cloudshield.com> wrote:
> Ok, I found that.
>
>
>
> But this raises another question:  what to use in EVP_* APIs for AES-GCM
> mode? For instance,  the following code was OK for EVN_aes_128_ecb but won’t
> compile because it couldn’t find EVP_aes_256_gcm.
>
>
>
> EVP_CIPHER_CTX ctx;
>
>   EVP_CIPHER_CTX_init(&ctx);
>
>   EVP_EncryptInit_ex(&ctx,
>
>                                      EVP_aes_128_ecb(), //can't find
> EVP_aes_256_gcm
>
>
>
> -          David
>
> -
>
>
>
> From: owner-openssl-us...@openssl.org
> [mailto:owner-openssl-us...@openssl.org] On Behalf Of Matt Caswell
> (fr...@baggins.org)
> Sent: Tuesday, May 22, 2012 10:49 AM
> To: openssl-users@openssl.org
> Subject: Re: Where is EVP_aes_256_gcm?
>
>
>
> On 22/05/12 17:35, Li, David wrote:
>
> Hi All,
>
> I can’t find this function in the source tree? It seems pointing to
> FIPS_aes_256_gcm.  All I see is:
>
>
>
> grep -r FIPS_evp_aes_256_gcm .
>
> ./crypto/evp/evp_fips.c:const EVP_CIPHER *EVP_aes_256_gcm(void)  { return
> FIPS_evp_aes_256_gcm(); }
>
>
>
> Anyone know where it is?
>
>
>
> David
>
>
>
> Its defined in ./crypto/evp/e_aes.c
>
> Its cunningly hidden. See this line:
>
> BLOCK_CIPHER_custom(NID_aes,256,1,12,gcm,GCM,
>         EVP_CIPH_FLAG_FIPS|EVP_CIPH_FLAG_AEAD_CIPHER|CUSTOM_FLAGS)
>
> With BLOCK_CIPHER_custom defined as:
>
> #define BLOCK_CIPHER_custom(nid,keylen,blocksize,ivlen,mode,MODE,flags) \
> static const EVP_CIPHER aesni_##keylen##_##mode = { \
>     nid##_##keylen##_##mode,blocksize, \
>     (EVP_CIPH_##MODE##_MODE==EVP_CIPH_XTS_MODE?2:1)*keylen/8, ivlen, \
>     flags|EVP_CIPH_##MODE##_MODE,    \
>     aesni_##mode##_init_key,    \
>     aesni_##mode##_cipher,        \
>     aes_##mode##_cleanup,        \
>     sizeof(EVP_AES_##MODE##_CTX),    \
>     NULL,NULL,aes_##mode##_ctrl,NULL }; \
> static const EVP_CIPHER aes_##keylen##_##mode = { \
>     nid##_##keylen##_##mode,blocksize, \
>     (EVP_CIPH_##MODE##_MODE==EVP_CIPH_XTS_MODE?2:1)*keylen/8, ivlen, \
>     flags|EVP_CIPH_##MODE##_MODE,    \
>     aes_##mode##_init_key,        \
>     aes_##mode##_cipher,        \
>     aes_##mode##_cleanup,        \
>     sizeof(EVP_AES_##MODE##_CTX),    \
>     NULL,NULL,aes_##mode##_ctrl,NULL }; \
> const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \
> { return AESNI_CAPABLE?&aesni_##keylen##_##mode:&aes_##keylen##_##mode; }
>
>
> Matt
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to