validator icon indicating copy to clipboard operation
validator copied to clipboard

add validation for base64 url without = padding

Open yasoobh opened this issue 2 years ago • 1 comments

Fixes Or Enhances

Make sure that you've checked the boxes below before you submit PR:

  • [x] Tests exist or have been written that cover this particular change.

Change:

As flagged in this issue, validation fails for some strings encoded using base64.RawURLEncoding function.

The discussion around whether padding should be considered optional or not is rather long. Some of it can be found here: https://github.com/golang/go/issues/4237. Following which, RawURLEncoding was introduced in base64 package.

The general rule of thumb regarding padding seems to be that you MUST be padding when encoding, but SHOULD be able to handle both padded and unpadded inputs when decoding. Therefore, we should provide support for validating unpadded encoded inputs.

Instead of modifying the "base64url" tag to accept unpadded inputs, it makes more sense to have a separate tag - "base64rawurl". This way it would be clear to the developer and they would use one or the other, or both back to back, depending on their usecase.

PS: formatting changes in doc.go because of go 1.19 updates. Please lmk if I should revert them.

Closes #1002

@go-playground/validator-maintainers

yasoobh avatar Nov 08 '22 08:11 yasoobh

Coverage Status

Coverage: 74.255% (+0.005%) from 74.25% when pulling e8f6a169b11e6bfeb9167d1d98329fddfe421262 on yasoobh:master into 1c1f70d35b58e3ecf9416b30f7b3804e8e68dee3 on go-playground:master.

coveralls avatar Nov 08 '22 08:11 coveralls

Will this change be added to any version soon?

azlancpool avatar Feb 16 '23 19:02 azlancpool

Any chance to have the last code review needed? 🥹

apinet avatar Mar 19 '23 08:03 apinet

@deankarn you are awesome! many thx for this gorgeous lib!

apinet avatar Mar 19 '23 19:03 apinet