Commit graph

373 commits

Author SHA1 Message Date
wussler
64b3b45404
Fix mixed symmetric/asymmetric decryption (#77) 2020-09-01 11:07:30 +02:00
wussler
2f89b9fa0e
Add KeyIDs public API functionality (#76)
* Add public KeyIDs functions

* Add signature keyIDs functions

* Lint code
2020-09-01 10:02:13 +02:00
Ilya Chesnokov
1f4d966115
use aes256 for password encryption (#75) 2020-08-31 13:42:06 +03:00
marinthiercelin
39c2fa863e
new helpers for drive decryption (#73)
* new helpers for drive decryption

* modular helper functions and reciprocals

* removed duplicates helper functions

* added mobile wrapper

* unit tests for new helpers

Co-authored-by: wussler <aron@wussler.it>
2020-08-27 17:34:46 +02:00
Ilya Chesnokov
af371097e0
break for cycle in getEncryptionKeyIDs (#74)
break cycle on literal/aead/encrypted/compressed packets
2020-08-26 19:05:06 +03:00
marinthiercelin
475db8b1cb
Correction to README.md (#71) 2020-08-26 11:06:50 +02:00
wussler
fd9e7b40a9
Fix linter on CI (#67) 2020-08-04 11:08:31 +02:00
wussler
b152448673
Convert private to public keys in helpers to prevent locked errors (#66) 2020-08-04 10:04:40 +02:00
wussler
979fdb3f4b
Add ToPublic method to get a public key object from a private key (#65) 2020-07-22 17:13:23 +02:00
dimitar10
48f05401ce
Prevent server time from going backwards in UpdateTime (#64) 2020-07-21 13:42:41 +02:00
wussler
e6a863de49
Update documentation (#63) 2020-07-20 16:49:54 +02:00
wussler
8c04ff64a5
Add session key size check (#62)
* Add session key size check

Co-authored-by: Daniel Huigens <d.huigens@protonmail.com>
2020-07-20 11:43:36 +02:00
Jamie
3b2e53c586
Add binary message helpers (#61)
* Add EncryptBinaryMessageArmored helper function to generate an armored PGP message given binary data and an armored public key

* Add DecryptBinaryMessageArmored helper function to decrypt armored PGP message into binary data

* Streamline the code and fix naming pattern + tests
2020-07-17 09:02:39 +02:00
Ilya Chesnokov
88da5d44b1
Throw error EncryptSessionKey (#60)
* throw error EncryptSessionKey

throw error if one of the keys in keyring does not have valid encryption
key

* add key id to error description
2020-07-15 16:17:49 +07:00
Ilya Chesnokov
b38f993c25
Encrypt session key to multiple keys in keyring. (#59)
`EncryptSessionKey` now creates encrypted key packet for each valid key
in keyring.

Co-authored-by: Aron Wussler <aron@wussler.it>
2020-07-10 00:31:57 +07:00
wussler
a232124b70
Improve changelog descriptions (#56) 2020-07-02 11:22:36 +02:00
Ilya Chesnokov
8d42a53775
Add getEntity and getEcryptionKeyIDs functions to key and message types respectively (#55)
* add getEntity function to key struct

* add getEncryptionKeyIDs

* add chengelog + bool return in getEncryptionKeyIDs

* fix description
2020-07-02 15:55:11 +07:00
klische
d1f6f7d718
Clarify how to decrypt in README (#50) 2020-07-01 13:21:59 +02:00
Daniel Huigens
608bedaaf1
Reject signatures using insecure hash algorithms (#52) 2020-06-25 13:45:59 +02:00
wussler
3e28b51abb
Update CI to use go 1.12 to 1.14 (#51) 2020-06-06 21:28:58 +02:00
zugzwang
dcc82c9fc3
Implement GetArmoredWithCustomHeaders (#48)
* Implement GetArmoredWithCustomHeaders

ArmorWithTypeAndCustomHeaders can be reused by other PGP armoured
objects.

* Update linting, and lint accordingly

`godot` has been improved and `goerr113` has been added (and ignored
here).

* Add custom headers for keys

* Minor comment changes

Co-authored-by: Aron Wussler <aron@wussler.it>
2020-05-06 18:50:18 +02:00
Aron Wussler
b1e005fec3 Release version 2.0.1 2020-05-01 16:53:50 +02:00
Aron Wussler
4e5b29eb4a Fix symmetric session key test 2020-05-01 16:53:50 +02:00
zugzwang
ac8a49c114
Update lint (#44)
* Reduce complexity of SignatureCollector.Accept

* Add stylecheck linter, and lint accordingly

* Rephrase some comments

* godot - Top level comments should end with a dot.

* nestif - Reduce nested complexity of code

* Review changes

Co-authored-by: Aron Wussler <aron@wussler.it>
2020-04-28 13:55:36 +02:00
wussler
222decb919
Fix various minor issues (#45)
* Update header version to 2.0.0

* Add space to cleartext message armouring

* Fix password encrypted binary files

* Clear key private params in helpers

* Do not unlock key if private key is nil

* Document changes

* Use defer for ClearPrivateKeyParams
2020-04-27 21:01:23 +02:00
zugzwang
0f35072bc4
Documentation fixes (#43)
* Fix Comment - NewKeyFromReader

* Trailing whitespace, correct function name

* Update CHANGELOG

* update README

Co-authored-by: zugzwang <talbotvinnik@pm.me>
Co-authored-by: Aron Wussler <aron@wussler.it>
2020-04-25 16:28:07 +02:00
Daniel Huigens
486e1220a1
Update ProtonMail/crypto (#42) 2020-04-25 16:03:49 +02:00
Christopher Waldon
599adb6b2d
doc: update README to use valid go.mod example syntax (#39)
This commit simply uses parenthesis in the example `go.mod` `require` block since curly braces are illegal there. If a potential user copies the text as the basis for starting a new `go.mod`, they'll get cryptic compilation errors.
2020-04-14 15:29:03 +02:00
Daniel Huigens
10a9a0f557
Don't retain references to passed byte slices (#40) 2020-04-08 11:11:16 +02:00
Aron Wussler
9caf737bc7 Add documentation for SHA256 fingerprints 2020-04-07 15:19:48 +02:00
wussler
3c79f40acb
Add SHA256 fingerprint utils and helpers (#41) 2020-04-07 14:59:25 +02:00
wussler
c8b7e87135
Fix test encryption test (#37)
* Fix TestMultipleKeyMessageEncryption

* Fix TestMultipleKeyMessageEncryption - simplify code

* Add diffs to changelog

* Simplify test code further
2020-03-05 22:16:38 +01:00
Aron Wussler
3f33c71496 Improve documentation for checking 2020-01-11 15:31:06 +01:00
Aron Wussler
958f3166e5 Fix examples documentation 2020-01-10 00:53:13 +01:00
Yanfeng Zhang
5c496d0505 Add build script and fix helper for mobile (#32)
* update build and fix helper for mobile

* Update readme, changelog and script cleanup

Co-authored-by: wussler <aron@wussler.it>
2020-01-06 13:21:44 +01:00
wussler
54f45d0471
Openpgp security update (V2) (#31)
* Change keyring unlock functionalities

* Add keyring#Lock, keyring#CheckIntegrity, tests

* Update helpers, fix bugs

* Update go.mod with ProtonMail/crypto commit

* Change key management system

* Clear keys from memory + tests

* Create SessionKey with direct encryption for datapackets. Move symmetrickey to password.

* Fix upstream dependencies

* Update module to V2, documentation

* Add linter

* Add v2 folder to .gitignore

* Minor changes to KeyID getters

* Remove old changelog

* Improve docs, remove compilation script
2019-12-27 19:35:43 +01:00
wussler
136c0a5495
Change time global handling (#29)
* Reverse time

* Change time handling global

* Remove debug functions

* Remove *pgp methods
2019-10-22 18:44:45 +02:00
Yanfeng Zhang
d398098113
Merge pull request #26 from ProtonMail/wrapper-ios
Add wrappers for iOS
2019-09-12 11:05:37 -07:00
Aron Wussler
5249d26588 Add text messages encryption 2019-09-12 11:58:09 +02:00
Aron Wussler
4a41ea9e27 Add wrappers for iOS 2019-09-12 11:57:59 +02:00
wussler
6136f75860 Remove JSON handling functions; export KeyRing.ReadFrom (#24) 2019-09-03 17:42:10 +02:00
wussler
52ecc1ce36
When keyring is empty KeyRing.FirstKey returns nil (#25) 2019-08-30 12:22:50 +02:00
wussler
72e33612c4
Edits for bridge (#22)
* Edits for bridge

* Add keyring method to extract first key, improve docs
2019-08-29 17:45:13 +02:00
wussler
4ef79f1d12 Rename conflicting methods (#20) 2019-08-19 12:06:30 +02:00
Daniel Huigens
7e8dd9ab95 Update ProtonMail/crypto 2019-08-14 17:34:13 +02:00
wussler
9195b9ae92
Fix compilation for gomobile iOS (#17)
* Move signature verification to errors

* Move cleartext messages to ClearTextMessage struct

* Fix documentation
2019-07-02 07:36:02 -07:00
wussler
552ce9554f
Add encryption and decryption for attachment tests (#16) 2019-06-13 01:26:13 -07:00
wussler
b30f047e53
Change verification system, add tests for issue 11 (#13) 2019-06-04 18:10:31 +02:00
Daniel Huigens
781681b548 Use Entitiy.EncryptionKey instead of reimplementing it
This fixes us sometimes using subkeys whose key flags allow
encryption but don't have a valid algorithm for encryption,
or that are expired, etc.
2019-06-04 16:45:33 +02:00
wussler
e65ed17b41
Refactor api (#6)
* Refactor library, remove duplicates

* Rebuild structure to use Messages and Signature models

* Use PGPSplitMessage

* Remove signature model

* Various fixes

* Add helpers with tests

* Fixes, add some docs, add tests

* Add attachment helpers

* Add helpers Symmetric encryption

* Edit docs + examples

* Rename kr to keyRing

* Various fixes for documentation

* Edit JSON handling functions, add decrypt keyring via token

* Add proposal changes doc

* Fix CI

* Drop *Message functions, join CleartextMessage and BinaryMessage

* Change canonicalization and trimming only to text signatures

* Add cleartextsignature, detach signature from message model, move helpers

* Documentation, remove optional parameters

* Move verification to separate model

* Don't return message in VerifyDetached

* Update table of contents in readme

* Appease golint

* Run go fmt

* Rename Encrypt/DecryptMessageWithPassword to ..WithToken

These functions shouldn't be used with user-provided passwords,
as they don't do any key-stretching.

* Change key generation usernames
2019-06-03 17:00:01 +02:00