diff --git a/unit/test-stkutil.c b/unit/test-stkutil.c index d7b0c25e..ac6db517 100644 --- a/unit/test-stkutil.c +++ b/unit/test-stkutil.c @@ -18051,6 +18051,113 @@ static const struct envelope_test sms_pp_data_download_data_182 = { }, }; +static const unsigned char cbs_pp_data_download_11[] = { + 0xd2, 0x5e, 0x82, 0x02, 0x83, 0x81, 0x8c, 0x58, + 0xc0, 0x11, 0x10, 0x01, 0x01, 0x11, 0xc3, 0x32, + 0x9b, 0x0d, 0x12, 0xca, 0xdf, 0x61, 0xf2, 0x38, + 0x3c, 0xa7, 0x83, 0x40, 0x20, 0x10, 0x08, 0x04, + 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, + 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, + 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, + 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, + 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, + 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, + 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, +}; + +static const struct envelope_test cbs_pp_data_download_data_11 = { + .pdu = cbs_pp_data_download_11, + .pdu_len = sizeof(cbs_pp_data_download_11), + .envelope = { + .type = STK_ENVELOPE_TYPE_CBS_PP_DOWNLOAD, + .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, + .dst = STK_DEVICE_IDENTITY_TYPE_UICC, + { .cbs_pp_download = { + .page = { + .gs = CBS_GEO_SCOPE_CELL_NORMAL, + .message_code = 1, + .update_number = 1, + .message_identifier = 0x1001, + .dcs = CBS_LANGUAGE_ENGLISH, /* GSM 7-bit */ + .max_pages = 1, + .page = 1, + .ud = { + /* 7-bit "Cell Broadcast " repeated */ + 0xc3, 0x32, 0x9b, 0x0d, 0x12, 0xca, + 0xdf, 0x61, 0xf2, 0x38, 0x3c, 0xa7, + 0x83, 0x40, 0x20, 0x10, 0x08, 0x04, + 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, + 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, + 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, + 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, + 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, + 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, + 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, + 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, + 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, + 0x10, 0x08, 0x04, 0x02, + }, + }, + }}, + }, +}; + +static const unsigned char cbs_pp_data_download_17[] = { + 0xd2, 0x5e, 0x82, 0x02, 0x83, 0x81, 0x8c, 0x58, + 0xc0, 0x11, 0x10, 0x01, 0x96, 0x11, 0x02, 0x70, + 0x00, 0x00, 0x4d, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0xbf, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, +}; + +static const struct envelope_test cbs_pp_data_download_data_17 = { + .pdu = cbs_pp_data_download_17, + .pdu_len = sizeof(cbs_pp_data_download_17), + .envelope = { + .type = STK_ENVELOPE_TYPE_CBS_PP_DOWNLOAD, + .src = STK_DEVICE_IDENTITY_TYPE_NETWORK, + .dst = STK_DEVICE_IDENTITY_TYPE_UICC, + { .cbs_pp_download = { + .page = { + .gs = CBS_GEO_SCOPE_CELL_NORMAL, + .message_code = 1, + .update_number = 1, + .message_identifier = 0x1001, + .dcs = SMS_CLASS_2 | (SMS_CHARSET_8BIT << 2) | + (9 << 4), /* UDHI present */ + .max_pages = 1, + .page = 1, + .ud = { + /* Secured User Header */ + 0x02, 0x70, 0x00, 0x00, 0x4d, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x00, 0xbf, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, + 0xdc, 0xdc, 0xdc, 0xdc, + }, + }, + }}, + }, +}; + int main(int argc, char **argv) { g_test_init(&argc, &argv, NULL); @@ -19731,5 +19838,10 @@ int main(int argc, char **argv) &sms_pp_data_download_data_182, test_envelope_encoding); + g_test_add_data_func("/teststk/CBS-PP data download 1.1", + &cbs_pp_data_download_data_11, test_envelope_encoding); + g_test_add_data_func("/teststk/CBS-PP data download 1.7", + &cbs_pp_data_download_data_17, test_envelope_encoding); + return g_test_run(); }