libaacs | branch: master | Janusz Dziemidowicz <rrapt...@nails.eu.org> | Wed Dec 25 20:20:34 2013 +0100| [cbc200ffc454b142f5def611cac607997f7983e5] | committer: npzacs
Support gcrypt 1.6.0 There seems to be a slight change in S-expressions (fortunately backward compatible). There is also additional flag needed in rather strange place (data section instead of key section), most probably a bug in gcrypt. Decrypting a 350MB file with gcrypt 1.5 takes around 4 seconds on Core Quad Q9450 2.66GHz while with gcrypt 1.6 around 2.8s (the processor does not support AES-NI). > http://git.videolan.org/gitweb.cgi/libaacs.git/?a=commit;h=cbc200ffc454b142f5def611cac607997f7983e5 --- ChangeLog | 2 ++ src/libaacs/crypto.c | 20 ++++++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5c2a9ad..4f0c8c1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,5 @@ + - Add support for gcrypt 1.6.0. + 2013-12-18: Version 0.7.0 - Add aacs_get_device_binding_id() and aacs_get_device_nonce(). - Add aacs_get_mk(). diff --git a/src/libaacs/crypto.c b/src/libaacs/crypto.c index f1b54f8..0738f31 100644 --- a/src/libaacs/crypto.c +++ b/src/libaacs/crypto.c @@ -127,6 +127,9 @@ int crypto_init() if (!gcry_check_version(GCRYPT_VERSION)) { crypto_init_check = 0; } + if(GCRYPT_DEBUG) { + gcry_control(GCRYCTL_SET_DEBUG_FLAGS, 3); + } } return crypto_init_check; @@ -297,14 +300,14 @@ static gcry_error_t _aacs_sexp_key(gcry_sexp_t *p_sexp_key, char *strfmt = str_printf( "(%s" "(ecdsa" - "(p #"AACS_EC_p"#)" - "(a #"AACS_EC_a"#)" - "(b #"AACS_EC_b"#)" + "(p #00"AACS_EC_p"#)" + "(a #00"AACS_EC_a"#)" + "(b #00"AACS_EC_b"#)" "(g #04" AACS_EC_G_x AACS_EC_G_y "#)" - "(n #"AACS_EC_n"#)" + "(n #00"AACS_EC_n"#)" "(q #%s#)" "%s))", mpi_d ? "private-key" : "public-key", @@ -352,7 +355,16 @@ static gcry_error_t _aacs_sexp_sha1(gcry_sexp_t *p_sexp_data, GCRY_VERIFY("gcry_sexp_build", gcry_sexp_build(p_sexp_data, NULL, "(data" +#if defined(GCRYPT_VERSION_NUMBER) && GCRYPT_VERSION_NUMBER >= 0x010600 + /* + * For some reason gcrypt 1.6.0 + * requires 'param' flag here and not + * in key, probably a bug. + */ + " (flags raw param)" +#else " (flags raw)" +#endif " (value %m))", mpi_md )); _______________________________________________ libaacs-devel mailing list libaacs-devel@videolan.org https://mailman.videolan.org/listinfo/libaacs-devel