We don't `assert()` from user facing API. so you'll want to:
```cpp
Local<Object> buf = args[0].As<Object>();

if (!buf->IsObject() || Buffer::HasInstance(args[0]))
  return ThrowTypeError("Argument must be a Buffer");

CipherBase* cipher = WeakObject::UnWrap<CipherBase>(args.This());
if (!cipher->SetAuthTag(Buffer::Data(buf), Buffer::Length(buf)))
  return ThrowError("Attempting to set auth tag in unsupported state");
```
The reason it's important to `.As<Object>()` at the beginning is that otherwise each `Buffer::*` will have to do an `->IsObject()` check.