verify = async (identities, entry) => {
  if (!identities) throw new Error('Identities is required, cannot verify entry')
  if (!isEntry(entry)) throw new Error('Invalid Log entry')
  if (!entry.key) throw new Error("Entry doesn't have a key")
  if (!entry.sig) throw new Error("Entry doesn't have a signature")

  const e = Object.assign({}, entry)

  const value = {
    id: e.id,
    payload: e._payload || e.payload,
    next: e.next,
    refs: e.refs,
    clock: e.clock,
    v: e.v
  }

  const { bytes } = await Block.encode({ value, codec, hasher })

  return identities.verify(entry.sig, entry.key, bytes)
}
Verifies an entry signature.
@param {Identities} identities Identities system to use
@param {module:Log~Entry} entry The entry being verified
@return {Promise<boolean>} A promise that resolves to a boolean value indicating if
the signature is valid.
@memberof module:Log~Entry
@private