Definição de recursos de segurança via flag
Estão disponíveis na Biblioteca HI_STD dois tipos de dados enumeradores que permitem a definição de flags associados aos grupos e atributos de segurança, este recurso permite ao usuário maior clareza e entendimento a respeito da funcionalidade do grupo ou atributo especificado, uma vez que seu nome explicita sua funcionalidade geral.
Estes tipos de dados enumeradores são:
SEC_FLAGS_GRP
SEC_FLAGS_ATB
Fig. 65 Tipos de dados enumerados associados aos recursos de segurança
Em SEC_FLAGS_GRP estão definidos 15 grupos de ações, indicados na tabela a seguir:
Nome |
Valor |
Descrição |
|---|---|---|
SFG_CHG_APP |
0 |
Modificar aplicação |
SFG_DEBUG_APP |
1 |
Depurar aplicação |
SFG_RD_EXPV |
2 |
Ler base exportada (variáveis globais) |
SFG_WR_EXPV |
3 |
Escrever na base exportada (variáveis globais) |
SFG_RD_LOCV |
4 |
Ler base local (variáveis de sistema) |
SFG_WR_LOCV |
5 |
Escrever na base local (variáveis de sistema) |
SFG_RD_IOBASE |
6 |
Ler base dos módulos de I/O |
SFG_WR_IOBASE |
7 |
Escrever base dos módulos de I/O |
SFG_RD_SETUP |
8 |
Ler base de setup de comunicação |
SFG_WR_SETUP |
9 |
Escrever base de setup de comunicação |
SFG_RESET_EQP |
10 |
Resetar equipamento |
SFG_PROG_RTC |
11 |
Programar RTC |
SFG_UPLOAD_FW |
12 |
Carregar Firmware |
SFG_UPLOAD_BL |
13 |
Carregar bootloader |
SFG_SYSTEM_FILE |
14 |
Acessar o Sistema de arquivo |
Em SEC_FLAGS_ATB estão definidos 3 atributos de segurança, indicados na tabela a seguir:
Nome |
Valor |
Descrição |
|---|---|---|
SFA_NO_BLOCK |
0 |
Grupo sem restrição de segurança |
SFA_PSW_BLOCK |
1 |
Grupo com restrição de segurança liberada por senha |
SFA_BLOCK |
3 |
Grupo com restrição de segurança e sem liberação por senha |
Exemplo de aplicação
Veja abaixo um exemplo de aplicação com a definição de recursos de segurança para dois grupos com o atributo de bloqueio com liberação por senha, utilizando os flags citados acima para declaração dos parâmetros das funções.
Declaração de Variáveis
Nome |
Classe |
Tipo |
Opções |
|---|---|---|---|
ENABLE_SECURITY |
Local |
BOOL |
publ |
RET |
Local |
INT |
publ |
MASK |
Local |
WORD |
publ |
FLAGS |
Local |
WORD |
publ |
ATB |
Local |
INT |
publ |
Código ST
(* ------------------------------------------------------------------------------
PROGRAMA DE EXEMPLO:
APLICAÇÃO DE RECURSOS DE SEGURANÇA VIA FLAGS DEFINIDOS PARA GRUPOS E ATRIBUTOS
--------------------------------------------------------------------------------*)
(* Habilite a variável ENABLE_SECURITY para proteger por senha os comandos de
programação do RTC e o Reset do equipamento *)
IF (ENABLE_SECURITY) THEN
(* Define uma senha de bloqueio de ações na aplicação *)
RET := HILS.SET_SECURITY_PSW(PASSW := 16734);
MASK := 1; (* cria mascara para definir o bit do grupo associado *)
(* compõe os grupos a serem bloqueados por segurança *)
FLAGS := SHL(MASK, HILS.SFG_PROG_RTC) OR SHL(MASK, HILS.SFG_RESET_EQP);
(* Define que os grupos acima serão liberados por senha da aplicação *)
HILS.SET_SECURITY_GRP(GROUP := FLAGS, ATB := HILS.SFA_PSW_BLOCK);
(* Obtém o atributo de segurança corrente do comando de programação do RTC *)
ATB := HILS.GET_SECURITY_ATB(GROUP := HILS.SFG_PROG_RTC);
ENABLE_SECURITY := FALSE; (* reseta o tratamento *)
END_IF;