Daniel Huigens
df8364930b
Fix one-pass signature verification when using a Worker
2019-05-03 18:40:31 +02:00
Daniel Huigens
1090464a70
Throw more informative error when trying to use a key with missing params
...
E.g. when trying to sign with a GPG stripped key without a valid signing
subkey.
2019-05-03 14:29:43 +02:00
Daniel Huigens
19d14b521b
Add test for signing with GNU stripped key
2019-05-03 14:07:10 +02:00
Daniel Huigens
bc756d0ed4
Make key.isDecrypted() and key.encrypt() consistent for gnu-dummy keys
2019-05-03 12:39:28 +02:00
Daniel Huigens
10e10effb6
Support GNU export-secret-subkeys extension
2019-05-03 12:39:28 +02:00
Daniel Huigens
6689f93465
Fix flaky test in Edge
2019-05-02 12:55:08 +02:00
Daniel Huigens
34e6eacb2f
Don't attempt to use workers if they fail to load
2019-05-02 12:08:08 +02:00
Daniel Huigens
e637e75891
Clean up ECDH API
2019-05-02 12:08:08 +02:00
Daniel Huigens
be1b4df140
Use tweetnacl's Ed25519 implementation
2019-05-02 12:08:08 +02:00
Si Feng
d2c38693f5
Put comment before email when generating UIDs ( #892 )
2019-05-01 13:12:52 +02:00
Daniel Huigens
7fb2901ede
Fix detached signing of messages created from streams ( #887 )
2019-04-29 13:45:09 +02:00
Thomas Oberndörfer
038d8466fe
Add date parameter to user.verifyAllCertifications and user.verify methods ( #871 )
...
Also, in user.verifyCertificate, fix certificate.isExpired check for keys with future creation date.
2019-03-08 17:33:36 +01:00
Daniel Huigens
a9599fea42
Work around go crypto bug in ECDH messages ( #869 )
2019-03-04 13:53:19 +01:00
Thomas Oberndörfer
b1be7d1202
Fix merging multiple subkey binding signatures ( #868 )
2019-02-28 10:34:46 -08:00
rash0
3edc6e7501
++ Add another Domain for HKP server ( #855 )
...
* ++ Add another Domain for HKP server
the pgp.mit.edu domain is most of the time down and responds with time out...so i discovered this ubuntu domain for the same database...but its much faster and never falls....i think too much traffic over the bit one :(
* Update hkp.js
* Change HKP server url
* Defined the default HKP server
* Update README.md
Co-Authored-By: rash0 <40761345+rash0@users.noreply.github.com>
* ++ Add revocation certificate test
didn't know if i should use the revocation certificate in the test/key.js file or generate a new one...so i generated a test one and used it...
2019-02-11 11:33:24 +01:00
Daniel Huigens
352dd5639e
Fix async describe() in test suite that always runs
2019-02-05 13:46:59 +01:00
Daniel Huigens
1dd168e7a2
Fix ECDH message encryption for some session keys
2019-02-05 13:46:59 +01:00
Daniel Huigens
d91b064e14
Optimize util.removeTrailingSpaces ( #848 )
...
Backtracking regexes have pathological worst-case performance when
a long line contains a large amount of whitespace not followed by
a newline, since the regex engine will attempt to match the regex
at each whitespace character, read ahead to the non-whitespace non-
newline, declare no match, and try again at the next whitespace.
E.g. try running
util.removeTrailingSpaces(new Array(1e6).join(' ') + 'a').length
which would hang V8.
2019-01-27 00:22:47 +00:00
wussler
f018f60b9c
ECDHE tests ( #846 )
...
* Ellyptic curves tests
* Re-run tests
2019-01-27 00:19:36 +00:00
Daniel Huigens
49a7deacd4
Don't run AsyncProxy tests in browsers that don't fully support workers
2019-01-15 20:16:59 +01:00
Daniel Huigens
77055f6dfe
Don't zero-copy transfer buffers in Safari 11.1 and Chrome < 56
...
See https://bugs.webkit.org/show_bug.cgi?id=184254
and https://bugs.chromium.org/p/chromium/issues/detail?id=334408 .
2019-01-15 20:16:59 +01:00
Daniel Huigens
fe69cb882d
Zero-copy transfer buffers when passing streams to workers
2019-01-09 15:18:59 +01:00
Daniel Huigens
625c6ea4b3
Zero-copy transfer buffers from the worker to the main thread
2019-01-09 15:18:56 +01:00
Sanjana Rajan
4ce2dd28e1
update CFB tests
2019-01-02 15:44:45 +01:00
Sanjana Rajan
529973f2a2
Merge branch 'master' into fix/non-primary-non-revoked-sub-user
2018-12-23 17:52:01 +01:00
Sanjana Rajan
1bee091f2a
Merge pull request #815 from twiss/userIds
...
Make fromUserIds/toUserIds params plural, and accept arrays of User IDs
2018-12-23 17:50:46 +01:00
Daniel Huigens
113c4a5f1e
Add CAST5 to always-allowed algorithms
...
Golang's OpenPGP implementation uses CAST5 as its fallback.
(The spec mandates TripleDES as fallback.)
Fixes #819 .
2018-12-22 00:00:47 -05:00
Daniel Huigens
9691dc9c99
Fix getExpirationTime with capabilities and an expired signing subkey
...
When the latest subkey with the requested capabilities is expired,
and the primary key has the requested capabilities, return the
primary key expiry instead.
Also, change isExpired/isDataExpired to still return false at the
date returned by getExpirationTime, so that the latter returns the
last date that the key can still be used.
2018-12-21 12:49:22 -05:00
Daniel Huigens
f0f9a5c2a4
Fix key generation tests on Node
...
The Node tests set the key bit size to 512, which is not big enough
to sign a SHA384 hash + header.
2018-12-17 13:32:27 -05:00
Daniel Huigens
804e91140a
Add config values to preferred algorithms
2018-12-17 12:52:30 -05:00
Daniel Huigens
926047f0b3
Default to RFC4880bis-mandated symmetric algos
2018-12-17 12:27:09 -05:00
Daniel Huigens
3b9676f2e9
Reject messages encrypted with a symmetric algo not in preferred algos
2018-12-17 12:27:03 -05:00
Daniel Huigens
cb3f644708
Validate ECC public keys
2018-12-14 17:21:12 +01:00
Daniel Huigens
65772d86b3
Make fromUserIds/toUserIds params plural, and accept arrays of User IDs
...
Each User ID object is used for the key object at the corresponding index
in the privateKeys/publicKeys arrays.
2018-12-14 16:54:44 +01:00
Kay Lukas
2dbb8582d7
Add testcases
2018-12-10 20:21:55 +01:00
Daniel Huigens
92230d2055
Consider non-expired signatures from expired keys to still be valid
2018-12-10 15:20:11 +01:00
Daniel Huigens
79124a9680
Fix security test generating signing subkey on Safari 10
2018-11-06 11:48:16 +01:00
Daniel Huigens
f96bf45fb2
Lower S2K iteration count parameter in tests
2018-11-05 18:00:20 +01:00
Daniel Huigens
997f3e8e38
Compute signed data based on expected signature type
2018-11-05 17:13:40 +01:00
Sanjana Rajan
67de70fa01
Merge pull request #798 from twiss/seek-bzip
...
Remove bzip2 compression
2018-11-05 12:58:50 +01:00
Daniel Huigens
08f48bfc2c
Switch to seek-bzip
2018-11-05 12:49:53 +01:00
Daniel Huigens
d314a20e0f
Don't return keys with an authorized revocation key
2018-11-05 11:47:45 +01:00
Daniel Huigens
8fa3aadea2
Add and require primary key binding signatures on signing keys
...
Also, fix keyFlags of signing subkeys.
Also, store Issuer Key ID and Embedded Signature in unhashed rather
than hashed subpackets.
2018-11-05 11:47:45 +01:00
Daniel Huigens
47138eed61
Don't trust unhashed signature subpackets
...
Also, export packet.Signature.prototype.read_sub_packets.
2018-11-05 11:47:43 +01:00
Daniel Huigens
327d3e5392
Only accept binary or text signatures when verifying messages
2018-11-05 11:47:39 +01:00
Daniel Huigens
abce79b509
Use Web Crypto for hashing
2018-11-01 14:11:22 +01:00
Sanjana Rajan
3c45b6f18a
Merge pull request #793 from twiss/signature-errors
...
Check that one-pass signatures match their corresponding signature
2018-11-01 12:13:02 +01:00
Daniel Huigens
11fd2313a7
Fix unhandled promise rejection when decrypting non-MDC message
2018-11-01 11:46:43 +01:00
Daniel Huigens
13c29b1fc9
Fix decryption with multiple passwords
2018-11-01 11:46:27 +01:00
Daniel Huigens
9c82bf491e
Reject signatures[*].verified and signatures[*].signature on read errors
...
However, don't throw "unhandled promise rejection" when not using these
properties at all, or when they reject before the user has a chance to
handle them.
2018-10-29 11:47:36 +01:00
Daniel Huigens
3751731330
Don't hang when signature packet corresponding to one-pass sig is missing
2018-10-04 22:13:10 +02:00
Daniel Huigens
bbcdacef8d
Small documentation fixes
2018-09-22 23:03:10 +02:00
Daniel Huigens
b3af56b8a3
Ignore third-party revocation signatures
...
This check was removed in ec22dab
.
2018-09-22 23:03:10 +02:00
Daniel Huigens
a1c47ecdea
Indicate an error when parsing a key with an authorized revocation key
...
Since we will ignore revocation signatures from authorized revocation keys,
it is dangerous to use these keys.
2018-09-22 23:03:10 +02:00
Daniel Huigens
5cf61daa19
Check validity of signatures before using them
2018-09-22 23:03:10 +02:00
Daniel Huigens
d8840294cf
Make newlines in armored objects consistent
...
- Don't add an extraneous newline at the end of base64-encoded data
if it is a multiple of 60 characters long.
- Generate \r\n instead of \n in base64-encoded data.
- Generate one newline instead of two after END PGP PUBLIC KEY BLOCK
for consistency with the other footers.
2018-09-13 14:32:35 +02:00
Daniel Huigens
0a5461b8ba
Split Sauce Labs JS unit tests into multiple parts for slow browsers
...
Sauce Labs has a timeout of 5 minutes (including emulator/browser
startup time).
2018-09-10 19:27:13 +02:00
Daniel Huigens
dc722770d0
Don't process armored message data line per line
...
This cuts down on the overhead of streaming by reducing the amount
of calls to reader.read() and writer.write().
2018-09-03 18:23:38 +02:00
Daniel Huigens
564c645064
Fix intermittent "Data did not arrive early" test failure
2018-08-24 13:31:44 +02:00
Daniel Huigens
7a4df6912b
Fix intermittent failures of tests for stream error detection on Node
2018-08-14 21:49:17 +02:00
Daniel Huigens
4bdc5e92ab
Add --compat option
...
Without it, the generated build is for recent versions of
Chrome, Firefox, Safari and Edge.
With it, the generated build is for IE11+.
2018-08-14 17:24:41 +02:00
Daniel Huigens
d1626a7a51
Disable some tests on Sauce Labs
...
Since we still run the full test suite on Node.js, this would
only no longer catch bugs which are specific to
- Browser non-draft04 GCM (and don't manifest in draft04 GCM,
and don't manifest in Node.js non-draft04 GCM)
- Browser OCB (which is not natively implemented in the browser)
- Browser V5 Keys
2018-08-14 17:24:40 +02:00
Daniel Huigens
00a2c0c0c2
Support unicode surrogate code points
2018-08-14 17:24:40 +02:00
Daniel Huigens
9bf7bbf45e
Don't generate a new key for each encryption mode in tests
2018-08-14 17:24:39 +02:00
Daniel Huigens
67b067b1da
Remove duplicate tests
...
Many tests would run for every encryption mode, or for both V4 and V5 keys,
without there being any difference between the different test runs.
`grunt coverage` before and after this commit reports almost identical
statistics, providing some confidence that no code coverage was lost.
2018-08-14 17:24:39 +02:00
Daniel Huigens
225f586970
Make ECC tests less idiosyncratic
2018-08-14 17:19:55 +02:00
Daniel Huigens
aa3ede94ec
Fix intermittent failure of tests detecting checksum errors
2018-08-14 17:19:55 +02:00
Daniel Huigens
68016b22a5
Always scroll down unit tests on Sauce Labs
2018-08-14 17:19:54 +02:00
Daniel Huigens
8c7e4386af
Fix stream-reading zero-length (partial) packets
2018-08-14 17:19:54 +02:00
Daniel Huigens
052fa444be
Support Node streams
2018-08-14 17:19:54 +02:00
Daniel Huigens
0ddff3ae7d
Rename asStream
to streaming
...
Also, break up `postProcess`.
2018-08-14 17:19:51 +02:00
Daniel Huigens
b35b167e63
Add openpgp.cleartext.fromText
...
For symmetry with message.fromText
2018-08-14 16:35:41 +02:00
Daniel Huigens
61a0e3fa69
Fix tests on IE11
2018-08-14 16:35:40 +02:00
Daniel Huigens
d844b8b06c
Add minimum AEAD buffer size
...
This enables parallelism for streaming AEAD chunked encryption.
The reason we can't do so at the very end of the pipe chain
(e.g., in `readToEnd`) is because requests for increased
buffering (i.e. `desiredSize > 1`) do not propagate backwards,
only requests for backpressure (i.e. `desiredSize <= 0`) do.
2018-08-14 16:35:39 +02:00
Daniel Huigens
54d5bd7d39
Add testcase for verifying messages without one-pass-signatures
2018-08-14 16:35:39 +02:00
Daniel Huigens
ca537e439d
Comments & code style
2018-08-14 16:35:38 +02:00
Daniel Huigens
1101a05b10
Don't return streams inside unarmored generated keys and signatures
...
When not requested, we convert the streams to Uint8Arrays.
This makes the generated key safe to pass to a Worker more than once.
Partially reverts 735aa1da.
2018-08-14 16:35:36 +02:00
Daniel Huigens
e66d44e42d
Rename config.unsafe_stream to allow_unauthenticated_stream
2018-08-10 14:46:29 +02:00
Daniel Huigens
2b30ab9c8f
Replace data
with message
parameter in encrypt() and sign()
...
When encrypting/signing a stream, this allows you to indicate whether it's a
stream of Strings or Uint8Arrays (using message.fromText or message.fromBinary,
respectively.)
When signing text, this allows you to control whether to create a cleartext
message or a regular armored text message.
When creating a detached signature, it allows you to control whether it's "meant
for" (verifying against) a cleartext message. A cleartext message has trailing
whitespace trimmed before signing. This fixes the case of passing a detached
signature from sign() to encrypt(). Since encrypt() doesn't create a cleartext
message, the signature would be invalid if the text contained lines with
trailing whitespace.
2018-08-10 14:46:29 +02:00
Daniel Huigens
95413cc6ed
Fix signatures of messages with leading/trailing whitespace
2018-08-10 14:46:29 +02:00
Daniel Huigens
9f0f00e087
Make signature.verified a Promise instead of result.signatures
...
Also, fix verifying detached signatures
2018-08-10 14:46:28 +02:00
Daniel Huigens
0db32bea39
Backpressure and cancellation in sign/verify
2018-08-10 14:46:28 +02:00
Daniel Huigens
d2ba6b3c6c
Wait for data to be read before resolving signatures
2018-08-10 14:46:28 +02:00
Daniel Huigens
3113976dd2
Don't throw in result.signatures
...
- The caller might not await them, in which case you get an "unhandled rejection"
- The caller might await them but only after reading the data, in which case you
get an unhandled rejection if there's an error before the end of the data
2018-08-10 14:46:27 +02:00
Daniel Huigens
b6e988b6a6
Convert result.signatures to a Promise
...
Also, throw armor checksum errors inside the data stream
2018-08-10 14:46:27 +02:00
Daniel Huigens
4d82d25559
Pass more tests
...
We now use streams internally in more places.
2018-08-10 14:46:26 +02:00
Daniel Huigens
4e749965f2
Remove support for V3 keys and signatures
2018-08-10 14:46:26 +02:00
Daniel Huigens
411b626149
Work around timing difference between Chrome and polyfill
...
When piping a stream to a writable stream and erroring that,
the input (readable) stream only gets cancelled after pipeTo()
returns in Chrome.
2018-08-10 14:46:25 +02:00
Daniel Huigens
55fd292fba
Fix armor errors
...
Also, fix error handling in transformPair()
2018-08-10 14:46:25 +02:00
Daniel Huigens
304cbf4783
Fix backpressure
2018-08-10 14:46:25 +02:00
Daniel Huigens
ddda6a0b16
Implement cancellation by manually linking together input and output streams
2018-08-10 14:46:24 +02:00
Daniel Huigens
de2971d84a
Use TransformStreams
2018-08-10 14:46:24 +02:00
Daniel Huigens
51c897b073
Cancelling
2018-08-10 14:46:23 +02:00
Daniel Huigens
a6a701df7f
Streaming signing
2018-08-10 14:46:23 +02:00
Daniel Huigens
9c1c28bc59
Add option to read unauthenticated data from stream
2018-08-10 14:46:23 +02:00
Daniel Huigens
1effe19c1d
Allow simultaneously reading data and waiting for signature verification
...
This makes openpgp.{decrypt,verify}().signatures a Promise when passing a
stream or when asStream=true
2018-08-10 14:46:22 +02:00
Daniel Huigens
56ec5b3a8d
Don't keep extra copies of streams in memory
2018-08-10 14:46:22 +02:00
Daniel Huigens
f0633f00ea
Don't repeatedly decrypt the same key in unit tests
2018-08-10 14:44:01 +02:00
Daniel Huigens
ade2627bca
Streaming verify one-pass signatures
2018-08-10 14:44:01 +02:00
Daniel Huigens
8658816b90
Add Web Streams polyfill
2018-08-10 14:44:01 +02:00