diff --git a/encryption_package/Makefile b/encryption_package/Makefile new file mode 100644 index 0000000..3a475f5 --- /dev/null +++ b/encryption_package/Makefile @@ -0,0 +1,86 @@ +############################ +# Vertica Analytic Database +# +# Makefile to build package directory +# +# Copyright 2011 Vertica Systems, an HP Company +############################ + +ifdef RUN_VALGRIND +VALGRIND=valgrind --leak-check=full +endif + +SDK?=/opt/vertica/sdk +VSQL?=vsql + +VERTICA_SDK_INCLUDE = $(SDK)/include +SIMULATOR_PATH = $(SDK)/simulator +DEBUG_DATA_PATH = $(shell pwd)/test-data + + + +THIRD_PARTY = $(shell pwd)/src/third-party +THIRD_PARTY_INCLUDE = $(THIRD_PARTY)/include + + +# Required object files +BUILD_FILES = build/Vertica.o \ + $(addprefix build/,rijndael.o my_aes.o) \ + $(addprefix build/,AESEncrypt.o AESDecrypt.o) + +PACKAGE_LIBNAME = build/Encryption.so + +CXX=g++ +CXXFLAGS=-D HAVE_LONG_LONG_INT_64 -c -I ../include -Wall -Wno-unused-value -fPIC -I $(VERTICA_SDK_INCLUDE) -I $(THIRD_PARTY_INCLUDE) +LDFLAGS=-shared + +# add optimization if not a debug build +ifndef DEBUG +CXXFLAGS+= -O3 -DNDEBUG +CFLAGS+= -O3 -DNDEBUG +endif + +export PATH := $(THIRD_PARTY_LIB):$(PATH) + +.PHONEY: $(PACKAGE_LIBNAME) + +all: $(PACKAGE_LIBNAME) + +# build package functions +$(PACKAGE_LIBNAME): $(BUILD_FILES) + mkdir -p build + $(CXX) $(LDFLAGS) -o $@ $(BUILD_FILES) + +# rule to make build/XXX.so from src/XXX.so +build/%.o: src/%.cpp + @mkdir -p build + $(CXX) $(CXXFLAGS) $< -o $@ + +build/Vertica.o: $(VERTICA_SDK_INCLUDE)/Vertica.cpp + @mkdir -p build + $(CXX) $(CXXFLAGS) $(VERTICA_SDK_INCLUDE)/Vertica.cpp -o $@ + +# rule to make build/XX.o from third-party/src/*.c +build/%.o: $(THIRD_PARTY)/src/%.c + @mkdir -p build + $(CXX) $(CXXFLAGS) $< -o $@ + +install: $(PACKAGE_LIBNAME) ddl/install.sql + $(VSQL) -f ddl/install.sql +uninstall: ddl/uninstall.sql + $(VSQL) -f ddl/uninstall.sql + + +# Run the simulator against the functons +sim_test: all simulator + $(VALGRIND) ./vsim $(PACKAGE_LIBNAME) FunctionName $(DEBUG_DATA_PATH)/testdata.txt + +# build the simulator (in SIMULATOR_PATH) and simlink it here +simulator: + $(MAKE) -C $(SIMULATOR_PATH) + ln -f -s $(SIMULATOR_PATH)/vsim + +clean: + rm -rf build + rm -f vsim* + diff --git a/encryption_package/README.txt b/encryption_package/README.txt index 3e51d0c..c07c1e3 100644 --- a/encryption_package/README.txt +++ b/encryption_package/README.txt @@ -2,8 +2,7 @@ INTRODUCTION ------------------------------- -This package is meant to be the beginnings of a library containing -encryption functions for Vertica. +This package contains encryption functions for Vertica. To that end, my contribution consists of a pair of AES encryption/decryption functions. This enables field-level encryption diff --git a/encryption_package/src/ddl/install.sql b/encryption_package/ddl/install.sql similarity index 100% rename from encryption_package/src/ddl/install.sql rename to encryption_package/ddl/install.sql diff --git a/encryption_package/src/ddl/uninstall.sql b/encryption_package/ddl/uninstall.sql similarity index 100% rename from encryption_package/src/ddl/uninstall.sql rename to encryption_package/ddl/uninstall.sql diff --git a/encryption_package/src/functions/AESDecrypt.cpp b/encryption_package/src/AESDecrypt.cpp similarity index 100% rename from encryption_package/src/functions/AESDecrypt.cpp rename to encryption_package/src/AESDecrypt.cpp diff --git a/encryption_package/src/functions/AESEncrypt.cpp b/encryption_package/src/AESEncrypt.cpp similarity index 100% rename from encryption_package/src/functions/AESEncrypt.cpp rename to encryption_package/src/AESEncrypt.cpp diff --git a/encryption_package/src/Makefile b/encryption_package/src/Makefile deleted file mode 100644 index d505c4c..0000000 --- a/encryption_package/src/Makefile +++ /dev/null @@ -1,80 +0,0 @@ -############################ -# Vertica Analytic Database -# -# Makefile to build package directory -# -# Copyright 2011 Vertica Systems, an HP Company -############################ - -ifdef RUN_VALGRIND -VALGRIND=valgrind --leak-check=full -endif - - -SDK?=/opt/vertica/sdk -VERTICA_SDK_INCLUDE = $(SDK)/include -SIMULATOR_PATH = $(SDK)/simulator - -#BUILD_PATH = $(shell pwd) -BUILD_PATH = . -THIRD_PARTY = $(shell pwd)/third-party -THIRD_PARTY_INCLUDE = $(THIRD_PARTY)/include -THIRD_PARTY_OBJS = rijndael.o my_aes.o -DEBUG_DATA_PATH = $(shell pwd)/test-data - -THIRD_PARTY_OBJ = $(THIRD_PARTY)/src/rijndael.o $(THIRD_PARTY)/src/my_aes.o -BUILD_FILES = functions/AESEncrypt.o functions/AESDecrypt.o functions/Vertica.o - -PACKAGE_FUNCTIONS = Encryption.so -PACKAGE_FUNCTIONS_LIB = $(BUILD_PATH)/build -PACKAGE_FUNCTIONS_TARGET = $(PACKAGE_FUNCTIONS_LIB)/$(PACKAGE_FUNCTIONS) - -CXX=g++ -CXXFLAGS=-D HAVE_LONG_LONG_INT_64 -c -I ../include -Wall -Wno-unused-value -fPIC -I $(VERTICA_SDK_INCLUDE) -I $(THIRD_PARTY_INCLUDE) -LDFLAGS=-shared -VSQL=vsql - -export PATH := $(THIRD_PARTY_LIB):$(PATH) - -.PHONEY: $(PACKAGE_FUNCTIONS_TARGET) - -all: $(PACKAGE_FUNCTIONS_TARGET) - -# build package functions -$(PACKAGE_FUNCTIONS_TARGET): $(BUILD_FILES) $(THIRD_PARTY_OBJ) - mkdir -p $(PACKAGE_FUNCTIONS_LIB) - $(CXX) $(LDFLAGS) -o $@ $(BUILD_FILES) $(THIRD_PARTY_OBJ) - -functions/Vertica.o: $(VERTICA_SDK_INCLUDE)/Vertica.cpp - $(CXX) $(CXXFLAGS) $(VERTICA_SDK_INCLUDE)/Vertica.cpp -o $@ -functions/AESEncrypt.o: functions/AESEncrypt.cpp - $(CXX) $(CXXFLAGS) functions/AESEncrypt.cpp -o $@ -functions/AESDecrypt.o: functions/AESDecrypt.cpp - $(CXX) $(CXXFLAGS) functions/AESDecrypt.cpp -o $@ -$(THIRD_PARTY)/src/rijndael.o: $(THIRD_PARTY)/src/rijndael.c - $(CXX) $(CXXFLAGS) $(THIRD_PARTY)/src/rijndael.c -o $@ -$(THIRD_PARTY)/src/my_aes.o: $(THIRD_PARTY)/src/my_aes.c - $(CXX) $(CXXFLAGS) $(THIRD_PARTY)/src/my_aes.c -o $@ - -install: $(PACKAGE_FUNCTIONS_TARGET) ddl/install.sql - $(VSQL) -f ddl/install.sql -uninstall: ddl/uninstall.sql - $(VSQL) -f ddl/uninstall.sql - - -# Run the simulator against the functons -sim_test: all simulator - $(VALGRIND) ./vsim $(PACKAGE_FUNCTIONS_TARGET) FunctionName $(DEBUG_DATA_PATH)/testdata.txt - -# build the simulator (in SIMULATOR_PATH) and simlink it here -simulator: - $(MAKE) -C $(SIMULATOR_PATH) - ln -f -s $(SIMULATOR_PATH)/vsim - -clean: - rm -rf $(PACKAGE_FUNCTIONS_TARGET) - rm -f ./*.so - rm -f ./functions/*.o - rm -f vsim* - rm -f third-party/src/*.o -