cedarcode / webauthn-ruby

WebAuthn ruby server library ― Make your Ruby/Rails web server become a conformant WebAuthn Relying Party
https://rubygems.org/gems/webauthn
MIT License
644 stars 51 forks source link

Add base64 dependency to gemspec or inline implementation #401

Closed jeremyevans closed 10 months ago

jeremyevans commented 11 months ago

Starting in Ruby 3.3.0-preview2, requiring webauthn warns:

$ ruby33 -r webauthn -e ''
/usr/local/lib/ruby/gems/3.3/gems/webauthn-3.0.0/lib/webauthn/encoder.rb:3: warning: base64 which will be not part of the default gems since Ruby 3.4.0

base64 will move from a standard library gem to a bundled gem in Ruby 3.4.0. That will break applications using bundler and webauthn unless webauthn declares a dependency on base64 or inlines the necessary implementation. Note that base64 was not gemified until Ruby 3.0, but the current base64 gem supports Ruby 2.3.0+, so this should not cause backwards compatibility issues.

In my own libraries, I've chosen to inline the implementation, as base64 is a thin wrapper around String#unpack1 and Array#pack.