Compare commits

...

205 commits

Author SHA1 Message Date
Evan Su
3b54234f19
Merge pull request #108 from Picocrypt/start-on-enter
Some checks failed
build-linux / build (push) Has been cancelled
build-macos / build (push) Has been cancelled
build-windows / build (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
Auto start on Enter key, encrypt temporary files, other small improvements
2025-04-19 14:27:36 -04:00
Evan Su
e74068c5e6 fix issue #114 2025-04-19 14:14:56 -04:00
Evan Su
bbf250be37 Update default.yml
Some checks failed
CodeQL / Analyze (push) Has been cancelled
2025-04-18 17:15:58 -04:00
Evan Su
268055804e two os.Removes conflict, allow them to err
deniability and split
2025-04-18 17:03:09 -04:00
Evan Su
0cc109bc6b handle more errors 2025-04-18 16:48:29 -04:00
Evan Su
b0c2943bb0 handle more errors for keyfile code 2025-04-18 16:29:42 -04:00
Evan Su
1b55200b84 handle more errors in deniability decrypt block 2025-04-18 16:13:12 -04:00
Evan Su
d0e4e71b97 handle more errors in recombine code 2025-04-18 15:59:04 -04:00
Evan Su
7a28e2b273 handle more errors in temp zip code 2025-04-18 15:54:26 -04:00
Evan Su
22a1118f01 catch temporary encrypted zip errors 2025-04-18 15:42:42 -04:00
Evan Su
ca0a74f99d handle more errors 2025-04-18 15:33:17 -04:00
Evan Su
a0a7f430e4 missing an err != nil check 2025-04-18 15:04:28 -04:00
Evan Su
3403cd68a8 show keyfile gen errors instead of crashing
Some checks are pending
CodeQL / Analyze (push) Waiting to run
2025-04-18 15:03:26 -04:00
Evan Su
89d461ce9c more error handling around keyfile generator 2025-04-18 15:01:37 -04:00
Evan Su
e72f687ae9 handle more errors, hide main modal title bar 2025-04-18 14:52:36 -04:00
Evan Su
693d0c4754 handle more errors 2025-04-18 14:30:44 -04:00
Evan Su
475e89395f flatpak metainfo.xml: point to latest screenshot.png 2025-04-18 14:08:10 -04:00
Evan Su
66693564f1 remove description from flatpak; go to gh repo for more info 2025-04-18 14:03:37 -04:00
Evan Su
a8dcc6ffbd Update io.github.picocrypt.Picocrypt.metainfo.xml 2025-04-18 13:44:16 -04:00
Evan Su
397ff8a9f9 Update Changelog.md 2025-04-18 13:42:44 -04:00
Evan Su
df5ef8e9ee add TODO to .gitignore
Some checks are pending
CodeQL / Analyze (push) Waiting to run
I store some TODOs locally and don't want them in vc
2025-04-18 02:03:10 -04:00
Evan Su
6140e2beb6 change tooltips for deniability and recursively to a warning
Average user should never need to use these options. Better warn them against it or at least to read the README about the features to understand what they do. These two options can cause funky/unexpected/unintuitive behaviour unless the user understands what they do.
2025-04-18 00:06:01 -04:00
Evan Su
7a1d105a43 also increase multiplier if auto unzip 2025-04-17 23:52:22 -04:00
Evan Su
99a04de263 oops remove debug print statement 2025-04-17 23:46:35 -04:00
Evan Su
ee2abd053c remove duplicate single folder size counting 2025-04-17 23:46:04 -04:00
Evan Su
75c0a017f9 Much more reliable free space estimator 2025-04-17 23:37:36 -04:00
Evan Su
9b2b69e442 Update versioninfo.rc
Some checks failed
CodeQL / Analyze (push) Has been cancelled
2025-04-13 20:06:21 -04:00
Evan Su
f58f5ce249 Create close-issues.yml 2025-04-13 19:59:07 -04:00
Evan Su
b26137d959 Update default.yml 2025-04-13 19:51:27 -04:00
Evan Su
065a50d90e fix: 0700 instead of 0600 for mkdirall 2025-04-13 18:54:00 -04:00
Evan Su
c63cf92672 Start button show "Zip and Encrypt" if temp zip needed 2025-04-13 15:15:43 -04:00
Evan Su
6a8fdeaa53 Remove caveats from README
No longer needed because temporary zip files are now encrypted.
2025-04-13 14:47:18 -04:00
Evan Su
bad71f95ce use 0600 for auto unzip file permissions
prevent executing for safety and only allow user to have access
2025-04-13 14:40:52 -04:00
Evan Su
d7a0ee126b Use encrypted-*.zip.pcv instead of Encrypted.zip.pcv
So you don't always have to rename or delete an existing volume
2025-04-13 14:33:08 -04:00
Evan Su
16bb70dc97 Add .incomplete to end of wip files 2025-04-13 14:24:02 -04:00
Evan Su
9e7e2e9c44 Changelog: add to future: remove use of temp files 2025-04-13 13:35:01 -04:00
Evan Su
757c9c23e4 remove warning for external storage target
since temporary files are now encrypted so no longer matters
2025-04-13 13:32:56 -04:00
Evan Su
159944a619 Encrypt temporary zip files 2025-04-13 13:23:19 -04:00
Evan Su
0a061a20b8
Merge branch 'main' into start-on-enter
Some checks are pending
CodeQL / Analyze (push) Waiting to run
2025-04-13 01:00:10 -04:00
Evan Su
a849de0edd go get -u -v all && go mod tidy
codeql doesn't like go 1.24 without the .0 after 1.24in go.mod, so I added those in all dependencies
2025-04-13 00:59:56 -04:00
Evan Su
f0bfe3ba03
Update default.yml: grammar fixes 2025-04-13 00:17:32 -04:00
Evan Su
a665839271
Update default.yml: add antivirus section, more checkboxes 2025-04-13 00:06:38 -04:00
Evan Su
2313dcff4b
Update default.yml: fix indentation 2025-04-12 23:45:41 -04:00
Evan Su
eb4fef1d0e
Update default.yml: first draft of issues template 2025-04-12 23:44:31 -04:00
Evan Su
837281168d
Update default.yml 2025-04-12 21:40:42 -04:00
Evan Su
ea9105b91a
Update default.yml 2025-04-12 21:37:22 -04:00
Evan Su
e3eb8b5847
Update default.yml 2025-04-12 21:34:07 -04:00
Evan Su
de386390ef
Update default.yml 2025-04-12 21:30:20 -04:00
Evan Su
bf21bd0262
Update and rename default.md to default.yml 2025-04-12 21:26:52 -04:00
Evan Su
3fe7386043
Update default.md 2025-04-12 21:23:51 -04:00
Evan Su
14d4c60c0e
Update issue templates 2025-04-12 21:17:26 -04:00
Evan Su
baa4b73219
Create config.yml: require usage of issue template 2025-04-12 21:13:37 -04:00
Evan Su
7e53b2f518
Update issue templates
Add test issue template
2025-04-12 21:08:45 -04:00
Evan Su
05fd607d73
Update README.md: add more to Security section
Note that I've done a lot to lock down the Picocrypt organization and repos
2025-04-12 21:02:11 -04:00
Evan Su
0f1dc2548d
Merge branch 'main' into start-on-enter
Some checks failed
CodeQL / Analyze (push) Has been cancelled
2025-04-10 13:05:16 -04:00
Evan Su
c4fda2c3e0
Update CODEOWNERS
Some checks failed
CodeQL / Analyze (push) Has been cancelled
I own everything! (just adding as many access control protection as possible)
2025-04-10 13:02:12 -04:00
Evan Su
8e11d46abe
Update go.mod: need third part of version as of Go 1.24 2025-04-10 12:56:01 -04:00
Evan Su
a59e9b2bf4
Merge pull request #109 from Picocrypt/test-build-on-prs
Create test builds on pr
2025-04-10 12:50:02 -04:00
Evan Su
fd95597f02 go get -u -v all && go mod tidy
Nothing really changed, just bumped go version in go.mod of deps to 1.24
2025-04-10 12:37:35 -04:00
Evan Su
9287fca7b7 Remove future section from changelog
The golang.org/x/crypto -> stdlib migration done in Go 1.24 is not a simple find and replace as some types changed. Will stick with golang.org/x/crypto for the foreseeable future.
2025-04-10 12:33:21 -04:00
Evan Su
f429f1b1ee README.md: remove installer link
Maybe will add in a future release, but not for 1.48
2025-04-10 12:29:10 -04:00
Evan Su
55ec72864e Only show info/warnings if status is "Ready"
If not, it's probably showing some error message which would happen after starting encryption, so user would've already seen the info/warning status
2025-04-10 12:27:49 -04:00
Evan Su
d2506df677 Create test builds on pr 2025-04-10 12:23:42 -04:00
Evan Su
a0e6e30e7b add external drive warnings to changelog and readme 2025-04-10 01:37:56 -04:00
Evan Su
333aca2a80 Add warnings for zip and external destinations
When encrypting multiple files, Picocrypt will zip them to a temporary zip file on the target location with a .tmp extension. This comes with two issues: 1. requires double the volume size of free storage; 2. external drive must not be unsafe to host the unencrypted temporary zip file.

Prevent potential footguns by showing warnings where appropriate.
2025-04-10 01:20:40 -04:00
Evan Su
d9473f777b Bump to 1.48, update changelog 2025-04-10 00:38:09 -04:00
Evan Su
6f3cbb0a38 Auto press start/process button on Enter key 2025-04-10 00:27:36 -04:00
Evan Su
20b7573a13
Merge pull request #105 from Picocrypt/dependabot/go_modules/src/golang.org/x/crypto-0.37.0
Some checks are pending
CodeQL / Analyze (push) Waiting to run
Bump golang.org/x/crypto from 0.36.0 to 0.37.0 in /src
2025-04-09 17:25:48 -04:00
dependabot[bot]
5c87df9be0
Bump golang.org/x/crypto from 0.36.0 to 0.37.0 in /src
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.36.0 to 0.37.0.
- [Commits](https://github.com/golang/crypto/compare/v0.36.0...v0.37.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 22:41:10 +00:00
Evan Su
e5eb860374
Merge pull request #101 from Picocrypt/dependabot/go_modules/src/golang.org/x/crypto-0.36.0
Some checks failed
CodeQL / Analyze (push) Has been cancelled
Bump golang.org/x/crypto from 0.35.0 to 0.36.0 in /src
2025-03-07 19:27:57 -05:00
dependabot[bot]
ac14f35c7d
Bump golang.org/x/crypto from 0.35.0 to 0.36.0 in /src
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.35.0 to 0.36.0.
- [Commits](https://github.com/golang/crypto/compare/v0.35.0...v0.36.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 21:25:00 +00:00
Evan Su
6f56c6dbd9
Merge pull request #97 from Picocrypt/dependabot/go_modules/src/golang.org/x/crypto-0.35.0
Some checks failed
CodeQL / Analyze (push) Has been cancelled
Bump golang.org/x/crypto from 0.33.0 to 0.35.0 in /src
2025-02-24 18:14:05 -05:00
dependabot[bot]
41d97c6c4a
Bump golang.org/x/crypto from 0.33.0 to 0.35.0 in /src
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.33.0 to 0.35.0.
- [Commits](https://github.com/golang/crypto/compare/v0.33.0...v0.35.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-24 22:20:51 +00:00
Evan Su
95f88df4f5
README: fix typo 2025-02-24 01:10:52 -05:00
Evan Su
efca54dace
README: link to experimental mobile app
Can't guarantee its stability or security at the moment, but it's a start at least!
2025-02-23 23:29:34 -05:00
Evan Su
970e0a3aa4
Update README.md: link to Windows installer
Some checks failed
build-linux / build (push) Has been cancelled
build-macos / build (push) Has been cancelled
build-windows / build (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
2025-02-19 21:06:33 -05:00
Evan Su
d2d93c6172
Update Changelog.md for v1.47 2025-02-19 20:44:02 -05:00
Evan Su
f28230a999
Bump to 1.47 2025-02-19 20:17:42 -05:00
Evan Su
587f5596ad
Update build-windows.yml res_hacker link
Point to https://github.com/Picocrypt/Picocrypt/issues/90
2025-02-19 20:17:14 -05:00
Evan Su
c205602a22
Update versioninfo.rc to 1.47 2025-02-19 20:03:59 -05:00
Evan Su
5e55cb76c7
Bump to v1.47 2025-02-19 20:02:51 -05:00
Evan Su
59eb558729 go mod tidy
Some checks failed
CodeQL / Analyze (push) Has been cancelled
2025-02-11 19:11:24 -05:00
Evan Su
dc69b914a9 go.mod: minimum Go 1.24 2025-02-11 19:09:34 -05:00
Evan Su
3e9241a8be Workflows: use Go 1.24 minimum 2025-02-11 19:08:04 -05:00
Evan Su
845af83dae
Merge pull request #94 from Picocrypt/dependabot/go_modules/src/golang.org/x/crypto-0.33.0
Bump golang.org/x/crypto from 0.32.0 to 0.33.0 in /src
2025-02-11 18:42:58 -05:00
dependabot[bot]
195a90c7e3
Bump golang.org/x/crypto from 0.32.0 to 0.33.0 in /src
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.32.0 to 0.33.0.
- [Commits](https://github.com/golang/crypto/compare/v0.32.0...v0.33.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-07 22:06:14 +00:00
Evan Su
670d284603
Merge pull request #89 from Retengart/test-features
Some checks failed
build-linux / build (push) Has been cancelled
build-macos / build (push) Has been cancelled
build-windows / build (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
App version in the window title and zip unpacking
2025-01-29 11:02:44 -05:00
Alex Verner
445cd48e53 fix: delete a partially extracted file if run out of space 2025-01-28 12:22:19 +03:00
Alex Verner
46b557e3ef update date 2025-01-28 01:50:17 +03:00
Evan Su
47b65d6fe0 return err on ".." in zip item file path
Unlikely to happen since go stdlib zip doesn't do it, so if it does happen, better safe than sorry.
2025-01-27 01:12:14 -05:00
Evan Su
a929eb1037 final auto unzip code tweaks 2025-01-27 00:55:47 -05:00
Evan Su
bf73698c52 update unpackArchive to use both flags
also remove comments that add no value
2025-01-27 00:32:03 -05:00
Evan Su
10e8a1af82 auto unzip: careful ui state handling 2025-01-27 00:13:11 -05:00
Evan Su
d569954afc
Add link to solution to no OpenGL on Windows 2025-01-26 23:28:57 -05:00
Alex Verner
525ee4d591 flatpak metainfo to 1.46 2025-01-26 01:46:12 +03:00
Alex Verner
af3e1748fb Bump to 1.46: zip unpacking and version in title 2025-01-26 01:05:40 +03:00
Alex Verner
fee796845b zip unpacking with status bar 2025-01-25 22:59:41 +03:00
Alex Verner
fdebb502ab unpack zip and version in the window title 2025-01-25 22:12:14 +03:00
Evan Su
2862853176
Update build-windows.yml: add append_body: true 2025-01-24 20:35:31 -05:00
Evan Su
a14b95b430
Update build-windows.yml: change release body checksum format 2025-01-24 20:20:04 -05:00
Evan Su
b043713c0e
Update build-macos.yml 2025-01-24 20:18:36 -05:00
Evan Su
dfa51d5a2c
Update build-linux.yml: small release body text change 2025-01-24 20:18:04 -05:00
Evan Su
f89fc1f153
Update build-macos.yml: append_body = true 2025-01-24 20:10:34 -05:00
Evan Su
5c9e6e82ec
Update build-linux.yml: append_body = true 2025-01-24 20:04:30 -05:00
Evan Su
58c8cbb711
Merge pull request #88 from Retengart/build-yaml
Github Actions with sha256 in release body
2025-01-24 20:00:55 -05:00
Alex Verner
7f630676c0 sha256 beautification 2025-01-25 00:31:27 +03:00
Alex Verner
a90754a67e build with sha256 in release body 2025-01-24 21:33:45 +03:00
Evan Su
bc4d029cf0
Update build-windows.yml: use windows-2025 2025-01-21 22:42:27 -05:00
Evan Su
3fdddfb57d
Merge pull request #84 from Picocrypt/dependabot/go_modules/src/golang.org/x/crypto-0.32.0
Some checks failed
CodeQL / Analyze (push) Has been cancelled
Bump golang.org/x/crypto from 0.31.0 to 0.32.0 in /src
2025-01-08 16:17:15 -05:00
dependabot[bot]
8782e80d46
Bump golang.org/x/crypto from 0.31.0 to 0.32.0 in /src
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.31.0 to 0.32.0.
- [Commits](https://github.com/golang/crypto/compare/v0.31.0...v0.32.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-06 21:51:51 +00:00
Evan Su
c45bdede59
Bump to 1.45
Some checks failed
CodeQL / Analyze (push) Has been cancelled
2024-12-15 21:57:16 -05:00
Evan Su
fb5b92a17d
Bump to 1.45 2024-12-15 21:53:59 -05:00
Evan Su
78af7c48e2
Merge pull request #80 from Picocrypt/dependabot/go_modules/src/golang.org/x/crypto-0.31.0
Some checks failed
CodeQL / Analyze (push) Has been cancelled
Bump golang.org/x/crypto from 0.30.0 to 0.31.0 in /src
2024-12-12 15:36:33 -05:00
dependabot[bot]
7472203fa0
Bump golang.org/x/crypto from 0.30.0 to 0.31.0 in /src
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.30.0 to 0.31.0.
- [Commits](https://github.com/golang/crypto/compare/v0.30.0...v0.31.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-11 21:50:07 +00:00
Evan Su
d8208ce77d
Release 1.45 (updated GitHub Actions OS versions)
Some checks failed
build-linux / build (push) Has been cancelled
build-macos / build (push) Has been cancelled
build-windows / build (push) Has been cancelled
2024-12-05 22:57:12 -05:00
Evan Su
7cc2025ff8
Update Changelog.md for v1.45: Update GH Actions OS versions 2024-12-05 22:56:28 -05:00
Evan Su
b6c67ef0f3
Bump gh actions ubuntu 22.04 -> 24.04 2024-12-05 22:55:11 -05:00
Evan Su
705d20f75b
Bump gh actions macos 14 -> 15 2024-12-05 22:54:29 -05:00
Evan Su
4c1fad5176
Merge pull request #77 from Picocrypt/dependabot/go_modules/src/golang.org/x/crypto-0.30.0
Some checks failed
CodeQL / Analyze (push) Has been cancelled
Bump golang.org/x/crypto from 0.29.0 to 0.30.0 in /src
2024-12-04 17:19:36 -05:00
dependabot[bot]
bb8d2d2a7d
Bump golang.org/x/crypto from 0.29.0 to 0.30.0 in /src
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.29.0 to 0.30.0.
- [Commits](https://github.com/golang/crypto/compare/v0.29.0...v0.30.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-04 21:39:27 +00:00
Evan Su
509dd5775e
Update io.github.picocrypt.Picocrypt.metainfo.xml 2024-11-23 11:54:22 -05:00
Evan Su
99174c7d5a
Update Changelog.md with v1.44
No changes, just updated dependencies
2024-11-23 11:53:11 -05:00
Evan Su
84451ef88d
Bump to 1.44
Some checks failed
build-linux / build (push) Has been cancelled
build-macos / build (push) Has been cancelled
build-windows / build (push) Has been cancelled
No code changes; just updated dependencies.
2024-11-11 19:28:18 -05:00
Evan Su
c42f7c096d
Merge pull request #69 from Picocrypt/dependabot/go_modules/src/golang.org/x/crypto-0.29.0
Some checks failed
CodeQL / Analyze (push) Has been cancelled
Bump golang.org/x/crypto from 0.28.0 to 0.29.0 in /src
2024-11-11 18:40:35 -05:00
dependabot[bot]
4e5c556d23
Bump golang.org/x/crypto from 0.28.0 to 0.29.0 in /src
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.28.0 to 0.29.0.
- [Commits](https://github.com/golang/crypto/compare/v0.28.0...v0.29.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-08 21:35:49 +00:00
Evan Su
b9e02a9c3a
Link to CLI 2024-10-06 01:23:06 -04:00
Evan Su
58e0b66978
Link to web interface 2024-10-06 01:16:57 -04:00
Evan Su
fa263aa170
Merge pull request #65 from Picocrypt/dependabot/go_modules/src/golang.org/x/crypto-0.28.0
Some checks failed
CodeQL / Analyze (push) Has been cancelled
Bump golang.org/x/crypto from 0.27.0 to 0.28.0 in /src
2024-10-05 18:57:20 -04:00
dependabot[bot]
1c21893e13
Bump golang.org/x/crypto from 0.27.0 to 0.28.0 in /src
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.27.0 to 0.28.0.
- [Commits](https://github.com/golang/crypto/compare/v0.27.0...v0.28.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-04 21:37:36 +00:00
Evan Su
1ec199e474
Link to flatpak/flathub 2024-09-12 12:32:51 -04:00
Evan Su
e8016064e8
Add flatpak files 2024-09-11 22:56:46 -04:00
Evan Su
1e230f487d
Bump to 1.43 2024-09-11 21:46:10 -04:00
Evan Su
fc50b47f12
Bump to 1.43 2024-09-11 21:45:33 -04:00
Evan Su
b06488c6aa
Update Changelog.md 2024-09-11 21:44:19 -04:00
Evan Su
4d4bd47efe
Merge pull request #50 from Picocrypt/dependabot/go_modules/src/golang.org/x/crypto-0.27.0
Bump golang.org/x/crypto from 0.26.0 to 0.27.0 in /src
2024-09-06 11:38:33 -04:00
dependabot[bot]
94ce7833f5
Bump golang.org/x/crypto from 0.26.0 to 0.27.0 in /src
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.26.0 to 0.27.0.
- [Commits](https://github.com/golang/crypto/compare/v0.26.0...v0.27.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-05 21:21:49 +00:00
Evan Su
97111a2547
Link to final audit report 2024-09-04 14:10:59 -04:00
Evan Su
3f4e5f1abc
Link to final audit report 2024-09-04 14:05:28 -04:00
Evan Su
674fe56240
Bump to 1.42 (first version after security audit) 2024-09-03 00:19:21 -04:00
Evan Su
df013e6ca1
Add ROS to acknowledgements 2024-09-03 00:18:20 -04:00
Evan Su
b7ee373579
Update Changelog.md for v1.42 (after audit) 2024-09-03 00:16:02 -04:00
Evan Su
fce558b8be panic if crypto/rand.Read errors
Otherwise it would potentially allow zeroed values to be used in the volume which is not good. But this is highly unlikely so not a huge worry.
2024-09-03 00:09:03 -04:00
Evan Su
c0f9e582bb
Note: Picocrypt assumes host machine is safe and trusted
Because if it is not, you got problems anyways.
2024-09-02 23:48:58 -04:00
Evan Su
6ea23b8a86 panic if comments are too long
No one is going to put >99999 characters in the comment field realistically and the UI is likely to freeze and crash before the application gets to this point. So a raw panic is sufficient for this extreme edge case.
2024-09-02 23:31:51 -04:00
Evan Su
e8fe27855f Merge branch 'main' of https://github.com/Picocrypt/Picocrypt 2024-09-02 23:23:58 -04:00
Evan Su
b3f36a3994 Validate comments length before parsing 2024-09-02 23:23:38 -04:00
Evan Su
b9bad21f22
Note: comments are not authenticated
Thus only use them for informational purposes on machines you trust.
2024-09-02 23:13:39 -04:00
Evan Su
21ab20773d
Bump to 1.41 2024-08-30 20:58:21 -04:00
Evan Su
231cc03b6a
Update Changelog.md 2024-08-30 20:57:12 -04:00
Evan Su
66a3cca464 Move packages to Picocrypt org 2024-08-30 20:55:19 -04:00
Evan Su
b5eb15520b Move packages to Picocrypt org 2024-08-30 20:19:31 -04:00
Evan Su
c5df6252b6 Move packages to Picocrypt organization 2024-08-30 19:53:05 -04:00
Evan Su
89e246cb16
Link to archived Open Collective 2024-08-28 18:54:49 -04:00
Evan Su
7e403a2e57
Update changelog to v1.40 2024-08-10 23:54:37 -04:00
Evan Su
57dda53969 Allow specifying files from command line 2024-08-10 23:37:17 -04:00
Evan Su
237a68a973 update x/sys 2024-08-10 22:56:49 -04:00
Evan Su
bb03bd2994
Merge pull request #39 from Retengart/deny-switch
fix: deniability button now disables the comments field
2024-08-07 12:05:20 -04:00
Evan Su
1fb237a085
Merge pull request #38 from Picocrypt/dependabot/go_modules/src/golang.org/x/crypto-0.26.0
Bump golang.org/x/crypto from 0.25.0 to 0.26.0 in /src
2024-08-07 11:37:32 -04:00
Alex Verner
985ae302b1 fix: deniability button now disables the comments field 2024-08-07 18:04:14 +03:00
dependabot[bot]
3c03df6d2c
Bump golang.org/x/crypto from 0.25.0 to 0.26.0 in /src
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.25.0 to 0.26.0.
- [Commits](https://github.com/golang/crypto/compare/v0.25.0...v0.26.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-06 21:40:01 +00:00
Evan Su
0dadb24304
Merge pull request #37 from Retengart/dots
deleted unnecessary dots at the end of sentences, bump to 1.38
2024-08-05 09:07:38 -04:00
Alex Verner
6869e6c5a7 deleted unnecessary dots at the end of sentences, bump to 1.38 2024-08-05 13:17:16 +03:00
Evan Su
d4abf47630
Make download urls point to latest release tag 2024-07-12 23:25:07 -04:00
Evan Su
de5f8d8bf7
Remove Funding
We've raised enough for an audit.
2024-07-12 23:20:00 -04:00
Evan Su
679b468cdf
Add new Open Collective contributors, minor adjustments 2024-07-12 23:16:22 -04:00
Evan Su
7efd390ceb
Update Changelog.md 2024-07-12 22:57:44 -04:00
Evan Su
da01ed2dca
Bump to 1.37 2024-07-08 23:22:18 -04:00
Evan Su
fe0c71246c
Fix build-linux.yml 2024-07-08 23:21:41 -04:00
Evan Su
bb828bfba9
Drop to 1.36 2024-07-08 23:09:04 -04:00
Evan Su
cc86b38ce5
Update build-linux.yml 2024-07-08 23:08:40 -04:00
Evan Su
cfc9560ce7
Bump to 1.37 2024-07-08 23:02:29 -04:00
Evan Su
9cb2adbc0e
Add version to .deb 2024-07-08 23:02:09 -04:00
Evan Su
b4350e45d6
Bump to 1.36 2024-07-07 20:06:54 -04:00
Evan Su
15e0d1d69d
Merge pull request #28 from Picocrypt/dependabot/go_modules/src/golang.org/x/crypto-0.25.0
Bump golang.org/x/crypto from 0.24.0 to 0.25.0 in /src
2024-07-06 12:16:31 -04:00
dependabot[bot]
bada663f53
Bump golang.org/x/crypto from 0.24.0 to 0.25.0 in /src
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.24.0 to 0.25.0.
- [Commits](https://github.com/golang/crypto/compare/v0.24.0...v0.25.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-05 21:31:56 +00:00
Evan Su
fec593e116
Merge pull request #26 from Picocrypt/patch-1
Update Picocrypt.go
2024-06-27 23:45:30 -04:00
CodeCracker-oss
33da5b0e74
Update Picocrypt.go
Generate 32 byte Key File's instead of 1 KB
2024-06-27 23:29:02 -04:00
Evan Su
d3346f9105
Bump download links 2024-06-27 21:12:00 -04:00
Evan Su
8d11708da5
Bump to 1.35 2024-06-27 20:37:22 -04:00
Evan Su
e0d14c4d44
Update build-windows.yml 2024-06-26 23:25:16 -04:00
Evan Su
59933553bc
Update build-windows.yml 2024-06-26 23:15:16 -04:00
Evan Su
ba43ef53ef
Update build-windows.yml 2024-06-26 23:03:58 -04:00
Evan Su
4dcea4333a
Update download links to point to latest 2024-06-26 23:01:49 -04:00
Evan Su
5baf3b74b4
Update CODEOWNERS 2024-06-26 22:59:27 -04:00
Evan Su
2fe8dba906
Update build-windows.yml 2024-06-26 22:52:49 -04:00
Evan Su
c306c6d5a3
Update CODEOWNERS 2024-06-26 22:51:32 -04:00
Evan Su
e34fad6737
Update build-macos.yml 2024-06-26 22:50:30 -04:00
Evan Su
73b5b23d78
Update build-macos.yml 2024-06-26 22:35:40 -04:00
Evan Su
1fb3d4f861
Update build-linux.yml 2024-06-26 22:32:45 -04:00
Evan Su
52c3b6f57c
Update build-linux.yml 2024-06-26 22:27:52 -04:00
Evan Su
8dd2b4dcc9
Update build-linux.yml 2024-06-26 22:27:36 -04:00
Evan Su
84cd103936
Create VERSION 2024-06-26 22:25:18 -04:00
Evan Su
c6ae81b6c6
Clean up downloads section 2024-06-24 21:31:28 -04:00
Evan Su
eb0d409435
Update build-macos.yml 2024-06-24 20:23:02 -04:00
Evan Su
969ca645e8
Update build-macos.yml 2024-06-23 23:01:09 -04:00
Evan Su
de4ceb8094
Update build-macos.yml 2024-06-23 22:59:02 -04:00
Evan Su
776d2f0b35
Update build-macos.yml 2024-06-23 22:54:32 -04:00
Evan Su
9a0014863d
Update build-macos.yml 2024-06-23 22:34:22 -04:00
Evan Su
2047a3818e
Update build-linux.yml 2024-06-23 22:26:18 -04:00
Evan Su
b1c4243262
Update build-windows.yml 2024-06-23 22:14:51 -04:00
Evan Su
321491573a
Update build-windows.yml 2024-06-23 11:05:05 -04:00
Evan Su
d1ca2ad810
Update build-windows.yml 2024-06-23 10:55:36 -04:00
Evan Su
b71a3dd031
Update build-windows.yml 2024-06-22 23:54:55 -04:00
Evan Su
a5add22c32
Update build-windows.yml 2024-06-22 22:42:42 -04:00
Evan Su
b5f8401bf9
Update build-windows.yml 2024-06-22 22:42:15 -04:00
20 changed files with 1567 additions and 503 deletions

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View file

@ -0,0 +1 @@
blank_issues_enabled: false

105
.github/ISSUE_TEMPLATE/default.yml vendored Normal file
View file

@ -0,0 +1,105 @@
name: Default template
description: The default template for all issues
body:
- type: markdown
attributes:
value: |
# Rules
- type: markdown
attributes:
value: |
**Please read this section carefully and completely. You may be blocked from this repository if you violate the rules.**
- type: markdown
attributes:
value: |
Picocrypt is a "finished" piece of software and is in a maintenance-only stage. This does not mean the software is old, outdated, or abandonware, but that the sole focus is on fixing bugs and ensuring the software continues to work smoothly as opposed to actively developing new features. As well, my time as the developer is very limited considering that Picocrypt brings me no monetary benefit and is entirely a gift of my time and skill to the community.
- type: markdown
attributes:
value: |
*Therefore, to save me time so that I can focus on the important things, please follow the guidelines below depending on your topic.*
- type: markdown
attributes:
value: |
### Bug reports or security issues
- type: markdown
attributes:
value: |
These are important; make the issue with a short description, and then once the issue is created, add a comment with as many details as possible. Ping me (@HACKERALERT) in the comment so that I can get to it as soon as possible. Keep in mind that I define "bug" as something wrong with Picocrypt's code itself. If it's not Picocrypt's fault, it's not a bug.
- type: markdown
attributes:
value: |
### Problems running/starting Picocrypt
- type: markdown
attributes:
value: |
Usually these issues are not directly caused by Picocrypt's code. If you're on Windows, see [here](https://github.com/Picocrypt/Picocrypt/issues/91). If you're on Linux, install some packages and try again (see [here](https://github.com/Picocrypt/Picocrypt/tree/main/src#1-prerequisites)). Picocrypt only targets Windows 11, Ubuntu 24/Debian 12, and macOS 15 or later, so *do not create an issue if your OS is older than those; that is your problem, not mine*. If none of the points above help, create the issue and in a separate comment, provide details about the environment you're running in (like OS, DE, etc.). **Do not ping me initially.** Let the issue sit for at least *5 days* to allow other users to potentially help you resolve the issue. If after 5 days, you haven't figured things out, then you may ping me (@HACKERALERT).
- type: markdown
attributes:
value: |
### Picocrypt is crashing
- type: markdown
attributes:
value: |
This is almost always caused by input/output files being in locations where you don't have the correct read/write permissions. Try working within your user/home folder only and copy to/from other places to see if that resolves the crash. If not, run Picocrypt from the command line (e.g. `Picocrypt.exe` or `./Picocrypt`) so you can read the crash message. If you still can't fix the crash, create an issue and ping me (@HACKERALERT).
- type: markdown
attributes:
value: |
### Antivirus problems
- type: markdown
attributes:
value: |
These are unpreventable; report them as false positives to your antivirus software provider and **do not create an issue about it**.
- type: markdown
attributes:
value: |
### Support requests/usage questions
- type: markdown
attributes:
value: |
Create the issue and ask your question or support request in a separate comment. **Do not ping me initially.** Let the issue sit for at least *10 days* to give other users a chance to help you first. If after 10 days, you have not received any assistance, then you may ping me (@HACKERALERT).
- type: markdown
attributes:
value: |
### Feature requests/suggestions
- type: markdown
attributes:
value: |
Picocrypt is mature software; I do not intend to add any new features. **Do not create these types of issues.**
- type: markdown
attributes:
value: |
### Performance issues/improvements
- type: markdown
attributes:
value: |
Picocrypt prioritizes correctness and reliability over performance, so many parts of the code are written sequentially and don't use concurrency. This is intentional and need not be pointed out. Unless performance is absolutely atrocious to the point where it is indicative of a potential bug, **do not make issues about performance**.
- type: markdown
attributes:
value: |
### Other issues/generic topics
- type: markdown
attributes:
value: |
You will have to use your best judgement here. Read the sections above to get an idea of what I expect to see and do what you think is best. Ideally, ping me only if sufficient time has passed for other users to assist/answer you, or it is best addressed by me directly. You must first look through existing issues or do a web search (AI can help!) before creating the issue. While I am allowing these generic issues to be made, if they become a hassle, I reserve the right to disallow them in the future.
- type: checkboxes
id: confirmation
attributes:
label: "Please confirm:"
options:
- label: "I have carefully read and agree to the rules outlined above"
required: true
- label: "I will provide as many helpful details as possible"
required: true
- label: "I acknowledge my issue may be ignored or closed without explanation"
required: true
- label: "I have looked through previous issues and related info already"
required: true
- label: "I will remember to close my issue when it is resolved"
required: true
- type: input
id: summary
attributes:
label: "Describe the issue briefly in a few sentences:"
description: "You can add more details in a separate comment after creating the issue."
validations:
required: true

View file

@ -6,25 +6,21 @@ permissions:
on: on:
push: push:
paths: paths:
- "src/*.go" - "VERSION"
- "src/go.mod"
- "src/go.sum"
branches: branches:
- main - main
schedule:
- cron: "0 0 * * *"
workflow_dispatch: workflow_dispatch:
jobs: jobs:
build: build:
runs-on: ubuntu-22.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Setup Go - name: Setup Go
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: '>1.18' go-version: '>=1.24'
check-latest: true check-latest: true
cache: false cache: false
@ -43,13 +39,17 @@ jobs:
go build -v -ldflags="-s -w" -o Picocrypt Picocrypt.go go build -v -ldflags="-s -w" -o Picocrypt Picocrypt.go
env: env:
CGO_ENABLED: 1 CGO_ENABLED: 1
GOAMD64: v2 GOAMD64: v1
- name: Package as .deb - name: Package as .deb
run: | run: |
wget https://github.com/user-attachments/files/15934717/Picocrypt.zip wget https://github.com/user-attachments/files/16136712/Picocrypt.zip
python -m zipfile -e Picocrypt.zip Picocrypt python -m zipfile -e Picocrypt.zip Picocrypt
cp src/Picocrypt Picocrypt/Picocrypt/usr/bin/picocrypt-gui cp src/Picocrypt Picocrypt/Picocrypt/usr/bin/picocrypt-gui
VERSION=$(cat VERSION)
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "Version: $VERSION" >> Picocrypt/Picocrypt/DEBIAN/control
echo "Version=$VERSION" >> Picocrypt/Picocrypt/usr/share/applications/picocrypt.desktop
cd Picocrypt cd Picocrypt
dpkg-deb -Zxz --build --root-owner-group Picocrypt dpkg-deb -Zxz --build --root-owner-group Picocrypt
@ -73,11 +73,21 @@ jobs:
if-no-files-found: error if-no-files-found: error
compression-level: 9 compression-level: 9
- name: Generate checksums
run: |
echo "CHECKSUM_PICOCRYPT=$(sha256sum Picocrypt | cut -d ' ' -f1)" >> $GITHUB_ENV
echo "CHECKSUM_DEB=$(sha256sum Picocrypt.deb | cut -d ' ' -f1)" >> $GITHUB_ENV
- name: Release - name: Release
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2
with: with:
files: | files: |
Picocrypt Picocrypt
Picocrypt.deb Picocrypt.deb
tag_name: nightly tag_name: ${{ env.VERSION }}
make_latest: true make_latest: true
append_body: true
body: |
**Linux:**
`sha256(Picocrypt) ${{ env.CHECKSUM_PICOCRYPT }}`
`sha256(Picocrypt.deb) ${{ env.CHECKSUM_DEB }}`

View file

@ -1,26 +1,26 @@
name: build-macos name: build-macos
permissions:
contents: write
on: on:
push: push:
paths: paths:
- "src/*.go" - "VERSION"
- "src/go.mod"
- "src/go.sum"
branches: branches:
- main - main
schedule: workflow_dispatch:
- cron: "0 0 * * *"
jobs: jobs:
build: build:
runs-on: macos-14 runs-on: macos-15
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Setup Go - name: Setup Go
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: '>1.18' go-version: '>=1.24'
check-latest: true check-latest: true
cache: false cache: false
@ -40,19 +40,43 @@ jobs:
env: env:
CGO_ENABLED: 1 CGO_ENABLED: 1
- name: Package as .app - name: Package as .app in a .dmg
run: | run: |
mv dist/macos/Picocrypt.app.zip . mv dist/macos/Picocrypt.app.zip .
unzip -d Picocrypt.app Picocrypt.app.zip unzip -d Picocrypt.app Picocrypt.app.zip
rm Picocrypt.app.zip rm Picocrypt.app.zip
mv src/Picocrypt Picocrypt.app/Contents/MacOS/Picocrypt mv src/Picocrypt Picocrypt.app/Contents/MacOS/Picocrypt
zip -r Picocrypt.zip Picocrypt.app mkdir out
cp -R Picocrypt.app out
hdiutil create Picocrypt.dmg -volname Picocrypt -fs APFS -format UDZO -srcfolder out
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: build-macos name: build-macos
path: | path: |
Picocrypt.zip Picocrypt.dmg
if-no-files-found: error if-no-files-found: error
compression-level: 9 compression-level: 9
- name: Get version tag
run: |
VERSION=$(cat VERSION)
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Generate checksums
run: |
HASH=$(shasum -a 256 Picocrypt.dmg | cut -d ' ' -f1)
echo "CHECKSUM_PICOCRYPT=$HASH" >> $GITHUB_ENV
- name: Release
uses: softprops/action-gh-release@v2
with:
files: |
Picocrypt.dmg
tag_name: ${{ env.VERSION }}
make_latest: true
append_body: true
body: |
**macOS:**
`sha256(Picocrypt.dmg) ${{ env.CHECKSUM_PICOCRYPT }}`

View file

@ -1,26 +1,26 @@
name: build-windows name: build-windows
permissions:
contents: write
on: on:
push: push:
paths: paths:
- "src/*.go" - "VERSION"
- "src/go.mod"
- "src/go.sum"
branches: branches:
- main - main
schedule: workflow_dispatch:
- cron: "0 0 * * *"
jobs: jobs:
build: build:
runs-on: windows-2022 runs-on: windows-2025
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Setup Go - name: Setup Go
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: '>1.18' go-version: '>=1.24'
check-latest: true check-latest: true
cache: false cache: false
@ -35,25 +35,25 @@ jobs:
go build -v -ldflags="-s -w -H=windowsgui -extldflags=-static" -o 1.exe Picocrypt.go go build -v -ldflags="-s -w -H=windowsgui -extldflags=-static" -o 1.exe Picocrypt.go
env: env:
CGO_ENABLED: 1 CGO_ENABLED: 1
GOAMD64: v2 GOAMD64: v1
- name: Add icon, manifest, and version info - name: Add icon, manifest, and version info
shell: pwsh shell: pwsh
run: | run: |
Invoke-WebRequest -OutFile reshacker_setup.zip https://github.com/user-attachments/files/15893917/reshacker_setup.zip Invoke-WebRequest -OutFile reshacker_setup.zip https://github.com/user-attachments/files/18878075/reshacker_setup.zip
Expand-Archive -DestinationPath reshacker_setup reshacker_setup.zip Expand-Archive -DestinationPath reshacker_setup reshacker_setup.zip
reshacker_setup/reshacker_setup.exe /SILENT reshacker_setup/reshacker_setup.exe /SILENT
Start-Sleep -Seconds 30 Start-Sleep -Seconds 60
Invoke-Expression "& `"$Env:P`" -open src/1.exe -save src/2.exe -action addoverwrite -res images/key.ico -mask `"ICONGROUP,MAINICON,`"" Invoke-Expression "& `"$Env:P`" -open src/1.exe -save src/2.exe -action addoverwrite -res images/key.ico -mask `"ICONGROUP,MAINICON,`""
Start-Sleep -Seconds 10 Start-Sleep -Seconds 30
Invoke-Expression "& `"$Env:P`" -open src/2.exe -save src/3.exe -action addoverwrite -res images/key.ico -mask `"ICONGROUP,GLFW_ICON,`"" Invoke-Expression "& `"$Env:P`" -open src/2.exe -save src/3.exe -action addoverwrite -res images/key.ico -mask `"ICONGROUP,GLFW_ICON,`""
Start-Sleep -Seconds 10 Start-Sleep -Seconds 30
Invoke-Expression "& `"$Env:P`" -open src/3.exe -save src/4.exe -action addoverwrite -res dist/windows/manifest.xml -mask `"MANIFEST,1,`"" Invoke-Expression "& `"$Env:P`" -open src/3.exe -save src/4.exe -action addoverwrite -res dist/windows/manifest.xml -mask `"MANIFEST,1,`""
Start-Sleep -Seconds 10 Start-Sleep -Seconds 30
Invoke-Expression "& `"$Env:P`" -open dist/windows/versioninfo.rc -save resources.res -action compile" Invoke-Expression "& `"$Env:P`" -open dist/windows/versioninfo.rc -save resources.res -action compile"
Start-Sleep -Seconds 10 Start-Sleep -Seconds 30
Invoke-Expression "& `"$Env:P`" -open src/4.exe -save src/5.exe -action addoverwrite -res resources.res" Invoke-Expression "& `"$Env:P`" -open src/4.exe -save src/5.exe -action addoverwrite -res resources.res"
Start-Sleep -Seconds 10 Start-Sleep -Seconds 30
env: env:
P: "C:\\Program Files (x86)\\Resource Hacker\\ResourceHacker.exe" P: "C:\\Program Files (x86)\\Resource Hacker\\ResourceHacker.exe"
@ -68,6 +68,30 @@ jobs:
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: build-windows name: build-windows
path: src/Picocrypt.exe path: src/*.exe
if-no-files-found: error if-no-files-found: error
compression-level: 9 compression-level: 9
- name: Get version tag
shell: pwsh
run: |
$version = Get-Content -Path "VERSION"
echo "VERSION=$version" >> $env:GITHUB_ENV
- name: Generate checksums
shell: pwsh
run: |
$hash = Get-FileHash "src/Picocrypt.exe" -Algorithm SHA256
echo "CHECKSUM_PICOCRYPT=$($hash.Hash)" >> $env:GITHUB_ENV
- name: Release
uses: softprops/action-gh-release@v2
with:
files: |
src/Picocrypt.exe
tag_name: ${{ env.VERSION }}
make_latest: true
append_body: true
body: |
**Windows:**
`sha256(Picocrypt.exe) ${{ env.CHECKSUM_PICOCRYPT }}`

21
.github/workflows/close-issues.yml vendored Normal file
View file

@ -0,0 +1,21 @@
name: Close inactive issues
on:
schedule:
- cron: "30 1 * * *"
jobs:
close-issues:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v9
with:
days-before-issue-stale: 30
days-before-issue-close: 14
stale-issue-label: "stale"
stale-issue-message: "This issue is stale because it has been open for 30 days with no activity."
close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale."
days-before-pr-stale: -1
days-before-pr-close: -1
repo-token: ${{ secrets.GITHUB_TOKEN }}

View file

@ -0,0 +1,71 @@
name: pr-test-build-linux
permissions:
contents: write
on:
pull_request:
branches:
- main
jobs:
pr-test-build-linux:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '>=1.24'
check-latest: true
cache: false
- name: Install packages
run: |
sudo apt install -y gcc xorg-dev libgtk-3-dev libgl1-mesa-dev libglu1-mesa wget
- name: Install dependencies
run: |
cd src
go mod download
- name: Build
run: |
cd src
go build -v -ldflags="-s -w" -o Picocrypt Picocrypt.go
env:
CGO_ENABLED: 1
GOAMD64: v1
- name: Package as .deb
run: |
wget https://github.com/user-attachments/files/16136712/Picocrypt.zip
python -m zipfile -e Picocrypt.zip Picocrypt
cp src/Picocrypt Picocrypt/Picocrypt/usr/bin/picocrypt-gui
VERSION=$(cat VERSION)
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "Version: $VERSION" >> Picocrypt/Picocrypt/DEBIAN/control
echo "Version=$VERSION" >> Picocrypt/Picocrypt/usr/share/applications/picocrypt.desktop
cd Picocrypt
dpkg-deb -Zxz --build --root-owner-group Picocrypt
- name: Prepare to upload artifacts
run: |
mkdir out
mv src/Picocrypt out
mv Picocrypt/Picocrypt.deb out
rm -rf src
rm -rf Picocrypt
mv out/Picocrypt .
mv out/Picocrypt.deb .
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: pr-test-build-linux-ONLY-FOR-TESTING
path: |
Picocrypt
Picocrypt.deb
if-no-files-found: error
compression-level: 9

View file

@ -0,0 +1,57 @@
name: pr-test-build-macos
permissions:
contents: write
on:
pull_request:
branches:
- main
jobs:
pr-test-build-macos:
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '>=1.24'
check-latest: true
cache: false
- name: Install packages
run: |
brew install glfw glew
- name: Install dependencies
run: |
cd src
go mod download
- name: Build
run: |
cd src
go build -v -ldflags="-s -w" -o Picocrypt Picocrypt.go
env:
CGO_ENABLED: 1
- name: Package as .app in a .dmg
run: |
mv dist/macos/Picocrypt.app.zip .
unzip -d Picocrypt.app Picocrypt.app.zip
rm Picocrypt.app.zip
mv src/Picocrypt Picocrypt.app/Contents/MacOS/Picocrypt
mkdir out
cp -R Picocrypt.app out
hdiutil create Picocrypt.dmg -volname Picocrypt -fs APFS -format UDZO -srcfolder out
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: pr-test-build-macos-ONLY-FOR-TESTING
path: |
Picocrypt.dmg
if-no-files-found: error
compression-level: 9

View file

@ -0,0 +1,70 @@
name: pr-test-build-windows
permissions:
contents: write
on:
pull_request:
branches:
- main
jobs:
pr-test-build-windows:
runs-on: windows-2025
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '>=1.24'
check-latest: true
cache: false
- name: Install dependencies
run: |
cd src
go mod download
- name: Build
run: |
cd src
go build -v -ldflags="-s -w -H=windowsgui -extldflags=-static" -o 1.exe Picocrypt.go
env:
CGO_ENABLED: 1
GOAMD64: v1
- name: Add icon, manifest, and version info
shell: pwsh
run: |
Invoke-WebRequest -OutFile reshacker_setup.zip https://github.com/user-attachments/files/18878075/reshacker_setup.zip
Expand-Archive -DestinationPath reshacker_setup reshacker_setup.zip
reshacker_setup/reshacker_setup.exe /SILENT
Start-Sleep -Seconds 60
Invoke-Expression "& `"$Env:P`" -open src/1.exe -save src/2.exe -action addoverwrite -res images/key.ico -mask `"ICONGROUP,MAINICON,`""
Start-Sleep -Seconds 30
Invoke-Expression "& `"$Env:P`" -open src/2.exe -save src/3.exe -action addoverwrite -res images/key.ico -mask `"ICONGROUP,GLFW_ICON,`""
Start-Sleep -Seconds 30
Invoke-Expression "& `"$Env:P`" -open src/3.exe -save src/4.exe -action addoverwrite -res dist/windows/manifest.xml -mask `"MANIFEST,1,`""
Start-Sleep -Seconds 30
Invoke-Expression "& `"$Env:P`" -open dist/windows/versioninfo.rc -save resources.res -action compile"
Start-Sleep -Seconds 30
Invoke-Expression "& `"$Env:P`" -open src/4.exe -save src/5.exe -action addoverwrite -res resources.res"
Start-Sleep -Seconds 30
env:
P: "C:\\Program Files (x86)\\Resource Hacker\\ResourceHacker.exe"
- name: Compress with upx
shell: pwsh
run: |
Invoke-WebRequest -OutFile upx.zip https://github.com/user-attachments/files/15894908/upx-4.2.4-win64.zip
Expand-Archive -DestinationPath upx upx.zip
upx/upx-4.2.4-win64/upx.exe --lzma --brute -o src/Picocrypt.exe src/5.exe
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: pr-test-build-windows-ONLY-FOR-TESTING
path: src/*.exe
if-no-files-found: error
compression-level: 9

2
.gitignore vendored
View file

@ -20,3 +20,5 @@
# Go workspace file # Go workspace file
go.work go.work
go.work.sum go.work.sum
TODO

View file

@ -1 +1,4 @@
.github/workflows/* @HACKERALERT .github/workflows/* @HACKERALERT
VERSION @HACKERALERT
CODEOWNERS @HACKERALERT
src/* @HACKERALERT

View file

@ -1,6 +1,74 @@
# Future # v1.48 (Released 04/18/2025)
<ul> <ul>
<li>Migrate golang.org/x/crypto to standard library imports (https://github.com/golang/go/issues/65269)</li> <li>✓ Allow pressing 'Enter' key to press Start/Process button</li>
<li>✓ Update "Encrypt" button to "Zip and Encrypt" if multiple files</li>
<li>✓ Give user estimated required free disk space in status label</li>
<li>✓ Encrypt previously unencrypted temporary zip files</li>
<li>✓ Add `.incomplete` to filenames while work is in progress</li>
<li>✓ Use `encrypted-*.zip.pcv` output name instead of `Encrypted.zip.pcv`</li>
<li>✓ Use 0700 permissions when auto unzipping and creating folders</li>
<li>✓ Handle many more errors in the code where they were ignored previously</li>
</ul>
# v1.47 (Released 02/19/2025)
<ul>
<li>✓ No code changes, just build on newly released Go 1.24</li>
<li>✓ Reintroduce the Windows installer made using Inno Setup</li>
</ul>
# v1.46 (Released 01/29/2025)
<ul>
<li>✓ Added Picocrypt version to the window title</li>
<li>✓ Added ability to automatically unzip archives upon decryption</li>
</ul>
# v1.45 (Released 12/05/2024)
<ul>
<li>✓ Bumped GitHub Actions Ubuntu 22 -> 24 and macOS 14 -> 15</li>
</ul>
# v1.44 (Released 11/09/2024)
<ul>
<li>✓ No changes, just updated dependencies</li>
</ul>
# v1.43 (Released 09/11/2024)
<ul>
<li>✓ No changes, just updated dependencies</li>
</ul>
# v1.42 (Released 09/03/2024)
<ul>
<li><strong>Security audit by Radically Open Security has concluded! No major security issues were found🥳</strong></li>
<li>✓ Panic if crypto/rand.Read fails</li>
<li>✓ Assume host machine is trusted, make notes in documentation accordingly</li>
<li>✓ Handle edge cases regarding comments</li>
</ul>
# v1.41 (Released 08/30/2024)
<ul>
<li>✓ Move all external packages to under Picocrypt organization</li>
</ul>
# v1.40 (Released 08/10/2024)
<ul>
<li>✓ Allow "Open with Picocrypt" to work; you can drop files and folders onto the executable now!</li>
</ul>
# v1.39 (Released 08/07/2024)
<ul>
<li>✓ Disable comments if deniability is enabled</li>
</ul>
# v1.38 (Released 08/03/2024)
<ul>
<li>✓ Remove periods from the end of labels</li>
</ul>
# v1.35 - v1.37 (Released 07/08/2024)
<ul>
<li>✓ Various small releases to get workflows running and automated builds released</li>
<li>✓ Reduce keyfile generator's output size from 1 KiB -> 32 bytes since 32 bytes is enough</li>
</ul> </ul>
# v1.34 (Released 04/29/2024) # v1.34 (Released 04/29/2024)

View file

@ -10,35 +10,39 @@ Picocrypt is a very small (hence <i>Pico</i>), very simple, yet very secure encr
<br> <br>
<p align="center"><img align="center" src="/images/screenshot.png" width="318" alt="Picocrypt"></p> <p align="center"><img align="center" src="/images/screenshot.png" width="318" alt="Picocrypt"></p>
# Funding
**Please donate to Picocrypt on <a href="https://opencollective.com/picocrypt">Open Collective</a> (crypto is accepted) to raise money for a security audit from Cure53. Because this is a project that I spend many hours on and make no money from, I cannot pay for an audit myself. <i>Picocrypt needs support from its community.**</i>
# Downloads # Downloads
**Important**: There are multiple entities under the name "Picocrypt". For example, there's an old encryption tool called PicoCrypt that uses a broken cipher. There's also an ERC-funded research project called PICOCRYPT. There are even domains related to Picocrypt that I've never registered like picocrypt.com and picocrypt.org. Please don't confuse any of these unrelated (and potentially malicious) projects/domains with Picocrypt (this project). **Make sure to only download Picocrypt from this repository** to ensure that you get the authentic and backdoor-free Picocrypt. When sharing Picocrypt with others, be sure to link to this repository to prevent any confusion. **Make sure to only download Picocrypt from this repository** to ensure that you get the authentic and backdoor-free Picocrypt. When sharing Picocrypt with others, be sure to link to this repository to prevent any confusion.
**Beware of picocrypt.org, which claims to be the official website for this project! Remember, there is no official website for Picocrypt.** Even if this self-proclaimed website is taken down, I will not remove this message; let it be a real-world warning to stay vigilant. **Beware of picocrypt.org, which claims to be the official website for this project! Remember, there is no official website for Picocrypt.** Even if this self-proclaimed website is taken down, I will not remove this message; let it be a real-world warning to stay vigilant.
## Windows ## Windows
Picocrypt for Windows is as simple as it gets. To download the latest, standalone, and portable executable for Windows, click the button below and go into the latest successful build-windows workflow run. Find the Artifacts section and download the build -- inside will be the Picocrypt executable. Picocrypt for Windows is as simple as it gets. To download the latest, standalone, and portable executable for Windows, click <a href="https://github.com/Picocrypt/Picocrypt/releases/latest/download/Picocrypt.exe">here</a>. If Microsoft Defender or your antivirus flags Picocrypt as a virus, please do your part and submit it as a false positive for the betterment of everyone.
<a href="https://github.com/Picocrypt/Picocrypt/actions/workflows/build-windows.yml">
<img src="https://github.com/Picocrypt/Picocrypt/actions/workflows/build-windows.yml/badge.svg">
</a>
## macOS ## macOS
Picocrypt for macOS is very simple as well. Download Picocrypt for Apple silicon <a href="https://github.com/HACKERALERT/Picocrypt/releases/download/1.34/Picocrypt-arm64.dmg">here</a>, open the container, and drag Picocrypt to your Downloads or Applications. If you can't open Picocrypt because it's not from a verified developer, control-click on Picocrypt and hit Open to bypass the warning. If the app appears to be "damaged" and can't be opened, try manually trusting it from a terminal: Picocrypt for macOS is very simple as well. Download Picocrypt <a href="https://github.com/Picocrypt/Picocrypt/releases/latest/download/Picocrypt.dmg">here</a>, open the container, and drag Picocrypt to your Applications. You may need to manually trust the app from a terminal and control-click on the app if macOS prevents you from opening it:
``` ```
xattr -d com.apple.quarantine /Applications/Picocrypt.app xattr -d com.apple.quarantine /Applications/Picocrypt.app
``` ```
Note that Picocrypt requires OpenGL, and may not work in the future if Apple removes it.
## Linux ## Linux
To use Picocrypt on Linux, you can download the raw binary <a href="https://github.com/HACKERALERT/Picocrypt/releases/download/1.34/Picocrypt">here</a>. Alternatively, you can try the <a href="https://snapcraft.io/picocrypt">Snap</a>, run Picocrypt through Wine, or compile from source using the instructions in the `src/` directory. To use Picocrypt on Linux, you can download the raw binary <a href="https://github.com/Picocrypt/Picocrypt/releases/latest/download/Picocrypt">here</a> (you may need to install the packages below). Alternatively, you can try the <a href="https://github.com/Picocrypt/Picocrypt/releases/latest/download/Picocrypt.deb">.deb</a>, <a href="https://flathub.org/apps/io.github.picocrypt.Picocrypt">Flatpak</a>, run Picocrypt through Wine, or compile from source using the instructions in the `src/` directory.
```
sudo apt install -y libc6 libgcc-s1 libgl1 libgtk-3-0 libstdc++6 libx11-6
```
## CLI
A command-line interface is available for Picocrypt <a href="https://github.com/Picocrypt/CLI">here</a>. It can encrypt and decrypt files, folders, and globs, and supports paranoid mode and Reed-Solomon encoding. You can use it on systems that don't have a GUI or can't run the GUI app, or to write automated shell scripts for backups, etc.
## Web
A functionally limited web app is available <a href="https://picocrypt.github.io/">here</a> which allows you to encrypt and decrypt standard Picocrypt volumes (no advanced features or keyfiles) on any modern browser, including mobile devices. It's a simple, future-proof way to encrypt files that should work indefinitely due to the web's stable nature. Note that you can only encrypt single files up to a maximum size of 1 GiB.
## Mobile 🚧
An experimental project <a href="https://github.com/Picocrypt/PicoGo">PicoGo</a> is a community-developed port of Picocrypt to platforms like Android and iOS using the Fyne GUI library. Feel free to try it out, but keep in mind that it is *not* part of the official core Picocrypt project (like the platforms listed above) and thus not subject to the same scrutiny and standards that the core project is. So, **use it with caution and diligence** during its experimental phase.
# Why Picocrypt? # Why Picocrypt?
Why should you use Picocrypt instead of VeraCrypt, 7-Zip, BitLocker, or Cryptomator? Here are a few reasons why you should choose Picocrypt: Why should you use Picocrypt instead of VeraCrypt, 7-Zip, BitLocker, or Cryptomator? Here are a few reasons why you should choose Picocrypt:
<ul> <ul>
<li>Unlike BitLocker and most cloud services, Picocrypt and its dependencies are completely open-source and auditable. You can verify for yourself that there aren't any backdoors or flaws.</li> <li>Unlike BitLocker and most cloud services, Picocrypt and its dependencies are completely open-source and auditable. You can verify for yourself that there aren't any backdoors or flaws. In fact, Picocrypt was audited by Radically Open Security in 2024 and no major security issues were discovered (you can read the full report <a href="https://github.com/Picocrypt/storage/blob/main/Picocrypt.Audit.Report.pdf">here</a>).</li>
<li>Picocrypt is <i>tiny</i>. While Cryptomator is over 50 MiB and VeraCrypt is over 20 MiB, Picocrypt sits at just 3 MiB, about the size of a medium-resolution photo. And that's not all - Picocrypt is portable (doesn't need to be installed) and doesn't require administrator/root privileges.</li> <li>Picocrypt is <i>tiny</i>. While Cryptomator is over 50 MiB and VeraCrypt is over 20 MiB, Picocrypt sits at just 3 MiB, about the size of a medium-resolution photo. And that's not all - Picocrypt is portable (doesn't need to be installed) and doesn't require administrator/root privileges.</li>
<li>Picocrypt is easier and more productive to use than VeraCrypt. To encrypt files with VeraCrypt, you'd have to spend a minute or two just setting up a volume. With Picocrypt's simple UI, all you have to do is drag and drop your files, enter a password, and hit Encrypt. All the complex procedures are handled by Picocrypt internally. Who said secure encryption can't be simple?</li> <li>Picocrypt is easier and more productive to use than VeraCrypt. To encrypt files with VeraCrypt, you'd have to spend a minute or two just setting up a volume. With Picocrypt's simple UI, all you have to do is drag and drop your files, enter a password, and hit Encrypt. All the complex procedures are handled by Picocrypt internally. Who said secure encryption can't be simple?</li>
<li>Picocrypt is designed for security. 7-Zip is an archive utility and not an encryption tool, so its focus is not on security. Picocrypt, however, is built with security as the number one priority. Every part of Picocrypt exists for a reason and anything that could impact the security of Picocrypt is removed. Picocrypt is built with cryptography you can trust.</li> <li>Picocrypt is designed for security. 7-Zip is an archive utility and not an encryption tool, so its focus is not on security. Picocrypt, however, is built with security as the number one priority. Every part of Picocrypt exists for a reason and anything that could impact the security of Picocrypt is removed. Picocrypt is built with cryptography you can trust.</li>
@ -65,7 +69,7 @@ Here's how Picocrypt compares to other popular encryption tools.
| Reed-Solomon |✅ Yes |❌ No |❌ No |❌ No |❌ No | | Reed-Solomon |✅ Yes |❌ No |❌ No |❌ No |❌ No |
| Compression |✅ Yes |❌ No |✅ Yes |✅ Yes |❌ No | | Compression |✅ Yes |❌ No |✅ Yes |✅ Yes |❌ No |
| Telemetry |✅ None |✅ None |✅ None |❓ Unknown |✅ None | | Telemetry |✅ None |✅ None |✅ None |❓ Unknown |✅ None |
| Audited |❌ [Donate](https://opencollective.com/picocrypt) |✅ Yes |❌ No |❓ Unknown |✅ Yes | | Audited |✅ [Yes](https://github.com/Picocrypt/storage/blob/main/Picocrypt.Audit.Report.pdf) |✅ Yes |❌ No |❓ Unknown |✅ Yes |
Keep in mind that while Picocrypt does most things better than other tools, it's not a one-size-fits-all and doesn't try to be. There are use cases such as full-disk encryption where VeraCrypt and BitLocker would be a better choice. So while Picocrypt is a great choice for the majority of people, you should still do your own research and use what's best for you. Keep in mind that while Picocrypt does most things better than other tools, it's not a one-size-fits-all and doesn't try to be. There are use cases such as full-disk encryption where VeraCrypt and BitLocker would be a better choice. So while Picocrypt is a great choice for the majority of people, you should still do your own research and use what's best for you.
@ -75,7 +79,7 @@ Picocrypt is a very simple tool, and most users will intuitively understand how
While being simple, Picocrypt also strives to be powerful in the hands of knowledgeable and advanced users. Thus, there are some additional options that you may use to suit your needs. While being simple, Picocrypt also strives to be powerful in the hands of knowledgeable and advanced users. Thus, there are some additional options that you may use to suit your needs.
<ul> <ul>
<li><strong>Password generator</strong>: Picocrypt provides a secure password generator that you can use to create cryptographically secure passwords. You can customize the password length, as well as the types of characters to include.</li> <li><strong>Password generator</strong>: Picocrypt provides a secure password generator that you can use to create cryptographically secure passwords. You can customize the password length, as well as the types of characters to include.</li>
<li><strong>Comments</strong>: Use this to store notes, information, and text along with the file (it won't be encrypted). For example, you can put a description of the file you're encrypting before sending it to someone. When the person you sent it to drops the file into Picocrypt, your description will be shown to that person.</li> <li><strong>Comments</strong>: Use this to store notes, information, and text along with the file (<strong>it won't be encrypted</strong>). For example, you can put a description of the file you're encrypting before sending it to someone. When the person you sent it to drops the file into Picocrypt, your description will be shown to that person. <strong>Comments are not authenticated, meaning it can be freely modified by an attacker. Thus, it should only be used for informational purposes in trusted environments.</strong></li>
<li><strong>Keyfiles</strong>: Picocrypt supports the use of keyfiles as an additional form of authentication (or the only form of authentication). Any file can be used as a keyfile, and a secure keyfile generator is provided for convenience. Not only can you use multiple keyfiles, but you can also require the correct order of keyfiles to be present for a successful decryption to occur. A particularly good use case of multiple keyfiles is creating a shared volume, where each person holds a keyfile, and all of them (and their keyfiles) must be present to decrypt the shared volume. By checking the "Require correct order" box and dropping your keyfile in last, you can also ensure that you'll always be the one clicking the Decrypt button.</li> <li><strong>Keyfiles</strong>: Picocrypt supports the use of keyfiles as an additional form of authentication (or the only form of authentication). Any file can be used as a keyfile, and a secure keyfile generator is provided for convenience. Not only can you use multiple keyfiles, but you can also require the correct order of keyfiles to be present for a successful decryption to occur. A particularly good use case of multiple keyfiles is creating a shared volume, where each person holds a keyfile, and all of them (and their keyfiles) must be present to decrypt the shared volume. By checking the "Require correct order" box and dropping your keyfile in last, you can also ensure that you'll always be the one clicking the Decrypt button.</li>
<li><strong>Paranoid mode</strong>: Using this mode will encrypt your data with both XChaCha20 and Serpent in a cascade fashion, and use HMAC-SHA3 to authenticate data instead of BLAKE2b. Argon2 parameters will be increased significantly as well. This is recommended for protecting top-secret files and provides the highest level of practical security attainable. For a hacker to break into your encrypted data, both the XChaCha20 cipher and the Serpent cipher must be broken, assuming you've chosen a good password. It's safe to say that in this mode, your files are impossible to crack. Keep in mind, however, that this mode is slower and isn't really necessary unless you're a government agent with classified data or a whistleblower under threat.</li> <li><strong>Paranoid mode</strong>: Using this mode will encrypt your data with both XChaCha20 and Serpent in a cascade fashion, and use HMAC-SHA3 to authenticate data instead of BLAKE2b. Argon2 parameters will be increased significantly as well. This is recommended for protecting top-secret files and provides the highest level of practical security attainable. For a hacker to break into your encrypted data, both the XChaCha20 cipher and the Serpent cipher must be broken, assuming you've chosen a good password. It's safe to say that in this mode, your files are impossible to crack. Keep in mind, however, that this mode is slower and isn't really necessary unless you're a government agent with classified data or a whistleblower under threat.</li>
<li><strong>Reed-Solomon</strong>: This feature is very useful if you are planning to archive important data on a cloud provider or external medium for a long time. If checked, Picocrypt will use the Reed-Solomon error correction code to add 8 extra bytes for every 128 bytes of data to prevent file corruption. This means that up to ~3% of your file can corrupt and Picocrypt will still be able to correct the errors and decrypt your files with no corruption. Of course, if your file corrupts very badly (e.g., you dropped your hard drive), Picocrypt won't be able to fully recover your files, but it will try its best to recover what it can. Note that this option will slow down encryption and decryption speeds significantly.</li> <li><strong>Reed-Solomon</strong>: This feature is very useful if you are planning to archive important data on a cloud provider or external medium for a long time. If checked, Picocrypt will use the Reed-Solomon error correction code to add 8 extra bytes for every 128 bytes of data to prevent file corruption. This means that up to ~3% of your file can corrupt and Picocrypt will still be able to correct the errors and decrypt your files with no corruption. Of course, if your file corrupts very badly (e.g., you dropped your hard drive), Picocrypt won't be able to fully recover your files, but it will try its best to recover what it can. Note that this option will slow down encryption and decryption speeds significantly.</li>
@ -87,7 +91,9 @@ While being simple, Picocrypt also strives to be powerful in the hands of knowle
</ul> </ul>
# Security # Security
For more information on how Picocrypt handles cryptography, see <a href="Internals.md">Internals</a> for the technical details. If you're worried about the safety of me or this project, let me assure you that this repository won't be hijacked or backdoored. I have 2FA (TOTP) enabled on all accounts with a tie to Picocrypt (GitHub, Reddit, Google, etc.), in addition to full-disk encryption on all of my portable devices. For further hardening, Picocrypt uses my isolated forks of dependencies and I fetch upstream only when I have taken a look at the changes and believe that there aren't any security issues. This means that if a dependency gets hacked or deleted by the author, Picocrypt will be using my fork of it and remain completely unaffected. You can feel confident about using Picocrypt. For more information on how Picocrypt handles cryptography, see <a href="Internals.md">Internals</a> for the technical details. If you're worried about the safety of me or this project, let me assure you that this repository won't be hijacked or backdoored. I have 2FA (TOTP) enabled on all accounts with a tie to Picocrypt (GitHub, etc.), in addition to full-disk encryption on all of my portable devices. For further hardening, Picocrypt uses my isolated forks of dependencies and I fetch upstream only when I have taken a look at the changes and believe that there aren't any security issues. This means that if a dependency gets hacked or deleted by the author, Picocrypt will be using my fork of it and remain completely unaffected. I've also meticulously gone through every single setting in the Picocrypt organization and repos, locking down access behind multiple layers of security such as read-only base-level member permissions, required PRs and mandatory approvals (which no one can do but me), mandatory CODEOWNERS approvals, and I'm the only member of the Picocrypt organization and repos (except for PicoGo). You can feel confident about using Picocrypt as long as you understand:
<strong>Picocrypt operates under the assumption that the host machine it is running on is safe and trusted. If that is not the case, no piece of software will be secure, and you will have much bigger problems to worry about. As such, Picocrypt is designed for the offline security of volumes and does not attempt to protect against side-channel analysis.</strong>
# Donations # Donations
When I was actively developing Picocrypt, I accepted donations, but now that Picocrypt is complete and production-ready, there's no need anymore. Instead, take your time and effort to share the love of Picocrypt with others. Donations are nice, but being able to help others is a lot more valuable to me than a few spare dollars. Knowing that Picocrypt is helping people secure their files is plenty enough for me. When I was actively developing Picocrypt, I accepted donations, but now that Picocrypt is complete and production-ready, there's no need anymore. Instead, take your time and effort to share the love of Picocrypt with others. Donations are nice, but being able to help others is a lot more valuable to me than a few spare dollars. Knowing that Picocrypt is helping people secure their files is plenty enough for me.
@ -102,26 +108,29 @@ No, it doesn't shred any files and just deletes them as your file manager would.
Yes, Picocrypt is secure against quantum computers. All of the cryptography used in Picocrypt works off of a private key, and private-key cryptography is considered to be resistant against all current and future developments, including quantum computers. Yes, Picocrypt is secure against quantum computers. All of the cryptography used in Picocrypt works off of a private key, and private-key cryptography is considered to be resistant against all current and future developments, including quantum computers.
# Acknowledgements # Acknowledgements
A thank you from the bottom of my heart to the significant contributors on Open Collective: A thank you from the bottom of my heart to the significant contributors on [Open Collective](https://opencollective.com/picocrypt):
<ul> <ul>
<li>donor39 (backer)</li> <li><strong>Mikołaj ($1674)</strong></li>
<li>Pokabu (backer)</li> <li><strong>Guest ($842)</strong></li>
<li>akp (backer)</li> <li><strong>YellowNight ($818)</strong></li>
<li>Marvin (backer)</li> <li>Incognito ($135)</li>
<li>Kenichi Nakasaka (backer)</li> <li>akp ($98)</li>
<li>EN (backer)</li> <li>JC ($90)</li>
<li>JC (backer)</li>
<li>Guest ($842)</li>
<li>YellowNight ($818)</li>
<li>evelian ($50)</li> <li>evelian ($50)</li>
<li>jp26 ($50)</li> <li>jp26 ($50)</li>
<li>guest-116103ad ($50)</li> <li>guest-116103ad ($50)</li>
<li>Guest ($27)</li> <li>Guest ($27)</li>
<li>Gittan Pade ($25)</li>
<li>Pokabu ($20)</li>
<li>oli ($20)</li> <li>oli ($20)</li>
<li>Bright ($20)</li> <li>Bright ($20)</li>
<li>Incognito ($20)</li> <li>Incognito ($20)</li>
<li>Guest ($20)</li> <li>Guest ($20)</li>
<li>JokiBlue ($20)</li>
<li>Guest ($20)</li>
<li>Markus ($15)</li> <li>Markus ($15)</li>
<li>EN ($15)</li>
<li>Guest ($13)</li>
<li>Tybbs ($10)</li> <li>Tybbs ($10)</li>
<li>N. Chin ($10)</li> <li>N. Chin ($10)</li>
<li>Manjot ($10)</li> <li>Manjot ($10)</li>
@ -136,7 +145,7 @@ A thank you from the bottom of my heart to the significant contributors on Open
<li>Boat ($10)</li> <li>Boat ($10)</li>
<li>Guest ($10)</li> <li>Guest ($10)</li>
</ul> </ul>
<!-- Last updated April 16, 2024 --> <!-- Last updated July 12, 2024 -->
Also, a huge thanks to the following people who were the first to donate and support Picocrypt: Also, a huge thanks to the following people who were the first to donate and support Picocrypt:
<ul> <ul>
@ -157,5 +166,8 @@ Finally, thanks to these people/organizations for helping me out when needed:
<li>@samuel-lucas6 for feedback, suggestions, and support</li> <li>@samuel-lucas6 for feedback, suggestions, and support</li>
<li>@AsuxAX and @Minibus93 for testing new features</li> <li>@AsuxAX and @Minibus93 for testing new features</li>
<li>@mdanish-kh and @stephengillie for WinGet package</li> <li>@mdanish-kh and @stephengillie for WinGet package</li>
<li><a href="https://privacyguides.org">PrivacyGuides</a> for listing Picocrypt</li> <li>@Retengart for helping create the Flatpak</li>
<li><a href="https://privacyguides.org">Privacy Guides</a> for listing Picocrypt</li>
<li><a href="https://www.radicallyopensecurity.com/">Radically Open Security</a> for auditing Picocrypt</li>
<li>You?</li>
</ul> </ul>

1
VERSION Normal file
View file

@ -0,0 +1 @@
1.48

View file

@ -0,0 +1,9 @@
[Desktop Entry]
Encoding=UTF-8
Terminal=false
Name=Picocrypt
Comment=A very small, very simple, yet very secure encryption tool
Type=Application
Exec=picocrypt-gui
Icon=io.github.picocrypt.Picocrypt
Categories=Utility;Security;

View file

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>io.github.picocrypt.Picocrypt</id>
<name>Picocrypt</name>
<summary>A very small, very simple, yet very secure encryption tool.</summary>
<developer id="io.github.picocrypt">
<name>Evan Su</name>
</developer>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0</project_license>
<url type="homepage">https://github.com/Picocrypt/Picocrypt</url>
<url type="bugtracker">https://github.com/Picocrypt/Picocrypt/issues</url>
<content_rating type="oars-1.1"/>
<description>
<p>Visit the project's GitHub repository to learn more.</p>
</description>
<categories>
<category>Utility</category>
<category>Security</category>
</categories>
<launchable type="desktop-id">io.github.picocrypt.Picocrypt.desktop</launchable>
<screenshots>
<screenshot type="default">
<image>https://raw.githubusercontent.com/Picocrypt/Picocrypt/refs/heads/main/images/screenshot.png</image>
<caption>Main window</caption>
</screenshot>
</screenshots>
<releases>
<release version="1.48" date="2025-04-18">
<url type="details">https://github.com/Picocrypt/Picocrypt/blob/main/Changelog.md#v148-released-04182025</url>
<description>
<ul>
<li>Allow pressing 'Enter' key to press Start/Process button</li>
<li>Update "Encrypt" button to "Zip and Encrypt" if multiple files</li>
<li>Give user estimated required free disk space in status label</li>
<li>Encrypt previously unencrypted temporary zip files</li>
<li>Add `.incomplete` to filenames while work is in progress</li>
<li>Use `encrypted-*.zip.pcv` output name instead of `Encrypted.zip.pcv`</li>
<li>Use 0700 permissions when auto unzipping and creating folders</li>
<li>Handle many more errors in the code where they were ignored previously</li>
</ul>
</description>
</release>
</releases>
</component>

View file

@ -1,6 +1,6 @@
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 1,0,0,0 FILEVERSION 1,48,0,0
PRODUCTVERSION 1,0,0,0 PRODUCTVERSION 1,48,0,0
FILEOS 0x40004 FILEOS 0x40004
FILETYPE 0x1 FILETYPE 0x1
{ {
@ -8,7 +8,7 @@ BLOCK "StringFileInfo"
{ {
BLOCK "040904B0" BLOCK "040904B0"
{ {
VALUE "FileVersion", "nightly" VALUE "FileVersion", "1.48"
VALUE "LegalCopyright", "\xA9 Evan Su & contributors, GPLv3" VALUE "LegalCopyright", "\xA9 Evan Su & contributors, GPLv3"
VALUE "ProductName", "Picocrypt" VALUE "ProductName", "Picocrypt"
} }

File diff suppressed because it is too large Load diff

View file

@ -1,21 +1,21 @@
module Picocrypt module Picocrypt
go 1.17 go 1.24.2
require ( require (
github.com/HACKERALERT/dialog v0.0.0-20220508022504-af3bc34fe379 github.com/Picocrypt/dialog v0.0.0-20250412233924-78f7b909315b
github.com/HACKERALERT/giu v0.5.7-0.20240618030735-f3076d5b31c1 github.com/Picocrypt/giu v0.0.0-20250412235908-fe90a482e6f2
github.com/HACKERALERT/imgui-go v1.12.1-0.20240618030615-ca96a19d1498 github.com/Picocrypt/imgui-go v0.0.0-20250412235405-d86b230f5fbb
github.com/HACKERALERT/infectious v0.0.0-20240622035800-1b100aa35681 github.com/Picocrypt/infectious v0.0.0-20250412183341-9f88c6307b39
github.com/HACKERALERT/serpent v0.0.0-20210716182301-293b29869c66 github.com/Picocrypt/serpent v0.0.0-20240830233833-9ad6ab254fd7
github.com/HACKERALERT/zxcvbn-go v0.0.0-20220508022013-fa924b767f89 github.com/Picocrypt/zxcvbn-go v0.0.0-20250412183938-d59695960527
golang.org/x/crypto v0.24.0 golang.org/x/crypto v0.37.0
) )
require ( require (
github.com/HACKERALERT/gl v0.0.0-20220507232930-73af36e130d3 // indirect github.com/Picocrypt/gl v0.0.0-20250412234430-767b58dbf936 // indirect
github.com/HACKERALERT/glfw/v3.3/glfw v0.0.0-20221117222155-c08d79e41abe // indirect github.com/Picocrypt/glfw/v3.3/glfw v0.0.0-20250412234750-7b96bfdb8dd8 // indirect
github.com/HACKERALERT/mainthread v0.0.0-20211027212305-2ec9e701cc14 // indirect github.com/Picocrypt/mainthread v0.0.0-20240831004314-496f638392b3 // indirect
github.com/HACKERALERT/w32 v0.0.0-20220507231852-76f2a4b526bd // indirect github.com/Picocrypt/w32 v0.0.0-20240831001500-1183079d4d57 // indirect
golang.org/x/sys v0.21.1-0.20240613073215-348425aa18d7 // indirect golang.org/x/sys v0.32.0 // indirect
) )

View file

@ -1,86 +1,24 @@
github.com/HACKERALERT/dialog v0.0.0-20220508022504-af3bc34fe379 h1:GR92LbksZ8zdbzQHf2dTI7e7P8Mjbdi5mSmQv2SK2Uw= github.com/Picocrypt/dialog v0.0.0-20250412233924-78f7b909315b h1:k5YGEx61N6K8l2l6AQ1u5W2aR+47sVZWFyqXS/f5lIA=
github.com/HACKERALERT/dialog v0.0.0-20220508022504-af3bc34fe379/go.mod h1:V0Gv8EvnwHTFk9TOZiHlYlXcUnVHoXJazNW0pVKZnkY= github.com/Picocrypt/dialog v0.0.0-20250412233924-78f7b909315b/go.mod h1:OyaP0Tz19qL3RAGq5Ntues+WVrIbHh5MrfqoA/qhqeg=
github.com/HACKERALERT/giu v0.5.7-0.20240618030735-f3076d5b31c1 h1:7f6kRm9/jdGmGBHvruWNu0btw963sk6FnELc/xaPUMs= github.com/Picocrypt/giu v0.0.0-20250412235908-fe90a482e6f2 h1:SPR2efZTpZJON/2mNifLi68Gl9Epxh/1nXb3kGGHCcg=
github.com/HACKERALERT/giu v0.5.7-0.20240618030735-f3076d5b31c1/go.mod h1:rhkMC6vbLSyHFAJ5L+bUcDH0S8KMN+kCk9JMXYrm/tY= github.com/Picocrypt/giu v0.0.0-20250412235908-fe90a482e6f2/go.mod h1:jd6AonK0ZI02R7GqLWb4gWJz/A2ClF36Y4fFMR8Lzbk=
github.com/HACKERALERT/gl v0.0.0-20220507232930-73af36e130d3 h1:JMAOkmVuuJKjFAVeK+P7i3F/bVSCTU1UUmaxaYTYs9Q= github.com/Picocrypt/gl v0.0.0-20250412234430-767b58dbf936 h1:6MChjQ4AZC2ISBjbgZU/z6tSUxYP50NkRvAu0T2kjlY=
github.com/HACKERALERT/gl v0.0.0-20220507232930-73af36e130d3/go.mod h1:ZUosVzfEKNGLMLk6aj9yo0FSAhWWsbTMjuzeIUXniB0= github.com/Picocrypt/gl v0.0.0-20250412234430-767b58dbf936/go.mod h1:pMdf3io/y3I+zYZ6/xFb3MlI2AgL38enDDIKuR0n2qA=
github.com/HACKERALERT/glfw/v3.3/glfw v0.0.0-20221117222155-c08d79e41abe h1:0qOalSxn46hXG9xwfZkaTuUs5smQQ3X5v7p89HHzkEg= github.com/Picocrypt/glfw/v3.3/glfw v0.0.0-20250412234750-7b96bfdb8dd8 h1:i8wXJhSYIJTXb6sqBS6JZW7QosI9u8Ysy1BHZCTuZEc=
github.com/HACKERALERT/glfw/v3.3/glfw v0.0.0-20221117222155-c08d79e41abe/go.mod h1:aP+FSN9tk1W3UsQisFWxRLQ4WOF7T3niq68UYw0B150= github.com/Picocrypt/glfw/v3.3/glfw v0.0.0-20250412234750-7b96bfdb8dd8/go.mod h1:cX5N2TrX03DC5i5eplxopglDue/vHDs+6Ng9G9uItaI=
github.com/HACKERALERT/imgui-go v1.12.1-0.20240618030615-ca96a19d1498 h1:OQhT4waqtsFHRNZYUN4KgciUiryXIOiAyplXWXItTYY= github.com/Picocrypt/imgui-go v0.0.0-20250412235405-d86b230f5fbb h1:0XMtv2CXx3QvC9ikeH43fJl6ql8j5EsnaiOqhsToFnY=
github.com/HACKERALERT/imgui-go v1.12.1-0.20240618030615-ca96a19d1498/go.mod h1:rWUHB5suv9NAmQJa/Px9ds1D0wT/QD70CPYUqc6rqsM= github.com/Picocrypt/imgui-go v0.0.0-20250412235405-d86b230f5fbb/go.mod h1:N+NVTIIMz6icYltvaKHMvmVIllZDYUyscJ8wpcLKDZ4=
github.com/HACKERALERT/infectious v0.0.0-20240622035800-1b100aa35681 h1:LOILOeWljaUZyXLpJrfY3F2F+YiXKcv867b/35SB1JQ= github.com/Picocrypt/infectious v0.0.0-20250412183341-9f88c6307b39 h1:czHyPoiNrILv9xjfQ87UFllJgak8W6gVcYkmfOay/BE=
github.com/HACKERALERT/infectious v0.0.0-20240622035800-1b100aa35681/go.mod h1:ZGuTcvIkN3f3CPe2PmI4hqVfKD/253FCvrQGDJ+Ca9E= github.com/Picocrypt/infectious v0.0.0-20250412183341-9f88c6307b39/go.mod h1:2ZVEanURxuWmxYZ6W6xMMy4ZR6xmQr16Vq/XPTLIspQ=
github.com/HACKERALERT/mainthread v0.0.0-20211027212305-2ec9e701cc14 h1:DwWXverhu/dEsPM/GPykuHGh4SxW69DaGZL5t3fANG4= github.com/Picocrypt/mainthread v0.0.0-20240831004314-496f638392b3 h1:a62XmbZYhHGDR15C1gxp/IPfJX5SflrJuGpqNoOOK7w=
github.com/HACKERALERT/mainthread v0.0.0-20211027212305-2ec9e701cc14/go.mod h1:jW534e7roGur9mmzAfPxZLQzKXZ+GE5+XeS7PSyqPbo= github.com/Picocrypt/mainthread v0.0.0-20240831004314-496f638392b3/go.mod h1:bsUKeX+/53rCTrItl3YUaeaN5tXl1v6326ZI90xIOsc=
github.com/HACKERALERT/serpent v0.0.0-20210716182301-293b29869c66 h1:YDpFq+y6mRcu97rn/rhYg8u8FdeO0wzTuLgM2gVkA+c= github.com/Picocrypt/serpent v0.0.0-20240830233833-9ad6ab254fd7 h1:G36G2vmQAS7CVoHQrHDGAoCWll/0kPCI8Dk7mgwcJFE=
github.com/HACKERALERT/serpent v0.0.0-20210716182301-293b29869c66/go.mod h1:d/+9q3sIxtIyOgHNgFGr3yGBKKVn5h3vL4hV1qlmoLs= github.com/Picocrypt/serpent v0.0.0-20240830233833-9ad6ab254fd7/go.mod h1:BxsgRYwUVd92aEwXnXsfXfHw8aHlD/PUyExC/wwk9oI=
github.com/HACKERALERT/w32 v0.0.0-20220507231852-76f2a4b526bd h1:d3JLIGBs+ZLdnkjg1ksomAywpHEFhldCaVbNzz7R6uY= github.com/Picocrypt/w32 v0.0.0-20240831001500-1183079d4d57 h1:jusSXTp0h5wz8lxNXStw0jXr/ogZF6rzRF8gu0534hA=
github.com/HACKERALERT/w32 v0.0.0-20220507231852-76f2a4b526bd/go.mod h1:S+3Ad2AEm5MhhuHJeAaXUmyAXON0qFDxcP/Chw8q7+Y= github.com/Picocrypt/w32 v0.0.0-20240831001500-1183079d4d57/go.mod h1:FkeZHdKlITdP34VknO8yLdRY5pCi+iWEhDSA0YsBhZc=
github.com/HACKERALERT/zxcvbn-go v0.0.0-20220508022013-fa924b767f89 h1:mbKV9C7z0N7bGeKKxfKCRvN8snWvGVj+NOm38F3y5Uk= github.com/Picocrypt/zxcvbn-go v0.0.0-20250412183938-d59695960527 h1:IqypAzv5COsByMhiSdwlgafA5SBRG7Z0binnBSo3htM=
github.com/HACKERALERT/zxcvbn-go v0.0.0-20220508022013-fa924b767f89/go.mod h1:nykydiYjCDMkF/2vQXSPM38vR5N9W1DITHvupnN+eOk= github.com/Picocrypt/zxcvbn-go v0.0.0-20250412183938-d59695960527/go.mod h1:u0rcUNEwy7st1DnPxdOJdTsh0aSRhrdMOxlIGrXR1Ls=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.21.1-0.20240613073215-348425aa18d7 h1:B6QS9SNS7Nzwt/K5jmuPlD3XrW5N3XzPMzF70DSMjKI=
golang.org/x/sys v0.21.1-0.20240613073215-348425aa18d7/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=