This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.
ECDH says that key usages must contain deriveKey or deriveBits in step 3 for type jwk. ECDH says that key usages must be empty in step 4 for type jwk. The two are mutually incompatable. I assume one is supposed to be for when d is absent as both are marked as being for d being present.
Can you please provide a link to the revision you are quoting? From the current https://dvcs.w3.org/hg/webcrypto-api/raw-file/d73602c274f0/spec/Overview.html#ecdh-operations Import Key JWK 3. If the "d" field is present and if usages contains an entry which is not "deriveKey" or "deriveBits" then throw a SyntaxError. 4. If the "d" field is present and if usages is not empty then throw a SyntaxError.
I agree with Jim, the language in step 4 seems reversed. It would make more sense if it read: If the "d" field is *NOT* present and if usages is not empty then throw a SyntaxError. Which phrased differently is "public ECDH keys must have empty usages". (The prohibition of private ECDH keys having empty usages is already covered by the generic language of importKey() which place such a restriction on secret/private keys)
as near as I can tell this has been fixed,