- <title>Fetching trusted timestamps using the rfc3161ng python module</title>
- <link>http://people.skolelinux.org/pere/blog/Fetching_trusted_timestamps_using_the_rfc3161ng_python_module.html</link>
- <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Fetching_trusted_timestamps_using_the_rfc3161ng_python_module.html</guid>
- <pubDate>Mon, 8 Oct 2018 12:30:00 +0200</pubDate>
- <description><p>I have earlier covered the basics of trusted timestamping using the
-'openssl ts' client. See blog post for
-<a href="http://people.skolelinux.org/pere/blog/Public_Trusted_Timestamping_services_for_everyone.html">2014</a>,
-<a href="http://people.skolelinux.org/pere/blog/syslog_trusted_timestamp___chain_of_trusted_timestamps_for_your_syslog.html">2016</a>
-and
-<a href="http://people.skolelinux.org/pere/blog/Idea_for_storing_trusted_timestamps_in_a_Noark_5_archive.html">2017</a>
-for those stories. But some times I want to integrate the timestamping
-in other code, and recently I needed to integrate it into Python.
-After searching a bit, I found
-<a href="https://dev.entrouvert.org/projects/python-rfc3161">the
-rfc3161 library</a> which seemed like a good fit, but I soon
-discovered it only worked for python version 2, and I needed something
-that work with python version 3. Luckily I next came across
-<a href="https://github.com/trbs/rfc3161ng/">the rfc3161ng library</a>,
-a fork of the original rfc3161 library. Not only is it working with
-python 3, it have fixed a few of the bugs in the original library, and
-it has an active maintainer. I decided to wrap it up and make it
-<a href="https://tracker.debian.org/pkg/python-rfc3161ng">available in
-Debian</a>, and a few days ago it entered Debian unstable and testing.</p>
-
-<p>Using the library is fairly straight forward. The only slightly
-problematic step is to fetch the required certificates to verify the
-timestamp. For some services it is straight forward, while for others
-I have not yet figured out how to do it. Here is a small standalone
-code example based on of the integration tests in the library code:</p>
-
-<pre>
-#!/usr/bin/python3
-
-"""
-
-Python 3 script demonstrating how to use the rfc3161ng module to
-get trusted timestamps.
-
-The license of this code is the same as the license of the rfc3161ng
-library, ie MIT/BSD.
-
-"""
-
-import os
-import pyasn1.codec.der
-import rfc3161ng
-import subprocess
-import tempfile
-import urllib.request
-
-def store(f, data):
- f.write(data)
- f.flush()
- f.seek(0)
-
-def fetch(url, f=None):
- response = urllib.request.urlopen(url)
- data = response.read()
- if f:
- store(f, data)
- return data
-
-def main():
- with tempfile.NamedTemporaryFile() as cert_f,\
- tempfile.NamedTemporaryFile() as ca_f,\
- tempfile.NamedTemporaryFile() as msg_f,\
- tempfile.NamedTemporaryFile() as tsr_f:
-
- # First fetch certificates used by service
- certificate_data = fetch('https://freetsa.org/files/tsa.crt', cert_f)
- ca_data_data = fetch('https://freetsa.org/files/cacert.pem', ca_f)
-
- # Then timestamp the message
- timestamper = \
- rfc3161ng.RemoteTimestamper('http://freetsa.org/tsr',
- certificate=certificate_data)
- data = b"Python forever!\n"
- tsr = timestamper(data=data, return_tsr=True)
-
- # Finally, convert message and response to something 'openssl ts' can verify
- store(msg_f, data)
- store(tsr_f, pyasn1.codec.der.encoder.encode(tsr))
- args = ["openssl", "ts", "-verify",
- "-data", msg_f.name,
- "-in", tsr_f.name,
- "-CAfile", ca_f.name,
- "-untrusted", cert_f.name]
- subprocess.check_call(args)
-
-if '__main__' == __name__:
- main()
-</pre>
-
-<p>The code fetches the required certificates, store them as temporary
-files, timestamp a simple message, store the message and timestamp to
-disk and ask 'openssl ts' to verify the timestamp. A timestamp is
-around 1.5 kiB in size, and should be fairly easy to store for future
-use.</p>
+ <title>Nikita version 0.6 released - free software archive API server</title>
+ <link>http://people.skolelinux.org/pere/blog/Nikita_version_0_6_released___free_software_archive_API_server.html</link>
+ <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Nikita_version_0_6_released___free_software_archive_API_server.html</guid>
+ <pubDate>Thu, 10 Jun 2021 17:10:00 +0200</pubDate>
+ <description><p>I am very pleased to be able to share with you
+<a href="https://lists.nuug.no/pipermail/nikita-noark/2021-June/000576.html">the
+announcement of a new version of the archiving system Nikita</a>
+published by its lead developer Thomas Sødring:</p>
+
+<p><blockquote>
+
+<p>It is with great pleasure that we can announce a new release of
+nikita. Version 0.6
+(<a href="https://gitlab.com/OsloMet-ABI/nikita-noark5-core">https://gitlab.com/OsloMet-ABI/nikita-noark5-core</a>). This
+release makes new record keeping functionality available. This really
+is a maturity release. Both in terms of functionality but also code.
+Considerable effort has gone into refactoring the codebase and
+simplifying the code. Notable changes for this release include:</p>
+
+<ul>
+
+ <li>Significantly improved OData parsing</li>
+ <li>Support for business specific metadata and national identifiers</li>
+ <li>Continued implementation of domain model and endpoints</li>
+ <li>Improved testing</li>
+ <li>Ability to export and import from arkivstruktur.xml</li>
+
+</ul>
+
+<p>We are currently in the process of reaching an agreement with an
+archive institution to publish their picture archive using nikita with
+business specific metadata and we hope that we can share this with you
+soon. This is an interesting project as it allows the organisation to
+bring an older picture archive back to life while using the original
+metadata values stored as business specific metadata. Combined with
+OData means the scope and use of the archive is significantly
+increased and will showcase both the flexibility and power of
+Noark.</p>
+
+<p>I really think we are approaching a version 1.0 of nikita, even
+though there is still a lot of work to be done. The notable work at
+the moment is to implement access-control and full text indexing of
+documents.</p>
+
+<p>My sincere thanks to everyone who has contributed to this
+release!</p>
+
+<p>- Thomas</p>
+
+<p><strong>Release 0.6 2021-06-10 (d1ba5fc7e8bad0cfdce45ac20354b19d10ebbc7b)</strong></p>
+
+<ul>
+
+ <li>Refactor metadata entity search</li>
+ <li>Remove redundant security configuration</li>
+ <li>Make OpenAPI documentation work</li>
+ <li>Change database structure / inheritance model to a more sensible approach</li>
+ <li>Make it possible to move entities around the fonds structure</li>
+ <li>Implemented a number of missing endpoints</li>
+ <li>Make sure yml files are in sync</li>
+ <li>Implemented/finalised storing and use of
+ <ul>
+ <li>Business Specific Metadata</li>
+ <li>Norwegian National Identifiers</li>
+ <li>Cross Reference</li>
+ <li>Keyword</li>
+ <li>StorageLocation</li>
+ <li>Author</li>
+ <li>Screening for relevant objects</li>
+ <li>ChangeLog</li>
+ <li>EventLog</li>
+ </ul></li>
+ <li>Make generation of updated docker image part of successful CI pipeline</li>
+ <li>Implement pagination for all list requests
+ <ul>
+ <li>Refactor code to support lists</li>
+ <li>Refactor code for readability</li>
+ <li>Standardise the controller/service code</li>
+ </ul></li>
+ <li>Finalise File->CaseFile expansion and Record->registryEntry/recordNote
+expansion</li>
+ <li>Improved Continuous Integration (CI) approach via gitlab</li>
+ <li>Changed conversion approach to generate tagged PDF documents</li>
+ <li>Updated dependencies
+ <ul>
+ <li>For security reasons</li>
+ <li>Brought codebase to spring-boot version 2.5.0</li>
+ <li>Remove import of necessary dependencies</li>
+ <li>Remove non-used metrics classes</li>
+ </ul></li>
+ <li>Added new analysis to CI including</li>
+ <li>Implemented storing of Keyword</li>
+ <li>Implemented storing of Screening and ScreeningMetadata</li>
+ <li>Improved OData support
+ <ul>
+ <li>Better support for inheritance in queries where applicable</li>
+ <li>Brought in more OData tests</li>
+ <li>Improved OData/hibernate understanding of queries</li>
+ <li>Implement $count, $orderby</li>
+ <li>Finalise $top and $skip</li>
+ <li>Make sure & is used between query parameters</li>
+ </ul></li>
+ <li>Improved Testing in codebase
+ <ul>
+ <li>A new approach for integration tests to make test more readable</li>
+ <li>Introduce tests in parallel with code development for TDD approach</li>
+ <li>Remove test that required particular access to storage</li>
+ </ul></li>
+ <li>Implement case-handling process from received email to case-handler
+ <ul>
+ <li>Develop required GUI elements (digital postroom from email)</li>
+ <li>Introduced leader, quality control and postroom roles</li>
+ </ul></li>
+ <li>Make PUT requests return 200 OK not 201 CREATED</li>
+ <li>Make DELETE requests return 204 NO CONTENT not 200 OK</li>
+ <li>Replaced 'oppdatert*' with 'endret*' everywhere to match latest spec</li>
+ <li>Upgrade Gitlab CI to use python > 3 for CI scripts</li>
+ <li>Bug fixes
+ <ul>
+ <li>Fix missing ALLOW</li>
+ <li>Fix reading of objects from jar file during start-up</li>
+ <li>Reduce the number of warnings in the codebase</li>
+ <li>Fix delete problems</li>
+ <li>Make better use of cascade for "leaf" objects</li>
+ <li>Add missing annotations where relevant</li>
+ <li>Remove the use of ETAG for delete</li>
+ <li>Fix missing/wrong/broken rels discovered by runtest</li>
+ <li>Drop unofficial convertFil (konverterFil) end point</li>
+ <li>Fix regex problem for dateTime</li>
+ <li>Fix multiple static analysis issues discovered by coverity</li>
+ <li>Fix proxy problem when looking for object class names</li>
+ <li>Add many missing translated Norwegian to English (internal)
+attribute/entity names</li>
+ <li>Change UUID generation approach to allow code also set a value</li>
+ <li>Fix problem with Part/PartParson</li>
+ <li>Fix problem with empty OData search results</li>
+ <li>Fix metadata entity domain problem</li>
+ </ul></li>
+ <li>General Improvements
+ <ul>
+ <li>Makes future refactoring easier as coupling is reduced</li>
+ <li>Allow some constant variables to be set from property file</li>
+ <li>Refactor code to make reflection work better across codebase</li>
+ <li>Reduce the number of @Service layer classes used in @Controller
+classes</li>
+ <li>Be more consistent on naming of similar variable types</li>
+ <li>Start printing rels/href if they are applicable</li>
+ <li>Cleaner / standardised approach to deleting objects</li>
+ <li>Avoid concatenation when using StringBuilder</li>
+ <li>Consolidate code to avoid duplication</li>
+ <li>Tidy formatting for a more consistent reading style across
+similar class files</li>
+ <li>Make throw a log.error message not an log.info message</li>
+ <li>Make throw print the log value rather than printing in multiple
+places</li>
+ <li>Add some missing pronom codes</li>
+ <li>Fix time formatting issue in Gitlab CI</li>
+ <li>Remove stale / unused code</li>
+ <li>Use only UUID datatype rather than combination String/UUID for systemID</li>
+ <li>Mark variables final and @NotNull where relevant to indicate
+intention</li>
+ </ul></li>
+ <li>Change Date values to DateTime to maintain compliance with Noark 5
+standard</li>
+ <li>Domain model improvements using Hypersistence Optimizer
+ <ul>
+ <li>Move @Transactional from class to methods to avoid borrowing the JDBC Connection unnecessarily</li>
+ <li>Fix OneToOne performance issues</li>
+ <li>Fix ManyToMany performance issues</li>
+ <li>Add missing bidirectional synchronization support</li>
+ <li>Fix ManyToMany performance issue</li>
+ </ul></li>
+ <li>Make List<> and Set<> use final-keyword to avoid potential problems
+during update operations</li>
+ <li>Changed internal URLs, replaced "hateoas-api" with "api".</li>
+ <li>Implemented storing of Precedence.</li>
+ <li>Corrected handling of screening.</li>
+ <li>Corrected _links collection returned for list of mixed entity types
+to match the specific entity.</li>
+ <li>Improved several internal structures.</li>
+</ul>
+
+</blockquote></p>
+
+<p>If free and open standardized archiving API sound interesting to
+you, please contact us on IRC
+(<a href="irc://irc.oftc.net/%23nikita">#nikita on
+irc.oftc.net</a>) or email
+(<a href="https://lists.nuug.no/mailman/listinfo/nikita-noark">nikita-noark
+mailing list</a>).</p>