git://git.onelab.eu
/
sfa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
do not depend on types.StringTypes anymore
[sfa.git]
/
sfa
/
trust
/
credential.py
diff --git
a/sfa/trust/credential.py
b/sfa/trust/credential.py
index
3f658fb
..
f03e135
100644
(file)
--- a/
sfa/trust/credential.py
+++ b/
sfa/trust/credential.py
@@
-26,14
+26,17
@@
# Credentials are signed XML files that assign a subject gid privileges to an object gid
##
# Credentials are signed XML files that assign a subject gid privileges to an object gid
##
+from __future__ import print_function
+
import os, os.path
import subprocess
import os, os.path
import subprocess
-from types import StringTypes
import datetime
from StringIO import StringIO
from tempfile import mkstemp
from xml.dom.minidom import Document, parseString
import datetime
from StringIO import StringIO
from tempfile import mkstemp
from xml.dom.minidom import Document, parseString
+from sfa.util.py23 import StringType
+
HAVELXML = False
try:
from lxml import etree
HAVELXML = False
try:
from lxml import etree
@@
-181,21
+184,27
@@
class Signature(object):
self.gid = gid
def decode(self):
self.gid = gid
def decode(self):
+ # Helper function to pull characters off the front of a string if present
+ def remove_prefix(text, prefix):
+ if text and prefix and text.startswith(prefix):
+ return text[len(prefix):]
+ return text
+
try:
doc = parseString(self.xml)
try:
doc = parseString(self.xml)
- except ExpatError
,
e:
+ except ExpatError
as
e:
logger.log_exc ("Failed to parse credential, %s"%self.xml)
raise
sig = doc.getElementsByTagName("Signature")[0]
## This code until the end of function rewritten by Aaron Helsinger
logger.log_exc ("Failed to parse credential, %s"%self.xml)
raise
sig = doc.getElementsByTagName("Signature")[0]
## This code until the end of function rewritten by Aaron Helsinger
- ref_id =
sig.getAttribute("xml:id").strip().strip(
"Sig_")
+ ref_id =
remove_prefix(sig.getAttribute("xml:id").strip(),
"Sig_")
# The xml:id tag is optional, and could be in a
# Reference xml:id or Reference UID sub element instead
if not ref_id or ref_id == '':
reference = sig.getElementsByTagName('Reference')[0]
# The xml:id tag is optional, and could be in a
# Reference xml:id or Reference UID sub element instead
if not ref_id or ref_id == '':
reference = sig.getElementsByTagName('Reference')[0]
- ref_id = re
ference.getAttribute('xml:id').strip().strip('Sig_'
)
+ ref_id = re
move_prefix(reference.getAttribute('xml:id').strip(), "Sig_"
)
if not ref_id or ref_id == '':
if not ref_id or ref_id == '':
- ref_id = re
ference.getAttribute('URI').strip().strip('#'
)
+ ref_id = re
move_prefix(reference.getAttribute('URI').strip(), "#"
)
self.set_refid(ref_id)
keyinfos = sig.getElementsByTagName("X509Data")
gids = None
self.set_refid(ref_id)
keyinfos = sig.getElementsByTagName("X509Data")
gids = None
@@
-277,7
+286,7
@@
class Credential(object):
self.version = None
if cred:
self.version = None
if cred:
- if isinstance(cred, StringType
s
):
+ if isinstance(cred, StringType):
string = cred
self.type = Credential.SFA_CREDENTIAL_TYPE
self.version = '3'
string = cred
self.type = Credential.SFA_CREDENTIAL_TYPE
self.version = '3'
@@
-293,7
+302,7
@@
class Credential(object):
str = file(filename).read()
# if this is a legacy credential, write error and bail out
str = file(filename).read()
# if this is a legacy credential, write error and bail out
- if isinstance (str, StringType
s
) and str.strip().startswith("-----"):
+ if isinstance (str, StringType) and str.strip().startswith("-----"):
logger.error("Legacy credentials not supported any more - giving up with %s..."%str[:10])
return
else:
logger.error("Legacy credentials not supported any more - giving up with %s..."%str[:10])
return
else:
@@
-722,7
+731,7
@@
class Credential(object):
doc = None
try:
doc = parseString(self.xml)
doc = None
try:
doc = parseString(self.xml)
- except ExpatError
,
e:
+ except ExpatError
as
e:
raise CredentialNotVerifiable("Malformed credential")
doc = parseString(self.xml)
sigs = []
raise CredentialNotVerifiable("Malformed credential")
doc = parseString(self.xml)
sigs = []
@@
-852,7
+861,7
@@
class Credential(object):
# or non PEM files
trusted_cert_objects.append(GID(filename=f))
ok_trusted_certs.append(f)
# or non PEM files
trusted_cert_objects.append(GID(filename=f))
ok_trusted_certs.append(f)
- except Exception
,
exc:
+ except Exception
as
exc:
logger.error("Failed to load trusted cert from %s: %r"%( f, exc))
trusted_certs = ok_trusted_certs
logger.error("Failed to load trusted cert from %s: %r"%( f, exc))
trusted_certs = ok_trusted_certs
@@
-1148,7
+1157,7
@@
class Credential(object):
#
# @param dump_parents If true, also dump the parent certificates
def dump (self, *args, **kwargs):
#
# @param dump_parents If true, also dump the parent certificates
def dump (self, *args, **kwargs):
- print
self.dump_string(*args, **kwargs
)
+ print
(self.dump_string(*args, **kwargs)
)
# SFA code ignores show_xml and disables printing the cred xml
def dump_string(self, dump_parents=False, show_xml=False):
# SFA code ignores show_xml and disables printing the cred xml
def dump_string(self, dump_parents=False, show_xml=False):
@@
-1191,7
+1200,7
@@
class Credential(object):
result += "\nEnd XML\n"
except:
import traceback
result += "\nEnd XML\n"
except:
import traceback
- print
"exc. Credential.dump_string / XML"
+ print
("exc. Credential.dump_string / XML")
traceback.print_exc()
return result
traceback.print_exc()
return result