Projects
Essentials
libaacs
Sign Up
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 6
View file
libaacs.changes
Changed
@@ -1,4 +1,13 @@ ------------------------------------------------------------------- +Tue Jan 27 12:39:43 UTC 2015 - joerg.lorenzen@ki.tng.de + +- update to 0.8.0 + * Add improved file system interface + * Support opening raw devices + * Reduce log level of failed PMSN query + * Optimizations + +------------------------------------------------------------------- Wed Dec 17 14:57:22 UTC 2014 - joerg.lorenzen@ki.tng.de - update to 0.7.1
View file
libaacs.spec
Changed
@@ -19,7 +19,7 @@ Name: libaacs -Version: 0.7.1 +Version: 0.8.0 Release: 1.1 License: LGPL-2.1+ Summary: Open implentation of AACS specification
View file
libaacs-0.7.1.tar.bz2/src/Makefile.am
Deleted
@@ -1,88 +0,0 @@ -SET_FEATURES = @SET_FEATURES@ -SET_INCLUDES = -I$(top_srcdir) -Ifile -Ilibaacs - -AM_CFLAGS = -std=c99 $(SET_FEATURES) $(SET_INCLUDES) $(LIBGCRYPT_CFLAGS) $(GPG_ERROR_CFLAGS) -AM_YFLAGS = -d -p libaacs_yy - -lib_LTLIBRARIES = libaacs.la -libaacs_la_SOURCES=\ - libaacs/aacs.h \ - libaacs/mmc.h \ - libaacs/mkb.h \ - libaacs/aacs.c \ - libaacs/mmc.c \ - libaacs/crypto.c \ - libaacs/crypto.h \ - libaacs/mkb.c \ - file/dirs.h \ - file/file.h \ - file/filesystem.h \ - file/file_posix.c \ - file/keydbcfg.c \ - file/keydbcfg.h \ - file/keydb.h \ - file/keydbcfg-parser.y \ - file/keydbcfg-lexer.l \ - file/path.h \ - util/attributes.h \ - util/macro.h \ - util/logging.c \ - util/logging.h \ - util/strutl.c \ - util/strutl.h - -EXTRA_libaacs_la_SOURCES=\ - libaacs/ec.c - -if HAVE_DARWIN -libaacs_la_SOURCES+= \ - file/dirs_darwin.c -else -if HAVE_WIN32 -libaacs_la_SOURCES+= \ - file/dirs_win32.c -else -libaacs_la_SOURCES+= \ - file/dirs_xdg.c \ - file/path.c -endif -endif - -pkginclude_HEADERS = \ - libaacs/aacs.h \ - file/filesystem.h \ - libaacs/aacs-version.h - -libaacs_la_LDFLAGS= -no-undefined -version-info $(LT_VERSION_INFO) -libaacs_la_LIBADD = $(LIBGCRYPT_LIBS) $(GPG_ERROR_LIBS) -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libaacs.pc - -BUILT_SOURCES = file/keydbcfg-parser.h file/keydbcfg-parser.c file/keydbcfg-lexer.c - -CLEANFILES = $(BUILT_SOURCES) - -clean-lex-yacc: - -rm -f $(BUILT_SOURCES) - -# do not distribute files that should be generated by lex/yacc locally -dist-hook: - (cd $(distdir) && rm -f $(BUILT_SOURCES)) - -# -# programs -# - -noinst_PROGRAMS = parser_test -bin_PROGRAMS = aacs_info - -parser_test_SOURCES = examples/parser_test.c \ - file/keydbcfg-parser.y \ - file/keydbcfg-lexer.l \ - util/strutl.c \ - util/logging.c -parser_test_CFLAGS = -std=c99 $(SET_FEATURES) $(SET_INCLUDES) - -aacs_info_SOURCES = examples/aacs_info.c -aacs_info_CFLAGS = -std=c99 $(SET_FEATURES) $(SET_INCLUDES) -aacs_info_LDADD = libaacs.la
View file
libaacs-0.7.1.tar.bz2/src/Makefile.in
Deleted
@@ -1,1095 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\\ \ *) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs$$bs $$bs *//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -dEDm) skip_next=yes;; \ - -JT) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -@HAVE_DARWIN_TRUE@am__append_1 = \ -@HAVE_DARWIN_TRUE@ file/dirs_darwin.c - -@HAVE_DARWIN_FALSE@@HAVE_WIN32_TRUE@am__append_2 = \ -@HAVE_DARWIN_FALSE@@HAVE_WIN32_TRUE@ file/dirs_win32.c - -@HAVE_DARWIN_FALSE@@HAVE_WIN32_FALSE@am__append_3 = \ -@HAVE_DARWIN_FALSE@@HAVE_WIN32_FALSE@ file/dirs_xdg.c \ -@HAVE_DARWIN_FALSE@@HAVE_WIN32_FALSE@ file/path.c - -noinst_PROGRAMS = parser_test$(EXEEXT) -bin_PROGRAMS = aacs_info$(EXEEXT) -subdir = src -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(srcdir)/libaacs.pc.in file/keydbcfg-parser.h \ - file/keydbcfg-parser.c file/keydbcfg-lexer.c \ - $(top_srcdir)/build-aux/depcomp $(top_srcdir)/build-aux/ylwrap \ - $(pkginclude_HEADERS) -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/attributes.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = libaacs.pc -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/.^$$\\*|/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/^/*$$,\1,' | \ - $(AWK) 'BEGIN { files"." = "" } { files$$2 = files$$2 " " $$1; \ - if (++n$$2 == $(am__install_max)) \ - { print $$2, files$$2; n$$2 = 0; files$$2 = "" } } \ - END { for (dir in files) print dir, filesdir }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ - "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(pkgincludedir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -am__DEPENDENCIES_1 = -libaacs_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am__libaacs_la_SOURCES_DIST = libaacs/aacs.h libaacs/mmc.h \ - libaacs/mkb.h libaacs/aacs.c libaacs/mmc.c libaacs/crypto.c \ - libaacs/crypto.h libaacs/mkb.c file/dirs.h file/file.h \ - file/filesystem.h file/file_posix.c file/keydbcfg.c \ - file/keydbcfg.h file/keydb.h file/keydbcfg-parser.y \ - file/keydbcfg-lexer.l file/path.h util/attributes.h \ - util/macro.h util/logging.c util/logging.h util/strutl.c \ - util/strutl.h file/dirs_darwin.c file/dirs_win32.c \ - file/dirs_xdg.c file/path.c -am__dirstamp = $(am__leading_dot)dirstamp -@HAVE_DARWIN_TRUE@am__objects_1 = file/dirs_darwin.lo -@HAVE_DARWIN_FALSE@@HAVE_WIN32_TRUE@am__objects_2 = \ -@HAVE_DARWIN_FALSE@@HAVE_WIN32_TRUE@ file/dirs_win32.lo -@HAVE_DARWIN_FALSE@@HAVE_WIN32_FALSE@am__objects_3 = file/dirs_xdg.lo \ -@HAVE_DARWIN_FALSE@@HAVE_WIN32_FALSE@ file/path.lo -am_libaacs_la_OBJECTS = libaacs/aacs.lo libaacs/mmc.lo \ - libaacs/crypto.lo libaacs/mkb.lo file/file_posix.lo \ - file/keydbcfg.lo file/keydbcfg-parser.lo \ - file/keydbcfg-lexer.lo util/logging.lo util/strutl.lo \ - $(am__objects_1) $(am__objects_2) $(am__objects_3) -libaacs_la_OBJECTS = $(am_libaacs_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -libaacs_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libaacs_la_LDFLAGS) $(LDFLAGS) -o $@ -PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) -am_aacs_info_OBJECTS = examples/aacs_info-aacs_info.$(OBJEXT) -aacs_info_OBJECTS = $(am_aacs_info_OBJECTS) -aacs_info_DEPENDENCIES = libaacs.la -aacs_info_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(aacs_info_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am_parser_test_OBJECTS = examples/parser_test-parser_test.$(OBJEXT) \ - file/parser_test-keydbcfg-parser.$(OBJEXT) \ - file/parser_test-keydbcfg-lexer.$(OBJEXT) \ - util/parser_test-strutl.$(OBJEXT) \ - util/parser_test-logging.$(OBJEXT) -parser_test_OBJECTS = $(am_parser_test_OBJECTS) -parser_test_LDADD = $(LDADD) -parser_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(parser_test_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@)
View file
libaacs-0.7.1.tar.bz2/src/libaacs/aacs-version.h
Deleted
@@ -1,37 +0,0 @@ -/* - * This file is part of libaacs - * Copyright (C) 2011 libaacs - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see - * <http://www.gnu.org/licenses/>. - */ - -#ifndef AACS_VERSION_H_ -#define AACS_VERSION_H_ - -#define AACS_VERSION_CODE(major, minor, micro) \ - (((major) * 10000) + \ - ((minor) * 100) + \ - ((micro) * 1)) - -#define AACS_VERSION_MAJOR 0 -#define AACS_VERSION_MINOR 7 -#define AACS_VERSION_MICRO 1 - -#define AACS_VERSION_STRING "0.7.1" - -#define AACS_VERSION \ - AACS_VERSION_CODE(AACS_VERSION_MAJOR, AACS_VERSION_MINOR, AACS_VERSION_MICRO) - -#endif /* AACS_VERSION_H_ */
View file
libaacs-0.7.1.tar.bz2/ChangeLog -> libaacs-0.8.0.tar.bz2/ChangeLog
Changed
@@ -1,3 +1,9 @@ +2015-01-23: Version 0.8.0 + - Add improved file system interface + - Support opening raw devices + - Reduce log level of failed PMSN query + - Optimizations + 2014-05-27: Version 0.7.1 - Add support for gcrypt 1.6.0. - Do not retrieve MKB using MMC commands during AACS-Auth
View file
libaacs-0.7.1.tar.bz2/Makefile.am -> libaacs-0.8.0.tar.bz2/Makefile.am
Changed
@@ -1,8 +1,97 @@ -SUBDIRS=src - ACLOCAL_AMFLAGS=-I m4 EXTRA_DIST=bootstrap COPYING KEYDB.cfg README.txt ChangeLog +SET_FEATURES = @SET_FEATURES@ +SET_INCLUDES = -I$(top_srcdir)/src -I$(top_builddir)/src/libaacs + +AM_CFLAGS = -std=c99 $(SET_FEATURES) $(SET_INCLUDES) $(LIBGCRYPT_CFLAGS) $(GPG_ERROR_CFLAGS) +AM_YFLAGS = -d -p libaacs_yy + +lib_LTLIBRARIES = libaacs.la +libaacs_la_SOURCES=\ + src/libaacs/aacs.h \ + src/libaacs/mmc.h \ + src/libaacs/mkb.h \ + src/libaacs/aacs.c \ + src/libaacs/mmc.c \ + src/libaacs/crypto.c \ + src/libaacs/crypto.h \ + src/libaacs/mkb.c \ + src/file/dirs.h \ + src/file/file.h \ + src/file/filesystem.h \ + src/file/file_posix.c \ + src/file/keydbcfg.c \ + src/file/keydbcfg.h \ + src/file/keydb.h \ + src/file/keydbcfg-parser.y \ + src/file/keydbcfg-lexer.l \ + src/file/mmc_device.h \ + src/file/path.h \ + src/util/attributes.h \ + src/util/macro.h \ + src/util/logging.c \ + src/util/logging.h \ + src/util/strutl.c \ + src/util/strutl.h + +EXTRA_libaacs_la_SOURCES=\ + src/libaacs/ec.c + +if HAVE_DARWIN +libaacs_la_SOURCES+= \ + src/file/dirs_darwin.c \ + src/file/mmc_device_darwin.c +else +if HAVE_WIN32 +libaacs_la_SOURCES+= \ + src/file/dirs_win32.c \ + src/file/mmc_device_win32.c +else +libaacs_la_SOURCES+= \ + src/file/dirs_xdg.c \ + src/file/mmc_device_linux.c \ + src/file/path.c +endif +endif + +pkginclude_HEADERS = \ + src/libaacs/aacs.h \ + src/file/filesystem.h \ + src/libaacs/aacs-version.h + +libaacs_la_LDFLAGS= -no-undefined -version-info $(LT_VERSION_INFO) +libaacs_la_LIBADD = $(LIBGCRYPT_LIBS) $(GPG_ERROR_LIBS) +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = src/libaacs.pc + +BUILT_SOURCES = src/libaacs.pc src/libaacs/aacs-version.h src/file/keydbcfg-parser.h src/file/keydbcfg-parser.c src/file/keydbcfg-lexer.c + +CLEANFILES = $(BUILT_SOURCES) + clean-lex-yacc: - $(MAKE) -C src $@ + -rm -f $(BUILT_SOURCES) + +# do not distribute files that should be generated by lex/yacc locally +dist-hook: + (cd $(distdir) && rm -f $(BUILT_SOURCES)) + +# +# programs +# + +noinst_PROGRAMS = parser_test +bin_PROGRAMS = aacs_info + +parser_test_SOURCES = \ + src/examples/parser_test.c \ + src/file/keydbcfg-parser.y \ + src/file/keydbcfg-lexer.l \ + src/util/strutl.c \ + src/util/logging.c +parser_test_CFLAGS = -std=c99 $(SET_FEATURES) $(SET_INCLUDES) + +aacs_info_SOURCES = src/examples/aacs_info.c +aacs_info_CFLAGS = -std=c99 $(SET_FEATURES) $(SET_INCLUDES) +aacs_info_LDADD = libaacs.la
View file
libaacs-0.7.1.tar.bz2/Makefile.in -> libaacs-0.8.0.tar.bz2/Makefile.in
Changed
@@ -13,6 +13,10 @@ # PARTICULAR PURPOSE. @SET_MAKE@ + + + + VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ @@ -78,14 +82,32 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ +@HAVE_DARWIN_TRUE@am__append_1 = \ +@HAVE_DARWIN_TRUE@ src/file/dirs_darwin.c \ +@HAVE_DARWIN_TRUE@ src/file/mmc_device_darwin.c + +@HAVE_DARWIN_FALSE@@HAVE_WIN32_TRUE@am__append_2 = \ +@HAVE_DARWIN_FALSE@@HAVE_WIN32_TRUE@ src/file/dirs_win32.c \ +@HAVE_DARWIN_FALSE@@HAVE_WIN32_TRUE@ src/file/mmc_device_win32.c + +@HAVE_DARWIN_FALSE@@HAVE_WIN32_FALSE@am__append_3 = \ +@HAVE_DARWIN_FALSE@@HAVE_WIN32_FALSE@ src/file/dirs_xdg.c \ +@HAVE_DARWIN_FALSE@@HAVE_WIN32_FALSE@ src/file/mmc_device_linux.c \ +@HAVE_DARWIN_FALSE@@HAVE_WIN32_FALSE@ src/file/path.c + +noinst_PROGRAMS = parser_test$(EXEEXT) +bin_PROGRAMS = aacs_info$(EXEEXT) subdir = . DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ - $(srcdir)/config.h.in \ - $(top_srcdir)/src/libaacs/aacs-version.h.in COPYING ChangeLog \ - build-aux/compile build-aux/config.guess build-aux/config.sub \ - build-aux/depcomp build-aux/install-sh build-aux/missing \ - build-aux/ylwrap build-aux/ltmain.sh \ + $(srcdir)/config.h.in $(top_srcdir)/src/libaacs.pc.in \ + $(top_srcdir)/src/libaacs/aacs-version.h.in \ + src/file/keydbcfg-parser.h src/file/keydbcfg-parser.c \ + src/file/keydbcfg-lexer.c $(top_srcdir)/build-aux/depcomp \ + $(top_srcdir)/build-aux/ylwrap $(pkginclude_HEADERS) COPYING \ + ChangeLog build-aux/compile build-aux/config.guess \ + build-aux/config.sub build-aux/depcomp build-aux/install-sh \ + build-aux/missing build-aux/ylwrap build-aux/ltmain.sh \ $(top_srcdir)/build-aux/compile \ $(top_srcdir)/build-aux/config.guess \ $(top_srcdir)/build-aux/config.sub \ @@ -103,8 +125,95 @@ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = src/libaacs/aacs-version.h +CONFIG_CLEAN_FILES = src/libaacs.pc src/libaacs/aacs-version.h CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/.^$$\\*|/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/^/*$$,\1,' | \ + $(AWK) 'BEGIN { files"." = "" } { files$$2 = files$$2 " " $$1; \ + if (++n$$2 == $(am__install_max)) \ + { print $$2, files$$2; n$$2 = 0; files$$2 = "" } } \ + END { for (dir in files) print dir, filesdir }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(pkgincludedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +libaacs_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am__libaacs_la_SOURCES_DIST = src/libaacs/aacs.h src/libaacs/mmc.h \ + src/libaacs/mkb.h src/libaacs/aacs.c src/libaacs/mmc.c \ + src/libaacs/crypto.c src/libaacs/crypto.h src/libaacs/mkb.c \ + src/file/dirs.h src/file/file.h src/file/filesystem.h \ + src/file/file_posix.c src/file/keydbcfg.c src/file/keydbcfg.h \ + src/file/keydb.h src/file/keydbcfg-parser.y \ + src/file/keydbcfg-lexer.l src/file/mmc_device.h \ + src/file/path.h src/util/attributes.h src/util/macro.h \ + src/util/logging.c src/util/logging.h src/util/strutl.c \ + src/util/strutl.h src/file/dirs_darwin.c \ + src/file/mmc_device_darwin.c src/file/dirs_win32.c \ + src/file/mmc_device_win32.c src/file/dirs_xdg.c \ + src/file/mmc_device_linux.c src/file/path.c +am__dirstamp = $(am__leading_dot)dirstamp +@HAVE_DARWIN_TRUE@am__objects_1 = src/file/dirs_darwin.lo \ +@HAVE_DARWIN_TRUE@ src/file/mmc_device_darwin.lo +@HAVE_DARWIN_FALSE@@HAVE_WIN32_TRUE@am__objects_2 = \ +@HAVE_DARWIN_FALSE@@HAVE_WIN32_TRUE@ src/file/dirs_win32.lo \ +@HAVE_DARWIN_FALSE@@HAVE_WIN32_TRUE@ src/file/mmc_device_win32.lo +@HAVE_DARWIN_FALSE@@HAVE_WIN32_FALSE@am__objects_3 = \ +@HAVE_DARWIN_FALSE@@HAVE_WIN32_FALSE@ src/file/dirs_xdg.lo \ +@HAVE_DARWIN_FALSE@@HAVE_WIN32_FALSE@ src/file/mmc_device_linux.lo \ +@HAVE_DARWIN_FALSE@@HAVE_WIN32_FALSE@ src/file/path.lo +am_libaacs_la_OBJECTS = src/libaacs/aacs.lo src/libaacs/mmc.lo \ + src/libaacs/crypto.lo src/libaacs/mkb.lo \ + src/file/file_posix.lo src/file/keydbcfg.lo \ + src/file/keydbcfg-parser.lo src/file/keydbcfg-lexer.lo \ + src/util/logging.lo src/util/strutl.lo $(am__objects_1) \ + $(am__objects_2) $(am__objects_3) +libaacs_la_OBJECTS = $(am_libaacs_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libaacs_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libaacs_la_LDFLAGS) $(LDFLAGS) -o $@ +PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) +am_aacs_info_OBJECTS = src/examples/aacs_info-aacs_info.$(OBJEXT) +aacs_info_OBJECTS = $(am_aacs_info_OBJECTS) +aacs_info_DEPENDENCIES = libaacs.la +aacs_info_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(aacs_info_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am_parser_test_OBJECTS = \ + src/examples/parser_test-parser_test.$(OBJEXT) \ + src/file/parser_test-keydbcfg-parser.$(OBJEXT) \ + src/file/parser_test-keydbcfg-lexer.$(OBJEXT) \ + src/util/parser_test-strutl.$(OBJEXT) \ + src/util/parser_test-logging.$(OBJEXT) +parser_test_OBJECTS = $(am_parser_test_OBJECTS) +parser_test_LDADD = $(LDADD) +parser_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(parser_test_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -117,29 +226,59 @@ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ || +LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) +LTLEXCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(LEX) $(AM_LFLAGS) $(LFLAGS) +AM_V_LEX = $(am__v_LEX_@AM_V@) +am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@) +am__v_LEX_0 = @echo " LEX " $@; +am__v_LEX_1 = +YLWRAP = $(top_srcdir)/build-aux/ylwrap +@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ || +am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ + -e s/c++$$/h++/ -e s/c$$/h/ +YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) +LTYACCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(YACC) $(AM_YFLAGS) $(YFLAGS) +AM_V_YACC = $(am__v_YACC_@AM_V@) +am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) +am__v_YACC_0 = @echo " YACC " $@;
View file
libaacs-0.7.1.tar.bz2/aclocal.m4 -> libaacs-0.8.0.tar.bz2/aclocal.m4
Changed
@@ -573,7 +573,8 @@ END AC_MSG_ERROR(Your 'rm' program is bad, sorry.) fi -fi) +fi +) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
View file
libaacs-0.7.1.tar.bz2/build-aux/config.guess -> libaacs-0.8.0.tar.bz2/build-aux/config.guess
Changed
@@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2013 Free Software Foundation, Inc. +# Copyright 1992-2014 Free Software Foundation, Inc. -timestamp='2013-06-10' +timestamp='2014-03-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -50,7 +50,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -149,7 +149,7 @@ LIBC=gnu #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac @@ -826,7 +826,7 @@ *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; - i*:MSYS*:*) + *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) @@ -969,10 +969,10 @@ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; - or1k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} exit ;; - or32:Linux:*:*) + or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) @@ -1260,16 +1260,26 @@ if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi - if "$CC_FOR_BUILD" != 'no_compiler_found' ; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if "$CC_FOR_BUILD" != 'no_compiler_found' ; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; @@ -1361,154 +1371,6 @@ exit ;; esac -eval $set_cc_for_build -cat >$dummy.c <<EOF -#ifdef _SEQUENT_ -# include <sys/types.h> -# include <sys/utsname.h> -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include <sys/param.h> - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \(0-9*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include <sys/param.h> -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860)
View file
libaacs-0.7.1.tar.bz2/build-aux/config.sub -> libaacs-0.8.0.tar.bz2/build-aux/config.sub
Changed
@@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2013 Free Software Foundation, Inc. +# Copyright 1992-2014 Free Software Foundation, Inc. -timestamp='2013-08-10' +timestamp='2014-09-11' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -68,7 +68,7 @@ version="\ GNU config.sub ($timestamp) -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -265,6 +265,7 @@ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ @@ -282,8 +283,10 @@ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ @@ -295,11 +298,11 @@ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ - | open8 \ - | or1k | or32 \ + | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ + | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh1234 | sh24a | sh24aeb | sh23e | sh34eb | sheb | shbe | shle | sh1234le | sh3ele \ @@ -324,7 +327,7 @@ c6x) basic_machine=tic6x-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; @@ -381,6 +384,7 @@ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ @@ -400,8 +404,10 @@ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ @@ -413,6 +419,7 @@ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ + | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ @@ -822,6 +829,10 @@ basic_machine=powerpc-unknown os=-morphos ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; msdos) basic_machine=i386-pc os=-msdos @@ -1367,14 +1378,14 @@ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1592,9 +1603,6 @@ mips*-*) os=-elf ;; - or1k-*) - os=-elf - ;; or32-*) os=-coff ;;
View file
libaacs-0.7.1.tar.bz2/build-aux/ltmain.sh -> libaacs-0.8.0.tar.bz2/build-aux/ltmain.sh
Changed
@@ -70,7 +70,7 @@ # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1 +# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.10ubuntu1 # automake: $automake_version # autoconf: $autoconf_version # @@ -80,7 +80,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1" +VERSION="2.4.2 Debian-2.4.2-1.10ubuntu1" TIMESTAMP="" package_revision=1.3337
View file
libaacs-0.7.1.tar.bz2/configure -> libaacs-0.8.0.tar.bz2/configure
Changed
@@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libaacs 0.7.1. +# Generated by GNU Autoconf 2.69 for libaacs 0.8.0. # # Report bugs to <http://www.videolan.org/developers/libaacs.html>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='libaacs' PACKAGE_TARNAME='libaacs' -PACKAGE_VERSION='0.7.1' -PACKAGE_STRING='libaacs 0.7.1' +PACKAGE_VERSION='0.8.0' +PACKAGE_STRING='libaacs 0.8.0' PACKAGE_BUGREPORT='http://www.videolan.org/developers/libaacs.html' PACKAGE_URL='' @@ -1346,7 +1346,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libaacs 0.7.1 to adapt to many kinds of systems. +\`configure' configures libaacs 0.8.0 to adapt to many kinds of systems. Usage: $0 OPTION... VAR=VALUE... @@ -1417,7 +1417,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libaacs 0.7.1:";; + short | recursive ) echo "Configuration of libaacs 0.8.0:";; esac cat <<\_ACEOF @@ -1541,7 +1541,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libaacs configure 0.7.1 +libaacs configure 0.8.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2013,7 +2013,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libaacs $as_me 0.7.1, which was +It was created by libaacs $as_me 0.8.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2988,7 +2988,7 @@ # Define the identity of the package. PACKAGE='libaacs' - VERSION='0.7.1' + VERSION='0.8.0' cat >>confdefs.h <<_ACEOF @@ -3196,6 +3196,7 @@ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi + ac_config_headers="$ac_config_headers config.h" @@ -3222,6 +3223,46 @@ +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + + SET_FEATURES="-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112L" case "${host_os}" in @@ -13089,7 +13130,6 @@ fi -# use re-entrant version of gcrypt_error() from gpg-error # Check whether --with-gpg-error-prefix was given. @@ -13423,16 +13463,16 @@ AACS_VERSION_MAJOR=0 -AACS_VERSION_MINOR=7 +AACS_VERSION_MINOR=8 -AACS_VERSION_MICRO=1 +AACS_VERSION_MICRO=0 -LT_VERSION_INFO="4:1:4" +LT_VERSION_INFO="5:0:5" -ac_config_files="$ac_config_files Makefile src/Makefile src/libaacs.pc src/libaacs/aacs-version.h" +ac_config_files="$ac_config_files Makefile src/libaacs.pc src/libaacs/aacs-version.h" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -13976,7 +14016,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libaacs $as_me 0.7.1, which was +This file was extended by libaacs $as_me 0.8.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14042,7 +14082,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/\\""\`\$/\\\\&/g'`" ac_cs_version="\\ -libaacs config.status 0.7.1 +libaacs config.status 0.8.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -14454,7 +14494,6 @@ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/libaacs.pc") CONFIG_FILES="$CONFIG_FILES src/libaacs.pc" ;; "src/libaacs/aacs-version.h") CONFIG_FILES="$CONFIG_FILES src/libaacs/aacs-version.h" ;;
View file
libaacs-0.7.1.tar.bz2/configure.ac -> libaacs-0.8.0.tar.bz2/configure.ac
Changed
@@ -1,22 +1,22 @@ dnl library version number m4_define(aacs_major, 0) -m4_define(aacs_minor, 7) -m4_define(aacs_micro, 1) +m4_define(aacs_minor, 8) +m4_define(aacs_micro, 0) m4_define(aacs_version,aacs_major.aacs_minor.aacs_micro) -dnl library (.so) version -# +dnl shared library version (.so version) +dnl dnl update when making new release -# +dnl dnl - If there are no ABI changes, increase revision. dnl - If ABI is changed backwards-compatible way, increase current and age. Set revision to 0. dnl - If ABI is broken, increase current and set age and revision to 0. -# +dnl dnl Library file name will be libaacs.(current-age).age.revision -# -m4_define(lt_current, 4) -m4_define(lt_age, 4) -m4_define(lt_revision, 1) + +m4_define(lt_current, 5) +m4_define(lt_age, 5) +m4_define(lt_revision, 0) dnl initilization AC_INIT(libaacs, aacs_version, http://www.videolan.org/developers/libaacs.html) @@ -27,6 +27,9 @@ AC_CONFIG_HEADERS(config.h) AM_MAINTAINER_MODE +dnl Enable silent rules only when available (automake 1.11 or later). +m4_ifdef(AM_SILENT_RULES, AM_SILENT_RULES(yes)) + SET_FEATURES="-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112L" case "${host_os}" in @@ -137,7 +140,7 @@ fi AC_FUNC_STRERROR_R -# use re-entrant version of gcrypt_error() from gpg-error +dnl use re-entrant version of gcrypt_error() from gpg-error AC_ARG_WITH(gpg-error-prefix, AC_HELP_STRING(--with-gpg-error-prefix=PFX, @@ -196,5 +199,5 @@ dnl generate output files AC_SUBST(SET_FEATURES) -AC_CONFIG_FILES(Makefile src/Makefile src/libaacs.pc src/libaacs/aacs-version.h) +AC_CONFIG_FILES(Makefile src/libaacs.pc src/libaacs/aacs-version.h) AC_OUTPUT
View file
libaacs-0.7.1.tar.bz2/src/examples/aacs_info.c -> libaacs-0.8.0.tar.bz2/src/examples/aacs_info.c
Changed
@@ -17,12 +17,13 @@ * <http://www.gnu.org/licenses/>. */ -#include "libaacs/aacs.h" -#include "util/macro.h" /* MKINT_BE48 */ +#include <libaacs/aacs.h> #include <stdio.h> #include <stdlib.h> +#include "util/macro.h" /* MKINT_BE48 */ + static const char *_hex2str(const uint8_t *s, unsigned n) { static const char hex = "0123456789ABCDEF";
View file
libaacs-0.7.1.tar.bz2/src/examples/parser_test.c -> libaacs-0.8.0.tar.bz2/src/examples/parser_test.c
Changed
@@ -18,7 +18,7 @@ */ #include "file/keydbcfg.h" -#include "util/logging.h" +#include "util/strutl.h" #include <stdio.h> #include <stdlib.h> @@ -66,7 +66,7 @@ if (!cursor->entry.discid) break; - printf("DISCID: %s\n", print_hex(tmp, cursor->entry.discid, 20)); + printf("DISCID: %s\n", str_print_hex(tmp, cursor->entry.discid, 20)); printf(" Title: %s\n", cursor->entry.title); printf(" Date: %u-%u-%u\n", cursor->entry.date.year, cursor->entry.date.month, cursor->entry.date.day); @@ -112,8 +112,8 @@ cert_list *cursor = list; while (cursor) { - printf(" Host private key: %s\n", print_hex(tmp, cursor->host_priv_key, 20)); - printf(" Host certificate: %s\n", print_hex(tmp, cursor->host_cert, 92)); + printf(" Host private key: %s\n", str_print_hex(tmp, cursor->host_priv_key, 20)); + printf(" Host certificate: %s\n", str_print_hex(tmp, cursor->host_cert, 92)); printf("\n"); cursor = cursor->next; @@ -133,7 +133,7 @@ dk_list *dkcursor = cfgfile->dkl; while (dkcursor) { - printf(" Device key: %s\n", print_hex(tmp, dkcursor->key, 16)); + printf(" Device key: %s\n", str_print_hex(tmp, dkcursor->key, 16)); printf(" Device node: %lu\n", dkcursor->node); dkcursor = dkcursor->next; @@ -146,7 +146,7 @@ pk_list *cursor = cfgfile->pkl; while (cursor) { - printf(" %s\n", print_hex(tmp, cursor->key, 16)); + printf(" %s\n", str_print_hex(tmp, cursor->key, 16)); cursor = cursor->next; }
View file
libaacs-0.7.1.tar.bz2/src/file/dirs.h -> libaacs-0.8.0.tar.bz2/src/file/dirs.h
Changed
@@ -20,19 +20,20 @@ #ifndef BLURAY_DIRS_H #define BLURAY_DIRS_H -#include <util/attributes.h> +#include "util/attributes.h" #ifdef _WIN32 -AACS_PRIVATE int win32_mkdir(const char *dir); +BD_PRIVATE int win32_mkdir(const char *dir); #endif /* * Config, cache and data dirs */ -AACS_PRIVATE const char *file_get_config_home(void); -AACS_PRIVATE const char *file_get_config_system(const char *dir); -AACS_PRIVATE const char *file_get_cache_home(void); -AACS_PRIVATE const char *file_get_data_home(void); +BD_PRIVATE const char *file_get_config_system(const char *dir); + +BD_PRIVATE char *file_get_config_home(void) BD_ATTR_MALLOC; +BD_PRIVATE char *file_get_cache_home(void) BD_ATTR_MALLOC; +BD_PRIVATE char *file_get_data_home(void) BD_ATTR_MALLOC; #endif
View file
libaacs-0.7.1.tar.bz2/src/file/dirs_darwin.c -> libaacs-0.8.0.tar.bz2/src/file/dirs_darwin.c
Changed
@@ -38,61 +38,37 @@ #define SYSTEM_CFG_DIR "/Library/Preferences" -const char *file_get_config_home(void) +char *file_get_config_home(void) { - static char *dir = NULL; - static int init_done = 0; - - if (!init_done) { - init_done = 1; - - const char *user_home = getenv("HOME"); - if (user_home && *user_home) { - return dir = str_printf("%s/%s", user_home, USER_CFG_DIR); - } - - DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + const char *user_home = getenv("HOME"); + if (user_home && *user_home) { + return str_printf("%s/%s", user_home, USER_CFG_DIR); } - return dir; + BD_DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + return NULL; } -const char *file_get_data_home(void) +char *file_get_data_home(void) { - static char *dir = NULL; - static int init_done = 0; - - if (!init_done) { - init_done = 1; - - const char *user_home = getenv("HOME"); - if (user_home && *user_home) { - return dir = str_printf("%s/%s", user_home, USER_DATA_DIR); - } - - DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + const char *user_home = getenv("HOME"); + if (user_home && *user_home) { + return str_printf("%s/%s", user_home, USER_DATA_DIR); } - return dir; + BD_DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + return NULL; } -const char *file_get_cache_home(void) +char *file_get_cache_home(void) { - static char *dir = NULL; - static int init_done = 0; - - if (!init_done) { - init_done = 1; - - const char *user_home = getenv("HOME"); - if (user_home && *user_home) { - return dir = str_printf("%s/%s", user_home, USER_CACHE_DIR); - } - - DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + const char *user_home = getenv("HOME"); + if (user_home && *user_home) { + return str_printf("%s/%s", user_home, USER_CACHE_DIR); } - return dir; + BD_DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + return NULL; } const char *file_get_config_system(const char *dir)
View file
libaacs-0.7.1.tar.bz2/src/file/dirs_win32.c -> libaacs-0.8.0.tar.bz2/src/file/dirs_win32.c
Changed
@@ -42,33 +42,29 @@ return _wmkdir(wdir); } -const char *file_get_config_home(void) +char *file_get_config_home(void) { return file_get_data_home(); } -const char *file_get_data_home(void) +char *file_get_data_home(void) { - static char *appdir = NULL; wchar_t wdirMAX_PATH; - if (appdir) - return appdir; - /* Get the "Application Data" folder for the user */ if (S_OK == SHGetFolderPathW(NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE, NULL, SHGFP_TYPE_CURRENT, wdir)) { int len = WideCharToMultiByte (CP_UTF8, 0, wdir, -1, NULL, 0, NULL, NULL); - appdir = malloc(len); + char *appdir = malloc(len); WideCharToMultiByte (CP_UTF8, 0, wdir, -1, appdir, len, NULL, NULL); return appdir; } - DEBUG(DBG_FILE, "Can't find user configuration directory !\n"); + BD_DEBUG(DBG_FILE, "Can't find user configuration directory !\n"); return NULL; } -const char *file_get_cache_home(void) +char *file_get_cache_home(void) { return file_get_data_home(); } @@ -92,7 +88,7 @@ WideCharToMultiByte (CP_UTF8, 0, wdir, -1, appdir, len, NULL, NULL); return appdir; } else { - DEBUG(DBG_FILE, "Can't find common configuration directory !\n"); + BD_DEBUG(DBG_FILE, "Can't find common configuration directory !\n"); return NULL; } } else {
View file
libaacs-0.7.1.tar.bz2/src/file/dirs_xdg.c -> libaacs-0.8.0.tar.bz2/src/file/dirs_xdg.c
Changed
@@ -41,76 +41,52 @@ #define SYSTEM_CFG_DIR "/etc/xdg" -const char *file_get_config_home(void) +char *file_get_config_home(void) { - static char *dir = NULL; - static int init_done = 0; - - if (!init_done) { - init_done = 1; - - const char *xdg_home = getenv("XDG_CONFIG_HOME"); - if (xdg_home && *xdg_home) { - return dir = str_printf("%s", xdg_home); - } - - const char *user_home = getenv("HOME"); - if (user_home && *user_home) { - return dir = str_printf("%s/%s", user_home, USER_CFG_DIR); - } + const char *xdg_home = getenv("XDG_CONFIG_HOME"); + if (xdg_home && *xdg_home) { + return str_printf("%s", xdg_home); + } - DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + const char *user_home = getenv("HOME"); + if (user_home && *user_home) { + return str_printf("%s/%s", user_home, USER_CFG_DIR); } - return dir; + BD_DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + return NULL; } -const char *file_get_data_home(void) +char *file_get_data_home(void) { - static char *dir = NULL; - static int init_done = 0; - - if (!init_done) { - init_done = 1; - - const char *xdg_home = getenv("XDG_DATA_HOME"); - if (xdg_home && *xdg_home) { - return dir = str_printf("%s", xdg_home); - } - - const char *user_home = getenv("HOME"); - if (user_home && *user_home) { - return dir = str_printf("%s/%s", user_home, USER_DATA_DIR); - } + const char *xdg_home = getenv("XDG_DATA_HOME"); + if (xdg_home && *xdg_home) { + return str_printf("%s", xdg_home); + } - DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + const char *user_home = getenv("HOME"); + if (user_home && *user_home) { + return str_printf("%s/%s", user_home, USER_DATA_DIR); } - return dir; + BD_DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + return NULL; } -const char *file_get_cache_home(void) +char *file_get_cache_home(void) { - static char *dir = NULL; - static int init_done = 0; - - if (!init_done) { - init_done = 1; - - const char *xdg_cache = getenv("XDG_CACHE_HOME"); - if (xdg_cache && *xdg_cache) { - return dir = str_printf("%s", xdg_cache); - } - - const char *user_home = getenv("HOME"); - if (user_home && *user_home) { - return dir = str_printf("%s/%s", user_home, USER_CACHE_DIR); - } + const char *xdg_cache = getenv("XDG_CACHE_HOME"); + if (xdg_cache && *xdg_cache) { + return str_printf("%s", xdg_cache); + } - DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + const char *user_home = getenv("HOME"); + if (user_home && *user_home) { + return str_printf("%s/%s", user_home, USER_CACHE_DIR); } - return dir; + BD_DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + return NULL; } const char *file_get_config_system(const char *dir)
View file
libaacs-0.7.1.tar.bz2/src/file/file.h -> libaacs-0.8.0.tar.bz2/src/file/file.h
Changed
@@ -20,25 +20,31 @@ #ifndef FILE_H_ #define FILE_H_ -#include "filesystem.h" +#include "util/attributes.h" -#include <util/attributes.h> +#include "filesystem.h" #include <stdint.h> -//#ifdef __LINUX__ -#define DIR_SEP "/" -//#endif +#ifdef _WIN32 +# define DIR_SEP "\\" +# define DIR_SEP_CHAR '\\' +#else +# define DIR_SEP "/" +# define DIR_SEP_CHAR '/' +#endif + +/* + * file access + */ #define file_close(X) X->close(X) #define file_seek(X,Y,Z) X->seek(X,Y,Z) #define file_tell(X) X->tell(X) -#define file_eof(X) X->eof(X) #define file_read(X,Y,Z) X->read(X,Y,Z) -#define file_write(X,Y,Z) X->write(X,Y,Z) -AACS_PRIVATE extern AACS_FILE_H *(*file_open)(const char* filename, const char *mode); +BD_PRIVATE extern AACS_FILE_H *(*file_open)(const char* filename, const char *mode); #endif /* FILE_H_ */
View file
libaacs-0.7.1.tar.bz2/src/file/file_posix.c -> libaacs-0.8.0.tar.bz2/src/file/file_posix.c
Changed
@@ -38,7 +38,7 @@ if (file) { fclose((FILE *)file->internal); - DEBUG(DBG_FILE, "Closed LINUX file (%p)\n", (void*)file); + BD_DEBUG(DBG_FILE, "Closed LINUX file (%p)\n", (void*)file); X_FREE(file); } @@ -62,33 +62,21 @@ #endif } -static int file_eof_linux(AACS_FILE_H *file) -{ - return feof((FILE *)file->internal); -} - static int64_t file_read_linux(AACS_FILE_H *file, uint8_t *buf, int64_t size) { return fread(buf, 1, size, (FILE *)file->internal); } -static int64_t file_write_linux(AACS_FILE_H *file, const uint8_t *buf, int64_t size) -{ - return fwrite(buf, 1, size, (FILE *)file->internal); -} - static AACS_FILE_H *file_open_linux(const char* filename, const char *mode) { FILE *fp = NULL; - AACS_FILE_H *file = malloc(sizeof(AACS_FILE_H)); + AACS_FILE_H *file = calloc(1, sizeof(AACS_FILE_H)); - DEBUG(DBG_FILE, "Opening LINUX file %s... (%p)\n", filename, (void*)file); + BD_DEBUG(DBG_FILE, "Opening LINUX file %s... (%p)\n", filename, (void*)file); file->close = file_close_linux; file->seek = file_seek_linux; file->read = file_read_linux; - file->write = file_write_linux; file->tell = file_tell_linux; - file->eof = file_eof_linux; if ((fp = fopen(filename, mode))) { file->internal = fp; @@ -96,7 +84,7 @@ return file; } - DEBUG(DBG_FILE, "Error opening file %s ! (%p)\n", filename, (void*)file); + BD_DEBUG(DBG_FILE, "Error opening file %s ! (%p)\n", filename, (void*)file); X_FREE(file); @@ -107,7 +95,7 @@ AACS_FILE_OPEN aacs_register_file(AACS_FILE_OPEN p) { - AACS_FILE_OPEN old = file_open; - file_open = p; - return old; + AACS_FILE_OPEN old = file_open; + file_open = p; + return old; }
View file
libaacs-0.7.1.tar.bz2/src/file/filesystem.h -> libaacs-0.8.0.tar.bz2/src/file/filesystem.h
Changed
@@ -45,5 +45,28 @@ */ AACS_FILE_OPEN aacs_register_file(AACS_FILE_OPEN p); +/** + * + * Function that will be used to open a file + * + * NOTE: file name is relative to disc root directory ! + * + * @param handle application-specific handle + * @param filename file to open + * @return pointer to AACS_FILE_H, NULL if error + */ +typedef AACS_FILE_H* (*AACS_FILE_OPEN2)(void *handle, const char* filename); + +/** + * + * Register function pointer that will be used to open a file + * + * @param aacs aacs instance + * @param handle handle that will be passed to file open function + * @param p function pointer + */ +struct aacs; +void aacs_set_fopen(struct aacs *aacs, void *handle, AACS_FILE_OPEN2 p); + #endif /* AACS_FILESYSTEM_H_ */
View file
libaacs-0.7.1.tar.bz2/src/file/keydbcfg.c -> libaacs-0.8.0.tar.bz2/src/file/keydbcfg.c
Changed
@@ -33,6 +33,11 @@ #ifdef _WIN32 # define mkdir(p,m) win32_mkdir(p) +# define DIR_SEP_CHAR '\\' +# define DIR_SEP "\\" +#else +# define DIR_SEP_CHAR '/' +# define DIR_SEP "/" #endif @@ -52,23 +57,26 @@ char *dir = str_printf("%s", path); char *end = dir; - while (*end == '/') +#ifdef _WIN32 + end += 2; /* skip drive */ +#endif + while (*end == DIR_SEP_CHAR) end++; - while ((end = strchr(end, '/'))) { + while ((end = strchr(end, DIR_SEP_CHAR))) { *end = 0; if (stat(dir, &s) != 0 || !S_ISDIR(s.st_mode)) { - DEBUG(DBG_FILE, "Creating directory %s\n", dir); + BD_DEBUG(DBG_FILE, "Creating directory %s\n", dir); if (mkdir(dir, S_IRWXU|S_IRWXG|S_IRWXO) == -1) { - DEBUG(DBG_FILE | DBG_CRIT, "Error creating directory %s\n", dir); + BD_DEBUG(DBG_FILE | DBG_CRIT, "Error creating directory %s\n", dir); result = 0; break; } } - *end++ = '/'; + *end++ = DIR_SEP_CHAR; } X_FREE(dir); @@ -86,7 +94,7 @@ fseek(fp, 0, SEEK_SET); if (file_size < MIN_FILE_SIZE || file_size > MAX_FILE_SIZE) { - DEBUG(DBG_FILE, "Invalid file size\n"); + BD_DEBUG(DBG_FILE, "Invalid file size\n"); return NULL; } @@ -94,7 +102,7 @@ read_size = fread(data, 1, file_size, fp); if (read_size != file_size) { - DEBUG(DBG_FILE, "Error reading file\n"); + BD_DEBUG(DBG_FILE, "Error reading file\n"); X_FREE(data); return NULL; } @@ -106,13 +114,16 @@ static char *_config_file_user(const char *file_name) { - const char *cfg_dir = file_get_config_home(); + char *cfg_dir = file_get_config_home(); + char *result; if (!cfg_dir) { return NULL; } - return str_printf("%s/%s/%s", cfg_dir, CFG_DIR, file_name); + result = str_printf("%s"DIR_SEP"%s"DIR_SEP"%s", cfg_dir, CFG_DIR, file_name); + X_FREE(cfg_dir); + return result; } static FILE *_open_cfg_file_user(const char *file_name, char **path, const char *mode) @@ -132,7 +143,7 @@ FILE *fp = fopen(cfg_file, mode); - DEBUG(DBG_FILE, fp ? "Opened %s for %s\n" : "%s not found\n", cfg_file, mode); + BD_DEBUG(DBG_FILE, fp ? "Opened %s for %s\n" : "%s not found\n", cfg_file, mode); if (fp && path) { *path = cfg_file; @@ -149,11 +160,11 @@ while (NULL != (dir = file_get_config_system(dir))) { - char *cfg_file = str_printf("%s/%s/%s", dir, CFG_DIR, file_name); + char *cfg_file = str_printf("%s"DIR_SEP"%s"DIR_SEP"%s", dir, CFG_DIR, file_name); FILE *fp = fopen(cfg_file, "r"); if (fp) { - DEBUG(DBG_FILE, "Reading %s\n", cfg_file); + BD_DEBUG(DBG_FILE, "Reading %s\n", cfg_file); if (path) { *path = cfg_file; @@ -164,7 +175,7 @@ return fp; } - DEBUG(DBG_FILE, "%s not found\n", cfg_file); + BD_DEBUG(DBG_FILE, "%s not found\n", cfg_file); X_FREE(cfg_file); } @@ -195,14 +206,14 @@ char *str = str_get_hex_string(p, 2*16); if (str) { - DEBUG(DBG_FILE, "Found processing key %s\n", str); + BD_DEBUG(DBG_FILE, "Found processing key %s\n", str); pk_list *e = calloc(1, sizeof(pk_list)); hexstring_to_hex_array(e->key, 16, str); if (_is_duplicate_pk(cf->pkl, e->key)) { - DEBUG(DBG_FILE, "Skipping duplicate processing key %s\n", str); + BD_DEBUG(DBG_FILE, "Skipping duplicate processing key %s\n", str); X_FREE(e); } else { e->next = cf->pkl; @@ -252,17 +263,17 @@ X_FREE(data); if (!host_priv_key || !host_cert) { - DEBUG(DBG_FILE, "Invalid file\n"); + BD_DEBUG(DBG_FILE, "Invalid file\n"); } else { - DEBUG(DBG_FILE, "Found certificate: %s %s\n", host_priv_key, host_cert); + BD_DEBUG(DBG_FILE, "Found certificate: %s %s\n", host_priv_key, host_cert); cert_list *e = calloc(1, sizeof(cert_list)); hexstring_to_hex_array(e->host_priv_key, 20, host_priv_key); hexstring_to_hex_array(e->host_cert, 92, host_cert); if (_is_duplicate_cert(cf->host_cert_list, e)) { - DEBUG(DBG_FILE, "Skipping duplicate certificate entry %s %s\n", host_priv_key, host_cert); + BD_DEBUG(DBG_FILE, "Skipping duplicate certificate entry %s %s\n", host_priv_key, host_cert); X_FREE(e); } else { e->next = cf->host_cert_list; @@ -333,7 +344,8 @@ static char *_keycache_file(const char *type, const uint8_t *disc_id) { - const char *cache_dir = file_get_cache_home(); + char *cache_dir = file_get_cache_home(); + char *result; char disc_id_str41; if (!cache_dir) { @@ -342,7 +354,9 @@ hex_array_to_hexstring(disc_id_str, disc_id, 20); - return str_printf("%s/%s/%s/%s", cache_dir, CFG_DIR, type, disc_id_str); + result = str_printf("%s"DIR_SEP"%s"DIR_SEP"%s"DIR_SEP"%s", cache_dir, CFG_DIR, type, disc_id_str); + X_FREE(cache_dir); + return result; } int keycache_save(const char *type, const uint8_t *disc_id, const uint8_t *key, unsigned int len) @@ -359,11 +373,11 @@ hex_array_to_hexstring(key_str, key, len); if (fwrite(key_str, 1, len*2, fp) == len*2) { - DEBUG(DBG_FILE, "Wrote %s to %s\n", type, file); + BD_DEBUG(DBG_FILE, "Wrote %s to %s\n", type, file); result = 1; } else { - DEBUG(DBG_FILE, "Error writing to %s\n", file); + BD_DEBUG(DBG_FILE, "Error writing to %s\n", file); } free(key_str); @@ -389,17 +403,17 @@ if (fp) { char *key_str = malloc(len*2); - DEBUG(DBG_FILE, "Reading %s\n", file); + BD_DEBUG(DBG_FILE, "Reading %s\n", file); if (fread(key_str, 1, len*2, fp) == len*2) { result = hexstring_to_hex_array(key, len, key_str); if (!result) { - DEBUG(DBG_FILE, "Error converting %s\n", file); + BD_DEBUG(DBG_FILE, "Error converting %s\n", file); }
View file
libaacs-0.7.1.tar.bz2/src/file/keydbcfg.h -> libaacs-0.8.0.tar.bz2/src/file/keydbcfg.h
Changed
@@ -20,7 +20,7 @@ #ifndef KEYDBCFG_H #define KEYDBCFG_H -#include <util/attributes.h> +#include "util/attributes.h" #include <stdint.h> @@ -114,26 +114,26 @@ }; /* Functions used throughout the parser */ -AACS_PRIVATE int keydbcfg_parse_config(config_file *cfgfile, const char *path); -AACS_PRIVATE config_file *keydbcfg_new_config_file(void); -AACS_PRIVATE int keydbcfg_config_file_close(config_file *cfgfile); +BD_PRIVATE int keydbcfg_parse_config(config_file *cfgfile, const char *path); +BD_PRIVATE config_file *keydbcfg_new_config_file(void); +BD_PRIVATE int keydbcfg_config_file_close(config_file *cfgfile); /* */ -AACS_PRIVATE config_file *keydbcfg_config_load(const char *configfile_path); +BD_PRIVATE config_file *keydbcfg_config_load(const char *configfile_path); -AACS_PRIVATE int keycache_save(const char *type, const uint8_t *disc_id, +BD_PRIVATE int keycache_save(const char *type, const uint8_t *disc_id, const uint8_t *key, unsigned int len); -AACS_PRIVATE int keycache_find(const char *type, const uint8_t *disc_id, +BD_PRIVATE int keycache_find(const char *type, const uint8_t *disc_id, uint8_t *key, unsigned int len); -AACS_PRIVATE int cache_get(const char *name, uint32_t *version, uint32_t *len, void *buf); /* use buf=NULL to get version and size */ -AACS_PRIVATE int cache_save(const char *name, uint32_t version, const void *data, uint32_t len); -AACS_PRIVATE int cache_remove(const char *name); +BD_PRIVATE int cache_get(const char *name, uint32_t *version, uint32_t *len, void *buf); /* use buf=NULL to get version and size */ +BD_PRIVATE int cache_save(const char *name, uint32_t version, const void *data, uint32_t len); +BD_PRIVATE int cache_remove(const char *name); -AACS_PRIVATE void *cache_get_or_update(const char *type, const void *data, uint32_t *len, uint32_t version); +BD_PRIVATE void *cache_get_or_update(const char *type, const void *data, uint32_t *len, uint32_t version); -AACS_PRIVATE int config_get(const char *name, uint32_t *len, void *buf); /* use buf=NULL to get size */ -AACS_PRIVATE int config_save(const char *name, const void *data, uint32_t len); +BD_PRIVATE int config_get(const char *name, uint32_t *len, void *buf); /* use buf=NULL to get size */ +BD_PRIVATE int config_save(const char *name, const void *data, uint32_t len); #endif
View file
libaacs-0.8.0.tar.bz2/src/file/mmc_device.h
Added
@@ -0,0 +1,36 @@ +/* + * This file is part of libaacs + * Copyright (C) 2009-2010 Obliter0n + * Copyright (C) 2010-2015 npzacs + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + */ + +#ifndef MMC_DEVICE_H_ +#define MMC_DEVICE_H_ + +#include "util/attributes.h" + +#include <stdint.h> +#include <stddef.h> + +typedef struct mmcdev MMCDEV; + +BD_PRIVATE MMCDEV *device_open(const char *path); +BD_PRIVATE void device_close(MMCDEV **mmc); + +BD_PRIVATE int device_send_cmd(MMCDEV *dev, const uint8_t *cmd, uint8_t *buf, size_t tx, size_t rx); + +#endif /* MMC_DEVICE_H_ */
View file
libaacs-0.8.0.tar.bz2/src/file/mmc_device_darwin.c
Added
@@ -0,0 +1,432 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * This file is part of libaacs + * Copyright (C) 2009-2010 Obliter0n + * Copyright (C) 2010-2015 npzacs + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include "mmc_device.h" + +#include "util/logging.h" +#include "util/macro.h" +#include "util/strutl.h" + +#include <stdlib.h> +#include <string.h> + +#include <Carbon/Carbon.h> + +#include <IOKit/IOKitLib.h> +#include <IOKit/IOCFPlugIn.h> + +#include <DiskArbitration/DiskArbitration.h> + +/* need to undefine VERSION as one of the members of struct + SCSICmd_INQUIRY_StandardData is named VERSION (see + IOKit/scsi/SCSICmds_INQUIRY_Definitions.h) */ +#undef VERSION +#include <IOKit/scsi/SCSITaskLib.h> + +#include <IOKit/storage/IOBDMediaBSDClient.h> + +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif + +#ifdef HAVE_SYS_PARAM_H +#include <sys/param.h> +#endif + +#ifdef HAVE_SYS_MOUNT_H +#include <sys/mount.h> +#endif + +#ifdef HAVE_LIBGEN_H +#include <libgen.h> +#endif + +#ifdef HAVE_LIMITS_H +#include <limits.h> +#endif + + +/* + * + */ + +struct mmcdev { + MMCDeviceInterface **mmcInterface; + SCSITaskDeviceInterface **taskInterface; + + /* device short name (ie disk1) */ + char bsd_name128; + + /* for mounting/unmounting the disc */ + DADiskRef disk; + DASessionRef session; + bool is_mounted; +}; + +int device_send_cmd(MMCDEV *mmc, const uint8_t *cmd, uint8_t *buf, size_t tx, size_t rx) +{ + SCSITaskInterface **task = NULL; + SCSI_Sense_Data sense; + SCSITaskStatus status; + SCSITaskSGElement iov; + UInt8 direction; + UInt64 sent; + int rc; + + if (NULL == mmc->taskInterface) { + return 0; + } + + do { + task = (*mmc->taskInterface)->CreateSCSITask (mmc->taskInterface); + if (NULL == task) { + BD_DEBUG(DBG_MMC, "Could not create SCSI Task\n"); + break; + } + + iov.address = (uintptr_t) buf; + iov.length = tx ? tx : rx; + + if (buf) { + direction = tx ? kSCSIDataTransfer_FromInitiatorToTarget : + kSCSIDataTransfer_FromTargetToInitiator; + } else { + direction = kSCSIDataTransfer_NoDataTransfer; + } + + rc = (*task)->SetCommandDescriptorBlock (task, cmd, 16); + if (kIOReturnSuccess != rc) { + BD_DEBUG(DBG_MMC, "Error setting SCSI command\n"); + break; + } + + rc = (*task)->SetScatterGatherEntries (task, &iov, 1, iov.length, direction); + if (kIOReturnSuccess != rc) { + BD_DEBUG(DBG_MMC, "Error setting SCSI scatter gather entries\n"); + break; + } + + rc = (*task)->SetTimeoutDuration (task, 5000000); + if (kIOReturnSuccess != rc) { + BD_DEBUG(DBG_MMC, "Error setting SCSI command timeout\n"); + break; + } + + memset (&sense, 0, sizeof (sense)); + + rc = (*task)->ExecuteTaskSync (task, &sense, &status, &sent); + + char str512; + BD_DEBUG(DBG_MMC, "Send SCSI MMC cmd %s:\n", str_print_hex(str, cmd, 16)); + if (tx) { + BD_DEBUG(DBG_MMC, " Buffer: %s ->\n", str_print_hex(str, buf, tx>255?255:tx)); + } else { + BD_DEBUG(DBG_MMC, " Buffer: %s <-\n", str_print_hex(str, buf, rx>255?255:rx)); + } + + if (kIOReturnSuccess != rc || status != 0) { + BD_DEBUG(DBG_MMC, " Send failed!\n"); + break; + } else { + BD_DEBUG(DBG_MMC, " Send succeeded! sent = %lld status = %u. response = %x\n", + (unsigned long long) sent, status, sense.VALID_RESPONSE_CODE); + } + + (*task)->Release (task); + + return 1; + } while (0); + + if (task) { + (*task)->Release (task); + } + + return 0; +} + +static int get_mounted_device_from_path (MMCDEV *mmc, const char *path) { + struct statfs stat_info; + int rc; + + rc = statfs (path, &stat_info); + if (0 != rc) { + return rc; + } + + strncpy (mmc->bsd_name, basename (stat_info.f_mntfromname), sizeof (mmc->bsd_name)); + + return 0; +} + +static void iokit_unmount_complete (DADiskRef disk, DADissenterRef dissenter, + void *context) { + (void)disk; /* suppress warning */ + + if (dissenter) { + BD_DEBUG(DBG_MMC, "Could not unmount the disc\n"); + } else { + BD_DEBUG(DBG_MMC, "Disc unmounted\n"); + ((MMCDEV *)context)->is_mounted = 0; + } +} + +static void iokit_mount_complete (DADiskRef disk, DADissenterRef dissenter, + void *context) { + (void) disk; /* suppress warning */ + (void) dissenter; /* suppress warning */ +
View file
libaacs-0.8.0.tar.bz2/src/file/mmc_device_linux.c
Added
@@ -0,0 +1,203 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * This file is part of libaacs + * Copyright (C) 2009-2010 Obliter0n + * Copyright (C) 2010-2015 npzacs + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include "mmc_device.h" + +#include "path.h" + +#include "util/logging.h" +#include "util/macro.h" +#include "util/strutl.h" + +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <fcntl.h> +#include <sys/stat.h> + +#ifdef HAVE_MNTENT_H +#include <mntent.h> +#endif + +#ifdef HAVE_LINUX_CDROM_H +#include <errno.h> +#include <sys/ioctl.h> +#include <linux/cdrom.h> +#endif + + +/* + * + */ + +struct mmcdev { + int fd; +}; + +int device_send_cmd(MMCDEV *dev, const uint8_t *cmd, uint8_t *buf, size_t tx, size_t rx) +{ +#if defined(HAVE_LINUX_CDROM_H) + struct cdrom_generic_command cgc; + struct request_sense sense; + char str512; + int result; + + memset(&cgc, 0, sizeof(cgc)); + memcpy(cgc.cmd, cmd, CDROM_PACKET_SIZE); + cgc.sense = &sense; + cgc.timeout = 5000; + + if (buf) { + if (tx) { + cgc.data_direction = CGC_DATA_WRITE; + cgc.buflen = tx; + cgc.buffer = buf; + } else if (rx) { + cgc.data_direction = CGC_DATA_READ; + cgc.buflen = rx; + cgc.buffer = buf; + } + } else { + cgc.data_direction = CGC_DATA_NONE; + cgc.buflen = 0; + cgc.buffer = NULL; + } + + result = ioctl(dev->fd, CDROM_SEND_PACKET, &cgc); + + BD_DEBUG(DBG_MMC, "Send LINUX MMC cmd %s:\n", str_print_hex(str, cmd, 16)); + if (tx) { + BD_DEBUG(DBG_MMC, " Buffer: %s ->\n", str_print_hex(str, buf, tx>255?255:tx)); + } else { + BD_DEBUG(DBG_MMC, " Buffer: %s <-\n", str_print_hex(str, buf, rx>255?255:rx)); + } + + if (result >= 0) { + BD_DEBUG(DBG_MMC, " Send succeeded! %d\n", result); + return 1; + } + + BD_DEBUG(DBG_MMC, " Send failed! %d %s\n", result, strerror(errno)); +#else +#warning no MMC drive support + BD_DEBUG(DBG_MMC | DBG_CRIT, "No MMC drive support\n"); +#endif + + return 0; +} + +MMCDEV *device_open(const char *path) +{ + char resolved_pathAACS_PATH_MAX; + size_t path_len; + struct stat st; + int fd = -1; + MMCDEV *dev = NULL; + FILE *proc_mounts; + + /* resolve path */ + if (!aacs_resolve_path(path, resolved_path)) { + BD_DEBUG(DBG_MMC | DBG_CRIT, "Failed resolving path %s\n", path); + return NULL; + } + + /* strip trailing '/'s */ + path_len = strlen(resolved_path); + while (path_len > 0 && resolved_path--path_len == '/') { + resolved_pathpath_len = '\0'; + } + + if (stat(resolved_path, &st)) { + BD_DEBUG(DBG_MMC | DBG_CRIT, "stat(%s) failed\n", resolved_path); + return NULL; + } + + dev = calloc(1, sizeof(MMCDEV)); + + if (S_ISBLK(st.st_mode)) { + /* opening device */ + BD_DEBUG(DBG_MMC, "Opening block device %s\n", resolved_path); + fd = open(resolved_path, O_RDONLY | O_NONBLOCK); + if (fd < 0) { + BD_DEBUG(DBG_MMC | DBG_CRIT, "Error opening block device %s\n", resolved_path); + } + } else { +#if !defined(HAVE_MNTENT_H) + BD_DEBUG(DBG_MMC | DBG_CRIT, "Only block devices supported\n"); + return NULL; +#endif + } + +#if defined(HAVE_MNTENT_H) + if (fd < 0) { + /* resolve mount point to block device */ + if ((proc_mounts = setmntent("/proc/mounts", "r"))) { + struct mntent* mount_entry; + + BD_DEBUG(DBG_MMC, "Opening LINUX MMC drive mounted to %s...\n", resolved_path); + while ((mount_entry = getmntent(proc_mounts)) != NULL) { + if (strcmp(mount_entry->mnt_dir, resolved_path) == 0) { + fd = open(mount_entry->mnt_fsname, O_RDONLY | O_NONBLOCK); + if (fd >= 0) { + BD_DEBUG(DBG_MMC, "LINUX MMC drive %s opened - fd: %d\n", + mount_entry->mnt_fsname, fd); + break; + } + + BD_DEBUG(DBG_MMC | DBG_CRIT, "Failed opening MMC drive %s mounted to %s\n", + mount_entry->mnt_fsname, resolved_path); + } + } + + endmntent(proc_mounts); + + if (fd < 0) { + BD_DEBUG(DBG_MMC | DBG_CRIT, "No MMC drive mounted to %s\n", resolved_path); + } + + } else { + BD_DEBUG(DBG_MMC | DBG_CRIT, "Error opening /proc/mounts\n"); + } +#endif + } + + if (fd >= 0) { + dev = calloc(1, sizeof(MMCDEV)); + dev->fd = fd; + } + return dev; +} + +void device_close(MMCDEV **pp) +{ + if (pp && *pp) { + + if ((*pp)->fd != -1) { + close((*pp)->fd); + }
View file
libaacs-0.8.0.tar.bz2/src/file/mmc_device_win32.c
Added
@@ -0,0 +1,178 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ +/* + * This file is part of libaacs + * Copyright (C) 2009-2010 Obliter0n + * Copyright (C) 2010-2015 npzacs + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include "mmc_device.h" + +#include "util/macro.h" +#include "util/logging.h" + +#include <windows.h> +#include <winsock.h> + +#include <stdlib.h> +#include <string.h> + + +/* + * from ntddscsi.h, Windows DDK + */ + +#define SCSI_IOCTL_DATA_OUT 0 +#define SCSI_IOCTL_DATA_IN 1 +#define SCSI_IOCTL_DATA_UNSPECIFIED 2 +#define IOCTL_SCSI_PASS_THROUGH_DIRECT 0x4D014 +#define MAX_SENSE_LEN 18 + +typedef struct _SCSI_PASS_THROUGH_DIRECT { + USHORT Length; + UCHAR ScsiStatus; + UCHAR PathId; + UCHAR TargetId; + UCHAR Lun; + UCHAR CdbLength; + UCHAR SenseInfoLength; + UCHAR DataIn; + ULONG DataTransferLength; + ULONG TimeOutValue; + PVOID DataBuffer; + ULONG SenseInfoOffset; + UCHAR Cdb16; +} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT; + + +/* + * + */ + +struct mmcdev { + HANDLE fd; +}; + +int device_send_cmd(MMCDEV *dev, const uint8_t *cmd, uint8_t *buf, size_t tx, size_t rx) +{ + DWORD dwBytesReturned; + + struct { + SCSI_PASS_THROUGH_DIRECT sptd; + UCHAR SenseBufMAX_SENSE_LEN; + } sptd_sb; + + if (dev->fd == INVALID_HANDLE_VALUE) { + return 0; + } + + sptd_sb.sptd.Length = sizeof(SCSI_PASS_THROUGH_DIRECT); + sptd_sb.sptd.PathId = 0; + sptd_sb.sptd.TargetId = 0; + sptd_sb.sptd.Lun = 0; + sptd_sb.sptd.CdbLength = 12; + sptd_sb.sptd.SenseInfoLength = MAX_SENSE_LEN; + sptd_sb.sptd.TimeOutValue = 5; + sptd_sb.sptd.SenseInfoOffset = sizeof(SCSI_PASS_THROUGH_DIRECT); + + if (buf) { + if (tx) { + sptd_sb.sptd.DataIn = SCSI_IOCTL_DATA_OUT; + sptd_sb.sptd.DataTransferLength = tx; + sptd_sb.sptd.DataBuffer = buf; + } else if (rx) { + sptd_sb.sptd.DataIn = SCSI_IOCTL_DATA_IN; + sptd_sb.sptd.DataTransferLength = rx; + sptd_sb.sptd.DataBuffer = buf; + } + } else { + sptd_sb.sptd.DataIn = SCSI_IOCTL_DATA_UNSPECIFIED; + sptd_sb.sptd.DataTransferLength = 0; + sptd_sb.sptd.DataBuffer = NULL; + } + + memcpy(sptd_sb.sptd.Cdb, cmd, 16); + + ZeroMemory(sptd_sb.SenseBuf, MAX_SENSE_LEN); + + if (DeviceIoControl(dev->fd, + IOCTL_SCSI_PASS_THROUGH_DIRECT, + (void*)&sptd_sb, sizeof(sptd_sb), + (void*)&sptd_sb, sizeof(sptd_sb), + &dwBytesReturned, NULL)) { + + if (sptd_sb.sptd.ScsiStatus == 0 /* STATUS_GOOD */) { + BD_DEBUG(DBG_MMC, " Send succeeded!\n"); + return 1; + } + } + + BD_DEBUG(DBG_MMC, " Send failed!\n"); + + return 0; +} + +MMCDEV *device_open(const char *path) +{ + char drive = { path0, ':', '\\', 0 }; + char volume = {'\\', '\\', '.', '\\', path0, ':', 0}; + UINT type; + HANDLE fd; + MMCDEV *dev; + + BD_DEBUG(DBG_MMC, "Opening Windows MMC drive %s...\n", drive); + + type = GetDriveType(drive); + if (type != DRIVE_CDROM) { + BD_DEBUG(DBG_MMC | DBG_CRIT, "Drive %s is not CD/DVD drive\n", drive); + return NULL; + } + + fd = CreateFile(volume, GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (fd == INVALID_HANDLE_VALUE) { + fd = CreateFile(volume, GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (fd == INVALID_HANDLE_VALUE) { + BD_DEBUG(DBG_MMC, "Failed opening Windows MMC drive %s\n", volume); + return NULL; + } + } + + BD_DEBUG(DBG_MMC, "Windows MMC drive %s opened\n", volume); + + dev = calloc(1, sizeof(MMCDEV)); + dev->fd = fd; + return dev; +} + +void device_close(MMCDEV **pp) +{ + if (pp && *pp) { + + if ((*pp)->fd != INVALID_HANDLE_VALUE) { + CloseHandle((*pp)->fd); + } + + X_FREE(*pp); + } +}
View file
libaacs-0.7.1.tar.bz2/src/file/path.h -> libaacs-0.8.0.tar.bz2/src/file/path.h
Changed
@@ -20,12 +20,12 @@ #ifndef AACS_PATH_H #define AACS_PATH_H -#include <util/attributes.h> +#include "util/attributes.h" #ifndef AACS_PATH_MAX #define AACS_PATH_MAX 1024 #endif -AACS_PRIVATE char *aacs_resolve_path(const char *path, char *resolved_path); +BD_PRIVATE char *aacs_resolve_path(const char *path, char *resolved_path); #endif /* AACS_PATH_H */
View file
libaacs-0.7.1.tar.bz2/src/libaacs/aacs.c -> libaacs-0.8.0.tar.bz2/src/libaacs/aacs.c
Changed
@@ -22,7 +22,7 @@ #include "config.h" #endif -#include <util/attributes.h> +#include "util/attributes.h" #include "aacs-version.h" #include "aacs.h" @@ -44,7 +44,14 @@ #include <gcrypt.h> +#define SECTOR_LEN 2048 /* bus encryption block size */ +#define ALIGNED_UNIT_LEN 6144 /* aacs block size */ + + struct aacs { + void *fopen_handle; + AACS_FILE_OPEN2 fopen; + /* current disc */ char *path; int mkb_version; @@ -63,6 +70,7 @@ /* CPS unit of currently selected title */ uint16_t current_cps_unit; + uint8_t cps_unit_selected; /* title -> CPS unit mappings */ uint32_t num_titles; @@ -78,10 +86,10 @@ uint8_t device_binding_id16; }; -static const uint8_t empty_key = "\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00"; -static const uint8_t aacs_iv = "\x0b\xa0\xf8\xdd\xfe\xa6\x1f\xb3" - "\xd8\xdf\x9f\x56\x6a\x05\x0f\x78"; +static const uint8_t empty_key16 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +static const uint8_t aacs_iv16 = { 0x0b, 0xa0, 0xf8, 0xdd, 0xfe, 0xa6, 0x1f, 0xb3, + 0xd8, 0xdf, 0x9f, 0x56, 0x6a, 0x05, 0x0f, 0x78 }; static int _validate_pk(const uint8_t *pk, const uint8_t *cvalue, const uint8_t *uv, const uint8_t *vd, @@ -92,11 +100,11 @@ uint8_t dec_vd16; char str40; - DEBUG(DBG_AACS, "Validate processing key %s...\n", print_hex(str, pk, 16)); - DEBUG(DBG_AACS, " Using:\n"); - DEBUG(DBG_AACS, " UV: %s\n", print_hex(str, uv, 4)); - DEBUG(DBG_AACS, " cvalue: %s\n", print_hex(str, cvalue, 16)); - DEBUG(DBG_AACS, " Verification data: %s\n", print_hex(str, vd, 16)); + BD_DEBUG(DBG_AACS, "Validate processing key %s...\n", str_print_hex(str, pk, 16)); + BD_DEBUG(DBG_AACS, " Using:\n"); + BD_DEBUG(DBG_AACS, " UV: %s\n", str_print_hex(str, uv, 4)); + BD_DEBUG(DBG_AACS, " cvalue: %s\n", str_print_hex(str, cvalue, 16)); + BD_DEBUG(DBG_AACS, " Verification data: %s\n", str_print_hex(str, vd, 16)); gcry_cipher_open(&gcry_h, GCRY_CIPHER_AES, GCRY_CIPHER_MODE_ECB, 0); gcry_cipher_setkey(gcry_h, pk, 16); @@ -111,7 +119,7 @@ gcry_cipher_close(gcry_h); if (!memcmp(dec_vd, "\x01\x23\x45\x67\x89\xAB\xCD\xEF", 8)) { - DEBUG(DBG_AACS, "Processing key %s is valid!\n", print_hex(str, pk, 16)); + BD_DEBUG(DBG_AACS, "Processing key %s is valid!\n", str_print_hex(str, pk, 16)); return AACS_SUCCESS; } @@ -124,7 +132,7 @@ size_t len = 12 + 12 + 8 * entries; /* type_and_version_rec=12, rl_header=12, rl=entries*8 */ if (len + 40 > size) { - DEBUG(DBG_AACS, "revocation list size mismatch\n"); + BD_DEBUG(DBG_AACS, "revocation list size mismatch\n"); return 0; } @@ -137,7 +145,7 @@ int len = MKINT_BE24(rl_rec - 3); int entries = MKINT_BE32(rl_rec + 4); /* entries in first signature block */ if (len < 4 || !entries) { - DEBUG(DBG_AACS | DBG_CRIT, "ignoring empty %s\n", name); + BD_DEBUG(DBG_AACS | DBG_CRIT, "ignoring empty %s\n", name); return; } @@ -149,7 +157,7 @@ memcpy(data, version_rec, 12); memcpy(data + 12, rl_rec, rl_len); if (!_rl_verify_signature(data, rl_len + 12)) { - DEBUG(DBG_AACS | DBG_CRIT, "invalid %s signature, not using it\n", name); + BD_DEBUG(DBG_AACS | DBG_CRIT, "invalid %s signature, not using it\n", name); } else { cache_save(name, version, data, rl_len + 12); } @@ -218,7 +226,7 @@ } char str40; - DEBUG(DBG_AACS, "Processing key: %s\n", print_hex(str, pk, 16)); + BD_DEBUG(DBG_AACS, "Processing key: %s\n", str_print_hex(str, pk, 16)); } static dk_list *_find_dk(dk_list *dkl, uint32_t *p_dev_key_v_mask, uint32_t uv, uint32_t u_mask) @@ -247,11 +255,11 @@ } if (!dkl) { - DEBUG(DBG_AACS | DBG_CRIT, "could not find applying device key (device 0x%x)\n", device_number); + BD_DEBUG(DBG_AACS | DBG_CRIT, "could not find applying device key (device 0x%x)\n", device_number); } else { char str128; - DEBUG(DBG_AACS, "Applying device key is #%d %s\n", key_idx, print_hex(str, dkl->key, 16)); - DEBUG(DBG_AACS, " UV: 0x%08x U mask: 0x%08x V mask: 0x%08x\n", dev_key_uv, dev_key_u_mask, dev_key_v_mask); + BD_DEBUG(DBG_AACS, "Applying device key is #%d %s\n", key_idx, str_print_hex(str, dkl->key, 16)); + BD_DEBUG(DBG_AACS, " UV: 0x%08x U mask: 0x%08x V mask: 0x%08x\n", dev_key_uv, dev_key_u_mask, dev_key_v_mask); *p_dev_key_v_mask = dev_key_v_mask; } @@ -306,7 +314,7 @@ } if (u_mask_shift & 0xc0) { - DEBUG(DBG_AACS | DBG_CRIT, "device 0x%x is revoked\n", device_number); + BD_DEBUG(DBG_AACS | DBG_CRIT, "device 0x%x is revoked\n", device_number); uvs_idx = num_uvs; } else { @@ -321,13 +329,13 @@ } if (uvs_idx >= num_uvs) { - DEBUG(DBG_AACS | DBG_CRIT, "could not find applying subset-difference for device 0x%x\n", device_number); + BD_DEBUG(DBG_AACS | DBG_CRIT, "could not find applying subset-difference for device 0x%x\n", device_number); /* try next device */ continue; } - DEBUG(DBG_AACS, "Applying subset-difference for device 0x%x is #%d:\n", device_number, uvs_idx); - DEBUG(DBG_AACS," UV: 0x%08x U mask: 0x%08x V mask: 0x%08x\n", uv, u_mask, v_mask); + BD_DEBUG(DBG_AACS, "Applying subset-difference for device 0x%x is #%d:\n", device_number, uvs_idx); + BD_DEBUG(DBG_AACS," UV: 0x%08x U mask: 0x%08x V mask: 0x%08x\n", uv, u_mask, v_mask); /* find applying device key */ @@ -354,11 +362,11 @@ mk) == AACS_SUCCESS) { - DEBUG(DBG_AACS, "Media key: %s\n", print_hex(str, mk, 16)); + BD_DEBUG(DBG_AACS, "Media key: %s\n", str_print_hex(str, mk, 16)); return AACS_SUCCESS; } - DEBUG(DBG_AACS | DBG_CRIT, "Processing key %s is invalid!\n", print_hex(str, pk, 16)); + BD_DEBUG(DBG_AACS | DBG_CRIT, "Processing key %s is invalid!\n", str_print_hex(str, pk, 16)); /* try next device */ } @@ -366,6 +374,39 @@ return AACS_ERROR_NO_DK; } +static AACS_FILE_H *_file_open(AACS *aacs, const char *file) +{ + AACS_FILE_H *fp; + char *f_name; + + if (aacs->fopen) { + return aacs->fopen(aacs->fopen_handle, file); + } + + f_name = str_printf("%s" DIR_SEP "%s", aacs->path, file); + fp = file_open(f_name, "rb"); + X_FREE(f_name); + + return fp; +} + +static MKB *_mkb_open(AACS *aacs) +{ + AACS_FILE_H *fp; + MKB *mkb; + + fp = _file_open(aacs, "AACS" DIR_SEP "MKB_RO.inf"); + if (!fp) { + BD_DEBUG(DBG_AACS | DBG_CRIT, "Error opening MKB file (AACS/MKB_RO.inf)\n"); + return NULL; + } + + mkb = mkb_read(fp); + file_close(fp); + + return mkb; +}
View file
libaacs-0.7.1.tar.bz2/src/libaacs/aacs.h -> libaacs-0.8.0.tar.bz2/src/libaacs/aacs.h
Changed
@@ -42,8 +42,12 @@ AACS_PUBLIC void aacs_get_version(int *major, int *minor, int *micro); +AACS_PUBLIC AACS *aacs_init (void); +AACS_PUBLIC int aacs_open_device(AACS *, const char *path, const char *keyfile_path); + AACS_PUBLIC AACS *aacs_open(const char *path, const char *keyfile_path); AACS_PUBLIC AACS *aacs_open2(const char *path, const char *keyfile_path, int *error_code); + AACS_PUBLIC void aacs_close(AACS *aacs); AACS_PUBLIC void aacs_select_title(AACS *aacs, uint32_t title); /* 0 - top menu, 0xffff - first play */ AACS_PUBLIC int aacs_decrypt_unit(AACS *aacs, uint8_t *buf);
View file
libaacs-0.7.1.tar.bz2/src/libaacs/crypto.c -> libaacs-0.8.0.tar.bz2/src/libaacs/crypto.c
Changed
@@ -225,10 +225,10 @@ #define LOG_GCRY_ERROR(msg, func, err) \ char errstr100 = {0}; \ gpg_strerror_r(err, errstr, sizeof(errstr)); \ - DEBUG(DBG_AACS|DBG_CRIT, "%s: %s failed. error was: %s\n", func, msg, errstr); + BD_DEBUG(DBG_AACS|DBG_CRIT, "%s: %s failed. error was: %s\n", func, msg, errstr); #else #define LOG_GCRY_ERROR(msg, func, err) \ - DEBUG(DBG_AACS|DBG_CRIT, "%s: %s failed. error was: %s\n", func, msg, gcry_strerror(err)); + BD_DEBUG(DBG_AACS|DBG_CRIT, "%s: %s failed. error was: %s\n", func, msg, gcry_strerror(err)); #endif #define GCRY_VERIFY(msg, op) \ @@ -534,7 +534,7 @@ int crypto_aacs_verify_cert(const uint8_t *cert) { if (MKINT_BE16(cert+2) != 0x5c) { - DEBUG(DBG_AACS, "Certificate length is invalid (0x%04x), expected 0x005c\n", + BD_DEBUG(DBG_AACS, "Certificate length is invalid (0x%04x), expected 0x005c\n", MKINT_BE16(cert+2)); return 0; } @@ -545,12 +545,12 @@ int crypto_aacs_verify_host_cert(const uint8_t *cert) { if (cert0 != 0x02) { - DEBUG(DBG_AACS, "Host certificate type is invalid (0x%02x), expected 0x01\n", cert0); + BD_DEBUG(DBG_AACS, "Host certificate type is invalid (0x%02x), expected 0x01\n", cert0); return 0; } if (!crypto_aacs_verify_cert(cert)) { - DEBUG(DBG_AACS, "Host certificate signature is invalid\n"); + BD_DEBUG(DBG_AACS, "Host certificate signature is invalid\n"); return 0; } @@ -560,12 +560,12 @@ int crypto_aacs_verify_drive_cert(const uint8_t *cert) { if (cert0 != 0x01) { - DEBUG(DBG_AACS, "Drive certificate type is invalid (0x%02x), expected 0x01\n", cert0); + BD_DEBUG(DBG_AACS, "Drive certificate type is invalid (0x%02x), expected 0x01\n", cert0); return 0; } if (!crypto_aacs_verify_cert(cert)) { - DEBUG(DBG_AACS, "Drive certificate signature is invalid\n"); + BD_DEBUG(DBG_AACS, "Drive certificate signature is invalid\n"); return 0; }
View file
libaacs-0.7.1.tar.bz2/src/libaacs/crypto.h -> libaacs-0.8.0.tar.bz2/src/libaacs/crypto.h
Changed
@@ -20,30 +20,30 @@ #ifndef CRYPTO_H_ #define CRYPTO_H_ -#include <util/attributes.h> +#include "util/attributes.h" #include <stdlib.h> #include <stdint.h> -AACS_PRIVATE int crypto_init(void); -AACS_PRIVATE void crypto_aes128d(const uint8_t *key, const uint8_t *data, uint8_t *dst); -AACS_PRIVATE void crypto_aesg3(const uint8_t *D, uint8_t *lsubk, uint8_t* rsubk, - uint8_t *pk); // returns left, centre, right keys -AACS_PRIVATE void crypto_aes_cmac_16(const unsigned char *data, const unsigned char *aes_key, unsigned char *cmac); - -AACS_PRIVATE void crypto_aacs_sign(const uint8_t *cert, const uint8_t *priv_key, - uint8_t *signature, - const uint8_t *nonce, const uint8_t *point); -AACS_PRIVATE void crypto_aacs_title_hash(const uint8_t *ukf, uint64_t len, uint8_t *hash); - -AACS_PRIVATE int crypto_aacs_verify(const uint8_t *cert, const uint8_t *signature, const uint8_t *data, uint32_t len); -AACS_PRIVATE int crypto_aacs_verify_aacsla(const uint8_t *signature, const uint8_t *data, uint32_t len); -AACS_PRIVATE int crypto_aacs_verify_cert(const uint8_t *cert); -AACS_PRIVATE int crypto_aacs_verify_host_cert(const uint8_t *cert); -AACS_PRIVATE int crypto_aacs_verify_drive_cert(const uint8_t *cert); - -AACS_PRIVATE void crypto_create_host_key_pair(uint8_t *key, uint8_t *key_point); -AACS_PRIVATE void crypto_create_nonce(uint8_t *buf, size_t len); -AACS_PRIVATE void crypto_create_bus_key(const uint8_t *priv_key, const uint8_t *drive_key_point, unsigned char *bus_key); +BD_PRIVATE int crypto_init(void); +BD_PRIVATE void crypto_aes128d(const uint8_t *key, const uint8_t *data, uint8_t *dst); +BD_PRIVATE void crypto_aesg3(const uint8_t *D, uint8_t *lsubk, uint8_t* rsubk, + uint8_t *pk); // returns left, centre, right keys +BD_PRIVATE void crypto_aes_cmac_16(const unsigned char *data, const unsigned char *aes_key, unsigned char *cmac); + +BD_PRIVATE void crypto_aacs_sign(const uint8_t *cert, const uint8_t *priv_key, + uint8_t *signature, + const uint8_t *nonce, const uint8_t *point); +BD_PRIVATE void crypto_aacs_title_hash(const uint8_t *ukf, uint64_t len, uint8_t *hash); + +BD_PRIVATE int crypto_aacs_verify(const uint8_t *cert, const uint8_t *signature, const uint8_t *data, uint32_t len); +BD_PRIVATE int crypto_aacs_verify_aacsla(const uint8_t *signature, const uint8_t *data, uint32_t len); +BD_PRIVATE int crypto_aacs_verify_cert(const uint8_t *cert); +BD_PRIVATE int crypto_aacs_verify_host_cert(const uint8_t *cert); +BD_PRIVATE int crypto_aacs_verify_drive_cert(const uint8_t *cert); + +BD_PRIVATE void crypto_create_host_key_pair(uint8_t *key, uint8_t *key_point); +BD_PRIVATE void crypto_create_nonce(uint8_t *buf, size_t len); +BD_PRIVATE void crypto_create_bus_key(const uint8_t *priv_key, const uint8_t *drive_key_point, unsigned char *bus_key); #endif /* CRYPTO_H_ */
View file
libaacs-0.7.1.tar.bz2/src/libaacs/mkb.c -> libaacs-0.8.0.tar.bz2/src/libaacs/mkb.c
Changed
@@ -42,7 +42,7 @@ } if (mkb->bufpos == type) { - DEBUG(DBG_MKB, "Retrieved MKB record 0x%02x (%p)\n", type, + BD_DEBUG(DBG_MKB, "Retrieved MKB record 0x%02x (%p)\n", type, (void*)(mkb->buf + pos)); return mkb->buf + pos; @@ -54,40 +54,22 @@ return NULL; } -MKB *mkb_open(const char *path) +MKB *mkb_read(AACS_FILE_H *fp) { - AACS_FILE_H *fp = NULL; - char *f_name; MKB *mkb = malloc(sizeof(MKB)); - f_name = str_printf("%s/AACS/MKB_RO.inf", path); + file_seek(fp, 0, SEEK_END); + mkb->size = file_tell(fp); + file_seek(fp, 0, SEEK_SET); - DEBUG(DBG_MKB, "Opening MKB %s...\n", f_name); - fp = file_open(f_name, "rb"); + mkb->buf = malloc(mkb->size); - X_FREE(f_name); + file_read(fp, mkb->buf, mkb->size); - if (fp) { - file_seek(fp, 0, SEEK_END); - mkb->size = file_tell(fp); - file_seek(fp, 0, SEEK_SET); + BD_DEBUG(DBG_MKB, "MKB size: %u\n", (unsigned)mkb->size); + BD_DEBUG(DBG_MKB, "MKB version: %d\n", mkb_version(mkb)); - mkb->buf = malloc(mkb->size); - - file_read(fp, mkb->buf, mkb->size); - - DEBUG(DBG_MKB, "MKB size: %u\n", (unsigned)mkb->size); - DEBUG(DBG_MKB, "MKB version: %d\n", mkb_version(mkb)); - - file_close(fp); - return mkb; - } - - DEBUG(DBG_MKB, "Error opening MKB!\n"); - - X_FREE(mkb); - - return NULL; + return mkb; } MKB *mkb_init(uint8_t *data, int len) @@ -214,7 +196,7 @@ size_t rec_len = 4 + 4 + 8 * entries + 40; if (rec_len > rl_size) { - DEBUG(DBG_MKB, "revocation list size mismatch\n"); + BD_DEBUG(DBG_MKB, "revocation list size mismatch\n"); return -1; } @@ -224,8 +206,8 @@ uint64_t id = MKINT_BE48(rl + 2); if (cert_id >= id && cert_id <= id + len) { char str16; - print_hex(str, rl + 2, 6); - DEBUG(DBG_MKB, "Certificate %s has been revoked\n", str); + str_print_hex(str, rl + 2, 6); + BD_DEBUG(DBG_MKB, "Certificate %s has been revoked\n", str); return 1; } rl += 8;
View file
libaacs-0.7.1.tar.bz2/src/libaacs/mkb.h -> libaacs-0.8.0.tar.bz2/src/libaacs/mkb.h
Changed
@@ -20,43 +20,45 @@ #ifndef MKB_H_ #define MKB_H_ -#include <util/attributes.h> +#include "util/attributes.h" #include <stdlib.h> #include <stdint.h> typedef struct mkb MKB; -AACS_PRIVATE MKB *mkb_open(const char *path); // init MKB -AACS_PRIVATE MKB *mkb_init(uint8_t *data, int len); // init MKB from data -AACS_PRIVATE void mkb_close(MKB *mkb); // free MKB +struct aacs_file_s; -AACS_PRIVATE const uint8_t *mkb_data(MKB *mkb); -AACS_PRIVATE size_t mkb_data_size(MKB *mkb); +BD_PRIVATE MKB *mkb_read(struct aacs_file_s *fp); // init MKB +BD_PRIVATE MKB *mkb_init(uint8_t *data, int len); // init MKB from data +BD_PRIVATE void mkb_close(MKB *mkb); // free MKB + +BD_PRIVATE const uint8_t *mkb_data(MKB *mkb); +BD_PRIVATE size_t mkb_data_size(MKB *mkb); // returns type -AACS_PRIVATE uint8_t mkb_type(MKB *mkb); +BD_PRIVATE uint8_t mkb_type(MKB *mkb); // returns version -AACS_PRIVATE uint32_t mkb_version(MKB *mkb); +BD_PRIVATE uint32_t mkb_version(MKB *mkb); // returns type and version record (required to verify signatures) -AACS_PRIVATE const uint8_t *mkb_type_and_version_record(MKB *mkb); +BD_PRIVATE const uint8_t *mkb_type_and_version_record(MKB *mkb); // returns list of revoked host entries -AACS_PRIVATE const uint8_t *mkb_host_revokation_entries(MKB *mkb, size_t *len); +BD_PRIVATE const uint8_t *mkb_host_revokation_entries(MKB *mkb, size_t *len); // returns list of revoked drive entries -AACS_PRIVATE const uint8_t *mkb_drive_revokation_entries(MKB *mkb, size_t *len); +BD_PRIVATE const uint8_t *mkb_drive_revokation_entries(MKB *mkb, size_t *len); // returns subset-diff records -AACS_PRIVATE const uint8_t *mkb_subdiff_records(MKB *mkb, size_t *len); +BD_PRIVATE const uint8_t *mkb_subdiff_records(MKB *mkb, size_t *len); // returns list of subset-diff offsets -AACS_PRIVATE const uint8_t *mkb_subdiff_offsets(MKB *mkb, size_t *len); +BD_PRIVATE const uint8_t *mkb_subdiff_offsets(MKB *mkb, size_t *len); // returns list of cvalues -AACS_PRIVATE const uint8_t *mkb_cvalues(MKB *mkb, size_t *len); +BD_PRIVATE const uint8_t *mkb_cvalues(MKB *mkb, size_t *len); // media key verification data return in param (always 16 bytes) -AACS_PRIVATE const uint8_t *mkb_mk_dv(MKB *mkb); +BD_PRIVATE const uint8_t *mkb_mk_dv(MKB *mkb); // returns MKB signature -AACS_PRIVATE const uint8_t *mkb_signature(MKB *mkb, size_t *len); +BD_PRIVATE const uint8_t *mkb_signature(MKB *mkb, size_t *len); -AACS_PRIVATE int mkb_host_cert_is_revoked(MKB *mkb, const uint8_t *cert_id); -AACS_PRIVATE int mkb_drive_cert_is_revoked(MKB *mkb, const uint8_t *cert_id); +BD_PRIVATE int mkb_host_cert_is_revoked(MKB *mkb, const uint8_t *cert_id); +BD_PRIVATE int mkb_drive_cert_is_revoked(MKB *mkb, const uint8_t *cert_id); /* The Media Key block is of variable size but must be a multiple of 4 * MKB Structure:
View file
libaacs-0.7.1.tar.bz2/src/libaacs/mmc.c -> libaacs-0.8.0.tar.bz2/src/libaacs/mmc.c
Changed
@@ -24,121 +24,23 @@ #endif #include "mmc.h" + #include "crypto.h" -#include "file/path.h" -#include "util/macro.h" +#include "file/mmc_device.h" #include "util/logging.h" +#include "util/macro.h" +#include "util/strutl.h" #include <stdlib.h> -#include <errno.h> -#include <fcntl.h> -#include <unistd.h> #include <string.h> -#include <stdio.h> - -#ifdef USE_IOKIT - -#include <Carbon/Carbon.h> - -#include <IOKit/IOKitLib.h> -#include <IOKit/IOCFPlugIn.h> - -#include <DiskArbitration/DiskArbitration.h> - -/* need to undefine VERSION as one of the members of struct - SCSICmd_INQUIRY_StandardData is named VERSION (see - IOKit/scsi/SCSICmds_INQUIRY_Definitions.h) */ -#undef VERSION -#include <IOKit/scsi/SCSITaskLib.h> - -#include <IOKit/storage/IOBDMediaBSDClient.h> - -#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif - -#ifdef HAVE_SYS_PARAM_H -#include <sys/param.h> -#endif - -#ifdef HAVE_SYS_MOUNT_H -#include <sys/mount.h> -#endif - -#ifdef HAVE_LIBGEN_H -#include <libgen.h> -#endif - -#endif - -#ifdef HAVE_MNTENT_H -#include <mntent.h> -#endif - -#ifdef HAVE_LIMITS_H -#include <limits.h> -#endif - -#ifdef HAVE_LINUX_CDROM_H -#include <sys/ioctl.h> -#include <linux/cdrom.h> -#endif - -#if defined(_WIN32) -#include <windows.h> -#include <winsock.h> -#endif - #ifndef DEBUG_KEYS #define DEBUG_KEYS 0 #endif -#if defined(_WIN32) -/* - * from ntddscsi.h, Windows DDK - */ -# define SCSI_IOCTL_DATA_OUT 0 -# define SCSI_IOCTL_DATA_IN 1 -# define SCSI_IOCTL_DATA_UNSPECIFIED 2 -# define IOCTL_SCSI_PASS_THROUGH_DIRECT 0x4D014 -# define MAX_SENSE_LEN 18 - -typedef struct _SCSI_PASS_THROUGH_DIRECT { - USHORT Length; - UCHAR ScsiStatus; - UCHAR PathId; - UCHAR TargetId; - UCHAR Lun; - UCHAR CdbLength; - UCHAR SenseInfoLength; - UCHAR DataIn; - ULONG DataTransferLength; - ULONG TimeOutValue; - PVOID DataBuffer; - ULONG SenseInfoOffset; - UCHAR Cdb16; -} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT; - -#endif // defined(_WIN32) - struct mmc { -#if defined(USE_IOKIT) - MMCDeviceInterface **mmcInterface; - SCSITaskDeviceInterface **taskInterface; - - /* device short name (ie disk1) */ - char bsd_name128; - - /* for mounting/unmounting the disc */ - DADiskRef disk; - DASessionRef session; - bool is_mounted; -#elif defined(_WIN32) - HANDLE fd; -#else - int fd; -#endif + MMCDEV *dev; + uint8_t host_nonce20; uint8_t host_key20; uint8_t host_key_point40; @@ -148,191 +50,6 @@ uint8_t read_drive_cert; }; -static int _mmc_send_cmd(MMC *mmc, const uint8_t *cmd, uint8_t *buf, size_t tx, - size_t rx) -{ -#if defined(HAVE_LINUX_CDROM_H) - if (mmc->fd >= 0) { - struct cdrom_generic_command cgc; - struct request_sense sense; - - memset(&cgc, 0, sizeof(cgc)); - memcpy(cgc.cmd, cmd, CDROM_PACKET_SIZE); - cgc.sense = &sense; - cgc.timeout = 5000; - - if (buf) { - if (tx) { - cgc.data_direction = CGC_DATA_WRITE; - cgc.buflen = tx; - cgc.buffer = buf; - } else if (rx) { - cgc.data_direction = CGC_DATA_READ; - cgc.buflen = rx; - cgc.buffer = buf; - } - } else { - cgc.data_direction = CGC_DATA_NONE; - cgc.buflen = 0; - cgc.buffer = NULL; - } - - int a = ioctl(mmc->fd, CDROM_SEND_PACKET, &cgc); - - char str512; - DEBUG(DBG_MMC, "Send LINUX MMC cmd %s:\n", - print_hex(str, cmd, 16)); - if (tx) { - DEBUG(DBG_MMC, " Buffer: %s ->\n", print_hex(str, buf, tx>255?255:tx)); - } else { - DEBUG(DBG_MMC, " Buffer: %s <-\n", print_hex(str, buf, rx>255?255:rx)); - } - - if (a >= 0) { - DEBUG(DBG_MMC, " Send succeeded! %d\n", a); - return 1; - } - - DEBUG(DBG_MMC, " Send failed! %d %s\n", a, strerror(errno)); - } - -#elif defined(_WIN32) - - DWORD dwBytesReturned; - - struct { - SCSI_PASS_THROUGH_DIRECT sptd; - UCHAR SenseBufMAX_SENSE_LEN; - } sptd_sb; - - if (mmc->fd == INVALID_HANDLE_VALUE) { - return 0; - } - - sptd_sb.sptd.Length = sizeof(SCSI_PASS_THROUGH_DIRECT); - sptd_sb.sptd.PathId = 0; - sptd_sb.sptd.TargetId = 0; - sptd_sb.sptd.Lun = 0; - sptd_sb.sptd.CdbLength = 12; - sptd_sb.sptd.SenseInfoLength = MAX_SENSE_LEN; - sptd_sb.sptd.TimeOutValue = 5;
View file
libaacs-0.7.1.tar.bz2/src/libaacs/mmc.h -> libaacs-0.8.0.tar.bz2/src/libaacs/mmc.h
Changed
@@ -21,7 +21,7 @@ #ifndef MMC_H_ #define MMC_H_ -#include <util/attributes.h> +#include "util/attributes.h" #include <stdint.h> @@ -35,14 +35,14 @@ #define MMC_READ_PMSN 1 #define MMC_READ_DATA_KEYS 2 -AACS_PRIVATE MMC *mmc_open(const char *path); -AACS_PRIVATE void mmc_close(MMC *mmc); -AACS_PRIVATE int mmc_read_auth(MMC *mmc, const uint8_t *host_priv_key, const uint8_t *host_cert, +BD_PRIVATE MMC *mmc_open(const char *path); +BD_PRIVATE void mmc_close(MMC *mmc); +BD_PRIVATE int mmc_read_auth(MMC *mmc, const uint8_t *host_priv_key, const uint8_t *host_cert, int request, uint8_t *p1, uint8_t *p2); -AACS_PRIVATE int mmc_read_drive_cert(MMC *mmc, uint8_t *drive_cert); -AACS_PRIVATE const uint8_t *mmc_get_drive_cert(MMC *mmc); +BD_PRIVATE int mmc_read_drive_cert(MMC *mmc, uint8_t *drive_cert); +BD_PRIVATE const uint8_t *mmc_get_drive_cert(MMC *mmc); /* read partial MKB */ -AACS_PRIVATE uint8_t *mmc_read_mkb(MMC *mmc, int address, int *size); +BD_PRIVATE uint8_t *mmc_read_mkb(MMC *mmc, int address, int *size); #endif /* MMC_H_ */
View file
libaacs-0.7.1.tar.bz2/src/util/attributes.h -> libaacs-0.8.0.tar.bz2/src/util/attributes.h
Changed
@@ -21,38 +21,41 @@ #define LIBAACS_ATTRIBUTES_H_ #if defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3 )) -# define AACS_ATTR_FORMAT_PRINTF(format,var) \ - __attribute__((__format__(__printf__,format,var))) -# define AACS_ATTR_MALLOC __attribute__((__malloc__)) -# define AACS_ATTR_PACKED __attribute__((packed)) +# if defined(_WIN32) +# define BD_ATTR_FORMAT_PRINTF(format,var) __attribute__((__format__(__gnu_printf__,format,var))) +# else +# define BD_ATTR_FORMAT_PRINTF(format,var) __attribute__((__format__(__printf__,format,var))) +# endif +# define BD_ATTR_MALLOC __attribute__((__malloc__)) +# define BD_ATTR_PACKED __attribute__((packed)) #else -# define AACS_ATTR_FORMAT_PRINTF(format,var) -# define AACS_ATTR_MALLOC -# define AACS_ATTR_PACKED +# define BD_ATTR_FORMAT_PRINTF(format,var) +# define BD_ATTR_MALLOC +# define BD_ATTR_PACKED #endif #if defined(_WIN32) # if defined(__GNUC__) # define AACS_PUBLIC __attribute__((dllexport)) -# define AACS_PRIVATE +# define BD_PRIVATE # else # define AACS_PUBLIC __declspec(dllexport) -# define AACS_PRIVATE +# define BD_PRIVATE # endif #elif defined(__GNUC__) && __GNUC__ >= 4 # define AACS_PUBLIC __attribute__((visibility("default"))) -# define AACS_PRIVATE __attribute__((visibility("hidden"))) +# define BD_PRIVATE __attribute__((visibility("hidden"))) #else # define AACS_PUBLIC -# define AACS_PRIVATE +# define BD_PRIVATE #endif #if !defined(__GNUC__) || __GNUC__ < 3 -# define AACS_LIKELY(x) (x) -# define AACS_UNLIKELY(x) (x) +# define BD_LIKELY(x) (x) +# define BD_UNLIKELY(x) (x) #else -# define AACS_LIKELY(x) __builtin_expect((x),1) -# define AACS_UNLIKELY(x) __builtin_expect((x),0) +# define BD_LIKELY(x) __builtin_expect((x),1) +# define BD_UNLIKELY(x) __builtin_expect((x),0) #endif #endif /* LIBAACS_ATTRIBUTES_H_ */
View file
libaacs-0.7.1.tar.bz2/src/util/logging.c -> libaacs-0.8.0.tar.bz2/src/util/logging.c
Changed
@@ -1,6 +1,7 @@ /* * This file is part of libaacs * Copyright (C) 2009-2010 Obliter0n + * Copyright (C) 2013 VideoLAN * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -19,35 +20,30 @@ #include "logging.h" +#include "file/file.h" + #include <stdlib.h> #include <stdio.h> #include <stdarg.h> #include <string.h> -uint32_t debug_mask = (uint32_t)-1; /* set all bits to make sure aacs_debug() is called for initialization */ - -char *print_hex(char *out, const uint8_t *buf, int count) -{ - int zz; - for(zz = 0; zz < count; zz++) { - sprintf(out + (zz * 2), "%02X", bufzz); - } - - return out; -} +uint32_t debug_mask = (uint32_t)-1; /* set all bits to make sure bd_debug() is called for initialization */ -void aacs_debug(const char *file, int line, uint32_t mask, const char *format, ...) +void bd_debug(const char *file, int line, uint32_t mask, const char *format, ...) { - static int debug_init = 0; - static FILE *logfile = NULL; + static int debug_init = 0; + static FILE *logfile = NULL; // Only call getenv() once. if (!debug_init) { debug_init = 1; logfile = stderr; - debug_mask = DBG_CRIT; char *env = NULL; + if (debug_mask == (uint32_t)-1) { + /* might be set by application with bd_set_debug_mask() */ + debug_mask = DBG_CRIT; + } if ((env = getenv("AACS_DEBUG_MASK"))) debug_mask = strtol(env, NULL, 0); else if ((env = getenv("BD_DEBUG_MASK"))) @@ -58,7 +54,7 @@ FILE *fp = fopen(env, "wb"); if (fp) { logfile = fp; - setvbuf(logfile, NULL, _IOLBF, 0); + setvbuf(logfile, NULL, _IONBF, 0); } else { fprintf(logfile, "%s:%d: Error opening log file %s\n", __FILE__, __LINE__, env); } @@ -66,13 +62,16 @@ } if (mask & debug_mask) { - char buffer512; + const char *f = strrchr(file, DIR_SEP_CHAR); + char buffer4096, *pt = buffer; va_list args; + pt += sprintf(buffer, "%s:%d: ", f ? f + 1 : file, line); + va_start(args, format); - sprintf(buffer, "libaacs: %s:%d: %s", file, line, format); - vfprintf(logfile, buffer, args); + vsnprintf(pt, sizeof(buffer) - (size_t)(intptr_t)(pt - buffer) - 1, format, args); va_end(args); + fprintf(logfile, "%s", buffer); } }
View file
libaacs-0.7.1.tar.bz2/src/util/logging.h -> libaacs-0.8.0.tar.bz2/src/util/logging.h
Changed
@@ -24,15 +24,6 @@ #include <stdint.h> -AACS_PRIVATE extern uint32_t debug_mask; - -#define DEBUG(MASK,...) \ - do { \ - if (AACS_UNLIKELY((MASK) & debug_mask)) { \ - aacs_debug(__FILE__,__LINE__,MASK,__VA_ARGS__); \ - } \ - } while (0) - enum debug_mask_enum { DBG_RESERVED = 0x0001, DBG_CONFIGFILE = 0x0002, @@ -44,15 +35,23 @@ DBG_DIR = 0x0080, //DBG_NAV = 0x0100, //DBG_BDPLUS = 0x0200, - DBG_DLX = 0x0400, + //DBG_DLX = 0x0400, DBG_CRIT = 0x0800, /* this is the default debug mask so use this if you want to display critical info */ //DBG_HDMV = 0x1000, }; typedef enum debug_mask_enum debug_mask_t; -AACS_PRIVATE char *print_hex(char *out, const uint8_t *str, int count); -AACS_PRIVATE void aacs_debug(const char *file, int line, uint32_t mask, const char *format, ...) - AACS_ATTR_FORMAT_PRINTF(4,5); +BD_PRIVATE extern uint32_t debug_mask; + +#define BD_DEBUG(MASK,...) \ + do { \ + if (BD_UNLIKELY((MASK) & debug_mask)) { \ + bd_debug(__FILE__,__LINE__,MASK,__VA_ARGS__); \ + } \ + } while (0) + +BD_PRIVATE void bd_debug(const char *file, int line, uint32_t mask, const char *format, ...) BD_ATTR_FORMAT_PRINTF(4,5); + #endif /* LOGGING_H_ */
View file
libaacs-0.7.1.tar.bz2/src/util/macro.h -> libaacs-0.8.0.tar.bz2/src/util/macro.h
Changed
@@ -20,19 +20,14 @@ #ifndef MACRO_H_ #define MACRO_H_ -#define HEX_PRINT(X,Y) \ - { \ - int zz; \ - for(zz = 0; zz < Y; zz++) \ - fprintf(stderr, "%02X", Xzz); \ - fprintf(stderr, "\n"); \ - } +#include <stdlib.h> /* free() */ + #define MKINT_BE16(X) ( (X)0 << 8 | (X)1 ) #define MKINT_BE24(X) ( (X)0 << 16 | (X)1 << 8 | (X)2 ) #define MKINT_BE32(X) ( (X)0 << 24 | (X)1 << 16 | (X)2 << 8 | (X)3 ) #define MKINT_BE48(X) ( (uint64_t)((X)0) << 40 | (uint64_t)((X)1) << 32 | (uint64_t)((X)2) << 24 | \ (uint64_t)((X)3) << 16 | (uint64_t)((X)4) << 8 | (uint64_t)((X)5) ) -#define X_FREE(X) do { if (X) free(X); X = NULL; } while(0) +#define X_FREE(X) ( free(X), X = NULL ) #endif /* MACRO_H_ */
View file
libaacs-0.7.1.tar.bz2/src/util/strutl.c -> libaacs-0.8.0.tar.bz2/src/util/strutl.c
Changed
@@ -19,13 +19,15 @@ */ #include "strutl.h" + +#include "macro.h" #include "logging.h" -#include <string.h> #include <stdio.h> #include <stdarg.h> #include <stdlib.h> #include <ctype.h> +#include <string.h> /* Function to assigns proper hex value of character to uint8_t pointer */ @@ -105,7 +107,7 @@ break; default: - DEBUG(DBG_AACS, "Invalid hex value '%c'", c); + BD_DEBUG(DBG_AACS, "Invalid hex value '%c'", c); return 0; } @@ -151,6 +153,11 @@ return 1; } +char * str_dup(const char *str) +{ + return str ? strcpy (malloc(strlen(str) + 1), str) : NULL; +} + char *str_printf(const char *fmt, ...) { /* Guess we need no more than 100 bytes. */ @@ -210,7 +217,7 @@ /* check end */ if (isxdigit(strii)) { - //DEBUG(DBG_AACS, "Invalid hex string (too long): %s", str); + //BD_DEBUG(DBG_AACS, "Invalid hex string (too long): %s", str); return 0; } @@ -240,3 +247,13 @@ return s; } + +char *str_print_hex(char *out, const uint8_t *buf, int count) +{ + int zz; + for (zz = 0; zz < count; zz++) { + sprintf(out + (zz * 2), "%02x", bufzz); + } + + return out; +}
View file
libaacs-0.7.1.tar.bz2/src/util/strutl.h -> libaacs-0.8.0.tar.bz2/src/util/strutl.h
Changed
@@ -24,13 +24,16 @@ #include <stdint.h> -AACS_PRIVATE int hexstring_to_hex_array(uint8_t *hex_array, uint32_t size, +BD_PRIVATE int hexstring_to_hex_array(uint8_t *hex_array, uint32_t size, const char *hexstring); -AACS_PRIVATE int hex_array_to_hexstring(char *str, const uint8_t *hex_array, uint32_t size); +BD_PRIVATE int hex_array_to_hexstring(char *str, const uint8_t *hex_array, uint32_t size); -AACS_PRIVATE char *str_printf(const char *fmt, ...) AACS_ATTR_FORMAT_PRINTF(1,2) AACS_ATTR_MALLOC; +BD_PRIVATE char * str_dup(const char *str) BD_ATTR_MALLOC; +BD_PRIVATE char * str_printf(const char *fmt, ...) BD_ATTR_FORMAT_PRINTF(1,2) BD_ATTR_MALLOC; -AACS_PRIVATE const char * str_next_line (const char *str); -AACS_PRIVATE char * str_get_hex_string(const char *str, int len) AACS_ATTR_MALLOC; +BD_PRIVATE const char * str_next_line (const char *str); +BD_PRIVATE char * str_get_hex_string(const char *str, int len) BD_ATTR_MALLOC; + +BD_PRIVATE char * str_print_hex(char *out, const uint8_t *str, int count); #endif // STRUTL_H_
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.