Commit graph

157 commits

Author SHA1 Message Date
Aron Wussler
47534e9288 Upgrade go crypto and adapt SEIPD 2023-01-25 14:42:41 +01:00
M. Thiercelin
eccc1df619
Add streaming APIs to encrypt with compression 2023-01-24 17:44:07 +01:00
M. Thiercelin
2b9d76708a Size checks not needed in linebreaks unit tests 2022-11-18 15:33:31 +01:00
M. Thiercelin
76b77258e3 Add tests for encrypring text with non canonical line ends 2022-11-18 15:33:31 +01:00
Daniel Huigens
b189309152 Don't trim trailing spaces from non-clearsigned text messages 2022-11-18 15:33:31 +01:00
M. Thiercelin
bae54f7e83 Check signature types in unit tests 2022-11-17 17:28:55 +00:00
Daniel Huigens
b90e70daa4 Detached sign text messages with signature type text 2022-11-16 14:21:39 +01:00
M. Thiercelin
4971d78a53
Sanitize strings by default on all platforms.
Instead of sanitizing strings only on iOS, we do it on all platforms.
2022-11-03 12:32:20 +01:00
M. Thiercelin
a2fd1c6a3b
Sanitize non utf8 strings before returning them to iOS apps
In swift, strings must be strictly utf8, and when golang
returns a string with non utf8 characters, it gets translated to
an empty string for utf8.
To avoid this situation, we sanitize strings before returning them.
This behavior is only enabled when building with the "ios" build tag.
2022-11-03 12:31:05 +01:00
Aron Wussler
a065bf20b0 Update go-crypto 2022-08-19 11:20:08 +02:00
Martin
1791c07702
[codespell] Fix typos (#190) 2022-07-11 10:27:59 +02:00
M. Thiercelin
373e1ad526
Add unit tests for decryption of aead packets 2022-06-14 16:49:16 +02:00
M. Thiercelin
4cea9a0940
Decrypt AEAD encrypted data packets with a session key
Adds the support to decrypt AEAD encrypted data packets
when decrypting the data packet with a session key directly.
2022-06-14 16:10:25 +02:00
Aron Wussler
fee9ec19fd Improve golang CI 2022-05-17 17:06:18 +02:00
Aron Wussler
f5803d148d Do not return error on empty name or email key generation 2022-04-26 10:21:28 +02:00
marinthiercelin
2f59f6414f Return decrypted PGP/MIME content with wrong signatures
When the PGP/MIME decryption encounters a signature verification error, it will keep decrypting the content
and return it in the appropriate callbacks.
This allows the caller to choose to display the content with a warning rather than just returning an error.
2022-04-25 16:00:28 +02:00
M. Thiercelin
b54b5f4d6d
Fix test data for PGP/MIME tests
We update the test data for the PGP/MIME unit tests.
For a PGP/MIME signature to be valid, it must be done on the canonical text
and not the raw text.
2022-03-17 10:31:09 +01:00
M. Thiercelin
5c5666eaa1
Canonicalize PGP/MIME content before verifying signatures
Before verifying signatures of PGP/MIME messages we need to canonicalize
the content
2022-03-17 10:17:34 +01:00
wussler
53010fdee7
Update crypto/message.go 2022-03-01 09:14:38 +01:00
Daniel Huigens
e1f6ea603a Create SplitMessage() to replace SeparateKeyAndData(...int)
Keep SeparateKeyAndData(_ int, _ int) for backwards compatibility
with go-mobile bindings.
Deprecate SeparateKeyAndData in favor of SplitMessage.
2022-02-28 18:50:01 +01:00
Daniel Huigens
ff97844785 Clone data when splitting messages 2022-02-28 12:26:01 +01:00
Aron Wussler
3a65fb8dbb Fix bad MDC messages parsing 2022-02-24 19:20:15 +01:00
Aron Wussler
6799f1e8ce Fix linter 2022-02-15 11:57:30 +01:00
Daniel Huigens
7103bdf2a5 Generic implementation of splitting messages 2022-02-15 11:32:32 +01:00
Daniel Huigens
682166d9e3 Fix attachment processor error handling 2022-02-11 16:14:28 +01:00
marin thiercelin
1a2e569373
Fix parsing issue of AEAD encrypted messages.
In pgpMessage.SeparateKeyAndData(), the parsing would
ignore AEAD encrypted data packets. Which would result
in a split message with a nil data packet.
We add support for AEAD encrypted data packets.
This also affects `NewPGPSplitMessageFromArmored` and `NewPGPSplitMessage`.
2022-01-10 14:24:08 +01:00
marin thiercelin
6f86adc432
Add keyRing.GetVerifiedSignatureTimestamp()
Add a function to verify a detached signature and access
its creation time.
2021-12-21 10:02:23 +01:00
wussler
18bc6a059c
Apply suggestions from code review 2021-12-15 11:28:45 +01:00
marin thiercelin
e2f03af655
Fix verification of signature for PGP/MIME messages
We fix the verification of embedded and PGM/MIME signatures
when decrypting PGP/MIME messages.
2021-12-15 11:01:04 +01:00
Aron Wussler
130472d5a5 Release 2.3.0: Update go-crypto, add Key.IsRevoked and fix key.IsExpired 2021-11-15 15:46:42 +01:00
Aron Wussler
24a754d34a Fix linter 2021-11-11 17:03:40 +01:00
Aron Wussler
1db1b41588 Fix unlocking and locking keys 2021-11-11 16:36:44 +01:00
Carlos Quintana
2118a0e776
Lint fixes 2021-10-19 09:06:09 +02:00
Carlos Quintana
c406b182bb
Replace Mutex with RWMutex 2021-10-19 08:09:59 +02:00
Carlos Quintana
9f25490f61
Lock global gopenpgp fields 2021-10-18 11:40:58 +02:00
marin thiercelin
5558d4a177
Fix: use verifyTime in the config time instead of Now()
When decrypting message, we have to use verifyTime in the config
otherwise signatures not valid at verifyTime but valid at Now()
will be seen as valid.
2021-09-23 17:14:19 +02:00
Aron Wussler
dcd95f3e5b Fix linter 2021-09-21 11:34:17 +02:00
Aron Wussler
64c051f0d9 Generate keys with compression & release 2.2.3 2021-09-21 11:20:36 +02:00
Aron Wussler
e0531b779c Add NewKeyFromEntity 2021-08-04 12:04:20 +02:00
Aron Wussler
26dd18cf42 Add documentation for messages 2021-08-03 20:55:03 +02:00
wussler
abf7e6f86a
Merge branch 'master' into master 2021-07-30 14:39:28 +02:00
Aron Wussler
5904ff3d70 Add static malformed key test 2021-07-30 13:01:23 +02:00
Aron Wussler
b50a051c7e Deprecate Key#Check() 2021-07-30 11:20:38 +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
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
larabr
cd4adae9f2
Update error messages in passwordDecrypt (#124) 2021-07-05 10:42:18 +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
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