+
+int discover_client_send_authenticate(struct discover_client *client,
+ char *password)
+{
+ struct pb_protocol_message *message;
+ struct auth_message auth_msg;
+ int len;
+
+ auth_msg.op = AUTH_MSG_REQUEST;
+ auth_msg.password = password;
+
+ len = pb_protocol_authenticate_len(&auth_msg);
+
+ message = pb_protocol_create_message(client,
+ PB_PROTOCOL_ACTION_AUTHENTICATE, len);
+ if (!message)
+ return -1;
+
+ pb_log("serialising auth message..\n");
+ pb_protocol_serialise_authenticate(&auth_msg, message->payload, len);
+
+ pb_log("sending auth message..\n");
+ return pb_protocol_write_message(client->fd, message);
+}
+
+int discover_client_send_set_password(struct discover_client *client,
+ char *password, char *new_password)
+{
+ struct pb_protocol_message *message;
+ struct auth_message auth_msg;
+ int len;
+
+ auth_msg.op = AUTH_MSG_SET;
+ auth_msg.set_password.password = password;
+ auth_msg.set_password.new_password = new_password;
+
+ len = pb_protocol_authenticate_len(&auth_msg);
+
+ message = pb_protocol_create_message(client,
+ PB_PROTOCOL_ACTION_AUTHENTICATE, len);
+ if (!message)
+ return -1;
+
+ pb_log("serialising auth message..\n");
+ pb_protocol_serialise_authenticate(&auth_msg, message->payload, len);
+
+ pb_log("sending auth message..\n");
+ return pb_protocol_write_message(client->fd, message);
+}