@@ -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