{"id":33178587,"url":"https://github.com/corpus-solutions/tsa-server","last_synced_at":"2025-12-25T12:02:22.697Z","repository":{"id":69044707,"uuid":"47871867","full_name":"corpus-solutions/tsa-server","owner":"corpus-solutions","description":"portable Time Stamp Server (over HTTP)","archived":false,"fork":false,"pushed_at":"2017-10-17T10:15:45.000Z","size":10,"stargazers_count":44,"open_issues_count":0,"forks_count":5,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-04-20T14:52:45.830Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/corpus-solutions.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2015-12-12T09:14:58.000Z","updated_at":"2023-12-04T03:25:08.000Z","dependencies_parsed_at":"2023-07-04T04:18:04.341Z","dependency_job_id":null,"html_url":"https://github.com/corpus-solutions/tsa-server","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/corpus-solutions/tsa-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corpus-solutions%2Ftsa-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corpus-solutions%2Ftsa-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corpus-solutions%2Ftsa-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corpus-solutions%2Ftsa-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/corpus-solutions","download_url":"https://codeload.github.com/corpus-solutions/tsa-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corpus-solutions%2Ftsa-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28028874,"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","status":"online","status_checked_at":"2025-12-25T02:00:05.988Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-11-16T03:00:34.217Z","updated_at":"2025-12-25T12:02:22.692Z","avatar_url":"https://github.com/corpus-solutions.png","language":"Groovy","readme":"# portable Time Stamp Server (over HTTP)\n\nThis is server for Time-Stamp Protocol via HTTP server (https://tools.ietf.org/html/rfc3161 3.4.)\n\nhttps://en.wikipedia.org/wiki/Trusted_timestamping\n\nAll operations are based on OpenSSL extension called ts. From version 0.9.8 it is a part of openssl binary so patching is not required anymore.\n\nIt is based on idea from Grzegorz Golec (http://gregs.eu/linux-time-stamp-server/), but his server received request from tcp connection. Java libraries uses only HTTP to send TSA request, so i wrote this http version of TSA server.\n\n## USAGE:\n* install groovy\n* groovy ./server.groovy\n* curl -X POST -H \"Content-Type:application/timestamp-query\" -d @mycertificatefile localhost:318 -v\n* or call it from Java using class TSAClientBouncyCastle(itext).\n\n## Requirements\n* groovy (and java of cource)\n* OpenSSL \u003e 0.9.8\n* CA or request for certificate\n* certificate for TSA signing\n\n## Installation:\n\nYou need ssl key and certificate that can be used for Timestamping. \n\nThis certificate must have attributes:\n* keyUsage = nonRepudiation\n* extendedKeyUsage = timeStamping, critical\n\nContant your certification authority to get this cert or for testing create self signed (see below)\n\nThan configure openssl in openssl.cnf:\n\n```sh\n\n[ tsa ]\n\ndefault_tsa = tsa_config1 # the default TSA section\n\n[ tsa_config1 ]\n\n# These are used by the TSA reply generation only. \ndir = /etc/ssl/tsa # TSA root directory \nserial = $dir/serial # The current serial number (mandatory) \ncrypto_device = builtin # OpenSSL engine to use for signing \n\nsigner_cert = $dir/tsa.crt # The TSA signing certificate\nsigner_key = $dir/tsa.key # The TSA private key\n\ncerts = $dir/cacert.pem # Certificate chain to include in reply # (optional) \n\ndefault_policy = tsa_policy1 # Policy if request did not specify it # (optional) \nother_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional) \ndigests = md5, sha1 # Acceptable message digests (mandatory) \naccuracy = secs:1, millisecs:500, microsecs:100 # (optional) \nclock_precision_digits = 0 # number of digits after dot. (optional) \nordering = yes # Is ordering defined for timestamps? # (optional, default: no) \ntsa_name = yes # Must the TSA name be included in the reply? # (optional, default: no) \ness_cert_id_chain = no # Must the ESS cert id chain be included? # (optional, default: no) \n\n```\n\ntsa_policy1 must be defined in new_oids section like this:\n```\noid_section             = new_oids\n[ new_oids ]\ntsa_policy1=1.1.1.1\n```\n\n## openssl tutorial:\n\nuse the following command to generate tsa.key:\n```\nopenssl genrsa -des3 -out tsa.key 4096\n```\nthan create certificate request for certification authority:\n```\nopenssl req -new -key tsa.key -out tsa.csr\n```\n\nIf you don't have certificates and use fake self signed authority, or you use openssl on your own, generate your cert:\n\ncreate a file extKey.cnf with the extendedKeyUsage inside\n```\nextendedKeyUsage = critical,timeStamping\n```\n\nAdd use it when creating the request :\n```\nopenssl x509 -req -days 730 -in tsa.csr -CA tsaroot.crt -CAkey tsaroot.key -out tsa.crt -extfile extKey.cnf\n```\n","funding_links":[],"categories":["Tools"],"sub_categories":["Video Conference"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcorpus-solutions%2Ftsa-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcorpus-solutions%2Ftsa-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcorpus-solutions%2Ftsa-server/lists"}