def METHOD_NAME(self, client, peer):
    try:
        apiarmed = None
        hmackey = None
        hmacval = None
        client.send(b'\xc2\xd1-\xa8\x80\xd8j\xba')
        tlv = bytearray(client.recv(2))
        if tlv[0] != 1:
            client.close()
            return
        nodename = util.stringify(client.recv(tlv[1]))
        tlv = bytearray(client.recv(2))  # should always be null
        onlylocal = True
        if tlv[0] == 6:
            hmacval = client.recv(tlv[1])
            hmackey = self.cfm.get_node_attributes(nodename, ['secret.selfapiarmtoken'], decrypt=True)
            hmackey = hmackey.get(nodename, {}).get('secret.selfapiarmtoken', {}).get('value', None)
        elif tlv[1]:
            client.recv(tlv[1])
        apimats = self.cfm.get_node_attributes(nodename,
                ['deployment.apiarmed', 'deployment.sealedapikey'])
        apiarmed = apimats.get(nodename, {}).get('deployment.apiarmed', {}).get(
                'value', None)
        if not hmackey:
            if not address_is_somewhat_trusted(peer[0], nodename, self.cfm):
                client.close()
                return
            if not apiarmed:
                if apimats.get(nodename, {}).get(
                    'deployment.sealedapikey', {}).get('value', None):
                    sealed = apimats[nodename]['deployment.sealedapikey'][
                        'value']
                    if not isinstance(sealed, bytes):
                        sealed = sealed.encode('utf8')
                    reply = b'\x80' + struct.pack('>H', len(sealed) + 1) + sealed + b'\x00'
                    client.send(reply)
                client.close()
                return
            if apiarmed not in ('once', 'continuous'):
                now = datetime.datetime.utcnow()
                expiry = datetime.datetime.strptime(apiarmed, "%Y-%m-%dT%H:%M:%SZ")
                if now > expiry:
                    self.cfm.set_node_attributes({nodename: {'deployment.apiarmed': ''}})
                    client.close()
                    return
        client.send(b'\x02\x20')
        rttoken = os.urandom(32)
        client.send(rttoken)
        client.send(b'\x00\x00')
        tlv = bytearray(client.recv(2))
        if tlv[0] != 3:
            client.close()
            return
        echotoken = client.recv(tlv[1])
        if echotoken != rttoken:
            client.close()
            return
        tlv = bytearray(client.recv(2))
        if tlv[0] != 4:
            client.close()
            return
        echotoken = util.stringify(client.recv(tlv[1]))
        if hmackey:
            etok = echotoken.encode('utf8')
            if hmacval != hmac.new(hmackey, etok, hashlib.sha256).digest():
                client.close()
                return
        cfgupdate = {nodename: {'crypted.selfapikey': {'hashvalue': echotoken}, 'deployment.sealedapikey': '', 'deployment.apiarmed': ''}}
        if hmackey and apiarmed != 'continuous':
            self.cfm.clear_node_attributes([nodename], ['secret.selfapiarmtoken'])
        if apiarmed == 'continuous':
            del cfgupdate[nodename]['deployment.apiarmed']
        self.cfm.set_node_attributes(cfgupdate)
        client.recv(2)  # drain end of message
        client.send(b'\x05\x00') # report success
    finally:
        client.close()