Skip to content

Commit c66af5c

Browse files
committed
add rebository URL to gpg process name
This makes gpg agent popups more informative.
1 parent cb554a2 commit c66af5c

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

git-incrypt

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -447,16 +447,21 @@ class MetaData:
447447
self.defaultbranch = None
448448
self.gpgkeys = []
449449

450+
def _gpg(self, args, inp):
451+
'run gpg'
452+
return subprocess.check_output(
453+
[f'gpg@incrypt::{self.repo.remotes['incrypt'].url}'] + args,
454+
executable='gpg', input=inp)
455+
450456
def init(self, gpgkeys, template, defaultbranch):
451457
'initialize the metadata'
452458
self.files = {}
453459
self.files['ver'] = self.repo.create_blob(MetaData.VER)
454460
self.key = os.urandom(48)
455461
keyhashbase = MetaData.KEYVER + b'\x00' + self.key
456462
self.keyhash = hashlib.sha1(keyhashbase).hexdigest()
457-
cryptedkey = subprocess.check_output(
458-
['gpg', '-q', '-e'] + ['-r' + k for k in gpgkeys],
459-
input=keyhashbase)
463+
cryptedkey = self._gpg(
464+
['-q', '-e'] + ['-r' + k for k in gpgkeys], keyhashbase)
460465
self.files['key'] = self.repo.create_blob(cryptedkey)
461466
self.files['sig'] = self.repo.TreeBuilder().write()
462467
self.template = template
@@ -472,9 +477,9 @@ class MetaData:
472477
def addkey(self, gpgkeys):
473478
'add gpg key'
474479
self.gpgkeys += gpgkeys
475-
cryptedkey = subprocess.check_output(
476-
['gpg', '-q', '-e'] + ['-r' + k for k in self.gpgkeys],
477-
input=MetaData.KEYVER + b'\x00' + self.key)
480+
cryptedkey = self._gpg(
481+
['-q', '-e'] + ['-r' + k for k in self.gpgkeys],
482+
MetaData.KEYVER + b'\x00' + self.key)
478483
self.files['key'] = self.repo.create_blob(cryptedkey)
479484

480485
def read(self):
@@ -488,8 +493,7 @@ class MetaData:
488493
f'Version format is {data}, expected {MetaData.VER}'
489494
obj = tree['key']
490495
self.files['key'] = obj.id
491-
data = subprocess.check_output(['gpg', '-q', '-d'],
492-
input=obj.read_raw())
496+
data = self._gpg(['-q', '-d'], obj.read_raw())
493497
newkeyhash = hashlib.sha1(data).hexdigest()
494498
if self.keyhash:
495499
assert newkeyhash == self.keyhash, \
@@ -498,9 +502,8 @@ class MetaData:
498502
keyver, self.key = data.split(b'\x00', 1)
499503
assert keyver == MetaData.KEYVER, \
500504
f'Key format is {keyver}, expected {MetaData.KEYVER}'
501-
keydata = subprocess.check_output(
502-
['gpg', '-q', '--list-packets'],
503-
input=obj.read_raw()).decode('utf-8').split('\n')
505+
keydata = self._gpg(['-q', '--list-packets'],
506+
obj.read_raw()).decode('utf-8').split('\n')
504507
for k in keydata:
505508
match = re.search(r'^:pubkey enc packet:.*keyid ([0-9A-F]+)', k)
506509
if match:
@@ -522,8 +525,7 @@ class MetaData:
522525

523526
def sign(self):
524527
'sign key'
525-
sig = subprocess.check_output(['gpg', '-q', '-b', '-s'],
526-
input=self.key)
528+
sig = self._gpg(['-q', '-b', '-s'], self.key)
527529
sigfile = self.repo.create_blob(encryptdata(
528530
hashlib.sha1(sig).digest() + sig, self.key))
529531
sigtree = self.repo.TreeBuilder(self.repo.get(self.files['sig']))
@@ -542,9 +544,9 @@ class MetaData:
542544
tmp.flush()
543545
sigfile = tmp.name
544546
try:
545-
sigoutput = subprocess.check_output(
546-
['gpg', '--verify', '--status-fd', '1', sigfile, '-'],
547-
input=self.key).decode('utf-8').strip().split('\n')
547+
sigoutput = self._gpg(
548+
['--verify', '--status-fd', '1', sigfile, '-'], self.key
549+
).decode('utf-8').strip().split('\n')
548550
sigresults = [d.split()[1] for d in sigoutput]
549551
if 'GOODSIG' in sigresults and \
550552
('TRUST_ULTIMATE' in sigresults or

0 commit comments

Comments
 (0)