Thank you for your answer.
I made all the changes and the code isn't compiling.
I'm using cmake in order to build the code.
my CMakeLists.txt contains this line in order to include openssl headers:
INCLUDE_DIRECTORIES(/usr/include/openssl/ /usr/local/include/openssl/)
The constructor of my code is :
HashEncrypt::HashEncrypt(const unsigned char *key, const unsigned char *iv, size_t ivSizeBytes)
{
// copy the 128-bit key
memcpy(_key, key, 16);
//copy the iv:
EVP_CIPHER_CTX *_ctx;
_iv = new unsigned char[ivSizeBytes];
memcpy(_iv, iv, ivSizeBytes);
//EVP_CIPHER_CTX_init(&_ctx);
_ctx = EVP_CIPHER_CTX_new();
EVP_EncryptInit_ex(_ctx, EVP_aes_128_gcm(), NULL, NULL, NULL);
EVP_CIPHER_CTX_ctrl(_ctx, EVP_CTRL_GCM_SET_IVLEN, ivSizeBytes, NULL);
EVP_EncryptInit_ex(_ctx, NULL, NULL, _key, _iv);
}
What I'm missing?
On 3 May 2017 at 12:57, Matt Caswell <matt@xxxxxxxxxxx> wrote:
On 03/05/17 10:33, Lior Koskas wrote:
> I viewed the file and the definition exists.
> I also checked that I'm picking the correct version.
>
> My problem is this line : EVP_EncryptInit_ex(&_ctx, EVP_aes_128_gcm(),
> NULL, NULL, NULL);
>
> I also tried to change the code to this two lines :
> EVP_CIPHER *EVP evp_gcm = EVP_aes_128_gcm();
You have one too many "EVP"'s in there. It should be:
const EVP_CIPHER *evp_gcm = EVP_aes_128_gcm();
Although, that really shouldn't be necessary and your original version
looks ok. What doesn't look quite right is the "&_ctx" bit. In 1.1.0 an
EVP_CIPHER_CTX is an opaque type. You cannot allocate concrete instances
of it directly.
Where previously you might have had:
EVP_CIPHER_CTX _ctx;
EVP_CIPHER_CTX_init(&_ctx);
EVP_EncryptInit_ex(&_ctx, EVP_aes_128_gcm(), NULL, NULL, NULL);
You now need to do:
EVP_CIPHER_CTX *_ctx;
_ctx = EVP_CIPHER_CTX_new();
EVP_EncryptInit_ex(_ctx, EVP_aes_128_gcm(), NULL, NULL, NULL);
...
EVP_CIPHER_CTX_free(_ctx);
I have omitted error checking code for brevity.
Matt
> EVP_EncryptInit_ex(&_ctx, evp_gcm, NULL, NULL, NULL);
>
> After the change I got this error : expected initializer before ‘evp_gcm’
>
> What am I doing wrong?
>
> On 3 May 2017 at 12:07, Matt Caswell <matt@xxxxxxxxxxx
> <mailto:matt@xxxxxxxxxxx>> wrote:
>
>
>
> On 03/05/17 09:43, Lior Koskas wrote:
> > Hi,
> >
> > I'm using EVP_aes_128_gcm and have problem with compiling it with
> > OpenSSL 1.1.0 (earlier versions are compiling).
> > Although I included <openssl/evp.h> I got this error : error:
> > ‘EVP_aes_128_gcm’ was not declared in this scope.
> >
> > I'm using CentOS 7.3.
> >
> > Which file I need to include in order to compile EVP_aes_128_gcm ?
>
> It's still declared in evp.h:
>
> const EVP_CIPHER *EVP_aes_128_gcm(void);
>
> Perhaps you are not picking up the version of evp.h that you think
> you are?
>
> Matt
>
> --
> openssl-users mailing list
> To unsubscribe:
> https://mta.openssl.org/mailman/listinfo/openssl-users
> <https://mta.openssl.org/mailman/listinfo/openssl-users >
>
>
>
>
> --
> Lior Koskas
> Software Engineer
>
>
--
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users
Lior Koskas
Software Engineer
-- openssl-users mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users