mirror of
https://github.com/Picocrypt/Picocrypt.git
synced 2025-05-17 15:58:32 +02:00
Compare commits
205 commits
Author | SHA1 | Date | |
---|---|---|---|
|
3b54234f19 | ||
|
e74068c5e6 | ||
|
bbf250be37 | ||
|
268055804e | ||
|
0cc109bc6b | ||
|
b0c2943bb0 | ||
|
1b55200b84 | ||
|
d0e4e71b97 | ||
|
7a28e2b273 | ||
|
22a1118f01 | ||
|
ca0a74f99d | ||
|
a0a7f430e4 | ||
|
3403cd68a8 | ||
|
89d461ce9c | ||
|
e72f687ae9 | ||
|
693d0c4754 | ||
|
475e89395f | ||
|
66693564f1 | ||
|
a8dcc6ffbd | ||
|
397ff8a9f9 | ||
|
df5ef8e9ee | ||
|
6140e2beb6 | ||
|
7a1d105a43 | ||
|
99a04de263 | ||
|
ee2abd053c | ||
|
75c0a017f9 | ||
|
9b2b69e442 | ||
|
f58f5ce249 | ||
|
b26137d959 | ||
|
065a50d90e | ||
|
c63cf92672 | ||
|
6a8fdeaa53 | ||
|
bad71f95ce | ||
|
d7a0ee126b | ||
|
16bb70dc97 | ||
|
9e7e2e9c44 | ||
|
757c9c23e4 | ||
|
159944a619 | ||
|
0a061a20b8 | ||
|
a849de0edd | ||
|
f0bfe3ba03 | ||
|
a665839271 | ||
|
2313dcff4b | ||
|
eb4fef1d0e | ||
|
837281168d | ||
|
ea9105b91a | ||
|
e3eb8b5847 | ||
|
de386390ef | ||
|
bf21bd0262 | ||
|
3fe7386043 | ||
|
14d4c60c0e | ||
|
baa4b73219 | ||
|
7e53b2f518 | ||
|
05fd607d73 | ||
|
0f1dc2548d | ||
|
c4fda2c3e0 | ||
|
8e11d46abe | ||
|
a59e9b2bf4 | ||
|
fd95597f02 | ||
|
9287fca7b7 | ||
|
f429f1b1ee | ||
|
55ec72864e | ||
|
d2506df677 | ||
|
a0e6e30e7b | ||
|
333aca2a80 | ||
|
d9473f777b | ||
|
6f3cbb0a38 | ||
|
20b7573a13 | ||
|
5c87df9be0 | ||
|
e5eb860374 | ||
|
ac14f35c7d | ||
|
6f56c6dbd9 | ||
|
41d97c6c4a | ||
|
95f88df4f5 | ||
|
efca54dace | ||
|
970e0a3aa4 | ||
|
d2d93c6172 | ||
|
f28230a999 | ||
|
587f5596ad | ||
|
c205602a22 | ||
|
5e55cb76c7 | ||
|
59eb558729 | ||
|
dc69b914a9 | ||
|
3e9241a8be | ||
|
845af83dae | ||
|
195a90c7e3 | ||
|
670d284603 | ||
|
445cd48e53 | ||
|
46b557e3ef | ||
|
47b65d6fe0 | ||
|
a929eb1037 | ||
|
bf73698c52 | ||
|
10e8a1af82 | ||
|
d569954afc | ||
|
525ee4d591 | ||
|
af3e1748fb | ||
|
fee796845b | ||
|
fdebb502ab | ||
|
2862853176 | ||
|
a14b95b430 | ||
|
b043713c0e | ||
|
dfa51d5a2c | ||
|
f89fc1f153 | ||
|
5c9e6e82ec | ||
|
58c8cbb711 | ||
|
7f630676c0 | ||
|
a90754a67e | ||
|
bc4d029cf0 | ||
|
3fdddfb57d | ||
|
8782e80d46 | ||
|
c45bdede59 | ||
|
fb5b92a17d | ||
|
78af7c48e2 | ||
|
7472203fa0 | ||
|
d8208ce77d | ||
|
7cc2025ff8 | ||
|
b6c67ef0f3 | ||
|
705d20f75b | ||
|
4c1fad5176 | ||
|
bb8d2d2a7d | ||
|
509dd5775e | ||
|
99174c7d5a | ||
|
84451ef88d | ||
|
c42f7c096d | ||
|
4e5c556d23 | ||
|
b9e02a9c3a | ||
|
58e0b66978 | ||
|
fa263aa170 | ||
|
1c21893e13 | ||
|
1ec199e474 | ||
|
e8016064e8 | ||
|
1e230f487d | ||
|
fc50b47f12 | ||
|
b06488c6aa | ||
|
4d4bd47efe | ||
|
94ce7833f5 | ||
|
97111a2547 | ||
|
3f4e5f1abc | ||
|
674fe56240 | ||
|
df013e6ca1 | ||
|
b7ee373579 | ||
|
fce558b8be | ||
|
c0f9e582bb | ||
|
6ea23b8a86 | ||
|
e8fe27855f | ||
|
b3f36a3994 | ||
|
b9bad21f22 | ||
|
21ab20773d | ||
|
231cc03b6a | ||
|
66a3cca464 | ||
|
b5eb15520b | ||
|
c5df6252b6 | ||
|
89e246cb16 | ||
|
7e403a2e57 | ||
|
57dda53969 | ||
|
237a68a973 | ||
|
bb03bd2994 | ||
|
1fb237a085 | ||
|
985ae302b1 | ||
|
3c03df6d2c | ||
|
0dadb24304 | ||
|
6869e6c5a7 | ||
|
d4abf47630 | ||
|
de5f8d8bf7 | ||
|
679b468cdf | ||
|
7efd390ceb | ||
|
da01ed2dca | ||
|
fe0c71246c | ||
|
bb828bfba9 | ||
|
cc86b38ce5 | ||
|
cfc9560ce7 | ||
|
9cb2adbc0e | ||
|
b4350e45d6 | ||
|
15e0d1d69d | ||
|
bada663f53 | ||
|
fec593e116 | ||
|
33da5b0e74 | ||
|
d3346f9105 | ||
|
8d11708da5 | ||
|
e0d14c4d44 | ||
|
59933553bc | ||
|
ba43ef53ef | ||
|
4dcea4333a | ||
|
5baf3b74b4 | ||
|
2fe8dba906 | ||
|
c306c6d5a3 | ||
|
e34fad6737 | ||
|
73b5b23d78 | ||
|
1fb3d4f861 | ||
|
52c3b6f57c | ||
|
8dd2b4dcc9 | ||
|
84cd103936 | ||
|
c6ae81b6c6 | ||
|
eb0d409435 | ||
|
969ca645e8 | ||
|
de4ceb8094 | ||
|
776d2f0b35 | ||
|
9a0014863d | ||
|
2047a3818e | ||
|
b1c4243262 | ||
|
321491573a | ||
|
d1ca2ad810 | ||
|
b71a3dd031 | ||
|
a5add22c32 | ||
|
b5f8401bf9 |
20 changed files with 1567 additions and 503 deletions
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
blank_issues_enabled: false
|
105
.github/ISSUE_TEMPLATE/default.yml
vendored
Normal file
105
.github/ISSUE_TEMPLATE/default.yml
vendored
Normal 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
|
30
.github/workflows/build-linux.yml
vendored
30
.github/workflows/build-linux.yml
vendored
|
@ -6,25 +6,21 @@ permissions:
|
|||
on:
|
||||
push:
|
||||
paths:
|
||||
- "src/*.go"
|
||||
- "src/go.mod"
|
||||
- "src/go.sum"
|
||||
- "VERSION"
|
||||
branches:
|
||||
- main
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '>1.18'
|
||||
go-version: '>=1.24'
|
||||
check-latest: true
|
||||
cache: false
|
||||
|
||||
|
@ -43,13 +39,17 @@ jobs:
|
|||
go build -v -ldflags="-s -w" -o Picocrypt Picocrypt.go
|
||||
env:
|
||||
CGO_ENABLED: 1
|
||||
GOAMD64: v2
|
||||
GOAMD64: v1
|
||||
|
||||
- name: Package as .deb
|
||||
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
|
||||
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
|
||||
|
||||
|
@ -73,11 +73,21 @@ jobs:
|
|||
if-no-files-found: error
|
||||
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
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
files: |
|
||||
Picocrypt
|
||||
Picocrypt.deb
|
||||
tag_name: nightly
|
||||
tag_name: ${{ env.VERSION }}
|
||||
make_latest: true
|
||||
append_body: true
|
||||
body: |
|
||||
**Linux:**
|
||||
`sha256(Picocrypt) ${{ env.CHECKSUM_PICOCRYPT }}`
|
||||
`sha256(Picocrypt.deb) ${{ env.CHECKSUM_DEB }}`
|
||||
|
|
44
.github/workflows/build-macos.yml
vendored
44
.github/workflows/build-macos.yml
vendored
|
@ -1,26 +1,26 @@
|
|||
name: build-macos
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- "src/*.go"
|
||||
- "src/go.mod"
|
||||
- "src/go.sum"
|
||||
- "VERSION"
|
||||
branches:
|
||||
- main
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-14
|
||||
runs-on: macos-15
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '>1.18'
|
||||
go-version: '>=1.24'
|
||||
check-latest: true
|
||||
cache: false
|
||||
|
||||
|
@ -40,19 +40,43 @@ jobs:
|
|||
env:
|
||||
CGO_ENABLED: 1
|
||||
|
||||
- name: Package as .app
|
||||
- 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
|
||||
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
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: build-macos
|
||||
path: |
|
||||
Picocrypt.zip
|
||||
Picocrypt.dmg
|
||||
if-no-files-found: error
|
||||
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 }}`
|
||||
|
|
56
.github/workflows/build-windows.yml
vendored
56
.github/workflows/build-windows.yml
vendored
|
@ -1,26 +1,26 @@
|
|||
name: build-windows
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- "src/*.go"
|
||||
- "src/go.mod"
|
||||
- "src/go.sum"
|
||||
- "VERSION"
|
||||
branches:
|
||||
- main
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-2022
|
||||
runs-on: windows-2025
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '>1.18'
|
||||
go-version: '>=1.24'
|
||||
check-latest: true
|
||||
cache: false
|
||||
|
||||
|
@ -35,25 +35,25 @@ jobs:
|
|||
go build -v -ldflags="-s -w -H=windowsgui -extldflags=-static" -o 1.exe Picocrypt.go
|
||||
env:
|
||||
CGO_ENABLED: 1
|
||||
GOAMD64: v2
|
||||
GOAMD64: v1
|
||||
|
||||
- name: Add icon, manifest, and version info
|
||||
shell: pwsh
|
||||
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
|
||||
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,`""
|
||||
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,`""
|
||||
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,`""
|
||||
Start-Sleep -Seconds 10
|
||||
Start-Sleep -Seconds 30
|
||||
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"
|
||||
Start-Sleep -Seconds 10
|
||||
Start-Sleep -Seconds 30
|
||||
env:
|
||||
P: "C:\\Program Files (x86)\\Resource Hacker\\ResourceHacker.exe"
|
||||
|
||||
|
@ -68,6 +68,30 @@ jobs:
|
|||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: build-windows
|
||||
path: src/Picocrypt.exe
|
||||
path: src/*.exe
|
||||
if-no-files-found: error
|
||||
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
21
.github/workflows/close-issues.yml
vendored
Normal 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 }}
|
71
.github/workflows/pr-test-build-linux.yml
vendored
Normal file
71
.github/workflows/pr-test-build-linux.yml
vendored
Normal 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
|
57
.github/workflows/pr-test-build-macos.yml
vendored
Normal file
57
.github/workflows/pr-test-build-macos.yml
vendored
Normal 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
|
70
.github/workflows/pr-test-build-windows.yml
vendored
Normal file
70
.github/workflows/pr-test-build-windows.yml
vendored
Normal 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
2
.gitignore
vendored
|
@ -20,3 +20,5 @@
|
|||
# Go workspace file
|
||||
go.work
|
||||
go.work.sum
|
||||
|
||||
TODO
|
||||
|
|
|
@ -1 +1,4 @@
|
|||
.github/workflows/* @HACKERALERT
|
||||
VERSION @HACKERALERT
|
||||
CODEOWNERS @HACKERALERT
|
||||
src/* @HACKERALERT
|
||||
|
|
72
Changelog.md
72
Changelog.md
|
@ -1,6 +1,74 @@
|
|||
# Future
|
||||
# v1.48 (Released 04/18/2025)
|
||||
<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>
|
||||
|
||||
# v1.34 (Released 04/29/2024)
|
||||
|
|
68
README.md
68
README.md
|
@ -10,35 +10,39 @@ Picocrypt is a very small (hence <i>Pico</i>), very simple, yet very secure encr
|
|||
<br>
|
||||
<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
|
||||
**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.
|
||||
|
||||
## 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.
|
||||
|
||||
<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>
|
||||
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.
|
||||
|
||||
## 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
|
||||
```
|
||||
Note that Picocrypt requires OpenGL, and may not work in the future if Apple removes it.
|
||||
|
||||
## 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 should you use Picocrypt instead of VeraCrypt, 7-Zip, BitLocker, or Cryptomator? Here are a few reasons why you should choose Picocrypt:
|
||||
<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 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>
|
||||
|
@ -65,7 +69,7 @@ Here's how Picocrypt compares to other popular encryption tools.
|
|||
| Reed-Solomon |✅ Yes |❌ No |❌ No |❌ No |❌ No |
|
||||
| Compression |✅ Yes |❌ No |✅ Yes |✅ Yes |❌ No |
|
||||
| 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.
|
||||
|
||||
|
@ -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.
|
||||
<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>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>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>
|
||||
|
@ -87,7 +91,9 @@ While being simple, Picocrypt also strives to be powerful in the hands of knowle
|
|||
</ul>
|
||||
|
||||
# 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
|
||||
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.
|
||||
|
||||
# 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>
|
||||
<li>donor39 (backer)</li>
|
||||
<li>Pokabu (backer)</li>
|
||||
<li>akp (backer)</li>
|
||||
<li>Marvin (backer)</li>
|
||||
<li>Kenichi Nakasaka (backer)</li>
|
||||
<li>EN (backer)</li>
|
||||
<li>JC (backer)</li>
|
||||
<li>Guest ($842)</li>
|
||||
<li>YellowNight ($818)</li>
|
||||
<li><strong>Mikołaj ($1674)</strong></li>
|
||||
<li><strong>Guest ($842)</strong></li>
|
||||
<li><strong>YellowNight ($818)</strong></li>
|
||||
<li>Incognito ($135)</li>
|
||||
<li>akp ($98)</li>
|
||||
<li>JC ($90)</li>
|
||||
<li>evelian ($50)</li>
|
||||
<li>jp26 ($50)</li>
|
||||
<li>guest-116103ad ($50)</li>
|
||||
<li>Guest ($27)</li>
|
||||
<li>Gittan Pade ($25)</li>
|
||||
<li>Pokabu ($20)</li>
|
||||
<li>oli ($20)</li>
|
||||
<li>Bright ($20)</li>
|
||||
<li>Incognito ($20)</li>
|
||||
<li>Guest ($20)</li>
|
||||
<li>JokiBlue ($20)</li>
|
||||
<li>Guest ($20)</li>
|
||||
<li>Markus ($15)</li>
|
||||
<li>EN ($15)</li>
|
||||
<li>Guest ($13)</li>
|
||||
<li>Tybbs ($10)</li>
|
||||
<li>N. Chin ($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>Guest ($10)</li>
|
||||
</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:
|
||||
<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>@AsuxAX and @Minibus93 for testing new features</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>
|
||||
|
|
1
VERSION
Normal file
1
VERSION
Normal file
|
@ -0,0 +1 @@
|
|||
1.48
|
9
dist/flatpak/io.github.picocrypt.Picocrypt.desktop
vendored
Normal file
9
dist/flatpak/io.github.picocrypt.Picocrypt.desktop
vendored
Normal 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;
|
45
dist/flatpak/io.github.picocrypt.Picocrypt.metainfo.xml
vendored
Normal file
45
dist/flatpak/io.github.picocrypt.Picocrypt.metainfo.xml
vendored
Normal 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>
|
6
dist/windows/versioninfo.rc
vendored
6
dist/windows/versioninfo.rc
vendored
|
@ -1,6 +1,6 @@
|
|||
1 VERSIONINFO
|
||||
FILEVERSION 1,0,0,0
|
||||
PRODUCTVERSION 1,0,0,0
|
||||
FILEVERSION 1,48,0,0
|
||||
PRODUCTVERSION 1,48,0,0
|
||||
FILEOS 0x40004
|
||||
FILETYPE 0x1
|
||||
{
|
||||
|
@ -8,7 +8,7 @@ BLOCK "StringFileInfo"
|
|||
{
|
||||
BLOCK "040904B0"
|
||||
{
|
||||
VALUE "FileVersion", "nightly"
|
||||
VALUE "FileVersion", "1.48"
|
||||
VALUE "LegalCopyright", "\xA9 Evan Su & contributors, GPLv3"
|
||||
VALUE "ProductName", "Picocrypt"
|
||||
}
|
||||
|
|
1265
src/Picocrypt.go
1265
src/Picocrypt.go
File diff suppressed because it is too large
Load diff
26
src/go.mod
26
src/go.mod
|
@ -1,21 +1,21 @@
|
|||
module Picocrypt
|
||||
|
||||
go 1.17
|
||||
go 1.24.2
|
||||
|
||||
require (
|
||||
github.com/HACKERALERT/dialog v0.0.0-20220508022504-af3bc34fe379
|
||||
github.com/HACKERALERT/giu v0.5.7-0.20240618030735-f3076d5b31c1
|
||||
github.com/HACKERALERT/imgui-go v1.12.1-0.20240618030615-ca96a19d1498
|
||||
github.com/HACKERALERT/infectious v0.0.0-20240622035800-1b100aa35681
|
||||
github.com/HACKERALERT/serpent v0.0.0-20210716182301-293b29869c66
|
||||
github.com/HACKERALERT/zxcvbn-go v0.0.0-20220508022013-fa924b767f89
|
||||
golang.org/x/crypto v0.24.0
|
||||
github.com/Picocrypt/dialog v0.0.0-20250412233924-78f7b909315b
|
||||
github.com/Picocrypt/giu v0.0.0-20250412235908-fe90a482e6f2
|
||||
github.com/Picocrypt/imgui-go v0.0.0-20250412235405-d86b230f5fbb
|
||||
github.com/Picocrypt/infectious v0.0.0-20250412183341-9f88c6307b39
|
||||
github.com/Picocrypt/serpent v0.0.0-20240830233833-9ad6ab254fd7
|
||||
github.com/Picocrypt/zxcvbn-go v0.0.0-20250412183938-d59695960527
|
||||
golang.org/x/crypto v0.37.0
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/HACKERALERT/gl v0.0.0-20220507232930-73af36e130d3 // indirect
|
||||
github.com/HACKERALERT/glfw/v3.3/glfw v0.0.0-20221117222155-c08d79e41abe // indirect
|
||||
github.com/HACKERALERT/mainthread v0.0.0-20211027212305-2ec9e701cc14 // indirect
|
||||
github.com/HACKERALERT/w32 v0.0.0-20220507231852-76f2a4b526bd // indirect
|
||||
golang.org/x/sys v0.21.1-0.20240613073215-348425aa18d7 // indirect
|
||||
github.com/Picocrypt/gl v0.0.0-20250412234430-767b58dbf936 // indirect
|
||||
github.com/Picocrypt/glfw/v3.3/glfw v0.0.0-20250412234750-7b96bfdb8dd8 // indirect
|
||||
github.com/Picocrypt/mainthread v0.0.0-20240831004314-496f638392b3 // indirect
|
||||
github.com/Picocrypt/w32 v0.0.0-20240831001500-1183079d4d57 // indirect
|
||||
golang.org/x/sys v0.32.0 // indirect
|
||||
)
|
||||
|
|
110
src/go.sum
110
src/go.sum
|
@ -1,86 +1,24 @@
|
|||
github.com/HACKERALERT/dialog v0.0.0-20220508022504-af3bc34fe379 h1:GR92LbksZ8zdbzQHf2dTI7e7P8Mjbdi5mSmQv2SK2Uw=
|
||||
github.com/HACKERALERT/dialog v0.0.0-20220508022504-af3bc34fe379/go.mod h1:V0Gv8EvnwHTFk9TOZiHlYlXcUnVHoXJazNW0pVKZnkY=
|
||||
github.com/HACKERALERT/giu v0.5.7-0.20240618030735-f3076d5b31c1 h1:7f6kRm9/jdGmGBHvruWNu0btw963sk6FnELc/xaPUMs=
|
||||
github.com/HACKERALERT/giu v0.5.7-0.20240618030735-f3076d5b31c1/go.mod h1:rhkMC6vbLSyHFAJ5L+bUcDH0S8KMN+kCk9JMXYrm/tY=
|
||||
github.com/HACKERALERT/gl v0.0.0-20220507232930-73af36e130d3 h1:JMAOkmVuuJKjFAVeK+P7i3F/bVSCTU1UUmaxaYTYs9Q=
|
||||
github.com/HACKERALERT/gl v0.0.0-20220507232930-73af36e130d3/go.mod h1:ZUosVzfEKNGLMLk6aj9yo0FSAhWWsbTMjuzeIUXniB0=
|
||||
github.com/HACKERALERT/glfw/v3.3/glfw v0.0.0-20221117222155-c08d79e41abe h1:0qOalSxn46hXG9xwfZkaTuUs5smQQ3X5v7p89HHzkEg=
|
||||
github.com/HACKERALERT/glfw/v3.3/glfw v0.0.0-20221117222155-c08d79e41abe/go.mod h1:aP+FSN9tk1W3UsQisFWxRLQ4WOF7T3niq68UYw0B150=
|
||||
github.com/HACKERALERT/imgui-go v1.12.1-0.20240618030615-ca96a19d1498 h1:OQhT4waqtsFHRNZYUN4KgciUiryXIOiAyplXWXItTYY=
|
||||
github.com/HACKERALERT/imgui-go v1.12.1-0.20240618030615-ca96a19d1498/go.mod h1:rWUHB5suv9NAmQJa/Px9ds1D0wT/QD70CPYUqc6rqsM=
|
||||
github.com/HACKERALERT/infectious v0.0.0-20240622035800-1b100aa35681 h1:LOILOeWljaUZyXLpJrfY3F2F+YiXKcv867b/35SB1JQ=
|
||||
github.com/HACKERALERT/infectious v0.0.0-20240622035800-1b100aa35681/go.mod h1:ZGuTcvIkN3f3CPe2PmI4hqVfKD/253FCvrQGDJ+Ca9E=
|
||||
github.com/HACKERALERT/mainthread v0.0.0-20211027212305-2ec9e701cc14 h1:DwWXverhu/dEsPM/GPykuHGh4SxW69DaGZL5t3fANG4=
|
||||
github.com/HACKERALERT/mainthread v0.0.0-20211027212305-2ec9e701cc14/go.mod h1:jW534e7roGur9mmzAfPxZLQzKXZ+GE5+XeS7PSyqPbo=
|
||||
github.com/HACKERALERT/serpent v0.0.0-20210716182301-293b29869c66 h1:YDpFq+y6mRcu97rn/rhYg8u8FdeO0wzTuLgM2gVkA+c=
|
||||
github.com/HACKERALERT/serpent v0.0.0-20210716182301-293b29869c66/go.mod h1:d/+9q3sIxtIyOgHNgFGr3yGBKKVn5h3vL4hV1qlmoLs=
|
||||
github.com/HACKERALERT/w32 v0.0.0-20220507231852-76f2a4b526bd h1:d3JLIGBs+ZLdnkjg1ksomAywpHEFhldCaVbNzz7R6uY=
|
||||
github.com/HACKERALERT/w32 v0.0.0-20220507231852-76f2a4b526bd/go.mod h1:S+3Ad2AEm5MhhuHJeAaXUmyAXON0qFDxcP/Chw8q7+Y=
|
||||
github.com/HACKERALERT/zxcvbn-go v0.0.0-20220508022013-fa924b767f89 h1:mbKV9C7z0N7bGeKKxfKCRvN8snWvGVj+NOm38F3y5Uk=
|
||||
github.com/HACKERALERT/zxcvbn-go v0.0.0-20220508022013-fa924b767f89/go.mod h1:nykydiYjCDMkF/2vQXSPM38vR5N9W1DITHvupnN+eOk=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
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=
|
||||
github.com/Picocrypt/dialog v0.0.0-20250412233924-78f7b909315b h1:k5YGEx61N6K8l2l6AQ1u5W2aR+47sVZWFyqXS/f5lIA=
|
||||
github.com/Picocrypt/dialog v0.0.0-20250412233924-78f7b909315b/go.mod h1:OyaP0Tz19qL3RAGq5Ntues+WVrIbHh5MrfqoA/qhqeg=
|
||||
github.com/Picocrypt/giu v0.0.0-20250412235908-fe90a482e6f2 h1:SPR2efZTpZJON/2mNifLi68Gl9Epxh/1nXb3kGGHCcg=
|
||||
github.com/Picocrypt/giu v0.0.0-20250412235908-fe90a482e6f2/go.mod h1:jd6AonK0ZI02R7GqLWb4gWJz/A2ClF36Y4fFMR8Lzbk=
|
||||
github.com/Picocrypt/gl v0.0.0-20250412234430-767b58dbf936 h1:6MChjQ4AZC2ISBjbgZU/z6tSUxYP50NkRvAu0T2kjlY=
|
||||
github.com/Picocrypt/gl v0.0.0-20250412234430-767b58dbf936/go.mod h1:pMdf3io/y3I+zYZ6/xFb3MlI2AgL38enDDIKuR0n2qA=
|
||||
github.com/Picocrypt/glfw/v3.3/glfw v0.0.0-20250412234750-7b96bfdb8dd8 h1:i8wXJhSYIJTXb6sqBS6JZW7QosI9u8Ysy1BHZCTuZEc=
|
||||
github.com/Picocrypt/glfw/v3.3/glfw v0.0.0-20250412234750-7b96bfdb8dd8/go.mod h1:cX5N2TrX03DC5i5eplxopglDue/vHDs+6Ng9G9uItaI=
|
||||
github.com/Picocrypt/imgui-go v0.0.0-20250412235405-d86b230f5fbb h1:0XMtv2CXx3QvC9ikeH43fJl6ql8j5EsnaiOqhsToFnY=
|
||||
github.com/Picocrypt/imgui-go v0.0.0-20250412235405-d86b230f5fbb/go.mod h1:N+NVTIIMz6icYltvaKHMvmVIllZDYUyscJ8wpcLKDZ4=
|
||||
github.com/Picocrypt/infectious v0.0.0-20250412183341-9f88c6307b39 h1:czHyPoiNrILv9xjfQ87UFllJgak8W6gVcYkmfOay/BE=
|
||||
github.com/Picocrypt/infectious v0.0.0-20250412183341-9f88c6307b39/go.mod h1:2ZVEanURxuWmxYZ6W6xMMy4ZR6xmQr16Vq/XPTLIspQ=
|
||||
github.com/Picocrypt/mainthread v0.0.0-20240831004314-496f638392b3 h1:a62XmbZYhHGDR15C1gxp/IPfJX5SflrJuGpqNoOOK7w=
|
||||
github.com/Picocrypt/mainthread v0.0.0-20240831004314-496f638392b3/go.mod h1:bsUKeX+/53rCTrItl3YUaeaN5tXl1v6326ZI90xIOsc=
|
||||
github.com/Picocrypt/serpent v0.0.0-20240830233833-9ad6ab254fd7 h1:G36G2vmQAS7CVoHQrHDGAoCWll/0kPCI8Dk7mgwcJFE=
|
||||
github.com/Picocrypt/serpent v0.0.0-20240830233833-9ad6ab254fd7/go.mod h1:BxsgRYwUVd92aEwXnXsfXfHw8aHlD/PUyExC/wwk9oI=
|
||||
github.com/Picocrypt/w32 v0.0.0-20240831001500-1183079d4d57 h1:jusSXTp0h5wz8lxNXStw0jXr/ogZF6rzRF8gu0534hA=
|
||||
github.com/Picocrypt/w32 v0.0.0-20240831001500-1183079d4d57/go.mod h1:FkeZHdKlITdP34VknO8yLdRY5pCi+iWEhDSA0YsBhZc=
|
||||
github.com/Picocrypt/zxcvbn-go v0.0.0-20250412183938-d59695960527 h1:IqypAzv5COsByMhiSdwlgafA5SBRG7Z0binnBSo3htM=
|
||||
github.com/Picocrypt/zxcvbn-go v0.0.0-20250412183938-d59695960527/go.mod h1:u0rcUNEwy7st1DnPxdOJdTsh0aSRhrdMOxlIGrXR1Ls=
|
||||
golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
|
||||
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
|
||||
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
|
||||
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
|
|
Loading…
Add table
Reference in a new issue