primo commit
This commit is contained in:
70
libraries/vendor/php-tuf/php-tuf/DEPENDENCIES.md
vendored
Normal file
70
libraries/vendor/php-tuf/php-tuf/DEPENDENCIES.md
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
# PHP-TUF dependency information
|
||||
|
||||
## Production PHP dependencies
|
||||
|
||||
### Paragon IE sodium_compat
|
||||
- **Repository:** https://github.com/paragonie/sodium_compat
|
||||
- **Release cycle:** No formal policy documented. Follows semver. Old major
|
||||
and minor versions appear to receive support after new versions are released.
|
||||
- **Security policies:**
|
||||
[Paragon security
|
||||
policy](https://github.com/paragonie/random_compat/security/policy)
|
||||
*(NB: **Full disclosure**)*
|
||||
- **Security issue reporting:** `scott@paragonie.com`
|
||||
- **Contacts:** ?
|
||||
- **Additional dependencies:** [random_compat](https://github.com/paragonie/random_compat)
|
||||
(Same policies.)
|
||||
|
||||
### Guzzle PHP HTTP client
|
||||
- **Repository:** https://github.com/guzzle/guzzle
|
||||
- **Release cycle:** https://github.com/guzzle/guzzle/releases
|
||||
- **Security policies:** https://github.com/guzzle/guzzle/security/policy
|
||||
- **Security issue reporting:** security@guzzlephp.org
|
||||
- **Contacts:** N/A
|
||||
- **Additional dependencies:** Guzzle dependencies include php, ext-json, psr/http-client. It has additional dev dependencies.
|
||||
|
||||
### Symfony Validator
|
||||
- **Repository:** https://github.com/symfony/validator
|
||||
- **Release cycle:** https://github.com/symfony/validator/releases
|
||||
- **Security policies:** https://github.com/symfony/validator/security/policy
|
||||
- **Security issue reporting:** security@symfony.com
|
||||
- **Contacts:** N/A
|
||||
- **Additional dependencies:** The majority of dependencies are other Symfony packages. Dev dependencies include doctrine/annotations, doctrine/cache, and egulias/email-validator.
|
||||
|
||||
### DeepCopy
|
||||
- **Repository:** https://github.com/myclabs/DeepCopy
|
||||
- **Release cycle:** https://github.com/myclabs/DeepCopy/releases
|
||||
- **Security policies:** There's no security policy on the Git repo.
|
||||
- **Security issue reporting:** ?
|
||||
- **Contacts:** N/A
|
||||
- **Additional dependencies:** Only php. There are additional dev dependencies.
|
||||
|
||||
## Development PHP dependencies
|
||||
|
||||
### PHPUnit
|
||||
- **Repository:** https://github.com/sebastianbergmann/phpunit
|
||||
- **Release cycle:** [Supported versions of
|
||||
PHPUnit](https://phpunit.de/supported-versions.html)
|
||||
- **Security policies:** PHPUnit maintainers consider the package a
|
||||
development tool that should not be used in production; therefore, they do
|
||||
not have a security release process.
|
||||
- **Security issue reporting:** N/A
|
||||
- **Contacts:** N/A
|
||||
- **Additional dependencies:** PHPUnit adds numerous additional dependencies
|
||||
to dev builds. The majority are other packages maintained by PHPUnit or its
|
||||
author.
|
||||
|
||||
### Symfony PHPUnit Bridge
|
||||
- **Repository:** https://github.com/symfony/phpunit-bridge
|
||||
- **Release cycle:** [Symfony releases](https://symfony.com/releases)
|
||||
(Scheduled releases, continuous upgrade path, overlapping major and minor
|
||||
support, and long-term support versions.)
|
||||
- **Security policies:** [Symfony security
|
||||
policy](https://symfony.com/doc/master/contributing/code/security.html)
|
||||
- **Security issue reporting:** `security [at] symfony.com`
|
||||
- **Contacts:** fabpot, michaelcullum
|
||||
- **Additional dependencies:** None
|
||||
|
||||
## Development Python dependencies
|
||||
@todo Document dependencies here. https://github.com/php-tuf/php-tuf/issues/159
|
||||
|
||||
21
libraries/vendor/php-tuf/php-tuf/LICENSE
vendored
Normal file
21
libraries/vendor/php-tuf/php-tuf/LICENSE
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 PHP-TUF
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
28
libraries/vendor/php-tuf/php-tuf/Pipfile
vendored
Normal file
28
libraries/vendor/php-tuf/php-tuf/Pipfile
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
[[source]]
|
||||
name = "pypi"
|
||||
url = "https://pypi.org/simple"
|
||||
verify_ssl = true
|
||||
|
||||
[dev-packages]
|
||||
|
||||
[packages]
|
||||
certifi = "==2022.12.7"
|
||||
cffi = "==1.15.1"
|
||||
chardet = "==5.1.0"
|
||||
colorama = "==0.4.6"
|
||||
cryptography = "==39.0.1"
|
||||
idna = "==3.4"
|
||||
iso8601 = "==1.1.0"
|
||||
pycparser = "==2.21"
|
||||
python-dateutil = "==2.8.2"
|
||||
requests = "==2.28.1"
|
||||
securesystemslib = "==0.25.0"
|
||||
six = "==1.16.0"
|
||||
tuf = "==0.19.0"
|
||||
urllib3 = "==1.26.13"
|
||||
PyNaCl = "==1.5.0"
|
||||
flake8 = "*"
|
||||
dirhash = "*"
|
||||
|
||||
[requires]
|
||||
python_version = "3.9"
|
||||
300
libraries/vendor/php-tuf/php-tuf/Pipfile.lock
generated
vendored
Normal file
300
libraries/vendor/php-tuf/php-tuf/Pipfile.lock
generated
vendored
Normal file
@ -0,0 +1,300 @@
|
||||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "ec8d4d48f44c10edfc737b53d0ec5a9bf1d28a22e2b08bb398c4fbbd0edca5a0"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
"python_version": "3.9"
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"attrs": {
|
||||
"hashes": [
|
||||
"sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836",
|
||||
"sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==22.2.0"
|
||||
},
|
||||
"certifi": {
|
||||
"hashes": [
|
||||
"sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3",
|
||||
"sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2022.12.7"
|
||||
},
|
||||
"cffi": {
|
||||
"hashes": [
|
||||
"sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5",
|
||||
"sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef",
|
||||
"sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104",
|
||||
"sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426",
|
||||
"sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405",
|
||||
"sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375",
|
||||
"sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a",
|
||||
"sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e",
|
||||
"sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc",
|
||||
"sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf",
|
||||
"sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185",
|
||||
"sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497",
|
||||
"sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3",
|
||||
"sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35",
|
||||
"sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c",
|
||||
"sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83",
|
||||
"sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21",
|
||||
"sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca",
|
||||
"sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984",
|
||||
"sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac",
|
||||
"sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd",
|
||||
"sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee",
|
||||
"sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a",
|
||||
"sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2",
|
||||
"sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192",
|
||||
"sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7",
|
||||
"sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585",
|
||||
"sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f",
|
||||
"sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e",
|
||||
"sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27",
|
||||
"sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b",
|
||||
"sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e",
|
||||
"sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e",
|
||||
"sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d",
|
||||
"sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c",
|
||||
"sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415",
|
||||
"sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82",
|
||||
"sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02",
|
||||
"sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314",
|
||||
"sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325",
|
||||
"sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c",
|
||||
"sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3",
|
||||
"sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914",
|
||||
"sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045",
|
||||
"sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d",
|
||||
"sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9",
|
||||
"sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5",
|
||||
"sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2",
|
||||
"sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c",
|
||||
"sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3",
|
||||
"sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2",
|
||||
"sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8",
|
||||
"sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d",
|
||||
"sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d",
|
||||
"sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9",
|
||||
"sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162",
|
||||
"sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76",
|
||||
"sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4",
|
||||
"sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e",
|
||||
"sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9",
|
||||
"sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6",
|
||||
"sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b",
|
||||
"sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01",
|
||||
"sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.15.1"
|
||||
},
|
||||
"chardet": {
|
||||
"hashes": [
|
||||
"sha256:0d62712b956bc154f85fb0a266e2a3c5913c2967e00348701b32411d6def31e5",
|
||||
"sha256:362777fb014af596ad31334fde1e8c327dfdb076e1960d1694662d46a6917ab9"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==5.1.0"
|
||||
},
|
||||
"charset-normalizer": {
|
||||
"hashes": [
|
||||
"sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845",
|
||||
"sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==2.1.1"
|
||||
},
|
||||
"colorama": {
|
||||
"hashes": [
|
||||
"sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44",
|
||||
"sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.4.6"
|
||||
},
|
||||
"cryptography": {
|
||||
"hashes": [
|
||||
"sha256:0f8da300b5c8af9f98111ffd512910bc792b4c77392a9523624680f7956a99d4",
|
||||
"sha256:35f7c7d015d474f4011e859e93e789c87d21f6f4880ebdc29896a60403328f1f",
|
||||
"sha256:5aa67414fcdfa22cf052e640cb5ddc461924a045cacf325cd164e65312d99502",
|
||||
"sha256:5d2d8b87a490bfcd407ed9d49093793d0f75198a35e6eb1a923ce1ee86c62b41",
|
||||
"sha256:6687ef6d0a6497e2b58e7c5b852b53f62142cfa7cd1555795758934da363a965",
|
||||
"sha256:6f8ba7f0328b79f08bdacc3e4e66fb4d7aab0c3584e0bd41328dce5262e26b2e",
|
||||
"sha256:706843b48f9a3f9b9911979761c91541e3d90db1ca905fd63fee540a217698bc",
|
||||
"sha256:807ce09d4434881ca3a7594733669bd834f5b2c6d5c7e36f8c00f691887042ad",
|
||||
"sha256:83e17b26de248c33f3acffb922748151d71827d6021d98c70e6c1a25ddd78505",
|
||||
"sha256:96f1157a7c08b5b189b16b47bc9db2332269d6680a196341bf30046330d15388",
|
||||
"sha256:aec5a6c9864be7df2240c382740fcf3b96928c46604eaa7f3091f58b878c0bb6",
|
||||
"sha256:b0afd054cd42f3d213bf82c629efb1ee5f22eba35bf0eec88ea9ea7304f511a2",
|
||||
"sha256:ced4e447ae29ca194449a3f1ce132ded8fcab06971ef5f618605aacaa612beac",
|
||||
"sha256:d1f6198ee6d9148405e49887803907fe8962a23e6c6f83ea7d98f1c0de375695",
|
||||
"sha256:e124352fd3db36a9d4a21c1aa27fd5d051e621845cb87fb851c08f4f75ce8be6",
|
||||
"sha256:e422abdec8b5fa8462aa016786680720d78bdce7a30c652b7fadf83a4ba35336",
|
||||
"sha256:ef8b72fa70b348724ff1218267e7f7375b8de4e8194d1636ee60510aae104cd0",
|
||||
"sha256:f0c64d1bd842ca2633e74a1a28033d139368ad959872533b1bab8c80e8240a0c",
|
||||
"sha256:f24077a3b5298a5a06a8e0536e3ea9ec60e4c7ac486755e5fb6e6ea9b3500106",
|
||||
"sha256:fdd188c8a6ef8769f148f88f859884507b954cc64db6b52f66ef199bb9ad660a",
|
||||
"sha256:fe913f20024eb2cb2f323e42a64bdf2911bb9738a15dba7d3cce48151034e3a8"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==39.0.1"
|
||||
},
|
||||
"dirhash": {
|
||||
"hashes": [
|
||||
"sha256:31bf8192fbb6e09a2a7ff4de31b9eb127c58545af22125ca1fa67c91c8e2d898",
|
||||
"sha256:b77ef0407e9fdb4fe63631601cb6732183131c5e5d805942c37ae19455b9d25c"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.2.1"
|
||||
},
|
||||
"flake8": {
|
||||
"hashes": [
|
||||
"sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7",
|
||||
"sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==6.0.0"
|
||||
},
|
||||
"idna": {
|
||||
"hashes": [
|
||||
"sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4",
|
||||
"sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==3.4"
|
||||
},
|
||||
"iso8601": {
|
||||
"hashes": [
|
||||
"sha256:32811e7b81deee2063ea6d2e94f8819a86d1f3811e49d23623a41fa832bef03f",
|
||||
"sha256:8400e90141bf792bce2634df533dc57e3bee19ea120a87bebcd3da89a58ad73f"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.1.0"
|
||||
},
|
||||
"mccabe": {
|
||||
"hashes": [
|
||||
"sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325",
|
||||
"sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==0.7.0"
|
||||
},
|
||||
"pathspec": {
|
||||
"hashes": [
|
||||
"sha256:3a66eb970cbac598f9e5ccb5b2cf58930cd8e3ed86d393d541eaf2d8b1705229",
|
||||
"sha256:64d338d4e0914e91c1792321e6907b5a593f1ab1851de7fc269557a21b30ebbc"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==0.11.0"
|
||||
},
|
||||
"pycodestyle": {
|
||||
"hashes": [
|
||||
"sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053",
|
||||
"sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==2.10.0"
|
||||
},
|
||||
"pycparser": {
|
||||
"hashes": [
|
||||
"sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9",
|
||||
"sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.21"
|
||||
},
|
||||
"pyflakes": {
|
||||
"hashes": [
|
||||
"sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf",
|
||||
"sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==3.0.1"
|
||||
},
|
||||
"pynacl": {
|
||||
"hashes": [
|
||||
"sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858",
|
||||
"sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d",
|
||||
"sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93",
|
||||
"sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1",
|
||||
"sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92",
|
||||
"sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff",
|
||||
"sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba",
|
||||
"sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394",
|
||||
"sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b",
|
||||
"sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.5.0"
|
||||
},
|
||||
"python-dateutil": {
|
||||
"hashes": [
|
||||
"sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86",
|
||||
"sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.8.2"
|
||||
},
|
||||
"requests": {
|
||||
"hashes": [
|
||||
"sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983",
|
||||
"sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.28.1"
|
||||
},
|
||||
"scantree": {
|
||||
"hashes": [
|
||||
"sha256:2a8b163de0e4b2f9e4f37f8caf3f0b265172bbf174111e1bebc7955581895b39"
|
||||
],
|
||||
"version": "==0.0.1"
|
||||
},
|
||||
"securesystemslib": {
|
||||
"hashes": [
|
||||
"sha256:04bc11593edd68405939d3dfc318080bfb31f1ebb5d81c7911914b42dfd4bf2f",
|
||||
"sha256:10d5a066e70cb87704c9bf2cef1ef6d8a06fab5ef7602dd59c26d06251317a11"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.25.0"
|
||||
},
|
||||
"six": {
|
||||
"hashes": [
|
||||
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
|
||||
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.16.0"
|
||||
},
|
||||
"tuf": {
|
||||
"hashes": [
|
||||
"sha256:3c436468fb5f211411fdd2f3dbcf33fa7a3025c0d00cbe671014f0d010883345",
|
||||
"sha256:c6facc75af3e315c901af03654eea6b5fc2ad0efc47b3290cc564b20c69449f5"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.19.0"
|
||||
},
|
||||
"urllib3": {
|
||||
"hashes": [
|
||||
"sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc",
|
||||
"sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.26.13"
|
||||
}
|
||||
},
|
||||
"develop": {}
|
||||
}
|
||||
22
libraries/vendor/php-tuf/php-tuf/fixtures/AttackRollback/__init__.py
vendored
Normal file
22
libraries/vendor/php-tuf/php-tuf/fixtures/AttackRollback/__init__.py
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
from fixtures.builder import ConsistencyVariantFixtureBuilder
|
||||
|
||||
import shutil
|
||||
|
||||
|
||||
def build():
|
||||
builder = ConsistencyVariantFixtureBuilder('AttackRollback')\
|
||||
.create_target('testtarget.txt')\
|
||||
.publish(with_client=True)
|
||||
|
||||
for fixture in builder.fixtures:
|
||||
server_dir = fixture._server_dir
|
||||
backup_dir = server_dir + '_backup'
|
||||
shutil.copytree(server_dir, backup_dir, dirs_exist_ok=True)
|
||||
|
||||
fixture.create_target('testtarget2.txt')\
|
||||
.publish(with_client=True)
|
||||
shutil.rmtree(server_dir + '/')
|
||||
|
||||
# Reset the client to previous state to simulate a rollback attack.
|
||||
shutil.copytree(backup_dir, server_dir, dirs_exist_ok=True)
|
||||
shutil.rmtree(backup_dir + '/')
|
||||
4
libraries/vendor/php-tuf/php-tuf/fixtures/AttackRollback/consistent/client_versions.ini
vendored
Normal file
4
libraries/vendor/php-tuf/php-tuf/fixtures/AttackRollback/consistent/client_versions.ini
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
root = 2
|
||||
timestamp = 2
|
||||
snapshot = 2
|
||||
targets = 2
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/AttackRollback/consistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/AttackRollback/consistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
eaf33481bd1805f6eade8d8741450e68d766b5403b486c70872492a711f354b0
|
||||
4
libraries/vendor/php-tuf/php-tuf/fixtures/AttackRollback/inconsistent/client_versions.ini
vendored
Normal file
4
libraries/vendor/php-tuf/php-tuf/fixtures/AttackRollback/inconsistent/client_versions.ini
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
root = 2
|
||||
timestamp = 2
|
||||
snapshot = 2
|
||||
targets = 2
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/AttackRollback/inconsistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/AttackRollback/inconsistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
5153690437cea16079390e524e35970eacc16ff2f88f7fc7f04407b2b825f7f6
|
||||
21
libraries/vendor/php-tuf/php-tuf/fixtures/Delegated/__init__.py
vendored
Normal file
21
libraries/vendor/php-tuf/php-tuf/fixtures/Delegated/__init__.py
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
from fixtures.builder import ConsistencyVariantFixtureBuilder
|
||||
|
||||
|
||||
def build():
|
||||
fixture = ConsistencyVariantFixtureBuilder('Delegated', { 'use_timestamp_length': False })\
|
||||
.create_target('testtarget.txt')\
|
||||
.publish(with_client=True)\
|
||||
.delegate('unclaimed', ['level_1_*.txt'])\
|
||||
.create_target('level_1_target.txt', signing_role='unclaimed')\
|
||||
.publish(with_client=True)
|
||||
# === Point of No Return ===
|
||||
# Past this point, we don't re-export the client. This supports testing the
|
||||
# client's own ability to pick up and trust new data from the repository.
|
||||
fixture.add_key('targets')\
|
||||
.add_key('snapshot')\
|
||||
.invalidate()\
|
||||
.publish()\
|
||||
.revoke_key('targets')\
|
||||
.revoke_key('snapshot')\
|
||||
.invalidate()\
|
||||
.publish()
|
||||
5
libraries/vendor/php-tuf/php-tuf/fixtures/Delegated/consistent/client_versions.ini
vendored
Normal file
5
libraries/vendor/php-tuf/php-tuf/fixtures/Delegated/consistent/client_versions.ini
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
root = 2
|
||||
timestamp = 2
|
||||
snapshot = 2
|
||||
targets = 2
|
||||
unclaimed = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/Delegated/consistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/Delegated/consistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
ca9b890f808a19ba88805f71a52330e15938ca7001a9c93193d2ae71fa917542
|
||||
5
libraries/vendor/php-tuf/php-tuf/fixtures/Delegated/inconsistent/client_versions.ini
vendored
Normal file
5
libraries/vendor/php-tuf/php-tuf/fixtures/Delegated/inconsistent/client_versions.ini
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
root = 1
|
||||
timestamp = 2
|
||||
snapshot = 2
|
||||
targets = 2
|
||||
unclaimed = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/Delegated/inconsistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/Delegated/inconsistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
36b1d01fe8019bdb8302f46966f838cc38b4b020cd7f0e5b5d0df67685433395
|
||||
44
libraries/vendor/php-tuf/php-tuf/fixtures/HashedBins/__init__.py
vendored
Normal file
44
libraries/vendor/php-tuf/php-tuf/fixtures/HashedBins/__init__.py
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
# This fixture creates targets named a.txt through z.txt, and
|
||||
# distributes them across 8 hashed bin delegations. This uses
|
||||
# the "classic" (i.e., not succinct) form of hashed bins.
|
||||
|
||||
import string
|
||||
|
||||
from fixtures.builder import FixtureBuilder
|
||||
from tuf import roledb
|
||||
|
||||
def build():
|
||||
builder = FixtureBuilder('HashedBins', { 'use_snapshot_length': True })\
|
||||
.publish(with_client=True)
|
||||
|
||||
list_of_targets = []
|
||||
for c in list(string.ascii_lowercase):
|
||||
name = c + '.txt'
|
||||
builder.create_target(name, signing_role=None)
|
||||
list_of_targets.append(name)
|
||||
|
||||
# We need at least one key that will sign the targets in the hashed bins.
|
||||
public_key, private_key = builder._import_key()
|
||||
|
||||
# Create the hashed bins.
|
||||
builder.repository.targets.delegate_hashed_bins(list_of_targets, [public_key], 8)
|
||||
|
||||
# Assign the targets we've created to those hashed bins. TUF determines which
|
||||
# target goes in which bin.
|
||||
for name in list_of_targets:
|
||||
builder.repository.targets.add_target_to_bin(name, 8)
|
||||
|
||||
# Ensure the delegated roles that manage the hashed bins can actually be signed.
|
||||
# It's weird, but for some reason this is not done by delegate_hashed_bins().
|
||||
for role in builder.repository.targets.get_delegated_rolenames():
|
||||
builder.repository.targets(role).load_signing_key(private_key)
|
||||
|
||||
# Make all the delegated roles terminating.
|
||||
targets_role_info = roledb.get_roleinfo('targets', 'HashedBins')
|
||||
for i in range(len(targets_role_info['delegations']['roles'])):
|
||||
targets_role_info['delegations']['roles'][i]['terminating'] = True
|
||||
roledb.update_roleinfo('targets', targets_role_info, repository_name='HashedBins')
|
||||
|
||||
# Publish these changes on the server side.
|
||||
builder.invalidate()
|
||||
builder.publish()
|
||||
4
libraries/vendor/php-tuf/php-tuf/fixtures/HashedBins/client_versions.ini
vendored
Normal file
4
libraries/vendor/php-tuf/php-tuf/fixtures/HashedBins/client_versions.ini
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/HashedBins/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/HashedBins/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
1a7e21755d8807517bd367ae8655fb013d1d529c8e5265f67e630b1a368bbb79
|
||||
47
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegated/__init__.py
vendored
Normal file
47
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegated/__init__.py
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
from fixtures.builder import ConsistencyVariantFixtureBuilder
|
||||
|
||||
|
||||
def build():
|
||||
fixture = ConsistencyVariantFixtureBuilder('NestedDelegated')\
|
||||
.create_target('testtarget.txt')\
|
||||
.publish(with_client=True)\
|
||||
.delegate('unclaimed', ['level_1_*.txt'])\
|
||||
.create_target('level_1_target.txt', signing_role='unclaimed')\
|
||||
.publish(with_client=True)
|
||||
# === Point of No Return ===
|
||||
# Past this point, we don't re-export the client. This supports testing the
|
||||
# client's own ability to pick up and trust new data from the repository.
|
||||
fixture.add_key('targets')\
|
||||
.add_key('snapshot')\
|
||||
.invalidate()\
|
||||
.publish()\
|
||||
.revoke_key('targets')\
|
||||
.revoke_key('snapshot')\
|
||||
.invalidate()\
|
||||
.publish()
|
||||
|
||||
# Delegate from level_1_delegation to level_2
|
||||
fixture.delegate('level_2', ['level_1_2_*.txt'], parent='unclaimed')\
|
||||
.create_target('level_1_2_target.txt', signing_role='level_2')
|
||||
|
||||
# Create a terminating delegation
|
||||
fixture.delegate('level_2_terminating', ['level_1_2_terminating_*.txt'], parent='unclaimed', terminating=True)\
|
||||
.create_target('level_1_2_terminating_findable.txt', signing_role='level_2_terminating')
|
||||
|
||||
# Create a delegation under non-terminating 'level_2' delegation.
|
||||
fixture.delegate('level_3', ['level_1_2_3_*.txt'], parent='level_2')\
|
||||
.create_target('level_1_2_3_below_non_terminating_target.txt', signing_role='level_3')
|
||||
|
||||
# Add a delegation below the 'level_2_terminating' role.
|
||||
# Delegations from a terminating role are evaluated but delegations after a terminating delegation
|
||||
# are not.
|
||||
# See NestedDelegatedErrors
|
||||
fixture.delegate('level_3_below_terminated', ['level_1_2_terminating_3_*.txt'], parent='level_2_terminating')\
|
||||
.create_target('level_1_2_terminating_3_target.txt', signing_role='level_3_below_terminated')
|
||||
|
||||
# Add a delegation after level_2_terminating, but the path does not match level_2_terminating,
|
||||
# which WILL be evaluated.
|
||||
fixture.delegate('level_2_after_terminating_not_match_terminating_path', ['level_1_2a_terminating_plus_1_more_*.txt'], parent='unclaimed')\
|
||||
.create_target('level_1_2a_terminating_plus_1_more_findable.txt', signing_role='level_2_after_terminating_not_match_terminating_path')
|
||||
|
||||
fixture.publish()
|
||||
7
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegated/consistent/client_versions.ini
vendored
Normal file
7
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegated/consistent/client_versions.ini
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
root = 2
|
||||
timestamp = 2
|
||||
snapshot = 2
|
||||
targets = 2
|
||||
unclaimed = 1
|
||||
level_2 = null
|
||||
level_3 = null
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegated/consistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegated/consistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
8d6c7e7ff65ebef095af44116a2b257636a1af0fdcd84880c67d39d15bca6a67
|
||||
5
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegated/inconsistent/client_versions.ini
vendored
Normal file
5
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegated/inconsistent/client_versions.ini
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
root = 1
|
||||
timestamp = 2
|
||||
snapshot = 2
|
||||
targets = 2
|
||||
unclaimed = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegated/inconsistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegated/inconsistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
a20007c313455750977f5b763f29e12d9fea9d98bc9e09625436838a7064a66a
|
||||
54
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegatedErrors/__init__.py
vendored
Normal file
54
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegatedErrors/__init__.py
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
from fixtures.builder import ConsistencyVariantFixtureBuilder
|
||||
|
||||
|
||||
def build():
|
||||
fixture = ConsistencyVariantFixtureBuilder('NestedDelegatedErrors')\
|
||||
.create_target('testtarget.txt')\
|
||||
.publish(with_client=True)\
|
||||
.delegate('unclaimed', ['level_1_*.txt'])\
|
||||
.create_target('level_1_target.txt', signing_role='unclaimed')\
|
||||
.publish(with_client=True)
|
||||
# === Point of No Return ===
|
||||
# Past this point, we don't re-export the client. This supports testing the
|
||||
# client's own ability to pick up and trust new data from the repository.
|
||||
fixture.add_key('targets')\
|
||||
.add_key('snapshot')\
|
||||
.invalidate()\
|
||||
.publish()\
|
||||
.revoke_key('targets')\
|
||||
.revoke_key('snapshot')\
|
||||
.invalidate()\
|
||||
.publish()
|
||||
|
||||
# Delegate from level_1_delegation to level_2
|
||||
fixture.delegate('level_2', ['level_1_2_*.txt'], parent='unclaimed')\
|
||||
.create_target('level_1_2_target.txt', signing_role='level_2')
|
||||
|
||||
# Create a terminating delegation
|
||||
fixture.delegate('level_2_terminating', ['level_1_2_terminating_*.txt'], parent='unclaimed', terminating=True)\
|
||||
.create_target('level_1_2_terminating_findable.txt', signing_role='level_2_terminating')
|
||||
|
||||
# Create a delegation under non-terminating 'level_2' delegation.
|
||||
fixture.delegate('level_3', ['level_1_2_3_*.txt'], parent='level_2')\
|
||||
.create_target('level_1_2_3_below_non_terminating_target.txt', signing_role='level_3')
|
||||
|
||||
# Add a delegation below the 'level_2_terminating' role.
|
||||
# Delegations from a terminating role are evaluated but delegations after a terminating delegation
|
||||
# are not.
|
||||
# See NestedDelegatedErrors
|
||||
fixture.delegate('level_3_below_terminated', ['level_1_2_terminating_3_*.txt'], parent='level_2_terminating')\
|
||||
.create_target('level_1_2_terminating_3_target.txt', signing_role='level_3_below_terminated')
|
||||
|
||||
fixture.publish()
|
||||
|
||||
# Add a target that does not match the path for the delegation.
|
||||
fixture.create_target('level_a.txt', signing_role='unclaimed')
|
||||
# Add a target that matches the path parent delegation but not the current delegation.
|
||||
fixture.create_target('level_1_3_target.txt', signing_role='level_2')
|
||||
# Add a target that does not match the delegation's paths.
|
||||
fixture.create_target('level_2_unfindable.txt', signing_role='level_2_terminating')
|
||||
|
||||
# Add a delegation after level_2_terminating which will not be evaluated.
|
||||
fixture.delegate('level_2_after_terminating_match_terminating_path', ['level_1_2_terminating_plus_1_more_*.txt'], parent='unclaimed')\
|
||||
.create_target('level_1_2_terminating_plus_1_more_unfindable.txt', signing_role='level_2_after_terminating_match_terminating_path')\
|
||||
.publish()
|
||||
@ -0,0 +1,5 @@
|
||||
root = 2
|
||||
timestamp = 2
|
||||
snapshot = 2
|
||||
targets = 2
|
||||
unclaimed = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegatedErrors/consistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegatedErrors/consistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
b43062caaee432f84d4568c75683f812143ebe27fb6c2f9c289d6dc7cbe5dbe1
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 2
|
||||
snapshot = 2
|
||||
targets = 2
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegatedErrors/inconsistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/NestedDelegatedErrors/inconsistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
e188106dea1b82ac02c41e0e9ca4a311ae6e522806ff1cc7bb9a0219e3b2ea21
|
||||
30
libraries/vendor/php-tuf/php-tuf/fixtures/NestedTerminatingNonDelegatingDelegation/__init__.py
vendored
Normal file
30
libraries/vendor/php-tuf/php-tuf/fixtures/NestedTerminatingNonDelegatingDelegation/__init__.py
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
# Delegation tree
|
||||
#
|
||||
# Targets
|
||||
# / \
|
||||
# a d
|
||||
# / \
|
||||
# b c
|
||||
#
|
||||
# b is the only terminating delegation
|
||||
#
|
||||
# Roles should be evaluated in the order:
|
||||
# Targets > a > b
|
||||
#
|
||||
# Roles c and d should not be evaluated.
|
||||
from fixtures.builder import ConsistencyVariantFixtureBuilder
|
||||
|
||||
|
||||
def build():
|
||||
ConsistencyVariantFixtureBuilder('NestedTerminatingNonDelegatingDelegation')\
|
||||
.publish(with_client=True)\
|
||||
.create_target('targets.txt')\
|
||||
.delegate('a', ['*.txt'])\
|
||||
.create_target('a.txt', signing_role='a')\
|
||||
.delegate('b', ['*.txt'], parent='a', terminating=True) \
|
||||
.create_target('b.txt', signing_role='b') \
|
||||
.delegate('c', ['*.txt'], parent='a') \
|
||||
.create_target('c.txt', signing_role='c') \
|
||||
.delegate('d', ['*.txt']) \
|
||||
.create_target('d.txt', signing_role='d') \
|
||||
.publish()
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
@ -0,0 +1 @@
|
||||
8db732a666742d0958cf0d71483fd6d2acac69f07d1c8c58c5132986809a9962
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
@ -0,0 +1 @@
|
||||
c44a38a43088922b9c119b1c45c2fa6138d6de7a76b093c3eacbdd33d1b99da8
|
||||
21
libraries/vendor/php-tuf/php-tuf/fixtures/PublishedTwice/__init__.py
vendored
Normal file
21
libraries/vendor/php-tuf/php-tuf/fixtures/PublishedTwice/__init__.py
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
from fixtures.builder import ConsistencyVariantFixtureBuilder
|
||||
|
||||
|
||||
def build(rotate_keys=None):
|
||||
"""
|
||||
Generates a TUF test fixture that publishes twice -- once on the client,
|
||||
and twice on the server -- and, in between those two publications, can
|
||||
optionally rotate the keys of a given role.
|
||||
"""
|
||||
name = 'PublishedTwice'
|
||||
if rotate_keys is not None:
|
||||
name += 'WithRotatedKeys_' + rotate_keys
|
||||
|
||||
fixture = ConsistencyVariantFixtureBuilder(name, { 'use_snapshot_hashes': True, 'use_snapshot_length': True, 'use_timestamp_hashes': True, 'use_timestamp_length': True })\
|
||||
.publish(with_client=True)
|
||||
fixture.create_target('test.txt')
|
||||
|
||||
if rotate_keys is not None:
|
||||
fixture.add_key(rotate_keys)\
|
||||
.revoke_key(rotate_keys, key_index=0)
|
||||
fixture.publish()
|
||||
4
libraries/vendor/php-tuf/php-tuf/fixtures/PublishedTwice/consistent/client_versions.ini
vendored
Normal file
4
libraries/vendor/php-tuf/php-tuf/fixtures/PublishedTwice/consistent/client_versions.ini
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/PublishedTwice/consistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/PublishedTwice/consistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
8eb39b3f52950fd6fa3a15ed6ac368cbd6693eaa4a048323023945cf77c3ff0b
|
||||
4
libraries/vendor/php-tuf/php-tuf/fixtures/PublishedTwice/inconsistent/client_versions.ini
vendored
Normal file
4
libraries/vendor/php-tuf/php-tuf/fixtures/PublishedTwice/inconsistent/client_versions.ini
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/PublishedTwice/inconsistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/PublishedTwice/inconsistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
57de938403bda4b554d60ffd807bfbd31fd1f439f20aad045f56d97f8d54d7c9
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
@ -0,0 +1 @@
|
||||
ea8f976e80de787f3befcb10f1c8dc44bfb3d7b6f5ce580c801f5ca3fc48ae5d
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
@ -0,0 +1 @@
|
||||
0347255ba2d4d46982e4873308d17091f4c26563eed8aed5658b8443f2c0db92
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
@ -0,0 +1 @@
|
||||
b87efbdf4b37845e5a543f9b7af4070268fde99e5b3ab7bb04c396e4844ec4e7
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
@ -0,0 +1 @@
|
||||
32c57510ceb54c809e31595c3c814a8e622886ee241c7ca9fb82799ac23bcc4d
|
||||
7
libraries/vendor/php-tuf/php-tuf/fixtures/Simple/__init__.py
vendored
Normal file
7
libraries/vendor/php-tuf/php-tuf/fixtures/Simple/__init__.py
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
from fixtures.builder import ConsistencyVariantFixtureBuilder
|
||||
|
||||
|
||||
def build():
|
||||
ConsistencyVariantFixtureBuilder('Simple', { 'use_snapshot_hashes': True })\
|
||||
.create_target('testtarget.txt')\
|
||||
.publish(with_client=True)
|
||||
4
libraries/vendor/php-tuf/php-tuf/fixtures/Simple/consistent/client_versions.ini
vendored
Normal file
4
libraries/vendor/php-tuf/php-tuf/fixtures/Simple/consistent/client_versions.ini
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/Simple/consistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/Simple/consistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
c3fe00348987f44abed6da709b79fad573d6599e06305d58f1f0abed613679f6
|
||||
4
libraries/vendor/php-tuf/php-tuf/fixtures/Simple/inconsistent/client_versions.ini
vendored
Normal file
4
libraries/vendor/php-tuf/php-tuf/fixtures/Simple/inconsistent/client_versions.ini
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/Simple/inconsistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/Simple/inconsistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
8eb970962c9df384f60f8c118511e4600f73404bb8b268e8449d2a785b9c590f
|
||||
12
libraries/vendor/php-tuf/php-tuf/fixtures/TargetsLengthNoSnapshotLength/__init__.py
vendored
Normal file
12
libraries/vendor/php-tuf/php-tuf/fixtures/TargetsLengthNoSnapshotLength/__init__.py
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
from fixtures.builder import ConsistencyVariantFixtureBuilder
|
||||
|
||||
|
||||
def build():
|
||||
"""
|
||||
Generates a TUF test fixture that publishes twice -- once on the client,
|
||||
and twice on the server -- with targets length information, but no
|
||||
snapshot length information.
|
||||
"""
|
||||
ConsistencyVariantFixtureBuilder('TargetsLengthNoSnapshotLength', { 'use_timestamp_length': False, 'use_snapshot_length': True })\
|
||||
.publish(with_client=True)\
|
||||
.publish()
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/TargetsLengthNoSnapshotLength/consistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/TargetsLengthNoSnapshotLength/consistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
3fc4f767c946a44b68af07913a3b97392da051245620da5aa027d6fa73e79f1e
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
@ -0,0 +1 @@
|
||||
06b7e9237763c3337c9d238345573ed8bb8f7d12301e54389255b66ffb2392ae
|
||||
36
libraries/vendor/php-tuf/php-tuf/fixtures/TerminatingDelegation/__init__.py
vendored
Normal file
36
libraries/vendor/php-tuf/php-tuf/fixtures/TerminatingDelegation/__init__.py
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
# Delegation tree
|
||||
#
|
||||
# Targets
|
||||
# / \
|
||||
# a f
|
||||
# / \
|
||||
# b e
|
||||
# / \
|
||||
# c d
|
||||
#
|
||||
# b is the only terminating delegation
|
||||
#
|
||||
# Roles should be evaluated in the order:
|
||||
# Targets > a > b > c > d
|
||||
#
|
||||
# Roles e and d should not be evaluated.
|
||||
from fixtures.builder import ConsistencyVariantFixtureBuilder
|
||||
|
||||
|
||||
def build():
|
||||
ConsistencyVariantFixtureBuilder('TerminatingDelegation')\
|
||||
.publish(with_client=True)\
|
||||
.create_target('targets.txt')\
|
||||
.delegate('a', ['*.txt'])\
|
||||
.create_target('a.txt', signing_role='a')\
|
||||
.delegate('b', ['*.txt'], parent='a', terminating=True) \
|
||||
.create_target('b.txt', signing_role='b') \
|
||||
.delegate('c', ['*.txt'], parent='b') \
|
||||
.create_target('c.txt', signing_role='c') \
|
||||
.delegate('d', ['*.txt'], parent='b') \
|
||||
.create_target('d.txt', signing_role='d') \
|
||||
.delegate('e', ['*.txt'], parent='a') \
|
||||
.create_target('e.txt', signing_role='e') \
|
||||
.delegate('f', ['*.txt']) \
|
||||
.create_target('f.txt', signing_role='f') \
|
||||
.publish()
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/TerminatingDelegation/consistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/TerminatingDelegation/consistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
22a6b8614fb2b4dc41ed5eabb01153611593b4352c001a7c2cf155caf2eb1886
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/TerminatingDelegation/inconsistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/TerminatingDelegation/inconsistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
9bf78636e3a861e00dd31fab2e638eea03ee027962900b5e601a6655fcee8b12
|
||||
35
libraries/vendor/php-tuf/php-tuf/fixtures/ThreeLevelDelegation/__init__.py
vendored
Normal file
35
libraries/vendor/php-tuf/php-tuf/fixtures/ThreeLevelDelegation/__init__.py
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
# Delegation tree
|
||||
#
|
||||
# Targets
|
||||
# / \
|
||||
# a f
|
||||
# / \
|
||||
# b e
|
||||
# / \
|
||||
# c d
|
||||
#
|
||||
# No terminating delegations.
|
||||
#
|
||||
# Roles should be evaluated in the order:
|
||||
# Targets > a > b > c > d > e > f
|
||||
|
||||
from fixtures.builder import ConsistencyVariantFixtureBuilder
|
||||
|
||||
|
||||
def build():
|
||||
ConsistencyVariantFixtureBuilder('ThreeLevelDelegation')\
|
||||
.publish(with_client=True)\
|
||||
.create_target('targets.txt')\
|
||||
.delegate('a', ['*.txt'])\
|
||||
.create_target('a.txt', signing_role='a')\
|
||||
.delegate('b', ['*.txt'], parent='a') \
|
||||
.create_target('b.txt', signing_role='b') \
|
||||
.delegate('c', ['*.txt'], parent='b') \
|
||||
.create_target('c.txt', signing_role='c') \
|
||||
.delegate('d', ['*.txt'], parent='b') \
|
||||
.create_target('d.txt', signing_role='d') \
|
||||
.delegate('e', ['*.txt'], parent='a') \
|
||||
.create_target('e.txt', signing_role='e') \
|
||||
.delegate('f', ['*.txt']) \
|
||||
.create_target('f.txt', signing_role='f') \
|
||||
.publish()
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/ThreeLevelDelegation/consistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/ThreeLevelDelegation/consistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
f88c6b154505dbc1601855b8b0d92e164b1d8ab7175f16b65cde0d1e1547b805
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/ThreeLevelDelegation/inconsistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/ThreeLevelDelegation/inconsistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
262f72305874801378f63ae09f75f9ee506516b6b9a531165f531c37d5d25991
|
||||
10
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwo/__init__.py
vendored
Normal file
10
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwo/__init__.py
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
from fixtures.builder import ConsistencyVariantFixtureBuilder
|
||||
|
||||
|
||||
def build():
|
||||
builder = ConsistencyVariantFixtureBuilder('ThresholdTwo')\
|
||||
.add_key('timestamp')
|
||||
for fixture in builder.fixtures:
|
||||
fixture._role('timestamp').threshold = 2
|
||||
fixture.repository.mark_dirty(['timestamp'])
|
||||
builder.publish(with_client=True)
|
||||
4
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwo/consistent/client_versions.ini
vendored
Normal file
4
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwo/consistent/client_versions.ini
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwo/consistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwo/consistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
4778d5e66b3cde5069392fc369ee237d34c0d98a95d5f1e4988931bf81969efc
|
||||
4
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwo/inconsistent/client_versions.ini
vendored
Normal file
4
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwo/inconsistent/client_versions.ini
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwo/inconsistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwo/inconsistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
146aa22f094090d8dba0ae24fc2a76eef4eea7429a8b6ee6cac943a8279a899e
|
||||
45
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwoAttack/__init__.py
vendored
Normal file
45
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwoAttack/__init__.py
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
from fixtures.builder import FixtureBuilder
|
||||
|
||||
import os
|
||||
|
||||
|
||||
def build():
|
||||
_build(True)
|
||||
_build(False)
|
||||
|
||||
def _build(consistent):
|
||||
if consistent is True:
|
||||
suffix = 'consistent'
|
||||
else:
|
||||
suffix = 'inconsistent'
|
||||
|
||||
name = os.path.join('ThresholdTwoAttack', suffix)
|
||||
|
||||
fixture = FixtureBuilder(name)\
|
||||
.add_key('timestamp')
|
||||
fixture._role('timestamp').threshold = 2
|
||||
fixture.repository.mark_dirty(['timestamp'])
|
||||
fixture.publish(with_client=True, consistent=consistent)
|
||||
fixture.repository.mark_dirty(['timestamp'])
|
||||
fixture.publish(with_client=True, consistent=consistent)
|
||||
|
||||
# By exporting the repo but not the client, this gives us a new revision
|
||||
# that's ready to alter. If we alter a version the client is already
|
||||
# aware of, it may not pick up this new, altered version.
|
||||
fixture.repository.mark_dirty(['timestamp'])
|
||||
fixture.publish(consistent=consistent)
|
||||
|
||||
fixture.add_key('timestamp')
|
||||
|
||||
timestamp = fixture.read('timestamp.json')
|
||||
timestamp["signatures"][1] = {
|
||||
'keyid': fixture._keys['timestamp']['public'][2]['keyid'],
|
||||
# This is the SHA-512 hash of the sentence "This is just a random string".
|
||||
'sig': 'd1f9ee4f5861ad7b8be61c0c00f3cd4353cee60e70db7d6fbeab81b75e6a5e3871276239caf93d09e9cd406ba764c31abe00e95f2553a3cb543874cb6e7d1545'
|
||||
}
|
||||
|
||||
fixture.write('timestamp.json', timestamp)
|
||||
|
||||
# We could also alter the versioned (N.timestamp.json), but the spec
|
||||
# considers these as optional, so we can expect this alteration to be
|
||||
# sufficient.
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwoAttack/consistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwoAttack/consistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
ab3a72734f9e0e4dba4c77d0fce617e30a5e6e4babf5061c2ecb5150ff37b24c
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwoAttack/inconsistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/ThresholdTwoAttack/inconsistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
681f46921f5862ae422af94cda5faaf4f331200f767ef42d2d41faa503adbc33
|
||||
24
libraries/vendor/php-tuf/php-tuf/fixtures/TopLevelTerminating/__init__.py
vendored
Normal file
24
libraries/vendor/php-tuf/php-tuf/fixtures/TopLevelTerminating/__init__.py
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
# Delegation tree
|
||||
#
|
||||
# Targets
|
||||
# / \
|
||||
# a b
|
||||
#
|
||||
# a is the only terminating delegation
|
||||
#
|
||||
# Roles should be evaluated in the order:
|
||||
# Targets > a
|
||||
#
|
||||
# Role b should not be evaluated.
|
||||
from fixtures.builder import ConsistencyVariantFixtureBuilder
|
||||
|
||||
|
||||
def build():
|
||||
ConsistencyVariantFixtureBuilder('TopLevelTerminating')\
|
||||
.publish(with_client=True)\
|
||||
.create_target('targets.txt')\
|
||||
.delegate('a', ['*.txt'], terminating=True)\
|
||||
.create_target('a.txt', signing_role='a')\
|
||||
.delegate('b', ['*.txt'])\
|
||||
.create_target('b.txt', signing_role='b')\
|
||||
.publish()
|
||||
4
libraries/vendor/php-tuf/php-tuf/fixtures/TopLevelTerminating/consistent/client_versions.ini
vendored
Normal file
4
libraries/vendor/php-tuf/php-tuf/fixtures/TopLevelTerminating/consistent/client_versions.ini
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/TopLevelTerminating/consistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/TopLevelTerminating/consistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
d9d6f4ed9294a9a5b00c6916f7d66b85f49e8d5ce60d6ac25fa71e7552dafec8
|
||||
@ -0,0 +1,4 @@
|
||||
root = 1
|
||||
timestamp = 1
|
||||
snapshot = 1
|
||||
targets = 1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/TopLevelTerminating/inconsistent/hash.txt
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/TopLevelTerminating/inconsistent/hash.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
1a5e6842eaa266c22eff7aa8afc3bffebf5e6f7e55e3c8b02deee951e874798d
|
||||
253
libraries/vendor/php-tuf/php-tuf/fixtures/builder.py
vendored
Normal file
253
libraries/vendor/php-tuf/php-tuf/fixtures/builder.py
vendored
Normal file
@ -0,0 +1,253 @@
|
||||
"""
|
||||
Contains a class to help build fixtures programmatically.
|
||||
"""
|
||||
|
||||
from securesystemslib import formats, signer
|
||||
from tuf import repository_tool, roledb
|
||||
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
from dirhash import dirhash
|
||||
|
||||
|
||||
class FixtureBuilder:
|
||||
|
||||
def __init__(self, name, tuf_arguments={ 'use_snapshot_length': False }):
|
||||
self.dir = os.path.join(os.path.dirname(__file__), name)
|
||||
|
||||
# The index of the next key pair (in the keys/ directory) to use when initializing
|
||||
# a role.
|
||||
self._key_index = 0
|
||||
# The keychain, containing all public and private keys. The dictionary
|
||||
# keys are role names, and each item is a dictionary with 'public' and
|
||||
# 'private' members, which are lists of public and private keys.
|
||||
self._keys = {}
|
||||
# The directory of server-side metadata (and targets).
|
||||
self._server_dir = os.path.join(self.dir, 'server')
|
||||
|
||||
# If a directory of server-side metadata already exists, remove it.
|
||||
if os.path.isdir(self._server_dir):
|
||||
shutil.rmtree(self._server_dir)
|
||||
|
||||
self.repository = repository_tool.create_new_repository(self._server_dir, name, **tuf_arguments)
|
||||
self.repository.status()
|
||||
|
||||
# Initialize the basic TUF roles.
|
||||
self.add_key('root')
|
||||
self.add_key('targets')
|
||||
self.add_key('snapshot')
|
||||
self.add_key('timestamp')
|
||||
|
||||
self.repository.status()
|
||||
|
||||
def __del__(self):
|
||||
# Create a hash for the generated fixture.
|
||||
with open(self.dir + "/hash.txt", "w") as hash_file:
|
||||
hash_file.write(dirhash(self.dir, 'sha256', ignore=["__init__.py", "client_versions.ini", "hash.txt"]))
|
||||
|
||||
def _role(self, name):
|
||||
"""Loads a role object for a specific role."""
|
||||
try:
|
||||
return getattr(self.repository, name)
|
||||
except AttributeError:
|
||||
return self.repository.targets(name)
|
||||
|
||||
def delegate(self, role_name, paths, parent='targets', path_hash_prefixes=None, terminating=False):
|
||||
"""Creates a delegated role."""
|
||||
self._role(parent).delegate(role_name, [], paths, path_hash_prefixes=path_hash_prefixes, terminating=terminating)
|
||||
self.add_key(role_name)
|
||||
return self
|
||||
|
||||
def add_key(self, role_name):
|
||||
"""Loads a key pair from disk and assigns it to a given role."""
|
||||
(public_key, private_key) = self._import_key()
|
||||
|
||||
role = self._role(role_name)
|
||||
role.add_verification_key(public_key)
|
||||
role.load_signing_key(private_key)
|
||||
|
||||
if role_name not in self._keys:
|
||||
self._keys[role_name] = {'public': [], 'private': []}
|
||||
|
||||
self._keys[role_name]['public'].append(public_key)
|
||||
self._keys[role_name]['private'].append(private_key)
|
||||
|
||||
self._mark_dirty(role_name)
|
||||
|
||||
return self
|
||||
|
||||
def revoke_key(self, role_name, key_index=0):
|
||||
"""Revokes a key pair from a given role."""
|
||||
public_key = self._keys[role_name]['public'].pop(key_index)
|
||||
self._role(role_name).remove_verification_key(public_key)
|
||||
self._keys[role_name]['private'].pop(key_index)
|
||||
|
||||
self._mark_dirty(role_name)
|
||||
|
||||
return self
|
||||
|
||||
def _mark_dirty(self, role_name):
|
||||
"""Marks a role as dirty, along with its parent role."""
|
||||
self.repository.mark_dirty([role_name])
|
||||
|
||||
if role_name in roledb.TOP_LEVEL_ROLES:
|
||||
self.repository.mark_dirty(['root'])
|
||||
else:
|
||||
self.repository.mark_dirty(['targets'])
|
||||
|
||||
def _import_key(self):
|
||||
"""Loads a key pair from the keys/ directory."""
|
||||
keys_dir = os.path.join(os.path.dirname(__file__), 'keys')
|
||||
private_key = os.path.join(keys_dir, str(self._key_index)) + '_key'
|
||||
public_key = '{}.pub'.format(private_key)
|
||||
|
||||
self._key_index = self._key_index + 1
|
||||
|
||||
return (
|
||||
repository_tool.import_ed25519_publickey_from_file(public_key),
|
||||
repository_tool.import_ed25519_privatekey_from_file(private_key, password='pw')
|
||||
)
|
||||
|
||||
def invalidate(self):
|
||||
"""Marks the four top-level TUF roles as dirty."""
|
||||
self.repository.mark_dirty(roledb.TOP_LEVEL_ROLES)
|
||||
return self
|
||||
|
||||
def add_target(self, filename, signing_role='targets'):
|
||||
"""Adds an existing target file and signs it."""
|
||||
# @todo Just use add_target or add_targets consistently. This is only
|
||||
# here while fixtures are being ported to FixtureBuilder, to maintain
|
||||
# consistency with previously generated fixtures.
|
||||
if signing_role == 'targets':
|
||||
self._role('targets').add_targets([filename])
|
||||
else:
|
||||
self._role(signing_role).add_target(filename)
|
||||
self.repository.mark_dirty(['snapshot', 'targets', 'timestamp', signing_role])
|
||||
|
||||
return self
|
||||
|
||||
def create_target(self, filename, contents=None, signing_role='targets'):
|
||||
"""Creates a signed target file with arbitrary contents."""
|
||||
if contents is None:
|
||||
contents = 'Contents: ' + filename
|
||||
|
||||
path = os.path.join(self._server_dir, 'targets', filename)
|
||||
with open(path, 'w') as f:
|
||||
f.write(contents)
|
||||
|
||||
if signing_role is not None:
|
||||
self.add_target(filename, signing_role)
|
||||
|
||||
return self
|
||||
|
||||
def publish(self, with_client=False, consistent=True):
|
||||
"""Writes the TUF metadata to disk."""
|
||||
self.repository.writeall(consistent_snapshot=consistent)
|
||||
|
||||
staging_dir = os.path.join(self._server_dir, 'metadata.staged')
|
||||
live_dir = os.path.join(self._server_dir, 'metadata')
|
||||
shutil.copytree(staging_dir, live_dir, dirs_exist_ok=True)
|
||||
|
||||
if with_client:
|
||||
client_dir = os.path.join(self.dir, 'client')
|
||||
# If a directory of client-side metadata already exists, remove it.
|
||||
if os.path.isdir(client_dir):
|
||||
shutil.rmtree(client_dir)
|
||||
|
||||
repository_tool.create_tuf_client_directory(self._server_dir, client_dir)
|
||||
|
||||
return self
|
||||
|
||||
def read(self, filename):
|
||||
"""Returns the parsed contents of an existing metadata file."""
|
||||
path = os.path.join(self._server_dir, 'metadata', filename)
|
||||
|
||||
with open(path, 'r') as f:
|
||||
return json.load(f)
|
||||
|
||||
def write(self, filename, data):
|
||||
path = os.path.join(self._server_dir, 'metadata', filename)
|
||||
|
||||
with open(path, 'w') as f:
|
||||
json.dump(data, f, indent=1, separators=(',', ': '), sort_keys=True)
|
||||
|
||||
def write_signed(self, filename, data, signing_role):
|
||||
"""Writes arbitrary metadata, signed with a given role's keys, to a file."""
|
||||
self.write(filename, {
|
||||
'signatures': self._sign(data, signing_role),
|
||||
'signed': data
|
||||
})
|
||||
|
||||
def _sign(self, data, signing_role):
|
||||
"""Signs arbitrary data using a given role's keys."""
|
||||
signatures = []
|
||||
|
||||
# Encode the data to canonical JSON, which is what we will actually sign.
|
||||
data = str.encode(formats.encode_canonical(data))
|
||||
|
||||
# Loop through the signing role's private keys and use each one to sign
|
||||
# the canonical JSON representation of the data.
|
||||
for key in self._keys[signing_role]['private']:
|
||||
signature = signer.SSlibSigner(key).sign(data)
|
||||
signatures.append(signature.to_dict())
|
||||
|
||||
return signatures
|
||||
|
||||
|
||||
class ConsistencyVariantFixtureBuilder:
|
||||
|
||||
def __init__(self, name, tuf_arguments={ 'use_snapshot_length': False }):
|
||||
self.fixtures = [
|
||||
FixtureBuilder(os.path.join(name, 'consistent'), tuf_arguments),
|
||||
FixtureBuilder(os.path.join(name, 'inconsistent'), tuf_arguments)
|
||||
]
|
||||
|
||||
def delegate(self, role_name, paths, parent='targets', path_hash_prefixes=None, terminating=False):
|
||||
for fixture in self.fixtures:
|
||||
fixture.delegate(role_name, paths, parent, path_hash_prefixes, terminating)
|
||||
return self
|
||||
|
||||
def add_key(self, role_name):
|
||||
for fixture in self.fixtures:
|
||||
fixture.add_key(role_name)
|
||||
return self
|
||||
|
||||
def revoke_key(self, role_name, key_index=0):
|
||||
for fixture in self.fixtures:
|
||||
fixture.revoke_key(role_name, key_index)
|
||||
return self
|
||||
|
||||
def invalidate(self):
|
||||
for fixture in self.fixtures:
|
||||
fixture.invalidate()
|
||||
return self
|
||||
|
||||
def add_target(self, filename, signing_role='targets'):
|
||||
for fixture in self.fixtures:
|
||||
fixture.add_target(filename, signing_role)
|
||||
return self
|
||||
|
||||
def create_target(self, filename, contents=None, signing_role='targets'):
|
||||
for fixture in self.fixtures:
|
||||
fixture.create_target(filename, contents, signing_role)
|
||||
return self
|
||||
|
||||
def publish(self, with_client=False):
|
||||
self.fixtures[0].publish(with_client, consistent=True)
|
||||
self.fixtures[1].publish(with_client, consistent=False)
|
||||
return self
|
||||
|
||||
def read(self, filename):
|
||||
return [
|
||||
self.fixtures[0].read(filename),
|
||||
self.fixtures[1].read(filename)
|
||||
]
|
||||
|
||||
def write(self, filename, data):
|
||||
for fixture in self.fixtures:
|
||||
fixture.write(filename, data)
|
||||
|
||||
def write_signed(self, filename, data, signing_role):
|
||||
for fixture in self.fixtures:
|
||||
fixture.write_signed(filename, data, signing_role)
|
||||
12
libraries/vendor/php-tuf/php-tuf/fixtures/json/sorted.json
vendored
Normal file
12
libraries/vendor/php-tuf/php-tuf/fixtures/json/sorted.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"a": {},
|
||||
"b": {
|
||||
"b1": {"b1a": "bing", "b1b": "bang", "b1c": "boom"},
|
||||
"b2": [3,1,2]
|
||||
},
|
||||
"c": {
|
||||
"c1": 1,
|
||||
"c2": 2,
|
||||
"c3": 3
|
||||
}
|
||||
}
|
||||
12
libraries/vendor/php-tuf/php-tuf/fixtures/json/unsorted.json
vendored
Normal file
12
libraries/vendor/php-tuf/php-tuf/fixtures/json/unsorted.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"b": {
|
||||
"b1": {"b1b": "bang", "b1a": "bing", "b1c": "boom"},
|
||||
"b2": [3,1,2]
|
||||
},
|
||||
"a": {},
|
||||
"c": {
|
||||
"c2": 2,
|
||||
"c1": 1,
|
||||
"c3": 3
|
||||
}
|
||||
}
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/0_key
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/0_key
vendored
Normal file
@ -0,0 +1 @@
|
||||
2a56071cdc567ebf897df1bf21f00d2a@@@@100000@@@@6dbc945dd60f2a924116e48887c457b17da412f32d6529b770a3f95daaeedd83@@@@bf607649a08aaabe0764b5e53b7211e1@@@@f2f0717d46b2a8b49411553df1d4aae8e2e6ffaca6bd5090f2d3fe5bfa6447267eb13c1a76d55a1001d30efba9db1f7c51b854362618d14a5dd7a55f4faa4f1f8244d1094211106fa9da53daf6146d82cf0b6e42c357c01cbe0fddb6fa4d8a93134f5231a1204ae4da8a623018867a250ca4c03a619971d92dce28c5d276b292209bdb990c1f30684053da70460b898386afcf0b34dd9ae810e111ec4761306a0fb520c4d28099c8806330051584e7fa8ad1c9901c99c41ce4b63f1e4cb57b1d2e9810d80e523a7912291624bb2c95d2d49601dd3e79b1612c924755ff3a362d35b10a03c489a6ce47045200cb1ea9d9a75141f13a8bf7be05453ddb13eb64bc0bfa5c6873d2b410e2d90d60e6bce6b403e4cbcb7bc874dfde114dba8376b1a4d3c1d788952300a29c6e6c9d70faadb2a88467c47e0abbab6d073b7e42b9389162c2526b3964e55e40c07be160c0ce4a
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/0_key.pub
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/0_key.pub
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": ["sha256", "sha512"], "keyval": {"public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089"}}
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/10_key
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/10_key
vendored
Normal file
@ -0,0 +1 @@
|
||||
5b13ee7f3720895230732b155aaf2332@@@@100000@@@@80c3b42585e084443ab63bcfeebf52e270de626a23c95af6fa0fd546610df59f@@@@d123189cccc3e68aaf0b20363fcdb205@@@@72b3cf564c96ceed9e71b46bd6209d6029d6a30a177152a40bd6e8d38fb2e119f61d8e8426577fa20c7494f27b435a9a2b68664a84628d6818278c37ec6cb456dcc308345384ee0a1bce7c91a21234d5274fda69c276480a75672719abb0e1b8802fa00f107672b91379f9c2ccc74976f506a94524d4f1957a26d8c29af3fae7d916e8b045d3a0d8f1460ec5416ba408ee22169431cf7feb75f50148b839caf536bf728702ebb5073614040cf65c6aaf0bec893c223ce9959230d0079d9f729817c6ff56e74545e0989b7d811c2861d1ae1eb616ba1e72e15115a2bb036912aaaf19339a77bce30eaf15afdda4d250277553a36c1019669c71d4b0e090b7cf1d92c596df1f50391459606aa92c43e659fad5b290604b09691d6fe2d76a2c9da6394b6ab64f111646811603c32bc84fd80d54c61290abcb3a8aada49e10abedb63c790f7641c67b947eb36e35368df3b6
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/10_key.pub
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/10_key.pub
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": ["sha256", "sha512"], "keyval": {"public": "f6b299bcfb4e15ef652c80e9e3dda995acbb4bf71dce889a82ba70228e45a8bf"}}
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/11_key
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/11_key
vendored
Normal file
@ -0,0 +1 @@
|
||||
b8320e3d8175793d728f1e54c22e45f9@@@@100000@@@@f2e672c3dda1e4909f62de107632bd13f7dc719aacbed626655f672b4c4c0535@@@@2aa94b4a337dd550dac957de0de5839f@@@@85a14a4cbfe466e8b5f7306db4357fe5b1b852f5057d95ee374f271483e6ba02a38501c9e4d482fc2a764fa25361298cec7cb857a2371778e8273c58e24eace75aa5e17dbbb3deb2f0f076cc510153825c4e5e14bfb4cce9b6d1fda19888a6b45ab9853e0abf4d4d87f2e12b44250b6228dbd93998365acd647504beffc12800d691a118bbd73e572aece4159947a97f51a28e5474377d694a990546936bb8f2bfed74988f2af1f280a78e4155dfbc88438ff9203be0de4c91d91bf6145124189685610a599cead73e591e9d9f45cf212c3208ef8305b476a0c0543c486410dc55f1781877cc6cbaee8dd7a1ea778a13f2b7df52be64e2dbd247f7ea2e4b7afaf5bc0b7d62da7f96220f7d12d92884d3e6b81db182747d857fb4cce8e95072fff7d14f1d8dd3f0331182fc694ae906f91f517ec71a7b14940aa89ab8ab78b5b65a38bd9319d118a86f8eccd090ffc7c6
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/11_key.pub
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/11_key.pub
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": ["sha256", "sha512"], "keyval": {"public": "9b1db36a5cad80284b5f40b040621e0e444f25ee09efa5c1fd6da4499c711bd5"}}
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/12_key
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/12_key
vendored
Normal file
@ -0,0 +1 @@
|
||||
4ede56ed77003cf7bf97f706bf303e21@@@@100000@@@@c628c83f3619e0a70f69cb1db7dcbfc5d99219b933ff9d92b60a4c5250993d5f@@@@db063853cfc0caa060b69e4b78a1cc5f@@@@8881ba6d39297f89d796e1bd1636d0bd7b938dfd47d837ca7da0c95c001a3e59741d01f56fae02a1254fc17bb6293492ff103d5c5a5e16ca1ad2519f5af7860694f41cf9f1a9a3b6902652198de490b42501b66faa62b173926b0533d938c91454adc856de076aa9aea340655ab67a4e17a814ecb8902bf53bc9b4a0e03a984b14aa09bc3f1f44ab6d014394dacb1e6012b78a3a413b5b0f16b2912ae029dacb7924320282c181d76ce217de02e235ba60ce17b40e7513de451d699ce3dae013ed034eceabd3568d51f8bd7949377947bf419defbbef4827e5ed603fd17f4d07e0a08d83ac06b261c066ba568f17a3b1441806ba8ef2a7336fc90bc9cd50ecf590f44418b567937a47885f939919ef196bc3b95d138f3933af8a3d9f4f0bd49c4506529be49d238595a0a5a32e5db61ee2c591cac895a30586ca622172a8bb8a2f09e78af1181d63ea0796e5065b3f7a
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/12_key.pub
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/12_key.pub
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": ["sha256", "sha512"], "keyval": {"public": "4cda5fbefc48b179e3ccd630affc0190e8dd0a391f3f50c834c8851183d12c3c"}}
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/13_key
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/13_key
vendored
Normal file
@ -0,0 +1 @@
|
||||
19cad0ad18a08c8ee6eb2ef73707beff@@@@100000@@@@d9192082dc67e8e8a83b1157601b648dc44887f6bb2f9571be8bc26f1569729b@@@@ed071f66afb29126740b51a63257bc4e@@@@a2e6a15613f9f1a6fe4100866c544c29bd78bdf87f281fe5d74ab726348211208d49293806f465b3bea9fd020bd42f2656dbd1bdef73da156e72031eb66a20d07ef3c00460337e9c78a8a92e01bb718fa3e79d9595658b011d5c71d3158d0ababd5988a321374054894a36f2cea1be884093abfec5dc38cf16b266e3bfdcdbf5b05f35b78f8e33ac66795415f915f720b2c6457c2e3a282ae71afce97193f46ba87a0451a02a4ac821b39c4eba1e46c633d49eb8ef6c8098d6e697758807782e346684a82e32215d895480ce807761a7c793bccf9408ff752e74d755d313a752267b6c485dbf40d7499c386a3af08726557f60e541780d7e160ff8a9963fc226cc75e06619472f648ba3eacb8cadabba688d9c084039ee4cbebe53ec52f3810b2424f9e99bee10c292f571ae9e392b069b6291216a2a23f453fcb0c4048ad104b2270100a66c360dc5481617b6fe373e
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/13_key.pub
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/13_key.pub
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": ["sha256", "sha512"], "keyval": {"public": "0e0af300cf77cad9451b2ccda9965695fd6d4f7b7095b7dd201f3ac6e1f38c3e"}}
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/14_key
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/14_key
vendored
Normal file
@ -0,0 +1 @@
|
||||
c5221bea5272555d66b064911cd040bb@@@@100000@@@@50f150cb65889084b7f7c550eb66862ad1d002fca8eee4050c79a12907392419@@@@4271dc7da1655540cc576ba946dd7ce3@@@@a0ada2a75625de515da190523f98e5323407a4546712b65091747667c0856602cceb7df4dab3282f2da7cc02bda6a0016535e103676e7cf2ad808565ff0ab7e417364218ce92c8800e2837b239703df295c9f026e22855a6c640dd3576d90f6d57dec3d5508732dbd80b35cc536b06b35f535e70b3f03680a4bb948cf23bbad17b12602bcbe0184ece3ba70ed8680784ed734e0ebd689a90e240ffa6dc7fd9278a94409b2ec6087eba0f87161a40091c5f6bb0ecd34debb667aaa7ddc07c032c429e9ce4cbe5cd5c518a68b566c08faba90ff4638e667481f5871c24b17cd786f31433c7b4ba021a76937cb28f16be9fbb78e081d16fd535b08928302a0f027b7c2a32fade93483f53c915b6b0d5d3fec4ce5bf48fd9bf54610537fb23dfec6e75703edc6564f0b8275a19d7831ffa8c86b5b15c654304efcaee1f232e1e86809c5954a6a97fff4d16c9f387bafec4ee
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/14_key.pub
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/14_key.pub
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": ["sha256", "sha512"], "keyval": {"public": "b344623fb077df4ba6f4456ff0b3cc67e233d4586e13731135efb79d7a19d4a2"}}
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/15_key
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/15_key
vendored
Normal file
@ -0,0 +1 @@
|
||||
56955d4230b845cce7db5744757a29cb@@@@100000@@@@f95dfac4e8ed775f9be29909a5151108cebf7d0d2f8b7033e0a9c46dbdb74c56@@@@98f1206687b5d4392daba519dd897580@@@@2be86c837bbc22c0b75b57f8e41cc82d2b92e5499060606375f754f0149e466a32b3364dc3d688e76be2b43f2718590da5720c334320ddc0e1ad23a9946d9932137aa6ec6ec347210c222d945ad8d19d12dc3ca1a564466312bfe54ed9b2f1e389c000e5c68cecab95945a11e09584d96fe44eab3088038bd3819b9a9e26416036430f5bb2bd1e87cd7a72d7d2f641835b0aa5ccc1ad8a51b458201b609c87b44b1e834fa0bd50e11686b942b2a53379a6aea747d9d7f3d72a634a84b97cdf02e1108303cae4dd3e535f23ebbe3f1d01c46826da4920598b8a09a069769cc694912eaaaf0289df7696d636b59e84b56d7e6175bf3dc44cdb5a47d327ee90fe70a033006d1b975942e57aee9586d57ce27865b58abba7294a4fd4a75c1902deda2ba04563361c66d7a191c3ddc550f9b375bcab6d5c8a763dde202032ad128a1bcc84a04651873ec4303695a174e0f5b1
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/15_key.pub
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/15_key.pub
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": ["sha256", "sha512"], "keyval": {"public": "91f20c58b14fe80a6e1d25c9365a81bdf52b590f9233affc61d97b4818d7fcb2"}}
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/16_key
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/16_key
vendored
Normal file
@ -0,0 +1 @@
|
||||
8f61d689d9257c0dffa9fcfaba2668c3@@@@100000@@@@8c23dd4d12a2b2304bc77c1d371ba4c6c2c85bdd2d58885044ecc54748bdadde@@@@862882260add41f51ba6fa1b0521fcab@@@@523ecaa4b99764240a0563ed06d5babbe70518b9ee7b06be9fee589df299bb8a83c589f4ee4a95a0cbc3dd1a1f020ac42278160bf0a7685a25ed90400e8fef8d50bfed0bebbfead269b914c2e2f3340cf4c0dd640a47c2be4526d796d6a234d566dffd0956f28d86aea26245b5e57fbdc02b2321b866a07e4bb85f3013aea414ce6c54215afa0823511cb6bedc2bd00e8e3bf2aa794f3ed7d8fb82d152ae03dafced780819f241274a63537a44b69692e9a7ef9403136680a09ee9f2992aa27222292ae3b1ba5c383a20cae2848a2de5407d3444aa4453031c9b479c991cfd0c658502402e3681713ace5e08834531de9a8f26267d43a78a322fa63659ce580b93e4ec8c026bd4199db6a1fee132bdfeaee91d08442fe0ab2d74b8dd5d511004edacfad93dc5bbc02b69667a8a3c51236d84c19e749e230972e43286d420a6d30d8f494fe0793137822d1e88434d7d80
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/16_key.pub
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/16_key.pub
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": ["sha256", "sha512"], "keyval": {"public": "5b11e1690f25cbc096f7c0cc799c37f1641464cf7769e0729fc47f25b1c46c18"}}
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/17_key
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/17_key
vendored
Normal file
@ -0,0 +1 @@
|
||||
1233adb06f7364b0fe2363f78cf62b4d@@@@100000@@@@bdc9de02f20fb01d0c725ff47f51d963144256e50eef7a7342a091c3054bfe5b@@@@3529ed56edf3b83e06263fe23f99d7da@@@@b4c50cc2e42ac4a07d05035040bbb2cf69f6a79525ab8bbe23ada43c580711858f540abe6b6787e1716b0d2b600f82764b26bc788cfd7e6dc8608c29f8df560132c74c54e4143de6e35444249da5baaf4369b381315257edefd17d88563f44338e5a31f5255ce4390faab938610a030e37ca670253483b5ff67d2f0ecbc45f0387aacdb1a191c5b07751548cab63369e2a9117aaa8ee4d058e43bcaa1399ab4064e5cc085bbf1b56f3833baba102dc91a062cf3f30ba694d0d48473c1557079d43218efc6c7c3bd478a7e590d8a6c2692199d180d4c67df918ad37856e961d0702353d7c76b55cd2b154d557d3cbda1373d83b098e8c083bd890fd3be23bdd9b36915e93f212fe4c7f96798b3e977ce34ab5a0aacad67da74c431ddbdb1c6e42dcfc93ece269c1fdb13e74fb9e2bb268a2df05605ec37c66b83133bce09a3896666b6f1cef29374f075a442c82ee6afc
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/17_key.pub
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/17_key.pub
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": ["sha256", "sha512"], "keyval": {"public": "67030d4a002627529ff8c68a026d2e163972a4f4d70dcbc8514df13ef4d998e4"}}
|
||||
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/18_key
vendored
Normal file
1
libraries/vendor/php-tuf/php-tuf/fixtures/keys/18_key
vendored
Normal file
@ -0,0 +1 @@
|
||||
66e75d90203f1eaf6fdfffd6625f22e6@@@@100000@@@@9a06c601217424b30547ab4b7f907c1824795869425536a733c61621b786393f@@@@6df0eb1ce554b06b017fd563b9299363@@@@d8640b6e40e441bd7d72d51fe3cf13d06de45ca57d677cbcdbb4deef8e553552384a4a2ec28d23d0a3b1de0fa5fb783e90648d78ee71df82480ad6122ec50957c2fff03b7ac1e633125968e3a67f231811482d2b4e5be1c34fca8fc8e601344985641d7b9a801367383040860f59e9e3f2dd2b30ee5a8f8c0f625fc2dd1f8f78a1c4e7102a367c7d66ef42a4f5579d0c587459137f89abf4f36053a369fd86f17b809764dcca472ec6ab85d5a43b4950cccb979408fc6eec8486d3eccd4746b6eb7ed8c34a15d73e704c80c5b7baf1f5039b8b480ad881f8d35a1f20babdb3f25e883d8b5d2aaa641c429a4b4ef5f9c27df84777d026b0dcdde915d6645e890ea42e7487d28cefbf4555f7d595da2bb9d2896fc5f33730ba80911417f62e61fa98ff8b0a03bc54a834b87a6f8cd4ea9807a91426703a09547fcd45558518e4e52518ba22ad65a47dc9a0c52d4f20fe8d
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user