Compare commits
No commits in common. "main" and "test-ts-sign" have entirely different histories.
main
...
test-ts-si
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@ -3,5 +3,5 @@
|
|||||||
<component name="Black">
|
<component name="Black">
|
||||||
<option name="sdkName" value="Python 3.10 (pythonProject)" />
|
<option name="sdkName" value="Python 3.10 (pythonProject)" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 virtualenv at ~/dev/chill/sign-pdf-worker/pythonProject/.venv" project-jdk-type="Python SDK" />
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (pythonProject)" project-jdk-type="Python SDK" />
|
||||||
</project>
|
</project>
|
2
.idea/sign-pdf-worker.iml
generated
2
.idea/sign-pdf-worker.iml
generated
@ -4,7 +4,7 @@
|
|||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<excludeFolder url="file://$MODULE_DIR$/pythonProject/.venv" />
|
<excludeFolder url="file://$MODULE_DIR$/pythonProject/.venv" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="Python 3.10 virtualenv at ~/dev/chill/sign-pdf-worker/pythonProject/.venv" jdkType="Python SDK" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
@ -5,6 +5,3 @@ TIMESTAMP_URL=http://freetsa.org/tsr
|
|||||||
QUEUE_IN=to_python_sign
|
QUEUE_IN=to_python_sign
|
||||||
EXCHANGE_OUT=signed_docs
|
EXCHANGE_OUT=signed_docs
|
||||||
OUT_ROUTING_KEY=signed_doc
|
OUT_ROUTING_KEY=signed_doc
|
||||||
TSA_CONFIG_PATH=/home/julien/dev/chill/sign-pdf-worker/ts-authority/rootca.conf
|
|
||||||
TSA_CERT_CHAIN=/home/julien/dev/chill/sign-pdf-worker/ts-authority/ca/tsa-chain.pem
|
|
||||||
TSA_KEY_PASSWORD=5678
|
|
@ -5,10 +5,7 @@ FROM python:3.10-alpine
|
|||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# add required clis
|
# add required clis
|
||||||
RUN apk add --no-cache openssl tzdata
|
RUN apk add --no-cache openssl
|
||||||
|
|
||||||
# set timezone
|
|
||||||
RUN ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
|
|
||||||
|
|
||||||
# Copy requirements.txt to the Docker container
|
# Copy requirements.txt to the Docker container
|
||||||
COPY requirements.txt .
|
COPY requirements.txt .
|
||||||
|
@ -1,22 +1,20 @@
|
|||||||
asn1crypto==1.5.1
|
asn1crypto==1.5.1
|
||||||
certifi==2025.4.26
|
certifi==2024.6.2
|
||||||
cffi==1.17.1
|
cffi==1.16.0
|
||||||
charset-normalizer==3.4.2
|
charset-normalizer==3.3.2
|
||||||
click==8.2.1
|
click==8.1.7
|
||||||
cryptography==45.0.3
|
cryptography==42.0.8
|
||||||
idna==3.10
|
idna==3.7
|
||||||
lxml==5.4.0
|
|
||||||
oscrypto==1.3.0
|
oscrypto==1.3.0
|
||||||
pika==1.3.2
|
pika==1.3.2
|
||||||
pika-stubs==0.1.3
|
|
||||||
pycparser==2.22
|
pycparser==2.22
|
||||||
pyHanko==0.29.0
|
pyHanko==0.25.0
|
||||||
pyhanko-certvalidator==0.27.0
|
pyhanko-certvalidator==0.26.3
|
||||||
pypng==0.20220715.0
|
pypng==0.20220715.0
|
||||||
PyYAML==6.0.2
|
PyYAML==6.0.1
|
||||||
qrcode==8.2
|
qrcode==7.4.2
|
||||||
requests==2.32.3
|
requests==2.32.3
|
||||||
typing_extensions==4.14.0
|
typing_extensions==4.12.2
|
||||||
tzlocal==5.3.1
|
tzlocal==5.2
|
||||||
uritools==5.0.0
|
uritools==4.0.3
|
||||||
urllib3==2.4.0
|
urllib3==2.2.2
|
||||||
|
@ -4,10 +4,11 @@ from typing import Optional
|
|||||||
|
|
||||||
from pyhanko import stamp
|
from pyhanko import stamp
|
||||||
from pyhanko.pdf_utils.incremental_writer import IncrementalPdfFileWriter
|
from pyhanko.pdf_utils.incremental_writer import IncrementalPdfFileWriter
|
||||||
from pyhanko.sign import signers, fields
|
from pyhanko.sign import signers, timestamps, fields
|
||||||
|
from pyhanko_certvalidator import ValidationContext
|
||||||
from typing_extensions import Buffer
|
from typing_extensions import Buffer
|
||||||
|
|
||||||
from timestamp import LocalOpensslTimestamp
|
from pythonProject.timestamp import LocalOpensslTimestamp
|
||||||
|
|
||||||
|
|
||||||
class SignOrchestrator:
|
class SignOrchestrator:
|
||||||
|
@ -13,13 +13,9 @@ orchestrator = SignOrchestrator('./assets/dummy.p12',
|
|||||||
pkcs12_password=None)
|
pkcs12_password=None)
|
||||||
|
|
||||||
with open('./assets/test.pdf', 'rb') as input:
|
with open('./assets/test.pdf', 'rb') as input:
|
||||||
signed_content = orchestrator.sign(reason="first\nsigner\nreturn\ntext", signature_index=None,
|
signed_content = orchestrator.sign(reason="first signer", signature_index=None,
|
||||||
input_content=input.read(), box_place=(300, 600, 500, 660), on_page=0,
|
input_content=input.read(), box_place=(300, 600, 500, 660), on_page=0,
|
||||||
signer_text="""Mme Caroline Diallo
|
signer_text="Mme Caroline Diallo")
|
||||||
with
|
|
||||||
return
|
|
||||||
text
|
|
||||||
""")
|
|
||||||
|
|
||||||
with open('./assets/test_signed_0.pdf', 'wb') as output:
|
with open('./assets/test_signed_0.pdf', 'wb') as output:
|
||||||
output.write(signed_content.read())
|
output.write(signed_content.read())
|
||||||
|
@ -12,7 +12,7 @@ logging.basicConfig(level=logging.INFO, format=LOG_FORMAT)
|
|||||||
LOGGER = logging.getLogger(__name__)
|
LOGGER = logging.getLogger(__name__)
|
||||||
LOGGER.setLevel(os.environ.get('LOG_LEVEL', logging.INFO))
|
LOGGER.setLevel(os.environ.get('LOG_LEVEL', logging.INFO))
|
||||||
|
|
||||||
for v in ['AMQP_URL', 'PKCS12_PATH', 'QUEUE_IN', 'EXCHANGE_OUT', 'OUT_ROUTING_KEY', 'TSA_CONFIG_PATH', 'TSA_CERT_CHAIN', 'TSA_KEY_PASSWORD']:
|
for v in ['AMQP_URL', 'PKCS12_PATH', 'TIMESTAMP_URL', 'QUEUE_IN', 'EXCHANGE_OUT', 'OUT_ROUTING_KEY']:
|
||||||
if v not in os.environ:
|
if v not in os.environ:
|
||||||
LOGGER.error('Missing environment variable: %s', v)
|
LOGGER.error('Missing environment variable: %s', v)
|
||||||
raise ValueError('Missing environment variable: ' + v)
|
raise ValueError('Missing environment variable: ' + v)
|
||||||
@ -26,7 +26,7 @@ TSA_CONFIG_PATH = os.environ.get('TSA_CONFIG_PATH')
|
|||||||
TSA_CERT_CHAIN = os.environ.get('TSA_CERT_CHAIN')
|
TSA_CERT_CHAIN = os.environ.get('TSA_CERT_CHAIN')
|
||||||
TSA_KEY_PASSWORD = os.environ.get('TSA_KEY_PASSWORD')
|
TSA_KEY_PASSWORD = os.environ.get('TSA_KEY_PASSWORD')
|
||||||
|
|
||||||
orchestrator = sign.SignOrchestrator(PKCS12_PATH, TSA_CONFIG_PATH, TSA_KEY_PASSWORD, TSA_CERT_CHAIN, pkcs12_password=None if os.environ.get('PKCS12_PASSWORD', None) is None else os.environ.get('PKCS12_PASSWORD').encode())
|
orchestrator = sign.SignOrchestrator(PKCS12_PATH, TSA_CONFIG_PATH, TSA_KEY_PASSWORD, TSA_CERT_CHAIN, pkcs12_password=os.environ.get('PKCS12_PASSWORD', None))
|
||||||
|
|
||||||
parameters = pika.URLParameters(DSN)
|
parameters = pika.URLParameters(DSN)
|
||||||
connection = pika.BlockingConnection(parameters)
|
connection = pika.BlockingConnection(parameters)
|
||||||
@ -76,7 +76,6 @@ def on_message(channel, method_frame, header_frame, body):
|
|||||||
else:
|
else:
|
||||||
LOGGER.warning(f"first try failed, signatureId: {body_content['signatureId']}")
|
LOGGER.warning(f"first try failed, signatureId: {body_content['signatureId']}")
|
||||||
channel.basic_ack(delivery_tag=method_frame.delivery_tag)
|
channel.basic_ack(delivery_tag=method_frame.delivery_tag)
|
||||||
raise e
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
@ -152,7 +152,7 @@ openssl ts -verify -data /etc/hosts -in /tmp/response.tsr -CAfile ca/root-ca.pem
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
# Préparation à partir d'un certificat d'horodatage au format pkcs12
|
# Préparation pour Vendée
|
||||||
|
|
||||||
## Extraire les infos
|
## Extraire les infos
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user