void test_KineticBuilder_BuildSetPin_should_build_a_SECURITY_operation_to_set_new_ERASE_PIN(void) { char oldPinData[] = "1234"; char newPinData[] = "5678"; ByteArray oldPin = ByteArray_Create(oldPinData, sizeof(oldPinData)); ByteArray newPin = ByteArray_Create(newPinData, sizeof(newPinData)); KineticOperation_ValidateOperation_Expect(&Operation); KineticBuilder_BuildSetPin(&Operation, oldPin, newPin, false); TEST_ASSERT_FALSE(Request.pinAuth); TEST_ASSERT_EQUAL(KineticOperation_TimeoutSetPin, Operation.timeoutSeconds); TEST_ASSERT_TRUE(Request.message.command.header->has_messagetype); TEST_ASSERT_EQUAL(COM__SEAGATE__KINETIC__PROTO__COMMAND__MESSAGE_TYPE__SECURITY, Request.message.command.header->messagetype); TEST_ASSERT_EQUAL_PTR(&Request.message.body, Request.command->body); TEST_ASSERT_EQUAL_PTR(&Request.message.security, Request.command->body->security); TEST_ASSERT_TRUE(Request.command->body->security->has_olderasepin); TEST_ASSERT_EQUAL_PTR(oldPinData, Request.command->body->security->olderasepin.data); TEST_ASSERT_EQUAL(oldPin.len, Request.command->body->security->olderasepin.len); TEST_ASSERT_TRUE(Request.command->body->security->has_newerasepin); TEST_ASSERT_EQUAL_PTR(newPinData, Request.command->body->security->newerasepin.data); TEST_ASSERT_EQUAL(newPin.len, Request.command->body->security->newerasepin.len); TEST_ASSERT_NULL(Request.command->body->pinop); TEST_ASSERT_EQUAL_PTR(&KineticCallbacks_Basic, Operation.opCallback); TEST_ASSERT_NULL(Operation.response); }
KineticStatus KineticAdminClient_SetErasePin(KineticSession * const session, ByteArray old_pin, ByteArray new_pin) { KineticStatus status; status = KineticAuth_EnsureSslEnabled(&session->config); if (status != KINETIC_STATUS_SUCCESS) {return status;} // Ensure PIN arrays have data if non-empty if ((old_pin.len > 0 && old_pin.data == NULL) || (new_pin.len > 0 && new_pin.data == NULL)) { return KINETIC_STATUS_MISSING_PIN; } KineticOperation* operation = KineticAllocator_NewOperation(session); if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;} KineticBuilder_BuildSetPin(operation, old_pin, new_pin, false); return KineticController_ExecuteOperation(operation, NULL); }