"Fossies" - the Fresh Open Source Software Archive

Member "Tomb-2.7/extras/tomber/tomber/tomber.py" (11 Oct 2019, 4807 Bytes) of package /linux/privat/Tomb-2.7.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Python source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. For more information about "tomber.py" see the Fossies "Dox" file reference documentation and the last Fossies "Diffs" side-by-side code changes report: 2.3_vs_2.4.

    1 # -*- coding: utf8 -*-
    2 
    3 """
    4 
    5 tomber - a python Tomb (the Crypto Undertaker) wrapper
    6 To use tomber you need to install Tomb (https://github.com/dyne/Tomb)
    7 Copyright © 2014, Federico reiven <reiven_at_gmail.com>
    8 Licensed under BSD License.
    9 See also LICENSE file
   10 
   11 """
   12 
   13 
   14 from subprocess import Popen, PIPE
   15 from tools import parser
   16 
   17 
   18 def get_message(stderr, type):
   19     """
   20     Helper to return exit messages from command execution
   21     """
   22     response = []
   23     for line in stderr.split('\n'):
   24         ret = parser.parse_line(line)
   25         if ret and ret['type'] == type:
   26             if not 'swaps' in ret['content']:
   27                 response.append(ret['content'])
   28     return response
   29 
   30 
   31 def execute(cmd):
   32     """
   33     Execute given cmd. return boolean based on exit status and error string
   34     """
   35     p = Popen(cmd.split(), stdout=PIPE, stderr=PIPE)
   36     stdout, stderr = p.communicate()
   37     p_status = p.wait()
   38     if p_status == 0:
   39         return True, get_message(stderr, 'success')
   40     else:
   41         return False, get_message(stderr, 'error')
   42 
   43 
   44 def sanitize_passphrase(passphrase):
   45     """
   46     Used to avoid errors with passphrases which include spaces
   47     """
   48     return ''.join(['"', passphrase, '"'])
   49 
   50 
   51 def tdig(tombfile, size, force=False):
   52     """
   53     Dig a tomb of given size
   54     """
   55     cmd = ' '.join(['tomb', 'dig', tombfile, '-s', str(size), '--no-color'])
   56     if force:
   57         cmd += " -f"
   58     return execute(cmd)
   59 
   60 
   61 def tforge(keyfile, passphrase, force=False):
   62     """
   63     Forge a key with given passphrase
   64     """
   65     cmd = ' '.join(['tomb',
   66         'forge',
   67         keyfile,
   68         '--unsafe',
   69         '--tomb-pwd',
   70         sanitize_passphrase(passphrase),
   71         '--no-color'])
   72     if force:
   73         cmd += " -f"
   74     return execute(cmd)
   75 
   76 
   77 def tlock(tombfile, keyfile, passphrase):
   78     """
   79     Lock a tomb file with given key and passphrase.
   80     """
   81     cmd = ' '.join(['tomb',
   82         'lock',
   83         tombfile,
   84         '-k',
   85         keyfile,
   86         '--unsafe',
   87         '--tomb-pwd',
   88         sanitize_passphrase(passphrase),
   89         '--no-color'])
   90     return execute(cmd)
   91 
   92 
   93 def topen(tombfile, keyfile, passphrase, mountpath=False):
   94     """
   95     Open (mount) a tomb.
   96     Keyfile and passphrase are needed, mountpoint is optional
   97     """
   98     if not mountpath:
   99         mountpath = ''
  100     cmd = ' '.join(['tomb',
  101         'open',
  102         tombfile,
  103         '-k',
  104         keyfile,
  105         '--unsafe',
  106         '--tomb-pwd',
  107         sanitize_passphrase(passphrase),
  108         '--no-color',
  109         mountpath])
  110     return execute(cmd)
  111 
  112 
  113 def tclose(tombfile):
  114     """
  115     Close (umount) a tomb
  116     """
  117     cmd = ' '.join(['tomb', 'close', tombfile, '--no-color'])
  118     return execute(cmd)
  119 
  120 
  121 def tresize(tombfile, keyfile, passphrase, newsize):
  122     """
  123     Resize a tomb.
  124     Keyfile, passphrase and new size are needed.
  125     """
  126     cmd = ' '.join(['tomb',
  127         'resize',
  128         tombfile,
  129         '-k',
  130         keyfile,
  131         '--unsafe',
  132         '--tomb-pwd',
  133         sanitize_passphrase(passphrase),
  134         '-s',
  135         str(newsize),
  136         '--no-color'])
  137     return execute(cmd)
  138 
  139 
  140 def tbury(keyfile, passphrase, imagefile):
  141     """
  142     Bury a key inside a jpg file
  143     """
  144     cmd = ' '.join(['tomb',
  145         'bury',
  146         '-k',
  147         keyfile,
  148         '--unsafe',
  149         '--tomb-pwd',
  150         sanitize_passphrase(passphrase),
  151         imagefile,
  152         '--no-color'])
  153     return execute(cmd)
  154 
  155 
  156 def texhume(keyfile, passphrase, imagefile):
  157     """
  158     Exhume (recover) key from jpg file. Passphrase for key is needed
  159     """
  160     cmd = ' '.join(['tomb',
  161         'exhume',
  162         '-k',
  163         keyfile,
  164         '--unsafe',
  165         '--tomb-pwd',
  166         sanitize_passphrase(passphrase),
  167         imagefile,
  168         '--no-color'])
  169     return execute(cmd)
  170 
  171 
  172 def tpasswd(keyfile, newpassphrase, oldpassphrase):
  173     """
  174     Change current passphrase from keyfile
  175     """
  176     cmd = ' '.join(['tomb',
  177         'passwd',
  178         '-k',
  179         keyfile,
  180         '--unsafe',
  181         '--tomb-pwd',
  182         sanitize_passphrase(newpassphrase),
  183         '--tomb-old-pwd',
  184         sanitize_passphrase(oldpassphrase),
  185         '--no-color'])
  186     return execute(cmd)
  187 
  188 
  189 def tsetkey(oldkeyfile, tombfile, newkeyfile, newpassphrase, oldpassphrase):
  190     """
  191     Change lock key for a tomb
  192     The old key+passphrase and new key+passphrase are needed
  193     """
  194     cmd = ' '.join(['tomb',
  195         'setkey',
  196         '-k',
  197         newkeyfile,
  198         oldkeyfile,
  199         tombfile,
  200         '--unsafe',
  201         '--tomb-old-pwd',
  202         sanitize_passphrase(newpassphrase),
  203         '--tomb-pwd',
  204         sanitize_passphrase(oldpassphrase),
  205         '--no-color'])
  206     return execute(cmd)
  207 
  208 
  209 def tslam():
  210     """
  211     Slam tombs, killing all programs using it
  212     """
  213     cmd = ' '.join(['tomb', 'slam'])
  214     return execute(cmd)