bcgit / pc-dart

Pointy Castle - Dart Derived Bouncy Castle APIs
MIT License
237 stars 122 forks source link

Add support for argon2 on web platform #133

Closed licy183 closed 3 years ago

licy183 commented 3 years ago

Fix Register64.mul, add Register64.mod and add support for argon2 on web platform.

  1. Register64.mul has an error on web platform when p1 is a 33-bit integer. Dart int on web platform (Javascript) will make the result an 32-bit integer, which is not the same as Dart VM. This PR fixes this, and add some tests for this problem.
  2. Add mod(int) opertaion on class Register64. This method is implemented using Horner's method. Maybe we can implement it using Knuth's method for a better performance later.
  3. Add support for argon2 on web platform. This PR contains an Argon2BytesGenerator which is implemented using Register64, and it can run on web platform with higher memory occupation and worse performance. This PR uses a platform-aware method to determine use either Register64 impl or native int impl.
AKushWarrior commented 3 years ago

@mwcw I think this solves the problems we'd been having with argon2 on the web. This library's focus isn't on speed anyways (and technically, neither is Argon2's), so I'd recommend merging it.

meganwoods commented 3 years ago

Hi,

I'll take a look at it tomorrow (Melb, AU) time or perhaps if I can this evening.

MW

mwcw commented 3 years ago

Thanks!

Merged will be synced in a few hours.

MW