Ejemplo n.º 1
0
KineticStatus KineticAdminClient_UnlockDevice(KineticSession * const session,
    ByteArray pin)
{
    KINETIC_ASSERT(session != NULL);

    KineticStatus status;
    status = KineticAuth_EnsureSslEnabled(&session->config);
    if (status != KINETIC_STATUS_SUCCESS) {return status;}

    // Ensure PIN array has data if non-empty
    if (pin.len > 0 && pin.data == NULL) {
        return KINETIC_STATUS_MISSING_PIN;
    }

    KineticOperation* operation = KineticAllocator_NewOperation(session);
    if (operation == NULL) {return KINETIC_STATUS_MEMORY_ERROR;}

    KineticBuilder_BuildLockUnlock(operation, false, &pin);
    return KineticController_ExecuteOperation(operation, NULL);
}
Ejemplo n.º 2
0
void test_KineticBuilder_BuildLockUnlock_should_build_an_UNLOCK_operation_with_PIN_auth(void)
{
    char pinData[] = "abc123";
    ByteArray pin = ByteArray_Create(pinData, strlen(pinData));

    KineticOperation_ValidateOperation_Expect(&Operation);

    KineticBuilder_BuildLockUnlock(&Operation, false, &pin);

    TEST_ASSERT_NOT_NULL(Operation.pin);
    TEST_ASSERT_EQUAL_PTR(&pinData, Operation.pin->data);
    TEST_ASSERT_EQUAL_PTR(strlen(pinData), Operation.pin->len);
    TEST_ASSERT_TRUE(Request.message.command.header->has_messagetype);
    TEST_ASSERT_EQUAL(COM__SEAGATE__KINETIC__PROTO__COMMAND__MESSAGE_TYPE__PINOP,
        Request.message.command.header->messagetype);
    TEST_ASSERT_EQUAL_PTR(&Request.message.body, Request.command->body);
    TEST_ASSERT_EQUAL_PTR(&Request.message.pinOp, Request.command->body->pinop);
    TEST_ASSERT_TRUE(&Request.message.pinOp.has_pinoptype);
    TEST_ASSERT_EQUAL(COM__SEAGATE__KINETIC__PROTO__COMMAND__PIN_OPERATION__PIN_OP_TYPE__UNLOCK_PINOP,
        Request.command->body->pinop->pinoptype);
    TEST_ASSERT_EQUAL_PTR(&KineticCallbacks_Basic, Operation.opCallback);
    TEST_ASSERT_NULL(Operation.response);
    TEST_ASSERT_EQUAL(KineticOperation_TimeoutLockUnlock, Operation.timeoutSeconds);
}