77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
import sys
 | 
						|
from saml2.sigver import _get_xmlsec_cryptobackend, SecurityContext
 | 
						|
from saml2.httpbase import HTTPBase
 | 
						|
 | 
						|
from saml2 import saml
 | 
						|
from saml2 import md
 | 
						|
from saml2.attribute_converter import ac_factory
 | 
						|
from saml2.extension import dri
 | 
						|
from saml2.extension import idpdisc
 | 
						|
from saml2.extension import mdattr
 | 
						|
from saml2.extension import mdrpi
 | 
						|
from saml2.extension import mdui
 | 
						|
from saml2.extension import shibmd
 | 
						|
from saml2.extension import ui
 | 
						|
import xmldsig
 | 
						|
import xmlenc
 | 
						|
 | 
						|
import argparse
 | 
						|
 | 
						|
from saml2.mdstore import MetaDataFile, MetaDataExtern
 | 
						|
 | 
						|
__author__ = 'rolandh'
 | 
						|
 | 
						|
"""
 | 
						|
A script that imports and verifies metadata and then dumps it in a basic
 | 
						|
dictionary format.
 | 
						|
"""
 | 
						|
 | 
						|
 | 
						|
ONTS = {
 | 
						|
    saml.NAMESPACE: saml,
 | 
						|
    mdui.NAMESPACE: mdui,
 | 
						|
    mdattr.NAMESPACE: mdattr,
 | 
						|
    mdrpi.NAMESPACE: mdrpi,
 | 
						|
    dri.NAMESPACE: dri,
 | 
						|
    ui.NAMESPACE: ui,
 | 
						|
    idpdisc.NAMESPACE: idpdisc,
 | 
						|
    md.NAMESPACE: md,
 | 
						|
    xmldsig.NAMESPACE: xmldsig,
 | 
						|
    xmlenc.NAMESPACE: xmlenc,
 | 
						|
    shibmd.NAMESPACE: shibmd
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
parser = argparse.ArgumentParser()
 | 
						|
parser.add_argument('-t', dest='type')
 | 
						|
parser.add_argument('-u', dest='url')
 | 
						|
parser.add_argument('-c', dest='cert')
 | 
						|
parser.add_argument('-a', dest='attrsmap')
 | 
						|
parser.add_argument('-o', dest='output')
 | 
						|
parser.add_argument(dest="item")
 | 
						|
args = parser.parse_args()
 | 
						|
 | 
						|
 | 
						|
metad = None
 | 
						|
 | 
						|
if args.type == "local":
 | 
						|
    metad = MetaDataFile(ONTS.values(), args.item, args.item)
 | 
						|
elif args.type == "external":
 | 
						|
    ATTRCONV = ac_factory(args.attrsmap)
 | 
						|
    httpc = HTTPBase()
 | 
						|
    crypto = _get_xmlsec_cryptobackend("/opt/local/bin/xmlsec1")
 | 
						|
    sc = SecurityContext(crypto)
 | 
						|
    metad = MetaDataExtern(ONTS.values(), ATTRCONV, args.url,
 | 
						|
                           sc, cert=args.cert, http=httpc)
 | 
						|
 | 
						|
if metad:
 | 
						|
    metad.load()
 | 
						|
    txt = metad.dumps()
 | 
						|
    if args.output:
 | 
						|
        f = open(args.output, "w")
 | 
						|
        f.write(txt)
 | 
						|
        f.close()
 | 
						|
    else:
 | 
						|
        print txt
 |