master
Volker Birk 1 year ago
parent a03ce26fa9
commit 338e1e1990

7
.gitignore vendored

@ -172,3 +172,10 @@ dmypy.json
# Cython debug symbols
cython_debug/
# vim
.??*.swp
# pEp
local.conf

@ -0,0 +1,84 @@
# this file is under GNU GPL 3.0, see LICENSE.txt
# see LICENSE.txt
PREFIX=$(HOME)
BOOST_INCLUDE?=$(PREFIX)/include
BOOST_LIB?=$(PREFIX)/lib
CRYPTOPP_INCLUDE?=$(PREFIX)/include
CRYPTOPP_LIB?=$(PREFIX)/lib
OPENSSL_INCLUDE?=$(HOME)/include
OPENSSL_LIB?=$(HOME)/lib
LIBZ_INCLUDE?=$(HOME)/include
LIBZ_LIB?=$(HOME)/lib
ifeq ($(wildcard ../local.conf),../local.conf)
-include ../local.conf
endif
CXXFLAGS += -std=c++17 -O0 -g
CXXFLAGS += -I$(BOOST_INCLUDE) -I$(CRYPTOPP_INCLUDE) -I$(OPENSSL_INCLUDE) -I$(LIBZ_INCLUDE)
LDFLAGS+=$(BOOST_LIB)/libboost_regex.a $(BOOST_LIB)/libboost_iostreams.a $(BOOST_LIB)/libboost_system.a
LDFLAGS+=$(CRYPTOPP_LIB)/libcryptopp.a
LDFLAGS+=$(OPENSSL_LIB)/libssl.a $(OPENSSL_LIB)/libcrypto.a
LDFLAGS+=$(LIBZ_LIB)/libz.a
TARGET=libsignedpkg.a
SOURCE=$(wildcard *.cc)
HEADERS=$(wildcard *.hh *.hxx)
OBJECTS=$(subst .cc,.o,$(SOURCE))
WITHOUT_TESTS=$(patsubst test_%.o,,$(OBJECTS))
TESTSOURCE=$(wildcard test_*.cc)
TESTOBJECTS=$(subst .cc,.o,$(TESTSOURCE))
TESTS=$(subst .cc,,$(TESTSOURCE))
all: $(TARGET)
%.o: %.cc %.hh
$(CXX) $(CXXFLAGS) -c $<
$(TARGET): $(WITHOUT_TESTS)
ar -rc $@ $^
.PHONY: clean install uninstall test
clean:
rm -f $(TARGET) *.o *.a
rm -f $(TESTS)
install: $(TARGET)
-mkdir -p $(PREFIX)/include/pEp
cp $(HEADERS) $(PREFIX)/include/pEp/
cp $(TARGET) $(PREFIX)/lib/
uninstall:
cd $(PREFIX)/include && rm -f $(HEADERS)
cd $(PREFIX)/lib && rm -f $(TARGET)
test_%: test_%.o $(TARGET)
$(CXX) $(LDFLAGS) $< $(TARGET) -o $@
test: $(TESTS)
. run_tests.sh $(TESTS)
tags: $(SOURCE) $(HEADERS)
ctags $(SOURCE) $(HEADERS)
local.conf:
@echo PREFIX=$(PREFIX) > local.conf
@echo >> local.conf
@echo BOOST_INCLUDE=$(BOOST_INCLUDE) >> local.conf
@echo BOOST_LIB=$(BOOST_LIB) >> local.conf
@echo >> local.conf
@echo CRYPTOPP_INCLUDE=$(CRYPTOPP_INCLUDE) >> local.conf
@echo CRYPTOPP_LIB=$(CRYPTOPP_LIB) >> local.conf
@echo >> local.conf
@echo OPENSSL_INCLUDE=$(OPENSSL_INCLUDE) >> local.conf
@echo OPENSSL_LIB=$(OPENSSL_LIB) >> local.conf

@ -0,0 +1,44 @@
#include "unpack.hh"
#include <filesystem>
namespace SignedPackage {
static bool path_empty(std::string path)
{
if (!std::filesystem::exists(path))
return true;
return std::filesystem::is_empty(path);
}
static void ensure_user_path(std::string path)
{
}
void install_if_location_empty(
CryptoPP::PublicKey& deployment_key,
CryptoPP::PrivateKey& provisioning_key,
std::string pkg_path
)
{
}
void provision_system(
pEp::UpdateClient::product p,
pEp::UpdateClient::PublicKey update_key,
CryptoPP::PublicKey& deployment_key,
CryptoPP::PrivateKey& provisioning_key,
pEp::notifyRead_t notifyRead,
locations loc
)
{
std::string path = loc["PER_USER_DIRECTORY"];
// do not provision systems, which formerly were used
if (!path_empty(path))
return;
std::string pkg_path = pEp::UpdateClient::update(p, update_key, notifyRead);
install_if_location_empty(deployment_key, provisioning_key, pkg_path);
}
}

@ -0,0 +1,35 @@
#ifndef SP_UNPACK
#define SP_UNPACK
#include <string>
#include <map>
#include <pEp/pEpEngine.h>
#include <pEp/downloadclient.hh>
namespace SignedPackage {
// locations maps installation location name to actual POSIX path
typedef std::map< std::string, std::string > locations;
const locations pEp_locations = {
{ "PER_USER_DIRECTORY", ::per_user_directory() },
{ "PER_MACHINE_DIRECTORY", ::per_machine_directory() }
};
void install_if_location_empty(
CryptoPP::PublicKey& deployment_key,
CryptoPP::PrivateKey& provisioning_key,
std::string pkg_path
);
void provision_system(
pEp::UpdateClient::product p,
pEp::UpdateClient::PublicKey update_key,
CryptoPP::PublicKey& deployment_key,
CryptoPP::PrivateKey& provisioning_key,
pEp::notifyRead_t notifyRead = nullptr,
locations loc = pEp_locations
);
}
#endif // SP_UNPACK
Loading…
Cancel
Save