Establish pass compatibility fixture harness (#1)
This commit is contained in:
1 parent
fa3bb44771
commit
41e56367bd
66 files changed
+3978
-18
No files matched your search
@@ -0,0 +1,52 @@
|
||||
# Compatibility fixtures
|
||||
|
||||
These fixtures pin password-store 1.7.4 at commit
|
||||
`1078f2514d579178d5df7042c6a790e9c9b731ad` and pass-otp 1.2.0 at commit
|
||||
`1e9d10ca75ae1a8672a7f192809713463657778e`. The behavioral catalog was
|
||||
written from the projects' published command documentation and pinned source;
|
||||
no upstream source or test code is copied here.
|
||||
|
||||
The v1.2.0 pass-otp tag reports `1.1.1` from its `version` command. The
|
||||
fixture records that observable upstream behavior explicitly rather than
|
||||
silently correcting it.
|
||||
|
||||
All identities, passphrases, plaintexts, OTP secrets, Git identities, and
|
||||
remote names are synthetic and public. They must never be reused for real
|
||||
secrets. The generator reuses the checked-in identities and produces:
|
||||
|
||||
- ASCII-armored and binary public keys;
|
||||
- passphrase-protected ASCII-armored and binary secret keys;
|
||||
- binary OpenPGP messages in an ordinary pass directory tree;
|
||||
- root, nested, signed, and multi-recipient `.gpg-id` policies;
|
||||
- TOTP and HOTP entries;
|
||||
- valid loose-object Git repository templates, including an automatic-commit
|
||||
history and nested-repository boundaries.
|
||||
|
||||
Rust tests parse keys, verify signatures, decrypt every entry, compare exact
|
||||
plaintext bytes, validate ciphertext digests, validate Git objects and refs,
|
||||
and materialize isolated stores and repositories. They never invoke `pass`,
|
||||
`gpg`, `git`, a shell, or an OTP/QR helper.
|
||||
|
||||
## Refreshing fixtures
|
||||
|
||||
From the repository root:
|
||||
|
||||
```sh
|
||||
cargo run -p ironstorage --example refresh_compatibility_fixtures
|
||||
cargo test -p ironstorage --test compatibility_fixtures
|
||||
```
|
||||
|
||||
Normal refreshes are byte-for-byte reproducible at the locked dependency
|
||||
versions because checked-in identities are reused. Deleting the key fixtures
|
||||
explicitly rotates the synthetic identities; OpenPGP self-signature timestamps
|
||||
then make that rotation intentionally non-reproducible. Review all binary
|
||||
changes and the generated fingerprints, digests, and Git object IDs before
|
||||
committing them.
|
||||
|
||||
An optional developer interoperability audit may import the generated keys
|
||||
into a disposable GnuPG home, decrypt the `.gpg` entries, and point an
|
||||
upstream `pass` 1.7.4 checkout at a materialized store. That audit is never a
|
||||
test prerequisite and must use a temporary keyring and the synthetic fixture
|
||||
passphrases. Refreshing observable behavior against upstream `pass` or
|
||||
`pass-otp` is similarly development-only; application/runtime code may not
|
||||
execute either tool.
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,3 @@
|
||||
correct horse fixture
|
||||
login: alice@example.test
|
||||
url: https://example.test
|
||||
@@ -0,0 +1 @@
|
||||
otpauth://hotp/IronStorage:counter?secret=JBSWY3DPEHPK3PXP&issuer=IronStorage&counter=0&digits=8
|
||||
@@ -0,0 +1,2 @@
|
||||
fixture-password
|
||||
otpauth://totp/IronStorage:alice%40example.test?secret=JBSWY3DPEHPK3PXP&issuer=IronStorage&algorithm=SHA1&digits=6&period=30
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
shared-fixture-password
|
||||
recipients: alice,bob
|
||||
@@ -0,0 +1,2 @@
|
||||
team-fixture-password
|
||||
owner: bob
|
||||
@@ -0,0 +1,3 @@
|
||||
pässwörd-猫
|
||||
login: 用户@example.test
|
||||
notes: café
|
||||
+1
@@ -0,0 +1 @@
|
||||
inner repository entry
|
||||
+1
@@ -0,0 +1 @@
|
||||
outer repository entry
|
||||
@@ -0,0 +1,105 @@
|
||||
format = 1
|
||||
generated_by = "cargo run -p ironstorage --example refresh_compatibility_fixtures"
|
||||
fixture_seed = "49 repeated 32 times (hex); checked-in keys are reused on refresh"
|
||||
|
||||
[[keys]]
|
||||
name = "alice"
|
||||
user_id = "Alice Fixture <alice@ironstorage.invalid>"
|
||||
primary_fingerprint = "7E5C5241B25F6FFAAD717EBFA132DCB2DC23AE30"
|
||||
encryption_subkey_fingerprint = "10208D0B84AD13D2157795D5EB55885EC93C0A26"
|
||||
passphrase = "fixture-alice-passphrase"
|
||||
public_armor = "keys/alice-public.asc"
|
||||
public_binary = "keys/alice-public.pgp"
|
||||
secret_armor = "keys/alice-secret.asc"
|
||||
secret_binary = "keys/alice-secret.pgp"
|
||||
|
||||
[[keys]]
|
||||
name = "bob"
|
||||
user_id = "Bob Fixture <bob@ironstorage.invalid>"
|
||||
primary_fingerprint = "B37027B56FC406BD3F6A622B2AC03492B992D06F"
|
||||
encryption_subkey_fingerprint = "46E34F32333752A01E4E019B4AC0B1A0B4D6278D"
|
||||
passphrase = "fixture-bob-passphrase"
|
||||
public_armor = "keys/bob-public.asc"
|
||||
public_binary = "keys/bob-public.pgp"
|
||||
secret_armor = "keys/bob-secret.asc"
|
||||
secret_binary = "keys/bob-secret.pgp"
|
||||
|
||||
[[entries]]
|
||||
store = "basic"
|
||||
path = "email/personal.gpg"
|
||||
plaintext = "email/personal.txt"
|
||||
recipients = ["7E5C5241B25F6FFAAD717EBFA132DCB2DC23AE30"]
|
||||
ciphertext_sha256 = "8259de0c1ae6b5d4fc3ebd410452f96a266b0d55d111cfaf9c609baf3deda1b2"
|
||||
|
||||
[[entries]]
|
||||
store = "basic"
|
||||
path = "unicode/咖啡.gpg"
|
||||
plaintext = "unicode/咖啡.txt"
|
||||
recipients = ["7E5C5241B25F6FFAAD717EBFA132DCB2DC23AE30"]
|
||||
ciphertext_sha256 = "c5c829b46e517109bcfea7731c846ca6d09eff8076fe4444aaa1c2512fc06d44"
|
||||
|
||||
[[entries]]
|
||||
store = "basic"
|
||||
path = "otp/totp.gpg"
|
||||
plaintext = "otp/totp.txt"
|
||||
recipients = ["7E5C5241B25F6FFAAD717EBFA132DCB2DC23AE30"]
|
||||
ciphertext_sha256 = "260a0d7371964ca9d115e2d818cf1a8a63e2a4ff9a172ca421c569aa649cf014"
|
||||
|
||||
[[entries]]
|
||||
store = "basic"
|
||||
path = "otp/hotp.gpg"
|
||||
plaintext = "otp/hotp.txt"
|
||||
recipients = ["7E5C5241B25F6FFAAD717EBFA132DCB2DC23AE30"]
|
||||
ciphertext_sha256 = "337bb6568bc3805b8c269463654b081da88d3755da62603b263b6865babf9bd2"
|
||||
|
||||
[[entries]]
|
||||
store = "basic"
|
||||
path = "team/service.gpg"
|
||||
plaintext = "team/service.txt"
|
||||
recipients = ["B37027B56FC406BD3F6A622B2AC03492B992D06F"]
|
||||
ciphertext_sha256 = "b325904fbdbe335bc9cd2319ace3e598da194e6450bf3f47371507b1f47306ae"
|
||||
|
||||
[[entries]]
|
||||
store = "basic"
|
||||
path = "shared/multiple.gpg"
|
||||
plaintext = "shared/multiple.txt"
|
||||
recipients = [
|
||||
"7E5C5241B25F6FFAAD717EBFA132DCB2DC23AE30",
|
||||
"B37027B56FC406BD3F6A622B2AC03492B992D06F",
|
||||
]
|
||||
ciphertext_sha256 = "7a8ac913dfb930d6ed8d98d40b12be9f522685c5be45d6b2b30b1bc407b5996b"
|
||||
|
||||
[[entries]]
|
||||
store = "nested"
|
||||
path = "outer/root-entry.gpg"
|
||||
plaintext = "outer/root-entry.txt"
|
||||
recipients = ["7E5C5241B25F6FFAAD717EBFA132DCB2DC23AE30"]
|
||||
ciphertext_sha256 = "58c1470b623ec7076ddf52e8c3a8372e508ab4b84b7ad146e7878d85e4b872de"
|
||||
|
||||
[[entries]]
|
||||
store = "nested"
|
||||
path = "outer/inner/nested-entry.gpg"
|
||||
plaintext = "outer/inner/nested-entry.txt"
|
||||
recipients = ["B37027B56FC406BD3F6A622B2AC03492B992D06F"]
|
||||
ciphertext_sha256 = "b8757d983ad7d78205f3f7b74cfb22b949aebae25bc70febcffe0c5d6ec4882b"
|
||||
|
||||
[[repositories]]
|
||||
name = "basic"
|
||||
template = "repositories/basic.git"
|
||||
head = "c1bec8815d40fab6e23162443ef55ce1c46bddf6"
|
||||
commits = [
|
||||
"a7d88415df6027082096f6fd035387ac76726920",
|
||||
"c1bec8815d40fab6e23162443ef55ce1c46bddf6",
|
||||
]
|
||||
|
||||
[[repositories]]
|
||||
name = "outer"
|
||||
template = "repositories/outer.git"
|
||||
head = "2c32c59867d2e4b4ab07ca8e9225e8eaa887a58e"
|
||||
commits = ["2c32c59867d2e4b4ab07ca8e9225e8eaa887a58e"]
|
||||
|
||||
[[repositories]]
|
||||
name = "inner"
|
||||
template = "repositories/inner.git"
|
||||
head = "308371ba7fd91255536f4e6afee2e23a02af6915"
|
||||
commits = ["308371ba7fd91255536f4e6afee2e23a02af6915"]
|
||||
@@ -0,0 +1,13 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
xjMEZZIAgBYJKwYBBAHaRw8BAQdAZihauC+eAYkipuDUFUMqq+UVCvWVZCK8gvTi
|
||||
rkx1grXNKUFsaWNlIEZpeHR1cmUgPGFsaWNlQGlyb25zdG9yYWdlLmludmFsaWQ+
|
||||
wokEExYIADEFAmp457IWIQR+XFJBsl9v+q1xfr+hMtyy3COuMAIbAwIeAQMLCQcC
|
||||
FQgBFgEnAhkBAAoJEKEy3LLcI64wEAABAKqDzgiRwCBFC+kcbKGNOWO9O/nKVDHR
|
||||
Q2d4r8HOUXItAQCTGZHFaBkaZNyDjAOLTBBWMBxa0i5WatkAx5ZnKJT8Cs44BGWS
|
||||
AIASCisGAQQBl1UBBQEBB0BIPO/SwIrdEJLCGmXEG1/szwa9u7WK0rPQArtvrYMx
|
||||
PAMBCAfCeAQYFggAIAUCanjnswIbDBYhBH5cUkGyX2/6rXF+v6Ey3LLcI64wAAoJ
|
||||
EKEy3LLcI64wyKIA/i7fuf/N31swIwzJXLBkzU4BvWJfv6NuHuvQej4qmnhrAQDi
|
||||
ZJ+POdCbAxeTE7wNT5llULI8oowyUXfcF7C7UzDCAw==
|
||||
=Mbap
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
Binary file not shown.
@@ -0,0 +1,17 @@
|
||||
-----BEGIN PGP PRIVATE KEY BLOCK-----
|
||||
|
||||
xYYEZZIAgBYJKwYBBAHaRw8BAQdAZihauC+eAYkipuDUFUMqq+UVCvWVZCK8gvTi
|
||||
rkx1grX+CQMIY/R1q1/mEXzgJkJdUlNlns+1/EtfSNxLhlzT8XaaLL/pf7ZPI7e0
|
||||
mvzQuBEvkEGTVAxt2u80sGMY7mbZvcG6L++dUpP1FqvPdM8fjCv8PM0pQWxpY2Ug
|
||||
Rml4dHVyZSA8YWxpY2VAaXJvbnN0b3JhZ2UuaW52YWxpZD7CiQQTFggAMQUCanjn
|
||||
shYhBH5cUkGyX2/6rXF+v6Ey3LLcI64wAhsDAh4BAwsJBwIVCAEWAScCGQEACgkQ
|
||||
oTLcstwjrjAQAAEAqoPOCJHAIEUL6RxsoY05Y707+cpUMdFDZ3ivwc5Rci0BAJMZ
|
||||
kcVoGRpk3IOMA4tMEFYwHFrSLlZq2QDHlmcolPwKx4sEZZIAgBIKKwYBBAGXVQEF
|
||||
AQEHQEg879LAit0QksIaZcQbX+zPBr27tYrSs9ACu2+tgzE8AwEIB/4JAwhRDjBN
|
||||
dWgYi+AGAFqqDR6n0O+kc1WyeUYI+G8+R9EDz6Ar0xGGaZZ8GUU17BWGDY/UbxUU
|
||||
z5LHAQ2KB05GYf/9VjHTaKZCSiKFJlCElEASwngEGBYIACAFAmp457MCGwwWIQR+
|
||||
XFJBsl9v+q1xfr+hMtyy3COuMAAKCRChMtyy3COuMMiiAP4u37n/zd9bMCMMyVyw
|
||||
ZM1OAb1iX7+jbh7r0Ho+Kpp4awEA4mSfjznQmwMXkxO8DU+ZZVCyPKKMMlF33Bew
|
||||
u1MwwgM=
|
||||
=ij6E
|
||||
-----END PGP PRIVATE KEY BLOCK-----
|
||||
Binary file not shown.
@@ -0,0 +1,13 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
xjMEZZIAgBYJKwYBBAHaRw8BAQdANd08TxPj0ZuIl1cMvEf0FMCxubDwlzXDLX6w
|
||||
9M+959XNJUJvYiBGaXh0dXJlIDxib2JAaXJvbnN0b3JhZ2UuaW52YWxpZD7CiQQT
|
||||
FggAMQUCanjntBYhBLNwJ7VvxAa9P2piKyrANJK5ktBvAhsDAh4BAwsJBwIVCAEW
|
||||
AScCGQEACgkQKsA0krmS0G9BCwD/daZy2BdmNQX8TldPBtoLTrugeaFmtrcVDQZ3
|
||||
AzWEMcMA/16q87Zkaw2ozanLSBcRiq4iZnBTAmU/7bUSlA2myZoHzjgEZZIAgBIK
|
||||
KwYBBAGXVQEFAQEHQByJpci1aMxEcUVlw9mByZUPyaQ7kI1emdJOuN1hcLEKAwEI
|
||||
B8J4BBgWCAAgBQJqeOe1AhsMFiEEs3AntW/EBr0/amIrKsA0krmS0G8ACgkQKsA0
|
||||
krmS0G+2lwEAvD9R7o52H37GsfeMS15UJBeIHBaYHjpsIyfoOWq0vsEA/j0oL4IG
|
||||
SIakL3z1C1KHU+4iz3rzz2vNnhgGQd7+DS8H
|
||||
=vS0q
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
Binary file not shown.
@@ -0,0 +1,17 @@
|
||||
-----BEGIN PGP PRIVATE KEY BLOCK-----
|
||||
|
||||
xYYEZZIAgBYJKwYBBAHaRw8BAQdANd08TxPj0ZuIl1cMvEf0FMCxubDwlzXDLX6w
|
||||
9M+959X+CQMIx1A5+eCcr6bgYLtP6nkTdu/qlT/dwB7B38PIlZekNRoN2yd48DcO
|
||||
WmOqWrkE+Fxovj8zITOJUGP16kHJjW0727wsY1LI4BrX2Gsa3m0jV80lQm9iIEZp
|
||||
eHR1cmUgPGJvYkBpcm9uc3RvcmFnZS5pbnZhbGlkPsKJBBMWCAAxBQJqeOe0FiEE
|
||||
s3AntW/EBr0/amIrKsA0krmS0G8CGwMCHgEDCwkHAhUIARYBJwIZAQAKCRAqwDSS
|
||||
uZLQb0ELAP91pnLYF2Y1BfxOV08G2gtOu6B5oWa2txUNBncDNYQxwwD/XqrztmRr
|
||||
DajNqctIFxGKriJmcFMCZT/ttRKUDabJmgfHiwRlkgCAEgorBgEEAZdVAQUBAQdA
|
||||
HImlyLVozERxRWXD2YHJlQ/JpDuQjV6Z0k643WFwsQoDAQgH/gkDCJdPSdzYfIpD
|
||||
4M3cgwcGp2Ok/jR9F18ObkKhc/M6UfllIkZKLNl9zjUnDagCIzy+ZiLWTxAAKl02
|
||||
bGkW56gOcrp+PIARjn85GEBRXXYogE7CeAQYFggAIAUCanjntQIbDBYhBLNwJ7Vv
|
||||
xAa9P2piKyrANJK5ktBvAAoJECrANJK5ktBvtpcBALw/Ue6Odh9+xrH3jEteVCQX
|
||||
iBwWmB46bCMn6DlqtL7BAP49KC+CBkiGpC989QtSh1PuIs96889rzZ4YBkHe/g0v
|
||||
Bw==
|
||||
=w2Yf
|
||||
-----END PGP PRIVATE KEY BLOCK-----
|
||||
Binary file not shown.
@@ -0,0 +1,51 @@
|
||||
format = 1
|
||||
|
||||
[[layout]]
|
||||
id = "basic"
|
||||
store = "stores/basic"
|
||||
purpose = "ordinary, Unicode, OTP, nested recipient, signature, and multi-recipient entries"
|
||||
|
||||
[[layout]]
|
||||
id = "nested"
|
||||
store = "stores/nested/outer"
|
||||
purpose = "an outer store and an inner recipient/Git boundary"
|
||||
|
||||
[[synthetic_node]]
|
||||
layout = "hostile"
|
||||
kind = "symlink"
|
||||
path = "escape.gpg"
|
||||
target = "../outside.gpg"
|
||||
expected = "reject-symlink-escape"
|
||||
|
||||
[[synthetic_node]]
|
||||
layout = "hostile"
|
||||
kind = "symlink"
|
||||
path = "directory-link"
|
||||
target = "../outside"
|
||||
expected = "reject-symlink-escape"
|
||||
|
||||
[[synthetic_node]]
|
||||
layout = "hostile"
|
||||
kind = "fifo"
|
||||
path = "unsupported.gpg"
|
||||
target = ""
|
||||
expected = "reject-unsupported-file-type"
|
||||
|
||||
[[synthetic_node]]
|
||||
layout = "collision"
|
||||
kind = "entry-directory-collision"
|
||||
path = "ambiguous"
|
||||
target = "ambiguous.gpg"
|
||||
expected = "require-trailing-slash-disambiguation"
|
||||
|
||||
[[interruption]]
|
||||
id = "before-temp-fsync"
|
||||
expected = "original-entry-intact"
|
||||
|
||||
[[interruption]]
|
||||
id = "after-temp-fsync-before-rename"
|
||||
expected = "original-entry-intact"
|
||||
|
||||
[[interruption]]
|
||||
id = "after-rename-before-directory-fsync"
|
||||
expected = "new-entry-complete"
|
||||
@@ -0,0 +1 @@
|
||||
ref: refs/heads/main
|
||||
@@ -0,0 +1,6 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = true
|
||||
[pass]
|
||||
signcommits = false
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
c1bec8815d40fab6e23162443ef55ce1c46bddf6
|
||||
@@ -0,0 +1 @@
|
||||
ref: refs/heads/main
|
||||
@@ -0,0 +1,6 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = true
|
||||
[pass]
|
||||
signcommits = false
|
||||
BIN
Binary file not shown.
+4
@@ -0,0 +1,4 @@
|
||||
xœŽK
|
||||
Â0@]÷³Ê˜¤IÝ®=A>S␍ØD¦Sõø¢½‚»/ÖqÌʘ•0D¯·Q‡Áû¤u¯¬²
|
||||
U?8§BLØYÝãûÆÏr«g®å"•ý•à”ß23ÁnXà�¹–i‘m.OÏi‡Sˆ°FDlâoAè/±æ˜Ä™™Š@¬E¨Èu€\
|
||||
1<ü4½*'ø–¨m>.ET
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
308371ba7fd91255536f4e6afee2e23a02af6915
|
||||
@@ -0,0 +1 @@
|
||||
ref: refs/heads/main
|
||||
@@ -0,0 +1,6 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = true
|
||||
[pass]
|
||||
signcommits = false
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
2c32c59867d2e4b4ab07ca8e9225e8eaa887a58e
|
||||
@@ -0,0 +1 @@
|
||||
7E5C5241B25F6FFAAD717EBFA132DCB2DC23AE30
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
Á^ëUˆ^É<
|
||||
&@ÞLT5µ–« w캩ÆÉaО�—Õ×¶Ú8%£–ï@0~±`ÇAEŠÄauÚ#‰¡‚kröøáÆ@ÓFãMiÜJ1Z›†ðy ûFÛ…”}ý˜>Ò’G™M+n²¼/xu†=³uÙ;C¸ùV½n�AÛ¬v!7ÿaÞ]XV@x]þˆ ðÁîÓÃæ“Ã{<GB�úï’JÓç‘e5u¨€]ƒþf¶†eÝ è�S¼D³žÐMÜ¥@ÂÍ_ÓO‘°`švÂþ¾·×…'þ.¿e|n„Ò!Ñ␍måDR›Ç
|
||||
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
7E5C5241B25F6FFAAD717EBFA132DCB2DC23AE30
|
||||
B37027B56FC406BD3F6A622B2AC03492B992D06F
|
||||
@@ -0,0 +1,3 @@
|
||||
Á^ëUˆ^É<
|
||||
&@ÆÀ€–D¾bó
|
||||
ƒ–²ÁÎUšIJà ‚x¸Ä[¦üO0l‹]¦žÍé2+û'µþ¡jfEÜd+ܲɜE“¦b™x4”Öð™Fõ¾Ðj‡'ÕM÷»šÁ^JÀ± ´Ö'�@«>Ó˜ÖÁ§·‚&Ί¡àc™Íë€Èâ¶d\ô_x0#À—Û´Œ6‹AûŠ˜þ¥X ·uë'c¿°(„�¬hÈŽ¢�´x�`ËŃë—hrØÞmÒ_Á𨗲w:â^–>ûzûêó#7:ã§$U€¦ñ��êãJ×óÅEN6V•®Ol$�óÕ½ÅZ•5)µ–®þÁÅ^/™›.Š£/Vn_[&ú%…Ý‚—ùýEÍ{Ž&œ
|
||||
@@ -0,0 +1 @@
|
||||
B37027B56FC406BD3F6A622B2AC03492B992D06F
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
Á^JÀ± ´Ö'�@˜RžEmF¶z}àŠÜwMþŽÖy³?T9ôL0÷Y³é¦ºõ"‹Gw©�/§á„ÒÓJfƒ¸Žy2àªVëtÏ«¹ô±XÐÆÉ;¾h¥ÒR!ÜŽbd‘'E^[Ì“_|“ã¿Åû¿cwk˜ 0j¡ÑÚ=xÔü8(ˆjqVý¿¢˜7®ž¸qW�K‘Ð.+'Î×ß9)�W␍åoíUô9
|
||||
@@ -0,0 +1,2 @@
|
||||
а^КU┬^и<
|
||||
&@╧c┐╩▓f≤╟}▐Т╔ц│[v┐ЦТк`%@╙Вvw0ЕвБ╜К├┬©©SЭgя┬┤жbжЯ■l║≥Х Р┐HЪhФGG╡╛.д┼≈╔Kырh∙╦й└ус·┬╝┌─PРЬ~x2Б°IБ4<÷╙%1Bпmиk?ЦYГ╒o▄з╩\л2млХTbеВ%┴╫F,■▀gВ∙И┬┐уЗ°Уhm┤C?{g╖ъ▐i╣╠z_gкщ▓Щр╚Д
|
||||
@@ -0,0 +1 @@
|
||||
7E5C5241B25F6FFAAD717EBFA132DCB2DC23AE30
|
||||
@@ -0,0 +1 @@
|
||||
B37027B56FC406BD3F6A622B2AC03492B992D06F
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
Á^JÀ± ´Ö'�@YC
|
||||
ÔEÕõÚËêPô˜l¼w`|÷ǵkPsSk©µ•H0Ð_ç´²ka¢g#Ôú‚õ¿½<O¼(jYÚЧ§ÄèäÑì-°Ä‘j'³ñLÒHå:o£|·Ö!=:c:ƒé²ãEÑw÷R¬»—cÕ›bÍYôvÐ.U¨Bä}ZÈB;ž.£éœ\V}ów¼‚�êyï`
|
||||
BIN
Binary file not shown.
@@ -0,0 +1,21 @@
|
||||
format = 1
|
||||
|
||||
[[project]]
|
||||
name = "password-store"
|
||||
version = "1.7.4"
|
||||
reported_version = "1.7.4"
|
||||
tag = "1.7.4"
|
||||
commit = "1078f2514d579178d5df7042c6a790e9c9b731ad"
|
||||
source = "https://git.zx2c4.com/password-store/"
|
||||
behavior_source = "src/password-store.sh"
|
||||
license = "GPL-2.0-or-later"
|
||||
|
||||
[[project]]
|
||||
name = "pass-otp"
|
||||
version = "1.2.0"
|
||||
reported_version = "1.1.1"
|
||||
tag = "v1.2.0"
|
||||
commit = "1e9d10ca75ae1a8672a7f192809713463657778e"
|
||||
source = "https://github.com/tadfisher/pass-otp"
|
||||
behavior_source = "otp.bash"
|
||||
license = "GPL-3.0-only"
|
||||
Reference in new issue
Block a user