@Override
    public boolean nodeIdentityMatches(@NonNull final ProvisionedMeshNode meshNode, @NonNull final byte[] serviceData) {
        final byte[] advertisedHash = getAdvertisedHash(serviceData);
        //If there is no advertised hash return false as this is used to match against the generated hash
        if (advertisedHash == null) {
            return false;
        }

        //If there is no advertised random return false as this is used to generate the hash to match against the advertised
        final byte[] random = getAdvertisedRandom(serviceData);
        if (random == null) {
            return false;
        }

        for (NetworkKey key : mMeshNetwork.netKeys) {
            if (Arrays.equals(advertisedHash, SecureUtils.
                    calculateHash(key.getIdentityKey(), random, MeshAddress.addressIntToBytes(meshNode.getUnicastAddress()))) ||
                    (key.getOldIdentityKey() != null &&
                            Arrays.equals(advertisedHash, SecureUtils.
                                    calculateHash(key.getOldIdentityKey(), random, MeshAddress.addressIntToBytes(meshNode.getUnicastAddress())))))
                return true;
        }
        return false;
    }
Appends the PDUs that are segmented at gatt layer.

@param mtuSize mtu size supported by the device/node
@param pdu     pdu received by the provisioner
@return the combine pdu or returns null if not complete.
mesh/src/main/java/no/nordicsemi/android/mesh/MeshManagerApi.java