Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
LI - Lawful Interception
Trial
Commits
9ea2ce54
Commit
9ea2ce54
authored
Oct 22, 2021
by
canterburym
Browse files
Updating testing
parent
bed002e1
Changes
2
Hide whitespace changes
Inline
Side-by-side
testing/check_xsd.py
View file @
9ea2ce54
...
...
@@ -11,7 +11,6 @@ from lxml import etree
from
xml.etree.ElementTree
import
ParseError
from
xmlschema
import
XMLSchema
,
XMLSchemaParseError
def
BuildSchemaDictonary
(
fileList
):
if
len
(
fileList
)
==
0
:
logging
.
info
(
"No schema files provided"
)
...
...
@@ -22,7 +21,7 @@ def BuildSchemaDictonary (fileList):
for
schemaFile
in
fileList
:
try
:
xs
=
XMLSchema
(
schemaFile
,
validation
=
'skip'
)
schemaLocations
.
append
((
xs
.
defaul
t_namespace
,
str
(
Path
(
schemaFile
).
resolve
())))
schemaLocations
.
append
((
xs
.
targe
t_namespace
,
str
(
Path
(
schemaFile
).
resolve
())))
logging
.
info
(
" [ {0} -> {1} ]"
.
format
(
xs
.
default_namespace
,
schemaFile
))
except
ParseError
as
ex
:
logging
.
warning
(
" [ {0} failed to parse: {1} ]"
.
format
(
schemaFile
,
ex
))
...
...
@@ -53,6 +52,7 @@ def ValidateXSDFiles (fileList):
schemaLocations
=
BuildSchemaDictonary
(
fileList
)
errors
=
{}
schemaDictionary
=
{}
logging
.
info
(
"Schema validation:"
)
for
schemaFile
in
fileList
:
...
...
@@ -60,6 +60,7 @@ def ValidateXSDFiles (fileList):
schema
=
XMLSchema
(
schemaFile
,
locations
=
schemaLocations
)
logging
.
info
(
schemaFile
+
": OK"
)
errors
[
schemaFile
]
=
[]
schemaDictionary
[
schema
.
target_namespace
]
=
schema
except
XMLSchemaParseError
as
ex
:
if
(
ex
.
schema_url
)
and
(
ex
.
schema_url
!=
ex
.
origin_url
):
logging
.
info
(
" Error {1} comes from {0}, suppressing"
.
format
(
ex
.
schema_url
,
ex
.
message
))
...
...
@@ -67,7 +68,7 @@ def ValidateXSDFiles (fileList):
else
:
logging
.
warning
(
schemaFile
+
": Failed validation ({0})"
.
format
(
ex
))
errors
[
schemaFile
]
=
[
ex
.
message
]
return
errors
return
errors
,
schemaDictionary
def
ValidateInstanceDocuments
(
coreFile
,
supportingSchemas
,
instanceDocs
):
...
...
@@ -102,6 +103,7 @@ if __name__ == '__main__':
logging
.
debug
(
f
"Path:
{
args
.
input
}
"
)
includeFileList
=
[]
includeInstanceDocList
=
[]
for
path
in
args
.
input
[
0
]:
p
=
Path
(
path
)
if
not
p
.
exists
():
...
...
@@ -112,9 +114,17 @@ if __name__ == '__main__':
for
g
in
glob
.
glob
(
os
.
path
.
join
(
str
(
p
),
"*.xsd"
)):
logging
.
info
(
f
">Including
{
g
}
"
)
includeFileList
.
append
(
g
)
for
g
in
glob
.
glob
(
os
.
path
.
join
(
str
(
p
),
"*.xml"
)):
logging
.
info
(
f
">Including instance doc
{
g
}
"
)
includeInstanceDocList
.
append
(
g
)
else
:
logging
.
info
(
f
"Including
{
p
.
absolute
()
}
"
)
includeFileList
.
append
(
p
.
absolute
())
if
str
(
p
.
absolute
()).
endswith
(
'.xml'
):
includeInstanceDocList
.
append
(
p
.
absolute
())
elif
str
(
p
.
absolute
()).
endswith
(
'.xml'
):
includeFileList
.
append
(
p
.
absolute
())
else
:
logging
.
warning
(
f
'Ignoring file
{
p
.
absolute
()
}
'
)
syntaxErrors
=
0
...
...
@@ -133,7 +143,7 @@ if __name__ == '__main__':
print
(
f
"
{
syntaxErrors
}
syntax errors detected"
)
exit
(
syntaxErrors
)
results
=
ValidateXSDFiles
(
includeFileList
)
results
,
schemaDict
=
ValidateXSDFiles
(
includeFileList
)
print
(
"XSD build checks:"
)
print
(
"-----------------------------"
)
...
...
@@ -152,4 +162,13 @@ if __name__ == '__main__':
print
(
"-----------------------------"
)
print
(
f
"
{
errorCount
}
build errors detected"
)
exit
(
errorCount
)
\ No newline at end of file
if
(
errorCount
>
0
):
exit
(
errorCount
)
print
(
"Instance document checks"
)
print
(
"-----------------------------"
)
errorCount
=
0
for
instanceDoc
in
includeInstanceDocList
:
print
(
f
"
{
instanceDoc
:}
"
)
testing/deps/xmldsig/xmldsig-core-schema.xsd
0 → 100644
View file @
9ea2ce54
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE schema
PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "http://www.w3.org/2001/XMLSchema.dtd"
[
<!ATTLIST schema
xmlns:ds CDATA #FIXED "http://www.w3.org/2000/09/xmldsig#">
<!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'>
<!ENTITY % p ''>
<!ENTITY % s ''>
]>
<!-- Schema for XML Signatures
http://www.w3.org/2000/09/xmldsig#
$Revision: 1.1 $ on $Date: 2002/02/08 20:32:26 $ by $Author: reagle $
Copyright 2001 The Internet Society and W3C (Massachusetts Institute
of Technology, Institut National de Recherche en Informatique et en
Automatique, Keio University). All Rights Reserved.
http://www.w3.org/Consortium/Legal/
This document is governed by the W3C Software License [1] as described
in the FAQ [2].
[1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
[2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
-->
<schema
xmlns=
"http://www.w3.org/2001/XMLSchema"
xmlns:ds=
"http://www.w3.org/2000/09/xmldsig#"
targetNamespace=
"http://www.w3.org/2000/09/xmldsig#"
version=
"0.1"
elementFormDefault=
"qualified"
>
<!-- Basic Types Defined for Signatures -->
<simpleType
name=
"CryptoBinary"
>
<restriction
base=
"base64Binary"
>
</restriction>
</simpleType>
<!-- Start Signature -->
<element
name=
"Signature"
type=
"ds:SignatureType"
/>
<complexType
name=
"SignatureType"
>
<sequence>
<element
ref=
"ds:SignedInfo"
/>
<element
ref=
"ds:SignatureValue"
/>
<element
ref=
"ds:KeyInfo"
minOccurs=
"0"
/>
<element
ref=
"ds:Object"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
</sequence>
<attribute
name=
"Id"
type=
"ID"
use=
"optional"
/>
</complexType>
<element
name=
"SignatureValue"
type=
"ds:SignatureValueType"
/>
<complexType
name=
"SignatureValueType"
>
<simpleContent>
<extension
base=
"base64Binary"
>
<attribute
name=
"Id"
type=
"ID"
use=
"optional"
/>
</extension>
</simpleContent>
</complexType>
<!-- Start SignedInfo -->
<element
name=
"SignedInfo"
type=
"ds:SignedInfoType"
/>
<complexType
name=
"SignedInfoType"
>
<sequence>
<element
ref=
"ds:CanonicalizationMethod"
/>
<element
ref=
"ds:SignatureMethod"
/>
<element
ref=
"ds:Reference"
maxOccurs=
"unbounded"
/>
</sequence>
<attribute
name=
"Id"
type=
"ID"
use=
"optional"
/>
</complexType>
<element
name=
"CanonicalizationMethod"
type=
"ds:CanonicalizationMethodType"
/>
<complexType
name=
"CanonicalizationMethodType"
mixed=
"true"
>
<sequence>
<any
namespace=
"##any"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<!-- (0,unbounded) elements from (1,1) namespace -->
</sequence>
<attribute
name=
"Algorithm"
type=
"anyURI"
use=
"required"
/>
</complexType>
<element
name=
"SignatureMethod"
type=
"ds:SignatureMethodType"
/>
<complexType
name=
"SignatureMethodType"
mixed=
"true"
>
<sequence>
<element
name=
"HMACOutputLength"
minOccurs=
"0"
type=
"ds:HMACOutputLengthType"
/>
<any
namespace=
"##other"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
<!-- (0,unbounded) elements from (1,1) external namespace -->
</sequence>
<attribute
name=
"Algorithm"
type=
"anyURI"
use=
"required"
/>
</complexType>
<!-- Start Reference -->
<element
name=
"Reference"
type=
"ds:ReferenceType"
/>
<complexType
name=
"ReferenceType"
>
<sequence>
<element
ref=
"ds:Transforms"
minOccurs=
"0"
/>
<element
ref=
"ds:DigestMethod"
/>
<element
ref=
"ds:DigestValue"
/>
</sequence>
<attribute
name=
"Id"
type=
"ID"
use=
"optional"
/>
<attribute
name=
"URI"
type=
"anyURI"
use=
"optional"
/>
<attribute
name=
"Type"
type=
"anyURI"
use=
"optional"
/>
</complexType>
<element
name=
"Transforms"
type=
"ds:TransformsType"
/>
<complexType
name=
"TransformsType"
>
<sequence>
<element
ref=
"ds:Transform"
maxOccurs=
"unbounded"
/>
</sequence>
</complexType>
<element
name=
"Transform"
type=
"ds:TransformType"
/>
<complexType
name=
"TransformType"
mixed=
"true"
>
<choice
minOccurs=
"0"
maxOccurs=
"unbounded"
>
<any
namespace=
"##other"
processContents=
"lax"
/>
<!-- (1,1) elements from (0,unbounded) namespaces -->
<element
name=
"XPath"
type=
"string"
/>
</choice>
<attribute
name=
"Algorithm"
type=
"anyURI"
use=
"required"
/>
</complexType>
<!-- End Reference -->
<element
name=
"DigestMethod"
type=
"ds:DigestMethodType"
/>
<complexType
name=
"DigestMethodType"
mixed=
"true"
>
<sequence>
<any
namespace=
"##other"
processContents=
"lax"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
</sequence>
<attribute
name=
"Algorithm"
type=
"anyURI"
use=
"required"
/>
</complexType>
<element
name=
"DigestValue"
type=
"ds:DigestValueType"
/>
<simpleType
name=
"DigestValueType"
>
<restriction
base=
"base64Binary"
/>
</simpleType>
<!-- End SignedInfo -->
<!-- Start KeyInfo -->
<element
name=
"KeyInfo"
type=
"ds:KeyInfoType"
/>
<complexType
name=
"KeyInfoType"
mixed=
"true"
>
<choice
maxOccurs=
"unbounded"
>
<element
ref=
"ds:KeyName"
/>
<element
ref=
"ds:KeyValue"
/>
<element
ref=
"ds:RetrievalMethod"
/>
<element
ref=
"ds:X509Data"
/>
<element
ref=
"ds:PGPData"
/>
<element
ref=
"ds:SPKIData"
/>
<element
ref=
"ds:MgmtData"
/>
<any
processContents=
"lax"
namespace=
"##other"
/>
<!-- (1,1) elements from (0,unbounded) namespaces -->
</choice>
<attribute
name=
"Id"
type=
"ID"
use=
"optional"
/>
</complexType>
<element
name=
"KeyName"
type=
"string"
/>
<element
name=
"MgmtData"
type=
"string"
/>
<element
name=
"KeyValue"
type=
"ds:KeyValueType"
/>
<complexType
name=
"KeyValueType"
mixed=
"true"
>
<choice>
<element
ref=
"ds:DSAKeyValue"
/>
<element
ref=
"ds:RSAKeyValue"
/>
<any
namespace=
"##other"
processContents=
"lax"
/>
</choice>
</complexType>
<element
name=
"RetrievalMethod"
type=
"ds:RetrievalMethodType"
/>
<complexType
name=
"RetrievalMethodType"
>
<sequence>
<element
ref=
"ds:Transforms"
minOccurs=
"0"
/>
</sequence>
<attribute
name=
"URI"
type=
"anyURI"
/>
<attribute
name=
"Type"
type=
"anyURI"
use=
"optional"
/>
</complexType>
<!-- Start X509Data -->
<element
name=
"X509Data"
type=
"ds:X509DataType"
/>
<complexType
name=
"X509DataType"
>
<sequence
maxOccurs=
"unbounded"
>
<choice>
<element
name=
"X509IssuerSerial"
type=
"ds:X509IssuerSerialType"
/>
<element
name=
"X509SKI"
type=
"base64Binary"
/>
<element
name=
"X509SubjectName"
type=
"string"
/>
<element
name=
"X509Certificate"
type=
"base64Binary"
/>
<element
name=
"X509CRL"
type=
"base64Binary"
/>
<any
namespace=
"##other"
processContents=
"lax"
/>
</choice>
</sequence>
</complexType>
<complexType
name=
"X509IssuerSerialType"
>
<sequence>
<element
name=
"X509IssuerName"
type=
"string"
/>
<element
name=
"X509SerialNumber"
type=
"integer"
/>
</sequence>
</complexType>
<!-- End X509Data -->
<!-- Begin PGPData -->
<element
name=
"PGPData"
type=
"ds:PGPDataType"
/>
<complexType
name=
"PGPDataType"
>
<choice>
<sequence>
<element
name=
"PGPKeyID"
type=
"base64Binary"
/>
<element
name=
"PGPKeyPacket"
type=
"base64Binary"
minOccurs=
"0"
/>
<any
namespace=
"##other"
processContents=
"lax"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
</sequence>
<sequence>
<element
name=
"PGPKeyPacket"
type=
"base64Binary"
/>
<any
namespace=
"##other"
processContents=
"lax"
minOccurs=
"0"
maxOccurs=
"unbounded"
/>
</sequence>
</choice>
</complexType>
<!-- End PGPData -->
<!-- Begin SPKIData -->
<element
name=
"SPKIData"
type=
"ds:SPKIDataType"
/>
<complexType
name=
"SPKIDataType"
>
<sequence
maxOccurs=
"unbounded"
>
<element
name=
"SPKISexp"
type=
"base64Binary"
/>
<any
namespace=
"##other"
processContents=
"lax"
minOccurs=
"0"
/>
</sequence>
</complexType>
<!-- End SPKIData -->
<!-- End KeyInfo -->
<!-- Start Object (Manifest, SignatureProperty) -->
<element
name=
"Object"
type=
"ds:ObjectType"
/>
<complexType
name=
"ObjectType"
mixed=
"true"
>
<sequence
minOccurs=
"0"
maxOccurs=
"unbounded"
>
<any
namespace=
"##any"
processContents=
"lax"
/>
</sequence>
<attribute
name=
"Id"
type=
"ID"
use=
"optional"
/>
<attribute
name=
"MimeType"
type=
"string"
use=
"optional"
/>
<!-- add a grep facet -->
<attribute
name=
"Encoding"
type=
"anyURI"
use=
"optional"
/>
</complexType>
<element
name=
"Manifest"
type=
"ds:ManifestType"
/>
<complexType
name=
"ManifestType"
>
<sequence>
<element
ref=
"ds:Reference"
maxOccurs=
"unbounded"
/>
</sequence>
<attribute
name=
"Id"
type=
"ID"
use=
"optional"
/>
</complexType>
<element
name=
"SignatureProperties"
type=
"ds:SignaturePropertiesType"
/>
<complexType
name=
"SignaturePropertiesType"
>
<sequence>
<element
ref=
"ds:SignatureProperty"
maxOccurs=
"unbounded"
/>
</sequence>
<attribute
name=
"Id"
type=
"ID"
use=
"optional"
/>
</complexType>
<element
name=
"SignatureProperty"
type=
"ds:SignaturePropertyType"
/>
<complexType
name=
"SignaturePropertyType"
mixed=
"true"
>
<choice
maxOccurs=
"unbounded"
>
<any
namespace=
"##other"
processContents=
"lax"
/>
<!-- (1,1) elements from (1,unbounded) namespaces -->
</choice>
<attribute
name=
"Target"
type=
"anyURI"
use=
"required"
/>
<attribute
name=
"Id"
type=
"ID"
use=
"optional"
/>
</complexType>
<!-- End Object (Manifest, SignatureProperty) -->
<!-- Start Algorithm Parameters -->
<simpleType
name=
"HMACOutputLengthType"
>
<restriction
base=
"integer"
/>
</simpleType>
<!-- Start KeyValue Element-types -->
<element
name=
"DSAKeyValue"
type=
"ds:DSAKeyValueType"
/>
<complexType
name=
"DSAKeyValueType"
>
<sequence>
<sequence
minOccurs=
"0"
>
<element
name=
"P"
type=
"ds:CryptoBinary"
/>
<element
name=
"Q"
type=
"ds:CryptoBinary"
/>
</sequence>
<element
name=
"G"
type=
"ds:CryptoBinary"
minOccurs=
"0"
/>
<element
name=
"Y"
type=
"ds:CryptoBinary"
/>
<element
name=
"J"
type=
"ds:CryptoBinary"
minOccurs=
"0"
/>
<sequence
minOccurs=
"0"
>
<element
name=
"Seed"
type=
"ds:CryptoBinary"
/>
<element
name=
"PgenCounter"
type=
"ds:CryptoBinary"
/>
</sequence>
</sequence>
</complexType>
<element
name=
"RSAKeyValue"
type=
"ds:RSAKeyValueType"
/>
<complexType
name=
"RSAKeyValueType"
>
<sequence>
<element
name=
"Modulus"
type=
"ds:CryptoBinary"
/>
<element
name=
"Exponent"
type=
"ds:CryptoBinary"
/>
</sequence>
</complexType>
<!-- End KeyValue Element-types -->
<!-- End Signature -->
</schema>
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment