Releases: a-sit-plus/signum
3.18.2 / Supreme 0.10.2
- Fixes
- Fix memory management on iOS
 
 - Dependency Updates:
- Kotlin 2.2.21
 - Kotlinx.io 0.8.0
 - crypto-rand 0.6.0
 
 - Build Setup:
- Remove Swift-Klib and massively cleanup Swift Interop
 
 
3.18.1 / Supreme 0.10.1
Fix Android target pulling in JDK-21-specifics (KT-71375)
3.18.0 / Supreme 0.10.0
- Fixes:
- Fix memleak on iOS targets
 - Add stricter length checks to be more resilient towards adversarial inputs
 - Fix RSA signing on Android
 - Correct serialization logic for symmetric 
CoseKeyinCoseKeySerializer - Fix 
prettyPrintfor structures 
 Asn1Stringrevamp- Deprecated 
Asn1Primitive.asAsn1String(), moved decoding logic intoAsn1String.doDecode() - Added specific decodeTo functions in 
Asn1Primitivefor every string type that follow usual pattern for decoding primitive, when dealing with implicit tags caller should call function for decoding specific string type. If we do something like 'Asn1String.decodeFromTlv()` we expect explicit tag. - Added 
Asn1String.rawValueproperty for storing raw ByteArray of the string, used in checks for several charsets and good for reencoding Asn1String, it will be encoded as it was before decoding 
- Deprecated 
 - Add COSE_Mac0 support with 
CoseMacclass - Introduce 
ProtectedCoseHeaderSerializerfor serialization/deserialization protected header - Replace raw-byte protected header and its ByteArray extension serialization with 
CoseHeaderusing the new serializer - Allow overriding randomness source for symmetric key generation
- requires HazMat opt in
 - provides only secure random (insecure/test/faux RNGs need to be implemented by consumers)
 
 - Extend properties in 
JweHeader - Strictly enforce RFC3394 key wrapping on Android
 - Build Setup:
- Kotlin 2.2.20
 - TestBalloon-powered tests
 - New KMP-AGP Plugin
 - Raise Android minSDK to 26 (Android 8.0 Oreo)
 - Make it possible to disable all apple targets by setting Gradle property 
disableAppleTargets=true(either throughgradle.properties/local.propertiesor as env variable) - Auto-setup unsupported JVM toolchains
 
 
3.17.0 (Supreme 0.9.0)
- KDF Support
- PBKDF2
 - HKDF
 - scrypt
 
 - RSA encryption using in-memory keys (no hardware-backed key management yet)
 - X.509 Revamp
- Introduce 
X509SignatureAlgorithmDescription, which is the OID + params pair that identifies aX509SignatureAlgorithm- Instances of 
X509SignatureAlgorithmrepresent algorithms that are known to Signum - Test 
.isSupported()or.requireSupported()(with contract smart-cast support) 
 - Instances of 
 X509CertificateandPkcs10CertificationRequestnow useX509SignatureAlgorithmDescriptionto represent a non-validated signature algorithm- Refactor 
X509CertificateandTbsCertificateto store the raw signature asAsn1Primitiveand the raw public key asAsn1Sequenceenabling support for certificates with unsupported signature algorithms- Use the new KmmResult-returning 
decodedSignatureanddecodedPublicKeymembers to replacepublicKeyandsignature, respectively. - The old 
publicKeyandsignatureare being deprecated. 
 - Use the new KmmResult-returning 
 - Refactor 
Pkcs10CertificationRequestto store the raw signature asAsn1Primitiveenabling unsupported signature algorithms- Use the new KmmResult-returning 
decodedSignatureanddecodedPublicKey, respectively. 
 - Use the new KmmResult-returning 
 
 - Introduce 
 - Add structured iterator-based decoding of 
Asn1Structure.Asn1Structurenow implementsIterable<Asn1Element>:- Deprecate child accessors in 
Asn1Structurewith deprecation level ERROR:nextChild()nextChildOrNull()hasMoreChildren()peek()
 - Add inner 
Iteratorfor child accesses- Add 
Iterator.reversed()method for getting a new iterator from an existing one, but with reversed direction, keeping the current index - Add 
Asn1Structure.reverseIterator()to get a reversed iterator right away, to iterate over all child elements in reverse. 
 - Add 
 - Add 
decodeAs()for decoding ASN.1 structures via iterator-based lambda, moved trailing data check fromdecodeFromTlv()todecodeAs() - Refactor 
doDecode()implementations inAsn1Structuresubclasses to use the newdecodeAs()iterator-based API instead of deprecated child access methods. 
 - Deprecate child accessors in 
 - Add 
SpecializedSymmetricEncryptionAlgorithm- This allows 
randomKey()etc to operate on COSE/JWE algorithms 
 - This allows 
 - Move constants of 
KnownOIDsinto a discrete moduleindispensable-oidsas extensions on theKnownOIDsobject- → update your imports!
 
 - ASN.1 polishing:
- rename 
Asn1Element.lengthproperty toAsn1Element.contentLength(and add a delegate with the old name and deprecation annotation to the new property) - Add missing 
Asn1.Realshorthand to the ASN.1 builder - Add 
Asn1Nullconstant - Add human-readable ASN.1 element 
prettyPrint()method - Make 
Asn1OctetStringinterface sealed 
 - rename 
 - Strippable 
KnownOIDs- Move 
KnownOIDsinto a discrete moduleindispensable-oids 
 - Move 
 - OID descriptions:
KnownOIDsnow implementsMutableMap<ObjectIdentifier, String>to store and look up descriptions of Object Identifiers- OIDs can hence be described using 
KnownOIDs[theExpressionistsOid] = "Edvard Munch" - OID descriptions are exposed in accordance with the map interface: 
KnownOIDs[theExpressionistsOid]will yield"Edvard Munch"if this description was added prior. - All OIDs present in 
KnownOIDsshipped with theindispensable-oidsmodule come with a description. To actually add them to all known descriptions, callKnownOIDs.describeAll()once. 
 - Deprecate 
serialize()anddeserialize()methods in COSE+ JOSE data classes - Clean up some function signatures:
SymmetricKey.toJsonWebKeynow returnsKmmResultSymmetricEncryptionAlgorithm.toJweKwAlgorithmnow returnsKmmResultSymmetricEncryptionAlgorithm.toJweEncryptionAlgorithmremoved
 - In 
JwsHeaderadd propertyvcTypeMetadatawith keyvctm, see SD-JWT VC - Dependency Updates:
- Kotlin 2.2.0
 - AGP 8.10.0
 kotlincrypto:secure-random:0.3.2->kotlincrypto.random:crypto-rand:0.5.0- This fixes key generation in WASM/JS
 
- kotlinx.io 0.7.0
 - Update to kotlinx.datetime 0.7.1.
- This moves Instant and Clock to stdlib
 - (but introduces typealiases for easier migration)
 - Also forces serialization 1.9.0
 
 - Update to latest conventions plugin:
- Bouncy Castle 1.81!!
 - Serialization 1.9.0
 - Coroutines 1.10.2
 - Ktor 3.2.2
 - Kotest 6.0.0.M5
 
 
 
3.16.3 / 0.8.3 indispensable-only Hotfix
- Fix erroneous Base64URL encoding in JOSE data classes
toString()ofX509CertificateandTbsCertificatehave also been adapted to use Base64 Strict
 - Add missing serializers in addition to Base64Url encoding:
X509CertificateBase64SerializerCertificateChainBase64Serializer
 - More targets:
- watchosSimulatorArm64
 - watchosX64
 - watchosArm32
 - watchosArm64
 - androidNativeX64
 - androidNativeX86
 - androidNativeArm32
 - androidNativeArm64
 - watchosArm64 (ASN.1-only!)
 
 - Drop OKIO dependency from 
indispensable-josefwhich was only ever used for to compute a SHA-256 thumbprint and replace it by a pure kotlin SHA-256 implementation 
3.16.2 / 0.8.3 Supreme-Only Hotfix
- Set minimum iOS version to 15
 - Fix Swift compat linker errors (closes #280)
 
3.6.2 (Supreme 0.8.2) Lower minSDK
- Lower Android 
minSDKto 21 (5.0 Lollipop) for all modules Except Supreme - Update AGP to 8.6.1
 - Dependency Updates:
- KmmResult 1.9.2 (for Android SDK 21 compat)
 
 
3.6.1 (Supreme 0.8.1) Hotfix
- Generalized, proper COSE to MAC mapping, preventing unexpected behaviour for 
HS265_24 
3.16.0 (Supreme 0.8.0)
Symmetric Encryption and Major Cleanups
- 
Note: All debug-only kotlinx.serialization for cryptographic datatypes like certificates, public keys, etc. was removed!
- We support robust ASN.1 encoding and mapping from/to JOSE and COSE datatypes and our ASN.1 structures support pretty printing.
 - -> There is no need for this misleading serialization support for debugging anymore.
 @Serializablesuggests deserialization from JSON, CBOR, etc. works, which was never universally true.- Getting native ASN.1 serialization for kotlinx-serialization is now a no-brainer given we support every primitive required.
 - Serializers like 
X509CertificateBase64UrlSerializerare here to stay because those are universally useful! ObjectIdSerializerwas renamed toObjectIdentifierStringSerializer
 - 
HMAC Support
- This finally cleans up the 
RSAorHMACmess, which is a breaking change - Introduce umbrella 
DataIntegrityAlgorithms, which is the parent ofSignatureAlgorithmandMessageAuthenticationCode JwsAlgorithmandCoseAlgorithmare now abstract, having subclasses.JwsAlgorithms andCoseAlgorithms are now available under.Signatureand.MACrespectively. There are no toplevel constants of predefined algorithms anymore!
 - This finally cleans up the 
 - 
Symmetric Encryption
- Supported Algorithms
- AES
- GCM
 - CBC-HMAC
 - CBC
 - ECB
 - KW
 
 - ChaCha-Poly1305
 
 - AES
 - Add algorithm mappings to indispensable-josef This is a binary-incompatible change
ivLengthandencryptionKeyLengthnow returnBitLengthinstead ofInttextis now properly calledidentifier
 
 - Supported Algorithms
 - 
Move
HazardousMaterialsannotation fromsupremetoindispensableThis is a breaking change - 
Move
SecretExposureannotation fromsupremetoindispensableThis is a breaking change - 
Expose
SecureRandomas API dependency inindispensable - 
Rename
CoseAlgorithm.value->CoseAlgorithm.coseValue - 
Fix COSE key parsing for unordered properties
 - 
Remove code elements deprecated in 3.15.0, related to OID4VCI and HAIP
 
3.15.2
Parse not-implemented EC curves as null, e.g. in Json Web Keys.
This release does not contain a new Supreme version, as it is unaffected by these changes