Как в z/OS определить, какой продукт безопасности активен (RACF, ACF2 или Top Secret) в C?

В z/OS операционная система не требует наличия в системе определенного продукта безопасности, но позволяет людям выбирать свой собственный. Их 3 и они имеют разные возможности.

Для справки: для Java есть соответствующие вопросы и ответы , но мне нужно сделать это на C: Как с помощью Java определить, какой менеджер безопасности активен в z/OS?

2 ответа

Информацию можно найти в RCVT (который в документации также называется CVTRAC). «Идентификатор» в начале указывает на поставщика безопасности:

      #ifdef _LP64
  #error "This code is 31-bit addressing mode specific"
#endif

typedef struct {
  char id[4];
} CVTRAC;

typedef struct {
  char unk[0x3E0];
  CVTRAC* cvtrac;
} CVT;

typedef struct {
  char unk[0x10];
  CVT* cvt;
} PSA;

typedef enum {
  SAFUnk=0,
  RACF=1,
  TopSecret=2,
  ACF2=3
} SAFProvider;

static SAFProvider saf_provider()
{

  PSA* psa = (void*) 0;
  char* id = psa->cvt->cvtrac->id;

  if (!memcmp(id, "RCVT", 4)) {
    return RACF;
  } else if (!memcmp(id, "RTSS", 4)) {
    return TopSecret;
  } else if (!memcmp(id, "ACF2", 4)) {
    return ACF2;
  } else {
    return SAFUnk;
  }
}

Обратите внимание, что приведенный выше код будет работать только в том случае, если он создан для 31-битного режима адресации и скомпилирован без опции -qascii (строки, с которыми сравниваются, находятся в формате EBCDIC).

Вот пример кода REXX, который может помочь:

      CVT      = C2d(Storage(10,4))                /* point to CVT         */ 
    
CVTRAC   = C2d(Storage(D2x(CVT + 992),4))    /* point to RACF CVT    */ 
    
RCVTID   = Storage(D2x(CVTRAC),4)            /* point to RCVTID      */ 
   
 select ;                                                                
     
when (RCVTID="RTSS") then secss="TOPSECRET" /* RTSS is TopSecret */    
     
when (RCVTID="RCVT") then secss="RACF"      /* RCVT is RACF         */ 
     
otherwise                 secss=RCVTID      /* ACF2 SECNAME = RCVTID*/ 
    
end;   
                                                             
Другие вопросы по тегам