#!/usr/bin/env python2.7

from builtins import int

import json
import os
import sys

import key_store
import utils

def usage():
    print("Usage: ./cert_extract.py <output dir>")
    sys.exit(0)

if __name__ == "__main__":
    import gettext
    gettext.install('rktool', './lang', True)

    if len(sys.argv) != 2:
        usage()

    outDir = sys.argv[1]
    if not os.path.exists(outDir):
        os.mkdir(outDir)
    os.chdir(outDir)

    dep = json.loads(sys.stdin.read())
    for g in dep['Belege-Gruppe']:
        groupCerts = []
        if 'Zertifizierungsstellen' in g:
            groupCerts = g['Zertifizierungsstellen']
        else:
            print(_('WARNING: {}').format(
                    _('\"{}\" missing from group element.').format(
                        'Zertifizierungsstellen')))

        if 'Signaturzertifikat' in g:
            groupCerts.append(g['Signaturzertifikat'])
        else:
            print(_('WARNING: {}').format(
                    _('\"{}\" missing from group element.').format(
                        'Signaturzertifikat')))

        for cert in groupCerts:
            try:
                co = utils.loadCert(utils.addPEMCertHeaders(cert))
                cs = key_store.numSerialToKeyId(co.serial)
                with open('{}.crt'.format(cs), 'w') as f:
                    f.write(utils.exportCertToPEM(co))
            except ValueError as e:
                print(_('WARNING: {}').format(
                    _('Cannot load certificate: {}').format(e)))

@@ -108,16 +108,30 @@
 rt utils
+%0Aimport verify
 %0A%0Adef us
@@ -496,115 +496,96 @@
     
-for g in dep%5B'Belege-
+groups = verify.parseDEPAnd
 Gr
+o
 up
-pe'%5D:%0A        groupCerts = %5B%5D%0A        if 'Zertifizierungsstellen' in g:%0A  
+s(dep)%0A    for recs, cert, cert_list in groups:%0A
         
   gr
@@ -572,34 +572,32 @@
 groups:%0A        
-  
 groupCerts = g%5B'
@@ -597,478 +597,75 @@
 s = 
-g%5B'Zertifizierungsstellen'%5D%0A        else:%0A            print(_('WARNING: %7B%7D').format(%0A                    _('%5C%22%7B%7D%5C%22 missing from group element.').format(%0A                        'Zertifizierungsstellen')))%0A%0A        if 'Signaturzertifikat' in g:%0A            groupCerts.append(g%5B'Signaturzertifikat'%5D)%0A        else:%0A            print(_('WARNING: %7B%7D').format(%0A                    _('%5C%22%7B%7D%5C%22 missing from group element.').format(%0A                        'Signaturzertifikat'))
+list(cert_list)%0A        if cert:%0A            groupCerts.append(cert
 )%0A%0A 
@@ -676,19 +676,17 @@
    for c
-ert
+o
  in grou
@@ -697,96 +697,8 @@
 ts:%0A
-            try:%0A                co = utils.loadCert(utils.addPEMCertHeaders(cert))%0A    
     
@@ -760,20 +760,16 @@
         
-    
 with ope
@@ -818,20 +818,16 @@
         
-    
 f.write(
@@ -857,152 +857,4 @@
 o))%0A
-            except ValueError as e:%0A                print(_('WARNING: %7B%7D').format(%0A                    _('Cannot load certificate: %7B%7D').format(e)))%0A

Switch over cert_extract to new DEP parsing