mirror of
https://codeberg.org/openpgp/notes.git
synced 2024-12-05 14:02:07 +01:00
initial public release
This commit is contained in:
parent
ecffecc2ce
commit
e913b907d7
129 changed files with 28453 additions and 0 deletions
4
.dockerignore
Normal file
4
.dockerignore
Normal file
|
@ -0,0 +1,4 @@
|
|||
# SPDX-FileCopyrightText: 2023 The "Notes on OpenPGP" project
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
book/build
|
7
.domains
Normal file
7
.domains
Normal file
|
@ -0,0 +1,7 @@
|
|||
# SPDX-FileCopyrightText: 2023 The "Notes on OpenPGP" project
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
#
|
||||
# See https://docs.codeberg.org/codeberg-pages/using-custom-domain/ for
|
||||
# details. The first domain should be "main" the rest are aliases.
|
||||
|
||||
openpgp.dev
|
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
# SPDX-FileCopyrightText: 2023 The "Notes on OpenPGP" project
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
.idea
|
||||
book/build/
|
||||
book/source/plain_svg
|
12
.reuse/dep5
Normal file
12
.reuse/dep5
Normal file
|
@ -0,0 +1,12 @@
|
|||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: notes
|
||||
Upstream-Contact: Heiko Schaefer <heiko@schaefer.name>
|
||||
Source: https://codeberg.org/openpgp/notes
|
||||
|
||||
Files: book/assets/* book/source/img/* book/source/_static/epub/img/* book/source/_static/html/img/*
|
||||
Copyright: 2023 The "Notes on OpenPGP" project
|
||||
License: CC-BY-SA-4.0
|
||||
|
||||
Files: book/patches/*.patch book/source/examples/*.asc
|
||||
Copyright: 2023 The "Notes on OpenPGP" project
|
||||
License: CC0-1.0
|
22
.woodpecker/codespell.yml
Normal file
22
.woodpecker/codespell.yml
Normal file
|
@ -0,0 +1,22 @@
|
|||
# SPDX-FileCopyrightText: 2023 The "Notes on OpenPGP" project
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
lfs: false
|
||||
|
||||
when:
|
||||
# branch: main
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
|
||||
steps:
|
||||
codespell:
|
||||
image: archlinux:latest
|
||||
commands:
|
||||
- pacman -Sy --needed --noconfirm archlinux-keyring
|
||||
- pacman -Syu --needed --noconfirm codespell make
|
||||
- make -C book codespell
|
58
.woodpecker/doc-pages.yml
Normal file
58
.woodpecker/doc-pages.yml
Normal file
|
@ -0,0 +1,58 @@
|
|||
# SPDX-FileCopyrightText: 2023 The "Notes on OpenPGP" project
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
steps:
|
||||
pages:
|
||||
image: woodpeckerci/plugin-docker-buildx
|
||||
settings:
|
||||
output: type=local,dest=public
|
||||
# do not push, push cannot be used with output simultaneously anyway
|
||||
dry_run: true
|
||||
# do not refresh image
|
||||
pull_image: false
|
||||
purge: false
|
||||
|
||||
pages-pr-preview:
|
||||
image: bitnami/git
|
||||
secrets: [ codeberg_token ]
|
||||
commands:
|
||||
- git config --global user.email heiko.schaefer+boiler@posteo.de
|
||||
- git config --global user.name "Page Renderer"
|
||||
- git clone -b pages https://$CODEBERG_TOKEN@codeberg.org/openpgp/pr-preview.git pr-preview
|
||||
- rm -rf pr-preview/$CI_COMMIT_PULL_REQUEST
|
||||
- cp -ar public/. pr-preview/$CI_COMMIT_PULL_REQUEST
|
||||
- cd pr-preview
|
||||
- >
|
||||
if [ -z "$(git status --porcelain)" ]; then
|
||||
echo "No changes"
|
||||
else
|
||||
git add .
|
||||
git commit -m "Update rendered page" -m "Source: $CI_COMMIT_SHA" -m "See: $CI_BUILD_LINK"
|
||||
git push
|
||||
fi
|
||||
when:
|
||||
event: pull_request
|
||||
|
||||
pages-publish:
|
||||
image: bitnami/git
|
||||
secrets: [ codeberg_token ]
|
||||
commands:
|
||||
- git config --global user.email heiko.schaefer+boiler@posteo.de
|
||||
- git config --global user.name "Page Renderer"
|
||||
- git clone -b pages https://$CODEBERG_TOKEN@codeberg.org/openpgp/site.git $CI_REPO_NAME
|
||||
- cp -ar public/. $CI_REPO_NAME/book/
|
||||
# Needed for custom domains
|
||||
- cp .domains $CI_REPO_NAME || true # Ignore if it doesn't exist
|
||||
- cd $CI_REPO_NAME
|
||||
- >
|
||||
if [ -z "$(git status --porcelain)" ]; then
|
||||
echo "No changes"
|
||||
else
|
||||
git add .
|
||||
git commit -m "Update rendered page" -m "Source: $CI_COMMIT_SHA" -m "See: $CI_BUILD_LINK"
|
||||
git push
|
||||
fi
|
||||
when:
|
||||
event: push
|
||||
# only do releases to the `site` repo for the "main" branch
|
||||
branch: main
|
24
.woodpecker/epub.yml
Normal file
24
.woodpecker/epub.yml
Normal file
|
@ -0,0 +1,24 @@
|
|||
# SPDX-FileCopyrightText: 2023 The "Notes on OpenPGP" project
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
lfs: false
|
||||
|
||||
when:
|
||||
# branch: main
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
|
||||
steps:
|
||||
epub-check:
|
||||
image: archlinux:latest
|
||||
commands:
|
||||
- pacman -Sy --needed --noconfirm archlinux-keyring
|
||||
- pacman -Syu --needed --noconfirm epubcheck inkscape noto-fonts make patch python-myst-parser python-sphinx python-sphinxext-opengraph ttf-montserrat
|
||||
# fix sphinx: https://github.com/sphinx-doc/sphinx/issues/11598
|
||||
- patch -Np1 -d /usr/lib/python3.11/site-packages/ -i "$(pwd)/book/patches/sphinx-11766.patch"
|
||||
- make -C book epub-check
|
18
.woodpecker/licensing.yml
Normal file
18
.woodpecker/licensing.yml
Normal file
|
@ -0,0 +1,18 @@
|
|||
# SPDX-FileCopyrightText: 2023 The "Notes on OpenPGP" project
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
lfs: false
|
||||
|
||||
when:
|
||||
# branch: main
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
|
||||
steps:
|
||||
reuse:
|
||||
image: fsfe/reuse
|
23
.woodpecker/links.yml
Normal file
23
.woodpecker/links.yml
Normal file
|
@ -0,0 +1,23 @@
|
|||
# SPDX-FileCopyrightText: 2023 The "Notes on OpenPGP" project
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
partial: true
|
||||
lfs: false
|
||||
|
||||
when:
|
||||
# branch: main
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
|
||||
steps:
|
||||
link-check:
|
||||
image: archlinux:latest
|
||||
commands:
|
||||
- pacman -Sy --needed --noconfirm archlinux-keyring
|
||||
- pacman -Syu --needed --noconfirm inkscape lychee make noto-fonts python-myst-parser python-sphinx python-sphinxext-opengraph ttf-montserrat
|
||||
- make -C book html-linkcheck
|
149
CONTRIBUTING.md
Normal file
149
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,149 @@
|
|||
<!--
|
||||
SPDX-FileCopyrightText: 2023 The "Notes on OpenPGP" project
|
||||
SPDX-License-Identifier: CC-BY-SA-4.0
|
||||
-->
|
||||
|
||||
# Contributing
|
||||
|
||||
These are the contribution guidelines for "Notes on OpenPGP."
|
||||
|
||||
Development takes place at https://codeberg.org/openpgp/notes.
|
||||
|
||||
Discussion around this project takes place in [`#notes-on-openpgp:matrix.org`] on [Matrix].
|
||||
|
||||
## Providing changes
|
||||
|
||||
This project uses [sphinx] and [MyST-parser] to allow building various output formats, such as [HTML] and [EPUB], for the included book projects.
|
||||
|
||||
Contributors can provide changes by pull request towards the project.
|
||||
|
||||
### Requirements
|
||||
|
||||
The following packages need to be installed on the system in order for the build to suceed:
|
||||
|
||||
* [inkscape](https://inkscape.org)
|
||||
* `make`
|
||||
* [myst-parser](https://github.com/executablebooks/MyST-Parser)
|
||||
* [sphinx](https://github.com/sphinx-doc/sphinx/)
|
||||
* [sphinxext-opengraph](https://github.com/wpilibsuite/sphinxext-opengraph)
|
||||
|
||||
Required fonts:
|
||||
|
||||
* [Montserrat](https://github.com/JulietaUla/Montserrat)
|
||||
* [Noto](https://fonts.google.com/noto)
|
||||
|
||||
Optional test/check dependencies:
|
||||
|
||||
* [codespell](https://github.com/codespell-project/codespell)
|
||||
* [lychee](https://lychee.cli.rs/)
|
||||
* [epubcheck](https://github.com/w3c/epubcheck)
|
||||
* [watchexec](https://github.com/watchexec/watchexec)
|
||||
|
||||
### Building and testing
|
||||
|
||||
The included book projects can be built and tested using a `Makefile`.
|
||||
|
||||
The below examples show how to use it with a book named `book`.
|
||||
|
||||
To cleanly build the [HTML] output:
|
||||
|
||||
```shell
|
||||
$ make -C book clean build
|
||||
```
|
||||
|
||||
To cleanly build the [EPUB] output:
|
||||
|
||||
```shell
|
||||
$ make -C book clean epub
|
||||
```
|
||||
|
||||
To spell check all files using [codespell]:
|
||||
|
||||
```shell
|
||||
$ make -C book codespell
|
||||
```
|
||||
|
||||
To check the external links in all [HTML] files using [lychee]:
|
||||
|
||||
```shell
|
||||
$ make -C book html-linkcheck
|
||||
```
|
||||
|
||||
### Writing text
|
||||
|
||||
The syntax follows what is available in [MyST-parser].
|
||||
|
||||
---
|
||||
**NOTE**: It is advisable to always relate to the [MyST-parser] documentation, as [MyST] itself offers more/ different features!
|
||||
|
||||
---
|
||||
|
||||
#### Including files
|
||||
|
||||
It is advisable to [include external files](https://myst-parser.readthedocs.io/en/latest/syntax/code_and_apis.html#including-code-from-files) with data, instead of using a code block to display the data.
|
||||
|
||||
---
|
||||
**NOTE**: The reason for this is, that `codespell` is used to check for common spelling mistakes and output from other programs may contain text, that will trigger it to flag it as an error.
|
||||
|
||||
To work around this issue, `codespell` is configured to ignore example files, so that not entire chapter files have to be ignored.
|
||||
|
||||
---
|
||||
|
||||
Use the `{literalcode}` directive to include files:
|
||||
|
||||
````
|
||||
|
||||
```{literalinclude} examples/my-example.txt
|
||||
:language: text
|
||||
```
|
||||
|
||||
````
|
||||
|
||||
#### Cross-referencing
|
||||
|
||||
There are a few guidelines when it comes to cross-referencing, which work around oddities with [sphinx] and [MyST-parser]:
|
||||
|
||||
* When adding [explicit targets], use [kebab case].
|
||||
* Do not rename already released [explicit targets], as it will break deep linking by downstreams relying on these targets.
|
||||
* When referencing chapters by file, use `[](/my-chapter)`, instead of relying on [explicit targets] for a top-level heading.
|
||||
* To reference a figure by its title, use `[](#my-figure)` for a figure with the `:name:` attribute `my-figure` (and e.g., the title `My Figure`).
|
||||
* To reference a figure by number (e.g. `Fig. 1`), use ```{numref}`my-figure` ``` for a figure with the `:name:` attribute `my-figure`.
|
||||
|
||||
#### Figures
|
||||
|
||||
[Figure] environments must have a `:name:` attribute, prefixed with `fig-`, so that they can be referenced elsewhere.
|
||||
The `:alt:` attribute should explain what is displayed in the picture, as this is an [accessibility] feature. To keep matters brief, components and symbols that are described in other figures already, can be referenced by name instead of explaining them in detail.
|
||||
|
||||
#### Glossary
|
||||
|
||||
This project defines terms in a [glossary]. Using the `term` role, it is possible to reference these terms from anywhere.
|
||||
Given a term `My Term` in the glossary, it is possible to reference it directly using ```{term}`my term```` or indirectly ```{term}`something else<My Term>````.
|
||||
|
||||
There are a few rules, that should be kept in mind when creating terms and referencing them.
|
||||
|
||||
* alternative terms for a term may exist in the glossary for completeness (e.g., `My Other Term` may point to `My Term` in the glossary)
|
||||
* references to a term should always point to the deepest redirect (e.g., if `My Other Term` points to `My Term` in the glossary, references should point to `My Term` and not `My Other Term`)
|
||||
* even if links to external resources can also be found in a section that is related to a term, the links related to the term should also be present in the glossary
|
||||
|
||||
## License
|
||||
|
||||
All text contributions fall under the terms of the [CC-BY-SA-4.0].
|
||||
|
||||
Configuration file contributions fall under the terms of the [CC0-1.0].
|
||||
|
||||
[`#notes-on-openpgp:matrix.org`]: https://matrix.to/#/%23notes-on-openpgp%3Amatrix.org
|
||||
[Matrix]: https://matrix.org
|
||||
[sphinx]: https://www.sphinx-doc.org/en/master/
|
||||
[MyST-parser]: https://myst-parser.readthedocs.io/en/latest/
|
||||
[HTML]: https://en.wikipedia.org/wiki/HTML
|
||||
[EPUB]: https://en.wikipedia.org/wiki/EPUB
|
||||
[MyST]: https://mystmd.org/guide/quickstart-myst-markdown
|
||||
[codespell]: https://github.com/codespell-project/codespell
|
||||
[lychee]: https://lychee.cli.rs
|
||||
[explicit targets]: https://myst-parser.readthedocs.io/en/latest/syntax/cross-referencing.html#creating-explicit-targets
|
||||
[kebab case]: https://en.wikipedia.org/wiki/Letter_case#Kebab_case
|
||||
[Figure]: https://myst-parser.readthedocs.io/en/latest/syntax/images_and_figures.html#figures-images-with-captions
|
||||
[accessibility]: https://en.wikipedia.org/wiki/Computer_accessibility
|
||||
[glossary]: https://myst-parser.readthedocs.io/en/latest/syntax/typography.html#definition-lists-and-glossaries
|
||||
[CC-BY-SA-4.0]: ./LICENSES/CC-BY-SA-4.0.txt
|
||||
[CC0-1.0]: ./LICENSES/CC0-1.0.txt
|
16
Dockerfile
Normal file
16
Dockerfile
Normal file
|
@ -0,0 +1,16 @@
|
|||
# SPDX-FileCopyrightText: 2023 The "Notes on OpenPGP" project
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
FROM archlinux:latest AS build
|
||||
COPY book/ /book
|
||||
WORKDIR /book
|
||||
# fix EPUB rendering: https://github.com/sphinx-doc/sphinx/issues/11598
|
||||
RUN \
|
||||
pacman -Sy --needed --noconfirm archlinux-keyring \
|
||||
&& pacman -Syu --needed --noconfirm inkscape make noto-fonts patch python-myst-parser python-sphinx python-sphinxext-opengraph ttf-montserrat \
|
||||
&& patch -Np1 -d /usr/lib/python3.11/site-packages/ -i /book/patches/sphinx-11766.patch \
|
||||
&& make epub html
|
||||
|
||||
FROM scratch
|
||||
COPY --from=build /book/build/html /
|
||||
COPY --from=build --chown=644 /book/build/epub/OpenPGP_for_application_developers.epub /
|
428
LICENSES/CC-BY-SA-4.0.txt
Normal file
428
LICENSES/CC-BY-SA-4.0.txt
Normal file
|
@ -0,0 +1,428 @@
|
|||
Attribution-ShareAlike 4.0 International
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||
does not provide legal services or legal advice. Distribution of
|
||||
Creative Commons public licenses does not create a lawyer-client or
|
||||
other relationship. Creative Commons makes its licenses and related
|
||||
information available on an "as-is" basis. Creative Commons gives no
|
||||
warranties regarding its licenses, any material licensed under their
|
||||
terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the
|
||||
fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and
|
||||
conditions that creators and other rights holders may use to share
|
||||
original works of authorship and other material subject to copyright
|
||||
and certain other rights specified in the public license below. The
|
||||
following considerations are for informational purposes only, are not
|
||||
exhaustive, and do not form part of our licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are
|
||||
intended for use by those authorized to give the public
|
||||
permission to use material in ways otherwise restricted by
|
||||
copyright and certain other rights. Our licenses are
|
||||
irrevocable. Licensors should read and understand the terms
|
||||
and conditions of the license they choose before applying it.
|
||||
Licensors should also secure all rights necessary before
|
||||
applying our licenses so that the public can reuse the
|
||||
material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
licensed material under specified terms and conditions. If
|
||||
the licensor's permission is not necessary for any reason--for
|
||||
example, because of any applicable exception or limitation to
|
||||
copyright--then that use is not regulated by the license. Our
|
||||
licenses grant only permissions under copyright and certain
|
||||
other rights that a licensor has authority to grant. Use of
|
||||
the licensed material may still be restricted for other
|
||||
reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests,
|
||||
such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||
License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||
License"). To the extent this Public License may be interpreted as a
|
||||
contract, You are granted the Licensed Rights in consideration of Your
|
||||
acceptance of these terms and conditions, and the Licensor grants You
|
||||
such rights in consideration of benefits the Licensor receives from
|
||||
making the Licensed Material available under these terms and
|
||||
conditions.
|
||||
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. BY-SA Compatible License means a license listed at
|
||||
creativecommons.org/compatiblelicenses, approved by Creative
|
||||
Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
e. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
g. License Elements means the license attributes listed in the name
|
||||
of a Creative Commons Public License. The License Elements of this
|
||||
Public License are Attribution and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
k. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
l. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
m. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part; and
|
||||
|
||||
b. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with
|
||||
its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter created,
|
||||
and to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective
|
||||
Technological Measures. For purposes of this Public License,
|
||||
simply making modifications authorized by this Section 2(a)
|
||||
(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. Additional offer from the Licensor -- Adapted Material.
|
||||
Every recipient of Adapted Material from You
|
||||
automatically receives an offer from the Licensor to
|
||||
exercise the Licensed Rights in the Adapted Material
|
||||
under the conditions of the Adapter's License You apply.
|
||||
|
||||
c. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to
|
||||
the extent possible, the Licensor waives and/or agrees not to
|
||||
assert any such rights held by the Licensor to the limited
|
||||
extent necessary to allow You to exercise the Licensed
|
||||
Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties.
|
||||
|
||||
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if
|
||||
designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
|
||||
b. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
|
||||
c. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
b. ShareAlike.
|
||||
|
||||
In addition to the conditions in Section 3(a), if You Share
|
||||
Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons
|
||||
license with the same License Elements, this version or
|
||||
later, or a BY-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the
|
||||
Adapter's License You apply. You may satisfy this condition
|
||||
in any reasonable manner based on the medium, means, and
|
||||
context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms
|
||||
or conditions on, or apply any Effective Technological
|
||||
Measures to, Adapted Material that restrict exercise of the
|
||||
rights granted under the Adapter's License You apply.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material,
|
||||
including for purposes of Section 3(b); and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public licenses.
|
||||
Notwithstanding, Creative Commons may elect to apply one of its public
|
||||
licenses to material it publishes and in those instances will be
|
||||
considered the “Licensor.” The text of the Creative Commons public
|
||||
licenses is dedicated to the public domain under the CC0 Public Domain
|
||||
Dedication. Except for the limited purpose of indicating that material
|
||||
is shared under a Creative Commons public license or as otherwise
|
||||
permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the public
|
||||
licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
|
119
LICENSES/CC0-1.0.txt
Normal file
119
LICENSES/CC0-1.0.txt
Normal file
|
@ -0,0 +1,119 @@
|
|||
Creative Commons Legal Code
|
||||
|
||||
CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
|
||||
NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
|
||||
AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
|
||||
ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
|
||||
OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
|
||||
LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
|
||||
OR WORKS PROVIDED HEREUNDER.
|
||||
|
||||
Statement of Purpose
|
||||
|
||||
The laws of most jurisdictions throughout the world automatically confer exclusive
|
||||
Copyright and Related Rights (defined below) upon the creator and subsequent
|
||||
owner(s) (each and all, an "owner") of an original work of authorship and/or
|
||||
a database (each, a "Work").
|
||||
|
||||
Certain owners wish to permanently relinquish those rights to a Work for the
|
||||
purpose of contributing to a commons of creative, cultural and scientific
|
||||
works ("Commons") that the public can reliably and without fear of later claims
|
||||
of infringement build upon, modify, incorporate in other works, reuse and
|
||||
redistribute as freely as possible in any form whatsoever and for any purposes,
|
||||
including without limitation commercial purposes. These owners may contribute
|
||||
to the Commons to promote the ideal of a free culture and the further production
|
||||
of creative, cultural and scientific works, or to gain reputation or greater
|
||||
distribution for their Work in part through the use and efforts of others.
|
||||
|
||||
For these and/or other purposes and motivations, and without any expectation
|
||||
of additional consideration or compensation, the person associating CC0 with
|
||||
a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
|
||||
and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
|
||||
and publicly distribute the Work under its terms, with knowledge of his or
|
||||
her Copyright and Related Rights in the Work and the meaning and intended
|
||||
legal effect of CC0 on those rights.
|
||||
|
||||
1. Copyright and Related Rights. A Work made available under CC0 may be protected
|
||||
by copyright and related or neighboring rights ("Copyright and Related Rights").
|
||||
Copyright and Related Rights include, but are not limited to, the following:
|
||||
|
||||
i. the right to reproduce, adapt, distribute, perform, display, communicate,
|
||||
and translate a Work;
|
||||
|
||||
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||
|
||||
iii. publicity and privacy rights pertaining to a person's image or likeness
|
||||
depicted in a Work;
|
||||
|
||||
iv. rights protecting against unfair competition in regards to a Work, subject
|
||||
to the limitations in paragraph 4(a), below;
|
||||
|
||||
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||
in a Work;
|
||||
|
||||
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||
European Parliament and of the Council of 11 March 1996 on the legal protection
|
||||
of databases, and under any national implementation thereof, including any
|
||||
amended or successor version of such directive); and
|
||||
|
||||
vii. other similar, equivalent or corresponding rights throughout the world
|
||||
based on applicable law or treaty, and any national implementations thereof.
|
||||
|
||||
2. Waiver. To the greatest extent permitted by, but not in contravention of,
|
||||
applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
|
||||
unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
|
||||
and Related Rights and associated claims and causes of action, whether now
|
||||
known or unknown (including existing as well as future claims and causes of
|
||||
action), in the Work (i) in all territories worldwide, (ii) for the maximum
|
||||
duration provided by applicable law or treaty (including future time extensions),
|
||||
(iii) in any current or future medium and for any number of copies, and (iv)
|
||||
for any purpose whatsoever, including without limitation commercial, advertising
|
||||
or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
|
||||
benefit of each member of the public at large and to the detriment of Affirmer's
|
||||
heirs and successors, fully intending that such Waiver shall not be subject
|
||||
to revocation, rescission, cancellation, termination, or any other legal or
|
||||
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||
as contemplated by Affirmer's express Statement of Purpose.
|
||||
|
||||
3. Public License Fallback. Should any part of the Waiver for any reason be
|
||||
judged legally invalid or ineffective under applicable law, then the Waiver
|
||||
shall be preserved to the maximum extent permitted taking into account Affirmer's
|
||||
express Statement of Purpose. In addition, to the extent the Waiver is so
|
||||
judged Affirmer hereby grants to each affected person a royalty-free, non
|
||||
transferable, non sublicensable, non exclusive, irrevocable and unconditional
|
||||
license to exercise Affirmer's Copyright and Related Rights in the Work (i)
|
||||
in all territories worldwide, (ii) for the maximum duration provided by applicable
|
||||
law or treaty (including future time extensions), (iii) in any current or
|
||||
future medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||
including without limitation commercial, advertising or promotional purposes
|
||||
(the "License"). The License shall be deemed effective as of the date CC0
|
||||
was applied by Affirmer to the Work. Should any part of the License for any
|
||||
reason be judged legally invalid or ineffective under applicable law, such
|
||||
partial invalidity or ineffectiveness shall not invalidate the remainder of
|
||||
the License, and in such case Affirmer hereby affirms that he or she will
|
||||
not (i) exercise any of his or her remaining Copyright and Related Rights
|
||||
in the Work or (ii) assert any associated claims and causes of action with
|
||||
respect to the Work, in either case contrary to Affirmer's express Statement
|
||||
of Purpose.
|
||||
|
||||
4. Limitations and Disclaimers.
|
||||
|
||||
a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
|
||||
licensed or otherwise affected by this document.
|
||||
|
||||
b. Affirmer offers the Work as-is and makes no representations or warranties
|
||||
of any kind concerning the Work, express, implied, statutory or otherwise,
|
||||
including without limitation warranties of title, merchantability, fitness
|
||||
for a particular purpose, non infringement, or the absence of latent or other
|
||||
defects, accuracy, or the present or absence of errors, whether or not discoverable,
|
||||
all to the greatest extent permissible under applicable law.
|
||||
|
||||
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||
that may apply to the Work or any use thereof, including without limitation
|
||||
any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
|
||||
responsibility for obtaining any necessary consents, permissions or other
|
||||
rights required for any use of the Work.
|
||||
|
||||
d. Affirmer understands and acknowledges that Creative Commons is not a party
|
||||
to this document and has no duty or obligation with respect to this CC0 or
|
||||
use of the Work.
|
21
README.md
21
README.md
|
@ -6,3 +6,24 @@ SPDX-License-Identifier: CC-BY-SA-4.0
|
|||
# Notes on OpenPGP
|
||||
|
||||
The "Notes on OpenPGP" project aims to produce accessible documentation for the OpenPGP ecosystem.
|
||||
|
||||
# OpenPGP for application developers
|
||||
|
||||
A book for application developers who want to integrate OpenPGP functionality into their software.
|
||||
|
||||
This book serves a standalone introduction to the concepts of OpenPGP. It also introduces readers to the [OpenPGP RFC](https://datatracker.ietf.org/doc/draft-ietf-openpgp-crypto-refresh/).
|
||||
|
||||
## Rendered versions of this text
|
||||
|
||||
### Stable
|
||||
|
||||
The *main* branch of this repository is continuously built and deployed to:
|
||||
|
||||
- html: <https://openpgp.dev/book>
|
||||
- epub: <https://openpgp.dev/book/OpenPGP_for_application_developers.epub>
|
||||
|
||||
Note: This text is still under development. However, these links always present a stable view of our writing process.
|
||||
|
||||
### Snapshots of work in progress
|
||||
|
||||
The current state of pull requests is rendered to https://openpgp.codeberg.page/pr-preview/123456/ (you'll have to insert an actual pull request ID into the URL)
|
||||
|
|
5
book/.codespellrc
Normal file
5
book/.codespellrc
Normal file
|
@ -0,0 +1,5 @@
|
|||
# SPDX-FileCopyrightText: 2023 The "Notes on OpenPGP" project
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
[codespell]
|
||||
skip = ./build,./input,./assets/*/*,./source/examples/*
|
70
book/Makefile
Normal file
70
book/Makefile
Normal file
|
@ -0,0 +1,70 @@
|
|||
# SPDX-FileCopyrightText: 2023 The "Notes on OpenPGP" project
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
#
|
||||
# Minimal makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line, and also
|
||||
# from the environment for the first two.
|
||||
CODESPELL ?= codespell
|
||||
EBOOK_VIEWER ?= ebook-viewer
|
||||
EPUBCHECK ?= epubcheck
|
||||
INKSCAPE ?= inkscape
|
||||
SPHINXOPTS ?= -W
|
||||
SPHINXBUILD ?= sphinx-build
|
||||
LYCHEE ?= lychee
|
||||
PRINTF ?= printf
|
||||
RM ?= rm
|
||||
WATCHEXEC ?= watchexec
|
||||
ASSETSDIR = assets
|
||||
SOURCEDIR = source
|
||||
BUILDDIR = build
|
||||
|
||||
# clean build output and also preprocessed/ converted data
|
||||
clean-all: clean
|
||||
@$(RM) -rv $(SOURCEDIR)/plain_svg/
|
||||
|
||||
# convert all SVG to plain SVGs without metadata and paths instead of text
|
||||
convert-svg:
|
||||
for file in $(ASSETSDIR)/inkscape/*.svg $(ASSETSDIR)/drawio/*.svg; do if [[ ! -f $(SOURCEDIR)/plain_svg/$$(basename $$file) ]]; then $(INKSCAPE) --export-text-to-path --export-plain-svg --export-filename=$(SOURCEDIR)/plain_svg/$$(basename $$file) $$file; fi; done
|
||||
|
||||
epub: convert-svg
|
||||
@$(SPHINXBUILD) -M epub "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
epub-check: clean epub
|
||||
@$(EPUBCHECK) "$(BUILDDIR)/epub/"*.epub
|
||||
|
||||
# use watchexec to rebuild the EPUB whenever a markdown file changes
|
||||
# this target kills *any* open instance of calibre's ebook-viewer, that is currently showing OpenPGPforapplicationdevelopers.epub
|
||||
epub-watch:
|
||||
@$(WATCHEXEC) --shell bash -e css,html,j2,md,py,svg 'make clean epub && ev_pid="$$(pgrep -af "^python3.*ebook-viewer.*OpenPGP_for_application_developers" | cut -f1 -d " ")" && if [[ -n "$$ev_pid" ]]; then kill -9 "$$ev_pid"; fi && $(EBOOK_VIEWER) $(BUILDDIR)/epub/OpenPGP_for_application_developers.epub &'
|
||||
|
||||
# Put it first so that "make" without argument is like "make help".
|
||||
help:
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
html: convert-svg
|
||||
@$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
html-linkcheck: clean html
|
||||
@$(LYCHEE) --exclude "https://openpgp.dev*" --exclude "https://codeberg.org/openpgp/notes" "$(BUILDDIR)/html/"*.html
|
||||
|
||||
# use watchexec to rebuild the HTML whenever a markdown file changes
|
||||
html-watch:
|
||||
@$(WATCHEXEC) --shell bash -e css,html,j2,md,py,svg 'make clean html'
|
||||
|
||||
# spell check all sources
|
||||
# NOTE: diagrams are not yet spell checked, but we emit the required changes
|
||||
codespell:
|
||||
@$(PRINTF) "The following change suggestions are only warnings! (Please don't fix them)\n"
|
||||
@$(CODESPELL) source/diag || true
|
||||
@$(CODESPELL) input/ || true
|
||||
@$(PRINTF) "The following change suggestions are errors!\n"
|
||||
@$(CODESPELL) .
|
||||
|
||||
.PHONY: help Makefile
|
||||
|
||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||
%: Makefile
|
||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
57
book/assets/drawio/PKESKv3-decryption.drawio
Normal file
57
book/assets/drawio/PKESKv3-decryption.drawio
Normal file
|
@ -0,0 +1,57 @@
|
|||
<mxfile host="app.diagrams.net" modified="2023-12-08T15:11:35.977Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" etag="X9rFbrJLqJOCIqTxE24q" version="22.1.7" type="device">
|
||||
<diagram name="Seite-1" id="ocT50L08296YUH-PY7lG">
|
||||
<mxGraphModel dx="2261" dy="708" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-84" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="h-jzOOFD72CvbkbpJgZJ-4" target="h-jzOOFD72CvbkbpJgZJ-14" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-4" value="<div>Secret Key</div>Key-ID: 0xB0B" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="-120" y="257.5" width="120" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-68" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="h-jzOOFD72CvbkbpJgZJ-14" target="h-jzOOFD72CvbkbpJgZJ-64" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-14" value="<div>Asymmetric</div><div>Decryption<br></div>" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="40" y="257.5" width="120" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-64" value="<div>Cipher Algorithm</div><div>+</div><div>Session Key<br></div>" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="40" y="397.5" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-2" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="240" y="252.5" width="120" height="155" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-15" value="" style="curved=1;endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;shape=flexArrow;entryX=1;entryY=0.5;entryDx=0;entryDy=0;width=10;endSize=4;" parent="1" source="h-jzOOFD72CvbkbpJgZJ-7" target="h-jzOOFD72CvbkbpJgZJ-14" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="390" y="410" as="sourcePoint" />
|
||||
<mxPoint x="270" y="150" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="180" y="298" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-3" value="<div>PKESKv3</div>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="270" y="252.5" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-5" value="Key-ID: 0xB0B" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="250" y="325" width="100" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-7" value="Asymmetric Algo." style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="250" y="282.5" width="100" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-89" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=1;entryDx=0;entryDy=0;" parent="1" source="h-jzOOFD72CvbkbpJgZJ-9" target="h-jzOOFD72CvbkbpJgZJ-14" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-90" value="ciphertext" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="h-jzOOFD72CvbkbpJgZJ-89" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.755" y="1" relative="1" as="geometry">
|
||||
<mxPoint y="10" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-9" value="Enc. Session-Key" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="250" y="367.5" width="100" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
4
book/assets/drawio/PKESKv3-decryption.svg
Normal file
4
book/assets/drawio/PKESKv3-decryption.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 12 KiB |
66
book/assets/drawio/PKESKv6-decryption.drawio
Normal file
66
book/assets/drawio/PKESKv6-decryption.drawio
Normal file
|
@ -0,0 +1,66 @@
|
|||
<mxfile host="app.diagrams.net" modified="2023-12-07T20:53:57.709Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" etag="V1N0-XVAYuoNan-dL_ob" version="22.1.7" type="device">
|
||||
<diagram name="Seite-1" id="ocT50L08296YUH-PY7lG">
|
||||
<mxGraphModel dx="2261" dy="740" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-84" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="h-jzOOFD72CvbkbpJgZJ-4" target="h-jzOOFD72CvbkbpJgZJ-14" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-4" value="<div>Secret Key</div><div>Key-ID: 0xB0B</div>Version: 6" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="-120" y="257.5" width="120" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-68" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="h-jzOOFD72CvbkbpJgZJ-14" target="h-jzOOFD72CvbkbpJgZJ-64" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-14" value="<div>Asymmetric</div><div>Decryption<br></div>" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="40" y="257.5" width="120" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-64" value="Session-Key" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="40" y="397.5" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-2" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="240" y="252.5" width="120" height="197.5" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-15" value="" style="curved=1;endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;shape=flexArrow;entryX=1;entryY=0.5;entryDx=0;entryDy=0;width=10;endSize=4;" parent="1" source="h-jzOOFD72CvbkbpJgZJ-7" target="h-jzOOFD72CvbkbpJgZJ-14" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="390" y="410" as="sourcePoint" />
|
||||
<mxPoint x="270" y="150" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="180" y="298" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-3" value="<div>PKESKv6</div>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="270" y="252.5" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-5" value="Fingerprint: 0xB0B" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="250" y="325" width="100" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-7" value="Asymmetric Algo." style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="250" y="282.5" width="100" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-89" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=1;entryDx=0;entryDy=0;" parent="1" source="h-jzOOFD72CvbkbpJgZJ-9" target="h-jzOOFD72CvbkbpJgZJ-14" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="180" y="425" />
|
||||
<mxPoint x="180" y="380" />
|
||||
<mxPoint x="130" y="380" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-90" value="ciphertext" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="h-jzOOFD72CvbkbpJgZJ-89" vertex="1" connectable="0">
|
||||
<mxGeometry x="0.755" y="1" relative="1" as="geometry">
|
||||
<mxPoint y="10" as="offset" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="h-jzOOFD72CvbkbpJgZJ-9" value="Enc. Session-Key" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="250" y="410" width="100" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="DWDa1s29pt83LbMmWAcP-1" value="Key-Version: 6" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="250" y="370" width="100" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
4
book/assets/drawio/PKESKv6-decryption.svg
Normal file
4
book/assets/drawio/PKESKv6-decryption.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 13 KiB |
70
book/assets/drawio/SEIPDv1-PKESK.drawio
Normal file
70
book/assets/drawio/SEIPDv1-PKESK.drawio
Normal file
|
@ -0,0 +1,70 @@
|
|||
<mxfile host="app.diagrams.net" modified="2023-11-27T22:14:00.127Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" etag="mr7Q-uG6vTA41LXUmL4d" version="22.1.4" type="device">
|
||||
<diagram name="Seite-1" id="ocT50L08296YUH-PY7lG">
|
||||
<mxGraphModel dx="1434" dy="759" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="_W93K0Xoa3x0vg-rA2AI-12" value="" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="380" y="60" width="160" height="290" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="_W93K0Xoa3x0vg-rA2AI-2" value="Session Key" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;dashed=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="220" y="130" width="120" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="_W93K0Xoa3x0vg-rA2AI-3" value="<div>PKESK #1</div>0xBBBB..." style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="400" y="180" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="_W93K0Xoa3x0vg-rA2AI-4" value="<div>PKESK #0</div>0xAAAA..." style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="400" y="100" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="_W93K0Xoa3x0vg-rA2AI-5" value="<div>Alice'</div><div>Encryption Key</div><div>0xAAAA...<br></div>" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="70" y="100" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="_W93K0Xoa3x0vg-rA2AI-6" value="<pre class="code-block"><font face="Helvetica">Bob's<br>Encryption Key<br>0xBBBB...<br></font></pre>" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="70" y="180" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="_W93K0Xoa3x0vg-rA2AI-7" value="" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;startArrow=box;startFill=0;" edge="1" parent="1" source="_W93K0Xoa3x0vg-rA2AI-2" target="_W93K0Xoa3x0vg-rA2AI-4">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="270" y="420" as="sourcePoint" />
|
||||
<mxPoint x="320" y="370" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="190" y="160" />
|
||||
<mxPoint x="190" y="90" />
|
||||
<mxPoint x="280" y="90" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="_W93K0Xoa3x0vg-rA2AI-8" value="" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;startArrow=box;startFill=0;" edge="1" parent="1" source="_W93K0Xoa3x0vg-rA2AI-2" target="_W93K0Xoa3x0vg-rA2AI-3">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="270" y="420" as="sourcePoint" />
|
||||
<mxPoint x="320" y="370" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="190" y="180" />
|
||||
<mxPoint x="190" y="240" />
|
||||
<mxPoint x="280" y="250" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="_W93K0Xoa3x0vg-rA2AI-9" value="Plaintext" style="shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;dashed=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="70" y="260" width="120" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="_W93K0Xoa3x0vg-rA2AI-10" value="SEIPDv1" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="400" y="270" width="120" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="_W93K0Xoa3x0vg-rA2AI-11" value="" style="curved=1;endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=box;startFill=0;" edge="1" parent="1" source="_W93K0Xoa3x0vg-rA2AI-9" target="_W93K0Xoa3x0vg-rA2AI-10">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="280" y="330" as="sourcePoint" />
|
||||
<mxPoint x="320" y="370" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="240" y="210" />
|
||||
<mxPoint x="320" y="210" />
|
||||
<mxPoint x="340" y="300" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="_W93K0Xoa3x0vg-rA2AI-13" value="Encrypted Message" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="400" y="60" width="120" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
447
book/assets/drawio/SEIPDv1-PKESK.svg
Normal file
447
book/assets/drawio/SEIPDv1-PKESK.svg
Normal file
|
@ -0,0 +1,447 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Do not edit this file with editors other than draw.io -->
|
||||
|
||||
<svg
|
||||
style="background-color: rgb(255, 255, 255);"
|
||||
version="1.1"
|
||||
width="471px"
|
||||
height="291px"
|
||||
viewBox="-0.5 -0.5 471 291"
|
||||
content="<mxfile host="app.diagrams.net" modified="2023-12-07T23:14:25.771Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" etag="xkhRRwXRJqu8caXvmUf5" version="22.1.7" type="device"><diagram name="Seite-1" id="ocT50L08296YUH-PY7lG">7VlJb6MwFP41UU+NAKdZjtm6KKoUKYfpnEYOuGDVwYxxCMyvHzvYAQzZRk2TSpNL/T4/24/vLTzcFhiv0icGo+CVeoi0HMtLW2DSchy7Azrij0SyHOl1rBzwGfaUUgEs8B+kQK22xh6KK4qcUsJxVAVdGobI5RUMMkY3VbV3SqqnRtBHNWDhQlJHf2CPBznad3oF/oywH+iT7e4gn1lBrayeJA6gRzclCExbYMwo5flolY4RkeRpXvJ1j3tmd4YxFPJTFvz6MQAz641CkFqJf8+GzvDl3nbybRJI1uqJlbU80xRsAszRIoKulDfCzS0wCviKCMkWw7odyrQEMY7SEqTsekJ0hTjLhIqaBX3FkQqSrhI3BeO2xoIS285AgVB52d9tXRAhBoqLM3ip07JAcYxpKMAZymocCedGchigFPpCC4wixLCwBbECnWtIUDE6wuo7TpFOByl7MA6Q93mU78JSUW6DBs6dBs77l6IcNERil3D57DgRQ18O57PpYtaSdgFbT4vTShpWOhK/drtd8xGj69Dbcmgd5/8TKO5YBsX9EynuXorizpkUW/soHorfTVJsXZvih1MoHhLsortmchvUp6HLsoiXqs+JC0uOyueWzNQ299jrUPtLHNq7NX929/ozYkj2HQTG+Znd32v5Kh+5oge6XxLqfhSYyfo7FQyJbiRnstB7RiRBHLuwvnREl3dx3Y/7YqPQKBXEA0GQW1SDtw95o7Fx9XLaO947uWuW7ChCoTeULakQt2GD3SpH1eopiGLZW1n4KYX2gxYnaXlykmkpxfytNM5XOQ9KLFZJQS+KOWRcG7ekqYYesaRkq7LXgzFdMxXHB5spsZ+P+PHXE/IqLXk9HkoOf2jwt8YYIpDjpNrINwWBOmFO8TYrdYdkxFvHMeIof261qtx4GxsBo9UCPWOjnJjaRsIdMCupRVIh3m+wPTASpGsdtMvUHxxWd/qH1MUgt7dIp53H/j3D+t8ow3rfIMPA/wz71Azrn5dhTue8FNNEXzTHBrUcmxMozEIpryXbt/vMNSKs8WbhS79y9b1W+WZh+jKfJHaN7Gt/TO3Iu1qDZds1sm6h/l+0lA9OLOU6kG6llhulC4Abr+W6Fu+i3T5cm027juob+wPrC2q5Xb9EUx+IIugd6xXFsbzvNnNoW+sriRJzRj/QmBIqC3tIQ7Qt1oQYECTYD2W2iTiX74CRLDfi+5UM1cQKe548prF+VdPxAiXs1HJvBusJFUyIxd197r/iPyBg+hc=</diagram></mxfile>"
|
||||
id="svg16"
|
||||
sodipodi:docname="SEIPDv1-PKESK.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
<sodipodi:namedview
|
||||
id="namedview16"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="1.6539278"
|
||||
inkscape:cx="235.19769"
|
||||
inkscape:cy="145.41142"
|
||||
inkscape:window-width="2396"
|
||||
inkscape:window-height="1293"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg16" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
id="g15">
|
||||
<rect
|
||||
x="310"
|
||||
y="0"
|
||||
width="160"
|
||||
height="290"
|
||||
fill="rgb(255, 255, 255)"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
pointer-events="all"
|
||||
id="rect1" />
|
||||
<path
|
||||
d="M 170 70 L 250 70 L 270 110 L 250 150 L 170 150 L 150 110 Z"
|
||||
fill="rgb(255, 255, 255)"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
stroke-miterlimit="10"
|
||||
stroke-dasharray="3 3"
|
||||
pointer-events="all"
|
||||
id="path1" />
|
||||
<g
|
||||
transform="translate(-0.5 -0.5)"
|
||||
id="g1">
|
||||
<switch
|
||||
id="switch1">
|
||||
<foreignObject
|
||||
style="overflow: visible; text-align: left;"
|
||||
pointer-events="none"
|
||||
width="100%"
|
||||
height="100%"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 110px; margin-left: 151px;">
|
||||
<xhtml:div
|
||||
style="box-sizing: border-box; font-size: 0px; text-align: center;"
|
||||
data-drawio-colors="color: rgb(0, 0, 0); ">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Session Key</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="210"
|
||||
y="114"
|
||||
fill="rgb(0, 0, 0)"
|
||||
font-family="Helvetica"
|
||||
font-size="12px"
|
||||
text-anchor="middle"
|
||||
id="text1">Session Key</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect
|
||||
x="330"
|
||||
y="120"
|
||||
width="120"
|
||||
height="60"
|
||||
fill="rgb(255, 255, 255)"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
pointer-events="all"
|
||||
id="rect2" />
|
||||
<g
|
||||
transform="translate(-0.5 -0.5)"
|
||||
id="g2">
|
||||
<switch
|
||||
id="switch2">
|
||||
<foreignObject
|
||||
style="overflow: visible; text-align: left;"
|
||||
pointer-events="none"
|
||||
width="100%"
|
||||
height="100%"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 150px; margin-left: 331px;">
|
||||
<xhtml:div
|
||||
style="box-sizing: border-box; font-size: 0px; text-align: center;"
|
||||
data-drawio-colors="color: rgb(0, 0, 0); ">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><xhtml:div>PKESK #1</xhtml:div>
|
||||
0xBBBB...</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="390"
|
||||
y="154"
|
||||
fill="rgb(0, 0, 0)"
|
||||
font-family="Helvetica"
|
||||
font-size="12px"
|
||||
text-anchor="middle"
|
||||
id="text2">PKESK #10xBBBB...</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect
|
||||
x="330"
|
||||
y="40"
|
||||
width="120"
|
||||
height="60"
|
||||
fill="rgb(255, 255, 255)"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
pointer-events="all"
|
||||
id="rect3" />
|
||||
<g
|
||||
transform="translate(-0.5 -0.5)"
|
||||
id="g3">
|
||||
<switch
|
||||
id="switch3">
|
||||
<foreignObject
|
||||
style="overflow: visible; text-align: left;"
|
||||
pointer-events="none"
|
||||
width="100%"
|
||||
height="100%"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 70px; margin-left: 331px;">
|
||||
<xhtml:div
|
||||
style="box-sizing: border-box; font-size: 0px; text-align: center;"
|
||||
data-drawio-colors="color: rgb(0, 0, 0); ">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><xhtml:div>PKESK #0</xhtml:div>
|
||||
0xAAAA...</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="390"
|
||||
y="74"
|
||||
fill="rgb(0, 0, 0)"
|
||||
font-family="Helvetica"
|
||||
font-size="12px"
|
||||
text-anchor="middle"
|
||||
id="text3">PKESK #00xAAAA...</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect
|
||||
x="0"
|
||||
y="40"
|
||||
width="120"
|
||||
height="60"
|
||||
rx="9"
|
||||
ry="9"
|
||||
fill="rgb(255, 255, 255)"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
pointer-events="all"
|
||||
id="rect4" />
|
||||
<g
|
||||
transform="translate(-0.5 -0.5)"
|
||||
id="g4">
|
||||
<switch
|
||||
id="switch4">
|
||||
<foreignObject
|
||||
style="overflow: visible; text-align: left;"
|
||||
pointer-events="none"
|
||||
width="100%"
|
||||
height="100%"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 70px; margin-left: 1px;">
|
||||
<xhtml:div
|
||||
style="box-sizing: border-box; font-size: 0px; text-align: center;"
|
||||
data-drawio-colors="color: rgb(0, 0, 0); ">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
|
||||
<xhtml:div>Alice'</xhtml:div>
|
||||
<xhtml:div>Encryption Key</xhtml:div>
|
||||
<xhtml:div>0xAAAA...<xhtml:br />
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="60"
|
||||
y="74"
|
||||
fill="rgb(0, 0, 0)"
|
||||
font-family="Helvetica"
|
||||
font-size="12px"
|
||||
text-anchor="middle"
|
||||
id="text4">Alice'...</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect
|
||||
x="0"
|
||||
y="120"
|
||||
width="120"
|
||||
height="60"
|
||||
rx="9"
|
||||
ry="9"
|
||||
fill="rgb(255, 255, 255)"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
pointer-events="all"
|
||||
id="rect5" />
|
||||
<g
|
||||
transform="translate(-0.5 -0.5)"
|
||||
id="g5">
|
||||
<switch
|
||||
id="switch5">
|
||||
<foreignObject
|
||||
style="overflow: visible; text-align: left;"
|
||||
pointer-events="none"
|
||||
width="100%"
|
||||
height="100%"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 150px; margin-left: 1px;">
|
||||
<xhtml:div
|
||||
style="box-sizing: border-box; font-size: 0px; text-align: center;"
|
||||
data-drawio-colors="color: rgb(0, 0, 0); ">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">
|
||||
<xhtml:div>Bob's</xhtml:div>
|
||||
<xhtml:div>Encryption Key</xhtml:div>
|
||||
<xhtml:div>0xBBBB...<xhtml:br /></xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="60"
|
||||
y="154"
|
||||
fill="rgb(0, 0, 0)"
|
||||
font-family="Helvetica"
|
||||
font-size="12px"
|
||||
text-anchor="middle"
|
||||
id="text5">Bob's...</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
d="M 150.71 94.31 Q 120 100 120 65 Q 120 30 165 30 Q 210 30 323.96 67.99"
|
||||
fill="none"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="stroke"
|
||||
id="path5" />
|
||||
<path
|
||||
d="M 159.3 96.79 L 157.84 88.92 L 149.98 90.38 L 151.43 98.25 Z"
|
||||
fill="none"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="all"
|
||||
id="path6" />
|
||||
<path
|
||||
d="M 328.94 69.65 L 321.19 70.75 L 323.96 67.99 L 323.41 64.11 Z"
|
||||
fill="rgb(0, 0, 0)"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="all"
|
||||
id="path7" />
|
||||
<path
|
||||
d="M 150.71 125.69 Q 120 120 120 150 Q 120 180 165 185 Q 210 190 323.96 152.01"
|
||||
fill="none"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="stroke"
|
||||
id="path8" />
|
||||
<path
|
||||
d="M 157.84 131.08 L 159.3 123.21 L 151.43 121.75 L 149.98 129.62 Z"
|
||||
fill="none"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="all"
|
||||
id="path9" />
|
||||
<path
|
||||
d="M 328.94 150.35 L 323.41 155.89 L 323.96 152.01 L 321.19 149.25 Z"
|
||||
fill="rgb(0, 0, 0)"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="all"
|
||||
id="path10" />
|
||||
<path
|
||||
d="M 20 200 L 100 200 L 120 240 L 100 280 L 20 280 L 0 240 Z"
|
||||
fill="rgb(255, 255, 255)"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
stroke-miterlimit="10"
|
||||
stroke-dasharray="3 3"
|
||||
pointer-events="all"
|
||||
id="path11" />
|
||||
<g
|
||||
transform="translate(-0.5 -0.5)"
|
||||
id="g11">
|
||||
<switch
|
||||
id="switch11">
|
||||
<foreignObject
|
||||
style="overflow: visible; text-align: left;"
|
||||
pointer-events="none"
|
||||
width="100%"
|
||||
height="100%"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 240px; margin-left: 1px;">
|
||||
<xhtml:div
|
||||
style="box-sizing: border-box; font-size: 0px; text-align: center;"
|
||||
data-drawio-colors="color: rgb(0, 0, 0); ">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Plaintext</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="60"
|
||||
y="244"
|
||||
fill="rgb(0, 0, 0)"
|
||||
font-family="Helvetica"
|
||||
font-size="12px"
|
||||
text-anchor="middle"
|
||||
id="text11">Plaintext</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect
|
||||
x="330"
|
||||
y="210"
|
||||
width="120"
|
||||
height="60"
|
||||
fill="rgb(255, 255, 255)"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
pointer-events="all"
|
||||
id="rect11" />
|
||||
<g
|
||||
transform="translate(-0.5 -0.5)"
|
||||
id="g12">
|
||||
<switch
|
||||
id="switch12">
|
||||
<foreignObject
|
||||
style="overflow: visible; text-align: left;"
|
||||
pointer-events="none"
|
||||
width="100%"
|
||||
height="100%"
|
||||
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<xhtml:div
|
||||
style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 240px; margin-left: 331px;">
|
||||
<xhtml:div
|
||||
style="box-sizing: border-box; font-size: 0px; text-align: center;"
|
||||
data-drawio-colors="color: rgb(0, 0, 0); ">
|
||||
<xhtml:div
|
||||
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">SEIPDv1</xhtml:div>
|
||||
</xhtml:div>
|
||||
</xhtml:div>
|
||||
</foreignObject>
|
||||
<text
|
||||
x="390"
|
||||
y="244"
|
||||
fill="rgb(0, 0, 0)"
|
||||
font-family="Helvetica"
|
||||
font-size="12px"
|
||||
text-anchor="middle"
|
||||
id="text12">SEIPDv1</text>
|
||||
</switch>
|
||||
</g>
|
||||
<path
|
||||
d="M 108.77 200.1 Q 170 150 210 150 Q 250 150 260 195 Q 270 240 323.63 240"
|
||||
fill="none"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="stroke"
|
||||
id="path12" />
|
||||
<path
|
||||
d="M 100.05 202.07 L 105.11 208.26 L 111.31 203.19 L 106.24 197 Z"
|
||||
fill="none"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="all"
|
||||
id="path13" />
|
||||
<path
|
||||
d="M 328.88 240 L 321.88 243.5 L 323.63 240 L 321.88 236.5 Z"
|
||||
fill="rgb(0, 0, 0)"
|
||||
stroke="rgb(0, 0, 0)"
|
||||
stroke-miterlimit="10"
|
||||
pointer-events="all"
|
||||
id="path14" />
|
||||
<rect
|
||||
x="330"
|
||||
y="0"
|
||||
width="120"
|
||||
height="30"
|
||||
fill="none"
|
||||
stroke="none"
|
||||
pointer-events="all"
|
||||
id="rect14" />
|
||||
<g
|
||||
transform="translate(-0.5 -0.5)"
|
||||
id="g14">
|
||||
<switch
|
||||