Commit graph

231 commits

Author SHA1 Message Date
wussler
abf7e6f86a
Merge branch 'master' into master 2021-07-30 14:39:28 +02:00
wussler
a5fa9e21f3
Merge pull request #97 from ProtonMail/deprecate-check
Deprecate Key#Check()
2021-07-30 14:37:13 +02:00
Aron Wussler
5904ff3d70 Add static malformed key test 2021-07-30 13:01:23 +02:00
Aron Wussler
48d4852e6a Improve readme 2021-07-30 12:28:03 +02:00
Aron Wussler
b50a051c7e Deprecate Key#Check() 2021-07-30 11:20:38 +02:00
wussler
dc08a383a1
Merge pull request #140 from ProtonMail/release-2.2.1
Release version 2.2.1
2021-07-27 14:33:55 +02:00
Aron Wussler
44016a15c4 Release version 2.2.1 2021-07-27 12:55:10 +02:00
Hendrik 'T4cC0re' Meyer
c5a8b1f2f7 Disregard GNU dummy subkeys when checking (un)locked state and unlocking a crypto.Key
Because a GNU dummy key has a `PrivateKey` property, the existing check will
count it as a key to be decrypted. However, a `Decrypt` call on such key will
then yield an error, as it is a dummy key.

This commit addresses this behaviour by summing all valid decrpytable private
keys and returning on their count.
Further, it adapts `Unlock` to ignore any dummy subkey.

Fixes #138
2021-07-18 22:45:18 +02:00
wussler
126388e321
Merge pull request #137 from ProtonMail/feat/explicit-stream-verify
Add a wrapper for explicit verification of decrypted streams.
2021-07-16 13:29:53 +02:00
marin thiercelin
77df8cba3d
Fix signature status when verifying unsigned message
Return `SIGNATURE_NOT_SIGNED` instead of `SIGNATURE_NO_VERIFIER` when
verifying a messages with no embedded signatures.
2021-07-16 12:17:18 +02:00
marin thiercelin
f4ccc63c40
Add a helper to verify stream signatures explicitly
Adds the helper `VerifySignatureExplit()` to get an explicit `SignatureVerificationError`
when verifying a `PlainMessageReader`. This is needed for mobile apps, that
can't cast an error to a signature error.
2021-07-16 12:16:33 +02:00
larabr
cd4adae9f2
Update error messages in passwordDecrypt (#124) 2021-07-05 10:42:18 +02:00
wussler
cba6683c62
Release v2.2.0 (#135) 2021-06-30 17:07:52 +02:00
marinthiercelin
c46ed8ed9e
Add a streaming api to KeyRing and SessionKey (#131)
* barebone streaming functionality

* encryption needs to return a writecloser

* added eof check

* workaround for reader problem with copies

* separate mobile wrappers from main api

* add a clone in the read result to avoid memory corruption

* refactor to reuse code, and fix verification

* have to give the verify key at the start of the decryption

* enfore readAll before signature verification

* streaming api for SessionKey

* add split message stream apis

* name interface params

* fix streaming api so it's supported by go-mobile

* hide internal writeCloser

* fix nil access

* added detached sigs methods

* started unit testing

* unit testing and fixed a bug where key and data packets where inverted

* remove unecessary error wrapping

* figured out closing order and error handling

* add GC calls to mobile writer and reader

* remove debugging values and arrays

* writer with builtin sha256

* unit testing the mobile helpers

* comments and linting

* Typo in error

Co-authored-by: wussler <aron@wussler.it>

* Add GetKeyPacket doc

Co-authored-by: wussler <aron@wussler.it>

* Add rfc reference in comments

Co-authored-by: wussler <aron@wussler.it>

* small improvements

* add compatibility tests with normal methods

* remove unecessary copies in the tests

* update go-crypto to the merged changes commit

* update comments of core internal functions

* remove unused nolint comment

* group message metadata in a struct

* fix comments

* change default values for metadata

* change the mobile reader wrapper to fit the behavior of java

* remove gc calls in the wrappers to avoid performance penalties

* bring back the former Go2MobileReader to be used for ios

* Update crypto/keyring_streaming.go

Co-authored-by: wussler <aron@wussler.it>

* return an error when verifying an embedded sig with no keyring

* Update crypto/sessionkey_streaming.go

Co-authored-by: wussler <aron@wussler.it>

* linter error

* update changelog

* update changelog

Co-authored-by: wussler <aron@wussler.it>
2021-06-30 16:49:30 +02:00
wussler
7380f7391f
Refactor internals of client time (#134) 2021-06-16 17:24:25 +02:00
wussler
039f757e93
Remove monotonic clock (#133) 2021-06-16 14:06:07 +02:00
wussler
0e109ca7ce
Release version 2.1.9 (#132) 2021-05-12 10:08:19 +02:00
Daniel Huigens
9126511a96
Update go-crypto (#129)
* Update go-crypto

* Edit changelog

Co-authored-by: Aron Wussler <aron@wussler.it>
2021-04-28 18:33:14 +02:00
Aron Wussler
38a773b9aa Release version 2.1.8 2021-04-27 17:40:13 +02:00
wussler
c19faed5da
Add methods for embedded signatures using session keys (#128)
* Add methods to sign when using session keys

* Add mobile helpers for explicit decryption

* Add functions to CHANGELOG

* Fix linter
2021-04-27 17:38:25 +02:00
Aditya Wasan
3dd1711707
Add methods to get key capabilities (#125)
* Add methods to get key capabilities

Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>

* Use correct indetity to check for flags

Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>

* Fix lint

Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>

* Remove CanCertify and update CanSign to use SigningKey

Signed-off-by: GitHub <noreply@github.com>

* keyring: implement CanSign and CanEncrypt

Signed-off-by: GitHub <noreply@github.com>

* key/keyring: add tests for key capabilities

Signed-off-by: GitHub <noreply@github.com>

* Apply suggestions from code review

Renames CanSign to CanVerify and adds an extended test for public-only keys to confirm CanVerify is true for them.

Co-authored-by: wussler <aron@wussler.it>

Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
Co-authored-by: wussler <aron@wussler.it>
2021-04-09 12:32:10 +02:00
wussler
80b9a7aca2
Release 2.1.7 (#123) 2021-03-30 12:06:50 +02:00
wussler
934571ce56
Fix AES tests for helpers (#122) 2021-03-30 11:46:32 +02:00
marinthiercelin
973856d299
Add new attachment processor that uses pre-allocated buffer (#120) 2021-03-29 20:46:47 +02:00
marinthiercelin
b5823b9dee
Update to go 1.16 for mobile builds (#121)
* modified build script to work with updated fork of go-mobile

* changed spacing and added trace for easier debugging

* fixed issue with user input overwritten

* removed mentions of make

* use go 1.16 in builds

* disabled some linters

* updated change log

Co-authored-by: wussler <aron@wussler.it>
2021-03-29 16:29:34 +02:00
wussler
7b16cf94c8
Release 2.1.6 (#119) 2021-03-17 16:54:47 +01:00
Daniel Huigens
32842f4135 Update go-crypto 2021-03-17 14:29:41 +01:00
wussler
ff54225384
Fix various keys issues (#117)
* Fix armouring headers for public keys
* Fix error for session key decryption failure
2021-03-09 19:06:35 +01:00
wussler
27efcb4627
WIP: Add tests for attachments (#116)
* Add tests for attachments

* Fix CI

* Use go 1.15 for mobile
2021-03-08 17:59:03 +01:00
wussler
72062c4925
Release version 2.1.5 (#115) 2021-02-19 15:32:39 +01:00
marinthiercelin
cea3d0da4d
Removed the cloning of the final data in the attachment processor (#114)
* removed the cloning of the final data in the attachment processor

* fix linter
2021-02-19 14:54:31 +01:00
wussler
681ceb0546
Release v2.1.4 (#110)
* Release v2.1.4

* Loosen linter
2021-01-08 18:37:56 +01:00
marinthiercelin
e0deea82a3
add signcryption methods to the keyrings (#109)
* add signcryption methods to the keyrings

* added signing and verifying keyrings

* added nil checks

* added unit test for signcrypt

* updated changelog

* switched the keyrings in the api

* update the error messages

* changed the names of the keyRing variable
2020-12-17 12:58:25 +01:00
wussler
a42d48a203
Release 2.1.3 (#108) 2020-12-09 15:57:44 +01:00
marinthiercelin
2a4ac0999b
Change gomobile fork to use the github.com/ProtonMail/go-mobile fork (#107)
* changed the go-mobile fork to use PM's fork

* changed build dir in build.sh

* changed the build dir so we need to change the upload source

* fix syntax err in github action

* fixed the error with the new build dir

* added the java package flag for android builds

* removed the other go-mobile forks from the go.sum

Co-authored-by: marin thiercelin <marin.thiercelin@pm.me>
2020-12-09 10:03:39 +01:00
Daniel Huigens
71d595a366 Update changelog 2020-12-08 19:18:53 +01:00
Daniel Huigens
d0daa53ca6
Update x/crypto fork to github.com/ProtonMail/go-crypto (#106) 2020-12-08 18:34:39 +01:00
wussler
6105a3bcc0
Improve attachment memory allocation (#105)
* Improve attachment memory allocation

* added explicit garbage collection

* redundant GC

* added GCs in attachment processor and a FreeOSMemory helper

* added changelog

* linting

* Remove commented call to debug.FreeOSMemory

Co-authored-by: marin thiercelin <marin.thiercelin@pm.me>
Co-authored-by: marinthiercelin <marin.thiercelin@epfl.ch>
2020-12-08 17:52:50 +01:00
wussler
75f27fd1df
Add key generation offset (#104)
* Add key generation offset

* Bump version to 2.1.2
2020-12-01 19:44:49 +01:00
wussler
385e6d21d2
Drop regex for canonicalization (#102)
* Drop regex for canonicalization

* Fix CI
2020-12-01 18:09:25 +01:00
wussler
5b1a42c2cd
Release v2.1.1 (#100) 2020-11-16 09:51:51 +01:00
wussler
4166d25a63
Allow multiple keypackets in session key decryption (#99)
* Fix session key decryption

* Break on all data packets

Co-authored-by: Daniel Huigens <d.huigens@protonmail.com>
2020-11-13 14:13:11 +01:00
Daniel Huigens
f8d9ba516a Update ProtonMail/crypto 2020-11-12 13:53:46 +01:00
wussler
8a9f9f8fa9
Release version 2.1.0 (#96) 2020-11-04 17:49:30 +01:00
wussler
371d429001
WIP: Add compression to API (#91)
* Add compression to API

* Add docs

* Use defaults for a simpler interface

* Update x/crypto

* Fix ecdsa key types for lib update
2020-11-04 17:40:45 +01:00
marinthiercelin
9503b68f0c
Update the changelog with new helpers description (#93)
Co-authored-by: marin thiercelin <marin.thiercelin@pm.me>
2020-10-29 17:00:34 +01:00
marinthiercelin
062cca9201
Added helpers with encrypted signatures and unarmored binary ciphertexts (#83)
* added signcryption for binary ciphertexts

* fixing merge issues

* removed newlines before error handling

Co-authored-by: marin thiercelin <marin.thiercelin@pm.me>
2020-10-29 14:20:39 +01:00
wussler
53a85837e0
Improve error handling, fix linter (#92)
* Improve error handling, fix linter
2020-10-29 12:42:32 +01:00
wussler
6b2ac0b11c
Migrate CI to actions, build artifacts (#89)
* Create go workflow

* Delete travis config

* Update build script

* Create apple workflow

* Create android workflow

Co-authored-by: marin thiercelin <marin.thiercelin@pm.me>
2020-10-19 10:07:25 +02:00
wussler
d53bd4a351
Move getters to file excluded from android build (#88) 2020-10-14 18:28:12 +02:00