Daniel Huigens
3a84442b5f
Don't use native streams in old Edge
2021-02-09 19:25:20 +01:00
Daniel Huigens
2fffc76060
Don't overwrite Web Streams Polyfill to globals
...
Instead, use the ponyfill that's now included in web-stream-tools.
Also, convert back to native ReadableStream when we used the ponyfill.
2021-02-09 19:25:20 +01:00
Daniel Huigens
37d30c5003
Return strings in Node streams where appropriate
2021-02-09 19:25:20 +01:00
Daniel Huigens
95eb43a3c2
Return data
instead of message
in encryptSessionKey
...
Add `armor=true/false` parameter to decide whether `data` is an armored
String or an unarmored Uint8Array.
2021-02-09 19:25:20 +01:00
Daniel Huigens
08d6b276e3
Return data as string in openpgp.verify by default
...
Add format='utf8'/'binary' param to openpgp.verify in order to be able
to return binary data instead.
2021-02-09 19:25:20 +01:00
Daniel Huigens
7225251af8
Return Uint8Array(Stream) instead of object when armor = false
2021-02-09 19:25:20 +01:00
larabr
38ec5314d4
Fix ElGamal param range and PKCS1 decoding ( #1169 )
...
* Fix ElGamal sampling range
* Stricter PKCS1 decoding
2021-01-20 14:09:52 +01:00
Yarmo Mackenbach
a4b56c944a
WKD: Fix "TypeError: fetch is not a function" in Node.js environment ( #1181 )
2020-11-17 10:03:25 +01:00
larabr
08fc7b32ca
Fix and test dummy key conversion ( #1172 )
...
Keys converted using makeDummy() were not serialised correctly as they were
treated as unencrypted keys.
2020-11-10 17:32:44 +01:00
Chen Longhao
929b016948
Fix documentation of the HKP keyId option ( #1151 )
2020-09-09 12:26:03 +02:00
larabr
2eab8a1ebc
Add config option to allow insecure decryption with RSA signing keys ( #1148 )
2020-08-28 16:09:56 +02:00
larabr
cc1bdcbae8
Allow decryption with revoked keys ( #1135 )
...
However, when decrypting session keys, check that the public key
algorithm matches that of the decryption key.
2020-08-18 15:49:27 +02:00
Wiktor Kwapisiewicz
0712e8af2d
Support non-human-readable notation values ( #983 )
...
This change adds support for binary (non-human-readable) values in
signature notations through `rawNotations` property on signature objects.
Human-readable notations will additionally appear in `notations` object
where the value of the notation will be deserialized into a string.
Additionally the check for human-readable flag was modified to check the
existence of the flag instead of comparison with the whole value.
2020-08-18 11:07:58 +02:00
larabr
25bf080871
Add SecretKey.prototype.makeDummy ( #1131 )
2020-08-03 15:52:50 +02:00
Yarmo Mackenbach
de360e200c
Handle CORS errors during WKD lookup ( #1125 )
...
Also, throw an error instead of returning null when the server returned
an error status.
2020-07-17 14:22:54 +02:00
Yarmo Mackenbach
5801169432
Refactor WKD lookup code ( #1123 )
...
* Replace chained then by await
* Improve fetch fallback flow
2020-07-15 15:12:55 +02:00
Daniel Huigens
3218f7b7f8
Don't zero-copy transfer buffers from the worker by default
2020-07-14 18:15:08 +02:00
Yarmo Mackenbach
4af9b51915
Add support for advanced WKD lookup ( #1115 )
2020-07-13 20:08:30 +02:00
larabr
00c5f38689
Cipher-specific key validation ( #1116 )
...
Also, check binding signatures for decryption keys.
Also, do not always fallback on Web Crypto ECC errors.
2020-07-13 19:57:33 +02:00
cpupower
6988fdfee1
Fix stream-encrypting+signing a message using the Worker ( #1112 )
...
- Include fromStream property when cloning a Message
- Restore fromStream property in packetlistCloneToMessage
2020-06-25 12:53:27 +02:00
larabr
35b0012f2f
Pass around KDF params as object ( #1104 )
2020-06-03 14:16:54 +02:00
Matthew Shaylor
320efc2435
Fix keyId types in JSDoc comments ( #1100 )
2020-05-18 12:22:31 +02:00
Roman Zechmeister
1b91d428f0
Also create issuer fingerprint subpacket for v4 keys ( #1097 )
...
Do not limit creation of signatures with issuer fingerprint subpacket to v5 keys.
2020-05-11 21:45:04 +02:00
Daniel Huigens
5d71ae8691
Fix normalizing \n after \r\n
...
Broken in c4a7455.
2020-04-22 19:09:50 +02:00
Ilya Chesnokov
674e0217fc
Support compressed data packets with algorithm=uncompressed ( #1085 )
2020-04-21 16:00:38 +02:00
Daniel Huigens
c4a7455cb5
Fix memory usage when non-streaming-en/decrypting large files
...
Broken in #1071 .
2020-04-20 18:05:07 +02:00
larabr
e39216424f
Drop support for \r as EOL ( #1073 )
2020-04-20 18:05:07 +02:00
Daniel Huigens
90ff60cbb1
Fix verification of EdDSA signatures with short MPIs ( #1083 )
...
We would fail to verify EdDSA signatures with leading zeros, when
encoded according to the spec (without leading zeros, leading to
short MPIs). OpenPGP.js itself encodes them with leading zeros.
This is accepted by many implementations, but not valid according
to the spec. We will fix that in a future version.
2020-04-16 17:03:49 +02:00
Daniel Huigens
b69d0d0228
Support PKCS5 padding longer than 8 bytes ( #1081 )
...
This is allowed by the spec to hide the length of the session key:
For example, assuming that an AES algorithm is
used for the session key, the sender MAY use 21, 13, and 5 bytes of
padding for AES-128, AES-192, and AES-256, respectively, to provide
the same number of octets, 40 total, as an input to the key wrapping
method.
2020-04-15 19:33:04 +02:00
larabr
6119dbb08e
Support verification of text signatures on non-UTF-8 messages ( #1071 )
2020-03-30 12:51:07 +02:00
Makoto Sakaguchi
66d83db51b
Fix "TypeError: fetch is not a function" in Node.js environment ( #1052 )
2020-03-03 14:50:28 +01:00
Daniel Huigens
e986c47ed5
Remove no-op revocationCertificate option from reformatKey
2020-02-27 16:04:06 +01:00
Daniel Huigens
60822d87d9
Fix generating keys with a date in the future
...
This was broken in 8c3bcd1.
(Before then, the revocation certificate was already broken when
generating a key with a date in the future.)
2020-02-27 16:04:07 +01:00
Daniel Huigens
2131fb0978
Fix error message for legacy encrypted private keys
2020-02-25 15:07:43 +01:00
Daniel Huigens
c6ed05d2c3
Optimize crc24 calculation
2020-02-25 15:06:38 +01:00
Daniel Huigens
2ff4fbb0e8
Optimize base64 encoding and decoding
2020-02-25 15:06:38 +01:00
Daniel Huigens
15202d9d40
Don't use polyfilled Set in compat build
...
All methods of sets we need are available in all browsers we support.
2020-02-25 15:06:15 +01:00
Daniel Huigens
8c3bcd1f21
Reject signatures using insecure hash algorithms
...
Also, switch from returning false to throwing errors in most verify*()
functions, as well as in `await signatures[*].verified`, in order to be
able to show more informative error messages.
2020-02-25 15:06:15 +01:00
Daniel Huigens
92eda27e61
Binary signature on text message: sign and verify text as UTF-8
2020-02-17 12:49:20 +01:00
Daniel Huigens
84a1287e50
Fix Blowfish block size
2020-02-02 16:51:56 +01:00
Daniel Huigens
801b44f2e7
Don't use Node symmetric crypto when !config.use_native
2020-02-02 16:51:56 +01:00
Daniel Huigens
fc0052e35a
Implement streaming non-AES encryption and decryption
2020-02-02 16:51:56 +01:00
Daniel Huigens
2ec8831abf
Use native Node crypto for non-AES encryption and decryption
2020-02-02 16:51:56 +01:00
Daniel Huigens
e8ee70b2a8
Fix UnhandledPromiseRejectionWarning
s in Node.js
...
These were introduced in 9bdeaa9 by `await`ing Promises later than
they're created.
2020-01-24 18:05:50 +01:00
Daniel Huigens
9bdeaa927a
Don't keep entire decrypted message in memory while streaming
...
(When config.allow_unauthenticated_stream is set or the message is
AEAD-encrypted.)
The issue was that, when hashing the data for verification, we would
only start hashing at the very end (and keep the message in memory)
because nobody was "pulling" the stream containing the hash yet, so
backpressure was keeping the data from being hashed.
Note that, of the two patches in this commit, only the onePassSig.hashed
property actually mattered, for some reason. Also, the minimum
highWaterMark of 1 should have pulled the hashed stream anyway, I think.
I'm not sure why that didn't happen.
2020-01-24 17:58:17 +01:00
Daniel Huigens
6e13604a64
Replace 'window' with 'global'
...
In order to use Web Crypto in application workers, among other things.
2020-01-24 17:58:04 +01:00
Daniel Huigens
66acd979bf
Clear worker key caches in openpgp.destroyWorker()
2020-01-24 17:57:39 +01:00
Daniel Huigens
fb666f0624
Implement openpgp.getWorker().clearKeyCache()
2020-01-24 17:57:39 +01:00
Daniel Huigens
523432334f
Implement Key.prototype.clearPrivateParams
2020-01-24 17:57:39 +01:00
Daniel Huigens
26d107b856
Zero out private key parameters in clearPrivateParams
2020-01-24 17:57:39 +01:00