Hamish Mackenzie
95b247e5eb
Fix for 32 bit platforms
...
The use of `(fromIntegral (maxBound :: Word32))` causes problems. It is used to make an `Int` and 32 bit systems it winds up being -1.
2021-04-14 17:16:15 +12:00
Patrick Chilton
b29dc159fb
Hash data in 4GB chunks to avoid uint32_t overflow.
2020-08-07 21:36:19 +02:00
Olivier Chéron
18ae7a7b40
Remove redundant brackets
2020-07-19 15:45:49 +02:00
Olivier Chéron
fa19117dfe
Avoid thunk leak with AEAD state
2020-07-19 15:44:10 +02:00
Olivier Chéron
d49408156e
Warn about instances exposing internals
2020-07-05 09:20:29 +02:00
Olivier Chéron
81cc351800
Note about drgNewTest and endianness
2020-07-05 09:20:29 +02:00
Olivier Chéron
e67d8fb223
Generate HashAlgorithmPrefix instances
2020-06-26 07:16:41 +02:00
Olivier Chéron
ba3ab1f0cd
Add HashAlgorithmPrefix API
2020-06-26 07:16:18 +02:00
Olivier Chéron
dfc9fb9fb2
Fix powF2m when exponent is not a power of 2
...
Integer multiplication cannot be used because it includes carry
propagation. This needs to use carry-less mulF2m instead.
2020-06-12 19:01:52 +02:00
Olivier Chéron
5f657fda2e
Remove powF2m'
...
We keep only the function providing the base service, negative
exponents can be still computed with invF2m.
2020-06-12 18:54:37 +02:00
Will Song
f64efafbad
update sqrtF2m
2020-06-08 10:16:42 -05:00
Will Song
17336857c5
implement square roots in f2m
2020-06-01 20:56:42 -05:00
Olivier Chéron
775855994c
Use notElem
2020-03-15 15:44:35 +01:00
Olivier Chéron
4b8a8229cf
Remove redundant where
2020-02-24 06:53:03 +01:00
Olivier Chéron
43a9967b1d
Remove redundant superclass in MonadRandom
...
Reported by @frasertweedale
2020-02-16 19:49:49 +01:00
Olivier Chéron
7ac3060873
Better P256.pointMul performance
...
Use dedicated function to avoid multiplying the basepoint with 0.
2020-01-06 18:49:12 +01:00
Olivier Chéron
1f6ed5711c
Warn about non-uniform distribution with QuickCheck
2020-01-04 10:58:22 +01:00
Olivier Chéron
9e0dbb3231
Modular square root
2019-12-07 08:35:14 +01:00
Olivier Chéron
0a1aa3517c
Fix warnings and whitespace
2019-12-03 21:06:17 +01:00
Olivier Chéron
18c6e37ef1
Merge pull request #300 from ocheron/tc-ecdsa
...
ECDSA with a type class
2019-12-01 08:47:33 +01:00
Brian Wignall
78684bc62b
Fix typos
2019-11-30 18:22:26 -05:00
Olivier Chéron
99820c742d
Truncate the digest without Integer conversion
2019-11-11 17:46:16 +01:00
Olivier Chéron
b9a8a6b83d
ECDSA with digest
2019-11-11 17:46:16 +01:00
Olivier Chéron
15327ecd4f
ECDSA with a type class
2019-11-11 17:46:16 +01:00
Olivier Chéron
8f75165f8b
Time-constant P256 scalar inversion
2019-11-11 17:46:16 +01:00
Olivier Chéron
977e75f478
Add P256 functions to implement ECDSA
2019-11-11 17:46:16 +01:00
Olivier Chéron
19b7ab375a
Time-constant modular inverse
2019-11-11 17:46:16 +01:00
Olivier Chéron
6f2a59e470
Apply hlint suggestions
2019-10-05 08:34:12 +02:00
Olivier Chéron
db8d47a76c
ECC arithmetic in prime-order subgroup
...
A type-class extension packs together additional functions related to
a chosen basepoint as well as scalar serialization and arithmetic
modulo the subgroup order.
2019-10-05 08:34:12 +02:00
Olivier Chéron
bdf1a7a133
Require point equality in EllipticCurveArith
...
This is an incompatible API change but is very useful to test
properties and algorithms derived from the primitives. An ECC
instance sufficiently advanced to have math primitives should
implement equality too.
2019-10-05 08:34:12 +02:00
Olivier Chéron
2e92639679
Add P256.scalarMul
2019-10-05 08:34:12 +02:00
Olivier Chéron
096e2ec0bd
Add XSalsa.derive and example
...
This function adds one more HSalsa key derivation to an XSalsa context
that has previously been initialized. It allows multi-level cascades
like the 2-level done by NaCl crypto_box.
2019-09-09 19:32:24 +02:00
Olivier Chéron
3ae08ed509
Add API to generate a random nonce
...
This AEAD scheme is compatible with choosing the nonce randomly.
2019-08-25 16:38:08 +02:00
Olivier Chéron
908f979d44
Add AES-GCM-SIV
2019-08-25 16:38:01 +02:00
Olivier Chéron
0075b57f90
Add internal AES CTR variant with 32-bit counter
...
This variant of CTR mode is used by AES-GCM-SIV. The counter is in
little-endian format and uses the first four bytes of the IV only.
2019-08-25 08:55:49 +02:00
Olivier Chéron
91c87deae1
Add Crypto.System.CPU
2019-06-15 09:28:02 +02:00
Olivier Chéron
4df2a95276
AES GCM: use Shoup's method with 4-bit table
2019-06-06 06:48:16 +02:00
Vincent Hanquez
60ddb49298
Merge pull request #277 from ocheron/little-endian
...
Little-endian integer serialization
2019-05-19 21:56:41 +01:00
Olivier Chéron
76ba39fc95
Add benchmark with AES GCM and CCM
2019-05-19 11:16:34 +02:00
Olivier Chéron
af98a837d1
Add missing INLINABLE pragma
2019-05-16 06:33:35 +02:00
Olivier Chéron
7ecb259aae
Fix LE.i2osp 0
...
Little-endian bytes are stored at the beginning of the buffer.
2019-05-16 06:33:35 +02:00
Olivier Chéron
6893eae70a
Make os2ip loop argument strict
2019-05-16 06:33:35 +02:00
Olivier Chéron
6e1b6fdb90
Little-endian integer serialization
2019-05-16 06:33:35 +02:00
Olivier Chéron
158d8dfd0c
Remove unnecessary imports
2019-05-08 10:22:30 +02:00
Olivier Chéron
ae107a9285
Merge last cshakeUpdate with cshakeFinalize
2019-05-01 07:03:45 +02:00
Olivier Chéron
8b235612be
Merge cshakeInit with first cshakeUpdate
2019-04-28 09:14:25 +02:00
Olivier Chéron
14093ac298
Optimize KMAC allocations
...
Adds a minimalist Builder type to merge intermediate allocations into
a single ByteArray. Key is now copied to a ScrubbedBytes only.
2019-04-28 09:14:25 +02:00
Olivier Chéron
1551436111
Add KMAC
2019-04-28 09:14:25 +02:00
Olivier Chéron
e3edc100c3
Remove unnecessary import
2019-03-24 07:59:57 +01:00
Olivier Chéron
3253501166
Time-constant P256.scalarAdd and P256.scalarSub
2019-03-21 07:04:01 +01:00