{"action":"created","issue":{"url":"https://api.github.com/repos/dart-lang/sdk/issues/24603","labels_url":"https://api.github.com/repos/dart-lang/sdk/issues/24603/labels{/name}","comments_url":"https://api.github.com/repos/dart-lang/sdk/issues/24603/comments","events_url":"https://api.github.com/repos/dart-lang/sdk/issues/24603/events","html_url":"https://github.com/dart-lang/sdk/issues/24603","id":111710430,"number":24603,"title":"Base64 encoder should support the URL-safe alphabet","user":{"login":"nex3","id":188,"avatar_url":"https://avatars.githubusercontent.com/u/188?v=3","gravatar_id":"","url":"https://api.github.com/users/nex3","html_url":"https://github.com/nex3","followers_url":"https://api.github.com/users/nex3/followers","following_url":"https://api.github.com/users/nex3/following{/other_user}","gists_url":"https://api.github.com/users/nex3/gists{/gist_id}","starred_url":"https://api.github.com/users/nex3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nex3/subscriptions","organizations_url":"https://api.github.com/users/nex3/orgs","repos_url":"https://api.github.com/users/nex3/repos","events_url":"https://api.github.com/users/nex3/events{/privacy}","received_events_url":"https://api.github.com/users/nex3/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dart-lang/sdk/labels/Area-Library","name":"Area-Library","color":"ededed"},{"url":"https://api.github.com/repos/dart-lang/sdk/labels/Library-Convert","name":"Library-Convert","color":"ededed"},{"url":"https://api.github.com/repos/dart-lang/sdk/labels/Type-Enhancement","name":"Type-Enhancement","color":"ededed"}],"state":"open","locked":false,"assignee":{"login":"lrhn","id":4865287,"avatar_url":"https://avatars.githubusercontent.com/u/4865287?v=3","gravatar_id":"","url":"https://api.github.com/users/lrhn","html_url":"https://github.com/lrhn","followers_url":"https://api.github.com/users/lrhn/followers","following_url":"https://api.github.com/users/lrhn/following{/other_user}","gists_url":"https://api.github.com/users/lrhn/gists{/gist_id}","starred_url":"https://api.github.com/users/lrhn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lrhn/subscriptions","organizations_url":"https://api.github.com/users/lrhn/orgs","repos_url":"https://api.github.com/users/lrhn/repos","events_url":"https://api.github.com/users/lrhn/events{/privacy}","received_events_url":"https://api.github.com/users/lrhn/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/dart-lang/sdk/milestones/30","html_url":"https://github.com/dart-lang/sdk/milestones/1.13","labels_url":"https://api.github.com/repos/dart-lang/sdk/milestones/30/labels","id":1171621,"number":30,"title":"1.13","description":null,"creator":{"login":"kwalrath","id":2164483,"avatar_url":"https://avatars.githubusercontent.com/u/2164483?v=3","gravatar_id":"","url":"https://api.github.com/users/kwalrath","html_url":"https://github.com/kwalrath","followers_url":"https://api.github.com/users/kwalrath/followers","following_url":"https://api.github.com/users/kwalrath/following{/other_user}","gists_url":"https://api.github.com/users/kwalrath/gists{/gist_id}","starred_url":"https://api.github.com/users/kwalrath/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kwalrath/subscriptions","organizations_url":"https://api.github.com/users/kwalrath/orgs","repos_url":"https://api.github.com/users/kwalrath/repos","events_url":"https://api.github.com/users/kwalrath/events{/privacy}","received_events_url":"https://api.github.com/users/kwalrath/received_events","type":"User","site_admin":false},"open_issues":23,"closed_issues":42,"state":"open","created_at":"2015-06-18T23:05:19Z","updated_at":"2015-10-19T19:04:38Z","due_on":null,"closed_at":null},"comments":2,"created_at":"2015-10-15T21:23:10Z","updated_at":"2015-10-19T19:07:51Z","closed_at":null,"body":"Currently, the Base64 encoder in the core library will reject any Base64 data that includes the `-` or `_` characters, or uses `%3D` as a padding character. Although technically \"base64 with URL and filename safe alphabet\" is a different encoding, it's likely that users won't realize this or won't know how to distinguish between them and will provide URL-safe base64 to the main encoder. This is particularly likely because the previous standard decoder in `package:crypto` *does* accept this alphabet.\r\n\r\nI'm marking this as 1.13 since the base64 converter is a 1.13 feature."},"comment":{"url":"https://api.github.com/repos/dart-lang/sdk/issues/comments/149315355","html_url":"https://github.com/dart-lang/sdk/issues/24603#issuecomment-149315355","issue_url":"https://api.github.com/repos/dart-lang/sdk/issues/24603","id":149315355,"user":{"login":"nex3","id":188,"avatar_url":"https://avatars.githubusercontent.com/u/188?v=3","gravatar_id":"","url":"https://api.github.com/users/nex3","html_url":"https://github.com/nex3","followers_url":"https://api.github.com/users/nex3/followers","following_url":"https://api.github.com/users/nex3/following{/other_user}","gists_url":"https://api.github.com/users/nex3/gists{/gist_id}","starred_url":"https://api.github.com/users/nex3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nex3/subscriptions","organizations_url":"https://api.github.com/users/nex3/orgs","repos_url":"https://api.github.com/users/nex3/repos","events_url":"https://api.github.com/users/nex3/events{/privacy}","received_events_url":"https://api.github.com/users/nex3/received_events","type":"User","site_admin":false},"created_at":"2015-10-19T19:07:51Z","updated_at":"2015-10-19T19:07:51Z","body":"I understand, and I think encoding a URL-safe alphabet should go in `package:convert`. But users will expect that the decoder will decode *all* valid base64. If the input comes from external sources, they may not even be able to control whether it's URL-safe or not. Violating that assumption and rejecting the input will introduce subtle brokenness and incompatibility."}}