Skip to content

Commit 536bb84

Browse files
committed
Release 0.3.0
- Major API overhaul; public API changes include but are not limited to: - Reorganised package structure - `CredentialRepository.getCredentialIdsForUsername(String)` now returns `Set` instead of `List` - Most data classes now expose a builder instead of a public constructor - Shortcut constants added to `COSEAlgorithmIdentifier` and `PublicKeyCredentialParameters` - Exception `U2fBadConfigurationException` renamed to `BadConfigurationException` - `RelyingParty.startRegistration` now accepts one `StartRegistrationOptions` parameter instead of several parameters - `RelyingParty.finishRegistration` now accepts one `FinishRegistrationOptions` parameter instead of several parameters - `RelyingParty.startAssertion` now accepts one `StartAssertionOptions` parameter instead of several parameters - `RelyingParty.finishAssertion` now accepts one `FinishAssertionOptions` parameter instead of several parameters - `RelyingParty.finishRegistration` now throws checked `RegistrationFailedException` instead of `IllegalArgumentException` on most failures - `RelyingParty.finishAssertion` now throws checked `AssertionFailedException` instead of `IllegalArgumentException` on most failures - Class `MetadataResolver` replaced with interface - Constructor `CollectedClientData(JsonNode)` deleted - Type of fields `StartAssertionOptions.extensions`, `StartRegistrationOptions.extensions` and `PublicKeyCredential.clientExtensionOutputs` narrowed from `JsonNode` to `ObjectNode` - Parameters `StartRegistrationOptions.excludeCredentials` and `StartAssertionOptions.allowCredentials` deleted; they are now discovered automatically from the `CredentialRepository`. If custom control over `excludeCredentials` or `allowCredentials` is needed, modify the `PublicKeyCredentialCreationOptions` or `PublicKeyCredentialRequestOptions` object manually. - `COSEAlgorithmIdentifier` is now an actual enum - Extensions are now passed and returned as domain objects instead of as Jackson types - Type parameter added to `PublicKeyCredential` to express extensions type - Fields `CollectedClientData.authenticatorExtensions` and `.clientExtensions` deleted - Fixed a bug in `AuthenticatorDataFlags` that caused the `ED` (0x80) flag to never be set - All classes in `com.yubico.webauthn.data` can now be serialized and deserialized using Jackson - JSON output has been slightly changed: - `AttestationObject`, `AuthenticatorData` and `CollectedClientData` now serialize back to Base64Url encoded bytes instead of to JSON objects - Member `_attestationObject` removed from serialized `AuthenticatorAttestationResponse` - Member `authenticatorData` removed from serialized `AuthenticatorAttestationResponse` - New methods `ByteArray.size(): int` and `.isEmpty(): boolean` - `ByteArray` is now `Comparable` to itself - Added support for `appid` extension
2 parents 5bb3a25 + 39d643b commit 536bb84

File tree

189 files changed

+5905
-3962
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

189 files changed

+5905
-3962
lines changed

NEWS

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,62 @@
1+
== Version 0.3.0 ==
2+
3+
* Major API overhaul; public API changes include but are not limited to:
4+
** Reorganised package structure
5+
** `CredentialRepository.getCredentialIdsForUsername(String)` now returns `Set`
6+
instead of `List`
7+
** Most data classes now expose a builder instead of a public constructor
8+
** Shortcut constants added to `COSEAlgorithmIdentifier` and
9+
`PublicKeyCredentialParameters`
10+
** Exception `U2fBadConfigurationException` renamed to
11+
`BadConfigurationException`
12+
** `RelyingParty.startRegistration` now accepts one `StartRegistrationOptions`
13+
parameter instead of several parameters
14+
** `RelyingParty.finishRegistration` now accepts one
15+
`FinishRegistrationOptions` parameter instead of several parameters
16+
** `RelyingParty.startAssertion` now accepts one `StartAssertionOptions`
17+
parameter instead of several parameters
18+
** `RelyingParty.finishAssertion` now accepts one `FinishAssertionOptions`
19+
parameter instead of several parameters
20+
** `RelyingParty.finishRegistration` now throws checked
21+
`RegistrationFailedException` instead of `IllegalArgumentException` on most
22+
failures
23+
** `RelyingParty.finishAssertion` now throws checked
24+
`AssertionFailedException` instead of `IllegalArgumentException` on most
25+
failures
26+
** Class `MetadataResolver` replaced with interface
27+
** Constructor `CollectedClientData(JsonNode)` deleted
28+
** Type of fields `StartAssertionOptions.extensions`,
29+
`StartRegistrationOptions.extensions` and
30+
`PublicKeyCredential.clientExtensionOutputs` narrowed from `JsonNode` to
31+
`ObjectNode`
32+
** Parameters `StartRegistrationOptions.excludeCredentials` and
33+
`StartAssertionOptions.allowCredentials` deleted; they are now discovered
34+
automatically from the `CredentialRepository`. If custom control over
35+
`excludeCredentials` or `allowCredentials` is needed, modify the
36+
`PublicKeyCredentialCreationOptions` or `PublicKeyCredentialRequestOptions`
37+
object manually.
38+
** `COSEAlgorithmIdentifier` is now an actual enum
39+
** Extensions are now passed and returned as domain objects instead of as Jackson
40+
types
41+
** Type parameter added to `PublicKeyCredential` to express extensions type
42+
** Fields `CollectedClientData.authenticatorExtensions` and `.clientExtensions`
43+
deleted
44+
* Fixed a bug in `AuthenticatorDataFlags` that caused the `ED` (0x80) flag to
45+
never be set
46+
* All classes in `com.yubico.webauthn.data` can now be serialized and
47+
deserialized using Jackson
48+
** JSON output has been slightly changed:
49+
*** `AttestationObject`, `AuthenticatorData` and `CollectedClientData` now serialize back to
50+
Base64Url encoded bytes instead of to JSON objects
51+
*** Member `_attestationObject` removed from serialized
52+
`AuthenticatorAttestationResponse`
53+
*** Member `authenticatorData` removed from serialized
54+
`AuthenticatorAttestationResponse`
55+
* New methods `ByteArray.size(): int` and `.isEmpty(): boolean`
56+
* `ByteArray` is now `Comparable` to itself
57+
* Added support for `appid` extension
58+
59+
160
== Version 0.2.0 ==
261

362
* Core library now recognises username as an internally relevant concept

build.gradle

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,6 @@ allprojects {
7373
evaluationDependsOnChildren()
7474

7575
subprojects {
76-
apply plugin: 'info.solidsoft.pitest'
77-
7876
task packageSources(type: Jar) {
7977
classifier = 'sources'
8078
from sourceSets.main.allSource
@@ -148,21 +146,6 @@ subprojects {
148146
}
149147
}
150148
}
151-
152-
pitest {
153-
pitestVersion = '1.4.2'
154-
155-
timestampedReports = false
156-
outputFormats = ['XML', 'HTML']
157-
158-
avoidCallsTo = [
159-
'java.util.logging',
160-
'org.apache.log4j',
161-
'org.slf4j',
162-
'org.apache.commons.logging',
163-
'com.google.common.io.Closeables',
164-
]
165-
}
166149
}
167150

168151
task pitestMerge(type: com.yubico.gradle.pitest.tasks.PitestMergeTask)

settings.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
rootProject.name = 'webauthn-server-parent'
2+
include ':webauthn-server-attestation'
23
include ':webauthn-server-core'
34
include ':webauthn-server-demo'
5+
include ':yubico-util'
6+
include ':yubico-util-scala'
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
description = 'Yubico WebAuthn attestation subsystem'
2+
3+
apply plugin: 'java'
4+
5+
dependencies {
6+
7+
compile(
8+
project(':webauthn-server-core'),
9+
'org.bouncycastle:bcpkix-jdk15on:1.54',
10+
'com.google.guava:guava:19.0',
11+
)
12+
13+
testCompile(
14+
'org.mockito:mockito-core:2.10.0',
15+
)
16+
17+
}
18+
19+
20+
jar {
21+
manifest {
22+
attributes([
23+
'Implementation-Id': 'java-webauthn-server-attestation',
24+
'Implementation-Title': project.description,
25+
'Implementation-Version': project.version,
26+
'Implementation-Vendor': 'Yubico',
27+
])
28+
}
29+
}
30+

webauthn-server-core/src/main/java/com/yubico/u2f/attestation/DeviceMatcher.java renamed to webauthn-server-attestation/src/main/java/com/yubico/webauthn/attestation/DeviceMatcher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* Copyright 2015 Yubico */
22

3-
package com.yubico.u2f.attestation;
3+
package com.yubico.webauthn.attestation;
44

55
import com.fasterxml.jackson.databind.JsonNode;
66
import java.security.cert.X509Certificate;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/* Copyright 2015 Yubico */
2+
3+
package com.yubico.webauthn.attestation;
4+
5+
import java.security.cert.X509Certificate;
6+
import java.util.Optional;
7+
8+
public interface MetadataResolver {
9+
Optional<MetadataObject> resolve(X509Certificate attestationCertificate);
10+
}

0 commit comments

Comments
 (0)