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.
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.
* 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
* 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