Ошибка расчета MA C на Thales Payshield 9000 HSM - PullRequest
0 голосов
/ 04 апреля 2020

У меня странная проблема с командой M6 в прошивке HSM Payshield 9000 3.4 C. Для некоторых длин сообщения я получаю код ошибки 15 - даже если длина сообщения кратна 8 байтам.

Во время вызова я отправляю: 1. Флаг режима: 0 2. Флаг ввода формата: 0 3. MA C Размер: 1 4. MA C Al go: 3 5. Метод заполнения: 0 (я также тестировал с 0, 1, 3, но для упрощения давайте сосредоточимся на режиме заполнения 0. Для теста я подготовил байтовые массивы, которые должны быть сделаны c ', размер которых кратен 8, поэтому заполнение не требуется необходим). 6. Тип ключа: 008

Я создал простой тест, в котором в al oop я строю байтовые массивы '1' размером от 8 до 1000 и ма c такого массива. Каждый массив имеет длину, кратную 8 (8,16,24, ...)

Для некоторых длин массивов я получаю код ошибки 15 Неверные входные данные (недопустимый формат, недопустимые символы или недостаточно данных) при условии). Ниже вы можете найти диапазоны размеров массива, для которых я получаю такую ​​ошибку. (<160-248> означает, что я получил ошибку для массива длиной от 160 (включено) до 248 (включено), кратного 8 (160, 168, 176, .... 248)

<160 - 248> <416 - 504> <672 - 760> <928 - 1000>

Для других всех других размеров из этого диапазона (например, 256-408, кратных 8, я получаю правильный ответ с вычисленным MA C

Для байтового массива длины 160 (который возвращает ошибку) Пример команды, которую я посылаю в этом тесте (в шестнадцатеричном формате):

00d33f3f3f3f4d3630303133303030385544324241464236353835433642303735334334363645393434424338423837353030613031313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131

Пример команды (для массива размером 152), которая возвращает правильный ответ:

00cb3f3f3f3f4d363030313330303038554432424146423635383543364230373533433436364539343442433842383735303039383131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131

В чем может быть причина такого поведения?

1 Ответ

0 голосов
/ 04 апреля 2020

Я наконец решил это. Проблема была в теге длины сообщения. Когда длина сообщения, представленная как 4 di git Hex, содержит буквы, они должны быть отправлены в верхнем регистре, ie. 00A0 вместо 00a0

...