{"action":"created","issue":{"url":"https://api.github.com/repos/w3c/webauthn/issues/412","repository_url":"https://api.github.com/repos/w3c/webauthn","labels_url":"https://api.github.com/repos/w3c/webauthn/issues/412/labels{/name}","comments_url":"https://api.github.com/repos/w3c/webauthn/issues/412/comments","events_url":"https://api.github.com/repos/w3c/webauthn/issues/412/events","html_url":"https://github.com/w3c/webauthn/issues/412","id":223226569,"number":412,"title":"RawId vs Id is confusing","user":{"login":"leshi","id":1407369,"avatar_url":"https://avatars2.githubusercontent.com/u/1407369?v=3","gravatar_id":"","url":"https://api.github.com/users/leshi","html_url":"https://github.com/leshi","followers_url":"https://api.github.com/users/leshi/followers","following_url":"https://api.github.com/users/leshi/following{/other_user}","gists_url":"https://api.github.com/users/leshi/gists{/gist_id}","starred_url":"https://api.github.com/users/leshi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leshi/subscriptions","organizations_url":"https://api.github.com/users/leshi/orgs","repos_url":"https://api.github.com/users/leshi/repos","events_url":"https://api.github.com/users/leshi/events{/privacy}","received_events_url":"https://api.github.com/users/leshi/received_events","type":"User","site_admin":false},"labels":[{"id":573653000,"url":"https://api.github.com/repos/w3c/webauthn/labels/priority:implementation","name":"priority:implementation","color":"006b75","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-04-20T23:03:50Z","updated_at":"2017-04-20T23:38:37Z","closed_at":null,"body":"Having two credential ID values is confusing.  Do we really need two?\r\n\r\nIf we only keep one, we are stuck (as a result of the merge) with the String one.  This feels odd as I *think* you don't get a String type when you upload a file, and you don't get a String type when you operate on stuff in webcrypto, and the camera APIs don't return String type, and webbluetooth doesn't operate on Strings...\r\n\r\nAlso, what the meaning of 'id' seems to be completely different between different Credential types.  That also seems super confusing."},"comment":{"url":"https://api.github.com/repos/w3c/webauthn/issues/comments/295969440","html_url":"https://github.com/w3c/webauthn/issues/412#issuecomment-295969440","issue_url":"https://api.github.com/repos/w3c/webauthn/issues/412","id":295969440,"user":{"login":"jyasskin","id":83420,"avatar_url":"https://avatars2.githubusercontent.com/u/83420?v=3","gravatar_id":"","url":"https://api.github.com/users/jyasskin","html_url":"https://github.com/jyasskin","followers_url":"https://api.github.com/users/jyasskin/followers","following_url":"https://api.github.com/users/jyasskin/following{/other_user}","gists_url":"https://api.github.com/users/jyasskin/gists{/gist_id}","starred_url":"https://api.github.com/users/jyasskin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jyasskin/subscriptions","organizations_url":"https://api.github.com/users/jyasskin/orgs","repos_url":"https://api.github.com/users/jyasskin/repos","events_url":"https://api.github.com/users/jyasskin/events{/privacy}","received_events_url":"https://api.github.com/users/jyasskin/received_events","type":"User","site_admin":false},"created_at":"2017-04-20T23:38:37Z","updated_at":"2017-04-20T23:38:37Z","body":"In https://github.com/w3c/webauthn/pull/384#discussion_r111504620, @mikewest and I were discussing a technical problem where Javascript can use `rawId` to modify the underlying `ArrayBuffer`, at which point the value of `id` becomes ambiguous. Is it the base64url encoding of the original value or the modified value, or does it depend on when the first use of `id` was?\r\n\r\nMost options here are bad because we want to guarantee that `foo.rawId`===`foo.rawId` (is the same object each time, not just the same value) and similarly for `.id`. The simplest thing that preserves both values is, when the `ScopedCredential` is created, to store an `ArrayBuffer` for `rawId` and immediately base64url encode it into a DOMString for `id` and also store that. But it'd be even better to be able to remove either `rawId` or `id` to avoid storing the data twice."}}
{"actor":{"display_login":"jyasskin"}}