- From: =JeffH via GitHub <sysbot+gh@w3.org>
- Date: Sun, 06 Nov 2016 17:19:02 +0000
- To: public-webauthn@w3.org
equalsJeffH has just created a new issue for
https://github.com/w3c/webauthn:
== Refine meaning of ScopedCredentialType to be "signature & assertion
format (and version thereof)" ==
**Summary:** Refine meaning of ScopedCredentialType to be "signature &
assertion format (and version thereof)"
**Background:**
See (short three-message) thread beginning here:
https://lists.w3.org/Archives/Public/public-webauthn/2016Jul/0043.html
>From the initial message in thread from @equalsJeffH :
Subject: CredentialType (was: TAG review feedback: Align Credential
interface with Credential Management?
On 7/6/16, 9:05 AM, "Hodges, Jeff" <jeff.hodges@paypal.com> wrote:
> On 7/5/16, 11:59 PM, "Vijay Bharadwaj via GitHub" <sysbot+gh@w3.org>
wrote:
>>- Possibly rename CredentialType to version to make it clearer what
this field signifies (since ScopedCredential is itself arguably a
credential type and ScopedCredentialType is unwieldy)
[ tho Mike West has replied to the original msg, the below is a
tangentially related subitem of the latter ]
the WebAuthentication API <https://w3c.github.io/webauthn/#idl-index>
is
only about what we've so far called "ScopedCredentials", which have
various overall characteristics such as utilizing asymmetric key
pairs,
plus associated signature and hash algs, and being scoped to RPs based
on
eTLD+1.
So I agree with Vijay that we should rename CredentialType. As Vijay
noted
(on the call today) that someone(s) have mentioned: perhaps it could
be
used to signify assertions' particular construction aka "signature &
assertion format", in similar fashion to "attestation format". I think
we
should look into doing that, which inherently incorporates a notion of
"version" because if in the future a particular "signature &
assertion
format" is altered, we can assign the new format a new name.
Also, presently, CredentialType (aka SignatureFormat) and
AlgorithmIdentifier (i.e., the cryptographic parameters) are separate
items..
```
dictionary ScopedCredentialParameters {
required CredentialType type;
required AlgorithmIdentifier algorithm;
};
```
..and, AFAICT, the signature format section [1] of the spec is
orthogonal
to the particular crypto key pair type + sig alg, which are specified
by
ScopedCredentialParameters.algorithm.
So perhaps we can rename CredentialType to something like
SignatureAndAssertionFormat, and term the present construction as
"ScopedCred1" or something like that..
```
enum SignatureAndAssertionFormat {
"ScopedCred1"
};
```
..where a particular SignatureAndAssertionFormat value signifies a
given
composition of the clientData, authenticatorData, signature components
of
a WebAuthnAssertion..
```
interface WebAuthnAssertion {
readonly attribute Credential credential;
readonly attribute ArrayBuffer clientData;
readonly attribute ArrayBuffer authenticatorData;
readonly attribute ArrayBuffer signature;
};
```
..and "ScopedCred1" represents the specification of the contents of
those
components as specified in the WebAuthn spec.
What I'd offhand like to try to specify is something like (borrowing
from
TLS presentation language here (RFC5246)..
```
interface Credential {
readonly attribute SignatureAndAssertionFormat sigAssnFmt;
readonly attribute BufferSource id;
};
interface WebAuthnAssertion {
readonly attribute Credential credential;
select from credential.sigAssnFmt {
case "ScopedCred1": // defined in WebAuthn Level 1
spec
readonly attribute ArrayBuffer clientData;
readonly attribute ArrayBuffer authenticatorData;
readonly attribute ArrayBuffer signature;
case "...": // defined in <fill-in-here> spec
...;
};
};
```
..but I don't know whether and how to do that in proper webidl.
thoughts?
=JeffH
[1] https://w3c.github.io/webauthn/#signature-format
>From final message in thread from @equalsJeffH :
On 7/7/16, 1:02 AM, "Vijay Bharadwaj" <vijaybh@microsoft.com> wrote:
>One way to do this would be to use inheritance - define a base type
WebAuthnAssertion with just a credential member and then derive
interfaces from it with additional members as needed.
gotcha.
>Another way would be to define the assertion as having type any, and
specify in the text of the spec how the type is determined based on
the
AssertionFormat
yeah like we're doing with WebAuthnAttestation.statement.
I guess either would work. I'm not sure of the longer-term tradeoffs.
since we're already using one of the approaches, perhaps we should
re-use
that approach for consistency?
>AssertionFormat (how do you feel about this shortened name btw?).
works for me as long as we clearly indicate that it encompasses all of
sig
format and contextual data content & formats.
If we were using abbreviated names in the API, I would name it
SigAndAssnFormat, but we're not doing that...
=JeffH
Please view or discuss this issue at
https://github.com/w3c/webauthn/issues/296 using your GitHub account
Received on Sunday, 6 November 2016 17:19:10 UTC