02/05/82 convert_authorization_ The convert_authorization_ subroutine is provided to convert an authorization 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 authorization as a short character string for use in entrynames. Entry points in convert_authorization_: (List is generated by the help command) :Entry: decode: 01/27/82 convert_authorization_$decode Function: This entry point takes the character string produced by the convert_authorization_$encode entry point and returns the original authorization or access class. The null string is converted to the system_low authorization. Syntax: declare convert_authorization_$decode entry (bit(72) aligned, char(*)); call convert_authorization_$decode (authorization, decoded_string); Arguments: authorization is the the decoded authorization. (Output) decoded_string is a short string (maximum of 15 characters) that uniquely represents the input authorization/access class. (Input) :Entry: encode: 01/27/82 convert_authorization_$encode Function: This entry point encodes an authorization or access class into a short character string, suitable for inclusion in entrynames. If the input authorization represents system_low, the returned string is blank. Syntax: declare convert_authorization_$encode entry (bit(72) aligned, char(*)); call convert_authorization_$encode (authorization, encoded_string); Arguments: authorization is the input authorization. (Input) encoded_string is a short string (maximum of 15 characters) that uniquely represents the input authorization/access class. (Output) :Entry: from_string: 01/27/82 convert_authorization_$from_string Function: This entry point converts a character string 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_authorization_$from_string entry (bit(72) aligned, char(*), fixed bin(35)); call convert_authorization_$from_string (authorization, string, code); Arguments: authorization 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 may 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 authorization class is greater than the system_high authorization. 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 (described in the MPM Commands) may 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 authorization or access class allowed). :Entry: from_string_range: 01/27/82 convert_authorization_$from_string_range Function: This entry point converts a character string to the form of a binary authorization range. Syntax: declare convert_authorization_$from_string_range entry (bit (72) aligned dimension (2), char (*), fixed bin (35)); call convert_authorization_$from_string (authorization_range, string, code); Arguments: authorization_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 may 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 authorization is greater than the system_high authorization. error_table_$ai_invalid_range no error in conversion; but authorization_range (2) does not represent an authorization greater than or equal to authorization_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 authorization_range will be set to equal values (similar to the operation of convert_authorization_$from_string). If string is in the second form, authorization_range (1) will be returned as the binary representation of the part of string left of the colon, and authorization_range (2) will be returned as the binary representation of the part of the string right of the colon. :Entry: minimum: 01/27/82 convert_authorization_$minimum Function: This entry point accepts an array of authorizations or access classes and a binary number indicating how many elements to process from the array. It returns an authorization/access 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_authorization_$minimum entry (dim(*) bit(72) aligned, fixed bin, bit(72) aligned); call convert_authorization_$minimum (auth_array, n_elements, minimum_auth); Arguments: auth_array are the input authorizations. (Input) n_elements is the number of elements to be processed in the auth_array argument. (Input) minimum_auth is the result. (Output) :Entry: to_string: 01/27/82 convert_authorization_$to_string Function: This entry point accepts a binary form of an authorization and returns it as a printable string. This output string is suitable for input to the convert_authorization_$from_string entry point. Each level/category name has a maximum length of 32 characters. Syntax: declare convert_authorization_$to_string entry (bit(72) aligned, char(*), fixed bin(35)); call convert_authorization_$to_string (authorization, string, code); Arguments: authorization is the binary representation of string. (Input) string is the character string to be converted. (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. 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_authorization_$from_string entry point. :Entry: to_string_range: 01/27/82 convert_authorization_$to_string_range Function: This entry point accepts a binary authorization range pair and returns it as a printable string. This output string is suitable for input to the convert_authorization_$from_string_range entry point. Each level/category name has a maximum length of 32 characters. Syntax: declare convert_authorization_$to_string_range entry (bit (72) aligned dimension (2), char (*), fixed bin (35)); call convert_authorization_$to_string_range (authorization_range, string, code); Arguments: authorization_range is the binary representation of an authorization range to be converted. (Input) string is the resultant character string. (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. 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 authorization_range (2) does not represent an authorization greater than or equal to authorization_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_authorization_$from_string entry point. :Entry: to_string_range_short: 01/27/82 convert_authorization_$to_string_range_short Function: This entry point is identical to the convert_authorization_$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_authorization_$from_string_range entry point. Syntax: declare convert_authorization_$to_string_range_short entry bit (72) aligned dimension (2), char(*), fixed bin(35); call convert_authorization_$to_string_range_short (authorization_range, string, code) Arguments: authorization_range is the binary representation of an authorization range to be converted. (Input) string is the resultant character string. (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. 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 authorization_range (2) does not represent an authorization greater than or equal to authorization_range (1). :Entry: to_string_short: 01/27/82 convert_authorization_$to_string_short Function: This entry point is identical to the convert_authorization_$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_authorization_$from_string entry point. Syntax: declare convert_authorization_$to_string_short entry (bit(72) aligned, char(*), fixed bin(35)); call convert_authorization_$to_string_short (authorization, string, code); Arguments: authorization is the binary representation of string. (Input) string is the character string to be converted. (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. 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 authorization_range (2) does not represent an authorization greater than or equal to authorization_range (1). ----------------------------------------------------------- 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