diff options
-rw-r--r-- | changes/VERSION_COMPAT | 1 | ||||
-rw-r--r-- | changes/bug_5989_fix-soledad-imports | 1 | ||||
-rw-r--r-- | changes/bug_6146_handle_removals_release | 1 | ||||
-rwxr-xr-x | pkg/linux/build_bundle.sh | 116 | ||||
-rwxr-xr-x | pkg/osx/build_bundle.sh | 123 | ||||
-rw-r--r-- | pkg/osx/build_bundle_from_linux.sh | 84 | ||||
-rwxr-xr-x | pkg/scripts/bitmask_bootstrap.sh | 76 | ||||
-rwxr-xr-x | pkg/tools/enable_ipdb.sh | 95 | ||||
-rwxr-xr-x | pkg/tuf/init.py | 102 | ||||
-rw-r--r-- | src/leap/bitmask/backend/components.py | 6 | ||||
-rw-r--r-- | src/leap/bitmask/services/soledad/soledadbootstrapper.py | 3 |
11 files changed, 104 insertions, 504 deletions
diff --git a/changes/VERSION_COMPAT b/changes/VERSION_COMPAT index cc00ecf7..1eadcbe0 100644 --- a/changes/VERSION_COMPAT +++ b/changes/VERSION_COMPAT @@ -8,3 +8,4 @@ # # BEGIN DEPENDENCY LIST ------------------------- # leap.foo.bar>=x.y.z +leap.keymanager>=0.4.0 diff --git a/changes/bug_5989_fix-soledad-imports b/changes/bug_5989_fix-soledad-imports new file mode 100644 index 00000000..3b425287 --- /dev/null +++ b/changes/bug_5989_fix-soledad-imports @@ -0,0 +1 @@ +- Fix soledad imports (#5989). diff --git a/changes/bug_6146_handle_removals_release b/changes/bug_6146_handle_removals_release new file mode 100644 index 00000000..6fe67d62 --- /dev/null +++ b/changes/bug_6146_handle_removals_release @@ -0,0 +1 @@ +- Make pkg/tuf/release.py handle removals in the repo diff --git a/pkg/linux/build_bundle.sh b/pkg/linux/build_bundle.sh deleted file mode 100755 index 60151a80..00000000 --- a/pkg/linux/build_bundle.sh +++ /dev/null @@ -1,116 +0,0 @@ -#!/bin/bash -# -# USAGE NOTES: -# -# This script is meant to be used as follows: -# user@host ~ $ ./build_bundle.sh ~/tmp 0.3.2 ~/tmp/0.3.1/Bitmask-linux64-0.3.1/ /media/Shared/CHANGELOG ~/tmp/bundle_out/ -# -# So we would have: -# REPOS_ROOT -> ~/tmp -# VERSION -> 0.3.2 -# TEMPLATE_BUNDLE -> ~/tmp/0.3.1/Bitmask-linux64-0.3.1/ -# JOINT_CHANGELOG -> /media/Shared/CHANGELOG -# DEST -> ~/tmp/bundle_out/ -# -# We need to set different PATHs in order to use a specific version of PySide, -# supposing that we have our compiled pyside in '~/pyside/sandbox', the above command would be: -# user@host ~ $ PYTHONPATH=~/pyside/sandbox/lib/python2.7/site-packages/ LD_LIBRARY_PATH=~/pyside/sandbox/lib/ PATH=$PATH:~/pyside/sandbox/bin/ ./build_bundle.sh ~/tmp 0.3.2 ~/tmp/0.3.1/Bitmask-linux64-0.3.1/ /media/sf_Shared/CHANGELOG ~/tmp/bundle_out/ - - -# Required arguments -REPOS_ROOT=$1 # Root path for all the needed repositories -VERSION=$2 # Version number that we are building -TEMPLATE_BUNDLE=$3 # A template used to create the new bundle -JOINT_CHANGELOG=$4 # Joint changelog for all the repositories -DEST=$5 # Destination folder for the bundle - -# Helper variables -REPOSITORIES="bitmask_client leap_pycommon soledad keymanager leap_mail" -ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/') - -# Bundle structure -LEAP_LIB=$TEMPLATE_BUNDLE/lib/leap/ -BITMASK_BIN=$TEMPLATE_BUNDLE/bitmask -BUNDLE_NAME=Bitmask-linux$ARCH-$VERSION - -# clean template -rm -f $TEMPLATE_BUNDLE/CHANGELOG -rm -f $TEMPLATE_BUNDLE/relnotes.txt -rm -rf $TEMPLATE_BUNDLE/apps/leap -rm -rf $TEMPLATE_BUNDLE/lib/leap/{common,keymanager,soledad,mail} - -# checkout the latest tag in all repos -for repo in $REPOSITORIES; do - cd $REPOS_ROOT/$repo - git checkout master - git pull --ff-only origin master && git fetch - git reset --hard origin/master # this avoids problems if you are in a commit far in the past - # checkout to the closest annotated tag, supress 'detached head' warning - git checkout --quiet `git describe --abbrev=0` -done - -# make: compile ui and resources in client -cd $REPOS_ROOT/bitmask_client -make - -# copy the latest client code to the template -cp -r $REPOS_ROOT/bitmask_client/src/leap $TEMPLATE_BUNDLE/apps/leap - -# setup sdist client -cd $REPOS_ROOT/bitmask_client -python setup.py sdist - -# extract $VERSION and copy _version.py to TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/leap/bitmask/_version.py -# copy _version.py (versioneer) and reqs.txt (requirements) to the bundle template -cd dist -rm -rf leap.bitmask-$VERSION -tar xzf leap.bitmask-$VERSION.tar.gz -cp leap.bitmask-$VERSION/src/leap/bitmask/_version.py $TEMPLATE_BUNDLE/apps/leap/bitmask/_version.py -cp leap.bitmask-$VERSION/src/leap/bitmask/util/reqs.txt $TEMPLATE_BUNDLE/apps/leap/bitmask/util/reqs.txt - -# add the other needed projects to $LEAP_LIB -# e.g. TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/lib/leap/ -cp -r $REPOS_ROOT/leap_pycommon/src/leap/common $LEAP_LIB -cp -r $REPOS_ROOT/soledad/common/src/leap/soledad $LEAP_LIB -cp -r $REPOS_ROOT/soledad/client/src/leap/soledad/client $LEAP_LIB/soledad -cp -r $REPOS_ROOT/leap_mail/src/leap/mail $LEAP_LIB -cp -r $REPOS_ROOT/keymanager/src/leap/keymanager $LEAP_LIB - -# copy bitmask launcher to the bundle template -# e.g. TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/Bitmask -cd $REPOS_ROOT/bitmask_launcher/build/ -make -cp src/launcher $BITMASK_BIN - -# copy launcher.py to template bundle -# e.g. TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/ -cd $REPOS_ROOT/bitmask_launcher/src/ -cp launcher.py $TEMPLATE_BUNDLE/apps/ - -# copy relnotes, joint changelog and LICENSE to TEMPLATE_BUNDLE -cp $REPOS_ROOT/bitmask_client/relnotes.txt $TEMPLATE_BUNDLE -cp $JOINT_CHANGELOG $TEMPLATE_BUNDLE/CHANGELOG -cp $REPOS_ROOT/bitmask_client/LICENSE $TEMPLATE_BUNDLE/LICENSE - -# clean *.pyc files -cd $TEMPLATE_BUNDLE -find . -name "*.pyc" -delete - -# remove execution flags (because vbox fs) and set read permissions for all -chmod 644 CHANGELOG LICENSE README - -# create tarball -TMP=/tmp/$BUNDLE_NAME - -rm -rf $TMP && mkdir -p $TMP # clean temp dir -cp -R $TEMPLATE_BUNDLE/* $TMP -cd /tmp -tar cjf $DEST/$BUNDLE_NAME.tar.bz2 $BUNDLE_NAME -cd -rm -rf $TMP - -# go back to develop in all repos -for repo in $REPOSITORIES; do - cd $REPOS_ROOT/$repo - git checkout develop -done diff --git a/pkg/osx/build_bundle.sh b/pkg/osx/build_bundle.sh deleted file mode 100755 index a13746bf..00000000 --- a/pkg/osx/build_bundle.sh +++ /dev/null @@ -1,123 +0,0 @@ -REPOS_ROOT=$1 -VERSION=$2 -TEMPLATE_BUNDLE=$3 -JOINT_CHANGELOG=$4 -DEST=$5 - -# clean template - -rm $TEMPLATE_BUNDLE/CHANGELOG.txt -rm $TEMPLATE_BUNDLE/relnotes.txt -rm -rf $TEMPLATE_BUNDLE/Bitmask.app/Contentes/MacOS/apps/leap -rm $TEMPLATE_BUNDLE/Bitmask.app/Contentes/MacOS/lib/leap/{common,keymanager,soledad,mail} - -# checkout VERSION in all repos - -for i in {leap_client,leap_pycommon,soledad,keymanager,leap_mail} - do - cd $REPOS_ROOT/$i - git checkout $VERSION - done - -# make ui in client - -cd $REPOS_ROOT/leap_client -make - -# cp client - -cp -r $REPOS_ROOT/leap_client/src/leap $TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/leap - -# setup sdist client - -cd $REPOS_ROOT/leap_client -python setup.py sdist - -# extract $VERSION and copy _version.py to TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/leap/bitmask/_version.py - -cd dist -rm -rf leap.bitmask-$VERSION -tar xzf leap.bitmask-$VERSION.tar.gz -cp leap.bitmask-$VERSION/src/leap/bitmask/_version.py $TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/leap/bitmask/_version.py -cp leap.bitmask-$VERSION/src/leap/bitmask/util/reqs.txt $TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/leap/bitmask/util/reqs.txt - -# cp common, soledad(client and common), mail and keymanager in TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/lib/leap/ - -LEAP_LIB=$TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/lib/leap/ - -cp -r $REPOS_ROOT/leap_pycommon/src/leap/common $LEAP_LIB -cp -r $REPOS_ROOT/soledad/common/src/leap/soledad $LEAP_LIB -cp -r $REPOS_ROOT/soledad/client/src/leap/soledad/client $LEAP_LIB/soledad -cp -r $REPOS_ROOT/leap_mail/src/leap/mail $LEAP_LIB -cp -r $REPOS_ROOT/keymanager/src/leap/keymanager $LEAP_LIB - -# cp leap_client launcher to TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/Bitmask - -BITMASK_BIN=$TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/Bitmask - -cd $REPOS_ROOT/leap_client_launcher/build/ -make -cp src/launcher $BITMASK_BIN - -# cp launcher.py to TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/ - -cd $REPOS_ROOT/leap_client_launcher/src/ -cp launcher.py $TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/ - -# install_name_tool it - -install_name_tool -change libboost_python.dylib lib/libboost_python.dylib $BITMASK_BIN -install_name_tool -change libboost_filesystem.dylib lib/libboost_filesystem.dylib $BITMASK_BIN -install_name_tool -change libboost_system.dylib lib/libboost_system.dylib $BITMASK_BIN - -# cp relnotes to TEMPLATE_BUNDLE - -cp $REPOS_ROOT/leap_client/relnotes.txt $TEMPLATE_BUNDLE - -# cp joint_chglog to TEMPLATE_BUNDLE - -cp $JOINT_CHANGELOG $TEMPLATE_BUNDLE/CHANGELOG.txt - -# cp LICENSE to TEMPLATE_BUNDLE - -cp $REPOS_ROOT/leap_client/LICENSE $TEMPLATE_BUNDLE/LICENSE.txt - -# clean pyc$ - -cd $TEMPLATE_BUNDLE -for i in $(find . | grep pyc$); - do - rm $i - done - -# create dmg - -TMP=/tmp/Bitmask -VOLUME_NAME=Bitmask -DMG_FILE=Bitmask-OSX-$VERSION.dmg - -rm -rf $TMP -mkdir -p $TMP -cp -R $TEMPLATE_BUNDLE/* $TMP -cp $REPOS_ROOT/leap_assets/mac/bitmask.icns $TMP/.VolumeIcon.icns -SetFile -c icnC $TMP/.VolumeIcon.icns -hdiutil create -srcfolder $TMP -volname $VOLUME_NAME -format UDRW -ov $DEST/raw-$DMG_FILE - -rm -rf $TMP -mkdir -p $TMP -hdiutil attach $DEST/raw-$DMG_FILE -mountpoint $TMP - -SetFile -a C $TMP -hdiutil detach $TMP - -rm -rf $TMP -rm -f $DEST/$DMG_FILE -hdiutil convert $DEST/raw-$DMG_FILE -format UDZO -o $DEST/$DMG_FILE -rm -f $DEST/raw-$DMG_FILE - -# go back to develop in all repos -for i in {leap_client,leap_pycommon,soledad,keymanager,leap_mail} - do - cd $REPOS_ROOT/$i - git checkout develop - done diff --git a/pkg/osx/build_bundle_from_linux.sh b/pkg/osx/build_bundle_from_linux.sh deleted file mode 100644 index c98e1b7a..00000000 --- a/pkg/osx/build_bundle_from_linux.sh +++ /dev/null @@ -1,84 +0,0 @@ -REPOS_ROOT=$1 -VERSION=$2 -TEMPLATE_BUNDLE=$3 -JOINT_CHANGELOG=$4 -DEST=$5 - -# clean template - -rm $TEMPLATE_BUNDLE/CHANGELOG.txt -rm $TEMPLATE_BUNDLE/relnotes.txt -rm -rf $TEMPLATE_BUNDLE/Bitmask.app/Contentes/MacOS/apps/leap -rm $TEMPLATE_BUNDLE/Bitmask.app/Contentes/MacOS/lib/leap/{common,keymanager,soledad,mail} - -# checkout VERSION in all repos - -for i in {leap_client,leap_pycommon,soledad,keymanager,leap_mail} - do - cd $REPOS_ROOT/$i - git checkout $VERSION - done - -# make ui in client - -cd $REPOS_ROOT/leap_client -make - -# cp client - -cp -r $REPOS_ROOT/leap_client/src/leap $TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/leap - -# setup sdist client - -cd $REPOS_ROOT/leap_client -python setup.py sdist - -# extract $VERSION and copy _version.py to TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/leap/bitmask/_version.py - -cd dist -rm -rf leap.bitmask-$VERSION -tar xzf leap.bitmask-$VERSION.tar.gz -cp leap.bitmask-$VERSION/src/leap/bitmask/_version.py $TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/leap/bitmask/_version.py -cp leap.bitmask-$VERSION/src/leap/bitmask/util/reqs.txt $TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/apps/leap/bitmask/util/reqs.txt - -# cp common, soledad(client and common), mail and keymanager in TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/lib/leap/ - -LEAP_LIB=$TEMPLATE_BUNDLE/Bitmask.app/Contents/MacOS/lib/leap/ - -cp -r $REPOS_ROOT/leap_pycommon/src/leap/common $LEAP_LIB -cp -r $REPOS_ROOT/soledad/common/src/leap/soledad $LEAP_LIB -cp -r $REPOS_ROOT/soledad/client/src/leap/soledad/client $LEAP_LIB/soledad -cp -r $REPOS_ROOT/leap_mail/src/leap/mail $LEAP_LIB -cp -r $REPOS_ROOT/keymanager/src/leap/keymanager $LEAP_LIB - -# cp relnotes to TEMPLATE_BUNDLE - -cp $REPOS_ROOT/leap_client/relnotes.txt $TEMPLATE_BUNDLE - -# cp joint_chglog to TEMPLATE_BUNDLE - -cp $JOINT_CHANGELOG $TEMPLATE_BUNDLE/CHANGELOG.txt - -# cp LICENSE to TEMPLATE_BUNDLE - -cp $REPOS_ROOT/leap_client/LICENSE $TEMPLATE_BUNDLE/LICENSE.txt - -# clean pyc$ - -cd $TEMPLATE_BUNDLE -for i in $(find . | grep pyc$); - do - rm $i - done - -# create dmg - -genisoimage -D -V "Bitmask" -no-pad -r -apple -o raw-Bitmask-OSX-$VERSION.dmg $TEMPLATE_BUNDLE -dmg dmg raw-Bitmask-OSX-$VERSION.dmg Bitmask-OSX-$VERSION.dmg - -# go back to develop in all repos -for i in {leap_client,leap_pycommon,soledad,keymanager,leap_mail} - do - cd $REPOS_ROOT/$i - git checkout develop - done diff --git a/pkg/scripts/bitmask_bootstrap.sh b/pkg/scripts/bitmask_bootstrap.sh deleted file mode 100755 index 70f9867e..00000000 --- a/pkg/scripts/bitmask_bootstrap.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -###################################################################### -# bitmask_boostrap.sh -# Copyright (C) 2013 LEAP -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program 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 General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -###################################################################### -# Installs requirements, and -# clones the latest leap-client - -# depends on: -# (authoritative list under docs/dev/quickstart.rst) - -# git python-dev python-setuptools python-virtualenv python-pip python-openssl libsqlite3-dev g++ openvpn -# pyside-tools python-pyside python-qt4 - -# Clone latest git (develop branch) -# change "develop" for any other branch you want. -BRANCH="develop" -BITMASK_DIR="bitmask-develop" - -# Escape code -esc=`echo -en "\033"` - -# Set colors -cc_green="${esc}[0;32m" -cc_yellow="${esc}[0;33m" -cc_blue="${esc}[0;34m" -cc_red="${esc}[0;31m" -cc_normal=`echo -en "${esc}[m\017"` - -echo "${cc_yellow}" -echo "~~~~~~~~~~~~~~~~~~~~~~~" -echo " Bitmask bootstrapping " -echo "~~~~~~~~~~~~~~~~~~~~~~~" -echo "" -echo "${cc_green}Creating virtualenv...${cc_normal}" - -mkdir ${BITMASK_DIR} -virtualenv "${BITMASK_DIR}" -source ./${BITMASK_DIR}/bin/activate - -echo "${cc_green}Installing bitmask...${cc_normal}" - -pip install -e 'git+https://leap.se/git/bitmask_client@'${BRANCH}'#egg=leap.bitmask' - -cd ${BITMASK_DIR} - -# symlink the pyside libraries to the system libs -./src/leap.bitmask/pkg/postmkvenv.sh - -cd ./src/leap.bitmask -make -cd ../../ -source ./bin/activate - -echo "${cc_green}bitmask installed! =)" -echo "${cc_yellow}" -echo "Launch it with: " -echo "~~~~~~~~~~~~~~~~~~~~~~" -echo "bin/bitmask --debug" -echo "~~~~~~~~~~~~~~~~~~~~~~" -echo "If you are not inside the virtualenv, source it first with " -echo "source "${BITMASK_DIR}"/bin/activate" -echo "${cc_normal}" diff --git a/pkg/tools/enable_ipdb.sh b/pkg/tools/enable_ipdb.sh new file mode 100755 index 00000000..00a9235b --- /dev/null +++ b/pkg/tools/enable_ipdb.sh @@ -0,0 +1,95 @@ +#!/bin/sh + +# enable_ipdb.sh +# This script installs modules needed for using IPython debug shell in a +# Bitmask bundle directory. It uses a python virtual environment in which it +# installs needed modules and then links them into the appropriate directory +# inside the bundle directory. + +# Copyright (C) 2013 LEAP +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +MODULES="ast.py runpy.py" +SITE_MODULES="ipdb IPython simplegeneric.py decorator.py pexpect" + +if [ $# != 1 ]; then + echo "Usage: $0 bundle_path" + exit 1 +fi + +BUNDLE_PATH=`echo $1 | sed -e "s/\/\$//"` +BUNDLE_LIB=${BUNDLE_PATH}/lib +BUNDLE_VENV=${BUNDLE_PATH}/.venv + +function check_bundle_dirs() { + if [ ! -d ${BUNDLE_PATH} ]; then + echo "Argument ${BUNDLE_PATH} is not a directory." + exit 2 + fi + + if [ ! -d ${BUNDLE_LIB} ]; then + echo "Expected library directory ${BUNDLE_LIB} is not a directory." + exit 2 + fi + + if [ ! -w ${BUNDLE_LIB} ]; then + echo "Directory ${BUNDLE_LIB} is not writable." + exit 2 + fi +} + +function confirm_installation() { + echo -n "Are you sure you want to enable IPython debugger in ${BUNDLE_PATH} (y/N)? " + read confirm + if [[ "${confirm}" != "y" && "${confirm}" != "Y" ]]; then + echo "Bailing out..." + exit 0 + fi +} + +function setup_virtualenv() { + if [ ! -d ${BUNDLE_VENV} ]; then + virtualenv ${BUNDLE_VENV} + fi + source ${BUNDLE_VENV}/bin/activate + pip install ipdb +} + +function link_modules() { + for package in ${MODULES}; do + package_path=${BUNDLE_LIB}/${package} + if [[ ! -f ${package_path} && ! -d ${package_path} ]]; then + ln -sf /usr/lib/python2.7/${package} ${BUNDLE_LIB} + fi + done + for package in ${SITE_MODULES}; do + package_path=${BUNDLE_LIB}/${package} + if [[ ! -f ${package_path} && ! -d ${package_path} ]]; then + ln -sf ${BUNDLE_VENV}/lib/python2.7/site-packages/${package} ${BUNDLE_LIB} + fi + done +} + +function main() { + check_bundle_dirs + confirm_installation + setup_virtualenv + link_modules + echo "All done." + exit 0 +} + +main diff --git a/pkg/tuf/init.py b/pkg/tuf/init.py deleted file mode 100755 index 7300da0a..00000000 --- a/pkg/tuf/init.py +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env python -# init.py -# Copyright (C) 2014 LEAP -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program 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 General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -""" -Tool to initialize a TUF repo. - -The keys can be generated with: - openssl genrsa -des3 -out private.pem 4096 -The public key can be exported with: - openssl rsa -in private.pem -outform PEM -pubout -out public.pem -""" - -import sys - -from tuf.repository_tool import create_new_repository -from tuf.repository_tool import import_rsa_privatekey_from_file -from tuf.repository_tool import import_rsa_publickey_from_file - - -def usage(): - print ("Usage: %s repo root_private_key root_pub_key targets_pub_key" - " timestamp_pub_key") % (sys.argv[0],) - - -def main(): - if len(sys.argv) < 6: - usage() - return - - repo_path = sys.argv[1] - root_priv_path = sys.argv[2] - root_pub_path = sys.argv[3] - targets_pub_path = sys.argv[4] - timestamp_pub_path = sys.argv[5] - repo = Repo(repo_path, root_priv_path) - repo.build(root_pub_path, targets_pub_path, timestamp_pub_path) - - print "%s/metadata.staged/root.json is ready" % (repo_path,) - - -class Repo(object): - """ - Repository builder class - """ - - def __init__(self, repo_path, key_path): - """ - Constructor - - :param repo_path: path where the repo lives - :type repo_path: str - :param key_path: path where the private root key lives - :type key_path: str - """ - self._repo_path = repo_path - self._key = import_rsa_privatekey_from_file(key_path) - - def build(self, root_pub_path, targets_pub_path, timestamp_pub_path): - """ - Create a new repo - - :param root_pub_path: path where the public root key lives - :type root_pub_path: str - :param targets_pub_path: path where the public targets key lives - :type targets_pub_path: str - :param timestamp_pub_path: path where the public timestamp key lives - :type timestamp_pub_path: str - """ - repository = create_new_repository(self._repo_path) - - pub_root_key = import_rsa_publickey_from_file(root_pub_path) - repository.root.add_verification_key(pub_root_key) - repository.root.load_signing_key(self._key) - - pub_target_key = import_rsa_publickey_from_file(targets_pub_path) - repository.targets.add_verification_key(pub_target_key) - repository.snapshot.add_verification_key(pub_target_key) - repository.targets.compressions = ["gz"] - repository.snapshot.compressions = ["gz"] - - pub_timestamp_key = import_rsa_publickey_from_file(timestamp_pub_path) - repository.timestamp.add_verification_key(pub_timestamp_key) - - repository.write_partial() - - -if __name__ == "__main__": - main() diff --git a/src/leap/bitmask/backend/components.py b/src/leap/bitmask/backend/components.py index 5ef6befd..50f723cb 100644 --- a/src/leap/bitmask/backend/components.py +++ b/src/leap/bitmask/backend/components.py @@ -60,7 +60,7 @@ from leap.common import certs as leap_certs from leap.keymanager import openpgp from leap.keymanager.errors import KeyAddressMismatch, KeyFingerprintMismatch -from leap.soledad.client import NoStorageSecret, PassphraseTooShort +from leap.soledad.client.secrets import NoStorageSecret, PassphraseTooShort logger = logging.getLogger(__name__) @@ -914,6 +914,8 @@ class Keymanager(object): keymanager = self._keymanager_proxy try: + # NOTE: parse_openpgp_ascii_key is not in keymanager anymore + # the API for that will need some thinking public_key, private_key = keymanager.parse_openpgp_ascii_key( new_key) except (KeyAddressMismatch, KeyFingerprintMismatch) as e: @@ -974,7 +976,7 @@ class Keymanager(object): """ List all the keys stored in the local DB. """ - keys = self._keymanager_proxy.get_all_keys_in_local_db() + keys = self._keymanager_proxy.get_all_keys() self._signaler.signal(self._signaler.keymanager_keys_list, keys) def get_key_details(self, username): diff --git a/src/leap/bitmask/services/soledad/soledadbootstrapper.py b/src/leap/bitmask/services/soledad/soledadbootstrapper.py index c4e43bfe..745645f3 100644 --- a/src/leap/bitmask/services/soledad/soledadbootstrapper.py +++ b/src/leap/bitmask/services/soledad/soledadbootstrapper.py @@ -45,7 +45,8 @@ from leap.common.files import which from leap.keymanager import KeyManager, openpgp from leap.keymanager.errors import KeyNotFound from leap.soledad.common.errors import InvalidAuthTokenError -from leap.soledad.client import Soledad, BootstrapSequenceError +from leap.soledad.client import Soledad +from leap.soledad.client.secrets import BootstrapSequenceError logger = logging.getLogger(__name__) |