cisco / libsrtp

Library for SRTP (Secure Realtime Transport Protocol)
Other
1.23k stars 476 forks source link

Is 2.2.X or 2.3.0 planned? #465

Closed ibc closed 4 years ago

ibc commented 5 years ago

I see many commits since 2.2.0 release. Just wondering if it would make sense to release a new version with those new additions and improvements. Note that 2.2.0 GIT tag was created in 16 May 2018, more than a year ago.

BTW there are also lot of unused/inactive branches. Does it make sense to hold all them?

pabuhler commented 5 years ago

Hi @ibc , yes you are right it is time for a new release. We will work at releasing 2.3.0 in the coming months, there are just few small things to wrap up first.

In there is a one or two branches that could be removed but in general we would like to keep older release branch.

ibc commented 5 years ago

Thanks for the update, @pabuhler.

pabuhler commented 4 years ago

version 2.3.0 has now been released!

ibc commented 4 years ago

Congrats!

Just a minor things: CHANGES file still says "2.3.0-pre".

pabuhler commented 4 years ago

Thanks for pointing that out. I have changed it in master and updated note to ensure it is fixed up during release next time.

ibc commented 4 years ago

I just upgraded from 2.2.0 to 2.3.0 and got several errors when building my app:

  CC(target) /Users/ibc/src/v3-mediasoup/worker/out/Release/obj.target/libsrtp/deps/libsrtp/srtp/crypto/cipher/aes_gcm_ossl.o
../deps/libsrtp/srtp/crypto/cipher/aes_gcm_ossl.c:126:23: error: use of undeclared identifier 'srtp_aes_gcm_128'; did you mean 'srtp_aes_icm_128'?
        (*c)->type = &srtp_aes_gcm_128;
                      ^~~~~~~~~~~~~~~~
                      srtp_aes_icm_128
../deps/libsrtp/srtp/crypto/include/cipher_types.h:48:33: note: 'srtp_aes_icm_128' declared here
extern const srtp_cipher_type_t srtp_aes_icm_128;
                                ^
../deps/libsrtp/srtp/crypto/cipher/aes_gcm_ossl.c:132:23: error: use of undeclared identifier 'srtp_aes_gcm_256'; did you mean 'srtp_aes_icm_256'?
        (*c)->type = &srtp_aes_gcm_256;
                      ^~~~~~~~~~~~~~~~
                      srtp_aes_icm_256
../deps/libsrtp/srtp/crypto/include/cipher_types.h:49:33: note: 'srtp_aes_icm_256' declared here
extern const srtp_cipher_type_t srtp_aes_icm_256;

I use GYP to build the app so I also use a libsrtp.gyp file I copied from libwebrtc code and then adapted to my app. I've updated it with new file changes in libsrtp 2.3.0 so no idea what is wrong. It works if I disable OpenSSL BTW. When with OpenSSL support, it's clear that when aes_gcm_ossl.c is being compiled it cannot find srtp_aes_gcm_128 symbol.

Just in case, do I miss something? Thanks a lot.

ibc commented 4 years ago

Ok, it seems that GCM define is needed. This seems to be new. In cipher_types:

extern const srtp_cipher_type_t srtp_null_cipher;
extern const srtp_cipher_type_t srtp_aes_icm_128;
extern const srtp_cipher_type_t srtp_aes_icm_256;
#ifdef GCM
extern const srtp_cipher_type_t srtp_aes_icm_192;
extern const srtp_cipher_type_t srtp_aes_gcm_128;
extern const srtp_cipher_type_t srtp_aes_gcm_256;
#endif
extern const srtp_cipher_type_t srtp_null_cipher;
extern const srtp_cipher_type_t srtp_aes_icm_128;
extern const srtp_cipher_type_t srtp_aes_icm_256;
#ifdef OPENSSL
extern const srtp_cipher_type_t srtp_aes_icm_192;
extern const srtp_cipher_type_t srtp_aes_gcm_128_openssl;
extern const srtp_cipher_type_t srtp_aes_gcm_256_openssl;
#endif

So somehow now the app must define GCM for OpenSSL support to work. Is it expected?

BTW config_in_cmake.h does include it (it seems):

/* Define this to use AES-GCM. */
#cmakedefine GCM 1
pabuhler commented 4 years ago

It should be defined by the build system, it is set by either cmake or configure in the repo. It was changed I think from OPEENSSL to GCM to better reflex that GCM is supported and this is the case for both openssl & NSS back ends. That change could have been more clearly noted.

ibc commented 4 years ago

Clear, thanks.