9 changed files with 11537 additions and 38 deletions
-
1126pynfe/data/XSDs/NFS-e/nfse_v202.xsd
-
316pynfe/data/XSDs/NFS-e/xmldsig-core-schema20020212.xsd
-
1pynfe/entidades/servico.py
-
11pynfe/processamento/assinatura.py
-
78pynfe/processamento/serializacao.py
-
18pynfe/processamento/validacao.py
-
2211pynfe/utils/_dsig.py
-
7780pynfe/utils/nfse_v202.py
-
8tests/valida.py
1126
pynfe/data/XSDs/NFS-e/nfse_v202.xsd
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,316 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<!-- Schema for XML Signatures |
|||
http://www.w3.org/2000/09/xmldsig# |
|||
$Revision: 1.7 $ on $Date: 2007/09/20 19:06:50 $ by $Author: p052373 $ |
|||
|
|||
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 |
|||
--> |
|||
|
|||
<!-- |
|||
|
|||
Download em 23/02/2007 |
|||
Link: |
|||
http://www.w3.org/TR/xmldsig-core/#sec-Schema |
|||
http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd |
|||
|
|||
--> |
|||
|
|||
<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> |
|||
2211
pynfe/utils/_dsig.py
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
7780
pynfe/utils/nfse_v202.py
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,8 @@ |
|||
from lxml import etree |
|||
|
|||
xmlschema_doc = etree.parse('nfse_v202.xsd') |
|||
xmlschema = etree.XMLSchema(xmlschema_doc) |
|||
|
|||
xml = etree.parse('testef.xml') |
|||
print(xmlschema.validate(xml)) |
|||
xmlschema.assertValid(xml) |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue