Skip to content

Commit 9c0650a

Browse files
committed
cmdline flag for setting position of sig element
1 parent 8e71130 commit 9c0650a

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

src/xmlsec/tools.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
-k|--key <keyspec>
66
[-c|--cert <certspec>]
77
[-o|--output <output>]
8+
[-p|--pos <signature element position>]
89
[<xml-file to be signed>]
910
"""
1011

@@ -31,7 +32,7 @@ def sign_cmd():
3132
opts = None
3233
args = None
3334
try:
34-
opts, args = getopt.getopt(sys.argv[1:], 'hk:c:o:r:',
35+
opts, args = getopt.getopt(sys.argv[1:], 'hk:c:o:r:p:',
3536
['help',
3637
'key=',
3738
'cert=',
@@ -40,7 +41,8 @@ def sign_cmd():
4041
'output=',
4142
'loglevel=',
4243
'logfile=',
43-
'reference='])
44+
'reference=',
45+
'pos='])
4446
except getopt.error as msg:
4547
print(msg)
4648
print(__doc__)
@@ -53,6 +55,7 @@ def sign_cmd():
5355
loglevel = logging.WARN
5456
logfile = None
5557
do_xinclude = False
58+
insert_index = 0
5659
for o, a in opts:
5760
if o in ('-h', '--help'):
5861
print(__doc__)
@@ -76,6 +79,8 @@ def sign_cmd():
7679
raise ValueError('Invalid log level: %s' % a)
7780
elif o in '--logfile':
7881
logfile = a
82+
elif o in ('-p','--pos'):
83+
insert_index = int(a)
7984

8085
log_args = {'level': loglevel}
8186
if logfile is not None:
@@ -101,13 +106,13 @@ def _resolve_reference_uri(ref, t): # can probably be improved a bit
101106
if do_xinclude:
102107
t.xinclude()
103108
reference_uri = _resolve_reference_uri(reference, t)
104-
signed = sign(t, keyspec, certspec, reference_uri=reference_uri)
109+
signed = sign(t, keyspec, certspec, reference_uri=reference_uri, insert_index=insert_index)
105110
if signed:
106111
serialize(signed, stream=output)
107112
else:
108113
t = etree.parse(sys.stdin)
109114
reference_uri = _resolve_reference_uri(reference, t)
110-
signed = sign(t, keyspec, certspec, reference_uri=reference_uri)
115+
signed = sign(t, keyspec, certspec, reference_uri=reference_uri, insert_index=insert_index)
111116
if signed:
112117
serialize(signed, stream=output)
113118

0 commit comments

Comments
 (0)