Skip to content

Commit 1fb511f

Browse files
committed
Release 3.5.0
**Fixes** * Fix calculation of JWK thumbprints according to [RFC7638](https://www.rfc-editor.org/rfc/rfc7638.html) **Changes** * Add `provider` module that actually implements cryptography! (Currently in preview, signature verification only) * Add `COSE_Key` header to `CoseHeader`, defined in OpenID for Verifiable Credential Issuance draft 13 * Fix serialization of COSE signature structures * Refactor `JsonWebKey`: * Remove `identifier`, please use `keyId` or `jwkThumbprint` directly * Add `equalsCryptographically()` to compare two keys by their cryptographic properties only * Externalise multibase implementation
1 parent b1c30ee commit 1fb511f

File tree

4 files changed

+19
-13
lines changed

4 files changed

+19
-13
lines changed

CHANGELOG.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,16 +173,16 @@
173173
* Bignum 0.3.10 stable
174174
* okio 3.9.0
175175

176-
### NEXT
176+
### 3.5.0
177177

178178
**Fixes**
179179
* Fix calculation of JWK thumbprints according to [RFC7638](https://www.rfc-editor.org/rfc/rfc7638.html)
180180

181181
**Changes**
182-
* Add `provider` module that actually implements cryptography!
182+
* Add `provider` module that actually implements cryptography! (Currently in preview, signature verification only)
183183
* Add `COSE_Key` header to `CoseHeader`, defined in OpenID for Verifiable Credential Issuance draft 13
184184
* Fix serialization of COSE signature structures
185185
* Refactor `JsonWebKey`:
186186
* Remove `identifier`, please use `keyId` or `jwkThumbprint` directly
187187
* Add `equalsCryptographically()` to compare two keys by their cryptographic properties only
188-
* Externalise Mullbase implementation
188+
* Externalise multibase implementation

README.md

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
[![Java](https://img.shields.io/badge/java-17+-blue.svg?logo=OPENJDK)](https://www.oracle.com/java/technologies/downloads/#java11)
88
[![Maven Central](https://img.shields.io/maven-central/v/at.asitplus.crypto/datatypes)](https://mvnrepository.com/artifact/at.asitplus.crypto/datatypes/)
99

10-
## Kotlin Multiplatform Crypto/PKI Library and ASN1 Parser + Encoder
10+
## Kotlin Multiplatform Crypto/PKI Library with ASN1 Parser + Encoder
1111

1212
_(We are not doing the Prince thing; the emojis are not part of the project name)_
1313

@@ -25,6 +25,7 @@ types and functionality related to crypto and PKI applications:
2525
* COSE-related data structures (COSE Keys, CWT, etc…)
2626
* Serializability of all ASN.1 classes for debugging **AND ONLY FOR DEBUGGING!!!** *Seriously, do not try to deserialize ASN.1 classes through kotlinx.serialization! Use `decodeFromDer()` and its companions!*
2727
* 100% pure Kotlin BitSet
28+
* Exposes Multibase Encoder/Decoder as an API dependency including [Matthew Nelson's smashing Base16, Base32, and Base64 encoders](https://github.com/05nelsonm/encoding)
2829
* **ASN.1 Parser and Encoder including a DSL to generate ASN.1 structures**
2930

3031
This last bit means that
@@ -40,12 +41,12 @@ the JVM, Android and iOS.
4041

4142
This library consists of four modules, each of which is published on maven central:
4243

43-
| Name | Info | Maven Coordinates |
44-
|------|------------------------------------------------------------------------------------------------------------------------------|-------------------------------------|
45-
| `provider` | KMP module implementing the actual cryptographic operations. | `at.asitplus.crypto:provider` |
46-
| `datatypes` | Base module containing the cryptographic data strucures, algorithm identifiers, the ASN.1 parser, OIDs, X.509 certificate, … | `at.asitplus.crypto:datatypes` |
47-
| `datatypes-jws` | JWS/JWE/JWT add-on module containing JWS/E/T-specific data structures and extensions to convert from/to types contained in the base module. Includes all required kotlinx-serialization magic to allow for spec-compliant de-/serialization. | `at.asitplus.crypto:datatypes-jws` |
48-
|`datatypes-cose` | COSE add-on module containing all COSE/CWT-specific data structures and extensions to convert from/to types contained in the base module. Includes all required kotlinx-serialization magic to allow for spec-compliant de-/serialization. | `at.asitplus.crypto:datatypes-cose` |
44+
| Name | Info | Maven Coordinates |
45+
|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------|
46+
| `provider` | **Preview** KMP module implementing signature verification across platforms. | `at.asitplus.crypto:provider` |
47+
| `datatypes` | Base module containing the cryptographic data strucures, algorithm identifiers, the ASN.1 parser, OIDs, X.509 certificate, … | `at.asitplus.crypto:datatypes` |
48+
| `datatypes-jws` | JWS/JWE/JWT add-on module containing JWS/E/T-specific data structures and extensions to convert from/to types contained in the base module. Includes all required kotlinx-serialization magic to allow for spec-compliant de-/serialization. | `at.asitplus.crypto:datatypes-jws` |
49+
| `datatypes-cose` | COSE add-on module containing all COSE/CWT-specific data structures and extensions to convert from/to types contained in the base module. Includes all required kotlinx-serialization magic to allow for spec-compliant de-/serialization. | `at.asitplus.crypto:datatypes-cose` |
4950

5051
This separation keeps dependencies to a minimum, i.e. it enables including only JWT-related functionality, if COSE is irrelevant.
5152

@@ -58,7 +59,7 @@ implementation("at.asitplus.crypto:datatypes:$version")
5859
```
5960

6061
```kotlin
61-
implementation("at.asitplus.crypto:provider:$version")
62+
implementation("at.asitplus.crypto:provider:0.1.0-PRE")
6263
```
6364

6465
```kotlin
@@ -416,6 +417,8 @@ SEQUENCE (8 elem)
416417
```
417418

418419
## Limitations
420+
421+
* Multiplatform signature verification **only** based on platform verifiers (and a fallback 100% KMP verifier) ist included as a prerelease. signature creation is on its way.
419422
* While the ASN.1 parser will happily parse any valid **DER-encoded** ASN.1 structure you throw at it and the encoder will
420423
write it back correctly too. (No, we don't care for BER, since we want to transport cryptographic material!)
421424
* Higher-level abstractions (such as `X509Certificate`) are too lenient in some aspects and
@@ -432,10 +435,13 @@ SEQUENCE (8 elem)
432435
for a couple of months now and we're improving whenever we hit an issue.
433436
* Number of supported Algorithms is limited to the usual suspects (sorry, no Bernstein curves )-:)
434437

438+
435439
<br>
436440

437441
---
442+
438443
<p align="center">
439444
The Apache License does not apply to the A-SIT logo, as it is the sole property of
440445
A-SIT/A-SIT Plus GmbH and may not be used without explicit permission!
441446
</p>
447+

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ kotlin.code.style=official
22
kotlin.js.compiler=ir
33
org.gradle.jvmargs=-Xmx4g -Dfile.encoding=UTF-8
44

5-
artifactVersion = 3.3.0-SNAPSHOT
5+
artifactVersion = 3.5.0
66
org.gradle.caching=false
77
org.gradle.configuration-cache=false
88
# This is not a well-defined property, the ASP convention plugin respects it, though

provider/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ buildscript {
2929
val kmp_crypto: String by project
3030

3131

32-
version = "0.0.4-SNAPSHOT"
32+
version = "0.1.0-PRE"
3333

3434
wireAndroidInstrumentedTests()
3535

0 commit comments

Comments
 (0)