2016-09-11 20:46:38 +02:00
uts-server
2016-09-10 03:10:21 +02:00
==========
2016-09-11 20:46:38 +02:00
.. image :: https://github.com/kakwa/uts-server/blob/master/docs/assets/logo_64.png?raw=true
|
2016-09-10 03:10:21 +02:00
.. image :: https://travis-ci.org/kakwa/uts-server.svg?branch=master
:target: https://travis-ci.org/kakwa/uts-server
2016-09-10 12:03:03 +02:00
.. image :: https://readthedocs.org/projects/uts-server/badge/?version=latest
:target: http://uts-server.readthedocs.org/en/latest/?badge=latest
:alt: Documentation Status
2016-09-10 03:10:21 +02:00
2016-09-11 19:14:40 +02:00
Micro `RFC 3161 Time-Stamp <https://www.ietf.org/rfc/rfc3161.txt> `_ server written in C.
2016-09-10 03:10:21 +02:00
2016-09-10 12:03:03 +02:00
----
2016-09-10 03:10:21 +02:00
2016-09-10 12:03:03 +02:00
:Doc: `Uts-Server documentation on ReadTheDoc <http://uts-server.readthedocs.org/en/latest/>`_
:Dev: `Uts-Server source code on GitHub <https://github.com/kakwa/uts-server>`_
:License: MIT
:Author: Pierre-Francois Carpentier - copyright © 2016
2016-09-10 03:10:21 +02:00
2016-09-10 12:03:03 +02:00
----
2016-09-10 03:10:21 +02:00
License
-------
Released under the MIT Public License
2016-11-02 19:21:48 +01:00
What is RFC 3161?
-----------------
An RFC 3161 time-stamp is basically a cryptographic signature with a date attached.
Roughly, it works as follow:
1. A client application sends an hash of the data it wants to time-stamp to a Time-Stamp authority server.
2016-11-02 19:23:46 +01:00
2. The Time-Stamp authority server retrieves the current date, concatenates it with the hash and uses its private key to create the time-stamp (kind of like a signature).
2016-11-02 19:21:48 +01:00
3. The Time-Stamp authority server return the generated time-stamp to the client application.
Then a client can verify the piece of data with the time-stamp using the Certificate Authority of the time-stamp key pair (X509 certificates).
It gives a cryptographic proof of a piece of data content, like a file, at a given time.
Some use cases:
* time-stamp log files at rotation time.
* time-stamp file at upload to prove it was delivered in due time or not.
2016-09-10 12:03:03 +02:00
Quick Start
-----------
2016-09-10 03:10:21 +02:00
.. sourcecode :: bash
2016-09-11 19:24:27 +02:00
# Building with civetweb embedded (will recover civetweb from github).
2016-09-10 03:10:21 +02:00
$ cmake . -DBUNDLE_CIVETWEB=ON
$ make
2016-09-11 19:24:27 +02:00
# Create some test certificates.
2016-09-10 03:10:21 +02:00
$ ./tests/cfg/pki/create_tsa_certs
2016-09-11 19:24:27 +02:00
# Launching the time-stamp server with test configuration in debug mode.
2016-09-10 03:10:21 +02:00
$ ./uts-server -c tests/cfg/uts-server.cnf -D
2016-09-11 19:24:27 +02:00
# In another shell, launching a time-stamp script on the README.md file.
$ ./goodies/timestamp-file.sh -i README.rst -u http://localhost:2020 -r -O "-cert";
# Verify the time-stamp.
$ openssl ts -verify -in README.rst.tsr -data README.rst -CAfile ./tests/cfg/pki/tsaca.pem
# Display the time-stamp content.
$ openssl ts -reply -in README.rst.tsr -text
2016-09-11 20:41:53 +02:00
Powered by
----------
.. image :: https://raw.githubusercontent.com/openssl/web/master/img/openssl-64.png
:target: https://www.openssl.org/
.. image :: https://github.com/civetweb/civetweb/blob/658c8d48b3bcdb34338dae1b83167a8d7836e356/resources/civetweb_32x32@2.png?raw=true
:target: https://github.com/civetweb/civetweb