Changelog

Version 3.9.0 (2024-04-19)

  • Update minimum SDK version to 3.2.0 (PR #231)

Version 3.8.0 (2024-03-24)

  • Add dart2wasm support (PR #225)

Version 3.7.4 (2024-01-15)

  • Support the latest version of package:js. (PR #220)
  • Require Dart v3.0 (PR #220)
  • Support parsing of nested objects with indefinite lengths (PR #215)

Version 3.7.3 (2023-04-14)

  • PSSSigner requires only salt length to verify signature

Version 3.7.2 (2023-03-23)

  • Removed duplicate oids

Version 3.7.1 (2023-03-21)

  • Fix linter warnings
  • Added new oids

Version 3.7.0 (2023-03-16)

  • Added RC2
  • Added RC4
  • Added 3DES
  • Added PKCS5S1ParameterGenerator
  • Added PKCS12ParametersGenerator
  • Added new OIDs
  • Added new ASN1 models
  • EAX
  • Linting
  • Fix to BasePadding

Version 3.6.2 (2022-09-09)

  • Added OIDs 2.16.840.1.114412.1.1/digiCertOVCert and
  • 2.23.140.1.2.2/organization-validated

Version 3.6.1 (2022-06-19)

  • Added OID 2.5.4.26/registeredAddress
  • Support ASN1 tag 164

Version 3.6.0 (2022-04-27)

  • Added ECDH Basic Agreement
  • Added ConcatKDF

Version 3.5.2 (2022-03-07)

  • Added secp521r1 OID

Version 3.5.1 (2022-02-08)

  • Added ASN1BMPString
  • Added emailAddress OID

Version 3.5.0 (2021-12-30)

  • RSAES-OAEP with SHA256 or any digest instance.
  • Fixed bug in Keccak when updating with single bytes.

Version 3.4.0 (2021-11-09)

  • Security update, fixed timing leaking in GCM implementation.
  • Fixed bug in GCM counter.
  • Added constant time gated xor.
  • Removed more references to AESFastEngine.
  • Security update, AESFastEngine is open to timing attacks, this has been deprecated and replaced with AESEngine.
  • validateMac in BaseAEADBlockCipher is now constant time.

Version 3.4.0-rc2

  • Security update, fixed timing leaking in GCM implementation.
  • Fixed bug in GCM counter.
  • Added constant time gated xor.
  • Removed more references to AESFastEngine.

Version 3.4.0-rc1

  • Security update, AESFastEngine is open to timing attacks, this has been deprecated and replaced with AESEngine.
  • validateMac in BaseAEADBlockCipher is now constant time.

Version 3.3.5 (2021-10-27)

  • New OID

Version 3.3.4 (2021-09-07)

  • Performance update to scrypt
  • SM3 implementation

Version 3.3.3 (2021-09-03)

  • Argon2 in js environments.

Version 3.3.2 (2021-08-27)

  • New OIDs

Version 3.3.1 (2021-08-18)

  • Update to Register64 mul(...)
  • New OID

Version 3.3.0 (2021-08-12)

  • ECElGamal Encryptor and Decryptor

Version 3.2.0 (2021-07-29)

  • Better ASN1 Dump
  • New OIDs
  • ASN1 Fixes

Version 3.2.0-rc0 (2021-07-05)

  • Extended platform detection to supply entropy source, this works on nodejs.

  • Critical fix to the examples:

    Where, xxx.nextInt(255) is used.

    Must be replaced with either .nextInt(256) or alternatively use:

    Platform.instance.platformEntropySource().getBytes(_how many_) to provide the seed.

Version 3.1.3 (2021-06-29)

  • Add Argon2
  • Fix to ASN1 parsing, calculation of start position.

Version 3.1.2 (2021-06-17)

Version 3.1.1 (2021-06-04)

  • Updated pubspec

Version 3.1.0 (2021-05-31)

  • SRP support
  • Readme correction
  • not published

Version 3.0.1 (2021-03-24)

First non-nullable-by-default release

Version 3.0.0-nullsafety.2 (2021-02-05)

  • Ports this library to non-nullable-by-default, a new feature in the Dart language
  • This is a breaking change: client code (libraries and apps) will have to migrate as well to use new releases of this library.
  • This library's existing APIs should not have changed functionally from Version 2.0.1; any such change should be reported at https://github.com/bcgit/pc-dart/issues
  • The block cipher modes IGE and CCM were also added in this update.
  • More info about migration: https://dart.dev/null-safety/migration-guide
  • More info about null safety: https://dart.dev/null-safety

Version 3.0.0-nullsafety.1

  • not published

Version 3.0.0-nullsafety.0

  • not published

Version 2.0.1 (2021-01-16)

  • Bug fix, ASN1Utils
  • Removal of ‘dart:io’
  • RSAPrivateKey calculates the public exponent from the other values.

The previous BigInt handling functions in the util package now treat encoded BigInts as twos compliment numbers, this may cause sudden unexpected failures if a number is suddenly negative. Users are advised to review their use of decodeBigInt and encodeBigInt.

utils.dart:

  • decodeBigInt is twos compliment.
  • encodeBigInt is twos compliment and adds padding to preserve sign.
  • encodeBigIntAsUnsigned writes the magnitude without any padding.
  • decodeBigIntWithSign allows the specification of an arbitrary sign.
  • Previous uses of decodeBigInt where the expectation is an unsigned integer have been updated with decodeBigIntWithSign(1, magnitude).

Version 2.0.0 (2020-10-02)

  • No changes from 2.0.0-rc2

Version 2.0.0-rc2 (2020-09-25)

  • Linter Fixes
  • Updates to ASN1 API

Version 2.0.0-rc1 (2020-09-11) (Dart SDK version 2.1.1)

  • Fixed OAEPEncoding and PKCS1Encoding to use provided output offset value.
  • Fixed RSA block length and offset checks in RSAEngine.processBlock.
  • Fixed RSASigner.verifySignature to return false when signature is bad.
  • Add HKDF support (IETF RFC 5869)
  • Add Poly1305, ChaCha20, ChaCha7539, AES-GCM, SHA3, Keccak, RSA/PSS
  • Add CSHAKE, SHAKE
  • Fixed randomly occurring bug with OAEP decoding.
  • Added NormalizedECDSASigner that wraps ECDSASigner to guarantee an ecdsa signature in lower-s form. (Enforcement on verification supported).
  • Reduce copies in CBC mode.
  • Linter issues fixed.
  • FixedSecureRandom to use seed only once.
  • ASN1 - BOOLEAN, INTEGER, BIT_STRING, OCTET_STRING, NULL, OBJECT_IDENTIFIER, ENUMERATED, UTF8_STRING, SEQUENCE, SET, PRINTABLE_STRING, IA5_STRING & UTC_TIME
  • ASN1 Encoding - DER & BER
  • RSA Keys - Private Key carries public key exponent, added publicExponent and privateExponent where necessary and deprecated single variable getters in for those values.
Thanks, Steven

At this release the Point Castle Crypto API has been fully handed over to the Legion of the Bouncy Castle Inc. Steven Roose, it is no small thing to single headedly manage a cryptography API and your effort is rightfully respected by the Pointy Castle user base. We would like to thank you for your trust in us to carry the project forward, and we wish you all the best!

Version 1.0.2 (2019-11-15)

  • Add non-Keccak SHA3 support
  • Add CMAC support (“AES/CMAC”)
  • Add ISO7816-4 padding support
  • Fixes in CBCBlockCipherMac and CMac

Version 1.0.1 (2019-02-20)

  • Add Blake2b support

Version 1.0.0 (2018-12-17) (Dart SDK version 2.0)

  • Support Dart 2 and Strong Mode
  • Migrate from package:bignum.BigInteger to dart:core.BigInt
  • Remove Quiver and fixnum dependency
  • OAEP encoding for block ciphers

Version 0.10.0 (2016-02-04) (Dart SDK version 0.14.0)

  • First Pointy Castle release.

  • Reorganised file structure.

  • Completely new Registry implementation that dynamically loads imported implementations using reflection. It is explained in this commit.

  • Migrated from unittest to test package.

cipher releases

Version 0.8.0 (2014-??-??) (Dart SDK version ???)

  • [bug 80] PaddedBlockCipher doesn't add padding when data length is a multiple of the block size. This fix introduces a BREAKING CHANGE in PaddedBlockCipher specification. Read its API documentation to know about the changes.

Version 0.7.0 (2014-03-22) (Dart SDK version 1.3.0-dev.5.2)

  • [enh 15] Implement stream cipher benchmarks.

  • [enh 64] Benchmark and optimize digests.

  • [enh 74] Make SHA-3 usable in terms of speed.

  • [bug 67] Removed some unused code.

  • [bug 68] Fix process() method of PaddedBlockCipher.

  • [bug 75] Remove a registry dependency in the Scrypt algorithm.