Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Trial
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
LI - Lawful Interception
Trial
Commits
111f14a0
Commit
111f14a0
authored
3 years ago
by
canterburym
Browse files
Options
Downloads
Patches
Plain Diff
Updating testing
parent
e56de57f
No related branches found
No related tags found
1 merge request
!55
Cleanup/ts103120
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
testing/check_xsd.py
+25
-6
25 additions, 6 deletions
testing/check_xsd.py
testing/deps/xmldsig/xmldsig-core-schema.xsd
+318
-0
318 additions, 0 deletions
testing/deps/xmldsig/xmldsig-core-schema.xsd
with
343 additions
and
6 deletions
testing/check_xsd.py
+
25
−
6
View file @
111f14a0
...
...
@@ -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
:}
"
)
This diff is collapsed.
Click to expand it.
testing/deps/xmldsig/xmldsig-core-schema.xsd
0 → 100644
+
318
−
0
View file @
111f14a0
<?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>
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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!
Save comment
Cancel
Please
register
or
sign in
to comment