--******************************************************************************************************************** -- Created: 30-Mar-2010 17:01:43 by OpenVMS SDL EV3-3 -- Source: 09-FEB-2004 13:48:32 $1$DGA7274:[STARLET_ADA.LIS]ACMEDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; with UTCBLKDEF;use UTCBLKDEF; package ACMEDEF is -- module $acmedef IDENT X-8 --+ -- -- Miscellaneous constants -- --- ACME_K_MAXCHAR_ITEM : constant := 16383; -- Maximum length (in characters) -- of an item ACME_K_MAXCHAR_DOI_NAME : constant := 32; -- Maximum length (in characters) -- of a DOI name string ACME_K_MAXCHAR_PRINCIPAL_NAME : constant := 512; -- Maximum length (in characters) -- of a principal name string ACME_K_MAX_NUM_AGENTS : constant := 32; -- Maximum number of ACME agents -- that can be loaded ACME_K_MAX_CRED_TYPE : constant := 32; -- Maximum number of credential -- types supported --+ -- -- ACME agent id -- -- An ACME agent id is a 32-bit unsigned value, encoded as follows: -- -- Remote host address type is a 16-bit unsigned value, encoded as follows: -- -- 3 2 2 1 1 -- 1 4 3 6 5 8 7 0 -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- ^.............................^ ^ ^...........................^ -- | | | | | -- | | | +---------------------------+-- Bit [14:0] = ACME number -- | | | -- | | +-------------------------------- Bit [15] = 0 ==> Ancillary agent -- | | 1 ==> Registered DOI -- | | -- +-----------------------------+---------------------------------- Bit [31:16] = Server number -- --- ACMEID_M_ACME_NUM : constant := 16#00007FFF#; ACMEID_M_DOI_DESIGNATOR : constant := 16#00008000#; ACMEID_M_SERVER_NUM : constant := 16#FFFF0000#; type ACMEID_TYPE is record ACME_NUM : UNSIGNED_15; -- ACME agent number DOI_DESIGNATOR : BOOLEAN; -- Registered DOI SERVER_NUM : UNSIGNED_16; -- Server number end record; for ACMEID_TYPE use record ACME_NUM at 0 range 0 .. 14; DOI_DESIGNATOR at 1 range 7 .. 7; SERVER_NUM at 2 range 0 .. 15; end record; for ACMEID_TYPE'SIZE use 32; ACMEID_TYPE_INIT : constant ACMEID_TYPE := (ACME_NUM => 0, DOI_DESIGNATOR => FALSE, SERVER_NUM => 0); ACMEID_K_LENGTH : constant := 4; --+ -- -- $ACM Function Codes and Modifiers -- -- Function code plus modifiers form a 32-bit unsigned value, encoded -- as follows: -- -- 3 2 2 1 1 -- 1 4 3 6 5 8 7 0 -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- ^.............................^ ^.................^ ^.........^ -- | | | | | | -- | | | | +---------+-- Bit [5:0] = function code -- | | | | -- | | +-----------------+-------------- Bit [15:06] = cross function modifiers -- | | -- +-----------------------------+---------------------------------- Bit [31:16] = function specific modifiers --- -- -- Function codes -- -- Function code values ACME_AUTHENTICATE_PRINCIPAL : constant := 1; -- AUTHENTICATE_PRINCIPAL ACME_CHANGE_PASSWORD : constant := 2; -- CHANGE_PASSWORD ACME_RELEASE_CREDENTIALS : constant := 3; -- RELEASE_CREDENTIALS ACME_QUERY : constant := 4; -- QUERY ACME_EVENT : constant := 5; -- EVENT -- Function code value ACME_FREE_CONTEXT : constant := 63; -- FREE_CONTEXT -- Function code values ACME_FC_AUTHENTICATE_PRINCIPAL : constant := 1; -- AUTHENTICATE_PRINCIPAL ACME_FC_CHANGE_PASSWORD : constant := 2; -- CHANGE_PASSWORD ACME_FC_RELEASE_CREDENTIALS : constant := 3; -- RELEASE_CREDENTIALS ACME_FC_QUERY : constant := 4; -- QUERY ACME_FC_EVENT : constant := 5; -- EVENT -- Function code value ACME_FC_FREE_CONTEXT : constant := 63; -- FREE_CONTEXT ACMEFC_M_FUNCTION : constant := 16#0000003F#; ACMEFC_M_NOAUDIT : constant := 16#00000040#; ACMEFC_M_TIMEOUT : constant := 16#00000080#; ACMEFC_M_UCS2_4 : constant := 16#00008000#; ACMEFC_M_ACQUIRE_CREDENTIALS : constant := 16#00010000#; ACMEFC_M_MERGE_PERSONA : constant := 16#00020000#; ACMEFC_M_COPY_PERSONA : constant := 16#00040000#; ACMEFC_M_OVERRIDE_MAPPING : constant := 16#00080000#; ACMEFC_M_NATIVE_AUTHENTICATION : constant := 16#00100000#; ACMEFC_M_NOAUTHORIZATION : constant := 16#00200000#; ACMEFC_M_FOREIGN_POLICY_HINTS : constant := 16#00400000#; ACMEFC_M_DEFAULT_PRINCIPAL : constant := 16#00800000#; type ACMEFC_TYPE is record FUNCTIO : UNSIGNED_6; -- Function code -- -- Modifiers applicable to all function codes -- NOAUDIT : BOOLEAN; -- Suppress auditing TIMEOUT : BOOLEAN; -- Timed operation FILLER_1 : UNSIGNED_7; UCS2_4 : BOOLEAN; -- Strings are in 4-byte UCS-2 format -- -- Modifiers applicable to AUTHENTICATE_PRINCIPAL/CHANGE_PASSWORD -- ACQUIRE_CREDENTIALS : BOOLEAN; -- Acquire credentials MERGE_PERSONA : BOOLEAN; -- Merge with base credentials COPY_PERSONA : BOOLEAN; -- Copy base credentials OVERRIDE_MAPPING : BOOLEAN; -- Override VMS username mapping checks NATIVE_AUTHENTICATION : BOOLEAN; -- Allow native DOI authentication NOAUTHORIZATION : BOOLEAN; -- Skip authorization checks FOREIGN_POLICY_HINTS : BOOLEAN; -- Honor NOAUDIT and NOAUTHORIZATION -- for non-native authentications DEFAULT_PRINCIPAL : BOOLEAN; -- Use principal name and DOI -- designator defined by the -- primary persona extension FILLER_2 : UNSIGNED_8; end record; for ACMEFC_TYPE use record FUNCTIO at 0 range 0 .. 5; NOAUDIT at 0 range 6 .. 6; TIMEOUT at 0 range 7 .. 7; FILLER_1 at 1 range 0 .. 6; UCS2_4 at 1 range 7 .. 7; ACQUIRE_CREDENTIALS at 2 range 0 .. 0; MERGE_PERSONA at 2 range 1 .. 1; COPY_PERSONA at 2 range 2 .. 2; OVERRIDE_MAPPING at 2 range 3 .. 3; NATIVE_AUTHENTICATION at 2 range 4 .. 4; NOAUTHORIZATION at 2 range 5 .. 5; FOREIGN_POLICY_HINTS at 2 range 6 .. 6; DEFAULT_PRINCIPAL at 2 range 7 .. 7; FILLER_2 at 3 range 0 .. 7; end record; for ACMEFC_TYPE'SIZE use 32; ACMEFC_TYPE_INIT : constant ACMEFC_TYPE := (FUNCTIO => 0, NOAUDIT => FALSE, TIMEOUT => FALSE, FILLER_1 => 0, UCS2_4 => FALSE, ACQUIRE_CREDENTIALS => FALSE, MERGE_PERSONA => FALSE, COPY_PERSONA => FALSE, OVERRIDE_MAPPING => FALSE, NATIVE_AUTHENTICATION => FALSE, NOAUTHORIZATION => FALSE, FOREIGN_POLICY_HINTS => FALSE, DEFAULT_PRINCIPAL => FALSE, FILLER_2 => 0); ACMEFC_K_LENGTH : constant := 4; --+ -- -- $ACM Item Codes -- -- Item codes are 16-bit unsigned values, encoded as follows: -- -- 1 -- 5 8 7 0 -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- | | | | | | | | | | | | | | | | | -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- ^ ^ ^ ^ ^ -- | | | | | -- | | | +-----------------------+-- Bit [12:0] = item -- | | | -- | | +---------------------------- Bit [13] = 0 ==> not subject to VTF-7 <-> UCS conversion -- | | 1 ==> subject to VTF-7 <-> UCS conversion -- | | -- | +------------------------------ Bit [14] = 0 ==> input item -- | 1 ==> output item -- | -- +-------------------------------- Bit [15] = 0 ==> common item -- 1 ==> ACME specific item -- --- -- Specialty -- Cross function -- AUTHENTICATE_PRINCIPAL/CHANGE_PASSWORD -- RELEASE_CREDENTIALS -- QUERY -- EVENT ACMEIC_M_ITEM : constant := 16#00001FFF#; ACMEIC_M_UCS : constant := 16#00002000#; ACMEIC_M_OUTPUT : constant := 16#00004000#; ACMEIC_M_ACME_SPECIFIC : constant := 16#00008000#; type ACMEIC_TYPE is record ITEM : UNSIGNED_13; -- Ranged value UCS : BOOLEAN; -- 0 ==> not subject to VTF-7 <-> UCS conversion -- 1 ==> subject to VTF-7 <-> UCS conversion OUTPUT : BOOLEAN; -- 0 ==> input item -- 1 ==> output item ACME_SPECIFIC : BOOLEAN; -- 0 ==> common item -- 1 ==> ACME specific item end record; for ACMEIC_TYPE use record ITEM at 0 range 0 .. 12; UCS at 1 range 5 .. 5; OUTPUT at 1 range 6 .. 6; ACME_SPECIFIC at 1 range 7 .. 7; end record; for ACMEIC_TYPE'SIZE use 16; ACMEIC_TYPE_INIT : constant ACMEIC_TYPE := (ITEM => 0, UCS => FALSE, OUTPUT => FALSE, ACME_SPECIFIC => FALSE); ACMEIC_K_LENGTH : constant := 2; -- -- Input item codes not subject to VTF-7 <-> UCS conversion -- ACME_MIN_SPEC_IN : constant := 1; -- Specialty items ACME_NULL : constant := 1; -- Place holder item (skip entry in item list) ACME_CHAIN : constant := 2; -- Chain to another item list segment ACME_MAX_SPEC_IN : constant := 2; ACME_MIN_GEN_IN : constant := 256; -- Generic items ACME_ACCESS_MODE : constant := 256; -- Access mode for persona operations ACME_DIALOGUE_SUPPORT : constant := 257; -- Dialogue capabilities ACME_CONTEXT_ACME_ID : constant := 258; -- ID of ACME for specific context ACME_PERSONA_HANDLE_IN : constant := 259; -- Target persona ACME_TARGET_DOI_ID : constant := 260; -- ID of DOI for a directed call ACME_TIMEOUT_INTERVAL : constant := 261; -- Timeout interval in seconds ACME_MAX_GEN_IN : constant := 261; ACME_MIN_AUTH_PWD_IN : constant := 512; -- AUTHENTICATE_PRINCIPAL/CHANGE_PASSWORD items ACME_AUTH_MECHANISM : constant := 512; -- Authentication mechanism ACME_CHALLENGE_DATA : constant := 513; -- Challenge data ACME_LOGON_TYPE : constant := 514; -- Logon type ACME_NEW_PASSWORD_FLAGS : constant := 515; -- New password request/control flags ACME_REMOTE_HOST_ADDRESS : constant := 516; -- Remote host address ACME_REMOTE_HOST_ADDRESS_TYPE : constant := 517; -- Remote host address type/format ACME_RESPONSE_DATA : constant := 518; -- Response data ACME_MAX_AUTH_PWD_IN : constant := 518; ACME_MIN_REL_CRED_IN : constant := 768; -- RELEASE_CREDENTIALS items ACME_CREDENTIALS_TYPE : constant := 768; -- Index associated with persona extension ACME_MAX_REL_CRED_IN : constant := 768; ACME_MIN_QUERY_IN : constant := 1024; -- QUERY items ACME_QUERY_KEY_TYPE : constant := 1024; -- Key type ACME_QUERY_KEY_VALUE : constant := 1025; -- Key value ACME_QUERY_TYPE : constant := 1026; -- Type of data to be returned via QUERY_DATA ACME_MAX_QUERY_IN : constant := 1026; ACME_MIN_EVENT_IN : constant := 1280; -- EVENT items ACME_EVENT_DATA_IN : constant := 1280; -- Event function input data ACME_EVENT_TYPE : constant := 1281; -- Event type ACME_MAX_EVENT_IN : constant := 1281; -- -- Input item codes subject to VTF-7 <-> UCS conversion -- ACME_MIN_GEN_IN_UCS : constant := 8448; -- Generic items ACME_CONTEXT_ACME_NAME : constant := 8448; -- Name of ACME for specific context ACME_LOCALE : constant := 8449; -- Language specifier (location) ACME_TARGET_DOI_NAME : constant := 8450; -- Name of DOI for a directed call ACME_SERVER_NAME_IN : constant := 8451; -- ACME relative server name ACME_SERVICE_NAME : constant := 8452; -- Caller's service name ACME_MAX_GEN_IN_UCS : constant := 8452; ACME_MIN_AUTH_PWD_IN_UCS : constant := 8704; -- AUTHENTICATE_PRINCIPAL/CHANGE_PASSWORD items ACME_ACCESS_PORT : constant := 8704; -- Access port name ACME_NEW_PASSWORD_1 : constant := 8705; -- New primary password ACME_NEW_PASSWORD_2 : constant := 8706; -- New secondary password ACME_NEW_PASSWORD_SYSTEM : constant := 8707; -- New system password ACME_PASSWORD_1 : constant := 8708; -- Primary password ACME_PASSWORD_2 : constant := 8709; -- Secondary password ACME_PASSWORD_SYSTEM : constant := 8710; -- System password ACME_PRINCIPAL_NAME_IN : constant := 8711; -- Principal name ACME_REMOTE_HOST_FULLNAME : constant := 8712; -- Remote host expanded name ACME_REMOTE_HOST_NAME : constant := 8713; -- Remote host name ACME_REMOTE_USERNAME : constant := 8714; -- Remote username ACME_MAX_AUTH_PWD_IN_UCS : constant := 8714; ACME_MIN_REL_CRED_IN_UCS : constant := 8960; -- RELEASE_CREDENTIALS items ACME_CREDENTIALS_NAME : constant := 8960; -- Name associated with persona extension ACME_MAX_REL_CRED_IN_UCS : constant := 8960; -- -- Output item codes not subject to VTF-7 <-> UCS conversion -- ACME_MIN_SPEC_OUT : constant := 16385; -- Specialty items ACME_PHASE_TRANSITION : constant := 16385; ACME_MAX_SPEC_OUT : constant := 16385; ACME_MIN_GEN_OUT : constant := 16640; -- Generic items ACME_PERSONA_HANDLE_OUT : constant := 16640; -- Persona acted upon ACME_MAX_GEN_OUT : constant := 16640; ACME_MIN_AUTH_PWD_OUT : constant := 16896; -- AUTHENTICATE_PRINCIPAL/CHANGE_PASSWORD items ACME_AUTHENTICATING_DOI_ID : constant := 16896; -- ID of DOI accepting principal ACME_LOGON_INFORMATION : constant := 16897; -- Logon information ACME_MAPPING_ACME_ID : constant := 16898; -- ID of ACME mapping principal ACME_MAX_AUTH_PWD_OUT : constant := 16898; ACME_MIN_QUERY_OUT : constant := 17408; -- QUERY items ACME_QUERY_DATA : constant := 17408; -- Query function output data ACME_MAX_QUERY_OUT : constant := 17408; ACME_MIN_EVENT_OUT : constant := 17664; -- EVENT items ACME_EVENT_DATA_OUT : constant := 17664; -- Event function output data ACME_MAX_EVENT_OUT : constant := 17664; -- -- Output item codes subject to VTF-7 <-> UCS conversion -- ACME_MIN_GEN_OUT_UCS : constant := 24832; -- Generic items ACME_SERVER_NAME_OUT : constant := 24832; -- ACME relative server name ACME_MAX_GEN_OUT_UCS : constant := 24832; ACME_MIN_AUTH_PWD_OUT_UCS : constant := 25088; -- AUTHENTICATE_PRINCIPAL/CHANGE_PASSWORD items ACME_AUTHENTICATING_DOI_NAME : constant := 25088; -- Name of DOI accepting principal ACME_MAPPED_VMS_USERNAME : constant := 25089; -- Resultant VMS Username ACME_MAPPING_ACME_NAME : constant := 25090; -- Name of ACME mapping principal ACME_PRINCIPAL_NAME_OUT : constant := 25091; -- Processed principal name ACME_MAX_AUTH_PWD_OUT_UCS : constant := 25091; -- -- Logon (Job) Type Values -- ACME_K_NETWORK : constant := 1; ACME_K_BATCH : constant := 2; ACME_K_LOCAL : constant := 3; ACME_K_DIALUP : constant := 4; ACME_K_REMOTE : constant := 5; --+ -- -- Revision Level -- -- Revision level is a 16-bit unsigned value, encoded as follows: -- -- 1 -- 5 8 7 0 -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- | | | | | | | | | | | | | | | | | -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- ^.............^ ^.............^ -- | | | | -- | | +-------------+-- Bit [7:0] = revision minor id -- | | -- +-------------+------------------ Bit [15:8] = revision major id -- --- type ACMEREVLVL_TYPE is record MINOR_ID : UNSIGNED_BYTE; -- Revision level minor id MAJOR_ID : UNSIGNED_BYTE; -- Revision level major id end record; for ACMEREVLVL_TYPE use record MINOR_ID at 0 range 0 .. 7; MAJOR_ID at 1 range 0 .. 7; end record; for ACMEREVLVL_TYPE'SIZE use 16; ACMEREVLVL_TYPE_INIT : constant ACMEREVLVL_TYPE := (MINOR_ID => 0, MAJOR_ID => 0); ACMEREVLVL_K_LENGTH : constant := 2; --+ -- -- Authentication Mechanism -- -- Authentication mechanism is a 16-bit unsigned value, encoded as follows: -- -- 3 2 2 1 1 -- 1 4 3 6 5 8 7 0 -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- ^.............................^ ^ ^...........................^ -- | | | | | -- | | | +---------------------------+-- Bit [14:0] = authentication mechanism -- | | | -- | | +-------------------------------- Bit [15] = 0 ==> standard mechanism -- | | 1 ==> vendor specific mechanism -- | | -- +-----------------------------+---------------------------------- Bit [31:16] = vendor's facility code -- --- -- -- Standard mechanism types -- ACMEMECH_K_PASSWORD : constant := 1; -- Username-Password ACMEMECH_K_CHALLENGE_RESPONSE : constant := 2; -- Challenge-Response ACMEMECH_M_MECHANISM_TYPE : constant := 16#00007FFF#; ACMEMECH_M_FACILITY_SPECIFIC : constant := 16#00008000#; type ACMEMECH_TYPE is record MECHANISM_TYPE : UNSIGNED_15; -- Authentication mechanism FACILITY_SPECIFIC : BOOLEAN; -- 0 ==> standard mechanism -- 1 ==> facility specific mechanism FACILITY : UNSIGNED_WORD; -- Vendor's assigned facility code end record; for ACMEMECH_TYPE use record MECHANISM_TYPE at 0 range 0 .. 14; FACILITY_SPECIFIC at 1 range 7 .. 7; FACILITY at 2 range 0 .. 15; end record; for ACMEMECH_TYPE'SIZE use 32; ACMEMECH_TYPE_INIT : constant ACMEMECH_TYPE := (MECHANISM_TYPE => 0, FACILITY_SPECIFIC => FALSE, FACILITY => 0); ACMEMECH_K_LENGTH : constant := 4; --+ -- -- Remote Host Address Type -- -- Remote host address type is a 16-bit unsigned value, encoded as follows: -- -- 3 2 2 1 1 -- 1 4 3 6 5 8 7 0 -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- ^.............................^ ^ ^...........................^ -- | | | | | -- | | | +---------------------------+-- Bit [14:0] = network protocol (address format) -- | | | -- | | +-------------------------------- Bit [15] = 0 ==> standard protocol -- | | 1 ==> vendor specific protocol -- | | -- +-----------------------------+---------------------------------- Bit [31:16] = vendor's facility code -- --- -- -- Standard protocol types -- ACMEHAT_K_DECNET_IV : constant := 1; -- DECnet Phase IV ACMEHAT_K_DECNET_OSI : constant := 2; -- DECnet OSI ACMEHAT_K_IP_V4 : constant := 3; -- Internet Protocol V4 ACMEHAT_K_IP_V6 : constant := 4; -- Internet Protocol V6 ACMEHAT_M_PROTOCOL_TYPE : constant := 16#00007FFF#; ACMEHAT_M_FACILITY_SPECIFIC : constant := 16#00008000#; type ACMEHAT_TYPE is record PROTOCOL_TYPE : UNSIGNED_15; -- Network protocol/address format FACILITY_SPECIFIC : BOOLEAN; -- 0 ==> standard protocol -- 1 ==> facility specific protocol FACILITY : UNSIGNED_WORD; -- Vendor's assigned facility code end record; for ACMEHAT_TYPE use record PROTOCOL_TYPE at 0 range 0 .. 14; FACILITY_SPECIFIC at 1 range 7 .. 7; FACILITY at 2 range 0 .. 15; end record; for ACMEHAT_TYPE'SIZE use 32; ACMEHAT_TYPE_INIT : constant ACMEHAT_TYPE := (PROTOCOL_TYPE => 0, FACILITY_SPECIFIC => FALSE, FACILITY => 0); ACMEHAT_K_LENGTH : constant := 4; --+ -- -- Password change request control flags -- --- ACMEPWDFLG_K_SYSTEM : constant := 0; ACMEPWDFLG_M_SYSTEM : constant := 16#00000001#; ACMEPWDFLG_K_PASSWORD_1 : constant := 1; ACMEPWDFLG_M_PASSWORD_1 : constant := 16#00000002#; ACMEPWDFLG_K_PASSWORD_2 : constant := 2; ACMEPWDFLG_M_PASSWORD_2 : constant := 16#00000004#; ACMEPWDFLG_K_MAX_FLAGS : constant := 3; ACMEPWDFLG_K_SPECIFIED : constant := 31; ACMEPWDFLG_M_SPECIFIED : constant := 16#80000000#; type ACMEPWDFLG_TYPE is record SYSTEM : BOOLEAN; -- Request system password change PASSWORD_1 : BOOLEAN; -- Request password 1 change PASSWORD_2 : BOOLEAN; -- Request password 2 change FILLER_1 : UNSIGNED_28; SPECIFIED : BOOLEAN; -- Used internally by the service -- to indicate flags reflect caller -- specified NEW_PASSWORD_FLAGS item -- Caller's setting is ignored end record; for ACMEPWDFLG_TYPE use record SYSTEM at 0 range 0 .. 0; PASSWORD_1 at 0 range 1 .. 1; PASSWORD_2 at 0 range 2 .. 2; FILLER_1 at 0 range 3 .. 30; SPECIFIED at 3 range 7 .. 7; end record; for ACMEPWDFLG_TYPE'SIZE use 32; ACMEPWDFLG_TYPE_INIT : constant ACMEPWDFLG_TYPE := (SYSTEM => FALSE, PASSWORD_1 => FALSE, PASSWORD_2 => FALSE, FILLER_1 => 0, SPECIFIED => FALSE); ACMEPWDFLG_K_LENGTH : constant := 4; --+ -- -- $ACM Item Set Message Category -- -- Message Categories are 16-bit unsigned values, encoded as follows: -- -- 1 -- 5 8 7 0 -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- | | | | | | | | | | | | | | | | | -- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -- ^ ^ ^ ^ -- | | | | -- | | +-------------------------+-- Bit [13:0] = message type -- | | -- | +------------------------------ Bit [14] = 0 ==> not subject to VTF-7 <-> UCS conversion -- | = 1 ==> subject to VTF-7 <-> UCS conversion -- | -- +-------------------------------- Bit [15] = 0 ==> common item -- 1 ==> ACME specific item -- --- ACMEMC_M_TYPE : constant := 16#00003FFF#; ACMEMC_M_UCS : constant := 16#00004000#; ACMEMC_M_ACME_SPECIFIC : constant := 16#00008000#; type ACMEMC_TYPE is record TYP : UNSIGNED_14; -- Ranged value UCS : BOOLEAN; -- 0 ==> not subject to VTF-7 <-> UCS conversion -- 1 ==> subject to VTF-7 <-> UCS conversion ACME_SPECIFIC : BOOLEAN; -- 0 ==> common category -- 1 ==> ACME specific category end record; for ACMEMC_TYPE use record TYP at 0 range 0 .. 13; UCS at 1 range 6 .. 6; ACME_SPECIFIC at 1 range 7 .. 7; end record; for ACMEMC_TYPE'SIZE use 16; ACMEMC_TYPE_INIT : constant ACMEMC_TYPE := (TYP => 0, UCS => FALSE, ACME_SPECIFIC => FALSE); ACMEMC_K_LENGTH : constant := 2; -- -- Generic output message categories -- -- These are all subject to UCS conversion -- ACMEMC_K_MIN_GEN_MSG : constant := 16384; ACMEMC_K_GENERAL : constant := 16384; -- General text ACMEMC_K_HEADER : constant := 16385; -- Header text ACMEMC_K_TRAILER : constant := 16386; -- Trailer text ACMEMC_K_SELECTION : constant := 16387; -- Acceptable choices ACMEMC_K_DIALOGUE_ALERT : constant := 16388; -- Alert (advisory) ACMEMC_K_MAX_GEN_MSG : constant := 16388; -- -- LOGINOUT related output message categories -- -- These are all subject to UCS conversion -- ACMEMC_K_MIN_LOGON_MSG : constant := 16640; ACMEMC_K_SYSTEM_IDENTIFICATION : constant := 16640; -- System identification text ACMEMC_K_SYSTEM_NOTICES : constant := 16641; -- System notices ACMEMC_K_WELCOME_NOTICES : constant := 16642; -- Welcome notices, ACMEMC_K_LOGON_NOTICES : constant := 16643; -- Logon notices ACMEMC_K_PASSWORD_NOTICES : constant := 16644; -- Password notices ACMEMC_K_MAIL_NOTICES : constant := 16645; -- MAIL notices ACMEMC_K_MAX_LOGON_MSG : constant := 16645; --+ -- -- ACMESB - ACM Status Block -- --- type ACMESB_TYPE is record STATUS : INTEGER_32; -- Primary status SECONDARY_STATUS : INTEGER_32; -- Auxillary (privileged) status ACME_ID : ACMEID_TYPE; -- ID of ACME/DOI reporting specific status ACME_STATUS : INTEGER_32; -- ACME/DOI specific status end record; for ACMESB_TYPE use record STATUS at 0 range 0 .. 31; SECONDARY_STATUS at 4 range 0 .. 31; ACME_ID at 8 range 0 .. 31; ACME_STATUS at 12 range 0 .. 31; end record; for ACMESB_TYPE'SIZE use 128; ACMESB_TYPE_INIT : constant ACMESB_TYPE := (STATUS => 0, SECONDARY_STATUS => 0, ACME_ID => ACMEID_TYPE_INIT, ACME_STATUS => 0); ACMESB_K_LENGTH : constant := 16; SUBTYPE ACM_STATUS_BLOCK_TYPE is ACMESB_TYPE; ACM_STATUS_BLOCK_TYPE_INIT : constant ACM_STATUS_BLOCK_TYPE := ACMESB_TYPE_INIT; --+ -- -- ACMECB - ACM Communications Buffer -- --- ACMEDLOGFLG_M_INPUT : constant := 16#00000001#; ACMEDLOGFLG_M_NOECHO : constant := 16#00000002#; ACMEDLOGFLG_M_SPECIFIED : constant := 16#80000000#; type ACMEDLOGFLG_TYPE is record INPUT : BOOLEAN; -- Response required NOECHO : BOOLEAN; -- When prompting, do not echo response FILLER_1 : UNSIGNED_29; SPECIFIED : BOOLEAN; -- Used internally by the service -- to indicate flags reflect caller -- specified DIALOGUE_SUPPORT item -- Caller's setting is ignored end record; for ACMEDLOGFLG_TYPE use record INPUT at 0 range 0 .. 0; NOECHO at 0 range 1 .. 1; FILLER_1 at 0 range 2 .. 30; SPECIFIED at 3 range 7 .. 7; end record; for ACMEDLOGFLG_TYPE'SIZE use 32; ACMEDLOGFLG_TYPE_INIT : constant ACMEDLOGFLG_TYPE := (INPUT => FALSE, NOECHO => FALSE, FILLER_1 => 0, SPECIFIED => FALSE); ACMEDLOGFLG_K_LENGTH : constant := 4; type ACMEMC_MSG_CODE_TYPE is -- Composite field record TYP : UNSIGNED_14; -- Ranged value UCS : BOOLEAN; -- 0 ==> not subject to VTF-7 <-> UCS conversion -- 1 ==> subject to VTF-7 <-> UCS conversion ACME_SPECIFIC : BOOLEAN; -- 0 ==> common category -- 1 ==> ACME specific category end record; for ACMEMC_MSG_CODE_TYPE use record TYP at 0 range 0 .. 13; UCS at 1 range 6 .. 6; ACME_SPECIFIC at 1 range 7 .. 7; end record; for ACMEMC_MSG_CODE_TYPE'SIZE use 16; ACMEMC_MSG_CODE_TYPE_INIT : constant ACMEMC_MSG_CODE_TYPE := (TYP => 0, UCS => FALSE, ACME_SPECIFIC => FALSE); type ACMEIS_MAX_LENGTH_TYPE is -- Maximum length of an input data record MSG_CODE : ACMEMC_MSG_CODE_TYPE; -- Composite field end record; for ACMEIS_MAX_LENGTH_TYPE use record MSG_CODE at 0 range 0 .. 15; end record; for ACMEIS_MAX_LENGTH_TYPE'SIZE use 16; ACMEIS_MAX_LENGTH_TYPE_INIT : constant ACMEIS_MAX_LENGTH_TYPE := ( MSG_CODE => ACMEMC_MSG_CODE_TYPE_INIT ); type ACMEIS_ACMEITMSET_TYPE is record FLAGS : ACMEDLOGFLG_TYPE; -- Item set processing flags ITEM_CODE : ACMEIC_TYPE; -- Item code reflecting the nature of -- information provided/requested MAX_LENGTH : ACMEIS_MAX_LENGTH_TYPE; -- Maximum length of an input data DATA_1 : UNSIGNED_QUADWORD; -- Data 1 (prompt text) DATA_2 : UNSIGNED_QUADWORD; -- Data 2 (default response) end record; for ACMEIS_ACMEITMSET_TYPE use record FLAGS at 0 range 0 .. 31; ITEM_CODE at 4 range 0 .. 15; MAX_LENGTH at 6 range 0 .. 15; DATA_1 at 8 range 0 .. 63; DATA_2 at 16 range 0 .. 63; end record; for ACMEIS_ACMEITMSET_TYPE'SIZE use 192; ACMEIS_ACMEITMSET_TYPE_INIT : constant ACMEIS_ACMEITMSET_TYPE := (FLAGS => ACMEDLOGFLG_TYPE_INIT, ITEM_CODE => ACMEIC_TYPE_INIT, MAX_LENGTH => ACMEIS_MAX_LENGTH_TYPE_INIT, DATA_1 => (0, 0), DATA_2 => (0, 0)); ACMEIS_K_LENGTH : constant := 24; ACMECB_K_MINOR_ID_000 : constant := 0; ACMECB_K_MINOR_ID : constant := 0; ACMECB_K_MAJOR_ID_001 : constant := 1; ACMECB_K_MAJOR_ID : constant := 1; ACMECB_K_REVISION : constant := 256; type ACMECB_TYPE is record CONTEXT_ID : UNSIGNED_QUADWORD; -- ID of associated ACM Request Block SIZE : UNSIGNED_WORD; -- Structure size, in bytes REVISION_LEVEL : ACMEREVLVL_TYPE; -- Structure revision level ACME_ID : ACMEID_TYPE; -- ID of ACME/DOI requesting dialogue ITEM_SET_COUNT : UNSIGNED_LONGWORD; -- Number of item set entries ITEM_SET : ADDRESS; -- Pointer to item set array end record; for ACMECB_TYPE use record CONTEXT_ID at 0 range 0 .. 63; SIZE at 8 range 0 .. 15; REVISION_LEVEL at 10 range 0 .. 15; ACME_ID at 12 range 0 .. 31; ITEM_SET_COUNT at 16 range 0 .. 31; ITEM_SET at 20 range 0 .. 31; end record; for ACMECB_TYPE'SIZE use 192; ACMECB_TYPE_INIT : constant ACMECB_TYPE := (CONTEXT_ID => (0, 0), SIZE => 0, REVISION_LEVEL => ACMEREVLVL_TYPE_INIT, ACME_ID => ACMEID_TYPE_INIT, ITEM_SET_COUNT => 0, ITEM_SET => ADDRESS_ZERO); ACMECB_K_LENGTH : constant := 24; SUBTYPE ACM_COMMUNICATIONS_BUFFER_TYPE is ACMECB_TYPE; ACM_COMMUNICATIONS_BUFFER_TYPE_INIT : constant ACM_COMMUNICATIONS_BUFFER_TYPE := ACMECB_TYPE_INIT; --+ -- -- ACMELI - ACM Logon Information Block -- --- ACMELGIFLG_K_MIN_LOGON_FLAG : constant := -1; ACMELGIFLG_K_NEW_MAIL_AT_LOGIN : constant := 0; ACMELGIFLG_M_NEW_MAIL_AT_LOGIN : constant := 16#00000001#; ACMELGIFLG_K_PASSWORD_CHANGED : constant := 1; ACMELGIFLG_M_PASSWORD_CHANGED : constant := 16#00000002#; ACMELGIFLG_K_PASSWORD_EXPIRED : constant := 2; ACMELGIFLG_M_PASSWORD_EXPIRED : constant := 16#00000004#; ACMELGIFLG_K_PASSWORD_WARNING : constant := 3; ACMELGIFLG_M_PASSWORD_WARNING : constant := 16#00000008#; ACMELGIFLG_K_PASSWORD2_CHANGED : constant := 4; ACMELGIFLG_M_PASSWORD2_CHANGED : constant := 16#00000010#; ACMELGIFLG_K_PASSWORD2_EXPIRED : constant := 5; ACMELGIFLG_M_PASSWORD2_EXPIRED : constant := 16#00000020#; ACMELGIFLG_K_PASSWORD2_WARNING : constant := 6; ACMELGIFLG_M_PASSWORD2_WARNING : constant := 16#00000040#; ACMELGIFLG_K_MAX_LOGON_FLAG : constant := 6; type ACMELGIFLG_TYPE is record NEW_MAIL_AT_LOGIN : BOOLEAN; -- User had new MAIL message(s) PASSWORD_CHANGED : BOOLEAN; -- Primary password changed PASSWORD_EXPIRED : BOOLEAN; -- Primary password expired on login PASSWORD_WARNING : BOOLEAN; -- Primary password expiration imminent PASSWORD2_CHANGED : BOOLEAN; -- Secondary password changed PASSWORD2_EXPIRED : BOOLEAN; -- Secondary password expired on login PASSWORD2_WARNING : BOOLEAN; -- Secondary password expiration imminent FILLER_1 : UNSIGNED_25; end record; for ACMELGIFLG_TYPE use record NEW_MAIL_AT_LOGIN at 0 range 0 .. 0; PASSWORD_CHANGED at 0 range 1 .. 1; PASSWORD_EXPIRED at 0 range 2 .. 2; PASSWORD_WARNING at 0 range 3 .. 3; PASSWORD2_CHANGED at 0 range 4 .. 4; PASSWORD2_EXPIRED at 0 range 5 .. 5; PASSWORD2_WARNING at 0 range 6 .. 6; FILLER_1 at 0 range 7 .. 31; end record; for ACMELGIFLG_TYPE'SIZE use 32; ACMELGIFLG_TYPE_INIT : constant ACMELGIFLG_TYPE := (NEW_MAIL_AT_LOGIN => FALSE, PASSWORD_CHANGED => FALSE, PASSWORD_EXPIRED => FALSE, PASSWORD_WARNING => FALSE, PASSWORD2_CHANGED => FALSE, PASSWORD2_EXPIRED => FALSE, PASSWORD2_WARNING => FALSE, FILLER_1 => 0); ACMELGIFLG_K_LENGTH : constant := 4; SUBTYPE ACM_LOGON_FLAGS_TYPE is ACMELGIFLG_TYPE; ACM_LOGON_FLAGS_TYPE_INIT : constant ACM_LOGON_FLAGS_TYPE := ACMELGIFLG_TYPE_INIT; ACMELIVMS_K_MINOR_ID_000 : constant := 0; ACMELIVMS_K_MINOR_ID : constant := 0; ACMELIVMS_K_MAJOR_ID_001 : constant := 1; ACMELIVMS_K_MAJOR_ID : constant := 1; ACMELIVMS_K_REVISION : constant := 256; type ACMELIVMS_TYPE is record ACME_ID : ACMEID_TYPE; -- ID of ACME which reported logon information PHASE : UNSIGNED_LONGWORD; -- Phase during which information was reported SIZE : UNSIGNED_WORD; -- Structure size, in bytes REVISION_LEVEL : ACMEREVLVL_TYPE; -- Structure revision level LOGFAIL_COUNT : UNSIGNED_LONGWORD; -- Number of failed logon attempts LOGON_INT : UTCBLK_TYPE; -- Time of last interactive logon LOGON_NONINT : UTCBLK_TYPE; -- Time of last non-interactive logon end record; for ACMELIVMS_TYPE use record ACME_ID at 0 range 0 .. 31; PHASE at 4 range 0 .. 31; SIZE at 8 range 0 .. 15; REVISION_LEVEL at 10 range 0 .. 15; LOGFAIL_COUNT at 12 range 0 .. 31; LOGON_INT at 16 range 0 .. 127; LOGON_NONINT at 32 range 0 .. 127; end record; for ACMELIVMS_TYPE'SIZE use 384; ACMELIVMS_TYPE_INIT : constant ACMELIVMS_TYPE := (ACME_ID => ACMEID_TYPE_INIT, PHASE => 0, SIZE => 0, REVISION_LEVEL => ACMEREVLVL_TYPE_INIT, LOGFAIL_COUNT => 0, LOGON_INT => UTCBLK_TYPE_INIT, LOGON_NONINT => UTCBLK_TYPE_INIT); ACMELIVMS_K_LENGTH : constant := 48; SUBTYPE ACM_LOGON_INFORMATION_VMS_TYPE is ACMELIVMS_TYPE; ACM_LOGON_INFORMATION_VMS_TYPE_INIT : constant ACM_LOGON_INFORMATION_VMS_TYPE := ACMELIVMS_TYPE_INIT; ACMELIDOI_K_MINOR_ID_000 : constant := 0; ACMELIDOI_K_MINOR_ID : constant := 0; ACMELIDOI_K_MAJOR_ID_001 : constant := 1; ACMELIDOI_K_MAJOR_ID : constant := 1; ACMELIDOI_K_REVISION : constant := 256; type ACMELIDOI_TYPE is record ACME_ID : ACMEID_TYPE; -- ID of ACME which reported logon information PHASE : UNSIGNED_LONGWORD; -- Phase during which information was reported SIZE : UNSIGNED_WORD; -- Structure size, in bytes REVISION_LEVEL : ACMEREVLVL_TYPE; -- Structure revision level LOGFAIL_COUNT : UNSIGNED_LONGWORD; -- Number of failed logon attempts LOGON : UTCBLK_TYPE; -- Time of last logon LOGON_INT : UTCBLK_TYPE; -- Time of last interactive logon LOGON_NONINT : UTCBLK_TYPE; -- Time of last non-interactive logon LOGFAIL : UTCBLK_TYPE; -- Time of last logon failure LOGFAIL_INT : UTCBLK_TYPE; -- Time of last interactive logon failure LOGFAIL_NONINT : UTCBLK_TYPE; -- Time of last non-interactive logon failure end record; for ACMELIDOI_TYPE use record ACME_ID at 0 range 0 .. 31; PHASE at 4 range 0 .. 31; SIZE at 8 range 0 .. 15; REVISION_LEVEL at 10 range 0 .. 15; LOGFAIL_COUNT at 12 range 0 .. 31; LOGON at 16 range 0 .. 127; LOGON_INT at 32 range 0 .. 127; LOGON_NONINT at 48 range 0 .. 127; LOGFAIL at 64 range 0 .. 127; LOGFAIL_INT at 80 range 0 .. 127; LOGFAIL_NONINT at 96 range 0 .. 127; end record; for ACMELIDOI_TYPE'SIZE use 896; ACMELIDOI_TYPE_INIT : constant ACMELIDOI_TYPE := (ACME_ID => ACMEID_TYPE_INIT, PHASE => 0, SIZE => 0, REVISION_LEVEL => ACMEREVLVL_TYPE_INIT, LOGFAIL_COUNT => 0, LOGON => UTCBLK_TYPE_INIT, LOGON_INT => UTCBLK_TYPE_INIT, LOGON_NONINT => UTCBLK_TYPE_INIT, LOGFAIL => UTCBLK_TYPE_INIT, LOGFAIL_INT => UTCBLK_TYPE_INIT, LOGFAIL_NONINT => UTCBLK_TYPE_INIT); ACMELIDOI_K_LENGTH : constant := 112; SUBTYPE ACM_LOGON_INFORMATION_DOI_TYPE is ACMELIDOI_TYPE; ACM_LOGON_INFORMATION_DOI_TYPE_INIT : constant ACM_LOGON_INFORMATION_DOI_TYPE := ACMELIDOI_TYPE_INIT; ACMELI_K_MINOR_ID_000 : constant := 0; ACMELI_K_MINOR_ID : constant := 0; ACMELI_K_MAJOR_ID_001 : constant := 1; ACMELI_K_MAJOR_ID : constant := 1; ACMELI_K_REVISION : constant := 256; type ACMELI_LOGON_INFO_DOI64_TYPE is record LOGON_INFO_DOI32 : ADDRESS; -- Non-native (non-OpenVMS) logon information LOGON_INFO_DOI32SE : UNSIGNED_LONGWORD; -- Sign extension field end record; for ACMELI_LOGON_INFO_DOI64_TYPE use record LOGON_INFO_DOI32 at 0 range 0 .. 31; LOGON_INFO_DOI32SE at 4 range 0 .. 31; end record; for ACMELI_LOGON_INFO_DOI64_TYPE'SIZE use 64; ACMELI_LOGON_INFO_DOI64_TYPE_INIT : constant ACMELI_LOGON_INFO_DOI64_TYPE := (LOGON_INFO_DOI32 => ADDRESS_ZERO, LOGON_INFO_DOI32SE => 0); type ACMELI_LOGON_INFO_VMS64_TYPE is record LOGON_INFO_VMS32 : ADDRESS; -- Native (OpenVMS) logon information LOGON_INFO_VMS32SE : UNSIGNED_LONGWORD; -- Sign extension field end record; for ACMELI_LOGON_INFO_VMS64_TYPE use record LOGON_INFO_VMS32 at 0 range 0 .. 31; LOGON_INFO_VMS32SE at 4 range 0 .. 31; end record; for ACMELI_LOGON_INFO_VMS64_TYPE'SIZE use 64; ACMELI_LOGON_INFO_VMS64_TYPE_INIT : constant ACMELI_LOGON_INFO_VMS64_TYPE := (LOGON_INFO_VMS32 => ADDRESS_ZERO, LOGON_INFO_VMS32SE => 0); type ACMELI_TYPE is record LOGON_INFO_DOI64 : ACMELI_LOGON_INFO_DOI64_TYPE; SIZE : UNSIGNED_WORD; -- Structure size, in bytes REVISION_LEVEL : ACMEREVLVL_TYPE; -- Structure revision level LOGON_FLAGS : ACMELGIFLG_TYPE; -- Logon flags LOGON_INFO_VMS64 : ACMELI_LOGON_INFO_VMS64_TYPE; LOGON_INFO_VMS : ACMELIVMS_TYPE; -- Native (OpenVMS) logon information LOGON_INFO_DOI : ACMELIDOI_TYPE; -- Non-native (non-OpenVMS) logon information end record; for ACMELI_TYPE use record LOGON_INFO_DOI64 at 0 range 0 .. 63; SIZE at 8 range 0 .. 15; REVISION_LEVEL at 10 range 0 .. 15; LOGON_FLAGS at 12 range 0 .. 31; LOGON_INFO_VMS64 at 16 range 0 .. 63; LOGON_INFO_VMS at 24 range 0 .. 383; LOGON_INFO_DOI at 72 range 0 .. 895; end record; for ACMELI_TYPE'SIZE use 1472; ACMELI_TYPE_INIT : constant ACMELI_TYPE := ( LOGON_INFO_DOI64 => ACMELI_LOGON_INFO_DOI64_TYPE_INIT, SIZE => 0, REVISION_LEVEL => ACMEREVLVL_TYPE_INIT, LOGON_FLAGS => ACMELGIFLG_TYPE_INIT, LOGON_INFO_VMS64 => ACMELI_LOGON_INFO_VMS64_TYPE_INIT, LOGON_INFO_VMS => ACMELIVMS_TYPE_INIT, LOGON_INFO_DOI => ACMELIDOI_TYPE_INIT); ACMELI_K_LENGTH : constant := 184; SUBTYPE ACM_LOGON_INFORMATION_TYPE is ACMELI_TYPE; ACM_LOGON_INFORMATION_TYPE_INIT : constant ACM_LOGON_INFORMATION_TYPE := ACMELI_TYPE_INIT; ACME_K_QUERY_REVISION_LEVEL : constant := 1; -- Service revision level ACME_K_QUERY_ACME_COUNT : constant := 2; -- Number of registered agents ACME_K_QUERY_ACME_ID : constant := 3; -- Specify/report agent id ACME_K_QUERY_ACME_NAME : constant := 4; -- Specify/reprot agent name ACME_K_SERVICE_REVISION_001_000 : constant := 256; -- -- Pre-$ACM definitions... -- -- Definitions for the $AUTHENTICATE[W], $LOGON[W], and $SET_PASSWORD[W] -- system services. -- -- -- $LOGON[W] function codes. -- ACME_MAP_TO_USERNAME : constant := 1; -- Map userid to username ACME_VERIFY_PASSWORD_ONLY : constant := 2; -- Authenticate password ACME_MAX_FUNCTION_CODE : constant := 3; -- maximum legal function code + 1 -- -- Item codes. Codes specific to a particular service are noted: -- -- $AU = $AUTHENTICATE[W] -- $LO = $LOGON[W] -- $SP = $SET_PASSWORD[W] -- ACME_DOMAIN : constant := 2; -- Authentication domain ACME_USERID : constant := 3; -- User ID ACME_PASSWORD : constant := 4; -- Single password ACME_PASSWORD_LIST : constant := 5; -- Password list ACME_NEW_PASSWORD : constant := 6; -- New password ($SP) ACME_OUTPUT_VMS_USERNAME : constant := 7; -- Mapped OpenVMS username ($LO) ACME_NOAUTHENTICATION : constant := 8; -- No password authentication ($SP) ACME_OVERRIDE_POLICY : constant := 9; -- Override password policy ($SP) ACME_SYNCHRONIZE : constant := 10; -- Set password in all domains ($SP) ACME_REASON_CODE : constant := 11; -- ACME-specific reason code ACME_VALIDATE_ONLY : constant := 12; -- Validate user can login ($LO) ACME_UAF_RECORD_LOCKED : constant := 13; -- Advisory that UAF record is locked ($LO) ACME_RESERVED_ITEM_1 : constant := 14; -- Reserved 1 ACME_RESERVED_ITEM_2 : constant := 15; -- Reserved 2 ACME_MAX_ITEM_CODE : constant := 16; -- maximum legal item code + 1 -- -- Structures and constants. -- ACME_C_MAJOR_VERSION : constant := 1; -- Major ACME version ACME_C_MINOR_VERSION : constant := 0; -- Minor ACME version ACME_S_MAX_DOMAIN : constant := 256; -- Maximum domain length ACME_S_MAX_USERID : constant := 256; -- Maximum userid length ACME_S_MAX_PASSWORD : constant := 256; -- Maximum password length -- -- The PASSWORD_LIST item code requires a list of password items with each -- item specified by a PWDITM structure definition. The list is terminated -- by a longword zero. -- type ACME_TERMINATOR_TYPE is -- Termination longword record PWDNUM : UNSIGNED_WORD; -- Password number (1=primary, etc.) RSRVD1 : UNSIGNED_WORD; -- reserved for future use, MBZ end record; for ACME_TERMINATOR_TYPE use record PWDNUM at 0 range 0 .. 15; RSRVD1 at 2 range 0 .. 15; end record; for ACME_TERMINATOR_TYPE'SIZE use 32; ACME_TERMINATOR_TYPE_INIT : constant ACME_TERMINATOR_TYPE := (PWDNUM => 0, RSRVD1 => 0); type ACME_PWDITM_TYPE is record TERMINATOR : ACME_TERMINATOR_TYPE; -- Termination longword OLDPWD : ADDRESS; -- Descriptor address for old password NEWPWD : ADDRESS; -- Descriptor address for new password end record; for ACME_PWDITM_TYPE use record TERMINATOR at 0 range 0 .. 31; OLDPWD at 4 range 0 .. 31; NEWPWD at 8 range 0 .. 31; end record; for ACME_PWDITM_TYPE'SIZE use 96; ACME_PWDITM_TYPE_INIT : constant ACME_PWDITM_TYPE := ( TERMINATOR => ACME_TERMINATOR_TYPE_INIT, OLDPWD => ADDRESS_ZERO, NEWPWD => ADDRESS_ZERO); -- -- Maximum password number to be used in password list -- ACME_C_MAX_PASSWORD_NUM : constant := 8; end ACMEDEF;