Skip to content

Releases: whyoleg/cryptography-kotlin

0.3.1

22 May 20:52
Compare
Choose a tag to compare

0.3.0 - Support for ALL targets, new experimental modules

21 Feb 15:13
Compare
Choose a tag to compare

New Kotlin targets

  • cryptography-core and cryptography-random modules are now supported for ALL Kotlin targets!
  • CryptographyRandom implementation for WasmJs and WasmWasi
  • WebCrypto provider for WasmJs
  • OpenSSL provider now supports ALL K/N targets (#10)
    • new targets: linuxArm64, tvOS*, watchOS*, androidNative*

New features

  • RSA (PSS, OAEP, PKCS1) support in Apple provider (#12)
  • RSA PKCS#1 key encoding support
  • New algorithm support: AES-CTR
  • Support for explicitly provided IV in AES-CTR and AES-CBC
    • Note: these APIs are marked as DelicateCryptographyApi,
      and so should be used only when it's really required as they are easy to misuse

Bug fixes

  • Fix mingw linking because of zlib (#13)

Breaking changes

  • Replace InsecureAlgorithm annotation with DelicateCryptographyApi - API breaking change
  • publicExponent parameter in RSA keyPairGenerator is now of type BigInt - both API and ABI breaking change
  • RSA key formats are now implemented via sealed class instead of enum - ABI breaking change

General improvements

  • Kotlin 1.9.22
  • Update the prebuilt OpenSSL version to 3.2.0
  • Test OpenSSL provider over 3.0, 3.1, 3.2
  • A lot of changes and improvements to build, tests and CI configuration

Experimental features

  • Introduce support for BigInt
    • use platform specifics where possible
    • RSA public exponent now works in the same way for all providers
    • all Kotlin targets supported
  • Introduce support for PEM encoding/decoding
    • fully common implementation
  • Introduce support for ASN.1/DER serialization

For more information please consult documentation: https://whyoleg.github.io/cryptography-kotlin/

0.2.0 - New algorithms, Android integration testing

05 Sep 08:35
Compare
Choose a tag to compare

New algorithms

  • RSA.PKCS1 (RSAES-PKCS1-v1_5) - supported by JDK, WebCrypto and OpenSSL3 providers #5
  • SHA224 - supported by JDK, OpenSSL3 and Apple providers
  • SHA3 family - supported by JDK and OpenSSL3 providers

Testing improvements

  • Support running tests with BouncyCastle in addition to default JDK provider
  • Support running JDK provider tests on Android emulator with API level 21, 27 and 30
  • Add ECDSA with secp256k1 curve testing (supported by JDK BouncyCastle and OpenSSL3 providers) #4

General improvements

  • Kotlin 1.9.10
  • a lot of under the hood changes to improve test coverage and test correctness

Breaking changes

  • providers artifacts and package name changes. F.e. for JDK provider:
    • maven artifact name changed from cryptography-jdk to cryptography-provider-jdk
    • package name changed from dev.whyoleg.cryptography.jdk to dev.whyoleg.cryptography.providers.jdk
  • several classes and annotation changed package name to dev.whyoleg.cryptography to simplify hierarchy:
    • CryptographyAlgorithm
    • CryptographyAlgorithmNotFoundException
    • CryptographyProvider
    • CryptographyProviderApi
    • InsecureAlgorithm
  • simplified JDK provider with custom provider creation
    • JdkProvider class removed
    • java.security.Provider or it's name can be now directly provided in constructor function
      • before: CryptographyProvider.JDK(JdkProvider.Instance(BouncyCastleProvider())) or CryptographyProvider.JDK(JdkProvider.Name("BC"))
      • now: CryptographyProvider.JDK(BouncyCastleProvider()) or CryptographyProvider.JDK("BC")

For more information please consult documentation: https://whyoleg.github.io/cryptography-kotlin/

0.1.0 - First release

23 Mar 08:55
Compare
Choose a tag to compare

cryptography-kotlin is available on Maven Central!

Library provides multiplatform API which consists of multiple components:

The library doesn't implement any cryptography algorithm on its own, but wraps well-known future-proof solutions like OpenSSL 3.x, WebCrypto or JCA with type-safe multiplatform API providing uniform experience with aligned default behaviour, and same expected results using identical parameters while allowing to use platform-specific capabilities. For supported algorithms, primitives and targets, please consult Providers documentation

Detailed documentation can be found on project website as well as in API reference