Commit graph

44 commits

Author SHA1 Message Date
wussler
abf7e6f86a
Merge branch 'master' into master 2021-07-30 14:39:28 +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
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
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
Daniel Huigens
d0daa53ca6
Update x/crypto fork to github.com/ProtonMail/go-crypto (#106) 2020-12-08 18:34:39 +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
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
wussler
53a85837e0
Improve error handling, fix linter (#92)
* Improve error handling, fix linter
2020-10-29 12:42:32 +01: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
wussler
979fdb3f4b
Add ToPublic method to get a public key object from a private key (#65) 2020-07-22 17:13:23 +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
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
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
Daniel Huigens
10a9a0f557
Don't retain references to passed byte slices (#40) 2020-04-08 11:11:16 +02:00
wussler
3c79f40acb
Add SHA256 fingerprint utils and helpers (#41) 2020-04-07 14:59:25 +02:00
Aron Wussler
3f33c71496 Improve documentation for checking 2020-01-11 15:31:06 +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
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
Daniel Huigens
7d9930b8e0 Improve documentation and naming
- Rename pmmime to gomime
- Rename pmKeyObject to pgpKeyObject
2019-05-15 14:34:22 +02:00
Daniel Huigens
bb1be4a43b Rename PmCrypto to GopenPGP 2019-05-14 18:12:35 +02:00
Daniel Huigens
da2e0f77f0 Rename package to gopenpgp 2019-05-14 18:09:06 +02:00
Aron Wussler
78e3abb0d8 go vet and lint
* Naming
    * If this is not some OpenPGP standard I follow rule that `DES` should be
      upper case as it is abreviation and `Triple` should be camel-case as it
      is normal word hence `TripleDES`
    * rename `errors2` -> `errorsPGP`
* long lines
    * https://github.com/golang/go/wiki/CodeReviewComments#line-length
    * I bit improved long lines based on my folding
    * reuse type in definition if possible i.e. `a string, b string, c string` -> `a,b,c string`
    * `if long_statetent(); err!=nil {` -> `long_statement;↵ if err!=nil {`
    * spaces around operators (e.g. `a + b` -> `a+b`)
* removing empty lines on start and end of scope
* comments
    * on all exported functions
    * start with function name
* import:
    * order in alphabet
    * separate native, golang.org/x/ and our libs
2019-05-14 14:42:38 +00:00
Aron Wussler
8af460ba61 Create key.go unit tests 2019-05-13 14:06:54 +00:00
William Gotti
b820c14c1a Remove unused code + handle errors 2019-05-13 12:42:29 +00:00
William Gotti
5cdec38a18 fix typo / improve documentatation 2019-05-13 12:33:01 +00:00
Jakub
532ce66247 found TODO while patching android 2019-05-10 08:08:03 +02:00
Daniel Huigens
2091fc106c Use new KeyExpired function 2019-04-27 07:32:20 +02:00
Jakub
968888eb0e change error message pmapi -> pm-crypto 2019-03-07 17:03:16 +01:00
Jakub
36b497d591 fix compile 2019-03-07 16:56:12 +01:00
Jakub
a92113e341 format and comment 2019-03-07 14:23:38 +01:00
Jakub
8f4bbfc780 return decrypt error 2019-03-07 14:08:17 +01:00
Jakub Lehotsky
b218f523af Methods use + unit tests update 2019-01-11 00:23:00 +01:00
Jakub Lehotsky
d7f0550a4b Low-memory garbage collector 2018-11-22 10:53:14 +01:00
Jakub Lehotsky
fdd1a727cb Issue #3: mobile client fallback version 2018-11-05 22:55:45 +01:00
Jakub Lehotsky
0bf075d49d Minor build fixes 2018-11-01 17:03:43 +01:00
Jakub Lehotsky
b3e6e67cac Refactor: Moved relevant parts of Key and KeyRing objs from go-pmapi 2018-09-20 15:20:45 +02:00
Jakub Lehotsky
d005dca0a4 Minor: spelling and typos 2018-09-19 11:52:14 +02:00
Kay Lukas
97e70855b8 Add decryptMime and refactor package structure 2018-09-11 11:09:28 +02:00
Renamed from key.go (Browse further)