python3-olm 3.2.19__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- python3_olm-3.2.19/MANIFEST.in +8 -0
- python3_olm-3.2.19/PKG-INFO +186 -0
- python3_olm-3.2.19/README.md +173 -0
- python3_olm-3.2.19/include/olm/base64.h +81 -0
- python3_olm-3.2.19/include/olm/cipher.h +142 -0
- python3_olm-3.2.19/include/olm/crypto.h +206 -0
- python3_olm-3.2.19/include/olm/error.h +80 -0
- python3_olm-3.2.19/include/olm/inbound_group_session.h +246 -0
- python3_olm-3.2.19/include/olm/megolm.h +99 -0
- python3_olm-3.2.19/include/olm/memory.h +41 -0
- python3_olm-3.2.19/include/olm/message.h +97 -0
- python3_olm-3.2.19/include/olm/olm.h +527 -0
- python3_olm-3.2.19/include/olm/olm_export.h +43 -0
- python3_olm-3.2.19/include/olm/outbound_group_session.h +192 -0
- python3_olm-3.2.19/include/olm/pickle.h +107 -0
- python3_olm-3.2.19/include/olm/pickle_encoding.h +80 -0
- python3_olm-3.2.19/include/olm/pk.h +298 -0
- python3_olm-3.2.19/include/olm/sas.h +197 -0
- python3_olm-3.2.19/libolm/.editorconfig +14 -0
- python3_olm-3.2.19/libolm/.gitignore +43 -0
- python3_olm-3.2.19/libolm/.gitlab-ci.yml +51 -0
- python3_olm-3.2.19/libolm/CHANGELOG.rst +459 -0
- python3_olm-3.2.19/libolm/CMakeLists.txt +142 -0
- python3_olm-3.2.19/libolm/CONTRIBUTING.md +67 -0
- python3_olm-3.2.19/libolm/LICENSE +177 -0
- python3_olm-3.2.19/libolm/Makefile +419 -0
- python3_olm-3.2.19/libolm/OLMKit.podspec +63 -0
- python3_olm-3.2.19/libolm/Package.swift +52 -0
- python3_olm-3.2.19/libolm/README.md +373 -0
- python3_olm-3.2.19/libolm/Windows64.cmake +29 -0
- python3_olm-3.2.19/libolm/cmake/OlmConfig.cmake.in +11 -0
- python3_olm-3.2.19/libolm/common.mk +4 -0
- python3_olm-3.2.19/libolm/exports.py +18 -0
- python3_olm-3.2.19/libolm/flake.lock +60 -0
- python3_olm-3.2.19/libolm/flake.nix +40 -0
- python3_olm-3.2.19/libolm/gitlab-math.lua +17 -0
- python3_olm-3.2.19/libolm/include/olm/account.hh +208 -0
- python3_olm-3.2.19/libolm/include/olm/base64.h +81 -0
- python3_olm-3.2.19/libolm/include/olm/base64.hh +71 -0
- python3_olm-3.2.19/libolm/include/olm/cipher.h +142 -0
- python3_olm-3.2.19/libolm/include/olm/crypto.h +206 -0
- python3_olm-3.2.19/libolm/include/olm/error.h +80 -0
- python3_olm-3.2.19/libolm/include/olm/inbound_group_session.h +246 -0
- python3_olm-3.2.19/libolm/include/olm/list.hh +119 -0
- python3_olm-3.2.19/libolm/include/olm/megolm.h +99 -0
- python3_olm-3.2.19/libolm/include/olm/memory.h +41 -0
- python3_olm-3.2.19/libolm/include/olm/memory.hh +90 -0
- python3_olm-3.2.19/libolm/include/olm/message.h +97 -0
- python3_olm-3.2.19/libolm/include/olm/message.hh +141 -0
- python3_olm-3.2.19/libolm/include/olm/olm.h +527 -0
- python3_olm-3.2.19/libolm/include/olm/olm.hh +4 -0
- python3_olm-3.2.19/libolm/include/olm/olm_export.h +43 -0
- python3_olm-3.2.19/libolm/include/olm/outbound_group_session.h +192 -0
- python3_olm-3.2.19/libolm/include/olm/pickle.h +107 -0
- python3_olm-3.2.19/libolm/include/olm/pickle.hh +182 -0
- python3_olm-3.2.19/libolm/include/olm/pickle_encoding.h +80 -0
- python3_olm-3.2.19/libolm/include/olm/pk.h +298 -0
- python3_olm-3.2.19/libolm/include/olm/ratchet.hh +188 -0
- python3_olm-3.2.19/libolm/include/olm/sas.h +197 -0
- python3_olm-3.2.19/libolm/include/olm/session.hh +168 -0
- python3_olm-3.2.19/libolm/include/olm/utility.hh +61 -0
- python3_olm-3.2.19/libolm/jenkins.sh +14 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/README.md +17 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/aes.c +1073 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/aes.h +123 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/aes_test.c +276 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/arcfour.c +45 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/arcfour.h +30 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/arcfour_test.c +47 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/base64.c +135 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/base64.h +27 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/base64_test.c +54 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/blowfish.c +269 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/blowfish.h +32 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/blowfish_test.c +68 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/des.c +269 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/des.h +37 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/des_test.c +83 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/md2.c +104 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/md2.h +33 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/md2_test.c +58 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/md5.c +189 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/md5.h +34 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/md5_test.c +60 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/rot-13.c +35 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/rot-13.h +20 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/rot-13_test.c +44 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/sha1.c +149 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/sha1.h +35 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/sha1_test.c +58 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/sha256.c +159 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/sha256.h +34 -0
- python3_olm-3.2.19/libolm/lib/crypto-algorithms/sha256_test.c +61 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/.gitignore +12 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/LICENSE.md +46 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/Makefile +56 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/README +40 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/contrib/Curve25519Donna.c +118 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/contrib/Curve25519Donna.h +53 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/contrib/Curve25519Donna.java +77 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/contrib/make-snippets +68 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/curve25519-donna-c64.c +449 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/curve25519-donna.c +860 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/curve25519-donna.podspec +13 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/python-src/curve25519/__init__.py +4 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/python-src/curve25519/curve25519module.c +105 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/python-src/curve25519/keys.py +46 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/python-src/curve25519/test/__init__.py +0 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/python-src/curve25519/test/test_curve25519.py +99 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/python-src/curve25519/test/test_speed.py +46 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/setup.py +38 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/speed-curve25519.c +50 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/test-curve25519.c +54 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/test-noncanon.c +39 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/test-sc-curve25519.c +72 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna/test-sc-curve25519.s +8 -0
- python3_olm-3.2.19/libolm/lib/curve25519-donna.h +18 -0
- python3_olm-3.2.19/libolm/lib/doctest/.clang-format +82 -0
- python3_olm-3.2.19/libolm/lib/doctest/.editorconfig +12 -0
- python3_olm-3.2.19/libolm/lib/doctest/.gitattributes +1 -0
- python3_olm-3.2.19/libolm/lib/doctest/.github/FUNDING.yml +4 -0
- python3_olm-3.2.19/libolm/lib/doctest/.github/issue_template.md +29 -0
- python3_olm-3.2.19/libolm/lib/doctest/.github/pull_request_template.md +26 -0
- python3_olm-3.2.19/libolm/lib/doctest/.github/workflows/codeql-analysis.yml +67 -0
- python3_olm-3.2.19/libolm/lib/doctest/.github/workflows/main.yml +490 -0
- python3_olm-3.2.19/libolm/lib/doctest/.github/workflows/vsenv.bat +17 -0
- python3_olm-3.2.19/libolm/lib/doctest/.gitignore +40 -0
- python3_olm-3.2.19/libolm/lib/doctest/.travis.yml +413 -0
- python3_olm-3.2.19/libolm/lib/doctest/CHANGELOG.md +743 -0
- python3_olm-3.2.19/libolm/lib/doctest/CMakeLists.txt +158 -0
- python3_olm-3.2.19/libolm/lib/doctest/CONTRIBUTING.md +30 -0
- python3_olm-3.2.19/libolm/lib/doctest/LICENSE.txt +21 -0
- python3_olm-3.2.19/libolm/lib/doctest/README.md +139 -0
- python3_olm-3.2.19/libolm/lib/doctest/WORKSPACE +0 -0
- python3_olm-3.2.19/libolm/lib/doctest/appveyor.yml +95 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/assertions.html +173 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/benchmarks.html +212 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/build-systems.html +93 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/commandline.html +143 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/configuration.html +256 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/extensions.html +158 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/faq.html +188 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/features.html +95 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/logging.html +80 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/main.html +72 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/parameterized-tests.html +187 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/readme.html +46 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/reporters.html +116 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/roadmap.html +173 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/strapdown.js/README.md +24 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/strapdown.js/index.html +154 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/strapdown.js/strapdown.css +96 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/strapdown.js/strapdown.js +476 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/strapdown.js/themes/bootstrap-responsive.min.css +9 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/strapdown.js/themes/bootstrap.min.css +9 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/strapdown.js/themes/cyborg.min.css +945 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/strapdown.js/themes/united.min.css +12 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/stringification.html +105 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/testcases.html +182 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/html_generated/tutorial.html +215 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/assertions.md +163 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/benchmarks.md +202 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/build-systems.md +83 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/commandline.md +133 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/configuration.md +246 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/extensions.md +148 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/faq.md +178 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/features.md +85 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/logging.md +70 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/main.md +62 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/parameterized-tests.md +177 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/readme.md +36 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/reporters.md +106 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/roadmap.md +163 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/stringification.md +95 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/testcases.md +172 -0
- python3_olm-3.2.19/libolm/lib/doctest/doc/markdown/tutorial.md +205 -0
- python3_olm-3.2.19/libolm/lib/doctest/doctest/BUILD.bazel +32 -0
- python3_olm-3.2.19/libolm/lib/doctest/doctest/doctest.h +6750 -0
- python3_olm-3.2.19/libolm/lib/doctest/doctest/extensions/doctest_mpi.h +120 -0
- python3_olm-3.2.19/libolm/lib/doctest/doctest/extensions/doctest_util.h +34 -0
- python3_olm-3.2.19/libolm/lib/doctest/doctest/extensions/mpi_reporter.h +236 -0
- python3_olm-3.2.19/libolm/lib/doctest/doctest/parts/doctest.cpp +3936 -0
- python3_olm-3.2.19/libolm/lib/doctest/doctest/parts/doctest_fwd.h +2806 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/CMakeLists.txt +131 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/alternative_macros.cpp +15 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/assertion_macros.cpp +193 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/asserts_used_outside_of_tests.cpp +74 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/concurrency.cpp +71 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/doctest_proxy.h +71 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/enums.cpp +109 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/header.h +65 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/logging.cpp +79 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/main.cpp +51 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/namespace1.cpp +27 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/namespace2.cpp +24 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/namespace3.cpp +22 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/namespace4.cpp +37 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/namespace5.cpp +39 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/namespace6.cpp +41 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/namespace7.cpp +41 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/namespace8.cpp +45 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/namespace9.cpp +44 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/no_failures.cpp +13 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/reporters_and_listeners.cpp +85 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/stringification.cpp +163 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/subcases.cpp +160 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/templated_test_cases.cpp +72 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_cases_and_suites.cpp +76 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/abort_after.txt +19 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/abort_after_junit.txt +22 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/abort_after_xml.txt +34 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/all_binary.txt +82 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/all_binary_junit.txt +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/all_binary_xml.txt +204 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/alternative_macros.cpp.txt +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/alternative_macros.cpp_junit.txt +8 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/alternative_macros.cpp_xml.txt +20 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/assertion_macros.cpp.txt +204 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/assertion_macros.cpp_junit.txt +322 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/assertion_macros.cpp_xml.txt +539 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/asserts_used_outside_of_tests.cpp.txt +16 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/asserts_used_outside_of_tests.cpp_junit.txt +15 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/asserts_used_outside_of_tests.cpp_xml.txt +17 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/count.txt +2 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/count_junit.txt +1 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/count_xml.txt +5 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/coverage_maxout.cpp.txt +61 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/coverage_maxout.cpp_junit.txt +80 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/coverage_maxout.cpp_xml.txt +113 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/disabled.txt +1 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/disabled_junit.txt +1 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/disabled_xml.txt +1 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/doctest_proxy.h.txt +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/doctest_proxy.h_junit.txt +5 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/doctest_proxy.h_xml.txt +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/enums.cpp.txt +65 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/enums.cpp_junit.txt +117 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/enums.cpp_xml.txt +159 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/filter_1.txt +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/filter_1_junit.txt +5 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/filter_1_xml.txt +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/filter_2.txt +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/filter_2_junit.txt +5 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/filter_2_xml.txt +139 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/filter_3.txt +33 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/filter_3_junit.txt +15 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/filter_3_xml.txt +51 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/first_last.txt +27 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/first_last_junit.txt +21 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/first_last_xml.txt +27 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/header.h.txt +25 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/header.h_junit.txt +10 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/header.h_xml.txt +32 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/help.txt +63 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/help_junit.txt +1 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/help_xml.txt +4 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/list_reporters.txt +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/list_reporters_junit.txt +1 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/list_reporters_xml.txt +9 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/list_test_cases.txt +8 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/list_test_cases_junit.txt +1 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/list_test_cases_xml.txt +9 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/list_test_suites.txt +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/list_test_suites_junit.txt +1 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/list_test_suites_xml.txt +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/logging.cpp.txt +84 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/logging.cpp_junit.txt +71 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/logging.cpp_xml.txt +159 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/main.cpp.txt +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/main.cpp_junit.txt +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/main.cpp_xml.txt +12 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/minimal.txt +100 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/minimal_junit.txt +32 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/minimal_no_fail.txt +9 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/minimal_no_fail_junit.txt +10 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/minimal_no_fail_xml.txt +31 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/minimal_xml.txt +114 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/order_1.txt +108 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/order_1_junit.txt +33 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/order_1_xml.txt +116 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/order_2.txt +101 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/order_2_junit.txt +32 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/order_2_xml.txt +114 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/order_3.txt +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/order_3_junit.txt +5 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/order_3_xml.txt +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/reporters_and_listeners.cpp.txt +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/reporters_and_listeners.cpp_junit.txt +5 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/reporters_and_listeners.cpp_xml.txt +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/stringification.cpp.txt +39 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/stringification.cpp_junit.txt +55 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/stringification.cpp_xml.txt +78 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/subcases.cpp.txt +200 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/subcases.cpp_junit.txt +86 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/subcases.cpp_xml.txt +241 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/templated_test_cases.cpp.txt +41 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/templated_test_cases.cpp_junit.txt +56 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/templated_test_cases.cpp_xml.txt +94 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/test_cases_and_suites.cpp.txt +101 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/test_cases_and_suites.cpp_junit.txt +32 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/test_cases_and_suites.cpp_xml.txt +114 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/version.txt +1 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/version_junit.txt +1 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/all_features/test_output/version_xml.txt +4 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/CMakeLists.txt +63 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/default.cpp +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/foo.h +41 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/main.cpp +24 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/return42.cpp +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/test_output/same_tests_multiple_configurations.txt +45 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/test_output/same_tests_multiple_configurations_junit.txt +11 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/test_output/same_tests_multiple_configurations_xml.txt +60 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/combining_the_same_tests_built_differently_in_multiple_shared_objects/test_runner.cpp +5 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/exe_with_static_libs/CMakeLists.txt +27 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/exe_with_static_libs/doctest_force_link_static_lib_in_target.cmake +131 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/exe_with_static_libs/lib_1_src1.cpp +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/exe_with_static_libs/lib_1_src2.cpp +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/exe_with_static_libs/lib_2_src.cpp +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/exe_with_static_libs/main.cpp +4 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/exe_with_static_libs/test_output/exe_with_static_libs.txt +9 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/exe_with_static_libs/test_output/exe_with_static_libs_junit.txt +13 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/exe_with_static_libs/test_output/exe_with_static_libs_xml.txt +24 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/executable_dll_and_plugin/CMakeLists.txt +27 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/executable_dll_and_plugin/dll.cpp +13 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/executable_dll_and_plugin/implementation.cpp +11 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/executable_dll_and_plugin/implementation_2.cpp +10 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/executable_dll_and_plugin/main.cpp +67 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/executable_dll_and_plugin/plugin.cpp +23 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/executable_dll_and_plugin/test_output/executable_dll_and_plugin.txt +31 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/executable_dll_and_plugin/test_output/executable_dll_and_plugin_junit.txt +26 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/executable_dll_and_plugin/test_output/executable_dll_and_plugin_xml.txt +61 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/installed_doctest_cmake/dll/CMakeLists.txt +14 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/installed_doctest_cmake/dll/dll.cpp +22 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/installed_doctest_cmake/dll/dll.h +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/installed_doctest_cmake/dll/exporting.h +15 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/installed_doctest_cmake/dll/main.cpp +34 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/installed_doctest_cmake/executable/CMakeLists.txt +9 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/installed_doctest_cmake/executable/main.cpp +35 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/mpi/CMakeLists.txt +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/mpi/main.cpp +19 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/mpi/mpi.cpp +36 -0
- python3_olm-3.2.19/libolm/lib/doctest/examples/range_based_execution.py +43 -0
- python3_olm-3.2.19/libolm/lib/doctest/meson.build +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/bench/bench.py +237 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/bench/run_all.py +65 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/bench/tests.json +43 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/cmake/Config.cmake.in +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/cmake/assemble_single_header.cmake +13 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/cmake/common.cmake +211 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/cmake/doctest.cmake +189 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/cmake/doctestAddTests.cmake +120 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/cmake/exec_test.cmake +70 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/coverage_maxout.cpp +149 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/article.txt +257 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/article2.txt +153 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/benchmarks/asserts.png +0 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/benchmarks/header.png +0 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/benchmarks/implement.png +0 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/benchmarks/runtime_assert.png +0 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/benchmarks/runtime_info.png +0 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/cover.png +0 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/cover_888px_wide.png +0 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/initial_release_traffic.png +0 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/logo/icon_1.svg +27 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/logo/icon_2.svg +32 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/logo/icon_3.svg +37 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/logo/icon_4.svg +25 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/logo/icon_5.svg +32 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/logo/icon_6.svg +32 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/logo/logo_1.svg +35 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/logo/logo_2.svg +33 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/logo/logo_3.svg +33 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/logo/logo_4.svg +33 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/logo/logo_5.svg +34 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/logo/logo_6.svg +34 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/logo/logo_7.svg +38 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/using_doctest_888px_wide.gif +0 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/data/youtube-cppcon-talk-thumbnail.png +0 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/development_only/doctest/doctest.h +5 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/generate_html.py +33 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/hello_world.cpp +14 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/how_stuff_works/CMakeLists.txt +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/how_stuff_works/how_captures_work.cpp +86 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/how_stuff_works/how_exception_translators_work.cpp +90 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/how_stuff_works/how_subcases_work.cpp +116 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/how_stuff_works/testing_crash_scenarios.cpp +71 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/playground/CMakeLists.txt +7 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/playground/main.cpp +26 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/playground/test.cpp +6 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/random_dev_notes.md +72 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/release_process.md +20 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/update_changelog.py +13 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/update_stuff.py +49 -0
- python3_olm-3.2.19/libolm/lib/doctest/scripts/version.txt +1 -0
- python3_olm-3.2.19/libolm/lib/ed25519/ed25519_32.dll +0 -0
- python3_olm-3.2.19/libolm/lib/ed25519/ed25519_64.dll +0 -0
- python3_olm-3.2.19/libolm/lib/ed25519/readme.md +166 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/add_scalar.c +56 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/ed25519.h +38 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/fe.c +1493 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/fe.h +41 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/fixedint.h +72 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/ge.c +467 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/ge.h +74 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/key_exchange.c +79 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/keypair.c +16 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/precomp_data.h +1391 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/sc.c +814 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/sc.h +12 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/seed.c +40 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/sha512.c +275 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/sha512.h +21 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/sign.c +31 -0
- python3_olm-3.2.19/libolm/lib/ed25519/src/verify.c +77 -0
- python3_olm-3.2.19/libolm/lib/ed25519/test.c +150 -0
- python3_olm-3.2.19/libolm/lib_exports.sh +3 -0
- python3_olm-3.2.19/libolm/libolm.version +4 -0
- python3_olm-3.2.19/libolm/olm.pc.in +10 -0
- python3_olm-3.2.19/libolm/src/account.cpp +580 -0
- python3_olm-3.2.19/libolm/src/base64.cpp +187 -0
- python3_olm-3.2.19/libolm/src/cipher.cpp +152 -0
- python3_olm-3.2.19/libolm/src/crypto.cpp +299 -0
- python3_olm-3.2.19/libolm/src/ed25519.c +22 -0
- python3_olm-3.2.19/libolm/src/error.c +46 -0
- python3_olm-3.2.19/libolm/src/inbound_group_session.c +540 -0
- python3_olm-3.2.19/libolm/src/megolm.c +154 -0
- python3_olm-3.2.19/libolm/src/memory.cpp +45 -0
- python3_olm-3.2.19/libolm/src/message.cpp +406 -0
- python3_olm-3.2.19/libolm/src/olm.cpp +846 -0
- python3_olm-3.2.19/libolm/src/outbound_group_session.c +390 -0
- python3_olm-3.2.19/libolm/src/pickle.cpp +274 -0
- python3_olm-3.2.19/libolm/src/pickle_encoding.c +92 -0
- python3_olm-3.2.19/libolm/src/pk.cpp +542 -0
- python3_olm-3.2.19/libolm/src/ratchet.cpp +625 -0
- python3_olm-3.2.19/libolm/src/sas.c +229 -0
- python3_olm-3.2.19/libolm/src/session.cpp +531 -0
- python3_olm-3.2.19/libolm/src/utility.cpp +57 -0
- python3_olm-3.2.19/libolm/tests/CMakeLists.txt +34 -0
- python3_olm-3.2.19/libolm/tests/include/doctest.h +6750 -0
- python3_olm-3.2.19/libolm/tests/include/testing.hh +42 -0
- python3_olm-3.2.19/libolm/tests/include/utils.hh +38 -0
- python3_olm-3.2.19/libolm/tests/test_base64.cpp +85 -0
- python3_olm-3.2.19/libolm/tests/test_crypto.cpp +248 -0
- python3_olm-3.2.19/libolm/tests/test_group_session.cpp +365 -0
- python3_olm-3.2.19/libolm/tests/test_list.cpp +89 -0
- python3_olm-3.2.19/libolm/tests/test_megolm.cpp +126 -0
- python3_olm-3.2.19/libolm/tests/test_message.cpp +108 -0
- python3_olm-3.2.19/libolm/tests/test_olm.cpp +671 -0
- python3_olm-3.2.19/libolm/tests/test_olm_decrypt.cpp +90 -0
- python3_olm-3.2.19/libolm/tests/test_olm_sha256.cpp +19 -0
- python3_olm-3.2.19/libolm/tests/test_olm_signature.cpp +89 -0
- python3_olm-3.2.19/libolm/tests/test_olm_using_malloc.cpp +208 -0
- python3_olm-3.2.19/libolm/tests/test_pk.cpp +262 -0
- python3_olm-3.2.19/libolm/tests/test_ratchet.cpp +222 -0
- python3_olm-3.2.19/libolm/tests/test_sas.cpp +116 -0
- python3_olm-3.2.19/libolm/tests/test_session.cpp +135 -0
- python3_olm-3.2.19/libolm/version_script.ver +9 -0
- python3_olm-3.2.19/olm/__init__.py +48 -0
- python3_olm-3.2.19/olm/_compat.py +67 -0
- python3_olm-3.2.19/olm/_finalize.py +64 -0
- python3_olm-3.2.19/olm/account.py +321 -0
- python3_olm-3.2.19/olm/group_session.py +531 -0
- python3_olm-3.2.19/olm/pk.py +453 -0
- python3_olm-3.2.19/olm/py.typed +0 -0
- python3_olm-3.2.19/olm/sas.py +276 -0
- python3_olm-3.2.19/olm/session.py +510 -0
- python3_olm-3.2.19/olm/utility.py +149 -0
- python3_olm-3.2.19/olm_build.py +104 -0
- python3_olm-3.2.19/pyproject.toml +23 -0
- python3_olm-3.2.19/python3_olm.egg-info/PKG-INFO +186 -0
- python3_olm-3.2.19/python3_olm.egg-info/SOURCES.txt +476 -0
- python3_olm-3.2.19/python3_olm.egg-info/dependency_links.txt +1 -0
- python3_olm-3.2.19/python3_olm.egg-info/requires.txt +1 -0
- python3_olm-3.2.19/python3_olm.egg-info/top_level.txt +2 -0
- python3_olm-3.2.19/setup.cfg +10 -0
- python3_olm-3.2.19/setup.py +17 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: python3-olm
|
|
3
|
+
Version: 3.2.19
|
|
4
|
+
Summary: python CFFI bindings for the olm cryptographic ratchet library
|
|
5
|
+
Author-email: Damir Jelić <poljar@termina.org.uk>
|
|
6
|
+
License: Apache-2.0
|
|
7
|
+
Project-URL: homepage, https://gitlab.matrix.org/matrix-org/olm/-/tree/master/python
|
|
8
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
9
|
+
Classifier: Topic :: Communications
|
|
10
|
+
Requires-Python: <4.0.0,>=3.9
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
Requires-Dist: cffi>=1.0.0
|
|
13
|
+
|
|
14
|
+
python-olm
|
|
15
|
+
==========
|
|
16
|
+
|
|
17
|
+
Python bindings for Olm.
|
|
18
|
+
|
|
19
|
+
The specification of the Olm cryptographic ratchet which is used for peer to
|
|
20
|
+
peer sessions of this library can be found [here][4].
|
|
21
|
+
|
|
22
|
+
The specification of the Megolm cryptographic ratchet which is used for group
|
|
23
|
+
sessions of this library can be found [here][5].
|
|
24
|
+
|
|
25
|
+
An example of the implementation of the Olm and Megolm cryptographic protocol
|
|
26
|
+
can be found in the Matrix protocol for which the implementation guide can be
|
|
27
|
+
found [here][6].
|
|
28
|
+
|
|
29
|
+
The full API reference can be found [here][7].
|
|
30
|
+
|
|
31
|
+
# Installation instructions
|
|
32
|
+
|
|
33
|
+
To install from the source package, you will need:
|
|
34
|
+
|
|
35
|
+
- cmake (recommended) or GNU make
|
|
36
|
+
- a C/C++ compiler
|
|
37
|
+
|
|
38
|
+
You can then run `pip install python-olm`.
|
|
39
|
+
|
|
40
|
+
This should work in UNIX-like environments, including macOS, and may work in
|
|
41
|
+
other environments too, but is known to not work yet in Windows.
|
|
42
|
+
|
|
43
|
+
# Accounts
|
|
44
|
+
|
|
45
|
+
Accounts create and hold the central identity of the Olm protocol, they consist of a fingerprint and identity
|
|
46
|
+
key pair. They also produce one time keys that are used to start peer to peer
|
|
47
|
+
encrypted communication channels.
|
|
48
|
+
|
|
49
|
+
## Account Creation
|
|
50
|
+
|
|
51
|
+
A new account is created with the Account class, it creates a new Olm key pair.
|
|
52
|
+
The public parts of the key pair are available using the identity_keys property
|
|
53
|
+
of the class.
|
|
54
|
+
|
|
55
|
+
```python
|
|
56
|
+
>>> alice = Account()
|
|
57
|
+
>>> alice.identity_keys
|
|
58
|
+
{'curve25519': '2PytGagXercwHjzQETLcMa3JOsaU2qkPIESaqoi59zE',
|
|
59
|
+
'ed25519': 'HHpOuFYdHwoa54GxSttz9YmaTmbuVU3js92UTUjYJgM'}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
## One Time keys
|
|
64
|
+
|
|
65
|
+
One time keys need to be generated before people can start an encrypted peer to
|
|
66
|
+
peer channel to an account.
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
>>> alice.generate_one_time_keys(1)
|
|
70
|
+
>>> alice.one_time_keys
|
|
71
|
+
{'curve25519': {'AAAAAQ': 'KiHoW6CIy905UC4V1Frmwr3VW8bTWkBL4uWtWFFllxM'}}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
After the one time keys are published they should be marked as such so they
|
|
75
|
+
aren't reused.
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
>>> alice.mark_keys_as_published()
|
|
79
|
+
>>> alice.one_time_keys
|
|
80
|
+
{'curve25519': {}}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Pickling
|
|
84
|
+
|
|
85
|
+
Accounts should be stored for later reuse, storing an account is done with the
|
|
86
|
+
pickle method while the restoring step is done with the from_pickle class
|
|
87
|
+
method.
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
>>> pickle = alice.pickle()
|
|
91
|
+
>>> restored = Account.from_pickle(pickle)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
# Sessions
|
|
95
|
+
|
|
96
|
+
Sessions are used to create an encrypted peer to peer communication channel
|
|
97
|
+
between two accounts.
|
|
98
|
+
|
|
99
|
+
## Session Creation
|
|
100
|
+
```python
|
|
101
|
+
>>> alice = Account()
|
|
102
|
+
>>> bob = Account()
|
|
103
|
+
>>> bob.generate_one_time_keys(1)
|
|
104
|
+
>>> id_key = bob.identity_keys["curve25519"]
|
|
105
|
+
>>> one_time = list(bob.one_time_keys["curve25519"].values())[0]
|
|
106
|
+
>>> alice_session = OutboundSession(alice, id_key, one_time)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Encryption
|
|
110
|
+
|
|
111
|
+
After an outbound session is created an encrypted message can be exchanged:
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
>>> message = alice_session.encrypt("It's a secret to everybody")
|
|
115
|
+
>>> message.ciphertext
|
|
116
|
+
'AwogkL7RoakT9gnjcZMra+y39WXKRmnxBPEaEp6OSueIA0cSIJxGpBoP8YZ+CGweXQ10LujbXMgK88
|
|
117
|
+
xG/JZMQJ5ulK9ZGiC8TYrezNYr3qyIBLlecXr/9wnegvJaSFDmWDVOcf4XfyI/AwogqIZfAklRXGC5b
|
|
118
|
+
ZJcZxVxQGgJ8Dz4OQII8k0Dp8msUXwQACIQvagY1dO55Qvnk5PZ2GF+wdKnvj6Zxl2g'
|
|
119
|
+
>>> message.message_type
|
|
120
|
+
0
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
After the message is transfered, bob can create an InboundSession to decrypt the
|
|
124
|
+
message.
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
>>> bob_session = InboundSession(bob, message)
|
|
128
|
+
>>> bob_session.decrypt(message)
|
|
129
|
+
"It's a secret to everybody"
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Pickling
|
|
133
|
+
|
|
134
|
+
Sessions like accounts can be stored for later use the API is the same as for
|
|
135
|
+
accounts.
|
|
136
|
+
|
|
137
|
+
```python
|
|
138
|
+
>>> pickle = session.pickle()
|
|
139
|
+
>>> restored = Session.from_pickle(pickle)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
# Group Sessions
|
|
143
|
+
|
|
144
|
+
Group Sessions are used to create a one-to-many encrypted communication channel.
|
|
145
|
+
The group session key needs to be shared with all participants that should be able
|
|
146
|
+
to decrypt the group messages. Another thing to notice is that, since the group
|
|
147
|
+
session key is ratcheted every time a message is encrypted, the session key should
|
|
148
|
+
be shared before any messages are encrypted.
|
|
149
|
+
|
|
150
|
+
## Group Session Creation
|
|
151
|
+
|
|
152
|
+
Group sessions aren't bound to an account like peer-to-peer sessions so their
|
|
153
|
+
creation is straightforward.
|
|
154
|
+
|
|
155
|
+
```python
|
|
156
|
+
>>> alice_group = OutboundGroupSession()
|
|
157
|
+
>>> bob_inbound_group = InboundGroupSession(alice_group.session_key)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Group Encryption
|
|
161
|
+
|
|
162
|
+
Group encryption is pretty simple. The important part is to share the session
|
|
163
|
+
key with all participants over a secure channel (e.g. peer-to-peer Olm
|
|
164
|
+
sessions).
|
|
165
|
+
|
|
166
|
+
```python
|
|
167
|
+
>>> message = alice_group.encrypt("It's a secret to everybody")
|
|
168
|
+
>>> bob_inbound_group.decrypt(message)
|
|
169
|
+
("It's a secret to everybody", 0)
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Pickling
|
|
173
|
+
|
|
174
|
+
Pickling works the same way as for peer-to-peer Olm sessions.
|
|
175
|
+
|
|
176
|
+
```python
|
|
177
|
+
>>> pickle = session.pickle()
|
|
178
|
+
>>> restored = InboundGroupSession.from_pickle(pickle)
|
|
179
|
+
```
|
|
180
|
+
[1]: https://git.matrix.org/git/olm/about/
|
|
181
|
+
[2]: https://git.matrix.org/git/olm/tree/python?id=f8c61b8f8432d0b0b38d57f513c5048fb42f22ab
|
|
182
|
+
[3]: https://cffi.readthedocs.io/en/latest/
|
|
183
|
+
[4]: https://git.matrix.org/git/olm/about/docs/olm.rst
|
|
184
|
+
[5]: https://git.matrix.org/git/olm/about/docs/megolm.rst
|
|
185
|
+
[6]: https://matrix.org/docs/guides/end-to-end-encryption-implementation-guide
|
|
186
|
+
[7]: https://poljar.github.io/python-olm/html/index.html
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
python-olm
|
|
2
|
+
==========
|
|
3
|
+
|
|
4
|
+
Python bindings for Olm.
|
|
5
|
+
|
|
6
|
+
The specification of the Olm cryptographic ratchet which is used for peer to
|
|
7
|
+
peer sessions of this library can be found [here][4].
|
|
8
|
+
|
|
9
|
+
The specification of the Megolm cryptographic ratchet which is used for group
|
|
10
|
+
sessions of this library can be found [here][5].
|
|
11
|
+
|
|
12
|
+
An example of the implementation of the Olm and Megolm cryptographic protocol
|
|
13
|
+
can be found in the Matrix protocol for which the implementation guide can be
|
|
14
|
+
found [here][6].
|
|
15
|
+
|
|
16
|
+
The full API reference can be found [here][7].
|
|
17
|
+
|
|
18
|
+
# Installation instructions
|
|
19
|
+
|
|
20
|
+
To install from the source package, you will need:
|
|
21
|
+
|
|
22
|
+
- cmake (recommended) or GNU make
|
|
23
|
+
- a C/C++ compiler
|
|
24
|
+
|
|
25
|
+
You can then run `pip install python-olm`.
|
|
26
|
+
|
|
27
|
+
This should work in UNIX-like environments, including macOS, and may work in
|
|
28
|
+
other environments too, but is known to not work yet in Windows.
|
|
29
|
+
|
|
30
|
+
# Accounts
|
|
31
|
+
|
|
32
|
+
Accounts create and hold the central identity of the Olm protocol, they consist of a fingerprint and identity
|
|
33
|
+
key pair. They also produce one time keys that are used to start peer to peer
|
|
34
|
+
encrypted communication channels.
|
|
35
|
+
|
|
36
|
+
## Account Creation
|
|
37
|
+
|
|
38
|
+
A new account is created with the Account class, it creates a new Olm key pair.
|
|
39
|
+
The public parts of the key pair are available using the identity_keys property
|
|
40
|
+
of the class.
|
|
41
|
+
|
|
42
|
+
```python
|
|
43
|
+
>>> alice = Account()
|
|
44
|
+
>>> alice.identity_keys
|
|
45
|
+
{'curve25519': '2PytGagXercwHjzQETLcMa3JOsaU2qkPIESaqoi59zE',
|
|
46
|
+
'ed25519': 'HHpOuFYdHwoa54GxSttz9YmaTmbuVU3js92UTUjYJgM'}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## One Time keys
|
|
51
|
+
|
|
52
|
+
One time keys need to be generated before people can start an encrypted peer to
|
|
53
|
+
peer channel to an account.
|
|
54
|
+
|
|
55
|
+
```python
|
|
56
|
+
>>> alice.generate_one_time_keys(1)
|
|
57
|
+
>>> alice.one_time_keys
|
|
58
|
+
{'curve25519': {'AAAAAQ': 'KiHoW6CIy905UC4V1Frmwr3VW8bTWkBL4uWtWFFllxM'}}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
After the one time keys are published they should be marked as such so they
|
|
62
|
+
aren't reused.
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
>>> alice.mark_keys_as_published()
|
|
66
|
+
>>> alice.one_time_keys
|
|
67
|
+
{'curve25519': {}}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Pickling
|
|
71
|
+
|
|
72
|
+
Accounts should be stored for later reuse, storing an account is done with the
|
|
73
|
+
pickle method while the restoring step is done with the from_pickle class
|
|
74
|
+
method.
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
>>> pickle = alice.pickle()
|
|
78
|
+
>>> restored = Account.from_pickle(pickle)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
# Sessions
|
|
82
|
+
|
|
83
|
+
Sessions are used to create an encrypted peer to peer communication channel
|
|
84
|
+
between two accounts.
|
|
85
|
+
|
|
86
|
+
## Session Creation
|
|
87
|
+
```python
|
|
88
|
+
>>> alice = Account()
|
|
89
|
+
>>> bob = Account()
|
|
90
|
+
>>> bob.generate_one_time_keys(1)
|
|
91
|
+
>>> id_key = bob.identity_keys["curve25519"]
|
|
92
|
+
>>> one_time = list(bob.one_time_keys["curve25519"].values())[0]
|
|
93
|
+
>>> alice_session = OutboundSession(alice, id_key, one_time)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Encryption
|
|
97
|
+
|
|
98
|
+
After an outbound session is created an encrypted message can be exchanged:
|
|
99
|
+
|
|
100
|
+
```python
|
|
101
|
+
>>> message = alice_session.encrypt("It's a secret to everybody")
|
|
102
|
+
>>> message.ciphertext
|
|
103
|
+
'AwogkL7RoakT9gnjcZMra+y39WXKRmnxBPEaEp6OSueIA0cSIJxGpBoP8YZ+CGweXQ10LujbXMgK88
|
|
104
|
+
xG/JZMQJ5ulK9ZGiC8TYrezNYr3qyIBLlecXr/9wnegvJaSFDmWDVOcf4XfyI/AwogqIZfAklRXGC5b
|
|
105
|
+
ZJcZxVxQGgJ8Dz4OQII8k0Dp8msUXwQACIQvagY1dO55Qvnk5PZ2GF+wdKnvj6Zxl2g'
|
|
106
|
+
>>> message.message_type
|
|
107
|
+
0
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
After the message is transfered, bob can create an InboundSession to decrypt the
|
|
111
|
+
message.
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
>>> bob_session = InboundSession(bob, message)
|
|
115
|
+
>>> bob_session.decrypt(message)
|
|
116
|
+
"It's a secret to everybody"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Pickling
|
|
120
|
+
|
|
121
|
+
Sessions like accounts can be stored for later use the API is the same as for
|
|
122
|
+
accounts.
|
|
123
|
+
|
|
124
|
+
```python
|
|
125
|
+
>>> pickle = session.pickle()
|
|
126
|
+
>>> restored = Session.from_pickle(pickle)
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
# Group Sessions
|
|
130
|
+
|
|
131
|
+
Group Sessions are used to create a one-to-many encrypted communication channel.
|
|
132
|
+
The group session key needs to be shared with all participants that should be able
|
|
133
|
+
to decrypt the group messages. Another thing to notice is that, since the group
|
|
134
|
+
session key is ratcheted every time a message is encrypted, the session key should
|
|
135
|
+
be shared before any messages are encrypted.
|
|
136
|
+
|
|
137
|
+
## Group Session Creation
|
|
138
|
+
|
|
139
|
+
Group sessions aren't bound to an account like peer-to-peer sessions so their
|
|
140
|
+
creation is straightforward.
|
|
141
|
+
|
|
142
|
+
```python
|
|
143
|
+
>>> alice_group = OutboundGroupSession()
|
|
144
|
+
>>> bob_inbound_group = InboundGroupSession(alice_group.session_key)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Group Encryption
|
|
148
|
+
|
|
149
|
+
Group encryption is pretty simple. The important part is to share the session
|
|
150
|
+
key with all participants over a secure channel (e.g. peer-to-peer Olm
|
|
151
|
+
sessions).
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
>>> message = alice_group.encrypt("It's a secret to everybody")
|
|
155
|
+
>>> bob_inbound_group.decrypt(message)
|
|
156
|
+
("It's a secret to everybody", 0)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Pickling
|
|
160
|
+
|
|
161
|
+
Pickling works the same way as for peer-to-peer Olm sessions.
|
|
162
|
+
|
|
163
|
+
```python
|
|
164
|
+
>>> pickle = session.pickle()
|
|
165
|
+
>>> restored = InboundGroupSession.from_pickle(pickle)
|
|
166
|
+
```
|
|
167
|
+
[1]: https://git.matrix.org/git/olm/about/
|
|
168
|
+
[2]: https://git.matrix.org/git/olm/tree/python?id=f8c61b8f8432d0b0b38d57f513c5048fb42f22ab
|
|
169
|
+
[3]: https://cffi.readthedocs.io/en/latest/
|
|
170
|
+
[4]: https://git.matrix.org/git/olm/about/docs/olm.rst
|
|
171
|
+
[5]: https://git.matrix.org/git/olm/about/docs/megolm.rst
|
|
172
|
+
[6]: https://matrix.org/docs/guides/end-to-end-encryption-implementation-guide
|
|
173
|
+
[7]: https://poljar.github.io/python-olm/html/index.html
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/* Copyright 2015, 2016 OpenMarket Ltd
|
|
2
|
+
*
|
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
* See the License for the specific language governing permissions and
|
|
13
|
+
* limitations under the License.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/* C bindings for base64 functions */
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#ifndef OLM_BASE64_H_
|
|
20
|
+
#define OLM_BASE64_H_
|
|
21
|
+
|
|
22
|
+
#include <stddef.h>
|
|
23
|
+
#include <stdint.h>
|
|
24
|
+
|
|
25
|
+
// Note: exports in this file are only for unit tests. Nobody else should be
|
|
26
|
+
// using this externally
|
|
27
|
+
#include "olm/olm_export.h"
|
|
28
|
+
|
|
29
|
+
#ifdef __cplusplus
|
|
30
|
+
extern "C" {
|
|
31
|
+
#endif
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The number of bytes of unpadded base64 needed to encode a length of input.
|
|
36
|
+
*/
|
|
37
|
+
OLM_EXPORT size_t _olm_encode_base64_length(
|
|
38
|
+
size_t input_length
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Encode the raw input as unpadded base64.
|
|
43
|
+
* Writes encode_base64_length(input_length) bytes to the output buffer.
|
|
44
|
+
* The input can overlap with the last three quarters of the output buffer.
|
|
45
|
+
* That is, the input pointer may be output + output_length - input_length.
|
|
46
|
+
*
|
|
47
|
+
* Returns number of bytes encoded
|
|
48
|
+
*/
|
|
49
|
+
OLM_EXPORT size_t _olm_encode_base64(
|
|
50
|
+
uint8_t const * input, size_t input_length,
|
|
51
|
+
uint8_t * output
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The number of bytes of raw data a length of unpadded base64 will encode to.
|
|
56
|
+
* Returns size_t(-1) if the length is not a valid length for base64.
|
|
57
|
+
*/
|
|
58
|
+
OLM_EXPORT size_t _olm_decode_base64_length(
|
|
59
|
+
size_t input_length
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Decodes the unpadded base64 input to raw bytes.
|
|
64
|
+
* Writes decode_base64_length(input_length) bytes to the output buffer.
|
|
65
|
+
* The output can overlap with the first three quarters of the input buffer.
|
|
66
|
+
* That is, the input pointers and output pointer may be the same.
|
|
67
|
+
*
|
|
68
|
+
* Returns number of bytes decoded
|
|
69
|
+
*/
|
|
70
|
+
OLM_EXPORT size_t _olm_decode_base64(
|
|
71
|
+
uint8_t const * input, size_t input_length,
|
|
72
|
+
uint8_t * output
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
#ifdef __cplusplus
|
|
77
|
+
} // extern "C"
|
|
78
|
+
#endif
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
#endif /* OLM_BASE64_H_ */
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/* Copyright 2015 OpenMarket Ltd
|
|
2
|
+
*
|
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
* See the License for the specific language governing permissions and
|
|
13
|
+
* limitations under the License.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
#ifndef OLM_CIPHER_H_
|
|
17
|
+
#define OLM_CIPHER_H_
|
|
18
|
+
|
|
19
|
+
#include <stdint.h>
|
|
20
|
+
#include <stdlib.h>
|
|
21
|
+
|
|
22
|
+
// Note: exports in this file are only for unit tests. Nobody else should be
|
|
23
|
+
// using this externally
|
|
24
|
+
#include "olm/olm_export.h"
|
|
25
|
+
|
|
26
|
+
#ifdef __cplusplus
|
|
27
|
+
extern "C" {
|
|
28
|
+
#endif
|
|
29
|
+
|
|
30
|
+
struct _olm_cipher;
|
|
31
|
+
|
|
32
|
+
struct _olm_cipher_ops {
|
|
33
|
+
/**
|
|
34
|
+
* Returns the length of the message authentication code that will be
|
|
35
|
+
* appended to the output.
|
|
36
|
+
*/
|
|
37
|
+
size_t (*mac_length)(const struct _olm_cipher *cipher);
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Returns the length of cipher-text for a given length of plain-text.
|
|
41
|
+
*/
|
|
42
|
+
size_t (*encrypt_ciphertext_length)(
|
|
43
|
+
const struct _olm_cipher *cipher,
|
|
44
|
+
size_t plaintext_length
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* Encrypts the plain-text into the output buffer and authenticates the
|
|
49
|
+
* contents of the output buffer covering both cipher-text and any other
|
|
50
|
+
* associated data in the output buffer.
|
|
51
|
+
*
|
|
52
|
+
* |---------------------------------------output_length-->|
|
|
53
|
+
* output |--ciphertext_length-->| |---mac_length-->|
|
|
54
|
+
* ciphertext
|
|
55
|
+
*
|
|
56
|
+
* The plain-text pointers and cipher-text pointers may be the same.
|
|
57
|
+
*
|
|
58
|
+
* Returns size_t(-1) if the length of the cipher-text or the output
|
|
59
|
+
* buffer is too small. Otherwise returns the length of the output buffer.
|
|
60
|
+
*/
|
|
61
|
+
size_t (*encrypt)(
|
|
62
|
+
const struct _olm_cipher *cipher,
|
|
63
|
+
uint8_t const * key, size_t key_length,
|
|
64
|
+
uint8_t const * plaintext, size_t plaintext_length,
|
|
65
|
+
uint8_t * ciphertext, size_t ciphertext_length,
|
|
66
|
+
uint8_t * output, size_t output_length
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Returns the maximum length of plain-text that a given length of
|
|
71
|
+
* cipher-text can contain.
|
|
72
|
+
*/
|
|
73
|
+
size_t (*decrypt_max_plaintext_length)(
|
|
74
|
+
const struct _olm_cipher *cipher,
|
|
75
|
+
size_t ciphertext_length
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Authenticates the input and decrypts the cipher-text into the plain-text
|
|
80
|
+
* buffer.
|
|
81
|
+
*
|
|
82
|
+
* |----------------------------------------input_length-->|
|
|
83
|
+
* input |--ciphertext_length-->| |---mac_length-->|
|
|
84
|
+
* ciphertext
|
|
85
|
+
*
|
|
86
|
+
* The plain-text pointers and cipher-text pointers may be the same.
|
|
87
|
+
*
|
|
88
|
+
* Returns size_t(-1) if the length of the plain-text buffer is too
|
|
89
|
+
* small or if the authentication check fails. Otherwise returns the length
|
|
90
|
+
* of the plain text.
|
|
91
|
+
*/
|
|
92
|
+
size_t (*decrypt)(
|
|
93
|
+
const struct _olm_cipher *cipher,
|
|
94
|
+
uint8_t const * key, size_t key_length,
|
|
95
|
+
uint8_t const * input, size_t input_length,
|
|
96
|
+
uint8_t const * ciphertext, size_t ciphertext_length,
|
|
97
|
+
uint8_t * plaintext, size_t max_plaintext_length
|
|
98
|
+
);
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
struct _olm_cipher {
|
|
102
|
+
const struct _olm_cipher_ops *ops;
|
|
103
|
+
/* cipher-specific fields follow */
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
struct _olm_cipher_aes_sha_256 {
|
|
107
|
+
struct _olm_cipher base_cipher;
|
|
108
|
+
|
|
109
|
+
/** context string for the HKDF used for deriving the AES256 key, HMAC key,
|
|
110
|
+
* and AES IV, from the key material passed to encrypt/decrypt.
|
|
111
|
+
*/
|
|
112
|
+
uint8_t const * kdf_info;
|
|
113
|
+
|
|
114
|
+
/** length of context string kdf_info */
|
|
115
|
+
size_t kdf_info_length;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
OLM_EXPORT extern const struct _olm_cipher_ops _olm_cipher_aes_sha_256_ops;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* get an initializer for an instance of struct _olm_cipher_aes_sha_256.
|
|
122
|
+
*
|
|
123
|
+
* To use it, declare:
|
|
124
|
+
*
|
|
125
|
+
* struct _olm_cipher_aes_sha_256 MY_CIPHER =
|
|
126
|
+
* OLM_CIPHER_INIT_AES_SHA_256("MY_KDF");
|
|
127
|
+
* struct _olm_cipher *cipher = OLM_CIPHER_BASE(&MY_CIPHER);
|
|
128
|
+
*/
|
|
129
|
+
#define OLM_CIPHER_INIT_AES_SHA_256(KDF_INFO) { \
|
|
130
|
+
/*.base_cipher = */{ &_olm_cipher_aes_sha_256_ops },\
|
|
131
|
+
/*.kdf_info = */(uint8_t *)(KDF_INFO), \
|
|
132
|
+
/*.kdf_info_length = */sizeof(KDF_INFO) - 1 \
|
|
133
|
+
}
|
|
134
|
+
#define OLM_CIPHER_BASE(CIPHER) \
|
|
135
|
+
(&((CIPHER)->base_cipher))
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
#ifdef __cplusplus
|
|
139
|
+
} /* extern "C" */
|
|
140
|
+
#endif
|
|
141
|
+
|
|
142
|
+
#endif /* OLM_CIPHER_H_ */
|