Add experimental CMake support
Remove unneeded crypto/aes_via_ace.h git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@270 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
		
							parent
							
								
									25493735fd
								
							
						
					
					
						commit
						74ef78d57e
					
				| 
						 | 
					@ -0,0 +1,96 @@
 | 
				
			||||||
 | 
					# CMake is still experimental, use qmake instead
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PROJECT(KeePassX)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MESSAGE("CMake is still experimental, use qmake instead")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SET( keepassx_VERSION_SHORT "0.4.0" )
 | 
				
			||||||
 | 
					SET( keepassx_VERSION "0.4.0beta1" )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ADD_DEFINITIONS(-D'KEEPASSX_VERSION="${keepassx_VERSION}"')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#Set the custom CMake module directory where our include/lib finders are
 | 
				
			||||||
 | 
					SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IF( APPLE OR MINGW )
 | 
				
			||||||
 | 
						SET( PROGNAME KeePassX )
 | 
				
			||||||
 | 
					ELSE( APPLE OR MINGW )
 | 
				
			||||||
 | 
						SET( PROGNAME keepassx )
 | 
				
			||||||
 | 
					ENDIF( APPLE OR MINGW )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IF( APPLE )
 | 
				
			||||||
 | 
						SET( MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/share/macx_bundle/Info_cmake.plist )
 | 
				
			||||||
 | 
						SET( MACOSX_BUNDLE_ICON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/share/macx_bundle/icon.icns )
 | 
				
			||||||
 | 
						SET( MACOSX_BUNDLE_INFO_STRING KeePassX v${keepassx_VERSION} )
 | 
				
			||||||
 | 
						SET( MACOSX_BUNDLE_VERSION ${keepassx_VERSION} )
 | 
				
			||||||
 | 
						SET( MACOSX_BUNDLE_SHORT_VERSION_STRING ${keepassx_VERSION_SHORT} )
 | 
				
			||||||
 | 
						SET( MACOSX_BUNDLE_LONG_VERSION_STRING Version ${keepassx_VERSION} )
 | 
				
			||||||
 | 
						SET( CMAKE_OSX_ARCHITECTURES ppc;i386 )
 | 
				
			||||||
 | 
					ENDIF( APPLE )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IF( MINGW )
 | 
				
			||||||
 | 
						FIND_PROGRAM(CMAKE_RC NAMES ${_CMAKE_TOOLCHAIN_PREFIX}windres HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/keepassx.o
 | 
				
			||||||
 | 
							COMMAND ${CMAKE_RC} -I${CMAKE_CURRENT_SOURCE_DIR}
 | 
				
			||||||
 | 
							-i${CMAKE_CURRENT_SOURCE_DIR}/share/win_ico/keepassx.rc -o ${CMAKE_CURRENT_BINARY_DIR}/keepassx.o )
 | 
				
			||||||
 | 
						SET(keepassx_RCS ${CMAKE_CURRENT_BINARY_DIR}/keepassx.o)
 | 
				
			||||||
 | 
					ENDIF( MINGW )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTION(PRECOMPILED_HEADER "Enable precompiled header (required gcc >= 3.4.0)" TRUE)
 | 
				
			||||||
 | 
					IF( APPLE OR CMAKE_SYSTEM_NAME STREQUAL FreeBSD )
 | 
				
			||||||
 | 
						SET(PRECOMPILED_HEADER FALSE)
 | 
				
			||||||
 | 
					ENDIF( APPLE OR CMAKE_SYSTEM_NAME STREQUAL FreeBSD )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IF( PRECOMPILED_HEADER )
 | 
				
			||||||
 | 
						FIND_PACKAGE(PCHSupport)
 | 
				
			||||||
 | 
						IF(NOT PCHSupport_FOUND)
 | 
				
			||||||
 | 
							SET(PRECOMPILED_HEADER FALSE)
 | 
				
			||||||
 | 
						ENDIF(NOT PCHSupport_FOUND)
 | 
				
			||||||
 | 
					ENDIF( PRECOMPILED_HEADER )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SET(QT_MIN_VERSION "4.3.0")
 | 
				
			||||||
 | 
					SET(QT_USE_QTXML TRUE)
 | 
				
			||||||
 | 
					SET(QT_USE_QTMAIN TRUE)
 | 
				
			||||||
 | 
					FIND_PACKAGE(Qt4 REQUIRED)
 | 
				
			||||||
 | 
					INCLUDE(${QT_USE_FILE})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTION(AUTOTYPE "Enable auto-type (X11 only)" TRUE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IF( NOT UNIX )
 | 
				
			||||||
 | 
						SET(AUTOTYPE FALSE)
 | 
				
			||||||
 | 
					ENDIF( NOT UNIX )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IF( AUTOTYPE )
 | 
				
			||||||
 | 
						find_package(X11)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						IF( X11_XTest_FOUND )
 | 
				
			||||||
 | 
							INCLUDE_DIRECTORIES( ${X11_XTest_INCLUDE_PATH} )
 | 
				
			||||||
 | 
							SET(AUTOTYPE_LIBRARIES ${X11_XTest_LIB})
 | 
				
			||||||
 | 
							ADD_DEFINITIONS(-DAUTOTYPE -DGLOBAL_AUTOTYPE)
 | 
				
			||||||
 | 
						ELSE( X11_XTest_FOUND )
 | 
				
			||||||
 | 
							SET(AUTOTYPE FALSE)
 | 
				
			||||||
 | 
						ENDIF( X11_XTest_FOUND )
 | 
				
			||||||
 | 
					ENDIF( AUTOTYPE )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IF( MINGW )
 | 
				
			||||||
 | 
						SET(BINDIR "")
 | 
				
			||||||
 | 
						SET(SHAREDIR "share")
 | 
				
			||||||
 | 
					ELSEIF( APPLE )
 | 
				
			||||||
 | 
						SET(BINDIR "")
 | 
				
			||||||
 | 
						SET(SHAREDIR "Contents/Resources")
 | 
				
			||||||
 | 
					ELSE( MINGW )
 | 
				
			||||||
 | 
						SET(BINDIR "bin")
 | 
				
			||||||
 | 
						SET(SHAREDIR "share/keepassx")
 | 
				
			||||||
 | 
						SET(SHAREDIR_APP "share")
 | 
				
			||||||
 | 
					ENDIF( MINGW )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ADD_SUBDIRECTORY(src)
 | 
				
			||||||
 | 
					ADD_SUBDIRECTORY(share)
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,65 @@
 | 
				
			||||||
 | 
					# - Try to find precompiled headers support for GCC 3.4 and 4.x
 | 
				
			||||||
 | 
					# Once done this will define:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Variable:
 | 
				
			||||||
 | 
					#   PCHSupport_FOUND
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Macro:
 | 
				
			||||||
 | 
					#   ADD_PRECOMPILED_HEADER
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IF(CMAKE_COMPILER_IS_GNUCXX)
 | 
				
			||||||
 | 
					    EXEC_PROGRAM(
 | 
				
			||||||
 | 
					    	${CMAKE_CXX_COMPILER} 
 | 
				
			||||||
 | 
					        ARGS 			--version 
 | 
				
			||||||
 | 
					        OUTPUT_VARIABLE _compiler_output)
 | 
				
			||||||
 | 
					    STRING(REGEX REPLACE ".* ([0-9]\\.[0-9]\\.[0-9]) .*" "\\1" 
 | 
				
			||||||
 | 
					           gcc_compiler_version ${_compiler_output})
 | 
				
			||||||
 | 
					    #MESSAGE("GCC Version: ${gcc_compiler_version}")
 | 
				
			||||||
 | 
					    IF(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]")
 | 
				
			||||||
 | 
					        SET(PCHSupport_FOUND TRUE)
 | 
				
			||||||
 | 
					    ELSE(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]")
 | 
				
			||||||
 | 
					        IF(gcc_compiler_version MATCHES "3\\.4\\.[0-9]")
 | 
				
			||||||
 | 
					            SET(PCHSupport_FOUND TRUE)
 | 
				
			||||||
 | 
					        ENDIF(gcc_compiler_version MATCHES "3\\.4\\.[0-9]")
 | 
				
			||||||
 | 
					    ENDIF(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]")
 | 
				
			||||||
 | 
					ENDIF(CMAKE_COMPILER_IS_GNUCXX)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MACRO(ADD_PRECOMPILED_HEADER _targetName _input )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    GET_FILENAME_COMPONENT(_name ${_input} NAME)
 | 
				
			||||||
 | 
					    SET(_source "${CMAKE_CURRENT_SOURCE_DIR}/${_input}")
 | 
				
			||||||
 | 
					    SET(_outdir "${CMAKE_CURRENT_BINARY_DIR}/${_name}.gch")
 | 
				
			||||||
 | 
					    MAKE_DIRECTORY(${_outdir})
 | 
				
			||||||
 | 
					    SET(_output "${_outdir}/${CMAKE_BUILD_TYPE}.c++")
 | 
				
			||||||
 | 
					    STRING(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" _flags_var_name)
 | 
				
			||||||
 | 
					    SET(_compiler_FLAGS ${${_flags_var_name}})
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    GET_DIRECTORY_PROPERTY(_directory_flags INCLUDE_DIRECTORIES)
 | 
				
			||||||
 | 
					    FOREACH(item ${_directory_flags})
 | 
				
			||||||
 | 
					    LIST(APPEND _compiler_FLAGS "-I${item}")
 | 
				
			||||||
 | 
					    ENDFOREACH(item)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GET_DIRECTORY_PROPERTY(_directory_flags COMPILE_DEFINITIONS)
 | 
				
			||||||
 | 
						FOREACH(item ${_directory_flags})
 | 
				
			||||||
 | 
					    LIST(APPEND _compiler_FLAGS "-D${item}")
 | 
				
			||||||
 | 
					    ENDFOREACH(item)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    SEPARATE_ARGUMENTS(_compiler_FLAGS)
 | 
				
			||||||
 | 
					    #MESSAGE("_compiler_FLAGS: ${_compiler_FLAGS}")
 | 
				
			||||||
 | 
					    message("${CMAKE_CXX_COMPILER} ${_compiler_FLAGS} -x c++-header -o ${_output} ${_source}")
 | 
				
			||||||
 | 
					    ADD_CUSTOM_COMMAND(
 | 
				
			||||||
 | 
					        OUTPUT ${_output}
 | 
				
			||||||
 | 
					        COMMAND ${CMAKE_CXX_COMPILER}
 | 
				
			||||||
 | 
									${_compiler_FLAGS}
 | 
				
			||||||
 | 
									-x c++-header
 | 
				
			||||||
 | 
									-o ${_output} ${_source}
 | 
				
			||||||
 | 
					        DEPENDS ${_source} )
 | 
				
			||||||
 | 
					   	ADD_CUSTOM_TARGET(${_targetName}_gch DEPENDS ${_output})
 | 
				
			||||||
 | 
					    ADD_DEPENDENCIES(${_targetName} ${_targetName}_gch)
 | 
				
			||||||
 | 
					    #SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-include ${_name} -Winvalid-pch -H")
 | 
				
			||||||
 | 
					    #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include ${_name} -Winvalid-pch")
 | 
				
			||||||
 | 
					    SET_TARGET_PROPERTIES(${_targetName} PROPERTIES
 | 
				
			||||||
 | 
					    	COMPILE_FLAGS "-include ${_name} -Winvalid-pch"
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					ENDMACRO(ADD_PRECOMPILED_HEADER)
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					# CMake is still experimental, use qmake instead
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INSTALL(DIRECTORY keepassx/i18n keepassx/icons
 | 
				
			||||||
 | 
						DESTINATION ${SHAREDIR}
 | 
				
			||||||
 | 
						PATTERN *.qm EXCLUDE
 | 
				
			||||||
 | 
						PATTERN *~ EXCLUDE
 | 
				
			||||||
 | 
						PATTERN .svn EXCLUDE
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INSTALL(FILES keepassx/license.html DESTINATION ${SHAREDIR})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IF (NOT MINGW AND NOT APPLE)
 | 
				
			||||||
 | 
						INSTALL(DIRECTORY applications
 | 
				
			||||||
 | 
							DESTINATION ${SHAREDIR_APP}
 | 
				
			||||||
 | 
							PATTERN *~ EXCLUDE
 | 
				
			||||||
 | 
							PATTERN .svn EXCLUDE
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
						INSTALL(DIRECTORY mime
 | 
				
			||||||
 | 
							DESTINATION ${SHAREDIR_APP}
 | 
				
			||||||
 | 
							PATTERN *~ EXCLUDE
 | 
				
			||||||
 | 
							PATTERN .svn EXCLUDE
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
						INSTALL(DIRECTORY mimelnk
 | 
				
			||||||
 | 
							DESTINATION ${SHAREDIR_APP}
 | 
				
			||||||
 | 
							PATTERN *~ EXCLUDE
 | 
				
			||||||
 | 
							PATTERN .svn EXCLUDE
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
						INSTALL(DIRECTORY pixmaps
 | 
				
			||||||
 | 
							DESTINATION ${SHAREDIR_APP}
 | 
				
			||||||
 | 
							PATTERN *~ EXCLUDE
 | 
				
			||||||
 | 
							PATTERN .svn EXCLUDE
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					ENDIF (NOT MINGW AND NOT APPLE)
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,172 @@
 | 
				
			||||||
 | 
					# CMake is still experimental, use qmake instead
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SET(keepassx_HEADERS
 | 
				
			||||||
 | 
						main.h
 | 
				
			||||||
 | 
						mainwindow.h
 | 
				
			||||||
 | 
						Database.h
 | 
				
			||||||
 | 
						Kdb3Database.h
 | 
				
			||||||
 | 
						lib/EntryView.h
 | 
				
			||||||
 | 
						lib/FileDialogs.h
 | 
				
			||||||
 | 
						lib/GroupView.h
 | 
				
			||||||
 | 
						lib/ShortcutWidget.h
 | 
				
			||||||
 | 
						lib/UrlLabel.h
 | 
				
			||||||
 | 
						lib/WaitAnimationWidget.h
 | 
				
			||||||
 | 
						dialogs/AboutDlg.h
 | 
				
			||||||
 | 
						dialogs/AddBookmarkDlg.h
 | 
				
			||||||
 | 
						dialogs/CalendarDlg.h
 | 
				
			||||||
 | 
						dialogs/CollectEntropyDlg.h
 | 
				
			||||||
 | 
						dialogs/CustomizeDetailViewDlg.h
 | 
				
			||||||
 | 
						dialogs/DatabaseSettingsDlg.h
 | 
				
			||||||
 | 
						dialogs/EditEntryDlg.h
 | 
				
			||||||
 | 
						dialogs/EditGroupDlg.h
 | 
				
			||||||
 | 
						dialogs/ExpiredEntriesDlg.h
 | 
				
			||||||
 | 
						dialogs/ManageBookmarksDlg.h
 | 
				
			||||||
 | 
						dialogs/PasswordDlg.h
 | 
				
			||||||
 | 
						dialogs/PasswordGenDlg.h
 | 
				
			||||||
 | 
						dialogs/SearchDlg.h
 | 
				
			||||||
 | 
						dialogs/SelectIconDlg.h
 | 
				
			||||||
 | 
						dialogs/SettingsDlg.h
 | 
				
			||||||
 | 
						dialogs/SimplePasswordDlg.h
 | 
				
			||||||
 | 
					#	dialogs/TrashCanDlg.h
 | 
				
			||||||
 | 
						import/Import.h
 | 
				
			||||||
 | 
					#	import/Import_GnuKeyRing.h
 | 
				
			||||||
 | 
						import/Import_KeePassX_Xml.h
 | 
				
			||||||
 | 
						import/Import_KWalletXml.h
 | 
				
			||||||
 | 
						import/Import_PwManager.h
 | 
				
			||||||
 | 
						export/Export.h
 | 
				
			||||||
 | 
						export/Export_KeePassX_Xml.h
 | 
				
			||||||
 | 
						export/Export_Txt.h
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SET(keepassx_SOURCES
 | 
				
			||||||
 | 
						main.cpp
 | 
				
			||||||
 | 
						mainwindow.cpp
 | 
				
			||||||
 | 
						KpxConfig.cpp
 | 
				
			||||||
 | 
						Database.cpp
 | 
				
			||||||
 | 
						Kdb3Database.cpp
 | 
				
			||||||
 | 
						lib/bookmarks.cpp
 | 
				
			||||||
 | 
						lib/EntryView.cpp
 | 
				
			||||||
 | 
						lib/FileDialogs.cpp
 | 
				
			||||||
 | 
						lib/GroupView.cpp
 | 
				
			||||||
 | 
						lib/random.cpp
 | 
				
			||||||
 | 
						lib/SecString.cpp
 | 
				
			||||||
 | 
						lib/ShortcutWidget.cpp
 | 
				
			||||||
 | 
						lib/tools.cpp
 | 
				
			||||||
 | 
						lib/UrlLabel.cpp
 | 
				
			||||||
 | 
						lib/WaitAnimationWidget.cpp
 | 
				
			||||||
 | 
						crypto/aescrypt.c
 | 
				
			||||||
 | 
						crypto/aeskey.c
 | 
				
			||||||
 | 
						crypto/aes_modes.c
 | 
				
			||||||
 | 
						crypto/aestab.c
 | 
				
			||||||
 | 
						crypto/arcfour.cpp
 | 
				
			||||||
 | 
						crypto/blowfish.cpp
 | 
				
			||||||
 | 
						crypto/sha256.cpp
 | 
				
			||||||
 | 
						crypto/twoclass.cpp
 | 
				
			||||||
 | 
						crypto/twofish.cpp
 | 
				
			||||||
 | 
						crypto/yarrow.cpp
 | 
				
			||||||
 | 
						apg/convert.c
 | 
				
			||||||
 | 
						apg/pronpass.c
 | 
				
			||||||
 | 
						apg/randpass.c
 | 
				
			||||||
 | 
						dialogs/AboutDlg.cpp
 | 
				
			||||||
 | 
						dialogs/AddBookmarkDlg.cpp
 | 
				
			||||||
 | 
						dialogs/CalendarDlg.cpp
 | 
				
			||||||
 | 
						dialogs/CollectEntropyDlg.cpp
 | 
				
			||||||
 | 
						dialogs/CustomizeDetailViewDlg.cpp
 | 
				
			||||||
 | 
						dialogs/DatabaseSettingsDlg.cpp
 | 
				
			||||||
 | 
						dialogs/EditEntryDlg.cpp
 | 
				
			||||||
 | 
						dialogs/EditGroupDlg.cpp
 | 
				
			||||||
 | 
						dialogs/ExpiredEntriesDlg.cpp
 | 
				
			||||||
 | 
						dialogs/ManageBookmarksDlg.cpp
 | 
				
			||||||
 | 
						dialogs/PasswordDlg.cpp
 | 
				
			||||||
 | 
						dialogs/PasswordGenDlg.cpp
 | 
				
			||||||
 | 
						dialogs/SearchDlg.cpp
 | 
				
			||||||
 | 
						dialogs/SelectIconDlg.cpp
 | 
				
			||||||
 | 
						dialogs/SettingsDlg.cpp
 | 
				
			||||||
 | 
						dialogs/SimplePasswordDlg.cpp
 | 
				
			||||||
 | 
					#	dialogs/TrashCanDlg.cpp
 | 
				
			||||||
 | 
						import/Import.cpp
 | 
				
			||||||
 | 
					#	import/Import_GnuKeyRing.cpp
 | 
				
			||||||
 | 
						import/Import_KeePassX_Xml.cpp
 | 
				
			||||||
 | 
						import/Import_KWalletXml.cpp
 | 
				
			||||||
 | 
						import/Import_PwManager.cpp
 | 
				
			||||||
 | 
						export/Export.cpp
 | 
				
			||||||
 | 
						export/Export_KeePassX_Xml.cpp
 | 
				
			||||||
 | 
						export/Export_Txt.cpp
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SET(keepassx_FORMS
 | 
				
			||||||
 | 
						forms/AboutDlg.ui
 | 
				
			||||||
 | 
						forms/AddBookmarkDlg.ui
 | 
				
			||||||
 | 
						forms/CalendarDlg.ui
 | 
				
			||||||
 | 
						forms/CollectEntropyDlg.ui
 | 
				
			||||||
 | 
						forms/CustomizeDetailViewDlg.ui
 | 
				
			||||||
 | 
						forms/DatabaseSettingsDlg.ui
 | 
				
			||||||
 | 
						forms/EditEntryDlg.ui
 | 
				
			||||||
 | 
						forms/EditGroupDlg.ui
 | 
				
			||||||
 | 
						forms/ExpiredEntriesDlg.ui
 | 
				
			||||||
 | 
						forms/MainWindow.ui
 | 
				
			||||||
 | 
						forms/ManageBookmarksDlg.ui
 | 
				
			||||||
 | 
						forms/PasswordDlg.ui
 | 
				
			||||||
 | 
						forms/PasswordGenDlg.ui
 | 
				
			||||||
 | 
						forms/SearchDlg.ui
 | 
				
			||||||
 | 
						forms/SelectIconDlg.ui
 | 
				
			||||||
 | 
						forms/SettingsDlg.ui
 | 
				
			||||||
 | 
						forms/SimplePasswordDlg.ui
 | 
				
			||||||
 | 
					#	forms/TrashCanDlg.ui
 | 
				
			||||||
 | 
						forms/WorkspaceLockedWidget.ui
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SET(keepassx_RESOURCES res/resources.qrc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set(keepassx_TRANSLATIONS
 | 
				
			||||||
 | 
						translations/keepassx-cs_CZ.ts
 | 
				
			||||||
 | 
						translations/keepassx-de_DE.ts
 | 
				
			||||||
 | 
						translations/keepassx-es_ES.ts
 | 
				
			||||||
 | 
						translations/keepassx-fr_FR.ts
 | 
				
			||||||
 | 
						translations/keepassx-gl_ES.ts
 | 
				
			||||||
 | 
						translations/keepassx-it_IT.ts
 | 
				
			||||||
 | 
						translations/keepassx-ja_JP.ts
 | 
				
			||||||
 | 
						translations/keepassx-ru_RU.ts
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IF( MINGW )
 | 
				
			||||||
 | 
						SET(keepassx_SOURCES ${keepassx_SOURCES} main_win32.cpp)
 | 
				
			||||||
 | 
					ELSEIF( APPLE )
 | 
				
			||||||
 | 
						SET(keepassx_SOURCES ${keepassx_SOURCES} main_macx.cpp)
 | 
				
			||||||
 | 
					ELSE( MINGW )
 | 
				
			||||||
 | 
						SET(keepassx_SOURCES ${keepassx_SOURCES} main_unix.cpp)
 | 
				
			||||||
 | 
					ENDIF( MINGW )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IF( AUTOTYPE )
 | 
				
			||||||
 | 
						SET(keepassx_HEADERS ${keepassx_HEADERS}
 | 
				
			||||||
 | 
							Application_X11.h dialogs/AutoTypeDlg.h lib/AutoTypeTreeWidget.h dialogs/TargetWindowDlg.h)
 | 
				
			||||||
 | 
						SET(keepassx_SOURCES ${keepassx_SOURCES}
 | 
				
			||||||
 | 
							lib/HelperX11.cpp lib/AutoTypeX11.cpp Application_X11.cpp lib/AutoTypeGlobalX11.cpp
 | 
				
			||||||
 | 
							dialogs/AutoTypeDlg.cpp lib/AutoTypeTreeWidget.cpp dialogs/TargetWindowDlg.cpp)
 | 
				
			||||||
 | 
						SET(keepassx_FORMS ${keepassx_FORMS}
 | 
				
			||||||
 | 
							forms/AutoTypeDlg.ui forms/TargetWindowDlg.ui)
 | 
				
			||||||
 | 
					ENDIF( AUTOTYPE )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IF( NOT PRECOMPILED_HEADER )
 | 
				
			||||||
 | 
						ADD_DEFINITIONS(-include keepassx.h)
 | 
				
			||||||
 | 
					ENDIF( NOT PRECOMPILED_HEADER )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INCLUDE_DIRECTORIES(. lib crypto plugins/interfaces export import dialogs ${CMAKE_CURRENT_BINARY_DIR})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QT4_ADD_RESOURCES( keepassx_RESOURCES_SOURCES ${keepassx_RESOURCES} )
 | 
				
			||||||
 | 
					QT4_WRAP_UI( keepassx_FORMS_HEADERS ${keepassx_FORMS} )
 | 
				
			||||||
 | 
					QT4_WRAP_CPP( keepassx_HEADERS_MOC ${keepassx_HEADERS} )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ADD_EXECUTABLE( ${PROGNAME} WIN32 MACOSX_BUNDLE ${keepassx_SOURCES} ${keepassx_HEADERS_MOC}
 | 
				
			||||||
 | 
						${keepassx_RESOURCES_SOURCES} ${keepassx_FORMS_HEADERS} ${keepassx_RCS} )
 | 
				
			||||||
 | 
					IF( PRECOMPILED_HEADER )
 | 
				
			||||||
 | 
						ADD_PRECOMPILED_HEADER(${PROGNAME} keepassx.h)
 | 
				
			||||||
 | 
					ENDIF( PRECOMPILED_HEADER )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TARGET_LINK_LIBRARIES(${PROGNAME} ${QT_LIBRARIES} ${AUTOTYPE_LIBRARIES})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QT4_ADD_TRANSLATION(QM_FILES ${keepassx_TRANSLATIONS})
 | 
				
			||||||
 | 
					ADD_CUSTOM_TARGET(translations ALL DEPENDS ${QM_FILES})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INSTALL(TARGETS ${PROGNAME} DESTINATION ${BINDIR})
 | 
				
			||||||
 | 
					INSTALL(FILES ${QM_FILES} DESTINATION ${SHAREDIR}/i18n)
 | 
				
			||||||
| 
						 | 
					@ -1,529 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 ---------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 Copyright (c) 1998-2008, Brian Gladman, Worcester, UK. All rights reserved.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 LICENSE TERMS
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 The redistribution and use of this software (with or without changes)
 | 
					 | 
				
			||||||
 is allowed without the payment of fees or royalties provided that:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  1. source code distributions include the above copyright notice, this
 | 
					 | 
				
			||||||
     list of conditions and the following disclaimer;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  2. binary distributions include the above copyright notice, this list
 | 
					 | 
				
			||||||
     of conditions and the following disclaimer in their documentation;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  3. the name of the copyright holder is not used to endorse products
 | 
					 | 
				
			||||||
     built using this software without specific written permission.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 DISCLAIMER
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 This software is provided 'as is' with no explicit or implied warranties
 | 
					 | 
				
			||||||
 in respect of its properties, including, but not limited to, correctness
 | 
					 | 
				
			||||||
 and/or fitness for purpose.
 | 
					 | 
				
			||||||
 ---------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 Issue Date: 20/12/20077
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef AES_VIA_ACE_H
 | 
					 | 
				
			||||||
#define AES_VIA_ACE_H
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined( _MSC_VER )
 | 
					 | 
				
			||||||
#  define INLINE  __inline
 | 
					 | 
				
			||||||
#elif defined( __GNUC__ )
 | 
					 | 
				
			||||||
#  define INLINE  static inline
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#  error VIA ACE requires Microsoft or GNU C
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NEH_GENERATE    1
 | 
					 | 
				
			||||||
#define NEH_LOAD        2
 | 
					 | 
				
			||||||
#define NEH_HYBRID      3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define MAX_READ_ATTEMPTS   1000
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* VIA Nehemiah RNG and ACE Feature Mask Values */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NEH_CPU_IS_VIA      0x00000001
 | 
					 | 
				
			||||||
#define NEH_CPU_READ        0x00000010
 | 
					 | 
				
			||||||
#define NEH_CPU_MASK        0x00000011
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NEH_RNG_PRESENT     0x00000004
 | 
					 | 
				
			||||||
#define NEH_RNG_ENABLED     0x00000008
 | 
					 | 
				
			||||||
#define NEH_ACE_PRESENT     0x00000040
 | 
					 | 
				
			||||||
#define NEH_ACE_ENABLED     0x00000080
 | 
					 | 
				
			||||||
#define NEH_RNG_FLAGS       (NEH_RNG_PRESENT | NEH_RNG_ENABLED)
 | 
					 | 
				
			||||||
#define NEH_ACE_FLAGS       (NEH_ACE_PRESENT | NEH_ACE_ENABLED)
 | 
					 | 
				
			||||||
#define NEH_FLAGS_MASK      (NEH_RNG_FLAGS | NEH_ACE_FLAGS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* VIA Nehemiah Advanced Cryptography Engine (ACE) Control Word Values  */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NEH_GEN_KEY     0x00000000      /* generate key schedule        */
 | 
					 | 
				
			||||||
#define NEH_LOAD_KEY    0x00000080      /* load schedule from memory    */
 | 
					 | 
				
			||||||
#define NEH_ENCRYPT     0x00000000      /* encryption                   */
 | 
					 | 
				
			||||||
#define NEH_DECRYPT     0x00000200      /* decryption                   */
 | 
					 | 
				
			||||||
#define NEH_KEY128      0x00000000+0x0a /* 128 bit key                  */
 | 
					 | 
				
			||||||
#define NEH_KEY192      0x00000400+0x0c /* 192 bit key                  */
 | 
					 | 
				
			||||||
#define NEH_KEY256      0x00000800+0x0e /* 256 bit key                  */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NEH_ENC_GEN     (NEH_ENCRYPT | NEH_GEN_KEY)
 | 
					 | 
				
			||||||
#define NEH_DEC_GEN     (NEH_DECRYPT | NEH_GEN_KEY)
 | 
					 | 
				
			||||||
#define NEH_ENC_LOAD    (NEH_ENCRYPT | NEH_LOAD_KEY)
 | 
					 | 
				
			||||||
#define NEH_DEC_LOAD    (NEH_DECRYPT | NEH_LOAD_KEY)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NEH_ENC_GEN_DATA {\
 | 
					 | 
				
			||||||
    NEH_ENC_GEN | NEH_KEY128, 0, 0, 0,\
 | 
					 | 
				
			||||||
    NEH_ENC_GEN | NEH_KEY192, 0, 0, 0,\
 | 
					 | 
				
			||||||
    NEH_ENC_GEN | NEH_KEY256, 0, 0, 0 }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NEH_ENC_LOAD_DATA {\
 | 
					 | 
				
			||||||
    NEH_ENC_LOAD | NEH_KEY128, 0, 0, 0,\
 | 
					 | 
				
			||||||
    NEH_ENC_LOAD | NEH_KEY192, 0, 0, 0,\
 | 
					 | 
				
			||||||
    NEH_ENC_LOAD | NEH_KEY256, 0, 0, 0 }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NEH_ENC_HYBRID_DATA {\
 | 
					 | 
				
			||||||
    NEH_ENC_GEN  | NEH_KEY128, 0, 0, 0,\
 | 
					 | 
				
			||||||
    NEH_ENC_LOAD | NEH_KEY192, 0, 0, 0,\
 | 
					 | 
				
			||||||
    NEH_ENC_LOAD | NEH_KEY256, 0, 0, 0 }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NEH_DEC_GEN_DATA {\
 | 
					 | 
				
			||||||
    NEH_DEC_GEN | NEH_KEY128, 0, 0, 0,\
 | 
					 | 
				
			||||||
    NEH_DEC_GEN | NEH_KEY192, 0, 0, 0,\
 | 
					 | 
				
			||||||
    NEH_DEC_GEN | NEH_KEY256, 0, 0, 0 }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NEH_DEC_LOAD_DATA {\
 | 
					 | 
				
			||||||
    NEH_DEC_LOAD | NEH_KEY128, 0, 0, 0,\
 | 
					 | 
				
			||||||
    NEH_DEC_LOAD | NEH_KEY192, 0, 0, 0,\
 | 
					 | 
				
			||||||
    NEH_DEC_LOAD | NEH_KEY256, 0, 0, 0 }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NEH_DEC_HYBRID_DATA {\
 | 
					 | 
				
			||||||
    NEH_DEC_GEN  | NEH_KEY128, 0, 0, 0,\
 | 
					 | 
				
			||||||
    NEH_DEC_LOAD | NEH_KEY192, 0, 0, 0,\
 | 
					 | 
				
			||||||
    NEH_DEC_LOAD | NEH_KEY256, 0, 0, 0 }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define neh_enc_gen_key(x)  ((x) == 128 ? (NEH_ENC_GEN | NEH_KEY128) :      \
 | 
					 | 
				
			||||||
     (x) == 192 ? (NEH_ENC_GEN | NEH_KEY192) : (NEH_ENC_GEN | NEH_KEY256))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define neh_enc_load_key(x) ((x) == 128 ? (NEH_ENC_LOAD | NEH_KEY128) :     \
 | 
					 | 
				
			||||||
     (x) == 192 ? (NEH_ENC_LOAD | NEH_KEY192) : (NEH_ENC_LOAD | NEH_KEY256))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define neh_enc_hybrid_key(x)   ((x) == 128 ? (NEH_ENC_GEN | NEH_KEY128) :  \
 | 
					 | 
				
			||||||
     (x) == 192 ? (NEH_ENC_LOAD | NEH_KEY192) : (NEH_ENC_LOAD | NEH_KEY256))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define neh_dec_gen_key(x)  ((x) == 128 ? (NEH_DEC_GEN | NEH_KEY128) :      \
 | 
					 | 
				
			||||||
     (x) == 192 ? (NEH_DEC_GEN | NEH_KEY192) : (NEH_DEC_GEN | NEH_KEY256))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define neh_dec_load_key(x) ((x) == 128 ? (NEH_DEC_LOAD | NEH_KEY128) :     \
 | 
					 | 
				
			||||||
     (x) == 192 ? (NEH_DEC_LOAD | NEH_KEY192) : (NEH_DEC_LOAD | NEH_KEY256))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define neh_dec_hybrid_key(x)   ((x) == 128 ? (NEH_DEC_GEN | NEH_KEY128) :  \
 | 
					 | 
				
			||||||
     (x) == 192 ? (NEH_DEC_LOAD | NEH_KEY192) : (NEH_DEC_LOAD | NEH_KEY256))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined( _MSC_VER ) && ( _MSC_VER > 1200 )
 | 
					 | 
				
			||||||
#define aligned_auto(type, name, no, stride)  __declspec(align(stride)) type name[no]
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define aligned_auto(type, name, no, stride)                \
 | 
					 | 
				
			||||||
    unsigned char _##name[no * sizeof(type) + stride];      \
 | 
					 | 
				
			||||||
    type *name = (type*)(16 * ((((unsigned long)(_##name)) + stride - 1) / stride))
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined( _MSC_VER ) && ( _MSC_VER > 1200 )
 | 
					 | 
				
			||||||
#define aligned_array(type, name, no, stride) __declspec(align(stride)) type name[no]
 | 
					 | 
				
			||||||
#elif defined( __GNUC__ )
 | 
					 | 
				
			||||||
#define aligned_array(type, name, no, stride) type name[no] __attribute__ ((aligned(stride)))
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define aligned_array(type, name, no, stride) type name[no]
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* VIA ACE codeword     */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static unsigned char via_flags = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined ( _MSC_VER ) && ( _MSC_VER > 800 )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NEH_REKEY   __asm pushfd __asm popfd
 | 
					 | 
				
			||||||
#define NEH_AES     __asm _emit 0xf3 __asm _emit 0x0f __asm _emit 0xa7
 | 
					 | 
				
			||||||
#define NEH_ECB     NEH_AES __asm _emit 0xc8
 | 
					 | 
				
			||||||
#define NEH_CBC     NEH_AES __asm _emit 0xd0
 | 
					 | 
				
			||||||
#define NEH_CFB     NEH_AES __asm _emit 0xe0
 | 
					 | 
				
			||||||
#define NEH_OFB     NEH_AES __asm _emit 0xe8
 | 
					 | 
				
			||||||
#define NEH_RNG     __asm _emit 0x0f __asm _emit 0xa7 __asm _emit 0xc0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE int has_cpuid(void)
 | 
					 | 
				
			||||||
{   char ret_value;
 | 
					 | 
				
			||||||
    __asm
 | 
					 | 
				
			||||||
    {   pushfd                  /* save EFLAGS register     */
 | 
					 | 
				
			||||||
        mov     eax,[esp]       /* copy it to eax           */
 | 
					 | 
				
			||||||
        mov     edx,0x00200000  /* CPUID bit position       */
 | 
					 | 
				
			||||||
        xor     eax,edx         /* toggle the CPUID bit     */
 | 
					 | 
				
			||||||
        push    eax             /* attempt to set EFLAGS to */
 | 
					 | 
				
			||||||
        popfd                   /*     the new value        */
 | 
					 | 
				
			||||||
        pushfd                  /* get the new EFLAGS value */
 | 
					 | 
				
			||||||
        pop     eax             /*     into eax             */
 | 
					 | 
				
			||||||
        xor     eax,[esp]       /* xor with original value  */
 | 
					 | 
				
			||||||
        and     eax,edx         /* has CPUID bit changed?   */
 | 
					 | 
				
			||||||
        setne   al              /* set to 1 if we have been */
 | 
					 | 
				
			||||||
        mov     ret_value,al    /*     able to change it    */
 | 
					 | 
				
			||||||
        popfd                   /* restore original EFLAGS  */
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return (int)ret_value;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE int is_via_cpu(void)
 | 
					 | 
				
			||||||
{   char ret_value;
 | 
					 | 
				
			||||||
    __asm
 | 
					 | 
				
			||||||
    {   xor     eax,eax         /* use CPUID to get vendor  */
 | 
					 | 
				
			||||||
        cpuid                   /* identity string          */
 | 
					 | 
				
			||||||
        xor     eax,eax         /* is it "CentaurHauls" ?   */
 | 
					 | 
				
			||||||
        sub     ebx,0x746e6543  /* 'Cent'                   */
 | 
					 | 
				
			||||||
        or      eax,ebx
 | 
					 | 
				
			||||||
        sub     edx,0x48727561  /* 'aurH'                   */
 | 
					 | 
				
			||||||
        or      eax,edx
 | 
					 | 
				
			||||||
        sub     ecx,0x736c7561  /* 'auls'                   */
 | 
					 | 
				
			||||||
        or      eax,ecx
 | 
					 | 
				
			||||||
        sete    al              /* set to 1 if it is VIA ID */
 | 
					 | 
				
			||||||
        mov     dl,NEH_CPU_READ /* mark CPU type as read    */
 | 
					 | 
				
			||||||
        or      dl,al           /* & store result in flags  */
 | 
					 | 
				
			||||||
        mov     [via_flags],dl  /* set VIA detected flag    */
 | 
					 | 
				
			||||||
        mov     ret_value,al    /*     able to change it    */
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return (int)ret_value;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE int read_via_flags(void)
 | 
					 | 
				
			||||||
{   char ret_value = 0;
 | 
					 | 
				
			||||||
    __asm
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        mov     eax,0xC0000000  /* Centaur extended CPUID   */
 | 
					 | 
				
			||||||
        cpuid
 | 
					 | 
				
			||||||
        mov     edx,0xc0000001  /* >= 0xc0000001 if support */
 | 
					 | 
				
			||||||
        cmp     eax,edx         /* for VIA extended feature */
 | 
					 | 
				
			||||||
        jnae    no_rng          /*     flags is available   */
 | 
					 | 
				
			||||||
        mov     eax,edx         /* read Centaur extended    */
 | 
					 | 
				
			||||||
        cpuid                   /*     feature flags        */
 | 
					 | 
				
			||||||
        mov     eax,NEH_FLAGS_MASK  /* mask out and save    */
 | 
					 | 
				
			||||||
        and     eax,edx         /*  the RNG and ACE flags   */
 | 
					 | 
				
			||||||
        or      [via_flags],al  /* present & enabled flags  */
 | 
					 | 
				
			||||||
        mov     ret_value,al    /*     able to change it    */
 | 
					 | 
				
			||||||
no_rng:
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return (int)ret_value;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE unsigned int via_rng_in(void *buf)
 | 
					 | 
				
			||||||
{   char ret_value = 0x1f;
 | 
					 | 
				
			||||||
    __asm
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        push    edi
 | 
					 | 
				
			||||||
        mov     edi,buf         /* input buffer address     */
 | 
					 | 
				
			||||||
        xor     edx,edx         /* try to fetch 8 bytes     */
 | 
					 | 
				
			||||||
        NEH_RNG                 /* do RNG read operation    */
 | 
					 | 
				
			||||||
        and     ret_value,al    /* count of bytes returned  */
 | 
					 | 
				
			||||||
        pop     edi
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return (int)ret_value;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE void via_ecb_op5(
 | 
					 | 
				
			||||||
            const void *k, const void *c, const void *s, void *d, int l)
 | 
					 | 
				
			||||||
{   __asm
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        NEH_REKEY
 | 
					 | 
				
			||||||
        mov     ebx, (k)
 | 
					 | 
				
			||||||
        mov     edx, (c)
 | 
					 | 
				
			||||||
        mov     esi, (s)
 | 
					 | 
				
			||||||
        mov     edi, (d)
 | 
					 | 
				
			||||||
        mov     ecx, (l)
 | 
					 | 
				
			||||||
        NEH_ECB
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE void via_cbc_op6(
 | 
					 | 
				
			||||||
            const void *k, const void *c, const void *s, void *d, int l, void *v)
 | 
					 | 
				
			||||||
{   __asm
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        NEH_REKEY
 | 
					 | 
				
			||||||
        mov     ebx, (k)
 | 
					 | 
				
			||||||
        mov     edx, (c)
 | 
					 | 
				
			||||||
        mov     esi, (s)
 | 
					 | 
				
			||||||
        mov     edi, (d)
 | 
					 | 
				
			||||||
        mov     ecx, (l)
 | 
					 | 
				
			||||||
        mov     eax, (v)
 | 
					 | 
				
			||||||
        NEH_CBC
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE void via_cbc_op7(
 | 
					 | 
				
			||||||
        const void *k, const void *c, const void *s, void *d, int l, void *v, void *w)
 | 
					 | 
				
			||||||
{   __asm
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        NEH_REKEY
 | 
					 | 
				
			||||||
        mov     ebx, (k)
 | 
					 | 
				
			||||||
        mov     edx, (c)
 | 
					 | 
				
			||||||
        mov     esi, (s)
 | 
					 | 
				
			||||||
        mov     edi, (d)
 | 
					 | 
				
			||||||
        mov     ecx, (l)
 | 
					 | 
				
			||||||
        mov     eax, (v)
 | 
					 | 
				
			||||||
        NEH_CBC
 | 
					 | 
				
			||||||
        mov     esi, eax
 | 
					 | 
				
			||||||
        mov     edi, (w)
 | 
					 | 
				
			||||||
        movsd
 | 
					 | 
				
			||||||
        movsd
 | 
					 | 
				
			||||||
        movsd
 | 
					 | 
				
			||||||
        movsd
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE void via_cfb_op6(
 | 
					 | 
				
			||||||
            const void *k, const void *c, const void *s, void *d, int l, void *v)
 | 
					 | 
				
			||||||
{   __asm
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        NEH_REKEY
 | 
					 | 
				
			||||||
        mov     ebx, (k)
 | 
					 | 
				
			||||||
        mov     edx, (c)
 | 
					 | 
				
			||||||
        mov     esi, (s)
 | 
					 | 
				
			||||||
        mov     edi, (d)
 | 
					 | 
				
			||||||
        mov     ecx, (l)
 | 
					 | 
				
			||||||
        mov     eax, (v)
 | 
					 | 
				
			||||||
        NEH_CFB
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE void via_cfb_op7(
 | 
					 | 
				
			||||||
        const void *k, const void *c, const void *s, void *d, int l, void *v, void *w)
 | 
					 | 
				
			||||||
{   __asm
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        NEH_REKEY
 | 
					 | 
				
			||||||
        mov     ebx, (k)
 | 
					 | 
				
			||||||
        mov     edx, (c)
 | 
					 | 
				
			||||||
        mov     esi, (s)
 | 
					 | 
				
			||||||
        mov     edi, (d)
 | 
					 | 
				
			||||||
        mov     ecx, (l)
 | 
					 | 
				
			||||||
        mov     eax, (v)
 | 
					 | 
				
			||||||
        NEH_CFB
 | 
					 | 
				
			||||||
        mov     esi, eax
 | 
					 | 
				
			||||||
        mov     edi, (w)
 | 
					 | 
				
			||||||
        movsd
 | 
					 | 
				
			||||||
        movsd
 | 
					 | 
				
			||||||
        movsd
 | 
					 | 
				
			||||||
        movsd
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE void via_ofb_op6(
 | 
					 | 
				
			||||||
            const void *k, const void *c, const void *s, void *d, int l, void *v)
 | 
					 | 
				
			||||||
{   __asm
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        NEH_REKEY
 | 
					 | 
				
			||||||
        mov     ebx, (k)
 | 
					 | 
				
			||||||
        mov     edx, (c)
 | 
					 | 
				
			||||||
        mov     esi, (s)
 | 
					 | 
				
			||||||
        mov     edi, (d)
 | 
					 | 
				
			||||||
        mov     ecx, (l)
 | 
					 | 
				
			||||||
        mov     eax, (v)
 | 
					 | 
				
			||||||
        NEH_OFB
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#elif defined( __GNUC__ )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NEH_REKEY   asm("pushfl\n popfl\n\t")
 | 
					 | 
				
			||||||
#define NEH_ECB     asm(".byte 0xf3, 0x0f, 0xa7, 0xc8\n\t")
 | 
					 | 
				
			||||||
#define NEH_CBC     asm(".byte 0xf3, 0x0f, 0xa7, 0xd0\n\t")
 | 
					 | 
				
			||||||
#define NEH_CFB     asm(".byte 0xf3, 0x0f, 0xa7, 0xe0\n\t")
 | 
					 | 
				
			||||||
#define NEH_OFB     asm(".byte 0xf3, 0x0f, 0xa7, 0xe8\n\t")
 | 
					 | 
				
			||||||
#define NEH_RNG     asm(".byte 0x0f, 0xa7, 0xc0\n\t");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE int has_cpuid(void)
 | 
					 | 
				
			||||||
{   int val;
 | 
					 | 
				
			||||||
    asm("pushfl\n\t");
 | 
					 | 
				
			||||||
    asm("movl  0(%esp),%eax\n\t");
 | 
					 | 
				
			||||||
    asm("xor   $0x00200000,%eax\n\t");
 | 
					 | 
				
			||||||
    asm("pushl %eax\n\t");
 | 
					 | 
				
			||||||
    asm("popfl\n\t");
 | 
					 | 
				
			||||||
    asm("pushfl\n\t");
 | 
					 | 
				
			||||||
    asm("popl  %eax\n\t");
 | 
					 | 
				
			||||||
    asm("xorl  0(%esp),%edx\n\t");
 | 
					 | 
				
			||||||
    asm("andl  $0x00200000,%eax\n\t");
 | 
					 | 
				
			||||||
    asm("movl  %%eax,%0\n\t" : "=m" (val));
 | 
					 | 
				
			||||||
    asm("popfl\n\t");
 | 
					 | 
				
			||||||
    return val ? 1 : 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE int is_via_cpu(void)
 | 
					 | 
				
			||||||
{   int val;
 | 
					 | 
				
			||||||
    asm("xorl %eax,%eax\n\t");
 | 
					 | 
				
			||||||
    asm("cpuid\n\t");
 | 
					 | 
				
			||||||
    asm("xorl %eax,%eax\n\t");
 | 
					 | 
				
			||||||
    asm("subl $0x746e6543,%ebx\n\t");
 | 
					 | 
				
			||||||
    asm("orl  %ebx,%eax\n\t");
 | 
					 | 
				
			||||||
    asm("subl $0x48727561,%edx\n\t");
 | 
					 | 
				
			||||||
    asm("orl  %edx,%eax\n\t");
 | 
					 | 
				
			||||||
    asm("subl $0x736c7561,%ecx\n\t");
 | 
					 | 
				
			||||||
    asm("orl  %ecx,%eax\n\t");
 | 
					 | 
				
			||||||
    asm("movl %%eax,%0\n\t" : "=m" (val));
 | 
					 | 
				
			||||||
    val = (val ? 0 : 1);
 | 
					 | 
				
			||||||
    via_flags = (val | NEH_CPU_READ);
 | 
					 | 
				
			||||||
    return val;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE int read_via_flags(void)
 | 
					 | 
				
			||||||
{   unsigned char   val;
 | 
					 | 
				
			||||||
    asm("movl $0xc0000000,%eax\n\t");
 | 
					 | 
				
			||||||
    asm("cpuid\n\t");
 | 
					 | 
				
			||||||
    asm("movl $0xc0000001,%edx\n\t");
 | 
					 | 
				
			||||||
    asm("cmpl %edx,%eax\n\t");
 | 
					 | 
				
			||||||
    asm("setae %al\n\t");
 | 
					 | 
				
			||||||
    asm("movb %%al,%0\n\t" : "=m" (val));
 | 
					 | 
				
			||||||
    if(!val) return 0;
 | 
					 | 
				
			||||||
    asm("movl $0xc0000001,%eax\n\t");
 | 
					 | 
				
			||||||
    asm("cpuid\n\t");
 | 
					 | 
				
			||||||
    asm("movb %%dl,%0\n\t" : "=m" (val));
 | 
					 | 
				
			||||||
    val &= NEH_FLAGS_MASK;
 | 
					 | 
				
			||||||
    via_flags |= val;
 | 
					 | 
				
			||||||
    return (int) val;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE int via_rng_in(void *buf)
 | 
					 | 
				
			||||||
{   int val;
 | 
					 | 
				
			||||||
    asm("pushl %edi\n\t");
 | 
					 | 
				
			||||||
    asm("movl %0,%%edi\n\t" : : "m" (buf));
 | 
					 | 
				
			||||||
    asm("xorl %edx,%edx\n\t");
 | 
					 | 
				
			||||||
    NEH_RNG
 | 
					 | 
				
			||||||
    asm("andl $0x0000001f,%eax\n\t");
 | 
					 | 
				
			||||||
    asm("movl %%eax,%0\n\t" : "=m" (val));
 | 
					 | 
				
			||||||
    asm("popl %edi\n\t");
 | 
					 | 
				
			||||||
    return val;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE volatile  void via_ecb_op5(
 | 
					 | 
				
			||||||
            const void *k, const void *c, const void *s, void *d, int l)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    NEH_REKEY;
 | 
					 | 
				
			||||||
    asm("movl %0, %%ebx\n\t" : : "m" (k));
 | 
					 | 
				
			||||||
    asm("movl %0, %%edx\n\t" : : "m" (c));
 | 
					 | 
				
			||||||
    asm("movl %0, %%esi\n\t" : : "m" (s));
 | 
					 | 
				
			||||||
    asm("movl %0, %%edi\n\t" : : "m" (d));
 | 
					 | 
				
			||||||
    asm("movl %0, %%ecx\n\t" : : "m" (l));
 | 
					 | 
				
			||||||
    NEH_ECB;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE volatile  void via_cbc_op6(
 | 
					 | 
				
			||||||
            const void *k, const void *c, const void *s, void *d, int l, void *v)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    NEH_REKEY;
 | 
					 | 
				
			||||||
    asm("movl %0, %%ebx\n\t" : : "m" (k));
 | 
					 | 
				
			||||||
    asm("movl %0, %%edx\n\t" : : "m" (c));
 | 
					 | 
				
			||||||
    asm("movl %0, %%esi\n\t" : : "m" (s));
 | 
					 | 
				
			||||||
    asm("movl %0, %%edi\n\t" : : "m" (d));
 | 
					 | 
				
			||||||
    asm("movl %0, %%ecx\n\t" : : "m" (l));
 | 
					 | 
				
			||||||
    asm("movl %0, %%eax\n\t" : : "m" (v));
 | 
					 | 
				
			||||||
    NEH_CBC;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE volatile  void via_cbc_op7(
 | 
					 | 
				
			||||||
        const void *k, const void *c, const void *s, void *d, int l, void *v, void *w)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    NEH_REKEY;
 | 
					 | 
				
			||||||
    asm("movl %0, %%ebx\n\t" : : "m" (k));
 | 
					 | 
				
			||||||
    asm("movl %0, %%edx\n\t" : : "m" (c));
 | 
					 | 
				
			||||||
    asm("movl %0, %%esi\n\t" : : "m" (s));
 | 
					 | 
				
			||||||
    asm("movl %0, %%edi\n\t" : : "m" (d));
 | 
					 | 
				
			||||||
    asm("movl %0, %%ecx\n\t" : : "m" (l));
 | 
					 | 
				
			||||||
    asm("movl %0, %%eax\n\t" : : "m" (v));
 | 
					 | 
				
			||||||
    NEH_CBC;
 | 
					 | 
				
			||||||
    asm("movl %eax,%esi\n\t");
 | 
					 | 
				
			||||||
    asm("movl %0, %%edi\n\t" : : "m" (w));
 | 
					 | 
				
			||||||
    asm("movsl; movsl; movsl; movsl\n\t");
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE volatile  void via_cfb_op6(
 | 
					 | 
				
			||||||
            const void *k, const void *c, const void *s, void *d, int l, void *v)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    NEH_REKEY;
 | 
					 | 
				
			||||||
    asm("movl %0, %%ebx\n\t" : : "m" (k));
 | 
					 | 
				
			||||||
    asm("movl %0, %%edx\n\t" : : "m" (c));
 | 
					 | 
				
			||||||
    asm("movl %0, %%esi\n\t" : : "m" (s));
 | 
					 | 
				
			||||||
    asm("movl %0, %%edi\n\t" : : "m" (d));
 | 
					 | 
				
			||||||
    asm("movl %0, %%ecx\n\t" : : "m" (l));
 | 
					 | 
				
			||||||
    asm("movl %0, %%eax\n\t" : : "m" (v));
 | 
					 | 
				
			||||||
    NEH_CFB;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE volatile  void via_cfb_op7(
 | 
					 | 
				
			||||||
        const void *k, const void *c, const void *s, void *d, int l, void *v, void *w)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    NEH_REKEY;
 | 
					 | 
				
			||||||
    asm("movl %0, %%ebx\n\t" : : "m" (k));
 | 
					 | 
				
			||||||
    asm("movl %0, %%edx\n\t" : : "m" (c));
 | 
					 | 
				
			||||||
    asm("movl %0, %%esi\n\t" : : "m" (s));
 | 
					 | 
				
			||||||
    asm("movl %0, %%edi\n\t" : : "m" (d));
 | 
					 | 
				
			||||||
    asm("movl %0, %%ecx\n\t" : : "m" (l));
 | 
					 | 
				
			||||||
    asm("movl %0, %%eax\n\t" : : "m" (v));
 | 
					 | 
				
			||||||
    NEH_CFB;
 | 
					 | 
				
			||||||
    asm("movl %eax,%esi\n\t");
 | 
					 | 
				
			||||||
    asm("movl %0, %%edi\n\t" : : "m" (w));
 | 
					 | 
				
			||||||
    asm("movsl; movsl; movsl; movsl\n\t");
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE volatile  void via_ofb_op6(
 | 
					 | 
				
			||||||
            const void *k, const void *c, const void *s, void *d, int l, void *v)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    NEH_REKEY;
 | 
					 | 
				
			||||||
    asm("movl %0, %%ebx\n\t" : : "m" (k));
 | 
					 | 
				
			||||||
    asm("movl %0, %%edx\n\t" : : "m" (c));
 | 
					 | 
				
			||||||
    asm("movl %0, %%esi\n\t" : : "m" (s));
 | 
					 | 
				
			||||||
    asm("movl %0, %%edi\n\t" : : "m" (d));
 | 
					 | 
				
			||||||
    asm("movl %0, %%ecx\n\t" : : "m" (l));
 | 
					 | 
				
			||||||
    asm("movl %0, %%eax\n\t" : : "m" (v));
 | 
					 | 
				
			||||||
    NEH_OFB;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#error VIA ACE is not available with this compiler
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE int via_ace_test(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return has_cpuid() && is_via_cpu() && ((read_via_flags() & NEH_ACE_FLAGS) == NEH_ACE_FLAGS);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define VIA_ACE_AVAILABLE   (((via_flags & NEH_ACE_FLAGS) == NEH_ACE_FLAGS)         \
 | 
					 | 
				
			||||||
    || (via_flags & NEH_CPU_READ) && (via_flags & NEH_CPU_IS_VIA) || via_ace_test())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE int via_rng_test(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return has_cpuid() && is_via_cpu() && ((read_via_flags() & NEH_RNG_FLAGS) == NEH_RNG_FLAGS);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define VIA_RNG_AVAILABLE   (((via_flags & NEH_RNG_FLAGS) == NEH_RNG_FLAGS)         \
 | 
					 | 
				
			||||||
    || (via_flags & NEH_CPU_READ) && (via_flags & NEH_CPU_IS_VIA) || via_rng_test())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
INLINE int read_via_rng(void *buf, int count)
 | 
					 | 
				
			||||||
{   int nbr, max_reads, lcnt = count;
 | 
					 | 
				
			||||||
    unsigned char *p, *q;
 | 
					 | 
				
			||||||
    aligned_auto(unsigned char, bp, 64, 16);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if(!VIA_RNG_AVAILABLE)
 | 
					 | 
				
			||||||
        return 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    do
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        max_reads = MAX_READ_ATTEMPTS;
 | 
					 | 
				
			||||||
        do
 | 
					 | 
				
			||||||
            nbr = via_rng_in(bp);
 | 
					 | 
				
			||||||
        while
 | 
					 | 
				
			||||||
            (nbr == 0 && --max_reads);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        lcnt -= nbr;
 | 
					 | 
				
			||||||
        p = (unsigned char*)buf; q = bp;
 | 
					 | 
				
			||||||
        while(nbr--)
 | 
					 | 
				
			||||||
            *p++ = *q++;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    while
 | 
					 | 
				
			||||||
        (lcnt && max_reads);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return count - lcnt;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
| 
						 | 
					@ -176,7 +176,6 @@ HEADERS += main.h \
 | 
				
			||||||
           crypto/aes_types.h \
 | 
					           crypto/aes_types.h \
 | 
				
			||||||
           crypto/aesopt.h \
 | 
					           crypto/aesopt.h \
 | 
				
			||||||
           crypto/aestab.h \
 | 
					           crypto/aestab.h \
 | 
				
			||||||
           crypto/aes_via_ace.h \
 | 
					 | 
				
			||||||
           crypto/arcfour.h \
 | 
					           crypto/arcfour.h \
 | 
				
			||||||
           crypto/blowfish.h \
 | 
					           crypto/blowfish.h \
 | 
				
			||||||
           crypto/sha256.h \
 | 
					           crypto/sha256.h \
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue