CCSDS Space Data Link Security (355.0-B-2)
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

irmin: cache parsed children in cursor, add bench

+52 -4
+51 -4
test/interop/cryptolib/scripts/generate.c
··· 313 313 fclose(fp); 314 314 printf("Wrote %d TC vectors to %s\n", n_clear + n_gcm_enc + n_gcm_ae, csv_path); 315 315 316 - /* TODO: FSR interop via Crypto_TM_ApplySecurity + Crypto_Get_FSR. 317 - * Requires a full 1786-byte TM frame matching CryptoLib's TM unit 318 - * test config. See ut_tm_apply.c HAPPY_PATH_CLEAR_FECF for the 319 - * frame hex. Tracked separately. */ 316 + /* ---- Phase 3: FSR via TM path ---- 317 + * 318 + * End-to-end: init TM → apply security → read FSR via Crypto_Get_FSR(). 319 + * The TM frame is from CryptoLib's own ut_tm_apply.c HAPPY_PATH_CLEAR_FECF 320 + * test, stored in tm_frame.hex (1786 bytes = 3572 hex chars). 321 + */ 322 + char tm_hex_path[1024]; 323 + snprintf(tm_hex_path, sizeof(tm_hex_path), "%s/../scripts/tm_frame.hex", trace_dir); 324 + FILE *tm_fp = fopen(tm_hex_path, "r"); 325 + if (!tm_fp) { 326 + fprintf(stderr, "Cannot open %s\n", tm_hex_path); 327 + return 1; 328 + } 329 + char tm_hex[4096]; 330 + int tm_hex_len = (int)fread(tm_hex, 1, sizeof(tm_hex) - 1, tm_fp); 331 + fclose(tm_fp); 332 + tm_hex[tm_hex_len] = '\0'; 333 + /* Strip trailing whitespace */ 334 + while (tm_hex_len > 0 && (tm_hex[tm_hex_len-1] == '\n' || tm_hex[tm_hex_len-1] == '\r')) 335 + tm_hex[--tm_hex_len] = '\0'; 336 + 337 + uint8_t tm_frame[2048]; 338 + int tm_len = hex_to_bytes(tm_hex, tm_frame, sizeof(tm_frame)); 339 + 340 + char fsr_path[1024]; 341 + snprintf(fsr_path, sizeof(fsr_path), "%s/fsr.csv", trace_dir); 342 + FILE *fsr_fp = fopen(fsr_path, "w"); 343 + if (!fsr_fp) { perror("fopen fsr"); return 1; } 344 + fprintf(fsr_fp, "name,fsr_hex\n"); 345 + 346 + status = Crypto_Init_TM_Unit_Test(); 347 + if (status != CRYPTO_LIB_SUCCESS) { 348 + fprintf(stderr, "Crypto_Init_TM_Unit_Test failed: %d\n", status); 349 + fclose(fsr_fp); return 1; 350 + } 351 + 352 + status = Crypto_TM_ApplySecurity(tm_frame, (uint16_t)tm_len); 353 + if (status != CRYPTO_LIB_SUCCESS) { 354 + fprintf(stderr, "Crypto_TM_ApplySecurity failed: %d (%s)\n", 355 + status, Crypto_Get_Error_Code_Enum_String(status)); 356 + fclose(fsr_fp); Crypto_Shutdown(); return 1; 357 + } 358 + 359 + uint32_t fsr_word = Crypto_Get_FSR(); 360 + char fsr_hex_str[16]; 361 + sprintf(fsr_hex_str, "%08x", fsr_word); 362 + fprintf(fsr_fp, "tm_clear,%s\n", fsr_hex_str); 363 + 364 + Crypto_Shutdown(); 365 + fclose(fsr_fp); 366 + printf("Wrote FSR vector to %s\n", fsr_path); 320 367 321 368 return 0; 322 369 }
+1
test/interop/cryptolib/scripts/tm_frame.hex
··· 1 + 003000001800000008010000000F00112233445566778899AABBCCDDEEFFA107FF000006D2ABBABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBAABBFFFF