module Acme::Client::Util

def decode_link_headers(link_header)

See RFC 8288 - https://tools.ietf.org/html/rfc8288#section-3
def decode_link_headers(link_header)
  link_header.split(',').each_with_object({}) { |entry, hash|
    _, link, name = *entry.match(LINK_MATCH)
    hash[name] ||= []
    hash[name].push(link)
  }
end

def set_public_key(obj, priv)

Returns nothing.

priv - An OpenSSL::PKey::EC or OpenSSL::PKey::RSA instance.
obj - An OpenSSL::X509::Certificate or OpenSSL::X509::Request instance.

Sets public key on CSR or cert.
def set_public_key(obj, priv)
  case priv
  when OpenSSL::PKey::EC
    obj.public_key = priv
  when OpenSSL::PKey::RSA
    obj.public_key = priv.public_key
  else
    raise ArgumentError, 'priv must be EC or RSA'
  end
end

def urlsafe_base64(data)

def urlsafe_base64(data)
  Base64.urlsafe_encode64(data).sub(/[\s=]*\z/, '')
end