{"id":20374915,"url":"https://github.com/gisce/face_signer","last_synced_at":"2026-06-06T17:33:19.021Z","repository":{"id":30425205,"uuid":"114238846","full_name":"gisce/FACe_signer","owner":"gisce","description":"Zeep plugin to sign ~X509 envelopes as FACes wants","archived":false,"fork":false,"pushed_at":"2022-03-09T10:07:57.000Z","size":38,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-01-15T07:02:29.670Z","etag":null,"topics":["hacktoberfest","python","python2","python3","soap","zeep","zeep-plugin"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gisce.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-12-14T10:49:26.000Z","updated_at":"2022-10-06T09:25:09.000Z","dependencies_parsed_at":"2022-08-07T15:15:31.590Z","dependency_job_id":null,"html_url":"https://github.com/gisce/FACe_signer","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gisce%2FFACe_signer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gisce%2FFACe_signer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gisce%2FFACe_signer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gisce%2FFACe_signer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gisce","download_url":"https://codeload.github.com/gisce/FACe_signer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241923692,"owners_count":20043062,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","python","python2","python3","soap","zeep","zeep-plugin"],"created_at":"2024-11-15T01:27:40.226Z","updated_at":"2026-06-06T17:33:18.989Z","avatar_url":"https://github.com/gisce.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FACe signer\n\nIt provides a Zeep plugin desired to patch SOAP envelopes providing a pseudo-X509 WS-Security integration (expected by FACe servers) signing just the soap header.\n\n## Usage\n\nJust create a Zeep client with FACE_signer plugin with the following arguments:\n  - `certificate` must be an string with the relative path to the PEM file\n  - `debug` is an optional boolean flag that triggers the stdout printing\n\nFACe_signer initialization:\n```\nFACE_plugin = FACe_signer(\n    certificate=PEM_CERTIFICATE,\n    [debug=False]\n)\n```\n\n\n```\nfrom FACe_signer import FACe_signer\n\nimport zeep\n\nFACE_ENVS = {\n    'staging': \"https://se-face-webservice.redsara.es/facturasspp2?wsdl\",\n    'prod': \"https://webservice.face.gob.es/facturasspp2?wsdl\"\n}\nOUR_CERT = \"certs/our_cert.pem\"\n\nclient = zeep.Client(\n    FACE_ENVS['prod'],\n    plugins=[FACe_signer(OUR_CERT)]\n)\n\n# Use the expected service as usual with zeep\nclient.service.XXX()\n\n```\n\n## How to install\n\nJust install it using pip:\n\n``` \n$ pip install FACe_signer\n``` \n\nRemember to process the OS requirements (libsecxml development), see [requirements_os.txt](requirements_os.txt)\n\n\n## How to debug\n\n`debug=True` argument can be passed at FACe_signer initialization to reach a dump of the request and the response of each FACe's interaction.\n\nAlso, \"normal\" debug using python logging can be performed, i.e:\n\n```\nimport logging.config\n\n# Activate DEBUG for zeep transports\nlogging.config.dictConfig({\n    'version': 1,\n    'formatters': {\n        'verbose': {\n            'format': '%(name)s: %(message)s'\n        }\n    },\n    'handlers': {\n        'console': {\n            'level': 'DEBUG',\n            'class': 'logging.StreamHandler',\n            'formatter': 'verbose',\n        },\n    },\n    'loggers': {\n        'zeep.transports': {\n            'level': 'DEBUG',\n            'propagate': True,\n            'handlers': ['console'],\n        },\n    }\n})\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgisce%2Fface_signer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgisce%2Fface_signer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgisce%2Fface_signer/lists"}