- From: Hodges, Jeff <jeff.hodges@paypal.com>
- Date: Thu, 7 Jul 2016 18:16:58 +0000
- To: Vijay Bharadwaj <vijaybh@microsoft.com>
- CC: "public-webauthn@w3.org" <public-webauthn@w3.org>
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
>
>-----Original Message-----
>From: Hodges, Jeff [mailto:jeff.hodges@paypal.com]
>Sent: Wednesday, July 06, 2016 5:20 PM
>To: public-webauthn@w3.org
>Subject: [webauthn] 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
>
>
>
>
>
Received on Thursday, 7 July 2016 18:21:34 UTC