module RubyNative::IAP::Verifiable

def verify_certificate_chain(x5c_certs)

def verify_certificate_chain(x5c_certs)
  raise VerificationError, "Missing x5c certificates" if x5c_certs.nil? || x5c_certs.empty?
  certs = x5c_certs.map do |cert_base64|
    OpenSSL::X509::Certificate.new(Base64.decode64(cert_base64))
  end
  unless certs.last.to_der == apple_root_certificate.to_der
    raise VerificationError, "Root certificate does not match Apple's known root"
  end
  certs.each_cons(2) do |child, parent|
    unless child.verify(parent.public_key)
      raise VerificationError, "Certificate chain verification failed"
    end
  end
  certs.first.public_key
end