Gatt Signature
A GATT signature is a list of GattServiceSpec entries that all must match for a protocol to be identified by GATT fingerprinting. All specs use AND semantics (every spec must hold).
A protocol can declare multiple alternative signatures (OR semantics between signatures): the protocol matches if at least one signature matches.