02/27/85 convert_access_class_ The convert_access_class_ subroutine is provided to convert an access attribute in the Multics access isolation mechanism (AIM) back and forth between its binary and character-string representations. Additional entries provide the ability to encode an access attribute as a short character string for use in entrynames. Entry points in convert_access_class_: (List is generated by the help command) :Entry: decode: 02/27/85 convert_access_class_$decode Function: This entry point takes the character string produced by the convert_access_class_$encode entry point and returns the original access attribute. The null string and the string "system_low" are both converted to return the system_low access attribute. Syntax: declare convert_access_class_$decode entry (bit(72) aligned, char(*)); call convert_access_class_$decode (acc_att, decoded_string); Arguments: acc_att is the the decoded authorization. (Output) decoded_string is a short string (maximum of 15 characters) that uniquely represents the input access attribute. (Input) :Entry: encode: 02/27/85 convert_access_class_$encode Function: This entry point encodes an access attribute into a short character string, suitable for inclusion in entrynames. If the input access attribute represents system_low, the returned string is "system_low". Syntax: declare convert_access_class_$encode entry (bit(72) aligned, char(*)); call convert_access_class $encode (acc_att, encoded_string); Arguments: acc_att is the input access attribute (Input) encoded_string is a short string (maximum of 15 characters) that uniquely represents the input access attribute. (Output) :Entry: from_string: 02/27/85 convert_access_class_$from_string Function: This entry point converts the character string representation of an access attribute to an encoded binary form suitable for storage in system tables and as input to the various modules that accept the binary form. Syntax: declare convert_access_class_$from_string entry (bit(72) aligned, char(*), fixed bin(35)); call convert_access_class_$from_string (acc_att, string, code); Arguments: acc_att is the binary representation of string. (Output) string is the character string to be converted (see "Notes" below). (Input) code is a standard status code. (Output) It can be one of the following: error_table_$ai_invalid_string one or more namei is misspelled (see "Notes" below). error_table_$ai_above_allowed_max no error in conversion; but the resulting access attribute is greater than the system_high access attribute. Notes: The string argument must be of the form: name1,name2,...,nameN where namei represents the mnemonic for a sensitivity level or access category. The print_auth_names command can be used to obtain a list of acceptable mnenomics. If the string argument is null or system_low, the resulting authorization is level 0 and no categories. If the string is system_high, the system access_ceiling is returned (the maximum access attribute allowed). :Entry: from_string_range: 02/27/85 convert_access_class_$from_string_range Function: This entry point converts a character string to the form of a binary access attribute range. Syntax: declare convert_access_class_$from_string_range entry (bit(72) aligned dimension(2), char(*), fixed bin(35)); call convert_access_class_$from_string_range (acc_att_range, string, code) Arguments: acc_att_range is the binary representation of string. (Output) string is the character string to be converted (see "Notes" below). (Input) code is a standard status code. (Output) It can be one of the following: error_table_$ai_invalid_string one or more namei are misspelled (see "Notes" below). error_table_$ai_above_allowed_max no error in conversion; but the resulting access attribute is greater than the system_high access attribute. error_table_$ai_invalid_range no error in conversion; but acc_att_range (2) does not represent an access attribute greater than or equal to acc_att_range (1). Notes: The string must be one of the two forms: name1,name2,...,nameN name1a,name2a,...,nameNa:name1b,name2b,...nameNb where namei represents the mnemonic for a sensitivity level or access category. If the string is in the first form, both elements of acc_att_range will be set to equal values (similar to the operation of convert_access_class_$from_string). If string is in the second form, acc_att_range (1) will be returned as the binary representation of the part of string left of the colon, and acc_att_range (2) will be returned as the binary representation of the part of the string right of the colon. :Entry: minimum: 02/27/85 convert_access_class_$minimum Function: This entry point accepts an array of access attributes and a binary number indicating how many elements to process from the array. It returns an access attribute class whose category set is the intersection of all input category sets and whose sensitivity level is the minimum of all input sensitivity levels. The returned value need not equal any of the input values. Syntax: declare convert_access_class_$minimum entry (dim(*) bit(72) aligned, fixed bin, bit(72) aligned); call convert_access_class_$minimum (acc_att_array, n_elements, minimum_acc_att) Arguments: acc_att_array are the input access attributes(Input) n_elements is the number of elements to be processed in the acc_att_array argument. (Input) minimum_acc_att is the result. (Output) :Entry: to_string: 02/27/85 convert_access_class_$to_string Function: This entry point accepts a binary form of an access attribute and returns it as a printable string. This output string is suitable for input to the convert_access_class_$from_string entry point. Each level/category name has a maximum length of 32 characters. Syntax: declare convert_access_class_$to_string entry (bit(72) aligned, char(*), fixed bin(35)); call convert_access_class_$to_string (acc_att, string, code); Arguments: acc_att is the access attribute to be converted. (Input) string is the resultant character string (see "Notes" below). (Output) code is a standard status code. (Output) It can be one of the following: error_table_$smallarg string is too short to hold the converted result (see "Notes" below). error table_$ai_invalid binary either the level number or category set is invalid; the resulting output is also invalid. Notes: When the error_table_$smallarg code is returned, as much of the resulting conversion as fits in the output string is returned. However, since the results are not complete, they should not be used as input to the convert_access_class_$from_string entry point. If the access attribute is equal to the site access ceiling as defined by the installation_parms and returned by system_info_$access_ceiling, then "system_high" is returned in the string. :Entry: to_string_range: 02/27/85 convert_access_class_$to_string_range Function: This entry point accepts a binary access attribute range pair and returns it as a printable string. This output string is suitable for input to the convert_access_class_$from_string_range entry point. Each level/category name has a maximum length of 32 characters. Syntax: declare convert_access_class_$to_string_range entry (bit (72) aligned dimension (2), char (*), fixed bin (35)); call convert_access_class_$to_string_range (acc_att_range, string, code); Arguments: acc_att_range is the binary representation of an access attribute range to be converted. (Input) string is the resultant character string (see "Notes" below). (Output) code is a standard status code. (Output) It can be one of the following: error_table_$smallarg string is too short to hold the converted result (see "Notes" below). error_table_$ai_invalid_binary either the level number or category set is invalid; the resulting output is also invalid. error_table_$ai_invalid_range no error in conversion; but acc_att_range (2) does not represent an access attribute greater than or equal to acc_att_range (1). Notes: When the error_table_$smallarg code is returned, as much of the resulting conversion as fits in the output string is returned. However, since the results are not complete, they should not be used as input to the convert_access_class_$from_string entry point. If either of the access attributes is equal to the site access ceiling as defined by the installation_parms and returned by system_info_$access_ceiling, then "system_high" is returned in the string for that attribute. :Entry: to_string_range_short: 02/27/85 convert_access_class_$to_string_range_short Function: This entry point is identical to the convert_access_class_$to_string_range entry point except that the short level/category names are returned. Each short name has a maximum length of eight characters. This output is also suitable for input to the convert_access_class_$from_string_range entry point. Syntax: declare convert_access_class_$to_string_range_short entry (bit(72) aligned dimension(2),char(*), fixed bin(35); call convert_access_class_$to_string_range_short (acc_att_range, string, code); Arguments: acc_att_range is the binary representation of an access attribute range range to be converted. (Input) string is the resultant character string (see "Notes" below). (Output) code is a standard status code. (Output) It may be one of the following: error_table_$smallarg string is too short to hold the converted result (see "Notes" below). error_table_$ai_invalid_binary either the level number or category set is invalid; the resulting output is also invalid. error_table_$ai_invalid_range no error in conversion; but acc_att_range (2) does not represent an access attribute greater than or equal to acc_att_range (1). Notes: If either of the access attributes is equal to the site access ceiling as defined by the installation_parms and returned by system_info_$access_ceiling, then "system_high" is returned in the string for that attribute. :Entry: to_string_short: 02/27/85 convert_access_class_$to_string_short Function: This entry point is identical to the convert_access_class_$to_string entry point, except that the short level/category names are returned. Each short name has a maximum length of eight characters. This output is also suitable for input to the convert_access_class_$from_string entry point. Syntax: declare convert_access_class_$to_string_short entry (bit(72) aligned, char(*), fixed bin(35)); call convert_access_class_$to_string_short (acc_att, string, code); Arguments: acc_att is the binary representation of an access attribute to be converted. (Input) string is the resultant character string. (Output) code is a standard status code. (Output) It can be one of the following: error_table_$smallarg string is too short to hold the converted result (see "Notes" below). error_table_$ai_invalid_binary either the level number or category set is invalid; the resulting output is also invalid. ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved