Skip to content

Commit

Permalink
v0.9.0
Browse files Browse the repository at this point in the history
* feat: Added CIE private/public SP (experimental)
* fix: metadata unit tests CMD
* chore: signed test metadata - needed for fixing unit test CMD
  • Loading branch information
peppelinux committed Jul 10, 2021
1 parent e9d624b commit 707d66b
Show file tree
Hide file tree
Showing 18 changed files with 782 additions and 123 deletions.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def readme():

setup(
name='spid_sp_test',
version='0.8.3',
version='0.9.0',
description="SAML2 SPID Service Provider validation tool that can be run from the command line",
long_description=readme(),
long_description_content_type='text/markdown',
Expand Down
7 changes: 7 additions & 0 deletions src/spid_sp_test/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,13 @@
'domicileNation'
]

CIE_ATTRIBUTES = [
'dateOfBirth',
'familyName',
'fiscalNumber',
'name'
]

SPID_LEVELS = [
'https://www.spid.gov.it/SpidL1',
'https://www.spid.gov.it/SpidL2',
Expand Down
30 changes: 28 additions & 2 deletions src/spid_sp_test/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -508,7 +508,8 @@ def test_AttributeConsumingService(self):
return self.is_ok(f'{self.__class__.__name__}.test_AttributeConsumingService')


def test_AttributeConsumingService_SPID(self):
def test_AttributeConsumingService_SPID(
self, allowed_attributes=constants.SPID_ATTRIBUTES):
acss = self.doc.xpath('//EntityDescriptor/SPSSODescriptor'
'/AttributeConsumingService')

Expand Down Expand Up @@ -556,7 +557,7 @@ def test_AttributeConsumingService_SPID(self):

self._assertIn(
ra.get('Name'),
constants.SPID_ATTRIBUTES,
allowed_attributes,
f'The "{ra.attrib.values()[0]}" attribute in RequestedAttribute element MUST be valid',
description = f"one of [{', '.join(constants.SPID_ATTRIBUTES)}] - TR pag. 20 and AV n.6"
)
Expand Down Expand Up @@ -792,3 +793,28 @@ def test_profile_spid_op_public_lite(self):
ext_types = ["//ContactPerson/Extensions/PublicServicesLightOperator"],
must=True
)

def test_profile_cie_sp(self):
self.test_profile_saml2core()
self.test_SPSSODescriptor_SPID()
self.test_contactperson_email()
self.test_AttributeConsumingService_SPID(
allowed_attributes = constants.CIE_ATTRIBUTES
)
# TODO: ask the validation xsd to IPZS :)
# self.xsd_check(xsds_files = [

def test_profile_cie_sp_public(self):
self.test_profile_cie_sp()
self.test_extensions_public_private(
ext_type="Public", contact_type='administrative')
self.test_Contacts_PubPriv(contact_type='administrative')
self.test_extensions_cie(ext_type="Public")

def test_profile_cie_sp_private(self):
self.test_profile_cie_sp()
self.test_extensions_public_private(
ext_type="Private", contact_type='technical')
self.test_Contacts_PubPriv(contact_type='administrative')
self.test_Contacts_PubPriv(contact_type='technical')
self.test_extensions_cie(ext_type="Private")
59 changes: 49 additions & 10 deletions src/spid_sp_test/metadata_public.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
class SpidSpMetadataCheckPublic(object):

def test_Contacts_PubPriv(self, contact_type="other"):
entity_desc = self.doc.xpath('//ContactPerson')
entity_desc = self.doc.xpath(f'//ContactPerson[@contactType="{contact_type}"]')
self._assertTrue(entity_desc, 'ContactPerson MUST be present')

if entity_desc:
Expand All @@ -23,17 +23,14 @@ def test_Contacts_PubPriv(self, contact_type="other"):
'The contactType attribute MUST have a value - TR pag. 19'
)
self._assertTrue(
entity_desc[0].get('contactType') == 'other',
'The contactType must be "other" - TR pag. 19',
entity_desc[0].get('contactType') == contact_type,
f'The contactType must be "{contact_type}" - TR pag. 19',
description = entity_desc[0].get('contactType')
)

others = self.doc.xpath(
f'//ContactPerson[@contactType="{contact_type}"]')
self._assertTrue(
len(others) == 1,
len(entity_desc) == 1,
f'Only one ContactPerson element of contactType "{contact_type}" MUST be present',
description = others
)

return self.is_ok(f'{self.__class__.__name__}.test_Contacts_PubPriv')
Expand Down Expand Up @@ -144,14 +141,18 @@ def test_Contacts_IPACode(self):

return self.is_ok(f'{self.__class__.__name__}.test_Contacts_IPACode')

def test_extensions_public_private(self, ext_type="Public"):
def test_extensions_public_private(
self, ext_type="Public", contact_type='other'):
ext_type_not = "Private" if ext_type == "Public" else "Public"

# only if other, billing doesn't have any Private element in it!
ctype = self.doc.xpath(f'//ContactPerson[@contactType="other"]/Extensions/{ext_type.title()}')
ctype = self.doc.xpath(
f'//ContactPerson[@contactType="{contact_type}"]/Extensions/{ext_type.title()}'
)
self._assertTrue(
ctype,
f'Missing ContactPerson/Extensions/{ext_type.title()}, this element MUST be present',
f'Missing ContactPerson/Extensions/{ext_type.title()}, '
'this element MUST be present',
)
if ctype:
self._assertFalse(
Expand Down Expand Up @@ -200,3 +201,41 @@ def test_Contacts_VATFC(self, private=False):
)

return self.is_ok(f'{self.__class__.__name__}.test_Contacts_VATFC')

def test_extensions_cie(self, ext_type='Public'):

attrs = ['Municipality']

if ext_type == 'Private':
attrs.extend(
['VATNumber', 'NACE2Code', 'FiscalCode']
)
else:
attrs.extend(
['IPACode', ]
)

# the following elements MUST be present
for ele in attrs:
ctype = self.doc.xpath(
f'//ContactPerson/Extensions/{ele}'
)

self._assertTrue(
ctype,
f'{ele} element MUST be present',
)

# is <= because already protected with the previous check
self._assertTrue(
(len(ctype) <= 1),
f'only one {ele} element MUST be present',
)

if ctype:
self._assertTrue(
ctype[0].text,
f'The {ele} element MUST have a value',
)

return self.is_ok(f'{self.__class__.__name__}.test_extensions_cie')
4 changes: 3 additions & 1 deletion src/spid_sp_test/spid_sp_test
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,9 @@ if __name__ == '__main__':
'spid-sp-ag-public-full',
'spid-sp-ag-public-lite',
'spid-sp-op-public-full',
'spid-sp-op-public-lite'
'spid-sp-op-public-lite',
'cie-sp-public',
'cie-sp-private',
),
help="which profile to check"
)
Expand Down
41 changes: 31 additions & 10 deletions tests/metadata/private-sp.xml
Original file line number Diff line number Diff line change
@@ -1,21 +1,42 @@
<?xml version="1.0"?>
<md:EntityDescriptor
xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:spid="https://spid.gov.it/saml-extensions"
<md:EntityDescriptor
xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:spid="https://spid.gov.it/saml-extensions"
xmlns:fpa="https://spid.gov.it/invoicing-extensions" entityID="https://www.private-sp.it" ID="pfx0a6b5a21-af14-4b29-0a30-ded4a3b63840">

<ds:Signature Id="Signature1">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="#pfx0a6b5a21-af14-4b29-0a30-ded4a3b63840">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue />
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue />
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>MIIEGDCCAwCgAwIBAgIJAOrYj9oLEJCwMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAklUMQ4wDAYDVQQIEwVJdGFseTENMAsGA1UEBxMEUm9tZTENMAsGA1UEChMEQWdJRDESMBAGA1UECxMJQWdJRCBURVNUMRQwEgYDVQQDEwthZ2lkLmdvdi5pdDAeFw0xOTA0MTExMDAyMDhaFw0yNTAzMDgxMDAyMDhaMGUxCzAJBgNVBAYTAklUMQ4wDAYDVQQIEwVJdGFseTENMAsGA1UEBxMEUm9tZTENMAsGA1UEChMEQWdJRDESMBAGA1UECxMJQWdJRCBURVNUMRQwEgYDVQQDEwthZ2lkLmdvdi5pdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK8kJVo+ugRrbbv9xhXCuVrqi4B7/MQzQc62ocwlFFujJNd4m1mXkUHFbgvwhRkQqo2DAmFeHiwCkJT3K1eeXIFhNFFroEzGPzONyekLpjNvmYIs1CFvirGOj0bkEiGaKEs+/umzGjxIhy5JQlqXE96y1+Izp2QhJimDK0/KNij8I1bzxseP0Ygc4SFveKS+7QO+PrLzWklEWGMs4DM5Zc3VRK7g4LWPWZhKdImC1rnS+/lEmHSvHisdVp/DJtbSrZwSYTRvTTz5IZDSq4kAzrDfpj16h7b3t3nFGc8UoY2Ro4tRZ3ahJ2r3b79yK6C5phY7CAANuW3gDdhVjiBNYs0CAwEAAaOByjCBxzAdBgNVHQ4EFgQU3/7kV2tbdFtphbSA4LH7+w8SkcwwgZcGA1UdIwSBjzCBjIAU3/7kV2tbdFtphbSA4LH7+w8SkcyhaaRnMGUxCzAJBgNVBAYTAklUMQ4wDAYDVQQIEwVJdGFseTENMAsGA1UEBxMEUm9tZTENMAsGA1UEChMEQWdJRDESMBAGA1UECxMJQWdJRCBURVNUMRQwEgYDVQQDEwthZ2lkLmdvdi5pdIIJAOrYj9oLEJCwMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJNFqXg/V3aimJKUmUaqmQEEoSc3qvXFITvT5f5bKw9yk/NVhR6wndL+z/24h1OdRqs76blgH8k116qWNkkDtt0AlSjQOx5qvFYh1UviOjNdRI4WkYONSw+vuavcx+fB6O5JDHNmMhMySKTnmRqTkyhjrch7zaFIWUSV7hsBuxpqmrWDoLWdXbV3eFH3mINA5AoIY/m0bZtzZ7YNgiFWzxQgekpxd0vcTseMnCcXnsAlctdir0FoCZztxMuZjlBjwLTtM6Ry3/48LMM8Z+lw7NMciKLLTGQyU8XmKKSSOh0dGh5Lrlt5GxIIJkH81C0YimWebz8464QPL3RbLnTKg+c=</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>

<md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol" AuthnRequestsSigned="true" WantAssertionsSigned="true">
<md:KeyDescriptor use="signing">
<ds:KeyInfo
<ds:KeyInfo
xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIHgzCCBWugAwIBAgIIT5boMmgJZQQwDQYJKoZIhvcNAQENBQAwgcwxCzAJBgNV BAYTAklUMQ0wCwYDVQQHDARSb21lMSYwJAYDVQQKDB1BZ2VuemlhIHBlciBsJ0l0 YWxpYSBEaWdpdGFsZTEwMC4GA1UECwwnU2Vydml6aW8gQWNjcmVkaXRhbWVudG8g ZSBwcm9nZXR0byBTUElEMQ0wCwYDVQQDDARBZ0lEMSkwJwYJKoZIhvcNAQkBFhpw cm90b2NvbGxvQHBlYy5hZ2lkLmdvdi5pdDEaMBgGA1UEBRMRVkFUSVQtOTc3MzUw MjA1ODQwHhcNMjAwMjE4MDAwMDAwWhcNNDAwMjE3MjM1OTU5WjCB1TELMAkGA1UE BhMCSVQxDTALBgNVBAcMBFJvbWUxJjAkBgNVBAoMHUFnZW56aWEgcGVyIGwnSXRh bGlhIERpZ2l0YWxlMTAwLgYDVQQLDCdTZXJ2aXppbyBBY2NyZWRpdGFtZW50byBl IHByb2dldHRvIFNQSUQxFjAUBgNVBAMMDVByb2dldHRvIFNQSUQxKTAnBgkqhkiG 9w0BCQEWGnByb3RvY29sbG9AcGVjLmFnaWQuZ292Lml0MRowGAYDVQQFExFWQVRJ VC05NzczNTAyMDU4NDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJ/j 1bZoh23Q8o+lpy1irwJctv5y4hFDgsS5aDZZc/sLTrNFp+IDKusG5EgCPY97jpIR hh9JtZbc+W7qiyovPox4Jf6py24GfVKeubave4RGgHvZLrc5UmLumc0/JuBQ9NZY OmQ6V46wQxlojuwqjsuZUJq6J+rTWuNiRv4bHrbflrCPFoLpIf+XBxRruIC6ug+5 UF6I/iua/6iIb+vvwXvJWvtGYy52hqjgLN0HJ5BnZMjQ45iBQ7xEQVsiMh6xl5HL dPyaqYPj3QQgQ/VdRzUR4tXoYaQq71aYcroFra1fcIKu+wR2aiB2XPxcufJxX2yH ebDU8aC1GP6ibaTMAZx15O9Hv3caCAMZR0DhcdhTjGBYRgAwk0zwpQmmoMZ2kvz+ PfQ6GIEyiPg6N0EctoTzTpkL+eFqmFd+cDVAFtiaGyzdoUjWPKJCWYEqIUSnW3OW XoJrAQ5EknhOdkbH6sVr2MGfFEoaLe4H9Nt9ucvPnNWTAJ8zJeiWvknVoI5umNYO UWC1LXe/lsoQhbWNABpRiGcq1whXW+d45AKhjHef5naZyGN2ZZMuf32FoRjq2gXk GkK7Abx1cm6uu/rPdMTLKztVJdRglzQMp/ibbhZuFZO02jjL6XEOh4QQF2iqMQ8C 8aU9TFLbWz1iueuI3+7ML3lrIUs2AMV9o3/eNZSLAgMBAAGjggFcMIIBWDAMBgNV HRMBAf8EAjAAMB0GA1UdDgQWBBRPcCh3ZPMBNee968zNv4p5E+YXKzAfBgNVHSME GDAWgBSfx1tsJaanm4NepvvB/qN5O82PkTAOBgNVHQ8BAf8EBAMCBkAwQwYDVR0f BDwwOjA4oDagNIYyaHR0cHM6Ly93d3cvZWlkYXMuYWdpZC5nb3YuaXQvY3JsL2Ny bF9zdWJDQV9TQS5jcmwwgbIGA1UdIASBqjCBpzBMBgMrTBAwRTBDBggrBgEFBQcC ARY3aHR0cHM6Ly9laWRhcy5hZ2lkLmdvdi5pdC9jcHMvQWdJRF9lSURBU19yb290 Q0FfY3BzLnBkZjBXBgQrTBAEME8wTQYIKwYBBQUHAgIwQRo/R292ZXJubWVudCBw cm9qZWN0IFNpc3RlbWEgUHViYmxpY28gZGkgSWRlbnRpdOAgRGlnaXRhbGUgKFNQ SUQpMA0GCSqGSIb3DQEBDQUAA4ICAQCwe96Wz6JaFRjtKkokVX58GuMgAVBdMi/Y HiTwzb3RB0O7ZN27bLYXQA+r3jiYSNpOxGnmB78dxZDzHUbiLcuv8s6z1o1asMNJ 3L+Llr1/oDN5ogrJUoUlBmXTAHeFdVtooFchJS8FhAOcpq5NjJ1timuIU1c5ENE9 VRAy1C6WyiJ2hl6A+BtiaFtDotBXNp2DzK6P7HtBU1pAn+zCWXWa3/ba9UkPGdM2 LNQb5YvsqmRVtB0q4DuuCb3F6RS4/kz+dMQ79YG+NQ7z48F4JHjQDEmxsB6R2H1L T1sbj0+fOfbRoA+hM4M5lShSj/q8OgrjnJTwWz9OobOYCAyDhCH2AlZLP499Wprj INkvHtAOJh+jrJ0RTqTf99vU0P1q74hRMNLhDG9PRIyRz5BI0KlCOZGqqyRWVXxV bYI2I2WgbqSpqyFsAF/spuHuEWJCFpLWl8nBgJ6pucGmVbt5Z6XxBtg0yEvqQLle EYAnxUiOQBAz44KtPIeuYBGqcn5Ou/+uDesi241fxzgsF0CbOwofBdjCWgBo4bpS nO3LWUvLW4Vvwmfh2mWaDZE/xMSSzfF8krP0kyTWVwBDi628YazoK4Vr+Gr0gOtG ZysYIKFl8vIZ4yx3Cd/XLC3/Fqy+KL7N3OnX2XYKDskk+GdzW89Q8THQvIFW7hf7 DjpJriU2/Q==</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:KeyDescriptor use="encryption">
<ds:KeyInfo
<ds:KeyInfo
xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIHgzCCBWugAwIBAgIIT5boMmgJZQQwDQYJKoZIhvcNAQENBQAwgcwxCzAJBgNV BAYTAklUMQ0wCwYDVQQHDARSb21lMSYwJAYDVQQKDB1BZ2VuemlhIHBlciBsJ0l0 YWxpYSBEaWdpdGFsZTEwMC4GA1UECwwnU2Vydml6aW8gQWNjcmVkaXRhbWVudG8g ZSBwcm9nZXR0byBTUElEMQ0wCwYDVQQDDARBZ0lEMSkwJwYJKoZIhvcNAQkBFhpw cm90b2NvbGxvQHBlYy5hZ2lkLmdvdi5pdDEaMBgGA1UEBRMRVkFUSVQtOTc3MzUw MjA1ODQwHhcNMjAwMjE4MDAwMDAwWhcNNDAwMjE3MjM1OTU5WjCB1TELMAkGA1UE BhMCSVQxDTALBgNVBAcMBFJvbWUxJjAkBgNVBAoMHUFnZW56aWEgcGVyIGwnSXRh bGlhIERpZ2l0YWxlMTAwLgYDVQQLDCdTZXJ2aXppbyBBY2NyZWRpdGFtZW50byBl IHByb2dldHRvIFNQSUQxFjAUBgNVBAMMDVByb2dldHRvIFNQSUQxKTAnBgkqhkiG 9w0BCQEWGnByb3RvY29sbG9AcGVjLmFnaWQuZ292Lml0MRowGAYDVQQFExFWQVRJ VC05NzczNTAyMDU4NDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJ/j 1bZoh23Q8o+lpy1irwJctv5y4hFDgsS5aDZZc/sLTrNFp+IDKusG5EgCPY97jpIR hh9JtZbc+W7qiyovPox4Jf6py24GfVKeubave4RGgHvZLrc5UmLumc0/JuBQ9NZY OmQ6V46wQxlojuwqjsuZUJq6J+rTWuNiRv4bHrbflrCPFoLpIf+XBxRruIC6ug+5 UF6I/iua/6iIb+vvwXvJWvtGYy52hqjgLN0HJ5BnZMjQ45iBQ7xEQVsiMh6xl5HL dPyaqYPj3QQgQ/VdRzUR4tXoYaQq71aYcroFra1fcIKu+wR2aiB2XPxcufJxX2yH ebDU8aC1GP6ibaTMAZx15O9Hv3caCAMZR0DhcdhTjGBYRgAwk0zwpQmmoMZ2kvz+ PfQ6GIEyiPg6N0EctoTzTpkL+eFqmFd+cDVAFtiaGyzdoUjWPKJCWYEqIUSnW3OW XoJrAQ5EknhOdkbH6sVr2MGfFEoaLe4H9Nt9ucvPnNWTAJ8zJeiWvknVoI5umNYO UWC1LXe/lsoQhbWNABpRiGcq1whXW+d45AKhjHef5naZyGN2ZZMuf32FoRjq2gXk GkK7Abx1cm6uu/rPdMTLKztVJdRglzQMp/ibbhZuFZO02jjL6XEOh4QQF2iqMQ8C 8aU9TFLbWz1iueuI3+7ML3lrIUs2AMV9o3/eNZSLAgMBAAGjggFcMIIBWDAMBgNV HRMBAf8EAjAAMB0GA1UdDgQWBBRPcCh3ZPMBNee968zNv4p5E+YXKzAfBgNVHSME GDAWgBSfx1tsJaanm4NepvvB/qN5O82PkTAOBgNVHQ8BAf8EBAMCBkAwQwYDVR0f BDwwOjA4oDagNIYyaHR0cHM6Ly93d3cvZWlkYXMuYWdpZC5nb3YuaXQvY3JsL2Ny bF9zdWJDQV9TQS5jcmwwgbIGA1UdIASBqjCBpzBMBgMrTBAwRTBDBggrBgEFBQcC ARY3aHR0cHM6Ly9laWRhcy5hZ2lkLmdvdi5pdC9jcHMvQWdJRF9lSURBU19yb290 Q0FfY3BzLnBkZjBXBgQrTBAEME8wTQYIKwYBBQUHAgIwQRo/R292ZXJubWVudCBw cm9qZWN0IFNpc3RlbWEgUHViYmxpY28gZGkgSWRlbnRpdOAgRGlnaXRhbGUgKFNQ SUQpMA0GCSqGSIb3DQEBDQUAA4ICAQCwe96Wz6JaFRjtKkokVX58GuMgAVBdMi/Y HiTwzb3RB0O7ZN27bLYXQA+r3jiYSNpOxGnmB78dxZDzHUbiLcuv8s6z1o1asMNJ 3L+Llr1/oDN5ogrJUoUlBmXTAHeFdVtooFchJS8FhAOcpq5NjJ1timuIU1c5ENE9 VRAy1C6WyiJ2hl6A+BtiaFtDotBXNp2DzK6P7HtBU1pAn+zCWXWa3/ba9UkPGdM2 LNQb5YvsqmRVtB0q4DuuCb3F6RS4/kz+dMQ79YG+NQ7z48F4JHjQDEmxsB6R2H1L T1sbj0+fOfbRoA+hM4M5lShSj/q8OgrjnJTwWz9OobOYCAyDhCH2AlZLP499Wprj INkvHtAOJh+jrJ0RTqTf99vU0P1q74hRMNLhDG9PRIyRz5BI0KlCOZGqqyRWVXxV bYI2I2WgbqSpqyFsAF/spuHuEWJCFpLWl8nBgJ6pucGmVbt5Z6XxBtg0yEvqQLle EYAnxUiOQBAz44KtPIeuYBGqcn5Ou/+uDesi241fxzgsF0CbOwofBdjCWgBo4bpS nO3LWUvLW4Vvwmfh2mWaDZE/xMSSzfF8krP0kyTWVwBDi628YazoK4Vr+Gr0gOtG ZysYIKFl8vIZ4yx3Cd/XLC3/Fqy+KL7N3OnX2XYKDskk+GdzW89Q8THQvIFW7hf7 DjpJriU2/Q==</ds:X509Certificate>
Expand All @@ -41,10 +62,10 @@
</md:Organization>
<md:ContactPerson contactType="other">
<md:Extensions>
<spid:VATNumber
<spid:VATNumber
xmlns:spid="https://spid.gov.it/saml-extensions">00000000000
</spid:VATNumber>
<spid:Private
<spid:Private
xmlns:spid="https://spid.gov.it/saml-extensions"/>
</md:Extensions>
<md:Company>PrivateSP</md:Company>
Expand All @@ -53,7 +74,7 @@
</md:ContactPerson>
<md:ContactPerson contactType="billing">
<md:Extensions>
<fpa:CessionarioCommittente
<fpa:CessionarioCommittente
xmlns:fpa="https://spid.gov.it/invoicing-extensions">
<fpa:DatiAnagrafici>
<fpa:IdFiscaleIVA>
Expand All @@ -78,4 +99,4 @@
<md:EmailAddress>[email protected]</md:EmailAddress>
<md:TelephoneNumber>12345678</md:TelephoneNumber>
</md:ContactPerson>
</md:EntityDescriptor>
</md:EntityDescriptor>
Loading

0 comments on commit 707d66b

Please sign in to comment.