/ story-5-Current-Status.org
story-5-Current-Status.org
 1  #+TITLE: Story 5 - Current Status
 2  #+DATE: [2023-07-06 tor]
 3  #+LANGUAGE: en
 4  #+OPTIONS: author:nil
 5  
 6  * What is this?
 7  
 8  As the stories accrue and as development progresses and matures enough,
 9  writing up current thoughts and emotions would be a good thing.  For the
10  moments, it's only me, but if this project gets more participants, others
11  are welcome to participate as well.
12  
13  These sorts of stories will have a title like this one does.  Time will have
14  to tell what titles future stories of this kind will have, as long as it's
15  obvious enough.
16  
17  There must always be a date associated with this sort of story, using an
18  appropriate date stamp (since this is an org-mode document, the setting
19  =#+DATE= is a natural choice).
20  
21  * About progression so far -- by Le’
22  
23  ** Le'Sec Core
24  
25  So far, the data set, environment and plugins support have been developped
26  and reached some sort of initial maturity, and the building code seems at
27  least good enough in so far that I've come at this point in time (I still
28  struggle with some aspects of CMake).  This feels like a good starting
29  foundation.
30  
31  I'm thinking that a few core concepts should be added to the Le'Sec Core
32  library, but that crypto stuff should probably be a separate library that
33  builds on the core concepts.  As a matter of fact, I created a feature
34  branch =lscrypto= where I'm starting to experiment with an implementation.
35  
36  The core concepts I'm thinking of adding to Le'Sec Core are:
37  
38  - Basic support for objects, which are data carriers, and sometimes a
39    collection of functionality to perform very primitive operations with
40    them.
41  
42    I have given a lot of thought to how they can be made generic, and
43    give good enough information to allow applications to handle them well
44    enough.
45  
46  - Basic support for containers, which is a special kind of object that can
47    contain other objects.
48  
49  - Basic support for operations, which are collections of functionality to
50    apply one or more objects on streams of data.
51  
52  With this, I intend to include basic functionality to allow registration
53  of objects and operations implementations, which also means that the
54  following will be needed:
55  
56  - A selection mechanism for different classes of objects and operations, see
57    my thoughts on Le'Sec Crypto below.
58  
59  - Identifiers and properties, to be able to declare and to select
60    objects and operations.
61  
62  ** Le'Sec Crypto
63  
64  As already mentioned, I'm thinking of having all crypto-related stuff in a
65  separate library, with support for specific object and operation classes.
66  Those I'm thinking of for the moment are:
67  
68  *** Object classes
69  
70  - symmetric keys
71  - asymmetric keys
72  
73  *** Operation classes
74  
75  - encrypt (symmetric and asymmetric)
76  - decrypt (symmetric and asymmetric)
77  - sign (asymmetric)
78  - verify (asymmetric)
79  - hash
80  - mac
81  - derive [[[https://en.wikipedia.org/wiki/Key_derivation_function][KDF]]]
82  - encapsulate [[[https://en.wikipedia.org/wiki/Key_encapsulation_mechanism][KEM]]]
83  - decapsulate [[[https://en.wikipedia.org/wiki/Key_encapsulation_mechanism][KEM]]]
84  - exchange [[[https://en.wikipedia.org/wiki/Key_exchange][KEX]]]
85  - decode (from byte format to byte format or from byte format to object)
86  - encode (from object to byte format or from byte format to byte format)